Re: MI: type prefixes for values

Nick Roberts
2006-05-06T09:59:27Z

> > Any comments on the patch I've send two weeks ago? Note that I'm not longer
> > interested in this patch myself, since I no longer use "--stack-list-frames
> > --all-values" in KDevelop, but I believe the patch affects the MI support
> > in Emacs that Nick is working on.

Sorry to be pedantic again, but this relates to -stack-list-locals
(and -stack-list-args), not -stack-list-frames.

> Here's a patch; before it I get:
>
> (gdb) i locals
> ref = (int &) @0x2ae2e8dc0392: 1287883081
> ref3 = (int &) @0x2ae2e90bc7a0: -385103520
> ref5 = (int &) @0x0: Cannot access memory at address 0x0
>
> After:
>
> (gdb) i locals
> ref = (int &) @0x2ac1ec165392: 1287883081
> ref3 = (int &) @0x2ac1ec4617a0: -330950304
> ref5 = (int &) @0x0: <error reading variable>
> ref7 = (int &) @0x40041b: 147096392
> ref9 = (int &) @0x400588: 352685384
> ref2 = (int &) @0x2ac1ec4630c0: -330969896
> ref4 = (int &) @0x2ac1ec460fe0: -330952736
> ref6 = (int &) @0x2ac1ec270ca0: 0
> ref8 = (int &) @0x4005f0: 610568524

> Similarly:

> (gdb) interpreter-exec mi "-stack-list-locals 1"
> ^done,locals=[{name="ref",value="(int &) @0x2ba30c30d392:
> 1287883081"},{name="ref3",value="(int &) @0x2ba30c6097a0:
> 207657312"},{name="ref5",value="(int &) @0x0: <error reading
> variable>"},{name="ref7",value="(int &) @0x40041b:
> 147096392"},{name="ref9",value="(int &) @0x400588:
> 352685384"},{name="ref2",value="(int &) @0x2ba30c60b0c0:
> 207637720"},{name="ref4",value="(int &) @0x2ba30c608fe0:
> 207654880"},{name="ref6",value="(int &) @0x2ba30c418ca0:
> 0"},{name="ref8",value="(int &) @0x4005f0: 610568524"}]

> We already print out various <angle brackets> messages for error
> conditions; I think adding a new one is fine. How about you?

It looks like you're catching the error lower down (higher up?) which allows
any other values to be printed. Right? I like this.

> This patch doesn't touch the issue of type prefixes, leaving that to
> deal with separately.

If I'm reading this right, I have since realised that my patch to use
common_val_print was no good because it only prints address and not values for
things like references

--
Nick http://www.inet.net.nz/~nickrob