Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pat Pannuto <pat.pannuto@gmail.com>
To: Ricard Wanderlof <ricard.wanderlof@axis.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [PATCH] Print thread name when executing thread commands
Date: Wed, 18 Sep 2013 18:37:00 -0000	[thread overview]
Message-ID: <CA+Yp1NUY9CWW3L7U8D-hj7q4RLfgxJB9g4-YdDrF+US3=nfdsg@mail.gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1309180856200.2394@lnxricardw.se.axis.com>

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

On Wed, Sep 18, 2013 at 3:04 AM, Ricard Wanderlof
<ricard.wanderlof@axis.com> wrote:
>
> On Wed, 18 Sep 2013, Pat Pannuto wrote:
>
>> Currently the thread family of commands only prints the thread ID and
>> PID. GDB also has access to the thread's name, which is often an easier
>> way of quickly identifying a thread. This simple patch uses the same
>> mechanism as `info threads' to get the name of a thread and add it to
>> the thread identifier line when it's printed.
>>
>> I wrapped the name in []'s to offset it and make it visually distinct
>> from the ()'s that wrap the other thread information. I'm not at all
>> attached to this look, just looked best to me.
>>
>> Diff should be from current cvs. This is my first patch to GDB, if I
>> messed something up don't hesitate to yell at me.
>
>
> I'm fairly new here too so maybe I shouldn't say too much, but supplying the
> patch inline (including the ChangeLog entry) in the post makes it much
> easier to comment on it. I still like adding it as an attachement lest the
> mail program messes up the formatting so it doesn't apply.
>

Done.

> My initial comment is that the ChangeLog format requires that it should be
> more specific regarding which functions have been modified. One should be
> able to grep for the function name in the ChangeLog. Something like
>
> 2013-09-18  Pat Pannuto  <pat.pannuto@gmail.com>
>
>         * thread.c (thread_apply_all_command, thread_apply_command):
>         Print thread name as well as ID number and PID.
>

Makes sense. Updated.

> In the code, there was a 'char *name' in one place, but 'char* name' in
> another. Looking quickly, the indentation of multiple-line statements looked
> inconsistent in some places too.

I fixed the misplaced *. As for the spacing, it follows the spacing of
the lines around them AFAICT.

>
> As for the functionality itself, I'm not in a position to approve but I
> think it's a good idea. It's annoying just to get the thread id when there's
> more information available. I don't know if there are any caveats.
>
> /Ricard

Updated ChangeLog, diff:

$ cat print_thread_names.ChangeLog
2013-09-18  Pat Pannuto <pat.pannuto@gmail.com>

    * thread.c (thread_apply_all_command, thread_apply_command):
    Print thread name as well as ID number and PID.


$ cat print_thread_names.diff
Index: gdb/thread.c
===================================================================
RCS file: /cvs/src/src/gdb/thread.c,v
retrieving revision 1.157
diff -u -p -r1.157 thread.c
--- gdb/thread.c    17 Sep 2013 18:26:39 -0000    1.157
+++ gdb/thread.c    18 Sep 2013 18:31:15 -0000
@@ -1255,10 +1255,14 @@ thread_apply_all_command (char *cmd, int
       for (k = 0; k != i; k++)
         if (thread_alive (tp_array[k]))
           {
+            char *name;
             switch_to_thread (tp_array[k]->ptid);
-            printf_filtered (_("\nThread %d (%s):\n"),
+            name = tp_array[k]->name ? tp_array[k]->name
+                    : target_thread_name (tp_array[k]);
+            printf_filtered (_("\nThread %d (%s) [%s]:\n"),
                  tp_array[k]->num,
-                 target_pid_to_str (inferior_ptid));
+                 target_pid_to_str (inferior_ptid),
+                 name);
             execute_command (cmd, from_tty);

             /* Restore exact command used previously.  */
@@ -1308,10 +1312,12 @@ thread_apply_command (char *tidlist, int
     warning (_("Thread %d has terminated."), start);
       else
     {
+      char *name;
       switch_to_thread (tp->ptid);

-      printf_filtered (_("\nThread %d (%s):\n"), tp->num,
-               target_pid_to_str (inferior_ptid));
+      name = tp->name ? tp->name : target_thread_name (tp);
+      printf_filtered (_("\nThread %d (%s) [%s]:\n"), tp->num,
+               target_pid_to_str (inferior_ptid), name);
       execute_command (cmd, from_tty);

       /* Restore exact command used previously.  */

[-- Attachment #2: print_thread_names.ChangeLog --]
[-- Type: application/octet-stream, Size: 161 bytes --]

2013-09-18  Pat Pannuto <pat.pannuto@gmail.com>

	* thread.c (thread_apply_all_command, thread_apply_command):
	Print thread name as well as ID number and PID.


[-- Attachment #3: print_thread_names.diff --]
[-- Type: application/octet-stream, Size: 1513 bytes --]

Index: gdb/thread.c
===================================================================
RCS file: /cvs/src/src/gdb/thread.c,v
retrieving revision 1.157
diff -u -p -r1.157 thread.c
--- gdb/thread.c	17 Sep 2013 18:26:39 -0000	1.157
+++ gdb/thread.c	18 Sep 2013 18:31:15 -0000
@@ -1255,10 +1255,14 @@ thread_apply_all_command (char *cmd, int
       for (k = 0; k != i; k++)
         if (thread_alive (tp_array[k]))
           {
+            char *name;
             switch_to_thread (tp_array[k]->ptid);
-            printf_filtered (_("\nThread %d (%s):\n"), 
+            name = tp_array[k]->name ? tp_array[k]->name
+                    : target_thread_name (tp_array[k]);
+            printf_filtered (_("\nThread %d (%s) [%s]:\n"), 
 			     tp_array[k]->num,
-			     target_pid_to_str (inferior_ptid));
+			     target_pid_to_str (inferior_ptid),
+			     name);
             execute_command (cmd, from_tty);
 
             /* Restore exact command used previously.  */
@@ -1308,10 +1312,12 @@ thread_apply_command (char *tidlist, int
 	warning (_("Thread %d has terminated."), start);
       else
 	{
+	  char *name;
 	  switch_to_thread (tp->ptid);
 
-	  printf_filtered (_("\nThread %d (%s):\n"), tp->num,
-			   target_pid_to_str (inferior_ptid));
+	  name = tp->name ? tp->name : target_thread_name (tp);
+	  printf_filtered (_("\nThread %d (%s) [%s]:\n"), tp->num,
+			   target_pid_to_str (inferior_ptid), name);
 	  execute_command (cmd, from_tty);
 
 	  /* Restore exact command used previously.  */

  reply	other threads:[~2013-09-18 18:37 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-18  6:50 Pat Pannuto
2013-09-18  7:04 ` Ricard Wanderlof
2013-09-18 18:37   ` Pat Pannuto [this message]
2013-09-23 12:18     ` Agovic, Sanimir
2013-09-23 16:33       ` Pat Pannuto

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='CA+Yp1NUY9CWW3L7U8D-hj7q4RLfgxJB9g4-YdDrF+US3=nfdsg@mail.gmail.com' \
    --to=pat.pannuto@gmail.com \
    --cc=gdb-patches@sourceware.org \
    --cc=ricard.wanderlof@axis.com \
    /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