|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <!-- Copyright (C) 1988-2020 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." -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <title>Debugging C Plus Plus (Debugging with GDB)</title>
-
- <meta name="description" content="Debugging C Plus Plus (Debugging with GDB)">
- <meta name="keywords" content="Debugging C Plus Plus (Debugging with GDB)">
- <meta name="resource-type" content="document">
- <meta name="distribution" content="global">
- <meta name="Generator" content="makeinfo">
- <link href="index.html#Top" rel="start" title="Top">
- <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
- <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
- <link href="C.html#C" rel="up" title="C">
- <link href="Decimal-Floating-Point.html#Decimal-Floating-Point" rel="next" title="Decimal Floating Point">
- <link href="Debugging-C.html#Debugging-C" rel="prev" title="Debugging C">
- <style type="text/css">
- <!--
- a.summary-letter {text-decoration: none}
- blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
- div.display {margin-left: 3.2em}
- div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
- kbd {font-style: oblique}
- pre.display {font-family: inherit}
- pre.format {font-family: inherit}
- pre.menu-comment {font-family: serif}
- pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
- span.nolinebreak {white-space: nowrap}
- span.roman {font-family: initial; font-weight: normal}
- span.sansserif {font-family: sans-serif; font-weight: normal}
- ul.no-bullet {list-style: none}
- -->
- </style>
-
-
- </head>
-
- <body lang="en">
- <a name="Debugging-C-Plus-Plus"></a>
- <div class="header">
- <p>
- Next: <a href="Decimal-Floating-Point.html#Decimal-Floating-Point" accesskey="n" rel="next">Decimal Floating Point</a>, Previous: <a href="Debugging-C.html#Debugging-C" accesskey="p" rel="prev">Debugging C</a>, Up: <a href="C.html#C" accesskey="u" rel="up">C</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
- </div>
- <hr>
- <a name="GDB-Features-for-C_002b_002b"></a>
- <h4 class="subsubsection">15.4.1.7 <small>GDB</small> Features for C<tt>++</tt></h4>
-
- <a name="index-commands-for-C_002b_002b"></a>
-
- <p>Some <small>GDB</small> commands are particularly useful with C<tt>++</tt>, and some are
- designed specifically for use with C<tt>++</tt>. Here is a summary:
- </p>
- <dl compact="compact">
- <dd><a name="index-break-in-overloaded-functions"></a>
- </dd>
- <dt><code><span class="roman">breakpoint menus</span></code></dt>
- <dd><p>When you want a breakpoint in a function whose name is overloaded,
- <small>GDB</small> has the capability to display a menu of possible breakpoint
- locations to help you specify which function definition you want.
- See <a href="Ambiguous-Expressions.html#Ambiguous-Expressions">Ambiguous Expressions</a>.
- </p>
- <a name="index-overloading-in-C_002b_002b"></a>
- </dd>
- <dt><code>rbreak <var>regex</var></code></dt>
- <dd><p>Setting breakpoints using regular expressions is helpful for setting
- breakpoints on overloaded functions that are not members of any special
- classes.
- See <a href="Set-Breaks.html#Set-Breaks">Setting Breakpoints</a>.
- </p>
- <a name="index-C_002b_002b-exception-handling"></a>
- </dd>
- <dt><code>catch throw</code></dt>
- <dt><code>catch rethrow</code></dt>
- <dt><code>catch catch</code></dt>
- <dd><p>Debug C<tt>++</tt> exception handling using these commands. See <a href="Set-Catchpoints.html#Set-Catchpoints">Setting Catchpoints</a>.
- </p>
- <a name="index-inheritance"></a>
- </dd>
- <dt><code>ptype <var>typename</var></code></dt>
- <dd><p>Print inheritance relationships as well as other information for type
- <var>typename</var>.
- See <a href="Symbols.html#Symbols">Examining the Symbol Table</a>.
- </p>
- </dd>
- <dt><code>info vtbl <var>expression</var>.</code></dt>
- <dd><p>The <code>info vtbl</code> command can be used to display the virtual
- method tables of the object computed by <var>expression</var>. This shows
- one entry per virtual table; there may be multiple virtual tables when
- multiple inheritance is in use.
- </p>
- <a name="index-C_002b_002b-demangling"></a>
- </dd>
- <dt><code>demangle <var>name</var></code></dt>
- <dd><p>Demangle <var>name</var>.
- See <a href="Symbols.html#Symbols">Symbols</a>, for a more complete description of the <code>demangle</code> command.
- </p>
- <a name="index-C_002b_002b-symbol-display"></a>
- </dd>
- <dt><code>set print demangle</code></dt>
- <dt><code>show print demangle</code></dt>
- <dt><code>set print asm-demangle</code></dt>
- <dt><code>show print asm-demangle</code></dt>
- <dd><p>Control whether C<tt>++</tt> symbols display in their source form, both when
- displaying code as C<tt>++</tt> source and when displaying disassemblies.
- See <a href="Print-Settings.html#Print-Settings">Print Settings</a>.
- </p>
- </dd>
- <dt><code>set print object</code></dt>
- <dt><code>show print object</code></dt>
- <dd><p>Choose whether to print derived (actual) or declared types of objects.
- See <a href="Print-Settings.html#Print-Settings">Print Settings</a>.
- </p>
- </dd>
- <dt><code>set print vtbl</code></dt>
- <dt><code>show print vtbl</code></dt>
- <dd><p>Control the format for printing virtual function tables.
- See <a href="Print-Settings.html#Print-Settings">Print Settings</a>.
- (The <code>vtbl</code> commands do not work on programs compiled with the HP
- ANSI C<tt>++</tt> compiler (<code>aCC</code>).)
- </p>
- <a name="index-set-overload_002dresolution"></a>
- <a name="index-overloaded-functions_002c-overload-resolution"></a>
- </dd>
- <dt><code>set overload-resolution on</code></dt>
- <dd><p>Enable overload resolution for C<tt>++</tt> expression evaluation. The default
- is on. For overloaded functions, <small>GDB</small> evaluates the arguments
- and searches for a function whose signature matches the argument types,
- using the standard C<tt>++</tt> conversion rules (see <a href="C-Plus-Plus-Expressions.html#C-Plus-Plus-Expressions">C<tt>++</tt> Expressions</a>, for details).
- If it cannot find a match, it emits a message.
- </p>
- </dd>
- <dt><code>set overload-resolution off</code></dt>
- <dd><p>Disable overload resolution for C<tt>++</tt> expression evaluation. For
- overloaded functions that are not class member functions, <small>GDB</small>
- chooses the first function of the specified name that it finds in the
- symbol table, whether or not its arguments are of the correct type. For
- overloaded functions that are class member functions, <small>GDB</small>
- searches for a function whose signature <em>exactly</em> matches the
- argument types.
- </p>
- <a name="index-show-overload_002dresolution"></a>
- </dd>
- <dt><code>show overload-resolution</code></dt>
- <dd><p>Show the current setting of overload resolution.
- </p>
- </dd>
- <dt><code><span class="roman">Overloaded symbol names</span></code></dt>
- <dd><p>You can specify a particular definition of an overloaded symbol, using
- the same notation that is used to declare such symbols in C<tt>++</tt>: type
- <code><var>symbol</var>(<var>types</var>)</code> rather than just <var>symbol</var>. You can
- also use the <small>GDB</small> command-line word completion facilities to list the
- available choices, or to finish the type list for you.
- See <a href="Completion.html#Completion">Command Completion</a>, for details on how to do this.
- </p>
- </dd>
- <dt><code><span class="roman">Breakpoints in functions with ABI tags</span></code></dt>
- <dd>
- <p>The GNU C<tt>++</tt> compiler introduced the notion of ABI “tags”, which
- correspond to changes in the ABI of a type, function, or variable that
- would not otherwise be reflected in a mangled name. See
- <a href="https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/">https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/</a>
- for more detail.
- </p>
- <p>The ABI tags are visible in C<tt>++</tt> demangled names. For example, a
- function that returns a std::string:
- </p>
- <div class="smallexample">
- <pre class="smallexample">std::string function(int);
- </pre></div>
-
- <p>when compiled for the C++11 ABI is marked with the <code>cxx11</code> ABI
- tag, and <small>GDB</small> displays the symbol like this:
- </p>
- <div class="smallexample">
- <pre class="smallexample">function[abi:cxx11](int)
- </pre></div>
-
- <p>You can set a breakpoint on such functions simply as if they had no
- tag. For example:
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) b function(int)
- Breakpoint 2 at 0x40060d: file main.cc, line 10.
- (gdb) info breakpoints
- Num Type Disp Enb Address What
- 1 breakpoint keep y 0x0040060d in function[abi:cxx11](int)
- at main.cc:10
- </pre></div>
-
- <p>On the rare occasion you need to disambiguate between different ABI
- tags, you can do so by simply including the ABI tag in the function
- name, like:
- </p>
- <div class="smallexample">
- <pre class="smallexample">(gdb) b ambiguous[abi:other_tag](int)
- </pre></div>
- </dd>
- </dl>
-
- <hr>
- <div class="header">
- <p>
- Next: <a href="Decimal-Floating-Point.html#Decimal-Floating-Point" accesskey="n" rel="next">Decimal Floating Point</a>, Previous: <a href="Debugging-C.html#Debugging-C" accesskey="p" rel="prev">Debugging C</a>, Up: <a href="C.html#C" accesskey="u" rel="up">C</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
- </div>
-
-
-
- </body>
- </html>
|