我可以使用gdb跳过一行而不必键入行号吗?

我可以使用gdb跳过一行而不必键入行号吗?,gdb,Gdb,我知道我可以使用jump将程序计数器设置为特定行,这样我就可以跳过一行或多行(或再次执行某些行)。我可以轻松跳过下一行而不必输入行号吗 在运行时“注释掉”某些内容将非常方便 jump +1 跳到下一行,即跳过当前行。您可能还希望将其与tbreak+1结合使用,以便在跳转目标处设置临时断点 有关使用gdb表示位置的更多方法,请参见 请注意,如果没有断点,gdb可能会正常继续执行,而不是跳转。因此,如果跳转似乎不起作用,请确保在目标位置设置断点。要在执行过程中跳过任意数量的行,请执行以下操作: [

我知道我可以使用
jump
将程序计数器设置为特定行,这样我就可以跳过一行或多行(或再次执行某些行)。我可以轻松跳过下一行而不必输入行号吗

在运行时“注释掉”某些内容将非常方便

jump +1
跳到下一行,即跳过当前行。您可能还希望将其与
tbreak+1
结合使用,以便在跳转目标处设置临时断点

有关使用gdb表示位置的更多方法,请参见


请注意,如果没有断点,
gdb
可能会正常继续执行,而不是跳转。因此,如果跳转似乎不起作用,请确保在目标位置设置断点。

要在执行过程中跳过任意数量的行,请执行以下操作:

[Current Position -- in GDB] Line N
.......... // Lines To Skip
..........
..........
[Line To Execute - After Jumping] Line M
在M行上放置断点:

gdb$b M
跳转到M行:

gdb$jump M

我的
.gdbinit
配置文件中有以下内容:

define skip
    tbreak +1
    jump +1
end

所以只要在gdb中键入
skip
就可以跳过一行。

很明显,但谢谢!在Xcode中使用带调试器命令的断点非常有效。应该注意的是,这在LLDB中也很有效。:)如果您直接在asm中工作,可以通过发出
j addr
来跳转到所需的指令,其中
addr
是您要跳转到的地址。请注意,如果您使用
-O0
编译,这只会作为源代码级跳过。任何优化都会使跳转变得不安全。如何将其参数化为“跳过(N)”?@p2rkw。您可以将“1”替换为$arg0,如下所述:。请注意,我不会再使用“skip”这个名称,因为它变成了GDB函数(允许在单步执行代码时跳过源文件)。@Trass3r True。我在上面的评论中提到了这一点。相关:关于使用
jump
(例如,只有在使用
-O0
编译时,它才在当前函数中是安全的):