Implement "info threads -gid"
This commit makes global thread IDs optionaly visible in "info threads", with the new "-gid" switch: (gdb) info threads -gid Id GId Target Id Frame 1.1 1 Thread 0x7ffff7fc2740 (LWP 6022) "threads" (running) 1.2 3 Thread 0x7ffff77c0700 (LWP 6028) "threads" (running) 1.3 4 Thread 0x7ffff7fc2740 (LWP 6032) "threads" (running) 2.1 2 Thread 0x7ffff7fc1700 (LWP 6037) "threads" (running) 2.2 5 Thread 0x7ffff77c0700 (LWP 6038) "threads" (running) * 2.3 6 Thread 0x7ffff7fc2740 (LWP 6039) "threads" (running) (gdb) info threads Id Target Id Frame 1.1 Thread 0x7ffff7fc2740 (LWP 6022) "threads" (running) 1.2 Thread 0x7ffff77c0700 (LWP 6028) "threads" (running) 1.3 Thread 0x7ffff7fc2740 (LWP 6032) "threads" (running) 2.1 Thread 0x7ffff7fc1700 (LWP 6037) "threads" (running) 2.2 Thread 0x7ffff77c0700 (LWP 6038) "threads" (running) * 2.3 Thread 0x7ffff7fc2740 (LWP 6039) "threads" (running) No regressions on x86_64 Fedora 20. gdb/ChangeLog: 2016-01-13 Pedro Alves <palves@redhat.com> * NEWS: Mention "info threads -gid". * gdbthread.h (struct thread_info) <global_num>: Mention "info threads -gid". * thread.c (info_threads_command): Handle "-gid". (_initialize_thread): Adjust "info threads" help string to mention -gid. gdb/testsuite/ChangeLog: 2016-01-13 Pedro Alves <palves@redhat.com> * gdb.multi/tids.exp: Test "info threads -gid". gdb/doc/ChangeLog: 2016-01-13 Pedro Alves <palves@redhat.com> * gdb.texinfo (Threads): Document "info threads -gid".
This commit is contained in:
parent
22a0232400
commit
c84f6bbfe5
8 changed files with 55 additions and 10 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* NEWS: Mention "info threads -gid".
|
||||||
|
* gdbthread.h (struct thread_info) <global_num>: Mention "info
|
||||||
|
threads -gid".
|
||||||
|
* thread.c (info_threads_command): Handle "-gid".
|
||||||
|
(_initialize_thread): Adjust "info threads" help string to mention
|
||||||
|
-gid.
|
||||||
|
|
||||||
2016-01-13 Pedro Alves <palves@redhat.com>
|
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* NEWS: Mention InferiorThread.global_num.
|
* NEWS: Mention InferiorThread.global_num.
|
||||||
|
|
3
gdb/NEWS
3
gdb/NEWS
|
@ -34,6 +34,9 @@
|
||||||
[Switching to thread 2.1 (Thread 0x7ffff7fc2740 (LWP 8157))] (running)
|
[Switching to thread 2.1 (Thread 0x7ffff7fc2740 (LWP 8157))] (running)
|
||||||
(gdb)
|
(gdb)
|
||||||
|
|
||||||
|
* You can use "info threads -gid" to display the global thread ID of
|
||||||
|
all threads.
|
||||||
|
|
||||||
* The new convenience variable $_inferior holds the number of the
|
* The new convenience variable $_inferior holds the number of the
|
||||||
current inferior.
|
current inferior.
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* gdb.texinfo (Threads): Document "info threads -gid".
|
||||||
|
|
||||||
2016-01-13 Pedro Alves <palves@redhat.com>
|
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* python.texi (Breakpoints In Python) <Breakpoint.thread>: Add
|
* python.texi (Breakpoints In Python) <Breakpoint.thread>: Add
|
||||||
|
|
|
@ -2958,6 +2958,10 @@ threads that you want to display using the thread ID list syntax
|
||||||
@item
|
@item
|
||||||
the per-inferior thread number assigned by @value{GDBN}
|
the per-inferior thread number assigned by @value{GDBN}
|
||||||
|
|
||||||
|
@item
|
||||||
|
the global thread number assigned by @value{GDBN}, if the @samp{-gid}
|
||||||
|
option was specified
|
||||||
|
|
||||||
@item
|
@item
|
||||||
the target system's thread identifier (@var{systag})
|
the target system's thread identifier (@var{systag})
|
||||||
|
|
||||||
|
@ -2989,15 +2993,18 @@ For example,
|
||||||
|
|
||||||
If you're debugging multiple inferiors, @value{GDBN} displays thread
|
If you're debugging multiple inferiors, @value{GDBN} displays thread
|
||||||
IDs using the qualified @var{inferior-num}.@var{thread-num} format.
|
IDs using the qualified @var{inferior-num}.@var{thread-num} format.
|
||||||
Otherwise, only @var{thread-num} is shown:
|
Otherwise, only @var{thread-num} is shown.
|
||||||
|
|
||||||
|
If you specify the @samp{-gid} option, @value{GDBN} displays a column
|
||||||
|
indicating each thread's global thread ID:
|
||||||
|
|
||||||
@smallexample
|
@smallexample
|
||||||
(@value{GDBP}) info threads
|
(@value{GDBP}) info threads
|
||||||
Id Target Id Frame
|
Id GId Target Id Frame
|
||||||
1.1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
|
1.1 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
|
||||||
1.2 process 35 thread 23 0x34e5 in sigpause ()
|
1.2 3 process 35 thread 23 0x34e5 in sigpause ()
|
||||||
1.3 process 35 thread 27 0x34e5 in sigpause ()
|
1.3 4 process 35 thread 27 0x34e5 in sigpause ()
|
||||||
* 2.1 process 65 thread 1 main (argc=1, argv=0x7ffffff8)
|
* 2.1 2 process 65 thread 1 main (argc=1, argv=0x7ffffff8)
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
On Solaris, you can display more information about user threads with a
|
On Solaris, you can display more information about user threads with a
|
||||||
|
|
|
@ -216,8 +216,8 @@ struct thread_info
|
||||||
Above, both inferiors 1 and 2 have threads numbered 1-3, but each
|
Above, both inferiors 1 and 2 have threads numbered 1-3, but each
|
||||||
thread has its own unique global ID. */
|
thread has its own unique global ID. */
|
||||||
|
|
||||||
/* The thread's global GDB thread number. This is exposed to MI and
|
/* The thread's global GDB thread number. This is exposed to MI,
|
||||||
Python/Scheme. */
|
Python/Scheme and visible with "info threads -gid". */
|
||||||
int global_num;
|
int global_num;
|
||||||
|
|
||||||
/* The per-inferior thread number. This is unique in the inferior
|
/* The per-inferior thread number. This is unique in the inferior
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
* gdb.multi/tids.exp: Test "info threads -gid".
|
||||||
|
|
||||||
2016-01-13 Pedro Alves <palves@redhat.com>
|
2016-01-13 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
* gdb.multi/tids.exp: Test InferiorThread.global_num and
|
* gdb.multi/tids.exp: Test InferiorThread.global_num and
|
||||||
|
|
|
@ -150,6 +150,14 @@ with_test_prefix "two inferiors" {
|
||||||
info_threads "" "1.1 1.2 2.1 2.2" \
|
info_threads "" "1.1 1.2 2.1 2.2" \
|
||||||
"info threads again"
|
"info threads again"
|
||||||
|
|
||||||
|
# Same, but show the global ID.
|
||||||
|
gdb_test "info threads -gid" \
|
||||||
|
[multi_line \
|
||||||
|
" 1\.1 +1 +.*" \
|
||||||
|
"\\* 1\.2 +4 +.* thread_function1 .* at .*$srcfile:.*" \
|
||||||
|
" 2\.1 +2 +.*" \
|
||||||
|
" 2\.2 +3 +.* thread_function1 .* at .*$srcfile:.*"]
|
||||||
|
|
||||||
# Confirm the convenience variable show the expected number.
|
# Confirm the convenience variable show the expected number.
|
||||||
gdb_test "p \$_thread == 2" " = 1"
|
gdb_test "p \$_thread == 2" " = 1"
|
||||||
|
|
||||||
|
|
14
gdb/thread.c
14
gdb/thread.c
|
@ -1403,7 +1403,16 @@ print_thread_info (struct ui_out *uiout, char *requested_threads, int pid)
|
||||||
static void
|
static void
|
||||||
info_threads_command (char *arg, int from_tty)
|
info_threads_command (char *arg, int from_tty)
|
||||||
{
|
{
|
||||||
print_thread_info_1 (current_uiout, arg, 0, -1, 0);
|
int show_global_ids = 0;
|
||||||
|
|
||||||
|
if (arg != NULL
|
||||||
|
&& check_for_argument (&arg, "-gid", sizeof ("-gid") - 1))
|
||||||
|
{
|
||||||
|
arg = skip_spaces (arg);
|
||||||
|
show_global_ids = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
print_thread_info_1 (current_uiout, arg, 0, -1, show_global_ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See gdbthread.h. */
|
/* See gdbthread.h. */
|
||||||
|
@ -2107,7 +2116,8 @@ _initialize_thread (void)
|
||||||
|
|
||||||
add_info ("threads", info_threads_command,
|
add_info ("threads", info_threads_command,
|
||||||
_("Display currently known threads.\n\
|
_("Display currently known threads.\n\
|
||||||
Usage: info threads [ID]...\n\
|
Usage: info threads [-gid] [ID]...\n\
|
||||||
|
-gid: Show global thread IDs.\n\
|
||||||
If ID is given, it is a space-separated list of IDs of threads to display.\n\
|
If ID is given, it is a space-separated list of IDs of threads to display.\n\
|
||||||
Otherwise, all threads are displayed."));
|
Otherwise, all threads are displayed."));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue