`

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

分享到:
评论

相关推荐

    GDB调试GDB调试

    GDB调试GDB调试GDB调试GDB调试GDB调试 GDB调试GDB调试GDB调试GDB调试GDB调试

    STM32 GDB调试手册

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

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

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

    gdb调试大全GDB调试入门必备

    GDB 是一个功能强大的调试器,广泛应用于嵌入式系统、操作系统和应用程序的调试。下面是 GDB 调试大全的知识点总结: 一、列文件清单 * list 命令可以显示当前文件的内容,其中包括函数名、变量名和代码行号。 * ...

    用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这一强大的开源调试工具。GDB,全称GNU调试器,是Linux和其他类Unix系统下用于调试C、C++、Objective-C、Fortran等语言编写的程序的工具。...

    GDB调试精粹及使用实例GDB调试精粹及使用实例

    GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹及使用实例GDB调试精粹...

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

    GDB(GNU Debugger)是 Linux 系统中的一款强大调试工具,用于调试 C 和 C++ 程序。它使用户可以在程序运行时观察程序的内部结构和内存的使用情况。GDB 提供了多种功能,如监视程序中的变量值、设置断点、逐行执行...

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

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

    Linux gdb调试

    6. **使用GDB调试动态加载**:对于使用`dlopen`等函数动态加载的库,调试时可能需要使用GDB的`sharedlibrary`命令来跟踪库的加载。一旦库被加载,你可以像调试静态链接库那样设置断点。 7. **示例代码**:一个简单...

    gdb调试器的使用,gdb

    gdb调试器的使用gdb调试器的使用gdb调试器的使用gdb调试器的使用gdb调试器的使用

    gdb调试工具使用手册

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

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

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

    GDB 调试 中文手册

    GDB(GNU Debugger)是一款功能强大且广泛使用的 UNIX 下的程序调试工具。它提供了多种功能,包括启动程序、设置断点、观察点和捕捉点、维护停止点、停止条件维护、为停止点设定运行命令、恢复程序运行和单步调试、...

    gdb调试多线程程序总结

    GDB 调试多线程程序是一种复杂的调试技术,需要熟练掌握 GDB 的多线程调试命令。下面是 GDB 调试多线程程序的总结。 基本命令 在 GDB 中,使用 `info threads` 命令可以显示当前可调试的所有线程,每个线程会有一...

    linux 使用GDB调试 资料

    GDB可以帮助开发者追踪代码执行流程,定位和修复程序中的错误,是Linux环境下进行软件开发不可或缺的一部分。本资料集重点介绍了如何有效地利用GDB进行程序调试。 首先,了解GDB的基本概念至关重要。GDB提供了诸如...

    嵌入式Linux GDB调试技术

    嵌入式Linux GDB调试技术是指在嵌入式系统中使用GDB调试程序的一种技术。GDB(GNU Debugger)是一种功能强大且灵活的调试器,可以在各种平台上使用。嵌入式Linux GDB调试技术的主要目的是掌握Linux GDB调试方法和...

    gdb调试指南

    5. **动态库调试**: gdb可以跟踪动态链接库的加载和卸载,以及它们中的函数调用。 6. **GDB集成到IDE**: 许多集成开发环境(IDE)如Eclipse、Visual Studio Code等都集成了gdb,提供图形化的调试界面。 总之,gdb...

Global site tag (gtag.js) - Google Analytics