`

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调试程序 用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调试程序(整理有书签).pdf

    陈浩-用GDB调试程序(整理有书签).pdf+守望的个人博客-GDB调试指南(整理有书签).pdf

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

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

    GDB 调试 中文手册

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

    gdb调试多线程程序总结

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

    嵌入式Linux GDB调试技术

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

    gdb调试

    除此之外,GDB还有许多高级特性,如动态加载库的调试、远程调试(通过网络连接到其他设备)、核心转储分析(用于分析程序崩溃后的状态)等。这些功能使得GDB成为了专业开发者的得力助手。 在阅读《gdb调试》这本书...

    使用gdb调试嵌入式应用程序

    gdb(GNU Debugger)是一款功能强大的源代码调试工具,广泛应用于各种操作系统平台,包括嵌入式系统。使用gdb调试嵌入式应用程序可以帮助开发者快速定位和解决软件 bug,提高开发效率和产品质量。 gdb调试嵌入式...

    RISCV GDB调试指南,介绍GDB指令

    通过熟练掌握这些基本的GDB命令,开发者可以在RISC-V环境中有效地调试代码,定位和修复问题,提高软件质量。GDB的强大功能远不止于此,还有许多其他高级特性,如条件断点、数据观察点、反汇编视图等,等待开发者去...

    用GDB调试程序.pdf

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

Global site tag (gtag.js) - Google Analytics