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

Ort*_*ntz 58 gdb

我知道我可以jump用来将程序计数器设置为一个特定的行,所以我可以跳过一行或多行(或再次执行一些行).我可以轻松地跳过下一行而无需输入行号吗?

在运行时"注释掉"某些内容非常方便.

laa*_*lto 70

jump +1
Run Code Online (Sandbox Code Playgroud)

跳转到下一行,即跳过当前行.您可能还希望将其与tbreak +1跳转目标设置临时断点进行组合.

有关使用gdb表达位置的更多方法,请参阅http://sourceware.org/gdb/current/onlinedocs/gdb/Specify-Location.html.

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

  • 应该指出的是,这也适用于 LLDB。:) (2认同)

gos*_*pes 18

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

define skip
    tbreak +1
    jump +1
end
Run Code Online (Sandbox Code Playgroud)

所以只需输入skipgdb就可以跳过一行.

  • @ p2rkw.你可以用$ arg0替换'1',如下所述:https://sourceware.org/gdb/onlinedocs/gdb/Define.html.请注意,我不会再使用名称'skip',因为它变成了GDB函数(允许在单步执行代码时跳过源文件). (3认同)

San*_*ngh 5

在执行期间跳过任意数量的行:

[Current Position -- in GDB] Line N
.......... // Lines To Skip
..........
..........
[Line To Execute - After Jumping] Line M
Run Code Online (Sandbox Code Playgroud)

在M行放置一个断点:

gdb$b M
Run Code Online (Sandbox Code Playgroud)

跳转到M行:

gdb$jump M
Run Code Online (Sandbox Code Playgroud)