无法使用gdb调试多线程应用程序(Unable to Debug Multi-Threaded Ap

2019-07-30 13:02发布

我用GDB进行调试多线程应用程序,但是当我在gdb启动程序我得到的警告:

警告:无法找到匹配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

有什么建议? 我使用Linux的埃为v2.6.39的的BeagleBoard-XM。

Answer 1:

警告:无法找到匹配libthread_db所劣质的线程库

这意味着您的/lib/libthread_db.so.1不符合您的/lib/libpthread.so.0 。 这种不匹配可能是你安装不同版本的结果libclibthread_db包,或更新一个或包管理系统的其他外部。 这也可能是你的包错误(即它们可能无法正确建)。

你应该忽略 /lib/.debug/* -这是不是你正在寻找的图书馆。



Answer 2:

你在试图使用是正确的

set libthread-db-search-path [path]

然而,似乎你还没有在版本libthread_db所的是与你使用的并行线程库兼容指出它。

首先,检查其并行线程库您连接到使用LDD:

ldd your_executable

然后确保的libthread-DB-搜索路径指向有任何的libpthread你得到libthread_db所的兼容版本的位置。 这可能是因为你比你预期的动态连接器路径是得到一个不同的并行线程库。



文章来源: Unable to Debug Multi-Threaded Application with gdb