使用GDB调试程序时出现“Temporarily disabling breakpoints for unloaded shared library”错误的原因分析和解决方法

  • 0

使用GDB调试程序时出现“Temporarily disabling breakpoints for unloaded shared library”错误的原因分析和解决方法

使用GDB调试程序时出现“Temporarily disabling breakpoints for unloaded shared library”错误的原因分析和解决方法
这并不是一个很常见的问题,笔者是第一次碰到。从字面意思来看意思是断点打在没有加载的动态库上,所以出现这个提示后第一个想到的是不是动态库有问题。
仔细检查动态库,重新编译,但是结果仍然一样。
到网上去搜,基本上没什么有价值的信息,没办法只能一步步的先缩小定位的范围。通过对makefile的修改,发现只要包含了动态库A,就一定会出现这个问题,但是另外写个main使用这个动态库又正常。动态库没有问题,但是加载不上,经过很多次尝试又发现一个现象,主程序C调用了动态库A,动态库A调用了动态库B,由于没有主程序C的代码,A和B都是以插件的形式加入主程序,主程序C不能重新编译,所以怀疑是不是动态库B把整个程序的地址打乱了。虽然C不能重新编译,但是有B的代码,将其编成静态库,再编入主程序C。运行,一切正常!!
总结,出现“Temporarily disabling breakpoints for unloaded shared library”错误是由于新增动态库引起的,应该有两个办法。
一是重新编译所有相关的库和程序,
二是将新增的动态库编译成静态库。


About Author

深圳市闻道软件有限公司

闻道软件工作室

Leave a Reply