关于gdb “Unable to find libthread_db matching inferior's thread library”的解决办法

wyllan 2015-09-21 05:27:42
在移植gdb的过程中常会出现
warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.
的提示信息,

libthread_db是用来支持“调试多线程程序”的函数库

因为现在的程序绝大多数都是多线程的,所以这个问题还是必须要解决的。

解决办法:
1.首先要确保目标板的系统中有libthread_db.so.1文件,如果没有可以在相应交叉编译工具的相关lib目录下找到,
例如我的就放在“4.7.3/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf”下,需要把libthread_db-1.0.so拷贝到
目标系统的/lib或/usr/lib等函数库可以访问到的目录中,并创建一个相应的软连接libthread_db.so.1
2.确保auto-load libthread-db已经启用,可以在gdb用“show auto-load libthread-db”命令查看,设置命令为
set auto-load libthread-db [on|off]
3.需要设置auto-load safe-path, 这个路径实际上是被libthread_db信任的可执行程序(包括脚本)的路径,默认为空,
所以gdb本 身也不被信任,所以需要配置其路径 如"set auto-load safe-path /bin:/usr/bin:....."
4.设置libthread-db-search-path,即设置libthread_db的所在路径,可以用show libthread-db-search-path命令查看其设置,
设置命令为set libthread-db-search-path /lib

到此为止问题应该就能解决了,有关 libthread-db的更多内容请访问:
http://www.sourceware.org/gdb/current/onlinedocs/gdb/libthread_005fdb_002eso_002e1-file.html
https://www.sourceware.org/gdb/current/onlinedocs/gdb/Auto_002dloading-safe-path.html#Auto_002dloading-safe-path
https://www.sourceware.org/gdb/current/onlinedocs/gdb/Threads.html#set%20libthread%2ddb%2dsearch%2dpath



...全文
12262 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LubinLew 2018-06-29
  • 打赏
  • 举报
回复
Remak
云飞墨舞 2018-06-26
  • 打赏
  • 举报
回复
楼上正解:
1、是否少了库libthread_db.so.1 (1楼)
2、libpthread.so是否strip过。
daainini 2016-10-28
  • 打赏
  • 举报
回复
libpthread.so还要保留调试信息,没strip过
  • 打赏
  • 举报
回复
所以,只要接分就OK了?

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧