blob: 7156720964850d702aec61b61e811915fdf0a277 [file] [log] [blame]
<html lang="en">
<head>
<title>Jumping - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Altering.html#Altering" title="Altering">
<link rel="prev" href="Assignment.html#Assignment" title="Assignment">
<link rel="next" href="Signaling.html#Signaling" title="Signaling">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software'' and ``Free Software Needs
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.
(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
this GNU Manual. Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Jumping"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Signaling.html#Signaling">Signaling</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Assignment.html#Assignment">Assignment</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Altering.html#Altering">Altering</a>
<hr>
</div>
<h3 class="section">17.2 Continuing at a Different Address</h3>
<p>Ordinarily, when you continue your program, you do so at the place where
it stopped, with the <code>continue</code> command. You can instead continue at
an address of your own choosing, with the following commands:
<a name="index-jump-928"></a>
<dl><dt><code>jump </code><var>linespec</var><dt><code>jump </code><var>location</var><dd>Resume execution at line <var>linespec</var> or at address given by
<var>location</var>. Execution stops again immediately if there is a
breakpoint there. See <a href="Specify-Location.html#Specify-Location">Specify Location</a>, for a description of the
different forms of <var>linespec</var> and <var>location</var>. It is common
practice to use the <code>tbreak</code> command in conjunction with
<code>jump</code>. See <a href="Set-Breaks.html#Set-Breaks">Setting Breakpoints</a>.
<p>The <code>jump</code> 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 <var>linespec</var> 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 <code>jump</code> 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.
</dl>
<!-- Doesn't work on HP-UX; have to set $pcoqh and $pcoqt. -->
<p>On many systems, you can get much the same effect as the <code>jump</code>
command by storing a new value into the register <code>$pc</code>. The
difference is that this does not start your program running; it only
changes the address of where it <em>will</em> run when you continue. For
example,
<pre class="smallexample"> set $pc = 0x485
</pre>
<p class="noindent">makes the next <code>continue</code> command or stepping command execute at
address <code>0x485</code>, rather than at the address where your program stopped.
See <a href="Continuing-and-Stepping.html#Continuing-and-Stepping">Continuing and Stepping</a>.
<p>The most common occasion to use the <code>jump</code> command is to back
up&mdash;perhaps with more breakpoints set&mdash;over a portion of a program
that has already executed, in order to examine its execution in more
detail.
<!-- @group -->
</body></html>