17.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:
- Resume execution at line linespec or at address given by
location. Execution stops again immediately if there is a
breakpoint there. See Specify Location, for a description of the
different forms of linespec and location. It is common
practice to use the
tbreakcommand in conjunction with
jump. See Setting Breakpoints.
jumpcommand 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
jumpcommand 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.
On many systems, you can get much the same effect as the
command by storing a new value into the register
difference is that this does not start your program running; it only
changes the address of where it will run when you continue. For
set $pc = 0x485
makes the next
continue command or stepping command execute at
0x485, rather than at the address where your program stopped.
See 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