3

当我尝试在 Qt 中或直接从终端通过 gdb 调试我的核心转储时,它给了我一堆如下所示的警告。因此我的回溯无法正常工作。

警告:无法找到与inferior线程库匹配的libthread_db,将无法进行线程调试。

警告:无法找到与inferior线程库匹配的libthread_db,将无法进行线程调试。

警告:无法为 ) 加载共享库符号。你需要“set solib-search-path”还是“set sysroot”?

这是因为我的可执行文件是在没有调试符号的情况下构建的,还是 glibc 的问题?你有什么解决方案来解决这个问题吗?

4

1 回答 1

9

这是因为我的可执行文件是在没有调试符号的情况下构建的,还是 glibc 的问题?

这与您的可执行文件无关。

GDB 需要一个libthread_db.so.1与您的 匹配的版本,但libpthread.so.0没有找到这样的版本。

可能的原因(从最可能到最不可能):

  • 你已经剥离了 libpthread.so.0 (不要那样做)。
  • 您已升级 glibc,但升级不完整且未更新libthead_db.so.1
  • 您正在使用某种交叉编译环境,并且确实需要set solib-search-path这样set libthread-db-search-pathGDB 才能找到匹配的libthread_db.so.1

你可以看到libthread_dbGDB 的哪个版本正在尝试使用set debug libthread-db 1.

于 2013-01-16T21:52:28.937 回答