diff options
author | Pedro Alves <palves@redhat.com> | 2020-01-10 20:06:14 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2020-01-10 20:06:14 +0000 |
commit | 121b3efd49f98e4049281b3ba7a258e650e40b38 (patch) | |
tree | 6cc76edd8054a1270597adc9fa668562eba78d82 /gdb/process-stratum-target.h | |
parent | 4f83758119ddf0f114477760d79bdde7bbc76835 (diff) | |
download | binutils-gdb-121b3efd49f98e4049281b3ba7a258e650e40b38.tar.gz |
Add "info connections" command, "info inferiors" connection number/string
This commit extends the CLI a bit for multi-target, in three ways.
#1 - New "info connections" command.
This is a new command that lists the open connections (process_stratum
targets). For example, if you're debugging two remote connections, a
couple local/native processes, and a core dump, all at the same time,
you might see something like this:
(gdb) info connections
Num What Description
1 remote 192.168.0.1:9999 Remote serial target in gdb-specific protocol
2 remote 192.168.0.2:9998 Remote serial target in gdb-specific protocol
* 3 native Native process
4 core Local core dump file
#2 - New "info inferiors" "Connection" column
You'll also see a new matching "Connection" column in "info
inferiors", showing you which connection an inferior is bound to:
(gdb) info inferiors
Num Description Connection Executable
1 process 18526 1 (remote 192.168.0.1:9999) target:/tmp/a.out
2 process 18531 2 (remote 192.168.0.2:9998) target:/tmp/a.out
3 process 19115 3 (native) /tmp/prog1
4 process 6286 4 (core) myprogram
* 5 process 19122 3 (native) /bin/hello
#3 - Makes "add-inferior" show the inferior's target connection
"add-inferior" now shows you the connection you've just bound the
inferior to, which is the current process_stratum target:
(gdb) add-inferior
[New inferior 2]
Added inferior 2 on connection 1 (extended-remote localhost:2346)
gdb/ChangeLog:
2020-01-10 Pedro Alves <palves@redhat.com>
* Makefile.in (COMMON_SFILES): Add target-connection.c.
* inferior.c (uiout_field_connection): New function.
(print_inferior): Add new "connection-id" column.
(add_inferior_command): Show connection number/string of added
inferior.
* process-stratum-target.h
(process_stratum_target::connection_string): New virtual method.
(process_stratum_target::connection_number): New field.
* remote.c (remote_target::connection_string): New override.
* target-connection.c: New file.
* target-connection.h: New file.
* target.c (decref_target): Remove process_stratum targets from
the connection list.
(target_stack::push): Add process_stratum targets to the
connection list.
gdb/testsuite/ChangeLog:
2020-01-10 Pedro Alves <palves@redhat.com>
* gdb.base/kill-detach-inferiors-cmd.exp: Adjust expected output
of "add-inferior".
* gdb.base/quit-live.exp: Likewise.
* gdb.base/remote-exec-file.exp: Likewise.
* gdb.guile/scm-progspace.exp: Likewise.
* gdb.linespec/linespec.exp: Likewise.
* gdb.mi/new-ui-mi-sync.exp: Likewise.
* gdb.mi/user-selected-context-sync.exp: Likewise.
* gdb.multi/multi-target.exp (setup): Add "info connection" and
"info inferiors" tests.
* gdb.multi/remove-inferiors.exp: Adjust expected output of
"add-inferior".
* gdb.multi/watchpoint-multi.exp: Likewise.
* gdb.python/py-inferior.exp: Likewise.
* gdb.server/extended-remote-restart.exp: Likewise.
* gdb.threads/fork-plus-threads.exp: Adjust expected output of
"info inferiors".
* gdb.threads/forking-threads-plus-breakpoint.exp: Likewise.
* gdb.trace/report.exp: Likewise.
Diffstat (limited to 'gdb/process-stratum-target.h')
-rw-r--r-- | gdb/process-stratum-target.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gdb/process-stratum-target.h b/gdb/process-stratum-target.h index 53d221d9aaa..1be02100dcf 100644 --- a/gdb/process-stratum-target.h +++ b/gdb/process-stratum-target.h @@ -31,6 +31,16 @@ public: strata stratum () const final override { return process_stratum; } + /* Return a string representation of this target's open connection. + This string is used to distinguish different instances of a given + target type. For example, when remote debugging, the target is + called "remote", but since we may have more than one remote + target open, connection_string() returns the connection serial + connection name, e.g., "localhost:10001", "192.168.0.1:20000", + etc. This string is shown in several places, e.g., in "info + connections" and "info inferiors". */ + virtual const char *connection_string () { return nullptr; } + /* We must default these because they must be implemented by any target that can run. */ bool can_async_p () override { return false; } @@ -58,6 +68,9 @@ public: stop events for all known threads, because any of those threads may have spawned new threads we haven't heard of yet. */ bool threads_executing = false; + + /* The connection number. Visible in "info connections". */ + int connection_number = 0; }; /* Downcast TARGET to process_stratum_target. */ |