This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Robustifying pretty-printers
- From: Vladimir Prus <vladimir at codesourcery dot com>
- To: Tom Tromey <tromey at redhat dot com>, gdb at sources dot redhat dot com
- Date: Thu, 9 Jul 2009 21:19:55 +0400
- Subject: Re: Robustifying pretty-printers
- References: <200906131411.34204.vladimir@codesourcery.com> <200906161222.37208.vladimir@codesourcery.com> <m33a98p3kz.fsf@fleche.redhat.com>
On Wednesday 08 July 2009 Tom Tromey wrote:
> >>>>> "Vladimir" == Vladimir Prus <vladimir@codesourcery.com> writes:
>
> Vladimir> Exactly, they only limited the number of children sent to
> Vladimir> frontend. If we go this route, I think it is better to make
> Vladimir> -var-list-children take a couple of parameters to specify
> Vladimir> the desired range, with [0, whatever] as default -- as
> Vladimir> opposed to the previous approach where this limit should be
> Vladimir> set on varobj, not on individual -var-list-children call.
>
> Just to be clear, do you also want these options on -var-update?
> Or should it remember the previous values passed via -var-list-children?
I think the most reasonable behavour is to remember the number of fetched
children. So, if frontend decided to fetch 20 children once, -var-update should
not silently check only 10 of them on. I also think it's best for varobj to
remember the number of children requested by frontend, not actually reported.
So, if you had 15 children, and fronend first did:
-var-list-children v 0 10
and then, maybe in response to user action, did:
-var-list-children 10 20
and go 5 new children, and then more children are added, then -var-update
will report all existing children between 0 and 20, as opposed to showing
just 15.
There's also a question how frontend will know that there are more children --
so that it can show "..." in the tree view, or something. The best approach would
be for GDB to fetch one children more, and then use emit 'has-more' field in
-var-list-children output. The other alternative is for frontend to fetch one more
item than it wishes to display -- but such a logic has to be repeated for each
frontend. Anyway, this aspect seems independent from others, so I can do it
myself after you are done with the code changes.
We probably need a way to explicitly reset the 'remembemered' limit on elements,
so that frontend is not forced to display 20 elements forever.
- Volodya