使用gdb调试
root@llp-virtual-machine:/home/llp/llp/2014.1.9# gcc -g getsum.c -o getsum
root@llp-virtual-machine:/home/llp/llp/2014.1.9# gdb getsum ----------------------》启动
(gdb) l -----------------------》显示代码
1 #include<stdio.h>
2 int get_sum(int n)
3 {
4 int sum=0,i;
5 for(i=0;i<n+1;i++)
6 {
7 sum=sum+i;
8 }
9 return sum;
10 }
(gdb) ------------------------》重复上个指令
11
12 int main()
13 {
14 int i=100,result;
15 result=get_sum(i);
16 printf("1+2+3+...+%d=%d\n",i,result);
17 return 0;
18 }
(gdb) b 14 ------------------------------》设置断点
Breakpoint 1 at 0x400565: file getsum.c, line 14.
(gdb) b 5
Breakpoint 2 at 0x40053a: file getsum.c, line 5.
(gdb) r -------------------------------》运行
Starting program: /home/llp/llp/2014.1.9/getsum
Breakpoint 1, main () at getsum.c:14 --------------------------------》出发第一个断点
14 int i=100,result;
(gdb) n ---------------------------------》单步执行
15 result=get_sum(i);
(gdb) n
Breakpoint 2, get_sum (n=100) at getsum.c:5 -----------------------------------》触发第二个断点
5 for(i=0;i<n+1;i++)
(gdb) n
(gdb) p sum ----------------------------------》显示某个变量的值
$3 = 3
(gdb) p i
$4 = 2
(gdb) c ----------------------------------》继续运行
Continuing.
1+2+3+...+100=5050
[Inferior 1 (process 10171) exited normally]
(gdb) info b ---------------------------------》显示断点的信息
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000400565 in main at getsum.c:14
breakpoint already hit 1 time
2 breakpoint keep y 0x000000000040053a in get_sum at getsum.c:5
breakpoint already hit 1 time
(gdb) d 1 -------------------------------》使第一个断点失效
(gdb) q ------------------------------->退出调试
(gdb) clear ------------------------------->删除所有断点
(gdb)clear 5 -------------------------------->删除第几行的断点
(gdb)clear 函数名 -------------------------------》删除该函数的断点
(gdb)delete 断点编号,断点编号 ----------------------------------》删除指定编号的断点
(gdb) continue ------------------------------->继续运行至下个断点甚至完成
(gdb) kill ------------------------------->退出调试
(gdb) clear ------------------------------->删除所有断点
(gdb) clear ------------------------------->删除所有断点