微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

防止远程gdbserver总是进入功能

如何解决防止远程gdbserver总是进入功能

我还没有确切地找出导致这种情况的原因,但是有时我会使用gdbserver在远程系统上调试二进制文件,而GDB会拒绝逐步执行函数调用。通常,目标系统是ARM或ARM64。在这些情况下,我已经专门使用了GDB的next命令,而不是step。在其他二进制文件上(可能是在本地调试或在不同体系结构上调试时),则不会出现此问题,我可以照常执行功能

以该示例为例:

     0x4001a4                  cbz    x0,0x4002b8
 →   0x4001a8                  bl     0x4036b0
   ↳    0x4036b0                  ldrb   w1,[x0]  
        0x4036b4                  cmp    w1,#0x20
        0x4036b8                  sub    w2,w1,#0x9

GDB不再步进到0x4001ac,而是步进到0x4036b0。 GEF甚至显示下一条指令将在被调用函数之内。

作为一种解决方法,我编写了这个简单的GDB脚本,将预期的行为绑定到nn

define nn
    tb *($pc+4)
    c
end

使用next / nexti时,如何像往常一样配置GDB以跳过该功能?我知道有一个skip功能,但是我觉得我不必为我认为应该为认/正确行为的内容手动执行变通方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。