gdb常用命令总结(汇编和c)

参考
gdb的安装:参考

简单命令

gdb test 运行程序target
gdb test --args test 1 2 3运行程序test ,且参数列表(args)为[test,1,2,3]
show args 显示args
set args 修改args

上下键可以查看命令历史(tui中,如果选中的不是cmd窗口,快捷键功能会被替换成别的)
如果忘记了用法,可以help command,可以看某个command的用法,比如help p

b 断点
info b 查看断点
del或者clear 删除断点
ingore (ignore N COUNT)忽略断点N,次数为COUNT,即前COUNT次断点不触发

start 运行(自动在main函数处停下)
r 运行(如果没断点就不停)
c 继续运行
j(jump) (参考)跳到某个位置(它不是快进到某个位置,它是直接跳转到那个位置,它不会运行中间的指令),我不常用,不是特别清楚,需要了解可以参考这个示例(Linux GDB jump 命令介绍)。

n 下一行代码
s 进入函数
ni 下一条指令
si 进入函数(汇编级)

n 10 运行10行代码
ni 10 运行10条指令

until 退出循环
finish 退出函数(相当于是快进)
return 退出函数(它是强制退出,跳过了中间的指令)
call 调用函数

l 显示代码
bt 查看堆栈

p 打印变量

  • 以16进制打印:p /x num (更多格式参考help x
  • C语音中打印数组方法:p (int(*)[5]arr)
  • p $rsp 打印rsp寄存器(注意,这里需要加$符号,而上面命令那个不需要)
  • p $xmm0.v2_double 打印xmm0寄存器(认为它存的是两个double)

x 参数为内存地址,打印内存(help x查看用法)
info reg all 打印所有寄存器
info reg rsp 打印rsp寄存器(简写i r rsp

tui相关命令(参考
layout src 显示源码
layout asm 显示汇编
layout reg 显示寄存器
layout split 显示多个窗口
tui reg general 显示通用寄存器
tui reg all 显示所有寄存器
tui enable 打开tui
tui disable 关闭tui
ctrl+x, a 关闭tui
ctrl+L 刷新窗口
update 更新tui
focus cmd 选中命令窗口

info threads 查看线程信息
info frame 查看帧信息
frame N 切换帧

edit location 修改代码(默认编译器是ex,没用过,不过可以改成vim)
info float 查看浮点器硬件
info vector 查看向量寄存器状态

中级功能

  • 条件断点(参考),比如 b foo if a==1 ,条件成立是触发断点
  • 监控断点(参考),当我们监控的变量/寄存器/内存发生变化时,触发断点。比如watch var_iwatch *(int*)0x7fff123456watch $rsp
  • 临时断点(断点只生效一次),命令为tbreak,简写为tb
  • 自动打印变量(每次程序暂停,都自动打印,个人感觉打印太多时看着有点闹心)命令为display
  • 临时变量
  • 修改变量或者寄存器或者内存的值(参考)
  • 执行shell命令(在命令前输入shell即可,比如shell clear就相当于是执行了shell中的clear命令,清屏)
  • 管道命令(在命令前输入pipe即可,比如pipe disassemble main | tee main.s 就相当于把main函数的汇编代码通过管道重定向到了main.s文件中,在tui中管道命令好像会失效)

高级功能

  • 远程调试(remote debug)
  • 调试正在运行的程序(attach)
  • gdb往回跳转(会有一些副作用,参考资料),也可以使用checkpoint
  • gdb脚本(还是好用的)
  • gdb+python脚本(感觉比较强大,但是不太会用,参考
  • 快照功能(core文件,参考
  • 在内存中搜索(参考)
  • 内存区域( 不常用 参考
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值