blob: 435b1e724749425be9984716ca51687ed5dfc1b6 [file] [log] [blame]
<html lang="en">
<head>
<title>Pretty Printing - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Data.html#Data" title="Data">
<link rel="prev" href="Print-Settings.html#Print-Settings" title="Print Settings">
<link rel="next" href="Value-History.html#Value-History" title="Value History">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software'' and ``Free Software Needs
Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
and with the Back-Cover Texts as in (a) below.
(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
this GNU Manual. Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Pretty-Printing"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Value-History.html#Value-History">Value History</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Print-Settings.html#Print-Settings">Print Settings</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Data.html#Data">Data</a>
<hr>
</div>
<h3 class="section">10.9 Pretty Printing</h3>
<p><span class="sc">gdb</span> provides a mechanism to allow pretty-printing of values using
Python code. It greatly simplifies the display of complex objects. This
mechanism works for both MI and the CLI.
<p>For example, here is how a C<tt>++</tt> <code>std::string</code> looks without a
pretty-printer:
<pre class="smallexample"> (gdb) print s
$1 = {
static npos = 4294967295,
_M_dataplus = {
&lt;std::allocator&lt;char&gt;&gt; = {
&lt;__gnu_cxx::new_allocator&lt;char&gt;&gt; = {
&lt;No data fields&gt;}, &lt;No data fields&gt;
},
members of std::basic_string&lt;char, std::char_traits&lt;char&gt;,
std::allocator&lt;char&gt; &gt;::_Alloc_hider:
_M_p = 0x804a014 "abcd"
}
}
</pre>
<p>With a pretty-printer for <code>std::string</code> only the contents are printed:
<pre class="smallexample"> (gdb) print s
$2 = "abcd"
</pre>
<p>For implementing pretty printers for new types you should read the Python API
details (see <a href="Pretty-Printing-API.html#Pretty-Printing-API">Pretty Printing API</a>).
</body></html>