15

我正在使用 gdb 调试多线程应用程序,但是当我在 gdb 中启动程序时,我收到警告:

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

我仍然可以调试,但除了主线程之外我不能调试任何东西。我已经阅读了建议安装软件包 libthread-db1 和 glibc-dbg 的论坛,但这并不能解决我的问题。

在我的机器上,我有 3 个文件/lib/libthread_db.so.1/lib/.debug/libthread_db-1.0.so/lib/libthread_db-1.0.so. 我尝试/lib使用名称创建符号链接libthread_db.so,一次指向/lib/libthread_db.so.1文件,另一次指向/lib/libthread_db-1.0.so文件,并且我创建了/lib/.debug/libthread_db.so指向的符号链接/lib/.debug/libthread_db-1.0.so,但都没有运气。

在 gdb 中,我尝试设置libthread-db-search-path/lib(符号链接一次设置为libthread_db.so.1,一次设置为 ,libthread_db-1.0.so也设置为/lib/.debug.

有什么建议么?我正在为 BeagleBoard-xm 使用 Angstrom Linux v2.6.39。

4

2 回答 2

8

警告:找不到与下级线程库匹配的 libthread_db

这意味着您的/lib/libthread_db.so.1不匹配您的/lib/libpthread.so.0. 这种不匹配可能是由于您安装了不同版本的libclibthread_db软件包,或者在软件包管理系统之外更新了一个或另一个。这也可能是您的包中的错误(即它们可能没有正确构建)。

你应该忽略 /lib/.debug/*——那不是你要找的图书馆。

于 2012-07-21T03:16:56.607 回答
6

您尝试使用是正确的

set libthread-db-search-path [path]

但是,您似乎仍未将其指向与您正在使用的 pthreads 库兼容的 libthread_db 版本。

首先,使用 ldd 检查您链接到的 pthread 库:

ldd your_executable

然后确保 libthread-db-search-path 指向一个位置,该位置具有与您获得的任何 libpthread 兼容的 libthread_db 版本。可能是您的动态链接器路径获得的 pthread 库与您预期的不同。

于 2012-08-02T21:48:54.833 回答