自行編譯含 debug symbol 的套件 (package)
對函式庫 X 來說
- X-dev 表示讓開發者用的, 有裝 header、文件之類的
- X-dbg 內容類似 X, 不過有留 debug symbol
比方說 libjpeg, 三種的描述如下:
- libjpeg62 - The Independent JPEG Group's JPEG runtime library
- libjpeg62-dbg - Development files for the IJG JPEG library
- libjpeg62-dev - Development files for the IJG JPEG library
裝了 X-dbg 後什麼事也不用做, gdb 自己會優先用含 debug symbol 的版本。不過若官方沒提供供 X-dbg 的話, 就得自己編。參考官方文件《HowToGetABacktrace - Debian Wiki》, 做法如下:
- $ apt-get install build-essential fakeroot gdb
- $ apt-get build-dep X
- $ DEB_BUILD_OPTIONS="nostrip noopt" fakeroot apt-get -b source X
- $ dpkg -i X.deb
針對上述指令, 補充幾點
- 編好套件後, 可用 dpkg -c X.deb 先看裡面裝了什麼
- 用 objdump --source FILE 查看裡面有沒有含程式碼, 有的話才表示確實有含 debug symbol。這個作法比用 file FILE 看是否有 strip 更確實。二進位檔有可能沒含 debug symbol 也沒 strip。