如果要生成單獨的調試資訊檔案,指令如下:
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檔案的分析。