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
文章目录