歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux下可執行程序調試信息的分離及release程序的調試

Linux下可執行程序調試信息的分離及release程序的調試

日期:2017/3/1 9:53:11   编辑:Linux編程

前兩天在群裡看到在討論如何把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
Reading symbols from /root/debug/info.dbg...done.
(gdb) start
Temporary breakpoint 1 at 0x4004ef: file test.c, line 11.
Starting program: /root/debug/release
Temporary breakpoint 1, main () at test.c:11
11 return func();
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.80.el6.x86_64
(gdb) 其中--exec選項指定的release就是release版本的程序,這個程序原本是沒有符號表信息的。
Copyright © Linux教程網 All Rights Reserved