使用符号表调试release程序

3 篇文章 0 订阅

如果要生成单独的调试信息文件,命令如下:
objcopy –only-keep-debug foo foo.dbg

如果要去除调试信息(还可以使用strip命令),命令如下:
objcopy --strip-debug foo foo.no_dbg (不从源文件拷贝调试符号信息和相关的段。对使用-g编译生成的可执行文件执行之后,
生成的结果几乎和不用-g进行编译生成可执行文件一样).


如果要添加调试信息文件链接,命令如下:
objcopy --add-gnu-debuglink=foo.dbg foo

确认调试信息文件链接,命令如下:
objdump -s -j .gnu_debuglink foo
 
调试release程序前首先需要从debug版本中获取符号表信息,这个是通过objcopy这个利器,命令如下:
objcopy --only-keep-debug debug info.dbg

其中debug是带有符号表的可执行程序,info.dbg是保存符号表的文件。


在使用gdb调试release程序的时候,使用--symbol命令来加载前面生成的符号表,命令如下:
[root@CentOS_192 debug]# gdb -q --symbol=info.dbg --exec=release
其中--exec选项指定的release就是release版本的程序,这个程序原本是没有符号表信息的。

在发布程序的时候,为了压缩程序,可以先使用-g参数编译程序,然后objcopy --strip-debug去除符号编译信息,同时尽量不要开启优化,这样便
于结合符号信息调试代码,同时便于dump core文件的分析。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值