gdb 如何调试release版本

https://blog.csdn.net/u012719556/article/details/45315089?utm_source=blogxgwz2

 

Linux下可执行程序调试信息的分离及release程序的调试

https://www.cnblogs.com/keanuyaoo/p/3317957.html

 

GDB调试Release版ELF文件

https://www.cnblogs.com/np10/archive/2013/01/24/2875573.html

 

c++ 符号表分离———objcopy(调试信息挂载)

https://blog.csdn.net/cyteven/article/details/13015511

 

使用objdump objcopy查看与修改符号表

https://blog.csdn.net/foruok/article/details/21157467

 

为release版程序保留符号表方便调试

https://blog.csdn.net/elated/article/details/8995074

 

ABI(Application Binary Interface)

https://blog.csdn.net/tuhuolong/article/details/6131399

 

 

最近要发布release版本,直接运行时程序就挂掉了,于是乎就想gdb一下,结果发现只能看到堆栈,查了一些博文,将调试方法总结如下:

1、进入debug版本的目录,将debug版本中相应动态库或执行程序的符号表导出,命令如下

      objcopy --only-keep-debug   动态库名或可执行程序名  导出的符号文件名

      例:objcopy --only-keep-debug libDBCommon.so libDBCommon.so.debug

      如果需要调个动态库,每个动态库都执行一次上面的步骤,导出的符号名当然不能一样啦

3、将符号文件copy到release版的目录下(网上也有说在debug时可以用命令指定)

4、进入release目录,在release版的动态库或执行文件中添加调试信息文件链接,命令如下

      objcopy --add-gnu-debuglink=符号文件名    对应的动态库名

      例:objcopy --add-gnu-debuglink=libDBCommon.so.debug  libDBCommon.so

      调试多个动态库时执行多次,注意这时候原本release的动态库大小会增大一些

5、确认调试信息文件链接,命令如下

      objdump -s -j .gnu_debuglink 动态库名

      例:objdump -s -j .gnu_debuglink libDBCommon.so

      调试多个动态库时执行多次

6、启动调试

      gdb -q --symbol=第一个符号文件名:第二个符号文件名:第三个符号文件名 --exec=可执行程序名

      例:gdb -q --symbol=libDBCommon.so.debug:libDBNodeManager.so.debug:libcoremodule.so.debug --exec=scadaserver

      符号文件名可以是多个(动态库或执行程序的),中间用冒号隔开
————————————————————————————————————————————————————————————————————————————————————————————————————————————————

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GDB是一种功能强大的调试器,用于帮助开发人员在软件开发过程中定位和修复程序中的错误。GDB有两个不同的版本:开发版本和发布版本。开发版本通常包含最新的功能和修复,而发布版本是为了稳定性和可靠性而经过测试和验证的版本。 发布版本GDB是为了满足用户的需求而推出的。它经过详细的测试和验证,确保可以在各种操作系统和硬件平台上正常工作。发布版本通常是根据开发版本中的一些特定功能和修复进行选择和打包的。 发布版本的主要目的是向用户提供一个稳定可靠的调试器,以帮助用户更好地调试和优化他们的程序。这是通过从开发版本中选择和集成一些已经验证和稳定的功能和修复来实现的。此外,发布版本还提供了一些额外的文档,如用户手册和常见问题解答,以帮助用户更好地使用GDB。 发布版本GDB通常以二进制形式提供,用户只需下载并安装即可使用。用户可以通过向开发者提供反馈来改善发布版本,并在后续的更新中获取新的功能和修复。发布版本GDB可用于各种软件开发项目,包括嵌入式系统、服务器应用程序和桌面应用程序等。 总之,发布版本GDB是一个经过测试和验证的稳定版本,旨在为用户提供一个可靠且功能丰富的调试器,以帮助他们调试和优化程序。用户可以下载并安装发布版本,然后从开发者那里获取反馈和更新,以进一步改进GDB的性能和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值