Re: -stack-list-locals and children

André Pönitz
2009-06-29T08:37:29Z

On Monday 29 June 2009 10:13:28 Nick Roberts wrote:
> > > -stack-list-locals doesn't return an numchild element. How can the IDE
> > > know if a local
> > > is has children?
> > >
> > > If there are children, they are listed in value:
> > > ^done,locals=[{name="list",value="QList = {[0] = \"hello\"}"}]
> > >
> > > Is it a good idea to parse the value with an regular expression to
> > > find out if there are children?
> >
> > It would be really nice if 'type' and 'numchild' information was directly
> > included in that "primary" output. The information is available on
> > the gdb side, so parsing it from the 'value' field does not really look
> > like a good solution in the long run.
>
> What would you do with this information?

Use it in a GUI frontend to determine whether the item should be
expandable or not.

> Note that -stack-list-locals --simple-values _does_ give type information and,
> if this is presented to the user, he can usually infer the number of children.
> In the manual:
>
> -stack-list-locals --simple-values
> ^done,locals=[{name="A",type="int",value="1"},
> {name="B",type="int",value="2"},{name="C",type="int [3]"}]
> (gdb) ^^^^^^^
>
> C has three children.

Sure I can filter out whatever information is implicitly provided in the output,
and ask for more if needed. But as roundtrips through gdb are expensive
time-wise It would be nicer though if all information necessary to build the
top level of the typical "variable view" could be extracted from gdb in one go.

> Remember that these aren't variable objects but in Emacs, at least, you can
> make variable objects from them simply by clicking mouse-2 on them in the
> locals buffer.
>
> It can be expensive to make variable objects from all the locals every time
> the frame changes but this is what Insight does, and Apple GDB has MI code
> to do it. So maybe Xcode does too.

Apple creates variables automatically and it is not slow.

Andre'