./insert_sort 12 5
我们发现该程序没有退出,貌似进入了一个死循环。我们开始使用ddd调试这个程序:
ddd insert_sort
运行程序,传入两个参数:
r 12 5
此时程序一直运行不退出,按Ctrl+C暂停程序的执行
(GDB) r 12 5
^C
Program received signal SIGINT, Interrupt.
0x080484ff in insert (new_y=3) at insert_sort.c:45
/home/gnuhpc/MyCode/Debug/Chapter_01/insert_sort/pg_019/insert_sort.c:45:939:beg:0x80484ff
(GDB)
我们可以看到程序停止在第49行。我们看一下num_y现在的值:
(GDB) p num_y
$1 = 1
这里的$1指的是你要GDB告诉你的第一个变量。找到了这个地方后,我们看看在num_y=1时都发生了什么,我们在insert函数(第27行)设置断点(你也可以直接使用break insert在这个函数的入口设置断点),并且设置GDB在断点1处(你可以通过info break命令查看断点)只当num_y==1时才停止:
(GDB) b 27
Breakpoint 1 at 0x80484a1: file insert_sort.c, line 27.
(GDB)
