编译携带调试信息的可执行程序

gcc编译时加上-g参数
gcc *.c -o myapp -g

因为携带调试信息,带-g参数生成的可执行文件体积会比不带-g参数的大,发布应用的时候一般取消—g参数生成可执行程序。

进入调试
gdb 带-g参数生成的可执行文件

GDB 调试

start       # 只执行一步
next(n)     # 继续执行 单步走 跳过函数
step(s)     # 继续执行 单步走 可以进入到函数内部
continue(n) # 继续执行 直接停在断点位置

查看代码

# list(l)
l # 行号|函数名
l # 文件名:行号|函数名字

设置断点

# 设置文件断点
# break(b)
b # 行号|函数名
b # 文件名:行号|函数名

# 设置条件断点
b 行号 条件 if value == 19

# 查看断点编号
# info (i) # 查看信息
i b      # 查看设置断点

# 删除断点
# detele(d)
d # 断点编号(通过info b查看断点信息获取编号)

开始执行GDB调试

#执行一步操作
start
#继续执行
n|s
#执行多步,直接停在断点处

单步调试

# 进入函数体内部
s
    # 从函数体内部跳出 finish 如果有断点则需要删除断点信息才能跳出
# 不进入函数体内部
n
# 退出当前循环
u

查看变量

# 查看变量的值     
print(p) 变量名
# 查看变量的类型   
ptype 变量名
# 设置变量的值     
set var 变量名=赋值
# 设置追踪变量
display 变量
# 取消设置追中变量
undisplay 编号
# 获取编号
info display

退出gdb调试

quit