GDB简单使用
编译程序时,使用gcc -ggdb3 -o test test.c可以最大限度的包含调试信息。
- 调试程序
gdb test 然后会出现一串提示,无非就是写授权介绍类的.然后就是提示符
(gdb)
(gdb)run 设置断点后,输入run直接运行,并且在断点处停止
- 设置断点
(gdb)break main 在main函数出设置了断点
(gdb)break 行号 在某一行设置断点
- 单步
(gdb)step 也可简写 s 遇到函数就会进入
(gdb)next 也可简写 n 遇到函数时不会进入
- 显示命令
(gdb)print 要打印的值或表达式 直接打印某个变量的值或者表达式的值
(gdb)print 变量=表达式 还可以用于赋值
(gdb)print 开始表达式@连续打印空间的大小 还可以打印出内存的某个部分开始的连续值
(gdb)display 要显示的值或表达式 直接打印某个变量的值或者表达式的值
--------display命令会被gdb记忆,如果打印一个值,后续遇到该值均会被打印出来
(gdb)set 变量名=表达式 可以修改变量的值
- continue命令
(gdb)cont [N] 在遇到断点后,继续执行,后面可以跟次数N,不跟默认为一次,在循环中作用较大
- 设置临时断点
临时断点会在调用一次后自动删除
(gdb)tbreak 行号
(gdb)tbreak 函数
- 断点管理
(gdb)enable 断点编号 可以使暂时失效的断点恢复
(gdb)disable 断点编号 将所设置的断点失效
(gdb)delete 断点编号 直接删除断点
(gdb)clear 断点所在行号 直接删除所在行断点
delete和clear不同之处是delete跟的是断点号,clear跟的是行号