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(GNU Debugger)是一种源代码级别的调试器,用于调试 C、C++ 等语言编写的程序。 2. 如何使用 GDB 调试 STM32?使用 GDB 调试 STM32 需要首先启动 GDB,然后设置断点、查看变量值、单步执行代码等。 3. GDB 的...
GDB调试手册是一份非常适合初学者的中文资源,它详尽地介绍了如何使用GDB这一强大的开源调试工具。GDB,全称GNU调试器,是Linux和其他类Unix系统下用于调试C、C++、Objective-C、Fortran等语言编写的程序的工具。...
《GDB调试程序[陈皓]》与《GDB调试工具指南》这两份PDF文档,是深入了解和精通GDB(GNU Debugger)这一强大调试工具的重要参考资料。GDB是开源世界中广泛使用的C、C++以及其他多种语言的调试器,它允许开发者在运行...
8. **动态加载和卸载库**:在调试动态链接的程序时,`sharedlibrary`命令可以加载或卸载共享库。 9. **条件断点**:GDB允许设定条件断点,只有当特定条件满足时才会暂停程序。 10. **监控点**:`watch`命令可以在...
GDB(GNU Debugger)是一款强大的源代码级调试器,广泛应用于Linux和其他Unix-like操作系统中,用于调试C、C++以及其他支持的编程语言编译出的程序。在这个场景中,我们将聚焦于如何使用GDB来调试基于ARM AArch64...
GDB 是一个强大的命令行调试工具,主要帮忙用户完成四个方面的功能:启动程序、设置断点、检查程序状态和动态改变程序执行环境。GDB 的强大之处在于其可以形成执行序列,形成脚本,非常容易集成在一起,使用几个简单...
GDB调试程序资料主要介绍的是GDB这个强大的程序调试工具,它是由GNU开源组织发布的UNIX下的程序调试工具。GDB的主要功能可以分为四个方面:启动和运行程序、设置断点、检查程序状态和改变程序执行环境。在UNIX平台下...
GDB(GNU Debugger)是 Linux 系统中的一款强大调试工具,用于调试 C 和 C++ 程序。它使用户可以在程序运行时观察程序的内部结构和内存的使用情况。GDB 提供了多种功能,如监视程序中的变量值、设置断点、逐行执行...
GDB(GNU Debugger)作为一款强大的开源源码级调试器,在Linux和Unix系统中占据着举足轻重的地位。本文将基于给定的"GDB--gdb调试.pdf"文件内容,深入解析GDB的基本概念、使用方法及高级功能,帮助读者快速掌握GDB...
在Linux系统编程中,理解和掌握静态库和动态库的制作以及GDB调试是至关重要的技能。本资料包包含了关于这些主题的详细教程,通过C语言实现来帮助学习者深入理解。 首先,我们来讨论静态库。静态库是将多个目标文件...
GDB(GNU Debugger)是一款功能强大的调试工具,广泛应用于Linux平台。通过GDB,可以轻松地调试程序,检查程序崩溃后的核心转储文件(Core Dump),从而帮助开发者快速定位和解决问题。 GDB基础命令 在使用GDB之前...
GDB(GNU Debugger)是一个广泛使用的命令行调试工具,尤其在Unix-like系统中,它为开发者提供了深入程序内部运行情况的能力。这篇教程是学习GDB调试的重要资源,适合嵌入式开发人员使用,因为它能够帮助理解并解决...
### Linux下gdb调试工具指南:深入解析与实践 #### 引言 在软件开发领域,尤其是对于系统级编程和复杂应用的维护,一个高效、功能全面的调试工具是不可或缺的。GNU调试器(GDB)正是这样一款强大的调试工具,它...
GDB能够直接与源代码交互,当加载有源代码的调试目标时,可以用`list`或`l`命令查看源代码,`up`和`down`命令在堆栈帧间切换,以便查看不同层级的代码。 五、远程调试 GDB还支持远程调试,通过`target remote`命令...
根据gdb报错定位到代码行 如何根据gdb报错定位到源代码中的对应的行
GDB(GNU Debugger)是一款功能强大且广泛使用的 UNIX 下的程序调试工具。它提供了多种功能,包括启动程序、设置断点、观察点和捕捉点、维护停止点、停止条件维护、为停止点设定运行命令、恢复程序运行和单步调试、...
GDB,全称GNU Debugger,是一个强大的源代码级调试工具,用于检查和调试C、C++等编程语言编写的程序。它的主要功能在于帮助开发者找到并修复程序中的错误(bug),以及深入理解程序的执行流程和内部状态。GDB官方...