This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Make remote attach/detach output be like native target's output
- From: Pedro Alves <palves at redhat dot com>
- To: GDB Patches <gdb-patches at sourceware dot org>
- Date: Fri, 10 Feb 2012 15:07:57 +0000
- Subject: Make remote attach/detach output be like native target's output
This make the output remote targets' output for attach/detach be like
all the native targets'. It is gratuitously different currently, which causes
a bunch of failures in tests that do "attach"/"detach", with the extended-remote
board.
Before:
(gdb) attach 18131
Attached to process 18131
Reading symbols from /lib64/libc.so.6...Reading symbols from /usr/lib/debug/lib64/libc-2.14.90.so.debug...done.
done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/lib64/ld-2.14.90.so.debug...done.
done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
During symbol reading, incomplete CFI data; unspecified registers (e.g., rax) at 0x339e6bbcdd.
0x000000339e6bbcd0 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:82
82 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
(gdb) detach
Detached from remote process 18131.
After:
(gdb) attach 18131
Attaching to program: /bin/sleep, process 18131
Reading symbols from /lib64/libc.so.6...Reading symbols from /usr/lib/debug/lib64/libc-2.14.90.so.debug...done.
done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/lib64/ld-2.14.90.so.debug...done.
done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
During symbol reading, incomplete CFI data; unspecified registers (e.g., rax) at 0x339e6bbcdd.
0x000000339e6bbcd0 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:82
82 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
(gdb) detach
Detaching from program: /bin/sleep, process 18131
I don't suppose there are objections?
The idea is that in theory, remote debugging should be indistinguishable
from native debugging, appart from performance, obviously.
--
Pedro Alves
gdb/
2012-02-10 Pedro Alves <palves@redhat.com>
* remote.c (remote_detach_1, extended_remote_attach_1): Tweak
output to be like native targets'.
(remote_pid_to_str): Special case the null ptid.
gdb/testsuite/
2012-02-10 Pedro Alves <palves@redhat.com>
Support extended-remote. Avoid cascading timeouts.
* gdb.base/attach.exp (do_attach_tests): Add expected output for
the extended-remote target. If attaching with no file fails, load
the file manually.
---
gdb/remote.c | 47 +++++++++++++++++++++++--------------
gdb/testsuite/gdb.base/attach.exp | 23 +++++++++++++++++-
2 files changed, 51 insertions(+), 19 deletions(-)
diff --git a/gdb/remote.c b/gdb/remote.c
index 1c37b69..a76de7c 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -4205,6 +4205,16 @@ remote_detach_1 (char *args, int from_tty, int extended)
if (!target_has_execution)
error (_("No process to detach from."));
+ if (from_tty)
+ {
+ char *exec_file = get_exec_file (0);
+ if (exec_file == NULL)
+ exec_file = "";
+ printf_unfiltered (_("Detaching from program: %s, %s\n"), exec_file,
+ target_pid_to_str (pid_to_ptid (pid)));
+ gdb_flush (gdb_stdout);
+ }
+
/* Tell the remote target to detach. */
if (remote_multi_process_p (rs))
sprintf (rs->buf, "D;%x", pid);
@@ -4221,19 +4231,8 @@ remote_detach_1 (char *args, int from_tty, int extended)
else
error (_("Can't detach process."));
- if (from_tty)
- {
- if (remote_multi_process_p (rs))
- printf_filtered (_("Detached from remote %s.\n"),
- target_pid_to_str (pid_to_ptid (pid)));
- else
- {
- if (extended)
- puts_filtered (_("Detached from remote process.\n"));
- else
- puts_filtered (_("Ending remote debugging.\n"));
- }
- }
+ if (from_tty && !extended)
+ puts_filtered (_("Ending remote debugging.\n"));
discard_pending_stop_replies (pid);
target_mourn_inferior ();
@@ -4286,6 +4285,20 @@ extended_remote_attach_1 (struct target_ops *target, char *args, int from_tty)
if (remote_protocol_packets[PACKET_vAttach].support == PACKET_DISABLE)
error (_("This target does not support attaching to a process"));
+ if (from_tty)
+ {
+ char *exec_file = get_exec_file (0);
+
+ if (exec_file)
+ printf_unfiltered (_("Attaching to program: %s, %s\n"), exec_file,
+ target_pid_to_str (pid_to_ptid (pid)));
+ else
+ printf_unfiltered (_("Attaching to %s\n"),
+ target_pid_to_str (pid_to_ptid (pid)));
+
+ gdb_flush (gdb_stdout);
+ }
+
sprintf (rs->buf, "vAttach;%x", pid);
putpkt (rs->buf);
getpkt (&rs->buf, &rs->buf_size, 0);
@@ -4293,10 +4306,6 @@ extended_remote_attach_1 (struct target_ops *target, char *args, int from_tty)
if (packet_ok (rs->buf,
&remote_protocol_packets[PACKET_vAttach]) == PACKET_OK)
{
- if (from_tty)
- printf_unfiltered (_("Attached to %s\n"),
- target_pid_to_str (pid_to_ptid (pid)));
-
if (!non_stop)
{
/* Save the reply for later. */
@@ -8814,7 +8823,9 @@ remote_pid_to_str (struct target_ops *ops, ptid_t ptid)
static char buf[64];
struct remote_state *rs = get_remote_state ();
- if (ptid_is_pid (ptid))
+ if (ptid_equal (ptid, null_ptid))
+ return normal_pid_to_str (ptid);
+ else if (ptid_is_pid (ptid))
{
/* Printing an inferior target id. */
diff --git a/gdb/testsuite/gdb.base/attach.exp b/gdb/testsuite/gdb.base/attach.exp
index 87a22de..ff1b6bc 100644
--- a/gdb/testsuite/gdb.base/attach.exp
+++ b/gdb/testsuite/gdb.base/attach.exp
@@ -160,6 +160,10 @@ proc do_attach_tests {} {
# Response expected on Cygwin
pass "$test"
}
+ -re "Attaching to.*, process $boguspid.*failed.*$gdb_prompt $" {
+ # Response expected on the extended-remote target.
+ pass "$test"
+ }
}
# Verify that we can attach to the process by first giving its
@@ -224,7 +228,8 @@ proc do_attach_tests {} {
# Verify that we can attach to the process just by giving the
# process ID.
- set test "set file, before attach2"
+ set test "attach2, with no file"
+ set found_exec_file 0
gdb_test_multiple "attach $testpid" "$test" {
-re "Attaching to process $testpid.*Load new symbol table from \"$escapedbinfile\.exe\".*y or n. $" {
# On Cygwin, the DLL's symbol tables are loaded prior to the
@@ -233,9 +238,25 @@ proc do_attach_tests {} {
# executable.
gdb_test "y" "Reading symbols from $escapedbinfile\.\.\.*done." \
"$test (reset file)"
+
+ set found_exec_file 1
}
-re "Attaching to process $testpid.*Reading symbols from $escapedbinfile.*main.*at .*$gdb_prompt $" {
pass "$test"
+ set found_exec_file 1
+ }
+ }
+
+ if {$found_exec_file == 0} {
+ set test "load file manually, after attach2"
+ gdb_test_multiple "file $binfile" "$test" {
+ -re "A program is being debugged already..*Are you sure you want to change the file.*y or n. $" {
+ gdb_test "y" "Reading symbols from $escapedbinfile\.\.\.*done." \
+ "$test (re-read)"
+ }
+ -re "Reading symbols from $escapedbinfile\.\.\.*done.*$gdb_prompt $" {
+ pass "$test"
+ }
}
}