天天看點

使用符号表調試release程式

如果要生成單獨的調試資訊檔案,指令如下:

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檔案的分析。

繼續閱讀