16.2. Continuing at a different address
Ordinarily, when you continue your program, you do so at the place where
it stopped, with the continue command. You can instead continue at
an address of your own choosing, with the following commands:
- jump linespec
Resume execution at line linespec. Execution stops again
immediately if there is a breakpoint there.
Refer to Section 9.1 Printing source lines, for a description of the different forms of
linespec. It is common practice to use the tbreak command
in conjunction with jump.
Refer to Section 7.1.1 Setting breakpoints.
The jump command does not change the current stack frame, or
the stack pointer, or the contents of any memory location or any
register other than the program counter. If line linespec is in
a different function from the one currently executing, the results may
be bizarre if the two functions expect different patterns of arguments or
of local variables. For this reason, the jump command requests
confirmation if the specified line is not in the function currently
executing. However, even bizarre results are predictable if you are
well acquainted with the machine-language code of your program.
- jump *address
Resume execution at the instruction at address address.
On many systems, you can get much the same effect as the jump
command by storing a new value into the register $pc. The
difference is that this does not start your program running; it only
changes the address of where it will run when you continue. For
example,
makes the next continue command or stepping command execute at
address 0x485, rather than at the address where your program stopped. Refer to Section 7.2 Continuing and stepping.
The most common occasion to use the jump command is to back
up--perhaps with more breakpoints set--over a portion of a program
that has already executed, in order to examine its execution in more
detail.