metz@iam.unibe.ch (Igor Metz) (08/09/89)
The GDB Manual for version 3.2 doesn't mention set prettyprint and set unionprint A patch is included below. Igor Metz X400: metz@iam.unibe.ch Institut fuer Informatik ARPA: metz%iam.unibe.ch@relay.cs.net und angewandte Mathematik UUCP: ..!uunet!mcvax!iam.unibe.ch!metz Universitaet Bern Switzerland Phone: (+41) 31 65 49 90 *** gdb.texinfo.old Wed Aug 9 15:11:42 1989 --- gdb.texinfo Wed Aug 9 16:35:34 1989 *************** *** 2669,2675 **** you can use the @samp{print} command with just a format and no expression. For example, @samp{p/x} reprints the last value in hex. ! @node Memory, Auto Display, Formats, Data @subsection Examining Memory @cindex examining memory --- 2669,2676 ---- you can use the @samp{print} command with just a format and no expression. For example, @samp{p/x} reprints the last value in hex. ! ! @node Memory, Structures, Formats, Data @subsection Examining Memory @cindex examining memory *************** *** 2817,2822 **** --- 2818,2909 ---- single argument to this command is a pc value; the function surrounding this value will be dumped. Two arguments specify a range of address (first inclusive, second exclusive) to be dumped. + + @node Structures, Auto Display, Memory, Data + @subsection Examining Structures + + @cindex examining structures + @kindex x + @noindent + When a user examines a C structure or C++ class with the @samp{print} command, + GDB normally prints the value in a compact format. A more pleasant format can + be enabled with the @samp{set prettyprint} command: + + @table @code + @kindex set prettyprint + @item set prettyprint off + Turns off prettyprinting of structures and classes. + + @item set prettyprint on + Turns on prettyprinting of structures and classes. + @end table + + When the user examines structures containing unions, the values of + unionmembers are normally not not printed. The display of unionmembers can be + controlled by the command @samp{set unionprint}: + + @table @code + @kindex set unionprint + @item set unionprint off + Turns off printing of unions interior to structures. + + @item set unionprint on + Turns on printing of unions interior to structures. + @end table + + Consider the following C structure: + + @example + struct @{ + char *name; + int flags; + union @{ + int ival; + float fval; + char *pval; + @} uval; + @} symtab[5]; + @end example + + With @samp{set prettyprint off} and @samp{set unionprint off}, if you type + @samp{print symtab[0]}, you'll get + + @example + $1 = @{name = 0x0, flags = 0, uval = @{...@}@} + @end example + + With @samp{set prettyprint off} and @samp{set unionprint on}, if you type + @samp{print symtab[0]}, you'll get + + @example + $1 = @{name = 0x0, flags = 0, uval = @{ival = 0, fval = 0, pval = 0x0@}@} + @end example + + With @samp{set prettyprint on} and @samp{set unionprint off}, if you type + @samp{print symtab[0]}, you'll get + + @example + $1 = @{ + name = 0x0, + flags = 0, + uval = @{...@} + @} + @end example + + With @samp{set prettyprint on} and @samp{set unionprint on}, if you type + @samp{print symtab[0]}, you'll get + + @example + $1 = @{ + name = 0x0, + flags = 0, + uval = @{ + ival = 0, + fval = 0, + pval = 0x0 + @} + @} + @end example @node Auto Display, Value History, Memory, Data @section Automatic Display