From: Simon Marchi via Gdb-patches <gdb-patches@sourceware.org>
To: Pedro Alves <pedro@palves.net>, gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@efficios.com>
Subject: Re: [PATCH 02/11] gdb: introduce intrusive_list, make thread_info use it
Date: Tue, 6 Jul 2021 17:45:10 -0400 [thread overview]
Message-ID: <3707d3e0-3166-cee1-dabd-cb101807c01e@polymtl.ca> (raw)
In-Reply-To: <ae97745d-2e93-6a44-8ce5-5e397b56f3a8@palves.net>
On 2021-07-06 5:02 p.m., Pedro Alves wrote:
> On 2021-07-06 8:38 p.m., Simon Marchi wrote:
>> On 2021-07-05 11:44 a.m., Pedro Alves wrote:
>>>>> $1 = intrusive list of thread_info = {
>>> {id = 1.1, ptid = 1000.1000.0, state = THREAD_RUNNING},
>>> {id = 1.3, ptid = 1000.1002.0, state = THREAD_STOPPED},
>>> {id = 1.5, ptid = 1000.3672.0, state = THREAD_STOPPED}
>>> }
>>
>> How would you accomplish this, with a struct thread_info
>> pretty-printer? This means that printing a single thread like this:
>>
>> (gdb) print *tp
>>
>> would also produce the short output, I don't think we want that. When
>> we print a single thread_info structure, I think it's good to have all
>> the fields shown.
>
> I don't have a great answer. It feels to me like the pretty printer code
> should ask the container if it has a custom printer for the element, and only
> if it doesn't would it look up the printer for the element's type.
That would be a new feature that doesn't exist today, I think: a
different printer for a type when it's printed as a container element
than when it's printed standalone.
> Maybe having a printer for thread_info all the time isn't that bad. printing
> thread_info structures does dump a lot of stuff and isn't that easy to parse.
> If you want to see the whole thing, there's always "print /r" to disable the
> printer.
>
>>
>> Perhaps by defining a more specialized pretty-printer for
>> intrusive_list<thread_info>? But then I'm not sure what kind of value
>> the children method would return.
>
> I guess it could return a typedef for "thread_info *" like e.g., "thread_info_p" instead
> of the raw pointer, and then we'd register a printer for only the typedef. I
> think that means that indexing via thread_list[1] etc. would also return the typedef,
> and thus give you the short print..
I think these are all good ideas for improvements, but I'd rather keep
them for later (if someone wants to implement them, I'm not sure I
will). We could bike-shed for a while on how to display a thread_info,
what to include / what to exclude, etc. I think that my original
proposal is strictly better than what we have today, in the sense that
today you just can't print the whole list of threads, so we don't lose
anything.
Simon
next prev parent reply other threads:[~2021-07-06 21:46 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-22 16:56 [PATCH 00/11] Various thread lists optimizations Simon Marchi via Gdb-patches
2021-06-22 16:56 ` [PATCH 01/11] gdb: introduce iterator_range, remove next_adapter Simon Marchi via Gdb-patches
2021-07-05 15:41 ` Pedro Alves
2021-07-06 19:16 ` Simon Marchi via Gdb-patches
2021-06-22 16:56 ` [PATCH 02/11] gdb: introduce intrusive_list, make thread_info use it Simon Marchi via Gdb-patches
2021-06-22 23:13 ` Lancelot SIX via Gdb-patches
2021-06-23 0:48 ` Simon Marchi via Gdb-patches
2021-07-05 15:44 ` Pedro Alves
2021-07-06 19:38 ` Simon Marchi via Gdb-patches
2021-07-06 20:45 ` Simon Marchi via Gdb-patches
2021-07-06 21:04 ` Pedro Alves
2021-07-06 21:38 ` Simon Marchi via Gdb-patches
2021-07-06 21:02 ` Pedro Alves
2021-07-06 21:45 ` Simon Marchi via Gdb-patches [this message]
2021-07-07 11:46 ` Pedro Alves
2021-07-07 13:52 ` Simon Marchi via Gdb-patches
2021-06-22 16:56 ` [PATCH 03/11] gdb: make inferior_list use intrusive_list Simon Marchi via Gdb-patches
2021-07-05 15:44 ` Pedro Alves
2021-07-14 6:34 ` Tom de Vries
2021-07-14 16:11 ` Simon Marchi via Gdb-patches
2021-07-14 20:15 ` [PATCH] gdb: make all_inferiors_safe actually work Simon Marchi via Gdb-patches
2021-07-15 10:15 ` Tom de Vries
2021-07-17 12:54 ` Simon Marchi via Gdb-patches
2021-06-22 16:56 ` [PATCH 04/11] gdb: use intrusive list for step-over chain Simon Marchi via Gdb-patches
2021-07-05 15:45 ` Pedro Alves
2021-07-06 20:59 ` Simon Marchi via Gdb-patches
2021-06-22 16:56 ` [PATCH 05/11] gdb: add setter / getter for thread_info resumed state Simon Marchi via Gdb-patches
2021-07-05 15:45 ` Pedro Alves
2021-06-22 16:56 ` [PATCH 06/11] gdb: make thread_info::suspend private, add getters / setters Simon Marchi via Gdb-patches
2021-07-05 15:45 ` Pedro Alves
2021-06-22 16:57 ` [PATCH 07/11] gdb: maintain per-process-target list of resumed threads with pending wait status Simon Marchi via Gdb-patches
2021-07-05 15:51 ` Pedro Alves
2021-07-06 21:25 ` Simon Marchi via Gdb-patches
2021-07-07 12:01 ` Pedro Alves
2021-07-12 22:28 ` Simon Marchi via Gdb-patches
2021-07-12 22:34 ` Simon Marchi via Gdb-patches
2021-07-13 12:21 ` Pedro Alves
2021-06-22 16:57 ` [PATCH 08/11] gdb: optimize check for resumed threads with pending wait status in maybe_set_commit_resumed_all_targets Simon Marchi via Gdb-patches
2021-07-05 15:51 ` Pedro Alves
2021-06-22 16:57 ` [PATCH 09/11] gdb: optimize selection of resumed thread with pending event Simon Marchi via Gdb-patches
2021-07-05 15:51 ` Pedro Alves
2021-06-22 16:57 ` [PATCH 10/11] gdb: maintain ptid -> thread map, optimize find_thread_ptid Simon Marchi via Gdb-patches
2021-07-05 15:52 ` Pedro Alves
2021-07-06 21:31 ` Simon Marchi via Gdb-patches
2021-07-07 12:13 ` Pedro Alves
2021-06-22 16:57 ` [PATCH 11/11] gdb: optimize all_matching_threads_iterator Simon Marchi via Gdb-patches
2021-07-05 15:52 ` Pedro Alves
2021-07-14 9:40 ` Tom de Vries
2021-07-13 0:47 ` [PATCH 00/11] Various thread lists optimizations Simon Marchi via Gdb-patches
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=3707d3e0-3166-cee1-dabd-cb101807c01e@polymtl.ca \
--to=gdb-patches@sourceware.org \
--cc=pedro@palves.net \
--cc=simon.marchi@efficios.com \
--cc=simon.marchi@polymtl.ca \
/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