GDB除

2010-07-30 35 views
3

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

回答

5

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

  • 您使用的glibc,并且您已经剥离libpthread.so.0
  • 不匹配libthread_db.so.1

之间libpthread.so.0和 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匹配。