如何解决防止远程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 举报,一经查实,本站将立刻删除。