|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505 |
- <!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>Threads (Debugging with GDB)</title>
-
- <meta name="description" content="Threads (Debugging with GDB)">
- <meta name="keywords" content="Threads (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="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="prev" title="Inferiors Connections and Programs">
- <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="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="prev">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. See <a href="Convenience-Vars.html#Convenience-Vars">Convenience Variables</a>, for
- general information on convenience variables.
- </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="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></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="prev">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>
|