diff options
Diffstat (limited to 'share/doc/gdb/Threads.html')
-rw-r--r-- | share/doc/gdb/Threads.html | 522 |
1 files changed, 522 insertions, 0 deletions
diff --git a/share/doc/gdb/Threads.html b/share/doc/gdb/Threads.html new file mode 100644 index 0000000..7230fbd --- /dev/null +++ b/share/doc/gdb/Threads.html @@ -0,0 +1,522 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Copyright (C) 1988-2023 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.1, http://www.gnu.org/software/texinfo/ --> +<head> +<title>Debugging with GDB: Threads</title> + +<meta name="description" content="Debugging with GDB: Threads"> +<meta name="keywords" content="Debugging with GDB: Threads"> +<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="Running.html#Running" rel="up" title="Running"> +<link href="Forks.html#Forks" rel="next" title="Forks"> +<link href="Inferiors-Connections-and-Programs.html#Inferiors-Connections-and-Programs" rel="previous" title="Inferiors Connections and Programs"> +<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="Threads"></a> +<div class="header"> +<p> +Next: <a href="Forks.html#Forks" accesskey="n" rel="next">Forks</a>, Previous: <a href="Inferiors-Connections-and-Programs.html#Inferiors-Connections-and-Programs" accesskey="p" rel="previous">Inferiors Connections and Programs</a>, Up: <a href="Running.html#Running" accesskey="u" rel="up">Running</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="Debugging-Programs-with-Multiple-Threads"></a> +<h3 class="section">4.10 Debugging Programs with Multiple Threads</h3> + +<a name="index-threads-of-execution"></a> +<a name="index-multiple-threads"></a> +<a name="index-switching-threads"></a> +<p>In some operating systems, such as GNU/Linux and Solaris, a single program +may have more than one <em>thread</em> of execution. The precise semantics +of threads differ from one operating system to another, but in general +the threads of a single program are akin to multiple processes—except +that they share one address space (that is, they can all examine and +modify the same variables). On the other hand, each thread has its own +registers and execution stack, and perhaps private memory. +</p> +<p><small>GDB</small> provides these facilities for debugging multi-thread +programs: +</p> +<ul> +<li> automatic notification of new threads +</li><li> ‘<samp>thread <var>thread-id</var></samp>’, a command to switch among threads +</li><li> ‘<samp>info threads</samp>’, a command to inquire about existing threads +</li><li> ‘<samp>thread apply [<var>thread-id-list</var> | all] <var>args</var></samp>’, +a command to apply a command to a list of threads +</li><li> thread-specific breakpoints +</li><li> ‘<samp>set print thread-events</samp>’, which controls printing of +messages on thread start and exit. +</li><li> ‘<samp>set libthread-db-search-path <var>path</var></samp>’, which lets +the user specify which <code>libthread_db</code> to use if the default choice +isn’t compatible with the program. +</li></ul> + +<a name="index-focus-of-debugging"></a> +<a name="index-current-thread"></a> +<p>The <small>GDB</small> thread debugging facility allows you to observe all +threads while your program runs—but whenever <small>GDB</small> takes +control, one thread in particular is always the focus of debugging. +This thread is called the <em>current thread</em>. Debugging commands show +program information from the perspective of the current thread. +</p> +<a name="index-New-systag-message"></a> +<a name="index-thread-identifier-_0028system_0029"></a> +<p>Whenever <small>GDB</small> detects a new thread in your program, it displays +the target system’s identification for the thread with a message in the +form ‘<samp>[New <var>systag</var>]</samp>’, where <var>systag</var> is a thread identifier +whose form varies depending on the particular system. For example, on +<small>GNU</small>/Linux, you might see +</p> +<div class="smallexample"> +<pre class="smallexample">[New Thread 0x41e02940 (LWP 25582)] +</pre></div> + +<p>when <small>GDB</small> notices a new thread. In contrast, on other systems, +the <var>systag</var> is simply something like ‘<samp>process 368</samp>’, with no +further qualifier. +</p> + +<a name="thread-numbers"></a><a name="index-thread-number_002c-per-inferior"></a> +<a name="index-thread-identifier-_0028GDB_0029"></a> +<p>For debugging purposes, <small>GDB</small> associates its own thread number +—always a single integer—with each thread of an inferior. This +number is unique between all threads of an inferior, but not unique +between threads of different inferiors. +</p> +<a name="index-qualified-thread-ID"></a> +<p>You can refer to a given thread in an inferior using the qualified +<var>inferior-num</var>.<var>thread-num</var> syntax, also known as +<em>qualified thread ID</em>, with <var>inferior-num</var> being the inferior +number and <var>thread-num</var> being the thread number of the given +inferior. For example, thread <code>2.3</code> refers to thread number 3 of +inferior 2. If you omit <var>inferior-num</var> (e.g., <code>thread 3</code>), +then <small>GDB</small> infers you’re referring to a thread of the current +inferior. +</p> +<p>Until you create a second inferior, <small>GDB</small> does not show the +<var>inferior-num</var> part of thread IDs, even though you can always use +the full <var>inferior-num</var>.<var>thread-num</var> form to refer to threads +of inferior 1, the initial inferior. +</p> +<a name="thread-ID-lists"></a><a name="index-thread-ID-lists"></a> +<p>Some commands accept a space-separated <em>thread ID list</em> as +argument. A list element can be: +</p> +<ol> +<li> A thread ID as shown in the first field of the ‘<samp>info threads</samp>’ +display, with or without an inferior qualifier. E.g., ‘<samp>2.1</samp>’ or +‘<samp>1</samp>’. + +</li><li> A range of thread numbers, again with or without an inferior +qualifier, as in <var>inf</var>.<var>thr1</var>-<var>thr2</var> or +<var>thr1</var>-<var>thr2</var>. E.g., ‘<samp>1.2-4</samp>’ or ‘<samp>2-4</samp>’. + +</li><li> All threads of an inferior, specified with a star wildcard, with or +without an inferior qualifier, as in <var>inf</var>.<code>*</code> (e.g., +‘<samp>1.*</samp>’) or <code>*</code>. The former refers to all threads of the +given inferior, and the latter form without an inferior qualifier +refers to all threads of the current inferior. + +</li></ol> + +<p>For example, if the current inferior is 1, and inferior 7 has one +thread with ID 7.1, the thread list ‘<samp>1 2-3 4.5 6.7-9 7.*</samp>’ +includes threads 1 to 3 of inferior 1, thread 5 of inferior 4, threads +7 to 9 of inferior 6 and all threads of inferior 7. That is, in +expanded qualified form, the same as ‘<samp>1.1 1.2 1.3 4.5 6.7 6.8 6.9 +7.1</samp>’. +</p> + +<a name="global-thread-numbers"></a><a name="index-global-thread-number"></a> +<a name="index-global-thread-identifier-_0028GDB_0029"></a> +<p>In addition to a <em>per-inferior</em> number, each thread is also +assigned a unique <em>global</em> number, also known as <em>global +thread ID</em>, a single integer. Unlike the thread number component of +the thread ID, no two threads have the same global ID, even when +you’re debugging multiple inferiors. +</p> +<p>From <small>GDB</small>’s perspective, a process always has at least one +thread. In other words, <small>GDB</small> assigns a thread number to the +program’s “main thread” even if the program is not multi-threaded. +</p> +<a name="index-_0024_005fthread_002c-convenience-variable"></a> +<a name="index-_0024_005fgthread_002c-convenience-variable"></a> +<p>The debugger convenience variables ‘<samp>$_thread</samp>’ and +‘<samp>$_gthread</samp>’ contain, respectively, the per-inferior thread number +and the global thread number of the current thread. You may find this +useful in writing breakpoint conditional expressions, command scripts, +and so forth. The convenience variable ‘<samp>$_inferior_thread_count</samp>’ +contains the number of live threads in the current inferior. +See <a href="Convenience-Vars.html#Convenience-Vars">Convenience Variables</a>, for general +information on convenience variables. +</p> +<p>When running in non-stop mode (see <a href="Non_002dStop-Mode.html#Non_002dStop-Mode">Non-Stop Mode</a>), where new +threads can be created, and existing threads exit, at any time, +‘<samp>$_inferior_thread_count</samp>’ could return a different value each +time it is evaluated. +</p> +<p>If <small>GDB</small> detects the program is multi-threaded, it augments the +usual message about stopping at a breakpoint with the ID and name of +the thread that hit the breakpoint. +</p> +<div class="smallexample"> +<pre class="smallexample">Thread 2 "client" hit Breakpoint 1, send_message () at client.c:68 +</pre></div> + +<p>Likewise when the program receives a signal: +</p> +<div class="smallexample"> +<pre class="smallexample">Thread 1 "main" received signal SIGINT, Interrupt. +</pre></div> + +<dl compact="compact"> +<dd><a name="info_005fthreads"></a><a name="index-info-threads"></a> +</dd> +<dt><code>info threads <span class="roman">[</span><var>thread-id-list</var><span class="roman">]</span></code></dt> +<dd> +<p>Display information about one or more threads. With no arguments +displays information about all threads. You can specify the list of +threads that you want to display using the thread ID list syntax +(see <a href="#thread-ID-lists">thread ID lists</a>). +</p> +<p><small>GDB</small> displays for each thread (in this order): +</p> +<ol> +<li> the per-inferior thread number assigned by <small>GDB</small> + +</li><li> the global thread number assigned by <small>GDB</small>, if the ‘<samp>-gid</samp>’ +option was specified + +</li><li> the target system’s thread identifier (<var>systag</var>) + +</li><li> the thread’s name, if one is known. A thread can either be named by +the user (see <code>thread name</code>, below), or, in some cases, by the +program itself. + +</li><li> the current stack frame summary for that thread +</li></ol> + +<p>An asterisk ‘<samp>*</samp>’ to the left of the <small>GDB</small> thread number +indicates the current thread. +</p> +<p>For example, +</p></dd> +</dl> + +<div class="smallexample"> +<pre class="smallexample">(gdb) info threads + Id Target Id Frame +* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) + 2 process 35 thread 23 0x34e5 in sigpause () + 3 process 35 thread 27 0x34e5 in sigpause () + at threadtest.c:68 +</pre></div> + +<p>If you’re debugging multiple inferiors, <small>GDB</small> displays thread +IDs using the qualified <var>inferior-num</var>.<var>thread-num</var> format. +Otherwise, only <var>thread-num</var> is shown. +</p> +<p>If you specify the ‘<samp>-gid</samp>’ option, <small>GDB</small> displays a column +indicating each thread’s global thread ID: +</p> +<div class="smallexample"> +<pre class="smallexample">(gdb) info threads + Id GId Target Id Frame + 1.1 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8) + 1.2 3 process 35 thread 23 0x34e5 in sigpause () + 1.3 4 process 35 thread 27 0x34e5 in sigpause () +* 2.1 2 process 65 thread 1 main (argc=1, argv=0x7ffffff8) +</pre></div> + +<p>On Solaris, you can display more information about user threads with a +Solaris-specific command: +</p> +<dl compact="compact"> +<dt><code>maint info sol-threads</code></dt> +<dd><a name="index-maint-info-sol_002dthreads"></a> +<a name="index-thread-info-_0028Solaris_0029"></a> +<p>Display info on Solaris user threads. +</p></dd> +</dl> + +<dl compact="compact"> +<dd><a name="index-thread-thread_002did"></a> +</dd> +<dt><code>thread <var>thread-id</var></code></dt> +<dd><p>Make thread ID <var>thread-id</var> the current thread. The command +argument <var>thread-id</var> is the <small>GDB</small> thread ID, as shown in +the first field of the ‘<samp>info threads</samp>’ display, with or without an +inferior qualifier (e.g., ‘<samp>2.1</samp>’ or ‘<samp>1</samp>’). +</p> +<p><small>GDB</small> responds by displaying the system identifier of the +thread you selected, and its current stack frame summary: +</p> +<div class="smallexample"> +<pre class="smallexample">(gdb) thread 2 +[Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))] +#0 some_function (ignore=0x0) at example.c:8 +8 printf ("hello\n"); +</pre></div> + +<p>As with the ‘<samp>[New …]</samp>’ message, the form of the text after +‘<samp>Switching to</samp>’ depends on your system’s conventions for identifying +threads. +</p> +<a name="thread-apply-all"></a><a name="index-thread-apply"></a> +<a name="index-apply-command-to-several-threads"></a> +</dd> +<dt><code>thread apply [<var>thread-id-list</var> | all [-ascending]] [<var>flag</var>]… <var>command</var></code></dt> +<dd><p>The <code>thread apply</code> command allows you to apply the named +<var>command</var> to one or more threads. Specify the threads that you +want affected using the thread ID list syntax (see <a href="#thread-ID-lists">thread ID lists</a>), or specify <code>all</code> to apply to all threads. To apply a +command to all threads in descending order, type <kbd>thread apply all +<var>command</var></kbd>. To apply a command to all threads in ascending order, +type <kbd>thread apply all -ascending <var>command</var></kbd>. +</p> +<p>The <var>flag</var> arguments control what output to produce and how to handle +errors raised when applying <var>command</var> to a thread. <var>flag</var> +must start with a <code>-</code> directly followed by one letter in +<code>qcs</code>. If several flags are provided, they must be given +individually, such as <code>-c -q</code>. +</p> +<p>By default, <small>GDB</small> displays some thread information before the +output produced by <var>command</var>, and an error raised during the +execution of a <var>command</var> will abort <code>thread apply</code>. The +following flags can be used to fine-tune this behavior: +</p> +<dl compact="compact"> +<dt><code>-c</code></dt> +<dd><p>The flag <code>-c</code>, which stands for ‘<samp>continue</samp>’, causes any +errors in <var>command</var> to be displayed, and the execution of +<code>thread apply</code> then continues. +</p></dd> +<dt><code>-s</code></dt> +<dd><p>The flag <code>-s</code>, which stands for ‘<samp>silent</samp>’, causes any errors +or empty output produced by a <var>command</var> to be silently ignored. +That is, the execution continues, but the thread information and errors +are not printed. +</p></dd> +<dt><code>-q</code></dt> +<dd><p>The flag <code>-q</code> (‘<samp>quiet</samp>’) disables printing the thread +information. +</p></dd> +</dl> + +<p>Flags <code>-c</code> and <code>-s</code> cannot be used together. +</p> +<a name="index-taas"></a> +<a name="index-apply-command-to-all-threads-_0028ignoring-errors-and-empty-output_0029"></a> +</dd> +<dt><code>taas [<var>option</var>]… <var>command</var></code></dt> +<dd><p>Shortcut for <code>thread apply all -s [<var>option</var>]… <var>command</var></code>. +Applies <var>command</var> on all threads, ignoring errors and empty output. +</p> +<p>The <code>taas</code> command accepts the same options as the <code>thread +apply all</code> command. See <a href="#thread-apply-all">thread apply all</a>. +</p> +<a name="index-tfaas"></a> +<a name="index-apply-a-command-to-all-frames-of-all-threads-_0028ignoring-errors-and-empty-output_0029"></a> +</dd> +<dt><code>tfaas [<var>option</var>]… <var>command</var></code></dt> +<dd><p>Shortcut for <code>thread apply all -s -- frame apply all -s [<var>option</var>]… <var>command</var></code>. +Applies <var>command</var> on all frames of all threads, ignoring errors +and empty output. Note that the flag <code>-s</code> is specified twice: +The first <code>-s</code> ensures that <code>thread apply</code> only shows the thread +information of the threads for which <code>frame apply</code> produces +some output. The second <code>-s</code> is needed to ensure that <code>frame +apply</code> shows the frame information of a frame only if the +<var>command</var> successfully produced some output. +</p> +<p>It can for example be used to print a local variable or a function +argument without knowing the thread or frame where this variable or argument +is, using: +</p><div class="smallexample"> +<pre class="smallexample">(gdb) tfaas p some_local_var_i_do_not_remember_where_it_is +</pre></div> + +<p>The <code>tfaas</code> command accepts the same options as the <code>frame +apply</code> command. See <a href="Frame-Apply.html#Frame-Apply">frame apply</a>. +</p> +<a name="index-thread-name"></a> +<a name="index-name-a-thread"></a> +</dd> +<dt><code>thread name [<var>name</var>]</code></dt> +<dd><p>This command assigns a name to the current thread. If no argument is +given, any existing user-specified name is removed. The thread name +appears in the ‘<samp>info threads</samp>’ display. +</p> +<p>On some systems, such as <small>GNU</small>/Linux, <small>GDB</small> is able to +determine the name of the thread as given by the OS. On these +systems, a name specified with ‘<samp>thread name</samp>’ will override the +system-give name, and removing the user-specified name will cause +<small>GDB</small> to once again display the system-specified name. +</p> +<a name="index-thread-find"></a> +<a name="index-search-for-a-thread"></a> +</dd> +<dt><code>thread find [<var>regexp</var>]</code></dt> +<dd><p>Search for and display thread ids whose name or <var>systag</var> +matches the supplied regular expression. +</p> +<p>As well as being the complement to the ‘<samp>thread name</samp>’ command, +this command also allows you to identify a thread by its target +<var>systag</var>. For instance, on <small>GNU</small>/Linux, the target <var>systag</var> +is the LWP id. +</p> +<div class="smallexample"> +<pre class="smallexample">(GDB) thread find 26688 +Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)' +(GDB) info thread 4 + Id Target Id Frame + 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select () +</pre></div> + +<a name="index-set-print-thread_002devents"></a> +<a name="index-print-messages-on-thread-start-and-exit"></a> +</dd> +<dt><code>set print thread-events</code></dt> +<dt><code>set print thread-events on</code></dt> +<dt><code>set print thread-events off</code></dt> +<dd><p>The <code>set print thread-events</code> command allows you to enable or +disable printing of messages when <small>GDB</small> notices that new threads have +started or that threads have exited. By default, these messages will +be printed if detection of these events is supported by the target. +Note that these messages cannot be disabled on all targets. +</p> +<a name="index-show-print-thread_002devents"></a> +</dd> +<dt><code>show print thread-events</code></dt> +<dd><p>Show whether messages will be printed when <small>GDB</small> detects that threads +have started and exited. +</p></dd> +</dl> + +<p>See <a href="Thread-Stops.html#Thread-Stops">Stopping and Starting Multi-thread Programs</a>, for +more information about how <small>GDB</small> behaves when you stop and start +programs with multiple threads. +</p> +<p>See <a href="Set-Watchpoints.html#Set-Watchpoints">Setting Watchpoints</a>, for information about +watchpoints in programs with multiple threads. +</p> +<a name="set-libthread_002ddb_002dsearch_002dpath"></a><dl compact="compact"> +<dd><a name="index-set-libthread_002ddb_002dsearch_002dpath"></a> +<a name="index-search-path-for-libthread_005fdb"></a> +</dd> +<dt><code>set libthread-db-search-path <span class="roman">[</span><var>path</var><span class="roman">]</span></code></dt> +<dd><p>If this variable is set, <var>path</var> is a colon-separated list of +directories <small>GDB</small> will use to search for <code>libthread_db</code>. +If you omit <var>path</var>, ‘<samp>libthread-db-search-path</samp>’ will be reset to +its default value (<code>$sdir:$pdir</code> on <small>GNU</small>/Linux and Solaris systems). +Internally, the default value comes from the <code>LIBTHREAD_DB_SEARCH_PATH</code> +macro. +</p> +<p>On <small>GNU</small>/Linux and Solaris systems, <small>GDB</small> uses a “helper” +<code>libthread_db</code> library to obtain information about threads in the +inferior process. <small>GDB</small> will use ‘<samp>libthread-db-search-path</samp>’ +to find <code>libthread_db</code>. <small>GDB</small> also consults first if inferior +specific thread debugging library loading is enabled +by ‘<samp>set auto-load libthread-db</samp>’ (see <a href="libthread_005fdb_002eso_002e1-file.html#libthread_005fdb_002eso_002e1-file">libthread_db.so.1 file</a>). +</p> +<p>A special entry ‘<samp>$sdir</samp>’ for ‘<samp>libthread-db-search-path</samp>’ +refers to the default system directories that are +normally searched for loading shared libraries. The ‘<samp>$sdir</samp>’ entry +is the only kind not needing to be enabled by ‘<samp>set auto-load libthread-db</samp>’ +(see <a href="libthread_005fdb_002eso_002e1-file.html#libthread_005fdb_002eso_002e1-file">libthread_db.so.1 file</a>). +</p> +<p>A special entry ‘<samp>$pdir</samp>’ for ‘<samp>libthread-db-search-path</samp>’ +refers to the directory from which <code>libpthread</code> +was loaded in the inferior process. +</p> +<p>For any <code>libthread_db</code> library <small>GDB</small> finds in above directories, +<small>GDB</small> attempts to initialize it with the current inferior process. +If this initialization fails (which could happen because of a version +mismatch between <code>libthread_db</code> and <code>libpthread</code>), <small>GDB</small> +will unload <code>libthread_db</code>, and continue with the next directory. +If none of <code>libthread_db</code> libraries initialize successfully, +<small>GDB</small> will issue a warning and thread debugging will be disabled. +</p> +<p>Setting <code>libthread-db-search-path</code> is currently implemented +only on some platforms. +</p> +<a name="index-show-libthread_002ddb_002dsearch_002dpath"></a> +</dd> +<dt><code>show libthread-db-search-path</code></dt> +<dd><p>Display current libthread_db search path. +</p> +<a name="index-set-debug-libthread_002ddb"></a> +<a name="index-show-debug-libthread_002ddb"></a> +<a name="index-debugging-libthread_005fdb"></a> +</dd> +<dt><code>set debug libthread-db</code></dt> +<dt><code>show debug libthread-db</code></dt> +<dd><p>Turns on or off display of <code>libthread_db</code>-related events. +Use <code>1</code> to enable, <code>0</code> to disable. +</p> +<a name="index-set-debug-threads"></a> +<a name="index-show-debug-threads"></a> +<a name="index-debugging-threads"></a> +</dd> +<dt><code>set debug threads <span class="roman">[</span>on<span class="roman">|</span>off<span class="roman">]</span></code></dt> +<dt><code>show debug threads</code></dt> +<dd><p>When ‘<samp>on</samp>’ <small>GDB</small> will print additional messages when +threads are created and deleted. +</p></dd> +</dl> + +<hr> +<div class="header"> +<p> +Next: <a href="Forks.html#Forks" accesskey="n" rel="next">Forks</a>, Previous: <a href="Inferiors-Connections-and-Programs.html#Inferiors-Connections-and-Programs" accesskey="p" rel="previous">Inferiors Connections and Programs</a>, Up: <a href="Running.html#Running" accesskey="u" rel="up">Running</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> |