Pretty-printed MI vars with children get "{...}" instead of the wanted string

Noam Yorav-Raphael noamraph@gmail.com
Wed Sep 9 07:21:00 GMT 2009


Hello,

I sent this as a bug (
http://sourceware.org/bugzilla/show_bug.cgi?id=10616 ), but as this is
an intended behavior, Tom asked me to raise the subject on the mailing
list.

The current situation in the python branch is that if a pretty-printer
has both a to_string() method and a children() method, in MI the
to_string method is ignored and instead "{...}" is used. The result is
that in a GUI which uses gdb as a backend, a variable gets no
meaningful text near it; it looks like this:

[+] x   {...}
[+] y   {...}

Only if I open the "x" node, I see meaningful stuff:

[-] x    {...}
 |---a   1
 |---b   2
 |---c   3
 ... more fields
[+] y   {...}

I have structs with quite a few number of fields, but only a few
usually change during the running of the program and should be
constantly viewed. I wrote a pretty-printer for the struct which
returns the important fields in the to_string() method, so now the GUI
should look like this:

[+] x   a=1,b=2
[+] y   {...}

And of course I can open the "x" node if I'm interested in some other
fields. This saves a lot of screen space and lets the user focus on
the important stuff.

I also wrote a pretty-printer to display 64-bit machine words, which
are treated as a vector of 8 bytes. Thus I see in the GUI:

[+] x   1,2,3,4,5,6,7,8
[+] y   {...}

I might have to make the "locals" pane (which is located on the left
side of the screen) a bit wider, but since today's screens are quite
wide, it's not a problem.
If the to_string() method is ignored, I have to open the variable view
in order to see the bytes:

[+] x   {...}
 |---[0]   1
 |---[1]   2
 |---[2]   3
 ... 5 more lines
[+] y   {...}

Since I only have about 30 rows to view locals, using 9 of them just
to view the value of x is quite wasteful.

So, can this be changed? I'm sure there are reasons why the current
behavior was chosen, but as you see, using the to_string() method can
improve the debugging experience significantly in some situations.

Thanks,
Noam



More information about the Archer mailing list