blob: 3a209a4fcb0552a795f0428f25b4af17959cea96 [file] [log] [blame]
<html lang="en">
<head>
<title>Threads In Python - 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="Python-API.html#Python-API" title="Python API">
<link rel="prev" href="Events-In-Python.html#Events-In-Python" title="Events In Python">
<link rel="next" href="Recordings-In-Python.html#Recordings-In-Python" title="Recordings In Python">
<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="Threads-In-Python"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Recordings-In-Python.html#Recordings-In-Python">Recordings In Python</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Events-In-Python.html#Events-In-Python">Events In Python</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Python-API.html#Python-API">Python API</a>
<hr>
</div>
<h5 class="subsubsection">23.2.2.18 Threads In Python</h5>
<p><a name="index-threads-in-python-2095"></a>
<a name="index-gdb_002eInferiorThread-2096"></a>Python scripts can access information about, and manipulate inferior threads
controlled by <span class="sc">gdb</span>, via objects of the <code>gdb.InferiorThread</code> class.
<p>The following thread-related functions are available in the <code>gdb</code>
module:
<p><a name="index-gdb_002eselected_005fthread-2097"></a>
<div class="defun">
&mdash; Function: <b>gdb.selected_thread</b> ()<var><a name="index-gdb_002eselected_005fthread-2098"></a></var><br>
<blockquote><p>This function returns the thread object for the selected thread. If there
is no selected thread, this will return <code>None</code>.
</p></blockquote></div>
<p>A <code>gdb.InferiorThread</code> object has the following attributes:
<div class="defun">
&mdash; Variable: <b>InferiorThread.name</b><var><a name="index-InferiorThread_002ename-2099"></a></var><br>
<blockquote><p>The name of the thread. If the user specified a name using
<code>thread name</code>, then this returns that name. Otherwise, if an
OS-supplied name is available, then it is returned. Otherwise, this
returns <code>None</code>.
<p>This attribute can be assigned to. The new value must be a string
object, which sets the new name, or <code>None</code>, which removes any
user-specified thread name.
</p></blockquote></div>
<div class="defun">
&mdash; Variable: <b>InferiorThread.num</b><var><a name="index-InferiorThread_002enum-2100"></a></var><br>
<blockquote><p>The per-inferior number of the thread, as assigned by GDB.
</p></blockquote></div>
<div class="defun">
&mdash; Variable: <b>InferiorThread.global_num</b><var><a name="index-InferiorThread_002eglobal_005fnum-2101"></a></var><br>
<blockquote><p>The global ID of the thread, as assigned by GDB. You can use this to
make Python breakpoints thread-specific, for example
(see <a href="python_005fbreakpoint_005fthread.html#python_005fbreakpoint_005fthread">The Breakpoint.thread attribute</a>).
</p></blockquote></div>
<div class="defun">
&mdash; Variable: <b>InferiorThread.ptid</b><var><a name="index-InferiorThread_002eptid-2102"></a></var><br>
<blockquote><p>ID of the thread, as assigned by the operating system. This attribute is a
tuple containing three integers. The first is the Process ID (PID); the second
is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
Either the LWPID or TID may be 0, which indicates that the operating system
does not use that identifier.
</p></blockquote></div>
<div class="defun">
&mdash; Variable: <b>InferiorThread.inferior</b><var><a name="index-InferiorThread_002einferior-2103"></a></var><br>
<blockquote><p>The inferior this thread belongs to. This attribute is represented as
a <code>gdb.Inferior</code> object. This attribute is not writable.
</p></blockquote></div>
<p>A <code>gdb.InferiorThread</code> object has the following methods:
<div class="defun">
&mdash; Function: <b>InferiorThread.is_valid</b> ()<var><a name="index-InferiorThread_002eis_005fvalid-2104"></a></var><br>
<blockquote><p>Returns <code>True</code> if the <code>gdb.InferiorThread</code> object is valid,
<code>False</code> if not. A <code>gdb.InferiorThread</code> object will become
invalid if the thread exits, or the inferior that the thread belongs
is deleted. All other <code>gdb.InferiorThread</code> methods will throw an
exception if it is invalid at the time the method is called.
</p></blockquote></div>
<div class="defun">
&mdash; Function: <b>InferiorThread.switch</b> ()<var><a name="index-InferiorThread_002eswitch-2105"></a></var><br>
<blockquote><p>This changes <span class="sc">gdb</span>'s currently selected thread to the one represented
by this object.
</p></blockquote></div>
<div class="defun">
&mdash; Function: <b>InferiorThread.is_stopped</b> ()<var><a name="index-InferiorThread_002eis_005fstopped-2106"></a></var><br>
<blockquote><p>Return a Boolean indicating whether the thread is stopped.
</p></blockquote></div>
<div class="defun">
&mdash; Function: <b>InferiorThread.is_running</b> ()<var><a name="index-InferiorThread_002eis_005frunning-2107"></a></var><br>
<blockquote><p>Return a Boolean indicating whether the thread is running.
</p></blockquote></div>
<div class="defun">
&mdash; Function: <b>InferiorThread.is_exited</b> ()<var><a name="index-InferiorThread_002eis_005fexited-2108"></a></var><br>
<blockquote><p>Return a Boolean indicating whether the thread is exited.
</p></blockquote></div>
</body></html>