summaryrefslogtreecommitdiff
path: root/share/doc/gdb/Debugging-C-Plus-Plus.html
diff options
context:
space:
mode:
authoralk3pInjection <webmaster@raspii.tech>2024-02-04 16:16:35 +0800
committeralk3pInjection <webmaster@raspii.tech>2024-02-04 16:16:35 +0800
commit6ce4ebed87858ecdd79a1091367c6e961055daa9 (patch)
tree1c2a6a60531acf791531bbd9c8ac14c23ef8a66c /share/doc/gdb/Debugging-C-Plus-Plus.html
Import stripped Arm GNU Toolchain 13.2.Rel1HEADumineko
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads Change-Id: I7303388733328cd98ab9aa3c30236db67f2e9e9c
Diffstat (limited to 'share/doc/gdb/Debugging-C-Plus-Plus.html')
-rw-r--r--share/doc/gdb/Debugging-C-Plus-Plus.html250
1 files changed, 250 insertions, 0 deletions
diff --git a/share/doc/gdb/Debugging-C-Plus-Plus.html b/share/doc/gdb/Debugging-C-Plus-Plus.html
new file mode 100644
index 0000000..563d649
--- /dev/null
+++ b/share/doc/gdb/Debugging-C-Plus-Plus.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Copyright (C) 1988-2023 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 5.1, http://www.gnu.org/software/texinfo/ -->
+<head>
+<title>Debugging with GDB: Debugging C Plus Plus</title>
+
+<meta name="description" content="Debugging with GDB: Debugging C Plus Plus">
+<meta name="keywords" content="Debugging with GDB: Debugging C Plus Plus">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<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="previous" title="Debugging C">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.indentedblock {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
+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.nocodebreak {white-space:nowrap}
+span.nolinebreak {white-space:nowrap}
+span.roman {font-family:serif; font-weight:normal}
+span.sansserif {font-family:sans-serif; font-weight:normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<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="previous">Debugging C</a>, Up: <a href="C.html#C" accesskey="u" rel="up">C</a> &nbsp; [<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 template functions</span></code></dt>
+<dd>
+<p>Similar to how overloaded symbols are handled, <small>GDB</small> will ignore
+template parameter lists when it encounters a symbol which includes a
+C<tt>++</tt> template. This permits setting breakpoints on families of template functions
+or functions whose parameters include template types.
+</p>
+<p>The <kbd>-qualified</kbd> flag may be used to override this behavior, causing
+<small>GDB</small> to search for a specific function or type.
+</p>
+<p>The <small>GDB</small> command-line word completion facility also understands
+template parameters and may be used to list available choices or finish
+template parameter lists 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 &ldquo;tags&rdquo;, 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="previous">Debugging C</a>, Up: <a href="C.html#C" accesskey="u" rel="up">C</a> &nbsp; [<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>