GDB调试技巧(二)
tal;
13 value = 10;
14 div = 6;
15 total = 0;
16
17 for(i=0; i<10; i++)
18 {
19 result = wib(value, div);
20 total += result;
(gdb)
21 div++;
22 value--;
23 }
24 printf("%d wibed by %d equals %d\n", value, div, total);
25 return 0;
26 }
(gdb)
(gdb) break 19 //设置断点
Breakpoint 1 at 0x80483d7: file gdb_test2.c, line 19.
(gdb) run //运行
Starting program: /mnt/hgfs/E/Work_Code/Interview/gdb/gdb_test2
Breakpoint 1, main () at gdb_test2.c:19
19 result = wib(value, div);
(gdb)
(gdb) print div //打印值
$5 = 6
(gdb) print value
$6 = 10
(gdb) print value
$15 = 9
(gdb) print div
$16 = 7
(gdb) next //单步调试
20 total += result;
(gdb) next
21 div++;
(gdb) next
22 value--;
(gdb) next
17 for(i=0; i<10; i++)
(gdb) print div
$17 = 8
(gdb) print value
$18 = 8
根据结果可以得出此时div 和value值均为8传入函数后diff=no1-no2=0,被除数为0,所以导致错误。