文章目录
1、gdb调试编译准备
编译时加上一定加上 -g选项
eg.
gcc main.c -o main -g
2、开启gdb调试
开启gdb
gdb main
[图 ]
3、查看程序 l
命令 : l // 对应list的简写
显示某函数上下文内容: l print // 显示函数print上下文内容
4、断点 . b
设置断点:
b 10 // 在第10行设置一个断点 ,为是break 10的简写形式
b print // 在print 函数处设置断点
// 查看断点
info break // 简写 i break
// 禁止某断点
disable 1 // 禁止序列号为1的断点
// 重新使能某断点
enable 1 // 重新使能断点1
// 删除断点
d break 1 // 删除断点1
// 一次删除全部断点
d // 直接输入一个d命令删除全部断点
6、运行跑程序 r
命令: r ,会跑到下一个断点处
7、查看调用栈 bt
命令:bt // breaktrace 的简写
8、查看所有全局变量值 info local
命令:info local
9、单步运行 n
命令: n // 单步运行
10、查看某个变量的值 : p varname
命令: p 变量名
eg. p start // 查看start变量的值
p &start // 查看变量start地址值
11、每次执行时都显示某个变量的值 : display varname
命令: display 变量名
eg. display start // 每次都显示start变量的值
display &start // 每次都显示start变量地址的值
12、修改变量的值 p varname = var
命令1: p 变量名 = 要设置的值
eg. p start = 4
命令2: set val 变量名 = 要设置的值
eg. set val start = 4
13、跳入函数内部 s
命令: s
上图中当前程序执行在 main.c函数的第33行,该行对应函数print,按入s表示进入print函数内部
14、觉得单步麻烦,直接运行完这个函数 finish
命令: finish
15、直接将程序运行到某一行: until 20
命令:until 20 // 直接运行到第20行
16、查看当前代码运行到哪一行 f
17、退出
方式一 命令: q
方式二 ctrl + d