GDB使用方法

GDB使用

print  variable        查看变量
print  *array@len      查看数组(array是数组指针,len是需要数据长度)
缩写为p

可以通过添加参数来设置输出格式:

/x   按十六进制格式显示变量。
/d   按十进制格式显示变量。
/u   按十六进制格式显示无符号整型。
/o   按八进制格式显示变量。
/t   按二进制格式显示变量。
/a   按十六进制格式显示变量。
/c   按字符格式显示变量。
/f   按浮点数格式显示变量。

2 examine 查看内存

examine /n f u + 内存地址(指针变量)
缩写为x

n 表示显示内存长度
f 表示输出格式(见上)
u 表示字节数制定(b 单字节;h 双字节;w 四字节;g 八字节;默认为四字节)
如:
x /10cw pFilePath (pFilePath为一个字符串指针,指针占4字节) 查看pFilePath后的10个字符
x /x p (p是一个int*) 以16进制形式查看p指向内容(默认p大小为4字节,长度为1即4个字节)

3 disassemble 查看汇编

disassemble 不加参数会显示整个程序的汇编码,后面可以加函数名,或地址范围。
nexti stepi 和 next step 的区别在于不是执行一条C语句而是一条机器指令即一条汇编语句。
x /ni $pc 或 display /ni $pc (其中n是数字) 用来查看下面将要执行的n条汇编语句,区别在于后者GDB每次停下都会显示下面将要执行的n条汇编语句而前者只显示这一次,对于后者可以用 undisplay 来取消。
Emacs下可以GUD->GDB window->disassembly.

4 display

可以用 display variable-name 使GDB每次暂停时都显示指定变量,前面的 display /i $pc 显示下条汇编语句。
用 undisplay variable-name 取消每次都显示, undisplay不加参数表取消所有显示,display不加参数显示一次所有每次暂停都要显示的内容。

5 list

可以查看即将执行的语句.

6 until

后跟行数,表一直执行到第几行。也可以跟函数名表遇到此函数就暂停。

7 finish

从一个stack中返回,即退出当前函数(在主函数中没用)

8 查看寄存器

info registers 查看所有寄存器的内容。
p $eax 查看指定寄存器的内容。

9 快捷键

手册

C-x SPC在光标所在行设置断点
C-c C-sstep
C-c C-nnext
C-c C-istepi
C-c C-rrun
C-c C-bbreakpoint 当前行
C-c C-d删除当前执行行处的断点
C-c C-t当前行设置临时断点
C-c C-uuntil 光标所在的行
C-c C-ffinish

10 Trick

  1. 不退出GDB,重新编译源码,此时再继续使用GDB时会检测到执行文件有更新会重新加载执行文件。
  2. 加载执行文件 file filename ,可以用 cd 切换目录
  3. 删除所有断点 delete breakpoints
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值