除了发生崩溃的线程之外,GDB 看不到任何线程;或者当我设置断点时 SIGTRAP 会杀死我的程序。
最佳答案
这在 Linux 上经常发生,尤其是在嵌入式目标上。有两个常见的原因:
libpthread.so.0
libpthread.so.0
之间的不匹配和 libthread_db.so.1
GDB 本身不知道如何解码由 glibc 维护的“线程控制 block ”,并被认为是 glibc 私有(private)实现细节。它使用
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
在主机匹配。
关于multithreading - GDB 看不到任何线程除了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376069/