[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
8.7 Print Settings
No value for GDBN provides the following ways to control how arrays, structures, and symbols are printed.
These settings are useful for debugging programs in any language:
-
set print address
-
set print address on
-
No value for GDBN prints memory addresses showing the location of stack traces, structure values, pointer values, breakpoints, and so forth, even when it also displays the contents of those addresses. The default is
on
. For example, this is what a stack frame display looks like withset print address on
:(No value for GDBP) f #0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>") at input.c:530 530 if (lquote != def_lquote)
-
set print address off
Do not print addresses when displaying their contents. For example, this is the same stack frame displayed with
set print address off
:(No value for GDBP) set print addr off (No value for GDBP) f #0 set_quotes (lq="<<", rq=">>") at input.c:530 530 if (lquote != def_lquote)
You can use ‘set print address off’ to eliminate all machine dependent displays from the No value for GDBN interface. For example, with
print address off
, you should get the same text for backtraces on all machines—whether or not they involve pointer arguments.-
show print address
Show whether or not addresses are to be printed.
When No value for GDBN prints a symbolic address, it normally prints the
closest earlier symbol plus an offset. If that symbol does not uniquely
identify the address (for example, it is a name whose scope is a single
source file), you may need to clarify. One way to do this is with
info line
, for example ‘info line *0x4537’. Alternately,
you can set No value for GDBN to print the source file and line number when
it prints a symbolic address:
-
set print symbol-filename on
-
Tell No value for GDBN to print the source file name and line number of a symbol in the symbolic form of an address.
-
set print symbol-filename off
Do not print source file name and line number of a symbol. This is the default.
-
show print symbol-filename
Show whether or not No value for GDBN will print the source file name and line number of a symbol in the symbolic form of an address.
Another situation where it is helpful to show symbol filenames and line numbers is when disassembling code; No value for GDBN shows you the line number and source file that corresponds to each instruction.
Also, you may wish to see the symbolic form only if the address being printed is reasonably close to the closest earlier symbol:
-
set print max-symbolic-offset max-offset
-
Tell No value for GDBN to only display the symbolic form of an address if the offset between the closest earlier symbol and the address is less than max-offset. The default is 0, which tells No value for GDBN to always print the symbolic form of an address if any symbol precedes it.
-
show print max-symbolic-offset
Ask how large the maximum offset is that No value for GDBN prints in a symbolic address.
If you have a pointer and you are not sure where it points, try
‘set print symbol-filename on’. Then you can determine the name
and source file location of the variable where it points, using
‘p/a pointer’. This interprets the address in symbolic form.
For example, here No value for GDBN shows that a variable ptt
points
at another variable t
, defined in ‘hi2.c’:
(No value for GDBP) set print symbol-filename on (No value for GDBP) p/a ptt $4 = 0xe008 <t in hi2.c> |
Warning: For pointers that point to a local variable, ‘p/a’ does not show the symbol name and filename of the referent, even with the appropriate
set print
options turned on.
Other settings control how different kinds of objects are printed:
-
set print array
-
set print array on
-
Pretty print arrays. This format is more convenient to read, but uses more space. The default is off.
-
set print array off
Return to compressed format for arrays.
-
show print array
Show whether compressed or pretty format is selected for displaying arrays.
-
set print array-indexes
-
set print array-indexes on
Print the index of each element when displaying arrays. May be more convenient to locate a given element in the array or quickly find the index of a given element in that printed array. The default is off.
-
set print array-indexes off
Stop printing element indexes when displaying arrays.
-
show print array-indexes
Show whether the index of each element is printed when displaying arrays.
-
set print elements number-of-elements
-
Set a limit on how many elements of an array No value for GDBN will print. If No value for GDBN is printing a large array, it stops printing after it has printed the number of elements set by the
set print elements
command. This limit also applies to the display of strings. When No value for GDBN starts, this limit is set to 200. Setting number-of-elements to zero means that the printing is unlimited. -
show print elements
Display the number of elements of a large array that No value for GDBN will print. If the number is 0, then the printing is unlimited.
-
set print repeats
-
Set the threshold for suppressing display of repeated array elements. When the number of consecutive identical elements of an array exceeds the threshold, No value for GDBN prints the string
"<repeats n times>"
, where n is the number of identical repetitions, instead of displaying the identical elements themselves. Setting the threshold to zero will cause all elements to be individually printed. The default threshold is 10. -
show print repeats
Display the current threshold for printing repeated identical elements.
-
set print null-stop
-
Cause No value for GDBN to stop printing the characters of an array when the first NULL is encountered. This is useful when large arrays actually contain only short strings. The default is off.
-
show print null-stop
Show whether No value for GDBN stops printing an array on the first NULL character.
-
set print pretty on
-
Cause No value for GDBN to print structures in an indented format with one member per line, like this:
$1 = { next = 0x0, flags = { sweet = 1, sour = 1 }, meat = 0x54 "Pork" }
-
set print pretty off
Cause No value for GDBN to print structures in a compact format, like this:
$1 = {next = 0x0, flags = {sweet = 1, sour = 1}, \ meat = 0x54 "Pork"}
This is the default format.
-
show print pretty
Show which format No value for GDBN is using to print structures.
-
set print sevenbit-strings on
-
Print using only seven-bit characters; if this option is set, No value for GDBN displays any eight-bit characters (in strings or character values) using the notation
\
nnn. This setting is best if you are working in English (ASCII) and you use the high-order bit of characters as a marker or “meta” bit. -
set print sevenbit-strings off
Print full eight-bit characters. This allows the use of more international character sets, and is the default.
-
show print sevenbit-strings
Show whether or not No value for GDBN is printing only seven-bit characters.
-
set print union on
-
Tell No value for GDBN to print unions which are contained in structures and other unions. This is the default setting.
-
set print union off
Tell No value for GDBN not to print unions which are contained in structures and other unions. No value for GDBN will print
"{...}"
instead.-
show print union
Ask No value for GDBN whether or not it will print unions which are contained in structures and other unions.
For example, given the declarations
typedef enum {Tree, Bug} Species; typedef enum {Big_tree, Acorn, Seedling} Tree_forms; typedef enum {Caterpillar, Cocoon, Butterfly} Bug_forms; struct thing { Species it; union { Tree_forms tree; Bug_forms bug; } form; }; struct thing foo = {Tree, {Acorn}};
with
set print union on
in effect ‘p foo’ would print$1 = {it = Tree, form = {tree = Acorn, bug = Cocoon}}
and with
set print union off
in effect it would print$1 = {it = Tree, form = {...}}
set print union
affects programs written in C-like languages and in Pascal.
These settings are of interest when debugging C++ programs:
-
set print demangle
-
set print demangle on
Print C++ names in their source form rather than in the encoded (“mangled”) form passed to the assembler and linker for type-safe linkage. The default is on.
-
show print demangle
Show whether C++ names are printed in mangled or demangled form.
-
set print asm-demangle
-
set print asm-demangle on
Print C++ names in their source form rather than their mangled form, even in assembler code printouts such as instruction disassemblies. The default is off.
-
show print asm-demangle
Show whether C++ names in assembly listings are printed in mangled or demangled form.
-
set demangle-style style
Choose among several encoding schemes used by different compilers to represent C++ names. The choices for style are currently:
-
auto
Allow No value for GDBN to choose a decoding style by inspecting your program.
-
gnu
Decode based on the GNU C++ compiler (
g++
) encoding algorithm. This is the default.-
hp
Decode based on the HP ANSI C++ (
aCC
) encoding algorithm.-
lucid
Decode based on the Lucid C++ compiler (
lcc
) encoding algorithm.-
arm
Decode using the algorithm in the C++ Annotated Reference Manual. Warning: this setting alone is not sufficient to allow debugging
cfront
-generated executables. No value for GDBN would require further enhancement to permit that.
If you omit style, you will see a list of possible formats.
-
-
show demangle-style
Display the encoding style currently in use for decoding C++ symbols.
-
set print object
-
set print object on
-
When displaying a pointer to an object, identify the actual (derived) type of the object rather than the declared type, using the virtual function table.
-
set print object off
Display only the declared type of objects, without reference to the virtual function table. This is the default setting.
-
show print object
Show whether actual, or declared, object types are displayed.
-
set print static-members
-
set print static-members on
-
Print static members when displaying a C++ object. The default is on.
-
set print static-members off
Do not print static members when displaying a C++ object.
-
show print static-members
Show whether C++ static members are printed or not.
-
set print pascal_static-members
-
set print pascal_static-members on
-
Print static members when displaying a Pascal object. The default is on.
-
set print pascal_static-members off
Do not print static members when displaying a Pascal object.
-
show print pascal_static-members
Show whether Pascal static members are printed or not.
-
set print vtbl
-
set print vtbl on
-
Pretty print C++ virtual function tables. The default is off. (The
vtbl
commands do not work on programs compiled with the HP ANSI C++ compiler (aCC
).) -
set print vtbl off
Do not pretty print C++ virtual function tables.
-
show print vtbl
Show whether C++ virtual function tables are pretty printed, or not.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |