GDB 相关

1.修改变量值:set variable=value 或者 print variable=value


2.检查内存:x /NFU addr , 其中N代表重复数,F代表输出格式,U代表每个数据单位的大小。

F:
  'x' 16进制整数格式
  'd' 有符号十进制整数格式
  'u' 无符号十进制整数格式
  'f' 浮点数格式
U:
b :字节(byte)
h :双字节数值
w :四字节数值
g :八字节数值
eg: x/4ub 0x4000
   会以无符号十进制整数格式(u)显示四个字节(b),0x4000,0x4001,0x4002,0x4003。


3.连续print内存空间的值: print 开始表达式@连续打印内存的长度 ,

eg: p *(0x14ac248)@16


4.GDB中执行shell命令: shell <cmd>


5.多线程调试时,锁住当前线程运行: setscheduler-locking off|on|step, 

off 不锁定任何线程,也就是所有线程都执行,这是默认值。 on 只有当前被调试程序会执行。 step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。


6.GDB反向调试流程:

record  >> reverse-next / reverse-step  >> recordstop 

具体可参看:《Reverse Debugging with GDB》 --- http://sourceware.org/gdb/wiki/ReverseDebug


7.远程设备断开后,gdb client不能退出: Ctrl +C 退回到命令输入状态后, 输入 kill,然后再 q 即可


8.  solib-absolute-prefix 和solib-search-path的区别:solib-absolute-prefix设置的是被搜索文件路径的前缀,solib-search-path设置的是被搜索文件的路径;solib-search-path可以有多个路径,中间按用:隔开,solib-absolute-prefix的值只能有一个。


9. 执行函数: call <func>


10.退出当前循环体: until


11. 停止执行当前函数,并返回value给调用者: return


12. 打印堆栈帧: info frame


13.如何查看lib是否带debug info: readelf –S xxx.so |grep debug


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值