|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <!-- Copyright (C) 1988-2020 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." -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Starting and Stopping Trace Experiments (Debugging with GDB)</title>
-
- <meta name="description" content="Starting and Stopping Trace Experiments (Debugging with GDB)">
- <meta name="keywords" content="Starting and Stopping Trace Experiments (Debugging with GDB)">
- <meta name="resource-type" content="document">
- <meta name="distribution" content="global">
- <meta name="Generator" content="makeinfo">
- <link href="index.html#Top" rel="start" title="Top">
- <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
- <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
- <link href="Set-Tracepoints.html#Set-Tracepoints" rel="up" title="Set Tracepoints">
- <link href="Tracepoint-Restrictions.html#Tracepoint-Restrictions" rel="next" title="Tracepoint Restrictions">
- <link href="Listing-Static-Tracepoint-Markers.html#Listing-Static-Tracepoint-Markers" rel="prev" title="Listing Static Tracepoint Markers">
- <style type="text/css">
- <!--
- a.summary-letter {text-decoration: none}
- blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
- div.display {margin-left: 3.2em}
- div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
- kbd {font-style: oblique}
- pre.display {font-family: inherit}
- pre.format {font-family: inherit}
- pre.menu-comment {font-family: serif}
- pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
- span.nolinebreak {white-space: nowrap}
- span.roman {font-family: initial; font-weight: normal}
- span.sansserif {font-family: sans-serif; font-weight: normal}
- ul.no-bullet {list-style: none}
- -->
- </style>
-
-
- </head>
-
- <body lang="en">
- <a name="Starting-and-Stopping-Trace-Experiments"></a>
- <div class="header">
- <p>
- Next: <a href="Tracepoint-Restrictions.html#Tracepoint-Restrictions" accesskey="n" rel="next">Tracepoint Restrictions</a>, Previous: <a href="Listing-Static-Tracepoint-Markers.html#Listing-Static-Tracepoint-Markers" accesskey="p" rel="prev">Listing Static Tracepoint Markers</a>, Up: <a href="Set-Tracepoints.html#Set-Tracepoints" accesskey="u" rel="up">Set Tracepoints</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <hr>
- <a name="Starting-and-Stopping-Trace-Experiments-1"></a>
- <h4 class="subsection">13.1.9 Starting and Stopping Trace Experiments</h4>
-
- <dl compact="compact">
- <dd><a name="index-tstart-_005b-notes-_005d"></a>
- <a name="index-start-a-new-trace-experiment"></a>
- <a name="index-collected-data-discarded"></a>
- </dd>
- <dt><code>tstart</code></dt>
- <dd><p>This command starts the trace experiment, and begins collecting data.
- It has the side effect of discarding all the data collected in the
- trace buffer during the previous trace experiment. If any arguments
- are supplied, they are taken as a note and stored with the trace
- experiment’s state. The notes may be arbitrary text, and are
- especially useful with disconnected tracing in a multi-user context;
- the notes can explain what the trace is doing, supply user contact
- information, and so forth.
- </p>
- <a name="index-tstop-_005b-notes-_005d"></a>
- <a name="index-stop-a-running-trace-experiment"></a>
- </dd>
- <dt><code>tstop</code></dt>
- <dd><p>This command stops the trace experiment. If any arguments are
- supplied, they are recorded with the experiment as a note. This is
- useful if you are stopping a trace started by someone else, for
- instance if the trace is interfering with the system’s behavior and
- needs to be stopped quickly.
- </p>
- <p><strong>Note</strong>: a trace experiment and data collection may stop
- automatically if any tracepoint’s passcount is reached
- (see <a href="Tracepoint-Passcounts.html#Tracepoint-Passcounts">Tracepoint Passcounts</a>), or if the trace buffer becomes full.
- </p>
- <a name="index-tstatus"></a>
- <a name="index-status-of-trace-data-collection"></a>
- <a name="index-trace-experiment_002c-status-of"></a>
- </dd>
- <dt><code>tstatus</code></dt>
- <dd><p>This command displays the status of the current trace data
- collection.
- </p></dd>
- </dl>
-
- <p>Here is an example of the commands we described so far:
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) <b>trace gdb_c_test</b>
- (gdb) <b>actions</b>
- Enter actions for tracepoint #1, one per line.
- > collect $regs,$locals,$args
- > while-stepping 11
- > collect $regs
- > end
- > end
- (gdb) <b>tstart</b>
- [time passes …]
- (gdb) <b>tstop</b>
- </pre></div>
-
- <a name="disconnected-tracing"></a><a name="index-disconnected-tracing"></a>
- <p>You can choose to continue running the trace experiment even if
- <small>GDB</small> disconnects from the target, voluntarily or
- involuntarily. For commands such as <code>detach</code>, the debugger will
- ask what you want to do with the trace. But for unexpected
- terminations (<small>GDB</small> crash, network outage), it would be
- unfortunate to lose hard-won trace data, so the variable
- <code>disconnected-tracing</code> lets you decide whether the trace should
- continue running without <small>GDB</small>.
- </p>
- <dl compact="compact">
- <dt><code>set disconnected-tracing on</code></dt>
- <dt><code>set disconnected-tracing off</code></dt>
- <dd><a name="index-set-disconnected_002dtracing"></a>
- <p>Choose whether a tracing run should continue to run if <small>GDB</small>
- has disconnected from the target. Note that <code>detach</code> or
- <code>quit</code> will ask you directly what to do about a running trace no
- matter what this variable’s setting, so the variable is mainly useful
- for handling unexpected situations, such as loss of the network.
- </p>
- </dd>
- <dt><code>show disconnected-tracing</code></dt>
- <dd><a name="index-show-disconnected_002dtracing"></a>
- <p>Show the current choice for disconnected tracing.
- </p>
- </dd>
- </dl>
-
- <p>When you reconnect to the target, the trace experiment may or may not
- still be running; it might have filled the trace buffer in the
- meantime, or stopped for one of the other reasons. If it is running,
- it will continue after reconnection.
- </p>
- <p>Upon reconnection, the target will upload information about the
- tracepoints in effect. <small>GDB</small> will then compare that
- information to the set of tracepoints currently defined, and attempt
- to match them up, allowing for the possibility that the numbers may
- have changed due to creation and deletion in the meantime. If one of
- the target’s tracepoints does not match any in <small>GDB</small>, the
- debugger will create a new tracepoint, so that you have a number with
- which to specify that tracepoint. This matching-up process is
- necessarily heuristic, and it may result in useless tracepoints being
- created; you may simply delete them if they are of no use.
- </p>
- <a name="index-circular-trace-buffer"></a>
- <p>If your target agent supports a <em>circular trace buffer</em>, then you
- can run a trace experiment indefinitely without filling the trace
- buffer; when space runs out, the agent deletes already-collected trace
- frames, oldest first, until there is enough room to continue
- collecting. This is especially useful if your tracepoints are being
- hit too often, and your trace gets terminated prematurely because the
- buffer is full. To ask for a circular trace buffer, simply set
- ‘<samp>circular-trace-buffer</samp>’ to on. You can set this at any time,
- including during tracing; if the agent can do it, it will change
- buffer handling on the fly, otherwise it will not take effect until
- the next run.
- </p>
- <dl compact="compact">
- <dt><code>set circular-trace-buffer on</code></dt>
- <dt><code>set circular-trace-buffer off</code></dt>
- <dd><a name="index-set-circular_002dtrace_002dbuffer"></a>
- <p>Choose whether a tracing run should use a linear or circular buffer
- for trace data. A linear buffer will not lose any trace data, but may
- fill up prematurely, while a circular buffer will discard old trace
- data, but it will have always room for the latest tracepoint hits.
- </p>
- </dd>
- <dt><code>show circular-trace-buffer</code></dt>
- <dd><a name="index-show-circular_002dtrace_002dbuffer"></a>
- <p>Show the current choice for the trace buffer. Note that this may not
- match the agent’s current buffer handling, nor is it guaranteed to
- match the setting that might have been in effect during a past run,
- for instance if you are looking at frames from a trace file.
- </p>
- </dd>
- </dl>
-
- <dl compact="compact">
- <dt><code>set trace-buffer-size <var>n</var></code></dt>
- <dt><code>set trace-buffer-size unlimited</code></dt>
- <dd><a name="index-set-trace_002dbuffer_002dsize"></a>
- <p>Request that the target use a trace buffer of <var>n</var> bytes. Not all
- targets will honor the request; they may have a compiled-in size for
- the trace buffer, or some other limitation. Set to a value of
- <code>unlimited</code> or <code>-1</code> to let the target use whatever size it
- likes. This is also the default.
- </p>
- </dd>
- <dt><code>show trace-buffer-size</code></dt>
- <dd><a name="index-show-trace_002dbuffer_002dsize"></a>
- <p>Show the current requested size for the trace buffer. Note that this
- will only match the actual size if the target supports size-setting,
- and was able to handle the requested size. For instance, if the
- target can only change buffer size between runs, this variable will
- not reflect the change until the next run starts. Use <code>tstatus</code>
- to get a report of the actual buffer size.
- </p></dd>
- </dl>
-
- <dl compact="compact">
- <dt><code>set trace-user <var>text</var></code></dt>
- <dd><a name="index-set-trace_002duser"></a>
-
- </dd>
- <dt><code>show trace-user</code></dt>
- <dd><a name="index-show-trace_002duser"></a>
-
- </dd>
- <dt><code>set trace-notes <var>text</var></code></dt>
- <dd><a name="index-set-trace_002dnotes"></a>
- <p>Set the trace run’s notes.
- </p>
- </dd>
- <dt><code>show trace-notes</code></dt>
- <dd><a name="index-show-trace_002dnotes"></a>
- <p>Show the trace run’s notes.
- </p>
- </dd>
- <dt><code>set trace-stop-notes <var>text</var></code></dt>
- <dd><a name="index-set-trace_002dstop_002dnotes"></a>
- <p>Set the trace run’s stop notes. The handling of the note is as for
- <code>tstop</code> arguments; the set command is convenient way to fix a
- stop note that is mistaken or incomplete.
- </p>
- </dd>
- <dt><code>show trace-stop-notes</code></dt>
- <dd><a name="index-show-trace_002dstop_002dnotes"></a>
- <p>Show the trace run’s stop notes.
- </p>
- </dd>
- </dl>
-
- <hr>
- <div class="header">
- <p>
- Next: <a href="Tracepoint-Restrictions.html#Tracepoint-Restrictions" accesskey="n" rel="next">Tracepoint Restrictions</a>, Previous: <a href="Listing-Static-Tracepoint-Markers.html#Listing-Static-Tracepoint-Markers" accesskey="p" rel="prev">Listing Static Tracepoint Markers</a>, Up: <a href="Set-Tracepoints.html#Set-Tracepoints" accesskey="u" rel="up">Set Tracepoints</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
- </div>
-
-
-
- </body>
- </html>
|