【问题标题】:GDB debugging warningsGDB 调试警告
【发布时间】:2013-01-16 18:01:53
【问题描述】:

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

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

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

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

这是因为我的可执行文件没有调试符号,还是 glibc 的问题?你有解决这个问题的办法吗?

【问题讨论】:

  • gdb 似乎找不到提到的库。如果它们是共享库,您可能会检查是否在环境中设置了搜索路径,以便它可以找到它们。创建终端会话时,它可能不会继承与运行时相同的环境。

标签: qt gdb libc


【解决方案1】:

这是因为我的可执行文件没有调试符号,还是 glibc 的问题?

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

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

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

  • 您已经剥离了 libpthread.so.0(不要这样做)。
  • 你已经升级了你的glibc,但是升级不完整,没有更新libthead_db.so.1
  • 您正在使用某种交叉编译环境,确实确实需要set solib-search-pathset libthread-db-search-path 以便GDB 可以找到匹配的libthread_db.so.1

您可以查看libthread_db GDB 的哪些版本正在尝试使用set debug libthread-db 1

【讨论】:

  • 关于不剥离 libthread 的信息帮助我们解决了从 gdb 生成转储文件的问题,导致转储只有一个线程
猜你喜欢
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 2016-02-17
  • 2012-06-09
  • 1970-01-01
相关资源
最近更新 更多