gdb
GDB是一个强大的linux下的程序调试工具
其使用过程如下:
debug方式编译
在编译前加上 -g
gcc test.c -g -o test
通过gdb启动程序
gdb test
为代码添加断点
在gdb 命令模式下 (gdb):
list [n] 可以显示从n到n+10行的代码 ->l
break [n] 给第n行添加一个断点 ->b
break [func name] 给函数func入口设置断点
break if <condition> 设置条件断点
delete [i] 删除第i个断点
-
info break 显示断点信息
(gdb) b 8 Breakpoint 1 at 0x40053d: file test.c, line 8. (gdb) b func Breakpoint 2 at 0x40052d: file test.c, line 5. (gdb) b 20 Breakpoint 3 at 0x40056c: file test.c, line 20. (gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y 0x000000000040053d in func at test.c:8 2 breakpoint keep y 0x000000000040052d in func at test.c:5 3 breakpoint keep y 0x000000000040056c in main at test.c:20
run 运行程序 -> r
-
watch <expr> 观察点
Hardware watchpoint 4: i>50 Old value = 0 New value = 1 0x0000000000400547 in func (n=250) at test.c:6
在运行过程中:
next 单步运行 ->n
step 单步进行 ->s
-
print [x] 打印变量x的值 ->p
(gdb) p i $25 = 51
-
backtrace 查看调用的函数堆栈 ->bt
(gdb) bt #0 0x0000000000400547 in func (n=250) at test.c:6 #1 0x000000000040059a in main () at test.c:24