`

GDB调试实践一(定位代码所属的动态库)

阅读更多

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地址)就可以看到该函数符号的完整信息,包括所属的库信息

分享到:
评论

相关推荐

    STM32 GDB调试手册

    GDB(GNU Debugger)是一种源代码级别的调试器,用于调试 C、C++ 等语言编写的程序。 2. 如何使用 GDB 调试 STM32?使用 GDB 调试 STM32 需要首先启动 GDB,然后设置断点、查看变量值、单步执行代码等。 3. GDB 的...

    GDB调试手册(中文版)

    GDB调试手册是一份非常适合初学者的中文资源,它详尽地介绍了如何使用GDB这一强大的开源调试工具。GDB,全称GNU调试器,是Linux和其他类Unix系统下用于调试C、C++、Objective-C、Fortran等语言编写的程序的工具。...

    GDB调试程序[陈皓]&GDB调试工具指南

    《GDB调试程序[陈皓]》与《GDB调试工具指南》这两份PDF文档,是深入了解和精通GDB(GNU Debugger)这一强大调试工具的重要参考资料。GDB是开源世界中广泛使用的C、C++以及其他多种语言的调试器,它允许开发者在运行...

    用GDB调试程序(整理有书签).pdf

    8. **动态加载和卸载库**:在调试动态链接的程序时,`sharedlibrary`命令可以加载或卸载共享库。 9. **条件断点**:GDB允许设定条件断点,只有当特定条件满足时才会暂停程序。 10. **监控点**:`watch`命令可以在...

    gdb调试 rk可运行程序

    GDB(GNU Debugger)是一款强大的源代码级调试器,广泛应用于Linux和其他Unix-like操作系统中,用于调试C、C++以及其他支持的编程语言编译出的程序。在这个场景中,我们将聚焦于如何使用GDB来调试基于ARM AArch64...

    用GDB调试程序 用GDB调试程序

    GDB 是一个强大的命令行调试工具,主要帮忙用户完成四个方面的功能:启动程序、设置断点、检查程序状态和动态改变程序执行环境。GDB 的强大之处在于其可以形成执行序列,形成脚本,非常容易集成在一起,使用几个简单...

    GDB调试程序资料

    GDB调试程序资料主要介绍的是GDB这个强大的程序调试工具,它是由GNU开源组织发布的UNIX下的程序调试工具。GDB的主要功能可以分为四个方面:启动和运行程序、设置断点、检查程序状态和改变程序执行环境。在UNIX平台下...

    Linux课件:GDB调试简明指南.pdf

    `kill`命令用于终止当前调试的程序,`list`命令用于显示源代码,`next`命令用于执行下一行代码但不进入函数内部,`step`命令则是逐条执行代码并进入函数内部,`run`命令用于启动程序,`quit`命令用于退出GDB,`watch...

    GDB--gdb调试.pdf

    GDB(GNU Debugger)作为一款强大的开源源码级调试器,在Linux和Unix系统中占据着举足轻重的地位。本文将基于给定的"GDB--gdb调试.pdf"文件内容,深入解析GDB的基本概念、使用方法及高级功能,帮助读者快速掌握GDB...

    linux系统编程-静态库-动态库-gdb调试.zip

    在Linux系统编程中,理解和掌握静态库和动态库的制作以及GDB调试是至关重要的技能。本资料包包含了关于这些主题的详细教程,通过C语言实现来帮助学习者深入理解。 首先,我们来讨论静态库。静态库是将多个目标文件...

    gdb调试详解 讲述如何使用gdb调试以及调试core dump

    GDB(GNU Debugger)是一款功能强大的调试工具,广泛应用于Linux平台。通过GDB,可以轻松地调试程序,检查程序崩溃后的核心转储文件(Core Dump),从而帮助开发者快速定位和解决问题。 GDB基础命令 在使用GDB之前...

    gdb调试标准教程gdb学习必备

    GDB(GNU Debugger)是一个广泛使用的命令行调试工具,尤其在Unix-like系统中,它为开发者提供了深入程序内部运行情况的能力。这篇教程是学习GDB调试的重要资源,适合嵌入式开发人员使用,因为它能够帮助理解并解决...

    Linux下gdb调试工具指南

    ### Linux下gdb调试工具指南:深入解析与实践 #### 引言 在软件开发领域,尤其是对于系统级编程和复杂应用的维护,一个高效、功能全面的调试工具是不可或缺的。GNU调试器(GDB)正是这样一款强大的调试工具,它...

    gdb调试工具使用手册

    GDB能够直接与源代码交互,当加载有源代码的调试目标时,可以用`list`或`l`命令查看源代码,`up`和`down`命令在堆栈帧间切换,以便查看不同层级的代码。 五、远程调试 GDB还支持远程调试,通过`target remote`命令...

    根据gdb报错定位到代码行 如何根据gdb报错定位到源代码中的对应的行

    根据gdb报错定位到代码行 如何根据gdb报错定位到源代码中的对应的行

    GDB基本调试原理及三种调试方式

    GDB,全称GNU Debugger,是一个强大的源代码级调试工具,用于检查和调试C、C++等编程语言编写的程序。它的主要功能在于帮助开发者找到并修复程序中的错误(bug),以及深入理解程序的执行流程和内部状态。GDB官方...

    GDB调试--以汇编语言为例

    "GDB调试--以汇编语言为例" 本文将详细介绍如何使用GDB调试汇编语言程序,包括使用CPUID指令来获取CPU信息,并使用GDB调试器来调试汇编语言程序。 一、CPUID指令 CPUID指令是Intel Pentium级别以上CPU中的一个...

Global site tag (gtag.js) - Google Analytics