linux项目调试中如果涉及很多动态链接库,动态库代码变更调整后,有时候会发现程序在执行过程中某些接口函数并没有进入变更后的接口实现中,此时就会怀疑应该是有某些旧的动态库中包含了接口函数变更前的实现,那如何定位包含旧接口实现所属的动态库就成为了解决这个问题的关键:
这个时候linux下调试利器gdb就可以出场了。
方案一:
1)gdb 挂起程序,对问题的接口函数设置断点,此时bt发现虽然可以看到代码所属文件及函数却没显示所属的库(个人不理解为啥GDB不显示代码所属的动态库呢,其他调试工具如pstack程序的时候是显示的)。
2)bt, 然后 f *** 进入问题接口函数所属的栈
3)info registers 可以看到该函数对应的rip地址
4)info sharedlibrary 查看加载的所有动态库的内存地址的起止地址
5)比较看问题函数rip落在哪个动态的地址区域里,那个库就是问题库了
方案二:
1)gdb 挂起程序,对问题的接口函数设置断点
2)info registers 可以看到该函数对应的rip地址
3)info symbol 0x7f7c081e1130(rip地址)就可以看到该函数符号的完整信息,包括所属的库信息
相关推荐
GDB调试GDB调试GDB调试GDB调试GDB调试 GDB调试GDB调试GDB调试GDB调试GDB调试
用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序
GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹...
gdb调试器的使用gdb调试器的使用gdb调试器的使用gdb调试器的使用gdb调试器的使用
根据gdb报错定位到代码行 如何根据gdb报错定位到源代码中的对应的行
GDB调试命令手册.pdf
GDB调试程序[陈皓] GDB调试工具指南 两个pdf文件
陈浩-用GDB调试程序(整理有书签).pdf+守望的个人博客-GDB调试指南(整理有书签).pdf
是学习嵌入式的很好的资料哦!里面详细介绍了怎样用gdb调试程序,是嵌入式程序调试入门必备的资料!
用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序
讲述常用gdb命令,以及讲述如何使用gdb调试程序崩溃后产生的core dump文件,让您在linux下开发更轻松
GDB调试中文手册。GDB调试命令详述,完整的中文手册。
linux环境下,代码调试,多线程调试,常用调试方式快速定位问题
使用GDB调试,英文版。对于从事 Linux C/C++ 后台开发的读者来说,GDB 调试是需要熟练掌握的一项技能
C++的GDB调试命令大全,方便GDB调试使用
是关于利用GDB调试程序的资料。 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具
GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大...
非常详细的介绍 Linux下gdb调试工具指南
gdb调试命令大全