Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Doug Evans <dje@google.com>
To: gdb-patches <gdb-patches@sourceware.org>
Subject: [RFA] improved thread id reporting
Date: Fri, 08 May 2009 05:46:00 -0000	[thread overview]
Message-ID: <e394668d0905072246l2e665772k41bb136a23c59af@mail.gmail.com> (raw)
In-Reply-To: <e394668d0905072243y22eee593u94d753edf0f807f0@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1521 bytes --]

Blech.  Right list this time.


On Sun, Apr 5, 2009 at 8:33 PM, Daniel Jacobowitz <drow@false.org> wrote:
> On Sun, Apr 05, 2009 at 01:36:06PM -0700, Doug Evans wrote:
>> Attached is a simplistic patch to help illustrate the challenge.
>>
>> Here is an example session that prints from/to and the thread number
>> in "[New ...", "[Switching ...", etc. messages.
>> I can think of two issues with the patch:
>> 1) Printing "[tT]hread" twice in one line is a bit annoying.
>> 2) Spreading from/to over two lines is a bit annoying.
>
> What do you think of this?  On the theory that you can go look up
> thread #2, either in 'info threads' or in a previous notification:
>
> [Switching from thread #2 to thread #3, Thread 0x41001960 (LWP 14407)]

"works for me"

> Or, migrating the "Thread" out:
>
> [Switching from thread #2 to thread #3, 0x41001960 (LWP 14407)]
>
> But that might be tricky with multi-process, some ptid_t's are not
> threads.

It's not clear how multi-process is going to work yet (or more likely
I've forgotten).  I played with attaching and running several
processes via gdbserver and all processes appear in "info threads".
[sidebar: I wouldn't mind "info threads" just showing the threads of
the current process, otherwise it might get confusing.  And given that
"info inferiors" is used to show all the processes IWBN if "inferior
N" switched to the specified process; a straightforward and intuitive
mapping from "info threads" + "thread N".]

How about this?

[-- Attachment #2: gdb-090507-thread-id-1.patch.txt --]
[-- Type: text/plain, Size: 4857 bytes --]

2009-05-07  Doug Evans  <dje@google.com>

	* infrun.c (normal_stop): Print gdb thread number of thread being
	switched away from and to.
	* inf-ttrace.c (inf_ttrace_wait): Include gdb thread number in
	thread event messages.
	* linux-nat.c (exit_lwp): Ditto.
	* procfs.c (procfs_wait): Ditto.
	* thread.c (add_thread_with_info): Ditto.

Index: inf-ttrace.c
===================================================================
RCS file: /cvs/src/src/gdb/inf-ttrace.c,v
retrieving revision 1.44
diff -u -p -r1.44 inf-ttrace.c
--- inf-ttrace.c	17 Mar 2009 19:28:09 -0000	1.44
+++ inf-ttrace.c	8 May 2009 04:53:39 -0000
@@ -1081,10 +1081,11 @@ inf_ttrace_wait (struct target_ops *ops,
       return ptid;
 
     case TTEVT_LWP_EXIT:
-      if (print_thread_events)
-	printf_unfiltered (_("[%s exited]\n"), target_pid_to_str (ptid));
       ti = find_thread_pid (ptid);
       gdb_assert (ti != NULL);
+      if (print_thread_events)
+	printf_unfiltered (_("[Thread #%d, %s exited]\n"),
+			   ti->num, target_pid_to_str (ptid));
       ((struct inf_ttrace_private_thread_info *)ti->private)->dying = 1;
       inf_ttrace_num_lwps--;
       /* Let the thread really exit.  */
@@ -1097,11 +1098,11 @@ inf_ttrace_wait (struct target_ops *ops,
     case TTEVT_LWP_TERMINATE:
       lwpid = tts.tts_u.tts_thread.tts_target_lwpid;
       ptid = ptid_build (tts.tts_pid, lwpid, 0);
-      if (print_thread_events)
-	printf_unfiltered(_("[%s has been terminated]\n"),
-			  target_pid_to_str (ptid));
       ti = find_thread_pid (ptid);
       gdb_assert (ti != NULL);
+      if (print_thread_events)
+	printf_unfiltered (_("[Thread #%d, %s has been terminated]\n"),
+			   ti->num, target_pid_to_str (ptid));
       ((struct inf_ttrace_private_thread_info *)ti->private)->dying = 1;
       inf_ttrace_num_lwps--;
 
Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.371
diff -u -p -r1.371 infrun.c
--- infrun.c	5 May 2009 13:24:48 -0000	1.371
+++ infrun.c	8 May 2009 04:53:39 -0000
@@ -4299,7 +4299,11 @@ normal_stop (void)
       && last.kind != TARGET_WAITKIND_EXITED)
     {
       target_terminal_ours_for_output ();
-      printf_filtered (_("[Switching to %s]\n"),
+      /* It is useful to the user to print the gdb thread numbers we're
+	 switching away from and to.  */
+      printf_filtered (_("[Switching from thread #%d to thread #%d, %s]\n"),
+		       pid_to_thread_id (previous_inferior_ptid),
+		       pid_to_thread_id (inferior_ptid),
 		       target_pid_to_str (inferior_ptid));
       annotate_thread_changed ();
       previous_inferior_ptid = inferior_ptid;
Index: linux-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/linux-nat.c,v
retrieving revision 1.128
diff -u -p -r1.128 linux-nat.c
--- linux-nat.c	1 Apr 2009 19:07:50 -0000	1.128
+++ linux-nat.c	8 May 2009 04:53:40 -0000
@@ -1159,7 +1159,8 @@ exit_lwp (struct lwp_info *lp)
   if (th)
     {
       if (print_thread_events)
-	printf_unfiltered (_("[%s exited]\n"), target_pid_to_str (lp->ptid));
+	printf_unfiltered (_("[Thread #%d, %s exited]\n"),
+			   th->num, target_pid_to_str (lp->ptid));
 
       delete_thread (lp->ptid);
     }
Index: procfs.c
===================================================================
RCS file: /cvs/src/src/gdb/procfs.c,v
retrieving revision 1.106
diff -u -p -r1.106 procfs.c
--- procfs.c	6 May 2009 17:18:52 -0000	1.106
+++ procfs.c	8 May 2009 04:53:40 -0000
@@ -4046,7 +4046,8 @@ wait_again:
 		if (syscall_is_lwp_exit (pi, what))
 		  {
 		    if (print_thread_events)
-		      printf_unfiltered (_("[%s exited]\n"),
+		      printf_unfiltered (_("[Thread #%d, %s exited]\n"),
+					 pid_to_thread_id (retval),
 					 target_pid_to_str (retval));
 		    delete_thread (retval);
 		    status->kind = TARGET_WAITKIND_SPURIOUS;
@@ -4182,7 +4183,8 @@ wait_again:
 		else if (syscall_is_lwp_exit (pi, what))
 		  {
 		    if (print_thread_events)
-		      printf_unfiltered (_("[%s exited]\n"),
+		      printf_unfiltered (_("[Thread #%d, %s exited]\n"),
+					 pid_to_thread_id (retval),
 					 target_pid_to_str (retval));
 		    delete_thread (retval);
 		    status->kind = TARGET_WAITKIND_SPURIOUS;
Index: thread.c
===================================================================
RCS file: /cvs/src/src/gdb/thread.c,v
retrieving revision 1.110
diff -u -p -r1.110 thread.c
--- thread.c	5 May 2009 13:24:49 -0000	1.110
+++ thread.c	8 May 2009 04:53:40 -0000
@@ -211,7 +211,8 @@ add_thread_with_info (ptid_t ptid, struc
   result->private = private;
 
   if (print_thread_events)
-    printf_unfiltered (_("[New %s]\n"), target_pid_to_str (ptid));
+    printf_unfiltered (_("[New thread #%d, %s]\n"),
+		       result->num, target_pid_to_str (ptid));
 
   annotate_new_thread ();
   return result;

       reply	other threads:[~2009-05-08  5:46 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20090404184604.8524C1C759C@localhost>
     [not found] ` <200904041904.n34J4UXV013513@brahms.sibelius.xs4all.nl>
     [not found]   ` <20090404192132.GA28232@caradoc.them.org>
     [not found]     ` <e394668d0904051336p56704603of8c9c31742dc04e6@mail.gmail.com>
     [not found]       ` <20090406033300.GA31715@caradoc.them.org>
     [not found]         ` <e394668d0905072243y22eee593u94d753edf0f807f0@mail.gmail.com>
2009-05-08  5:46           ` Doug Evans [this message]
2009-05-18 23:23             ` Doug Evans
2009-05-19  3:29               ` Pedro Alves
2009-05-19  3:39                 ` Pedro Alves

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e394668d0905072246l2e665772k41bb136a23c59af@mail.gmail.com \
    --to=dje@google.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox