blob: e193b289af216339a6fe670df59316fc4299333c [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2015 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 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: GDB/MI Thread Commands</title>
<meta name="description" content="Debugging with GDB: GDB/MI Thread Commands">
<meta name="keywords" content="Debugging with GDB: GDB/MI Thread Commands">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<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="GDB_002fMI.html#GDB_002fMI" rel="up" title="GDB/MI">
<link href="GDB_002fMI-Ada-Tasking-Commands.html#GDB_002fMI-Ada-Tasking-Commands" rel="next" title="GDB/MI Ada Tasking Commands">
<link href="GDB_002fMI-Program-Context.html#GDB_002fMI-Program-Context" rel="prev" title="GDB/MI Program Context">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
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.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="GDB_002fMI-Thread-Commands"></a>
<div class="header">
<p>
Next: <a href="GDB_002fMI-Ada-Tasking-Commands.html#GDB_002fMI-Ada-Tasking-Commands" accesskey="n" rel="next">GDB/MI Ada Tasking Commands</a>, Previous: <a href="GDB_002fMI-Program-Context.html#GDB_002fMI-Program-Context" accesskey="p" rel="prev">GDB/MI Program Context</a>, Up: <a href="GDB_002fMI.html#GDB_002fMI" accesskey="u" rel="up">GDB/MI</a> &nbsp; [<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="GDB_002fMI-Thread-Commands-1"></a>
<h3 class="section">27.11 <small>GDB/MI</small> Thread Commands</h3>
<a name="The-_002dthread_002dinfo-Command"></a>
<h4 class="subheading">The <code>-thread-info</code> Command</h4>
<a name="index-_002dthread_002dinfo"></a>
<a name="Synopsis-22"></a>
<h4 class="subsubheading">Synopsis</h4>
<div class="smallexample">
<pre class="smallexample"> -thread-info [ <var>thread-id</var> ]
</pre></div>
<p>Reports information about either a specific thread, if
the <var>thread-id</var> parameter is present, or about all
threads. When printing information about all threads,
also reports the current thread.
</p>
<a name="GDB-Command-21"></a>
<h4 class="subsubheading"><small>GDB</small> Command</h4>
<p>The &lsquo;<samp>info thread</samp>&rsquo; command prints the same information
about all threads.
</p>
<a name="Result-3"></a>
<h4 class="subsubheading">Result</h4>
<p>The result is a list of threads. The following attributes are
defined for a given thread:
</p>
<dl compact="compact">
<dt>&lsquo;<samp>current</samp>&rsquo;</dt>
<dd><p>This field exists only for the current thread. It has the value &lsquo;<samp>*</samp>&rsquo;.
</p>
</dd>
<dt>&lsquo;<samp>id</samp>&rsquo;</dt>
<dd><p>The identifier that <small>GDB</small> uses to refer to the thread.
</p>
</dd>
<dt>&lsquo;<samp>target-id</samp>&rsquo;</dt>
<dd><p>The identifier that the target uses to refer to the thread.
</p>
</dd>
<dt>&lsquo;<samp>details</samp>&rsquo;</dt>
<dd><p>Extra information about the thread, in a target-specific format. This
field is optional.
</p>
</dd>
<dt>&lsquo;<samp>name</samp>&rsquo;</dt>
<dd><p>The name of the thread. If the user specified a name using the
<code>thread name</code> command, then this name is given. Otherwise, if
<small>GDB</small> can extract the thread name from the target, then that
name is given. If <small>GDB</small> cannot find the thread name, then this
field is omitted.
</p>
</dd>
<dt>&lsquo;<samp>frame</samp>&rsquo;</dt>
<dd><p>The stack frame currently executing in the thread.
</p>
</dd>
<dt>&lsquo;<samp>state</samp>&rsquo;</dt>
<dd><p>The thread&rsquo;s state. The &lsquo;<samp>state</samp>&rsquo; field may have the following
values:
</p>
<dl compact="compact">
<dt><code>stopped</code></dt>
<dd><p>The thread is stopped. Frame information is available for stopped
threads.
</p>
</dd>
<dt><code>running</code></dt>
<dd><p>The thread is running. There&rsquo;s no frame information for running
threads.
</p>
</dd>
</dl>
</dd>
<dt>&lsquo;<samp>core</samp>&rsquo;</dt>
<dd><p>If <small>GDB</small> can find the CPU core on which this thread is running,
then this field is the core identifier. This field is optional.
</p>
</dd>
</dl>
<a name="Example-21"></a>
<h4 class="subsubheading">Example</h4>
<div class="smallexample">
<pre class="smallexample">-thread-info
^done,threads=[
{id=&quot;2&quot;,target-id=&quot;Thread 0xb7e14b90 (LWP 21257)&quot;,
frame={level=&quot;0&quot;,addr=&quot;0xffffe410&quot;,func=&quot;__kernel_vsyscall&quot;,
args=[]},state=&quot;running&quot;},
{id=&quot;1&quot;,target-id=&quot;Thread 0xb7e156b0 (LWP 21254)&quot;,
frame={level=&quot;0&quot;,addr=&quot;0x0804891f&quot;,func=&quot;foo&quot;,
args=[{name=&quot;i&quot;,value=&quot;10&quot;}],
file=&quot;/tmp/a.c&quot;,fullname=&quot;/tmp/a.c&quot;,line=&quot;158&quot;},
state=&quot;running&quot;}],
current-thread-id=&quot;1&quot;
(gdb)
</pre></div>
<a name="The-_002dthread_002dlist_002dids-Command"></a>
<h4 class="subheading">The <code>-thread-list-ids</code> Command</h4>
<a name="index-_002dthread_002dlist_002dids"></a>
<a name="Synopsis-23"></a>
<h4 class="subsubheading">Synopsis</h4>
<div class="smallexample">
<pre class="smallexample"> -thread-list-ids
</pre></div>
<p>Produces a list of the currently known <small>GDB</small> thread ids. At the
end of the list it also prints the total number of such threads.
</p>
<p>This command is retained for historical reasons, the
<code>-thread-info</code> command should be used instead.
</p>
<a name="GDB-Command-22"></a>
<h4 class="subsubheading"><small>GDB</small> Command</h4>
<p>Part of &lsquo;<samp>info threads</samp>&rsquo; supplies the same information.
</p>
<a name="Example-22"></a>
<h4 class="subsubheading">Example</h4>
<div class="smallexample">
<pre class="smallexample">(gdb)
-thread-list-ids
^done,thread-ids={thread-id=&quot;3&quot;,thread-id=&quot;2&quot;,thread-id=&quot;1&quot;},
current-thread-id=&quot;1&quot;,number-of-threads=&quot;3&quot;
(gdb)
</pre></div>
<a name="The-_002dthread_002dselect-Command"></a>
<h4 class="subheading">The <code>-thread-select</code> Command</h4>
<a name="index-_002dthread_002dselect"></a>
<a name="Synopsis-24"></a>
<h4 class="subsubheading">Synopsis</h4>
<div class="smallexample">
<pre class="smallexample"> -thread-select <var>threadnum</var>
</pre></div>
<p>Make <var>threadnum</var> the current thread. It prints the number of the new
current thread, and the topmost frame for that thread.
</p>
<p>This command is deprecated in favor of explicitly using the
&lsquo;<samp>--thread</samp>&rsquo; option to each command.
</p>
<a name="GDB-Command-23"></a>
<h4 class="subsubheading"><small>GDB</small> Command</h4>
<p>The corresponding <small>GDB</small> command is &lsquo;<samp>thread</samp>&rsquo;.
</p>
<a name="Example-23"></a>
<h4 class="subsubheading">Example</h4>
<div class="smallexample">
<pre class="smallexample">(gdb)
-exec-next
^running
(gdb)
*stopped,reason=&quot;end-stepping-range&quot;,thread-id=&quot;2&quot;,line=&quot;187&quot;,
file=&quot;../../../devo/gdb/testsuite/gdb.threads/linux-dp.c&quot;
(gdb)
-thread-list-ids
^done,
thread-ids={thread-id=&quot;3&quot;,thread-id=&quot;2&quot;,thread-id=&quot;1&quot;},
number-of-threads=&quot;3&quot;
(gdb)
-thread-select 3
^done,new-thread-id=&quot;3&quot;,
frame={level=&quot;0&quot;,func=&quot;vprintf&quot;,
args=[{name=&quot;format&quot;,value=&quot;0x8048e9c \&quot;%*s%c %d %c\\n\&quot;&quot;},
{name=&quot;arg&quot;,value=&quot;0x2&quot;}],file=&quot;vprintf.c&quot;,line=&quot;31&quot;}
(gdb)
</pre></div>
<hr>
<div class="header">
<p>
Next: <a href="GDB_002fMI-Ada-Tasking-Commands.html#GDB_002fMI-Ada-Tasking-Commands" accesskey="n" rel="next">GDB/MI Ada Tasking Commands</a>, Previous: <a href="GDB_002fMI-Program-Context.html#GDB_002fMI-Program-Context" accesskey="p" rel="prev">GDB/MI Program Context</a>, Up: <a href="GDB_002fMI.html#GDB_002fMI" accesskey="u" rel="up">GDB/MI</a> &nbsp; [<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>