Debugging 防止远程gdbserver始终单步执行功能

Debugging 防止远程gdbserver始终单步执行功能,debugging,gdb,remote-debugging,gdbserver,Debugging,Gdb,Remote Debugging,Gdbserver,我还没有详细说明是什么情况导致了这种情况,但有时我正在使用gdbserver在远程系统上调试二进制文件,而GDB将拒绝跳过函数调用。通常,目标系统是ARM或ARM64。在这些情况下,我已经专门使用GDB的next命令,而不是step。在其他二进制文件上(可能是在本地调试时,或者在不同的体系结构上),这个问题不会发生,我可以像往常一样跳过函数 以以下示例为例: 0x4001a4 cbz x0, 0x4002b8 → 0x4001a8

我还没有详细说明是什么情况导致了这种情况,但有时我正在使用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
功能,但我觉得我不应该手动执行我认为应该是默认/正确行为的变通方法