gdb使用技巧

其它还可参考资料: 显示gdb版本信息 | 100个gdb小技巧

gdb使用技巧:

  • 设置输入出不分页:

set pagination off   或者 set height 0

  • 查看so的地址:

info sharedLibrary lib_ssmp

  • 加载调试符号  

add-symbol-flie  /usr/lib/lib_test.dbg  0x0000007f19da1400     // 其中0x0000007f19da1400是对应so的起始内存地址

  • gdb 启动可执行文件

./gdb   filename

  • 带参数启动程序

./gdb --args  test.bin  ./todir   或者 ./gdb test.bin然后set args    ./todir

  1. 对文件某一行打断点  b   test.c:100
  • 对调用栈上一层的函数打断点:

先bt 查看调用栈, 再用 b 0x004461ec 基于地址打断点

  • 条件断点

b func if  $r0>5            // if不用打括号

  • 对某个现成的某个函数打断点

b   func  thread  31

  • 删除一个断点

d 6

  • 删除全部断点

d

  • 用call调用c++中不同类或者命令空间中的同名函数

先 b  func 断住所有函数, 在用info b查看每个断点的信息,可以看到每个具体函数的地址,再使用函数地址来打断点b   0xb35c8a2c ,再删除多余的断点

  • 对所有线程都执行命令: 

thread apply all  加命令,如查看当前进程所有任务调用栈:thread apply all bt

  • 断住后查看所有寄存器的值

info registers  简写 i   r

  • 断住后查看函数的入参

i r参看寄存器,$r0是第一个参数,注意C++类函数的第一个参数是this指针

  • 查询全局变量的值

p  g_var

  • 查看所有全局变量和当前局部变量的值

info variables

  • 查看内存,用二进制打印某个地址的内容

x  &g_var  打印4字节
x/wx  &g_var  打印4字节
x/4wx  addr   打印 4 * 4 字节
x/16wx  addr  打印16 * 4字节

  • 断点断住后,查看调用了路径上面每个函数的入参:

用 f 3 切换到某一层调用, i r查看寄存器,r0是第一个参数,对于c++的类成员函数,r0是this指针

断住后,查看函数执行完成后出参的值
i r查看出参的地址,finish完成函数执行,p *0x8ecd4a3c 打印出参的值


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值