GDB除此之外没有看到任何线程

时间:2010-07-30 23:28:45

标签: multithreading gdb

除了发生崩溃的线程之外,GDB没有看到任何线程;或者当我设置断点时,SIGTRAP会终止我的程序。

1 个答案:

答案 0 :(得分:6)

这经常发生在Linux上,特别是在嵌入式目标上。有两个常见原因:

  • 你正在使用glibc,而你已经剥离了libpthread.so.0
  • libpthread.so.0libthread_db.so.1
  • 之间不匹配

GDB本身不知道如何解码由glibc维护的“线程控制块”,并认为是glibc私有实现细节。它使用libthread_db.so.1(glibc的一部分)来帮助它这样做。因此,libthread_db.so.1libpthread.so.0必须在版本和编译标志中匹配。此外,libthread_db.so.1要求libpthread.so.0中存在某些非全局符号。

解决方案:使用strip --strip-debug libpthread.so.0代替strip libpthread.so.0

如果您正在进行远程调试,请确保目标上的libpthread.so.0和主机上的libthread_db.so.1匹配。