示例 下列示例解释如何在启动 dbx 调试程序时同时启动一个进程。本例使用了一个名为 samp.c 的程序。该 C 程序首先经过 -g 标志的编译生成一个包含符号列表引用的目标文件。在此情况下,该程序命名为:samp:
$ cc -g samp.c -o sampsamp 程序运行后,操作系统会报告一个总线错误并将核心映像写入到您当前的工作目录当中,如下所示:
$ samp Bus Error - core dumped要确定发生错误的位置,请输入:
$ dbx samp系统将会返回如下信息:
dbx version 3.1 Type 'help' for help. reading symbolic information . . . [ using memory image in core] 25 x = 0; (dbx) quit该示例解释了如何将 dbx 连接到进程当中去。该示例使用了如下程序 looper.c:
main() { int i,x[10];
for (i = 0; i < 10; }该程序将不会中止因为 i 不会增加。使用 -g 标志编译 looper.c 得到符号调试能力:
$ cc -g looper.c -o looper在命令行中运行 looper 并执行以下步骤就会在它运行的时候将 dbx 连接到程序中去:
PID TTY TIME COMMAND 68 console 0:04 sh 467 lft3 10:48 looper在该示例中和 looper 相关的进程 ID 是 467。
要将 dbx 连接到 looper中,请输入:
$ dbx -a 467系统将返回如下的信息:
Waiting to attach to process 467 . . . Successfully attached to /tmp/looper. dbx is initializing Type 'help' for help. reading symbolic information . . .
attached in main at line 5 5 for (i = 0; i < 10; (dbx) 现在您可以查询并调试进程如同该程序最初就是由 dbx 来启动的。
Entering debug program . . . dbx version 3.1 Type 'help' for help. reading symbolic information . . . bus error in main at line 25 25 x = 0; (dbx) quit-r 标志允许您在尽管没有设置核心映像的情况下在内存中检查您的进程的状态。