https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59161

--- Comment #8 from Pedro Alves <palves at redhat dot com> ---
Sounds like Paul's original patch may have introduced an undesired conflation. 
AFAICS, options.addressprint's exists to implement "set print address on/off",
which had for original motivation, from the manual:

 You can use @samp{set print address off} to eliminate all machine
 dependent displays from the @value{GDBN} interface.  For example, with
 @code{print address off}, you should get the same text for backtraces on
 all machines---whether or not they involve pointer arguments.

[1] https://sourceware.org/gdb/current/onlinedocs/gdb/Print-Settings.html

With that in mind, skipping the address on references seems to make as much
sense as skipping it on pointers.


Let's also take a look at what happens if you bypass the printer, with /r:

 (gdb) set print address on
 (gdb) p /r it
 $2 = {_M_current = 0x614c20}
 (gdb) p /r it._M_current 
 $3 = (C *) 0x614c20
 (gdb) p /r *it._M_current 
 $4 = {ref = @0x7fffffffd908}
 (gdb) p /r it._M_current.ref
 $5 = (int &) @0x7fffffffd908: 1

 (gdb) set print address off 
 (gdb) p /r it
 $6 = {_M_current = }
 (gdb) p /r it._M_current
 $7 = (C *) 
 (gdb) p /r *it._M_current 
 $8 = {ref = }
 (gdb) p /r it._M_current.ref
 $9 = (int &) 1

Particularly, note how:

 (gdb) p /r *it._M_current 
 $4 = {ref = @0x7fffffffd908}

doesn't print the value of the reference field, while if you print it directly,
it's printed:

 (gdb) p /r it._M_current.ref
 $5 = (int &) @0x7fffffffd908: 1

I wonder whether we should change gdb to print it, like:

 (gdb) p /r *it._M_current 
 $1 = {ref = (int &) @0x7fffffffd908: 1}

and then with "print address off", you'd get:

 (gdb) p /r *it._M_current 
 $1 = {ref = (int &) 1}

But that question should be answered independently from the pretty printer
question.  I.e., what do people that debug C++ programs would find the most
useful default behavior to be, without pretty printers in the picture.  (Not
enough C++ references in GDB's own codebase yet for me to have a clear opinion
yet.  :-) )

Reply via email to