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匹配。