gcc arcg.c -g -oO -o app //必须添加-g
gdb app

- set args 1 2 3 4 5 6 //设置参数
- show args //查看参数
- gdb app
- set args 1 2 3 4 5
- start //执行一行
- c //继续执行
- q //退出
- gdb app
- set args 1 2 3 4 5
- run/r
- gdb app
- list/l //默认只显示10行 直接回车显示下10行
- list 行号
- list 文件名:行号
- list 函数名
- list 文件名:函数名
- set listsize/list 20 //修改显示行数 20行
- b 行号
- b 函数名
- b 文件名:行号
- b 文件名:函数名
b 30 if i==5 //i=5时断点生效
- info/i
- i b //info break
3.3.3删除断点 d- delete/d
- d 断点编号
- d 1
- d 2 4 6
- d 1-5
- disable//d
- dis 断点编号
- dis 1-5
- enable==ena
- ena 断点的编号
- ena 1-5
- p 变量名
- p i
- p/fmt i
ptype i
程序运行到断点后 输入display
启动单步调试 n 后会自动显示
- display i
- displat/fmt i
查看自动打印列表
- info display
- (gdb) info display
- Auto-display expressions now in effect:
- Num Enb Expression
- 1: y i
- 2: y array[i]
- 3: y /x array[i]
undisplay 1 2
disable display 1
enable display 1
跳出的函数内部无断点 或者断点无效
条件
1.内部不可有断点
2.必须在循环体开始或结束执行
使用场景 如控制循环轮次
- gcc main.c -o main -g
- gdb main
- set args 1 2 3 4
- show args
- run/r or start
- contibue/c
- quit/q
- list/l
- info/i
- b 1
- delete/d -- d 1
- disable/dis -- dis 1
- enable/ena --ena 2
-
- continue/c --c
- print/p i
- ptype i
- display
- undisplay
- disable display
- enable display
- step/s
- next/n
- finish
- until
- set var i=5
学习总结