当前位置:  技术问答>linux和unix

~如何GDB调试因pthread_cond_wait()阻塞的线程??~

    来源: 互联网  发布时间:2016-01-26

    本文导语:  如题,比如有两个线程1,2,主线程1执行到某处会pthread_cond_wait(),然后由线程2唤醒,继续执行.     我用gdb调试时却出了问题,调试时主线程执行到pthread_cond_wait()函数处,进入等待状态,ctrl+c后看到的线程信息如...

如题,比如有两个线程1,2,主线程1执行到某处会pthread_cond_wait(),然后由线程2唤醒,继续执行.
    我用gdb调试时却出了问题,调试时主线程执行到pthread_cond_wait()函数处,进入等待状态,ctrl+c后看到的线程信息如下:
(gdb) info thread
* 3 Thread 1026 (LWP 19165)  0x420292e5 in sigsuspend () from /lib/i686/libc.so.6
  2 Thread 2049 (LWP 19164)  0x420e0037 in poll () from /lib/i686/libc.so.6
  1 Thread 1024 (LWP 19143)  0x420292e5 in sigsuspend () from /lib/i686/libc.so.6
想要继续单步执行,反应如下:
(gdb) n
Single stepping until exit from function sigsuspend, 
which has no line number information.

请问怎么回事呢??按理说此时我的线程2的pthread_cond_signal()函数早调用了啊,信号应该是发出来了。
我如何能继续调试下去??

|
用gdb调试多线程非常不好用,因为很多线程没有处理SIGTRAP信号,会被中断,因此当你重新continue的时候这些线程就没了。你可以取GNU的网站找一个叫NPTL Tracer(名字不一定确切,只用过一次)是专门用来调试多线程同步的,不过也不太好用。其实有时候加日志的方法是一种非常有效的方法。

|
这个问题我也遇到过,是因为pthread_cond_wait把pthread_cond_signal的信号错过了,自已调吧。我最近也在被libevent的同步问题苦恼。

|
还是用记日志的方式调试吧

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • GDB下怎样调试多线程程序?
  • gdb也能调多线程程序吗?
  • 多线程编程下关于gdb程序调试的一个疑问。
  • GDB如何调试子线程,急,在线等!
  • gdb多线程调试问题
  • 如何在gdb调试多线程?
  • GDB调试线程,退出时老是出现异常
  • linux下 多线程打印输出看不到,但gdb下就能看到输出,是什么原因呢?
  • gdb调试多线程程序时的问题, 为何不在断点处停下来?
  • 有谁熟悉gdb多线程调试?有个问题想请教
  • 如何用GDB调试某一线程死循环
  • 如何使用linux下gdb来调试python程序
  • 使用gcc gdb的大牛进来说说gdb的强大之处在哪。我刚学linux了,vim我确实体会到了其强大之处。而对gcc gdb,体会不到gdb这工具的强大之处。
  • 请教 make gdb-6.4 出现 make[4]: Entering directory `/tmp/gdb-6.4/gdb/doc'
  • GDB调试 GDB挂了。。。
  • gdb 如何调试带命令行参数的程序 如 gdb a.out arg1,arg2
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • gdb调试时命令行参数如何输入?比如main(int argc,char **argv)中,我要把一个filename作为argv[1]传入给gdb调试
  • linux gdb: 我在一台机器上编译的程序用GDB可以调试,把程序放到另外一台机器上调试,调试信息就没有了 这是什么原因呢?
  • 写调试器(像gdb)的一般思路是什么
  • gdb 使用问题请教
  • gdb的问题,请教,会者不难,快来拿分
  • gdb调试动态链接库
  • 在rh9上无法使用gdb是怎么回事呢
  • gdb高手请指教
  • gdb如何进行调试?
  • 请问,有人研究过gdb-insight源码吗?
  • 在linux下除了gdb外还有没其他好用的调试器?
  • gdb调试
  • Linux下gdb如何追踪进入子进程??急急7777777777777
  • 如何编译gdb


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3