3
之外沒有看到任何線程GDB除了發生崩潰的線程外沒有看到任何線程;或者當我設置斷點時SIGTRAP會殺死我的程序。GDB除
之外沒有看到任何線程GDB除了發生崩潰的線程外沒有看到任何線程;或者當我設置斷點時SIGTRAP會殺死我的程序。GDB除
這經常發生在Linux上,特別是在嵌入式目標上。有兩種常見的原因:
libpthread.so.0
libthread_db.so.1
之間libpthread.so.0
和 GDB本身不知道如何解碼維持「線程控制塊」通過glibc並被認爲是glibc私有實現細節。它使用libthread_db.so.1
(glibc的一部分)來幫助它這樣做。因此,libthread_db.so.1
和libpthread.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
匹配。