Linux环境下的C/C++基础调试技术1――初步了解(二)

2014-11-24 12:59:16 · 作者: · 浏览: 1
试:

./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)

fbceb452c681af0c296a38f182fc0481

我们可以看到程序停止在第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)