Debugging 跳转到不执行当前指令的下一条指令

Debugging 跳转到不执行当前指令的下一条指令,debugging,assembly,x86,gdb,Debugging,Assembly,X86,Gdb,假设我们正在gdb中调试以下汇编代码: ... mov eax, 0x0f mov edx, 0xf0 test eax, edx >> jz label2 add eax, 0xf0 ... label2: ... 在这种情况下,如果执行si,指令jz label2将使程序跳转到label2。现在假设我不想让它跳转,我能想到的唯一方法是在指令地址处放置一个临时断点addeax,0xf0,然后手动跳转到它。或者重置eflags,使Z为0 还

假设我们正在gdb中调试以下汇编代码:

...

    mov eax, 0x0f
    mov edx, 0xf0
    test eax, edx
 >> jz label2
    add eax, 0xf0

...

label2:

...
在这种情况下,如果执行
si
,指令
jz label2
将使程序跳转到
label2
。现在假设我不想让它跳转,我能想到的唯一方法是在指令地址处放置一个临时断点
addeax,0xf0
,然后手动跳转到它。或者重置eflags,使Z为0


还有其他更简单的方法吗?跳跃继续执行,每次我想跳跃时,我都要进行一次tbreak,所以。。。这不是你的密码?因为最简单的方法就是按照你想要的方式写。但是,如果您正在调试一个没有生成的可执行文件,那么我认为另一种方法是使用
nop
s来遍历
jzlabel2
指令。我不确定在gdb中是如何做到的,但我假设如果VS可以做到(在代码地址打开一个内存窗口,并用0x90s重载每个字节),gdb可以做到。@DavidWohlferd:好的建议:为每个可能的方法添加了重复项。那么,您是否将其标记为我建议的方法的重复项?