From: Keith Seitz <keiths@redhat.com>
To: Mohsan Saleem <mohsansaleem_ms@yahoo.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: gdb bug 12417
Date: Wed, 19 Sep 2012 13:44:00 -0000 [thread overview]
Message-ID: <5059CC1D.1040105@redhat.com> (raw)
In-Reply-To: <1347974206.13036.YahooMailNeo@web114403.mail.gq1.yahoo.com>
On 09/18/2012 06:16 AM, Mohsan Saleem wrote:
> Hi,
> Attached patch is for bug 12417, for printing the name of threads while printing the information of a thread.
>
Thank you for you patch submission. I do not see your name listed in
gdb/MAINTAINERS -- do you have an assignment? If not, let us know and we
can help you get started with the paperwork.
In general, I'd say the patch is definitely a feature we should consider
adding. [Note: I am not a global maintainer.]
> --- /root/Desktop/gdb/thread.c 2012-09-03 00:53:02.620254912 -0700
> +++ ./gdb/thread.c 2012-09-03 00:58:04.399469614 -0700
> @@ -243,12 +243,14 @@
> struct thread_info *
> add_thread_with_info (ptid_t ptid, struct private_thread_info *private)
> {
> + char *name;
> struct thread_info *result = add_thread_silent (ptid);
>
> + name = result->name ? result->name : target_thread_name (result);
> result->private = private;
>
> if (print_thread_events)
> - printf_unfiltered (_("[New %s]\n"), target_pid_to_str (ptid));
> + printf_unfiltered (_("[New %s ] %s\n"), target_pid_to_str (ptid), name);
target_thread_name can return NULL. There's an added space typo in "[New
%s ]".
> @@ -1209,8 +1211,9 @@
> if (thread_alive (tp))
> {
> 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, name, target_pid_to_str (inferior_ptid));
> execute_command (cmd, from_tty);
> strcpy (cmd, saved_cmd); /* Restore exact command used
Likewise.
> @@ -1260,8 +1263,8 @@
> else
> {
> switch_to_thread (tp->ptid);
> -
> - printf_filtered (_("\nThread %d (%s):\n"), tp->num,
> + name = tp->name ? tp->name : target_thread_name (tp);
> + printf_filtered (_("\nThread %d %s (%s):\n"), tp->num, name,
> target_pid_to_str (inferior_ptid));
> execute_command (cmd, from_tty);
And again here.
> @@ -1283,7 +1286,6 @@
> {
> if (ptid_equal (inferior_ptid, null_ptid))
> error (_("No thread selected"));
> -
> if (target_has_stack)
> {
> if (is_exited (inferior_ptid))
This is a superfluous whitespace change. In general, we try to keep
these types of changes in their own patches. It helps keep patches to
the important changes.
> @@ -1338,6 +1340,7 @@
> error (_("Invalid regexp (%s): %s"), tmp, arg);
>
> update_thread_list ();
> +
> for (tp = thread_list; tp; tp = tp->next)
> {
> if (tp->name != NULL && re_exec (tp->name))
Same here.
> @@ -1354,20 +1357,20 @@
> tp->num, tmp);
> match++;
> }
> -
> + name = tp->name ? tp->name : target_thread_name (tp);
> tmp = target_pid_to_str (tp->ptid);
> if (tmp != NULL && re_exec (tmp))
> {
> - printf_filtered (_("Thread %d has target id '%s'\n"),
> - tp->num, tmp);
> + printf_filtered (_("Thread %d %s has target id '%s'\n"),
> + tp->num, name, tmp);
> match++;
> }
>
> tmp = target_extra_thread_info (tp);
> if (tmp != NULL && re_exec (tmp))
> {
> - printf_filtered (_("Thread %d has extra info '%s'\n"),
> - tp->num, tmp);
> + printf_filtered (_("Thread %d %s has extra info '%s'\n"),
> + tp->num, name, tmp);
> match++;
name could be NULL.
> }
> }
> @@ -1391,6 +1394,7 @@
> {
> int num;
> struct thread_info *tp;
> + char *name;
>
> num = value_as_long (parse_and_eval (tidstr));
>
> @@ -1405,9 +1409,12 @@
> switch_to_thread (tp->ptid);
>
> annotate_thread_changed ();
> + name = tp->name ? tp->name : target_thread_name (tp);
>
> ui_out_text (uiout, "[Switching to thread ");
> - ui_out_field_int (uiout, "new-thread-id", pid_to_thread_id (inferior_ptid));
> + ui_out_field_int (uiout, "new-thread-id", pid_to_thread_id (inferior_ptid));
> + ui_out_text (uiout, " ");
> + ui_out_text (uiout, name);
> ui_out_text (uiout, " (");
> ui_out_text (uiout, target_pid_to_str (inferior_ptid));
> ui_out_text (uiout, ")]");
And one more time with NULL from target_thread_name. This is also a
change to the MI. It will definitely need the approval of an MI or
global maintainer, as well as updated MI documentation and tests.
inferior_command looks like it could benefit from similar treatment. I
wonder if there are other places?
Otherwise, running the test suite, this patch causes several regressions
which will need fixing:
FAIL: gdb.threads/thread-find.exp: find thread id 6
FAIL: gdb.threads/thread-find.exp: find thread id 5
FAIL: gdb.threads/thread-find.exp: find thread id 4
FAIL: gdb.threads/thread-find.exp: find thread id 3
FAIL: gdb.threads/thread-find.exp: find thread id 2
FAIL: gdb.threads/thread-find.exp: find thread id 1
FAIL: gdb.threads/thread-find.exp: find lwp id 6
FAIL: gdb.threads/thread-find.exp: find lwp id 5
FAIL: gdb.threads/thread-find.exp: find lwp id 4
FAIL: gdb.threads/thread-find.exp: find lwp id 3
FAIL: gdb.threads/thread-find.exp: find lwp id 2
FAIL: gdb.threads/thread-find.exp: find lwp id 1
FAIL: gdb.threads/thread_events.exp: continue to threadfunc with
messages enabled (saw 0, expected 1)
It appears that these simply need to be massaged to account for the
thread name output, although in one case, "(null)" is output for the
thread name.
Similar changes will need to be done for the manual as well (see, for
example, section 4.10, "Debugging Programs with Multiple Threads," which
contains several examples that could use updating).
Keith
next prev parent reply other threads:[~2012-09-19 13:44 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <A62F3BCAE6F6B540A2F2C0E7E4387B9505B5AA72@EU-MBX-01.mgc.mentorg.com>
2012-09-18 13:17 ` Mohsan Saleem
2012-09-19 11:00 ` [PATCH] " Mohsan Saleem
2012-09-19 13:09 ` Jan Kratochvil
2012-09-19 13:22 ` Yao Qi
2012-09-19 13:44 ` Keith Seitz [this message]
2012-09-19 16:07 ` Mohsan Saleem
2012-09-19 16:16 ` Sergio Durigan Junior
2012-09-22 13:15 ` Jan Kratochvil
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=5059CC1D.1040105@redhat.com \
--to=keiths@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=mohsansaleem_ms@yahoo.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