常用指令
进入调试模式
1
gdb 可执行文件
如果忘了指定调试文件可以使用
file
指令指定1
(gdb) file 文件名
使用
quit
指令退出调试模式 可简写为q1
(gdb) q
使用
start
指令开始调试 停在第一行代码处1
(gdb) start
使用
step
指令进行单步执行 可简写为s
1
(gdb) s #会进入函数内部
使用
next
执行进行单步执行 可简写为n
1
(gdb) n #不会进入函数内部
汇编级别单步执行(上面
n
和s
为c语言级别单步指令)1
2(gdb) ni #不进入函数内部
(gdb) si #会进入函数内部使用
list
指令列出所有源代码 可简写为l
1
(gdb) l
使用
break
指令设置断点位置 可简写为b
1
2
3
4
5(gdb) b main #在main函数处打断点
(gdb) b 10 #在第十行位置打断点
(gdb) b test:10 #在test文件的第十行位置打断点
(gdb) b 0x3400a #在0x3400a内存位置打断点
(gdb) b 10 if i==3 #设置条件断点 i等于3时在第十行位置打断点 适用于循环使用
delete+断点编号
指令删除断点 可简写为d
1
(gdb) delete 3 #删除编号为3的断点 清除时GDB不会给出任何提示
使用
clear+断点行号
指令清除断点1
(gdb) clear 3 #清除第三行的断点 清除时GDB会给出提示
使用
disable/enable + 断点编号
指令冻结或启动断点1
disable 3,4 #冻结编号为3和4的断点 多个断点使用逗号分隔
使用
info break
指令查看断点的情况1
(gdb) info break
使用
tbreak
指令设置临时断点1
(gdb) tbreak 行号/函数名 #设置临时断点,到达后被自动删除
使用
awatch/watch + 变量
设置变量读写观察点1
2(gdb) awatch/watch a #当变量a被读出或写入时程序被暂停
(gdb) rwatch a #当变量a被读出时程序被暂停使用
continue
指令运行到断点处 可简写为c
1
(gdb) c
使用
print
指令打印变量的值 可简写为p1
(gdb) p a #打印变量a的值
使用x指令打印指定内存地址数据
1
(gdb) x /6cb 0x804835c #打印地址0x804835c起始的内存内容,连续6个字节,以字符格式输出。
使用
run
指令运行整个程序 可简写为r
1
(gdb) r #如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处
使用 call 指令直接运行某个函数
1
(gdb) call fun #在当前位置执行函数fun
使用
display
指令设置需要跟踪的变量1
(gdb) display a #跟踪变量a 每次断点到该处就显示该变量的值
使用
info display
显示当前所有跟踪的情况1
(gdb) info display
使用
undisplay+编号
指令取消对变量的跟踪1
(gdb) undisplay 3 #取消对编号为3的跟踪事件
使用
set+ 变量
指令改变变量的值1
(gdb) set i=3 #临时设置变量i的值为3
使用
set
指令设置运行时参数1
(gdb) set i=3 #临时这只变量i的值为3
使用
show
指令查看运行时参数1
(gdb) show i
使用
finish
指令函数结束1
(gdb) finish
使用
help
指令查看指令使用说明1
2(gdb) help print #查看print指令的解释说明
(gdb) help #查看所有指令使用
info reg
指令查看寄存器状态1
(gdb) info reg
使用
info stack
指令查看堆栈状态1
(gdb) info stack
运行shell指令
1
(gdb) shell ls #运行shell指令ls。
其他指令
1
2
3
4
5
6
7(gdb) path #可设定程序的运行路径。
(gdb) show paths #查看程序的运行路径。
(gdb) cd #相当于shell的cd命令。
(gdb) pwd #显示当前的所在目录
- 使用
回车
重复上一条指令
本文为作者原创 转载时请注明出处 谢谢
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站