gdb是linux下的一款动态调试工具,以下是使用gdb调试程序常用到的命令,我尽量以图文的方式进行讲解,希望对初学者有所帮助。
1.执行程序
首先当然是得让程序运行起来
(1)加载文件 gdb path/file
注:后面介绍的命令均在文件加载后使用
(2)start
启动程序,并在程序第一句话处停下
(3)r
run 启动并执行程序,直到遇到断点或等待输入
(4)c
continue 继续执行程序
2.查看内存情况
(1)x/FMT
该命令功能非常强大,支持多种格式显示内存的信息
例:查看10个word长度内存以16进制显示 x/10wx 地址
查看10个字节内存以指令显示 x/10i 地址
格式的参数非常多,还好gdb有help的功能,可通过help x/ 可清楚的查看到使用方法(对于像我这种懒人,是从不记的,每次都通过help x/ 去找合适的格式命令)
(2)其他查看信息的命令
disas 查看汇编代码
searchmem 搜索内存
vmmap 列出内存状态
info functions --查看函数
info b --查看断点
i r --查看寄存器状态
p 查看一个值
p printf --查看printf函数
p 0x地址 --查看一个地址内存
p myname --查看一个变量
3.断点设置
help breakpoints
常用的命令
(1)设置断点
b *0x地址
b 函数名
b *函数名+偏移
(2)删除断点
delete breakpoints 标号
4.开始调试
n next
单步执行指令,不进入调用函数内部执行
s step
遇到函数,步入函数内部继续执行
finish --执行到返回
watch --设置监视,如果改变则断下
例:
watch *0x地址
watch $epb
set --改变某值
例:
set a=10
set *0x地址='AAAA'
set &eax=0
通过以上常用命令的介绍,希望能起到抛砖引玉的作用,想熟练掌握GDB的使用,还是需要大家多使用help命令,多练习,多研究。