Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 防止远程gdbserver始终单步执行功能_Debugging_Gdb_Remote Debugging_Gdbserver - Fatal编程技术网

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
功能,但我觉得我不应该手动执行我认为应该是默认/正确行为的变通方法