498 lines
19 KiB
HTML
498 lines
19 KiB
HTML
|
<html lang="en">
|
||
|
<head>
|
||
|
<title>GDB/MI Program Execution - 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="GDB_002fMI.html#GDB_002fMI" title="GDB/MI">
|
||
|
<link rel="prev" href="GDB_002fMI-Ada-Tasking-Commands.html#GDB_002fMI-Ada-Tasking-Commands" title="GDB/MI Ada Tasking Commands">
|
||
|
<link rel="next" href="GDB_002fMI-Stack-Manipulation.html#GDB_002fMI-Stack-Manipulation" title="GDB/MI Stack Manipulation">
|
||
|
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
|
||
|
<!--
|
||
|
Copyright (C) 1988-2019 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>
|
||
|
</head>
|
||
|
<body>
|
||
|
<div class="node">
|
||
|
<a name="GDB%2fMI-Program-Execution"></a>
|
||
|
<a name="GDB_002fMI-Program-Execution"></a>
|
||
|
<p>
|
||
|
Next: <a rel="next" accesskey="n" href="GDB_002fMI-Stack-Manipulation.html#GDB_002fMI-Stack-Manipulation">GDB/MI Stack Manipulation</a>,
|
||
|
Previous: <a rel="previous" accesskey="p" href="GDB_002fMI-Ada-Tasking-Commands.html#GDB_002fMI-Ada-Tasking-Commands">GDB/MI Ada Tasking Commands</a>,
|
||
|
Up: <a rel="up" accesskey="u" href="GDB_002fMI.html#GDB_002fMI">GDB/MI</a>
|
||
|
<hr>
|
||
|
</div>
|
||
|
|
||
|
<h3 class="section">27.13 <span class="sc">gdb/mi</span> Program Execution</h3>
|
||
|
|
||
|
<p>These are the asynchronous commands which generate the out-of-band
|
||
|
record ‘<samp><span class="samp">*stopped</span></samp>’. Currently <span class="sc">gdb</span> only really executes
|
||
|
asynchronously with remote targets and this interaction is mimicked in
|
||
|
other cases.
|
||
|
|
||
|
<h4 class="subheading">The <code>-exec-continue</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002dcontinue-3008"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-continue [--reverse] [--all|--thread-group N]
|
||
|
</pre>
|
||
|
<p>Resumes the execution of the inferior program, which will continue
|
||
|
to execute until it reaches a debugger stop event. If the
|
||
|
‘<samp><span class="samp">--reverse</span></samp>’ option is specified, execution resumes in reverse until
|
||
|
it reaches a stop event. Stop events may include
|
||
|
<ul>
|
||
|
<li>breakpoints or watchpoints
|
||
|
<li>signals or exceptions
|
||
|
<li>the end of the process (or its beginning under ‘<samp><span class="samp">--reverse</span></samp>’)
|
||
|
<li>the end or beginning of a replay log if one is being used.
|
||
|
</ul>
|
||
|
In all-stop mode (see <a href="All_002dStop-Mode.html#All_002dStop-Mode">All-Stop Mode</a>), may resume only one thread, or all threads, depending on the
|
||
|
value of the ‘<samp><span class="samp">scheduler-locking</span></samp>’ variable. If ‘<samp><span class="samp">--all</span></samp>’ is
|
||
|
specified, all threads (in all inferiors) will be resumed. The ‘<samp><span class="samp">--all</span></samp>’ option is
|
||
|
ignored in all-stop mode. If the ‘<samp><span class="samp">--thread-group</span></samp>’ options is
|
||
|
specified, then all threads in that thread group are resumed.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> corresponding is ‘<samp><span class="samp">continue</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-continue
|
||
|
^running
|
||
|
(gdb)
|
||
|
@Hello world
|
||
|
*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame={
|
||
|
func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
|
||
|
line="13",arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-finish</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002dfinish-3009"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-finish [--reverse]
|
||
|
</pre>
|
||
|
<p>Resumes the execution of the inferior program until the current
|
||
|
function is exited. Displays the results returned by the function.
|
||
|
If the ‘<samp><span class="samp">--reverse</span></samp>’ option is specified, resumes the reverse
|
||
|
execution of the inferior program until the point where current
|
||
|
function was called.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">finish</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<p>Function returning <code>void</code>.
|
||
|
|
||
|
<pre class="smallexample"> -exec-finish
|
||
|
^running
|
||
|
(gdb)
|
||
|
@hello from foo
|
||
|
*stopped,reason="function-finished",frame={func="main",args=[],
|
||
|
file="hello.c",fullname="/home/foo/bar/hello.c",line="7",arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<p>Function returning other than <code>void</code>. The name of the internal
|
||
|
<span class="sc">gdb</span> variable storing the result is printed, together with the
|
||
|
value itself.
|
||
|
|
||
|
<pre class="smallexample"> -exec-finish
|
||
|
^running
|
||
|
(gdb)
|
||
|
*stopped,reason="function-finished",frame={addr="0x000107b0",func="foo",
|
||
|
args=[{name="a",value="1"],{name="b",value="9"}},
|
||
|
file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14",
|
||
|
arch="i386:x86_64"},
|
||
|
gdb-result-var="$1",return-value="0"
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-interrupt</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002dinterrupt-3010"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-interrupt [--all|--thread-group N]
|
||
|
</pre>
|
||
|
<p>Interrupts the background execution of the target. Note how the token
|
||
|
associated with the stop message is the one for the execution command
|
||
|
that has been interrupted. The token for the interrupt itself only
|
||
|
appears in the ‘<samp><span class="samp">^done</span></samp>’ output. If the user is trying to
|
||
|
interrupt a non-running program, an error message will be printed.
|
||
|
|
||
|
<p>Note that when asynchronous execution is enabled, this command is
|
||
|
asynchronous just like other execution commands. That is, first the
|
||
|
‘<samp><span class="samp">^done</span></samp>’ response will be printed, and the target stop will be
|
||
|
reported after that using the ‘<samp><span class="samp">*stopped</span></samp>’ notification.
|
||
|
|
||
|
<p>In non-stop mode, only the context thread is interrupted by default.
|
||
|
All threads (in all inferiors) will be interrupted if the
|
||
|
‘<samp><span class="samp">--all</span></samp>’ option is specified. If the ‘<samp><span class="samp">--thread-group</span></samp>’
|
||
|
option is specified, all threads in that group will be interrupted.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">interrupt</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
111-exec-continue
|
||
|
111^running
|
||
|
|
||
|
(gdb)
|
||
|
222-exec-interrupt
|
||
|
222^done
|
||
|
(gdb)
|
||
|
111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
|
||
|
frame={addr="0x00010140",func="foo",args=[],file="try.c",
|
||
|
fullname="/home/foo/bar/try.c",line="13",arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
|
||
|
(gdb)
|
||
|
-exec-interrupt
|
||
|
^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-jump</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002djump-3011"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-jump <var>location</var>
|
||
|
</pre>
|
||
|
<p>Resumes execution of the inferior program at the location specified by
|
||
|
parameter. See <a href="Specify-Location.html#Specify-Location">Specify Location</a>, for a description of the
|
||
|
different forms of <var>location</var>.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">jump</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-jump foo.c:10
|
||
|
*running,thread-id="all"
|
||
|
^running
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-next</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002dnext-3012"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-next [--reverse]
|
||
|
</pre>
|
||
|
<p>Resumes execution of the inferior program, stopping when the beginning
|
||
|
of the next source line is reached.
|
||
|
|
||
|
<p>If the ‘<samp><span class="samp">--reverse</span></samp>’ option is specified, resumes reverse execution
|
||
|
of the inferior program, stopping at the beginning of the previous
|
||
|
source line. If you issue this command on the first line of a
|
||
|
function, it will take you back to the caller of that function, to the
|
||
|
source line where the function was called.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">next</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-next
|
||
|
^running
|
||
|
(gdb)
|
||
|
*stopped,reason="end-stepping-range",line="8",file="hello.c"
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-next-instruction</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002dnext_002dinstruction-3013"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-next-instruction [--reverse]
|
||
|
</pre>
|
||
|
<p>Executes one machine instruction. If the instruction is a function
|
||
|
call, continues until the function returns. If the program stops at an
|
||
|
instruction in the middle of a source line, the address will be
|
||
|
printed as well.
|
||
|
|
||
|
<p>If the ‘<samp><span class="samp">--reverse</span></samp>’ option is specified, resumes reverse execution
|
||
|
of the inferior program, stopping at the previous instruction. If the
|
||
|
previously executed instruction was a return from another function,
|
||
|
it will continue to execute in reverse until the call to that function
|
||
|
(from the current stack frame) is reached.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">nexti</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
-exec-next-instruction
|
||
|
^running
|
||
|
|
||
|
(gdb)
|
||
|
*stopped,reason="end-stepping-range",
|
||
|
addr="0x000100d4",line="5",file="hello.c"
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-return</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002dreturn-3014"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-return
|
||
|
</pre>
|
||
|
<p>Makes current function return immediately. Doesn't execute the inferior.
|
||
|
Displays the new current frame.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">return</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
200-break-insert callee4
|
||
|
200^done,bkpt={number="1",addr="0x00010734",
|
||
|
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"}
|
||
|
(gdb)
|
||
|
000-exec-run
|
||
|
000^running
|
||
|
(gdb)
|
||
|
000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
|
||
|
frame={func="callee4",args=[],
|
||
|
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
|
||
|
fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
|
||
|
arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
205-break-delete
|
||
|
205^done
|
||
|
(gdb)
|
||
|
111-exec-return
|
||
|
111^done,frame={level="0",func="callee3",
|
||
|
args=[{name="strarg",
|
||
|
value="0x11940 \"A string argument.\""}],
|
||
|
file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
|
||
|
fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18",
|
||
|
arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-run</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002drun-3015"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-run [ --all | --thread-group N ] [ --start ]
|
||
|
</pre>
|
||
|
<p>Starts execution of the inferior from the beginning. The inferior
|
||
|
executes until either a breakpoint is encountered or the program
|
||
|
exits. In the latter case the output will include an exit code, if
|
||
|
the program has exited exceptionally.
|
||
|
|
||
|
<p>When neither the ‘<samp><span class="samp">--all</span></samp>’ nor the ‘<samp><span class="samp">--thread-group</span></samp>’ option
|
||
|
is specified, the current inferior is started. If the
|
||
|
‘<samp><span class="samp">--thread-group</span></samp>’ option is specified, it should refer to a thread
|
||
|
group of type ‘<samp><span class="samp">process</span></samp>’, and that thread group will be started.
|
||
|
If the ‘<samp><span class="samp">--all</span></samp>’ option is specified, then all inferiors will be started.
|
||
|
|
||
|
<p>Using the ‘<samp><span class="samp">--start</span></samp>’ option instructs the debugger to stop
|
||
|
the execution at the start of the inferior's main subprogram,
|
||
|
following the same behavior as the <code>start</code> command
|
||
|
(see <a href="Starting.html#Starting">Starting</a>).
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">run</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Examples</h5>
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
-break-insert main
|
||
|
^done,bkpt={number="1",addr="0x0001072c",file="recursive2.c",line="4"}
|
||
|
(gdb)
|
||
|
-exec-run
|
||
|
^running
|
||
|
(gdb)
|
||
|
*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
|
||
|
frame={func="main",args=[],file="recursive2.c",
|
||
|
fullname="/home/foo/bar/recursive2.c",line="4",arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<p class="noindent">Program exited normally:
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
-exec-run
|
||
|
^running
|
||
|
(gdb)
|
||
|
x = 55
|
||
|
*stopped,reason="exited-normally"
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<p class="noindent">Program exited exceptionally:
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
-exec-run
|
||
|
^running
|
||
|
(gdb)
|
||
|
x = 55
|
||
|
*stopped,reason="exited",exit-code="01"
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<p>Another way the program can terminate is if it receives a signal such as
|
||
|
<code>SIGINT</code>. In this case, <span class="sc">gdb/mi</span> displays this:
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
*stopped,reason="exited-signalled",signal-name="SIGINT",
|
||
|
signal-meaning="Interrupt"
|
||
|
</pre>
|
||
|
<!-- @subheading -exec-signal -->
|
||
|
<h4 class="subheading">The <code>-exec-step</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002dstep-3016"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-step [--reverse]
|
||
|
</pre>
|
||
|
<p>Resumes execution of the inferior program, stopping when the beginning
|
||
|
of the next source line is reached, if the next source line is not a
|
||
|
function call. If it is, stop at the first instruction of the called
|
||
|
function. If the ‘<samp><span class="samp">--reverse</span></samp>’ option is specified, resumes reverse
|
||
|
execution of the inferior program, stopping at the beginning of the
|
||
|
previously executed source line.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">step</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<p>Stepping into a function:
|
||
|
|
||
|
<pre class="smallexample"> -exec-step
|
||
|
^running
|
||
|
(gdb)
|
||
|
*stopped,reason="end-stepping-range",
|
||
|
frame={func="foo",args=[{name="a",value="10"},
|
||
|
{name="b",value="0"}],file="recursive2.c",
|
||
|
fullname="/home/foo/bar/recursive2.c",line="11",arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<p>Regular stepping:
|
||
|
|
||
|
<pre class="smallexample"> -exec-step
|
||
|
^running
|
||
|
(gdb)
|
||
|
*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-step-instruction</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002dstep_002dinstruction-3017"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-step-instruction [--reverse]
|
||
|
</pre>
|
||
|
<p>Resumes the inferior which executes one machine instruction. If the
|
||
|
‘<samp><span class="samp">--reverse</span></samp>’ option is specified, resumes reverse execution of the
|
||
|
inferior program, stopping at the previously executed instruction.
|
||
|
The output, once <span class="sc">gdb</span> has stopped, will vary depending on
|
||
|
whether we have stopped in the middle of a source line or not. In the
|
||
|
former case, the address at which the program stopped will be printed
|
||
|
as well.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">stepi</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
-exec-step-instruction
|
||
|
^running
|
||
|
|
||
|
(gdb)
|
||
|
*stopped,reason="end-stepping-range",
|
||
|
frame={func="foo",args=[],file="try.c",
|
||
|
fullname="/home/foo/bar/try.c",line="10",arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
-exec-step-instruction
|
||
|
^running
|
||
|
|
||
|
(gdb)
|
||
|
*stopped,reason="end-stepping-range",
|
||
|
frame={addr="0x000100f4",func="foo",args=[],file="try.c",
|
||
|
fullname="/home/foo/bar/try.c",line="10",arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<h4 class="subheading">The <code>-exec-until</code> Command</h4>
|
||
|
|
||
|
<p><a name="index-g_t_002dexec_002duntil-3018"></a>
|
||
|
|
||
|
<h5 class="subsubheading">Synopsis</h5>
|
||
|
|
||
|
<pre class="smallexample"> -exec-until [ <var>location</var> ]
|
||
|
</pre>
|
||
|
<p>Executes the inferior until the <var>location</var> specified in the
|
||
|
argument is reached. If there is no argument, the inferior executes
|
||
|
until a source line greater than the current one is reached. The
|
||
|
reason for stopping in this case will be ‘<samp><span class="samp">location-reached</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading"><span class="sc">gdb</span> Command</h5>
|
||
|
|
||
|
<p>The corresponding <span class="sc">gdb</span> command is ‘<samp><span class="samp">until</span></samp>’.
|
||
|
|
||
|
<h5 class="subsubheading">Example</h5>
|
||
|
|
||
|
<pre class="smallexample"> (gdb)
|
||
|
-exec-until recursive2.c:6
|
||
|
^running
|
||
|
(gdb)
|
||
|
x = 55
|
||
|
*stopped,reason="location-reached",frame={func="main",args=[],
|
||
|
file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6",
|
||
|
arch="i386:x86_64"}
|
||
|
(gdb)
|
||
|
</pre>
|
||
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
||
|
</body></html>
|
||
|
|