GDB¶
设置断点¶
break main
break
可以简写成 b
断点可以通过函数名,当前文件内行号等设置:
break 函数名
break 行号
break 文件名:行号
break 文件名:函数名
break +偏移量 #当前位置之后 3 行
break -偏移量
break *地址
如果不设置指定断点,则默认是下一行设置断点。
b
可以通过 info
来看有哪些断点
i b # info break
运行¶
直接在 gdb
里面执行 run
命令就可以,如果本身有参数,还可以在后面加参数,比如启动某一个服务的时候需要配置文件,则需要在
run
后面跟响应的参数:
run -conf /etc/xxxxoooo.conf
显示变量¶
print
p
显示寄存器¶
info reg
i r
也可以在寄存器前添加 $
显示各个寄存器的内容。
p $sp
p
输出信息的可以使用不同的格式
p/格式 变量
格式列表如下:
格式 | 说明 |
---|---|
x | 十六进制 |
d | 十进制 |
u | 无符号十进制 |
o | 八进制 |
t | 二进制 |
a | 地址 |
c | 字符串 |
f | float |
s | string |
i | 机器码 |
x
可以显示内存中的内容,格式跟 p
类似
x/格式 地址
x/10i $pc // 查看 pc 寄存器指向地址开始的10条汇编
单步调试¶
n/next 下一步
s/step 下一步,可以进入函数内部
nexti 下一行汇编
stepi 下一行汇编,可以进入函数内部
c/continue 继续执行直到下一个断点
监视点¶
watch xxx // xxx 发生变化时暂停, xxx 通常为变量
awatch xxx // xxx 被访问或者发生变化时暂停
rwatch xxx // xxx 被访问时
改变变量的值¶
set variable xxx=123