前兩天在群裡看到在討論如何把debug版中的符號表加到release版本中,覺得這個非常有用,所以學習一下。
使用的工具是objcopy。 如果要生成單獨的調試信息文件,命令如下:
objcopy –only-keep-debug foo foo.dbg
如果要去除調試信息(還可以使用strip命令),命令如下:
objcopy --only-keep-debug foo foo.dbg
如果要添加調試信息文件鏈接,命令如下:
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