GDB调试常用命令
-
gdb gdbtest --加载可执行程序
-
r --run,运行,可以带参数
-
set args 参数1 参数2 设置参数
-
set args 是使用gdb读取可调试文件符号后,再使用的命令
gdb gdbtest # 先gdb读取可调式文件的符号 set args [arg1] [arg2]
-
如果不想分两步操作,可以在gdb命令后,加
--args
gdb --args gdbtest [arg1] [arg2]
-
-
i b --info break,断点信息
-
b 3 --break 3,第3行下断点
-
b main --main函数第一行下断点
-
b other_c:fun1 --文件other_c的fun1函数第一行下断点
-
b 120 --在120行下断点
-
clear --删除所有断点
-
d 3 --delete 3,删除断点3
-
disable 1 --禁用断点1
-
enable 1 --启用断点1
-
s --step,跳进去
-
stepi 与step类似,但是比step更详细
-
f --finish,跳出来
-
n --next,执行一行
-
n 3 --next 3,执行3行
-
nexti 单步执行语句,但和next不同的是,它会跟踪到子程序的内部,但不打印出子程序内部的语句。
-
c --continue,继续直至下一个断点或结束
-
p a --print a,输出变量a的值
-
list/l --查看代码
-
q/kill --退出本次调试
-
bt --查看调用堆栈
-
x /nxb 以单字节(b)为单位,以十六进制形式显示(x),打印n(n)个字节
-
return --把当前函数return
-
info variables 查看全局和静态变量
info locals 查看当前stack frame局部变量
info args 查看当前stack frame参数 -
set print pretty on/off 开启/关闭显示更友好
-
whatis 显示某个变量或表达式的数据类型
-
awatch:用来增加一个观察点(add watch),使用格式:
awatch 变量或表达式
当表达式的值发生改变或表达式的值被读取时,程序就会停止运行。 -
watch:与awatch类似用来设置观察点,但程序只有当表达式的值发生改变时才会停止运行。使用格 式:
watch 变量或表达式 -
循环n次后停下来 break 行数 if i==n