* How to set default value of yquery and nquery
@ 2010-02-23 7:08 Hui Zhu
2010-02-23 7:53 ` MI Interface and Pretty Print to_string() result Elmenthaler, Jens
2010-02-23 17:13 ` How to set default value of yquery and nquery Tom Tromey
0 siblings, 2 replies; 15+ messages in thread
From: Hui Zhu @ 2010-02-23 7:08 UTC (permalink / raw)
To: gdb
Hi guys,
A people want set a lot of command with .gdbinit,
He want set a breakpoint to a solib before load it.
He just got:
Function "www2" not defined.
Make breakpoint pending on future shared library load? (y or [n])
[answered N; input not from terminal]
We can handle this issue with load solib before set breakpoint. But
does GDB have some ways to set default value with input not from
terminal?
Thanks,
Hui
^ permalink raw reply [flat|nested] 15+ messages in thread
* MI Interface and Pretty Print to_string() result
2010-02-23 7:08 How to set default value of yquery and nquery Hui Zhu
@ 2010-02-23 7:53 ` Elmenthaler, Jens
2010-03-03 22:14 ` Tom Tromey
2010-02-23 17:13 ` How to set default value of yquery and nquery Tom Tromey
1 sibling, 1 reply; 15+ messages in thread
From: Elmenthaler, Jens @ 2010-02-23 7:53 UTC (permalink / raw)
To: gdb
If I see that right, there is no way to obtain the result of the to_string() method from a pretty printer for a dynamic variable object that is a child of another dynamic variable object.
-var-evaluate-expression returns "{...}" for anything that has children, and in order to use -data-evaluate-expression, I must be able to provide an expression that denotes the variable object. This however, seems not possible for dynamic variable objects that are a direct or indirect child of another dynamic variable object.
Is there some mistake on my side?
Would it help to enter a bug that -var-evualuate-expression always returns the result of the pretty printers to_string() method?
Jens.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: How to set default value of yquery and nquery
2010-02-23 7:08 How to set default value of yquery and nquery Hui Zhu
2010-02-23 7:53 ` MI Interface and Pretty Print to_string() result Elmenthaler, Jens
@ 2010-02-23 17:13 ` Tom Tromey
2010-02-24 6:08 ` Marc Khouzam
2010-02-24 6:19 ` Hui Zhu
1 sibling, 2 replies; 15+ messages in thread
From: Tom Tromey @ 2010-02-23 17:13 UTC (permalink / raw)
To: Hui Zhu; +Cc: gdb
>>>>> ">" == Hui Zhu <teawater@gmail.com> writes:
>> A people want set a lot of command with .gdbinit,
>> He want set a breakpoint to a solib before load it.
>> He just got:
>> Function "www2" not defined.
>> Make breakpoint pending on future shared library load? (y or [n])
>> [answered N; input not from terminal]
>> We can handle this issue with load solib before set breakpoint. But
>> does GDB have some ways to set default value with input not from
>> terminal?
In this particular case you can also use "set breakpoint pending".
I don't think there is a general facility for answering queries from a
script.
Tom
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: How to set default value of yquery and nquery
2010-02-23 17:13 ` How to set default value of yquery and nquery Tom Tromey
@ 2010-02-24 6:08 ` Marc Khouzam
2010-02-24 9:53 ` Hui Zhu
2010-02-24 6:19 ` Hui Zhu
1 sibling, 1 reply; 15+ messages in thread
From: Marc Khouzam @ 2010-02-24 6:08 UTC (permalink / raw)
To: 'tromey@redhat.com', 'Hui Zhu'
Cc: 'gdb@sourceware.org'
> -----Original Message-----
> From: gdb-owner@sourceware.org
> [mailto:gdb-owner@sourceware.org] On Behalf Of Tom Tromey
> Sent: Tuesday, February 23, 2010 12:14 PM
> To: Hui Zhu
> Cc: gdb@sourceware.org
> Subject: Re: How to set default value of yquery and nquery
>
> >>>>> ">" == Hui Zhu <teawater@gmail.com> writes:
>
> >> A people want set a lot of command with .gdbinit,
> >> He want set a breakpoint to a solib before load it.
> >> He just got:
> >> Function "www2" not defined.
> >> Make breakpoint pending on future shared library load? (y or [n])
> >> [answered N; input not from terminal]
>
> >> We can handle this issue with load solib before set
> breakpoint. But
> >> does GDB have some ways to set default value with input not from
> >> terminal?
>
> In this particular case you can also use "set breakpoint pending".
>
> I don't think there is a general facility for answering queries from a
> script.
This was my problem with Eclipse and PRecord. When a query is answered
not from a terminal it always takes the the default
(N for nquery(), Y for for query() and yquery()).
That is why we had to make PRecord use query() instead of nquery()
For pending breakpoints you have "set breakpoint pending" that Tom
mentions, but if anyone else uses nquery() (no one currently does),
they would have to add their own optional setting.
We discussed a bunch of ways to improve this when I had the problem.
But the easiest fix was to not use nquery() :-)
Marc
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: How to set default value of yquery and nquery
2010-02-23 17:13 ` How to set default value of yquery and nquery Tom Tromey
2010-02-24 6:08 ` Marc Khouzam
@ 2010-02-24 6:19 ` Hui Zhu
1 sibling, 0 replies; 15+ messages in thread
From: Hui Zhu @ 2010-02-24 6:19 UTC (permalink / raw)
To: tromey; +Cc: gdb
Thanks Tom.
Hui
On Wed, Feb 24, 2010 at 01:13, Tom Tromey <tromey@redhat.com> wrote:
>>>>>> ">" == Hui Zhu <teawater@gmail.com> writes:
>
>>> A people want set a lot of command with .gdbinit,
>>> He want set a breakpoint to a solib before load it.
>>> He just got:
>>> Function "www2" not defined.
>>> Make breakpoint pending on future shared library load? (y or [n])
>>> [answered N; input not from terminal]
>
>>> We can handle this issue with load solib before set breakpoint. But
>>> does GDB have some ways to set default value with input not from
>>> terminal?
>
> In this particular case you can also use "set breakpoint pending".
>
> I don't think there is a general facility for answering queries from a
> script.
>
> Tom
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: How to set default value of yquery and nquery
2010-02-24 6:08 ` Marc Khouzam
@ 2010-02-24 9:53 ` Hui Zhu
2010-02-24 16:41 ` Marc Khouzam
0 siblings, 1 reply; 15+ messages in thread
From: Hui Zhu @ 2010-02-24 9:53 UTC (permalink / raw)
To: Marc Khouzam, tromey; +Cc: gdb
On Wed, Feb 24, 2010 at 04:51, Marc Khouzam <marc.khouzam@ericsson.com> wrote:
>> -----Original Message-----
>> From: gdb-owner@sourceware.org
>> [mailto:gdb-owner@sourceware.org] On Behalf Of Tom Tromey
>> Sent: Tuesday, February 23, 2010 12:14 PM
>> To: Hui Zhu
>> Cc: gdb@sourceware.org
>> Subject: Re: How to set default value of yquery and nquery
>>
>> >>>>> ">" == Hui Zhu <teawater@gmail.com> writes:
>>
>> >> A people want set a lot of command with .gdbinit,
>> >> He want set a breakpoint to a solib before load it.
>> >> He just got:
>> >> Function "www2" not defined.
>> >> Make breakpoint pending on future shared library load? (y or [n])
>> >> [answered N; input not from terminal]
>>
>> >> We can handle this issue with load solib before set
>> breakpoint. But
>> >> does GDB have some ways to set default value with input not from
>> >> terminal?
>>
>> In this particular case you can also use "set breakpoint pending".
>>
>> I don't think there is a general facility for answering queries from a
>> script.
>
Do you think we can add a command to set the non-terminal query answer?
For example:
set non-terminal-query-default yes/no/auto
auto This is the default value. query/yquery/nquery answer will like before.
yes query/yquery/nquery answer will be yes
no query/yquery/nquery answer will be no
> This was my problem with Eclipse and PRecord. When a query is answered
> not from a terminal it always takes the the default
> (N for nquery(), Y for for query() and yquery()).
> That is why we had to make PRecord use query() instead of nquery()
>
This is really a long issue. I remember that someone said this issue
will be handle by MI after 7.0 release.
Thanks,
Hui
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: How to set default value of yquery and nquery
2010-02-24 9:53 ` Hui Zhu
@ 2010-02-24 16:41 ` Marc Khouzam
2010-02-25 16:26 ` Hui Zhu
0 siblings, 1 reply; 15+ messages in thread
From: Marc Khouzam @ 2010-02-24 16:41 UTC (permalink / raw)
To: 'Hui Zhu', 'tromey@redhat.com'
Cc: 'gdb@sourceware.org'
> Do you think we can add a command to set the non-terminal
> query answer?
> For example:
> set non-terminal-query-default yes/no/auto
> auto This is the default value. query/yquery/nquery answer
> will like before.
> yes query/yquery/nquery answer will be yes
> no query/yquery/nquery answer will be no
This is not perfect because every query would be answered
the same way. From a non-terminal, you many want to answer
'y' to one query and 'n' to another.
Furthermore, sometimes the query is not directly triggered
by the command used. For example, changing a variable value
will trigger a query from PRecord, but it is not really
the 'set' command that sends the query, it is PRecord.
I believe the cleanest solution up to now was to have
individual setting for each query. I didn't like that too much
myself, but I don't have a better suggestion.
> > This was my problem with Eclipse and PRecord. When a query
> is answered
> > not from a terminal it always takes the the default
> > (N for nquery(), Y for for query() and yquery()).
> > That is why we had to make PRecord use query() instead of nquery()
> >
>
> This is really a long issue. I remember that someone said this issue
> will be handle by MI after 7.0 release.
>
> Thanks,
> Hui
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: How to set default value of yquery and nquery
2010-02-24 16:41 ` Marc Khouzam
@ 2010-02-25 16:26 ` Hui Zhu
2010-02-26 0:23 ` Marc Khouzam
0 siblings, 1 reply; 15+ messages in thread
From: Hui Zhu @ 2010-02-25 16:26 UTC (permalink / raw)
To: Marc Khouzam; +Cc: tromey, gdb
On Wed, Feb 24, 2010 at 21:42, Marc Khouzam <marc.khouzam@ericsson.com> wrote:
>
>> Do you think we can add a command to set the non-terminal
>> query answer?
>> For example:
>> set non-terminal-query-default yes/no/auto
>> auto This is the default value. query/yquery/nquery answer
>> will like before.
>> yes query/yquery/nquery answer will be yes
>> no query/yquery/nquery answer will be no
>
> This is not perfect because every query would be answered
> the same way. From a non-terminal, you many want to answer
> 'y' to one query and 'n' to another.
>
For my idea, it just to handle the query/yquery/nquery and simple commands.
After this command complete, set it back to auto can handle it.
>
> Furthermore, sometimes the query is not directly triggered
> by the command used. For example, changing a variable value
> will trigger a query from PRecord, but it is not really
> the 'set' command that sends the query, it is PRecord.
>
Sorry for make you spend a lot of time on query and prec, I think
yquery and nquery didn't can be control when non-terminal is really a
big trouble.
I will try to make each of them have a set commands. And could you
tell me which one make you feel bad? I will do it first. :)
> I believe the cleanest solution up to now was to have
> individual setting for each query. I didn't like that too much
> myself, but I don't have a better suggestion.
>
I suggest each nquery or yquery have a set command together.
The more clear way I think is the query will tell user howto set it
non-terminal. Maybe it is too tangled.
Best regards,
Hui
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: How to set default value of yquery and nquery
2010-02-25 16:26 ` Hui Zhu
@ 2010-02-26 0:23 ` Marc Khouzam
2010-02-26 17:31 ` Hui Zhu
0 siblings, 1 reply; 15+ messages in thread
From: Marc Khouzam @ 2010-02-26 0:23 UTC (permalink / raw)
To: Hui Zhu; +Cc: tromey, gdb
> -----Original Message-----
> From: Hui Zhu [mailto:teawater@gmail.com]
> Sent: February-25-10 1:34 AM
> To: Marc Khouzam
> Cc: tromey@redhat.com; gdb@sourceware.org
> Subject: Re: How to set default value of yquery and nquery
>
> On Wed, Feb 24, 2010 at 21:42, Marc Khouzam
> <marc.khouzam@ericsson.com> wrote:
> >
> >> Do you think we can add a command to set the non-terminal query
> >> answer?
> >> For example:
> >> set non-terminal-query-default yes/no/auto auto This is
> the default
> >> value. query/yquery/nquery answer will like before.
> >> yes query/yquery/nquery answer will be yes no
> query/yquery/nquery
> >> answer will be no
> >
> > This is not perfect because every query would be answered the same
> > way. From a non-terminal, you many want to answer 'y' to one query
> > and 'n' to another.
> >
>
> For my idea, it just to handle the query/yquery/nquery and
> simple commands.
> After this command complete, set it back to auto can handle it.
But sometimes you don't know if a command will cause a query,
like for Precord.
> > Furthermore, sometimes the query is not directly triggered by the
> > command used. For example, changing a variable value will
> trigger a
> > query from PRecord, but it is not really the 'set' command
> that sends
> > the query, it is PRecord.
> >
>
> Sorry for make you spend a lot of time on query and prec, I
> think yquery and nquery didn't can be control when
> non-terminal is really a big trouble.
> I will try to make each of them have a set commands. And
> could you tell me which one make you feel bad? I will do it
> first. :)
Everything if fixed now because you don't use nquery() anymore.
So, there is nothing to fix :-)
> > I believe the cleanest solution up to now was to have individual
> > setting for each query. I didn't like that too much myself, but I
> > don't have a better suggestion.
> >
>
> I suggest each nquery or yquery have a set command together.
Yes, I believe that was what the maintainers suggested.
And you have this for pending breakpoints.
> The more clear way I think is the query will tell user howto
> set it non-terminal. Maybe it is too tangled.
I didn't understand this.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: How to set default value of yquery and nquery
2010-02-26 0:23 ` Marc Khouzam
@ 2010-02-26 17:31 ` Hui Zhu
0 siblings, 0 replies; 15+ messages in thread
From: Hui Zhu @ 2010-02-26 17:31 UTC (permalink / raw)
To: Marc Khouzam; +Cc: tromey, gdb
On Thu, Feb 25, 2010 at 23:27, Marc Khouzam <marc.khouzam@ericsson.com> wrote:
>
>
>> -----Original Message-----
>> From: Hui Zhu [mailto:teawater@gmail.com]
>> Sent: February-25-10 1:34 AM
>> To: Marc Khouzam
>> Cc: tromey@redhat.com; gdb@sourceware.org
>> Subject: Re: How to set default value of yquery and nquery
>>
>> On Wed, Feb 24, 2010 at 21:42, Marc Khouzam
>> <marc.khouzam@ericsson.com> wrote:
>> >
>> >> Do you think we can add a command to set the non-terminal query
>> >> answer?
>> >> For example:
>> >> set non-terminal-query-default yes/no/auto auto This is
>> the default
>> >> value. query/yquery/nquery answer will like before.
>> >> yes query/yquery/nquery answer will be yes no
>> query/yquery/nquery
>> >> answer will be no
>> >
>> > This is not perfect because every query would be answered the same
>> > way. From a non-terminal, you many want to answer 'y' to one query
>> > and 'n' to another.
>> >
>>
>> For my idea, it just to handle the query/yquery/nquery and
>> simple commands.
>> After this command complete, set it back to auto can handle it.
>
> But sometimes you don't know if a command will cause a query,
> like for Precord.
>
>> > Furthermore, sometimes the query is not directly triggered by the
>> > command used. For example, changing a variable value will
>> trigger a
>> > query from PRecord, but it is not really the 'set' command
>> that sends
>> > the query, it is PRecord.
>> >
>>
>> Sorry for make you spend a lot of time on query and prec, I
>> think yquery and nquery didn't can be control when
>> non-terminal is really a big trouble.
>> I will try to make each of them have a set commands. And
>> could you tell me which one make you feel bad? I will do it
>> first. :)
>
> Everything if fixed now because you don't use nquery() anymore.
> So, there is nothing to fix :-)
>
>> > I believe the cleanest solution up to now was to have individual
>> > setting for each query. I didn't like that too much myself, but I
>> > don't have a better suggestion.
>> >
>>
>> I suggest each nquery or yquery have a set command together.
>
> Yes, I believe that was what the maintainers suggested.
> And you have this for pending breakpoints.
>
>> The more clear way I think is the query will tell user howto
>> set it non-terminal. Maybe it is too tangled.
>
> I didn't understand this.
For example:
(gdb) b w
No symbol table is loaded. Use the "file" command.
Make breakpoint pending (set breakpoint pending) on future shared
library load? (y or [n])
The (set breakpoint pending) let user know how to set the behavior.
Thanks,
Hui
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: MI Interface and Pretty Print to_string() result
2010-02-23 7:53 ` MI Interface and Pretty Print to_string() result Elmenthaler, Jens
@ 2010-03-03 22:14 ` Tom Tromey
2010-03-04 8:14 ` Elmenthaler, Jens
0 siblings, 1 reply; 15+ messages in thread
From: Tom Tromey @ 2010-03-03 22:14 UTC (permalink / raw)
To: Elmenthaler, Jens; +Cc: gdb
>>>>> "Jens" == Elmenthaler, Jens <jens.elmenthaler@verigy.com> writes:
Sorry I didn't reply to this sooner.
Jens> If I see that right, there is no way to obtain the result of the
Jens> to_string() method from a pretty printer for a dynamic variable
Jens> object that is a child of another dynamic variable object.
Yeah.
Jens> -var-evaluate-expression returns "{...}" for anything that has
Jens> children, and in order to use -data-evaluate-expression, I must be
Jens> able to provide an expression that denotes the variable
Jens> object. This however, seems not possible for dynamic variable
Jens> objects that are a direct or indirect child of another dynamic
Jens> variable object.
Jens> Is there some mistake on my side?
Nope. I'm afraid this is just an unsolved problem with the
pretty-printers. Note that the to_string result is not going to
necessarily give you an expression, either.
I don't know about -data-evaluate-expression, but we also don't support
-var-info-path-expression:
http://sourceware.org/bugzilla/show_bug.cgi?id=10252
I haven't looked at this in a while, despite owning the PR, but my
recollection is that I didn't even have a good idea for how it could
work.
Tom
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: MI Interface and Pretty Print to_string() result
2010-03-03 22:14 ` Tom Tromey
@ 2010-03-04 8:14 ` Elmenthaler, Jens
2010-03-05 23:49 ` Tom Tromey
0 siblings, 1 reply; 15+ messages in thread
From: Elmenthaler, Jens @ 2010-03-04 8:14 UTC (permalink / raw)
To: gdb
Tom> I don't know about -data-evaluate-expression, but we also don't support
Tom> -var-info-path-expression:
Tom> http://sourceware.org/bugzilla/show_bug.cgi?id=10252
Tom> I haven't looked at this in a while, despite owning the PR, but my
Tom> recollection is that I didn't even have a good idea for how it could
Tom> work.
If you could fix that, it would safe me (and possibly every other frontend) a lot of work! I'm close to deciding that enabling the pretty printers for the MI variable objects doesn't work.
The current issue is that if I have a pointer as a direct or indirect child of a dynamic variable object, how do I dereference it? The way it is done without pretty printers is to take the result of -var-info-path-expression, and than create a variable object for *(resulting-expression).
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: MI Interface and Pretty Print to_string() result
2010-03-04 8:14 ` Elmenthaler, Jens
@ 2010-03-05 23:49 ` Tom Tromey
2010-03-07 10:16 ` Elmenthaler, Jens
0 siblings, 1 reply; 15+ messages in thread
From: Tom Tromey @ 2010-03-05 23:49 UTC (permalink / raw)
To: Elmenthaler, Jens; +Cc: gdb
>>>>> "Jens" == Elmenthaler, Jens <jens.elmenthaler@verigy.com> writes:
Jens> The current issue is that if I have a pointer as a direct or
Jens> indirect child of a dynamic variable object, how do I dereference
Jens> it? The way it is done without pretty printers is to take the
Jens> result of -var-info-path-expression, and than create a variable
Jens> object for *(resulting-expression).
If that is the only problem, what about adding a new command to
dereference the pointer and add a child to the varobj?
The only way I can think of to truly implement -var-info-path-expression
would be to let the printers return path expressions. That is going to
yield some crazy expressions, though, for many typical containers.
Tom
^ permalink raw reply [flat|nested] 15+ messages in thread
* RE: MI Interface and Pretty Print to_string() result
2010-03-05 23:49 ` Tom Tromey
@ 2010-03-07 10:16 ` Elmenthaler, Jens
2010-03-08 20:17 ` Tom Tromey
0 siblings, 1 reply; 15+ messages in thread
From: Elmenthaler, Jens @ 2010-03-07 10:16 UTC (permalink / raw)
To: gdb
Jens> The current issue is that if I have a pointer as a direct or
Jens> indirect child of a dynamic variable object, how do I dereference
Jens> it? The way it is done without pretty printers is to take the
Jens> result of -var-info-path-expression, and than create a variable
Jens> object for *(resulting-expression).
Tom> If that is the only problem, what about adding a new command to
Tom> dereference the pointer and add a child to the varobj?
I noticed that the Eclipse CDT requires the result of -var-info-path-expression, but it is not used to dereference it and determine the children. The gdb already behaves nicely, as it returns a single child for references and pointers, which is the dereferenced value. This is independent of whether it is a actually a child of a pretty printer or not. So, the most important use case is handled perfectly.
I found it is used for the following purposes:
- display label: well, I can construct something meaningful easily
- determine address and size of the value, most notably, to create a watchpoint from it. Well, here a new MI command would indeed help. In order to determine address and size, the CDT builds new expressions from the value (i.e. "&(value-expression)" and "sizeof(value-expression)"), and calls -data-evaluate-expression. This is what is no longer possible with children of dynamic variable objects.
Tom> The only way I can think of to truly implement -var-info-path-
Tom> expression
Tom> would be to let the printers return path expressions. That is going to
Tom> yield some crazy expressions, though, for many typical containers.
Well, from what I saw in the Eclipse CDT, the main purpose of -var-info-path-expression is to be later able to use them in other expressions. The Eclipse CDT has an expressions view. As a user I would expect, that if a vector "v" displays a child with the name [0], that I also could create an expression v.[0] (well actually v[0], but this is not a real problem) in the expression view. However, that is not possible, since the gdb will not be able to evaluate this expression.
For this, it would be sufficient, if gdb would map "v.[0]" to the child named "[0]". The pretty printers children() method provides all information that is need. The relative expression of a child to it's parent simple is the name of the child. The expressions resulting from it don't look like real C/C++ anymore, but this is something a user could possibly deal with. In the worst case, a gdb frontend could polish that up by using the disply hint information.
Jens Elmenthaler
Platform & Components Lab
SW Designer R&D
Verigy Germany GmbH, Herrenberger Str. 130, 71034 Böblingen
Sitz der Gesellschaft: Böblingen - Amtsgericht Böblingen HRB 6167
WEEE-Reg.-Nr. DE 16968742
Geschäftsführer: Hans-Jürgen Wagner, Dietmar Höller
Tel: +49 7031 4357-119
jens.elmenthaler@verigy.com
-----Original Message-----
From: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] On Behalf Of Tom Tromey
Sent: Samstag, 6. März 2010 00:49
To: Elmenthaler, Jens
Cc: gdb@sourceware.org
Subject: Re: MI Interface and Pretty Print to_string() result
>>>>> "Jens" == Elmenthaler, Jens <jens.elmenthaler@verigy.com> writes:
Jens> The current issue is that if I have a pointer as a direct or
Jens> indirect child of a dynamic variable object, how do I dereference
Jens> it? The way it is done without pretty printers is to take the
Jens> result of -var-info-path-expression, and than create a variable
Jens> object for *(resulting-expression).
If that is the only problem, what about adding a new command to
dereference the pointer and add a child to the varobj?
The only way I can think of to truly implement -var-info-path-expression
would be to let the printers return path expressions. That is going to
yield some crazy expressions, though, for many typical containers.
Tom
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: MI Interface and Pretty Print to_string() result
2010-03-07 10:16 ` Elmenthaler, Jens
@ 2010-03-08 20:17 ` Tom Tromey
0 siblings, 0 replies; 15+ messages in thread
From: Tom Tromey @ 2010-03-08 20:17 UTC (permalink / raw)
To: Elmenthaler, Jens; +Cc: gdb
>>>>> "Jens" == Elmenthaler, Jens <jens.elmenthaler@verigy.com> writes:
Jens> - determine address and size of the value, most notably, to create
Jens> a watchpoint from it. Well, here a new MI command would indeed
Jens> help. In order to determine address and size, the CDT builds new
Jens> expressions from the value (i.e. "&(value-expression)" and
Jens> "sizeof(value-expression)"), and calls
Jens> -data-evaluate-expression. This is what is no longer possible with
Jens> children of dynamic variable objects.
Thanks, this is very helpful.
In many cases we could extract the address of a child value. This can
be done whenever the printer returns a Value object that was taken from
memory somewhere.
Another issue with -var-info-path-expression that I remembered is that
some of the expressions that we would want to return would actually be
unparseble by any gdb older than CVS HEAD. At least, the libstdc++
printers do casts to qualified pointer types, which were broken. We may
even need Keith's expr-cumulative merge to handle everything properly; I
am not sure.
Jens> For this, it would be sufficient, if gdb would map "v.[0]" to the
Jens> child named "[0]". The pretty printers children() method provides
Jens> all information that is need. The relative expression of a child
Jens> to it's parent simple is the name of the child. The expressions
Jens> resulting from it don't look like real C/C++ anymore, but this is
Jens> something a user could possibly deal with. In the worst case, a
Jens> gdb frontend could polish that up by using the disply hint
Jens> information.
Changing gdb to treat varobj names specially in an expression is
probably difficult. I'm not sure it is wise, either.
Having the printers emit "proper" expressions would also be nice... but
this also runs afoul of other gdb expression bugs. In C++ in particular
there are a number of unimplemented things. We're working on those, but
it will be a while before they are all finished.
Tom
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2010-03-08 20:17 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-23 7:08 How to set default value of yquery and nquery Hui Zhu
2010-02-23 7:53 ` MI Interface and Pretty Print to_string() result Elmenthaler, Jens
2010-03-03 22:14 ` Tom Tromey
2010-03-04 8:14 ` Elmenthaler, Jens
2010-03-05 23:49 ` Tom Tromey
2010-03-07 10:16 ` Elmenthaler, Jens
2010-03-08 20:17 ` Tom Tromey
2010-02-23 17:13 ` How to set default value of yquery and nquery Tom Tromey
2010-02-24 6:08 ` Marc Khouzam
2010-02-24 9:53 ` Hui Zhu
2010-02-24 16:41 ` Marc Khouzam
2010-02-25 16:26 ` Hui Zhu
2010-02-26 0:23 ` Marc Khouzam
2010-02-26 17:31 ` Hui Zhu
2010-02-24 6:19 ` Hui Zhu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox