gdb 调试学习
参考博客:https://zhuanlan.zhihu.com/p/74897601
参考博客:http://c.biancheng.net/view/8219.html
编译时添加debug信息
g++ main.cpp -g -o main.exe
添加断点
可以按照cpp中的行号添加,也可以使用函数名添加
b 1.cpp:7
b 1.cpp:getName
添加临时断点
tbreak 1.cpp:7
查看变量
p + 变量名
p a
运行
r
查看所有断点
info break
查看观察断点
info watchpoint
取消断点
delete + 断点号
delete 2
d 2
删除所有断点
d
clear + 断点行号或函数名
clear 1.cpp:7
clear 1.cpp:getName
禁用断点
disable [breakpoints] [num...]
启用断点
enable [breakpoints] [num...] 激活用 num... 参数指定的多个断点,如果不设定 num...,表示激活所有禁用的断点
enable [breakpoints] once num… 临时激活以 num... 为编号的多个断点,但断点只能使用 1 次,之后会自动回到禁用状态
enable [breakpoints] count num... 临时激活以 num... 为编号的多个断点,断点可以使用 count 次,之后进入禁用状态
enable [breakpoints] delete num… 激活 num.. 为编号的多个断点,但断点只能使用 1 次,之后会被永久删除。
运行几行
next + 行数
next 10
n 10
步入的方式运行几行
step 10
运行到第几行
until + 行号
until 10
u 10
显示局部变量
info locals
显示所有变量
info variables
查看当前位置
where
查看附近的代码
l
查看第40行的代码
l 40
继续运行
c
查看变量类型
whatis a
查看汇编
打开汇编指令开关,这样gdb每执行一步,都会打印出来对应执行的汇编指令
set disassemble-next-line on