12.4.2. 调试 Debian 软件包

因为在 Debian 系统上默认所有已安装的二进制程序都是精简的,绝大多数的调试符号已经从常规的软件包中移除了。为了能用 gdb(1) 调试 Debian 软件包,相对应的 *-dbg 软件包或 *-dbgsym 软件包需要被安装 (例如 libc6 需要安装 libc6-dbgcoreutils 需要安装 coreutils-dbgsym)。

老式的软件包将提供相应的 *-dbg 软件包。它将和原始软件包一起,直接放在 Debian main 档案库。对于新的软件包,当它们编译时,将会自动产生 *-dbgsym 软件包,那些调试软件包将被独立放在 debian-debug 档案库. 更多信息请参阅 Debian Wiki 文档 .

如果一个需要被调试的软件包没有提供其 *-dbg 软件包或 *-dbgsym 软件包,你需要按如下所示的从源代码中重构并且安装它。

  1. $ mkdir /path/new ; cd /path/new
  2. $ sudo apt-get update
  3. $ sudo apt-get dist-upgrade
  4. $ sudo apt-get install fakeroot devscripts build-essential
  5. $ apt-get source package_name
  6. $ cd package_name*
  7. $ sudo apt-get build-dep ./

按需修改 bug。

软件包调试版本跟它的官方 Debian 版本不冲突,例如当重新编译已存在的软件包版本产生的 “+debug1“ 后缀,如下所示是编译未发行的软件包版本产生的 “~pre1“ 后缀。

  1. $ dch -i

如下所示编译并安装带有调试符号的软件包。

  1. $ export DEB_BUILD_OPTIONS=nostrip noopt
  2. $ debuild
  3. $ cd ..
  4. $ sudo debi package_name*.changes

你需要检查软件包的构建脚本并确保编译二进制的时候使用了 “CFLAGS=-g -Wall“ 选项。