12.4.2. 调试 Debian 软件包
因为在 Debian 系统上默认所有已安装的二进制程序都是精简的,绝大多数的调试符号已经从常规的软件包中移除了。为了能用 gdb(1) 调试 Debian 软件包,相对应的 *-dbg
软件包或 *-dbgsym
软件包需要被安装 (例如 libc6
需要安装 libc6-dbg
,coreutils
需要安装 coreutils-dbgsym
)。
老式的软件包将提供相应的 *-dbg
软件包。它将和原始软件包一起,直接放在 Debian main 档案库。对于新的软件包,当它们编译时,将会自动产生 *-dbgsym
软件包,那些调试软件包将被独立放在 debian-debug 档案库. 更多信息请参阅 Debian Wiki 文档 .
如果一个需要被调试的软件包没有提供其 *-dbg
软件包或 *-dbgsym
软件包,你需要按如下所示的从源代码中重构并且安装它。
$ mkdir /path/new ; cd /path/new
$ sudo apt-get update
$ sudo apt-get dist-upgrade
$ sudo apt-get install fakeroot devscripts build-essential
$ apt-get source package_name
$ cd package_name*
$ sudo apt-get build-dep ./
按需修改 bug。
软件包调试版本跟它的官方 Debian 版本不冲突,例如当重新编译已存在的软件包版本产生的 “+debug1
“ 后缀,如下所示是编译未发行的软件包版本产生的 “~pre1
“ 后缀。
$ dch -i
如下所示编译并安装带有调试符号的软件包。
$ export DEB_BUILD_OPTIONS=nostrip noopt
$ debuild
$ cd ..
$ sudo debi package_name*.changes
你需要检查软件包的构建脚本并确保编译二进制的时候使用了 “CFLAGS=-g -Wall
“ 选项。