67
votes

I know I can use jump to set the program counter to a specific line and so I can skip one or more lines (or execute some lines again). Can I easily just skip the next line without having to enter line numbers?

This would be very convenient to "comment out" something at run time.

3
Related: more general stuff about using jump (e.g. that it's only safe inside the current function, and only if you compiled with -O0): stackoverflow.com/questions/4116632/…Peter Cordes

3 Answers

81
votes
jump +1

jumps to the next line line i.e. skipping the current line. You may also want to combine it with tbreak +1 to set a temporary breakpoint at the jump target.

See http://sourceware.org/gdb/current/onlinedocs/gdb/Specify-Location.html for more ways of expressing locations with gdb.

Note that without a breakpoint gdb is likely to continue execution normally instead of jumping. So if jumping doesn't seem to work, make sure you set a breakpoint at the destination.

26
votes

I have the following in my .gdbinit config file:

define skip
    tbreak +1
    jump +1
end

So just type skip in gdb to skip a line.

5
votes

To Skip Any Numbers of Lines during Execution:

[Current Position -- in GDB] Line N
.......... // Lines To Skip
..........
..........
[Line To Execute - After Jumping] Line M

Put a Breakpoint on Line M:

gdb$b M

Jump To Line M:

gdb$jump M