+%%%%%%%%%%%%%%%% gdb-refcard.tex %%%%%%%%%%%%%%%%
+
%This file is TeX source for a reference card describing GDB, the GNU debugger.
-%$Id$
-%Copyright (C) 1991 Free Software Foundation, Inc.
+%Copyright (C) 1991-1993, 1996, 1998-2000, 2007-2012 Free Software
+%Foundation, Inc.
%Permission is granted to make and distribute verbatim copies of
%this reference provided the copyright notices and permission notices
%are preserved on all copies.
%
%This program is free software; you can redistribute it and/or modify
%it under the terms of the GNU General Public License as published by
-%the Free Software Foundation; either version 1, or (at your option)
+%the Free Software Foundation; either version 3, or (at your option)
%any later version.
%
%This program is distributed in the hope that it will be useful, but
%MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%General Public License for more details.
%
-%You can find a copy of the GNU General Public License in the GDB
-%manual; or write to the Free Software Foundation, Inc.,
-%675 Mass Ave, Cambridge, MA 02139, USA.
+%You should have received a copy of the GNU General Public License
+%along with this program. If not, see <http://www.gnu.org/licenses/>.
+%
+%You can contact the maintainer at: doc@cygnus.com
+%
+% Documentation Department
+% Cygnus Solutions
+% 1325 Chesapeake Terrace
+% Sunnyvale, CA 94089 USA
+%
+% +1 800 CYGNUS-1
+%
+%
%
-%You can contact the author as: pesch@cygnus.com
+% 22-AUG-1993 Andreas Vogel
%
-% Roland Pesch
-% Cygnus Support
-% 814 University Ave.
-% Palo Alto, CA 94301 USA
+% Modifications made in order to handle different papersizes correctly.
+% You only have to set the total width and height of the paper, the
+% horizontal and vertical margin space measured from *paper edge*
+% and the interline and interspec spacing.
+% In order to support a new papersize, you have to fiddle with the
+% latter four dimensions. Just try out a few values.
+% All other values will be computed at process time so it should be
+% quite easy to support different paper sizes - only four values to
+% guess :-)
%
-% +1 415 322 3811
+% To find the configuration places, just search for the string
+% "CONFIGURATION".
%
-% Cygnus Support is an organization devoted to commercial
-% support of free software. For general information
-% contact ``info@cygnus.com''
+% Andreas Vogel (av@ssw.de)
+%
+%
+%
+% Uncomment the following `magnification' command if you want to print
+% out in a larger font. Caution! You may need larger paper. You had
+% best avoid using 3-column output if you try this. See the ``Three
+% column format'' section below if you want to print in three column
+% format.
+%
+%\magnification=\magstep 1
%
% NOTE ON INTENTIONAL OMISSIONS: This reference card includes most GDB
% commands, but due to space constraints there are some things I chose
-% to omit. In general, not all synonyms for commands are covered.
+% to omit. In general, not all synonyms for commands are covered, nor
+% all variations of a command.
% The GDB-under-Emacs section omits gdb-mode functions without default
% keybindings. GDB startup options are not described.
-% set print sevenbit-strings, set symbol-reloading omitted.
+% set print sevenbit-strings omitted.
+% printsyms, printpsyms, omitted since they're for GDB maintenance primarily
+% share omitted due to obsolescence
% set check range/type omitted at least til code is in GDB.
%
-{%
-\def\$#1${{#1}}% Kluge: collect RCS revision info without $...$
-\xdef\manvers{\$Revision$}%
-}%
-\input threecol
-\input rcfonts
+%-------------------- Three column format -----------------------
+
+%%%% --- To disable three column format, comment out this entire section
+
+% Three-column format for landscape printing
+
+%-------- Papersize defs:
+
+\newdimen\totalwidth \newdimen\totalheight
+\newdimen\hmargin \newdimen\vmargin
+\newdimen\secskip \newdimen\lskip
+\newdimen\barwidth \newdimen\barheight
+\newdimen\intersecwidth
+
+%%
+%% START CONFIGURATION - PAPERSIZE DEFINITIONS
+%------- Papersize params:
+%% US letter paper (8.5x11in)
+%%
+\totalwidth=11in % total width of paper
+\totalheight=8.5in % total height of paper
+\hmargin=.25in % horizontal margin width
+\vmargin=.25in % vertical margin width
+\secskip=1pc % space between refcard secs
+\lskip=2pt % extra skip between \sec entries
+\ifx\pdfoutput\undefined\else % check if we are using pdfTeX
+ \pdfpagewidth=\totalwidth % width of paper in pdf output
+ \pdfpageheight=\totalheight % height of paper in pdf output
+\fi
+%------- end papersize params
+%%
+%% change according to personal taste, not papersize dependent
+%%
+\barwidth=.1pt % width of the cropmark bar
+\barheight=2pt % height of the cropmark bar
+\intersecwidth=0.5em % width between \itmwid and \dfnwid
+%%
+%% END CONFIGURATION - PAPERSIZE DEFINITIONS
+%%
+
+%%
+%% values to be computed - nothing to configure
+%%
+\newdimen\fullhsize % width of area without margins
+\newdimen\itmwid % width of item column
+\newdimen\dfnwid % width of definition column
+\newdimen\temp % only for temporary use
+
+%%
+%% adjust the offsets so the margins are measured *from paper edge*
+%%
+\hoffset=-1in \advance \hoffset by \hmargin
+\voffset=-1in \advance \voffset by \vmargin
+
+%%
+%% fullhsize = totalwidth - (2 * hmargin)
+%%
+\fullhsize=\totalwidth
+\temp=\hmargin \multiply \temp by 2 \advance \fullhsize by -\temp
+
+%%
+%% hsize = (fullhsize - (4 * hmargin) - (2 * barwidth)) / 3
+%%
+\hsize=\fullhsize
+\temp=\hmargin \multiply \temp by 4 \advance \hsize by -\temp
+\temp=\barwidth \multiply \temp by 2 \advance \hsize by -\temp
+\divide \hsize by 3
+
+%%
+%% vsize = totalheight - (2 * vmargin)
+%%
+\vsize=\totalheight
+\temp=\vmargin \multiply \temp by 2 \advance \vsize by -\temp
+
+%%
+%% itmwid = (hsize - intersecwidth) * 1/3
+%% dfnwid = (hsize - intersecwidth) * 2/3
+%%
+\temp=\hsize \advance \temp by -\intersecwidth \divide \temp by 3
+\itmwid=\temp
+\dfnwid=\hsize \advance \dfnwid by -\itmwid
+
+%-------- end papersize defs
+
+
+\def\fulline{\hbox to \fullhsize}
+\let\lcr=L \newbox\leftcolumn\newbox\centercolumn
+\output={\if L\lcr
+ \global\setbox\leftcolumn=\columnbox \global\let\lcr=C
+ \else
+ \if C\lcr
+ \global\setbox\centercolumn=\columnbox \global\let\lcr=R
+ \else \tripleformat \global\let\lcr=L
+ \fi
+ \fi
+% \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+ }
+
+%%
+%% START CONFIGURATION - ALTERNATIVE FOLDING GUIDES
+%%
+%% For NO printed folding guide,
+%% comment out other \def\vdecor's and uncomment:
+
+%\def\vdecor{\hskip\hmargin plus1fil\hskip\barwidth plus1fil\hskip\hmargin plus1fil}
+
+%% For SOLID LINE folding guide,
+%% comment out other \def\vdecor's and uncomment:
+
+%\def\vdecor{\hskip\hmargin plus1fil \vrule width \barwidth \hskip\hmargin plus1fil}
+
+%% For SMALL MARKS NEAR TOP AND BOTTOM as folding guide,
+%% comment out other \def\vdecor's and uncomment:
+
+\def\vdecor{\hskip\hmargin plus1fil
+\vbox to \vsize{\hbox to \barwidth{\vrule height\barheight width\barwidth}\vfill
+\hbox to \barwidth{\vrule height\barheight width\barwidth}}%THIS PERCENT SIGN IS ESSENTIAL
+\hskip\hmargin plus1fil}
+
+%%
+%% END CONFIGURATION - ALTERNATIVES FOR FOLDING GUIDES
+%%
+
+\def\tripleformat{\shipout\vbox{\fulline{\box\leftcolumn\vdecor
+ \box\centercolumn\vdecor
+ \columnbox}
+ }
+ \advancepageno}
+\def\columnbox{\leftline{\pagebody}}
+\def\bye{\par\vfill
+ \supereject
+ \if R\lcr \null\vfill\eject\fi
+ \end}
+
+%-------------------- end three column format -----------------------
+
+%-------------------- Computer Modern font defs: --------------------
+\font\bbf=cmbx10
+\font\vbbf=cmbx12
+\font\smrm=cmr6
+\font\brm=cmr10
+\font\rm=cmr7
+\font\it=cmti7
+\font\tt=cmtt8
+%-------------------- end font defs ---------------------------------
+
%
-\vsize=8in
\hyphenpenalty=5000\tolerance=2000\raggedright\raggedbottom
\normalbaselineskip=9pt\baselineskip=9pt
%
\def\opt#1{{\brm[{\rm #1}]}}
\def\xtra#1{\noalign{\smallskip{\tt#1}}}
%
-\long\def\sec#1;#2\endsec{\vskip 1pc
+\long\def\sec#1;#2\endsec{\vskip \secskip
\halign{%
%COL 1 (of halign):
-\vtop{\hsize=1.1in\tt
-##\par\vskip 2pt }\hfil
+\vtop{\hsize=\itmwid\tt
+##\par\vskip \lskip }\hfil
%COL 2 (of halign):
-&\vtop{\hsize=2.1in\hangafter=1\hangindent=0.5em
-\rm ##\par\vskip 2pt}\cr
+&\vtop{\hsize=\dfnwid\hangafter=1\hangindent=\intersecwidth
+\rm ##\par\vskip \lskip}\cr
%Tail of \long\def fills in halign body with \sec args:
-\noalign{{\bbf #1}\vskip 2pt}
+\noalign{{\bbf #1}\vskip \lskip}
#2
}
}
-{\vbbf GDB QUICK REFERENCE}
-\vskip 5pt
-{\smrm GDB Version 4.2---Cygnus Support 1991}
+{\vbbf GDB QUICK REFERENCE}\hfil{\smrm GDB Version 5}\qquad
\sec Essential Commands;
gdb {\it program} \opt{{\it core}}&debug {\it program} \opt{using
\endsec
\sec Starting GDB;
-gdb&starts GDB, with no debugging files\cr
+gdb&start GDB, with no debugging files\cr
gdb {\it program}&begin debugging {\it program}\cr
-gdb {\it program core}&debug coredump {\it core} produced by {\it program}\cr
+gdb {\it program core}&debug coredump {\it core} produced by {\it
+program}\cr
+gdb --help&describe command line options\cr
\endsec
\sec Stopping GDB;
\sec Executing your Program;
run {\it arglist}&start your program with {\it arglist}\cr
run&start your program with current argument list\cr
-run $\ldots$ <{\it inf} >{\it outf}&start program with input, output
+run $\ldots$ <{\it inf} >{\it outf}&start your program with input, output
redirected\cr
\cr
kill&kill running program\cr
set args&specify empty argument list\cr
show args&display argument list\cr
\cr
-show environment&show all environment variables\cr
+show env&show all environment variables\cr
show env {\it var}&show value of environment variable {\it var}\cr
set env {\it var} {\it string}&set environment variable {\it var}\cr
unset env {\it var}&remove {\it var} from environment\cr
\endsec
\vfill
-\centerline{\smrm \copyright 1991 Free Software Foundation, Inc.\qquad Permissions on back}
+\line{\smrm \opt{ } surround optional arguments \hfill $\ldots$ show
+one or more arguments}
+\vskip\baselineskip
+\centerline{\smrm \copyright 1998, 2000, 2010 Free Software Foundation, Inc.\qquad Permissions on back}
\eject
\sec Breakpoints and Watchpoints;
break \opt{\it file\tt:}{\it line}\par
b \opt{\it file\tt:}{\it line}&set breakpoint at {\it line} number \opt{in \it file}\par
eg:\quad{\tt break main.c:37}\quad\cr
-break \opt{\it file\tt:}{\it function}&set breakpoint at {\it
-function} \opt{in \it file}\cr
+break \opt{\it file\tt:}{\it func}&set breakpoint at {\it
+func} \opt{in \it file}\cr
break +{\it offset}\par
break -{\it offset}&set break at {\it offset} lines from current stop\cr
break *{\it addr}&set breakpoint at address {\it addr}\cr
cond {\it n} \opt{\it expr}&new conditional expression on breakpoint
{\it n}; make unconditional if no {\it expr}\cr
tbreak $\ldots$&temporary break; disable when reached\cr
-rbreak {\it regex}&break on all functions matching {\it regex}\cr
+rbreak \opt{\it file\tt:}{\it regex}&break on all functions matching {\it
+regex} \opt{in \it file}\cr
watch {\it expr}&set a watchpoint for expression {\it expr}\cr
-catch {\it x}&break at C++ handler for exception {\it x}\cr
+catch {\it event}&break at {\it event}, which may be {\tt catch}, {\tt throw},
+{\tt exec}, {\tt fork}, {\tt vfork}, {\tt load}, or {\tt unload}.\cr
\cr
info break&show defined breakpoints\cr
info watch&show defined watchpoints\cr
clear&delete breakpoints at next instruction\cr
clear \opt{\it file\tt:}{\it fun}&delete breakpoints at entry to {\it fun}()\cr
clear \opt{\it file\tt:}{\it line}&delete breakpoints on source line \cr
-delete \opt{{\it n}}&delete breakpoints {\it n};
-\opt{or all breakpoints}\cr
+delete \opt{{\it n}}&delete breakpoints
+\opt{or breakpoint {\it n}}\cr
+\cr
+disable \opt{{\it n}}&disable breakpoints
+\opt{or breakpoint {\it n}}
+\cr
+enable \opt{{\it n}}&enable breakpoints
+\opt{or breakpoint {\it n}}
+\cr
+enable once \opt{{\it n}}&enable breakpoints \opt{or breakpoint {\it n}};
+disable again when reached
+\cr
+enable del \opt{{\it n}}&enable breakpoints \opt{or breakpoint {\it n}};
+delete when reached
\cr
-disable \opt{{\it n}}&disable breakpoints {\it n} \opt{or all}\cr
-enable \opt{{\it n}}&enable breakpoints {\it n} \opt{or all}\cr
-enable once \opt{{\it n}}&enable breakpoints; disable again when
-reached\cr
-enable del \opt{{\it n}}&enable breakpoints; delete when reached\cr
\cr
ignore {\it n} {\it count}&ignore breakpoint {\it n}, {\it count}
times\cr
\cr
commands {\it n}\par
-\qquad {\it command list}&execute GDB {\it command list} every time breakpoint {\it n} is reached\cr
-end&end of {\it command list}\cr
+\qquad \opt{\tt silent}\par
+\qquad {\it command-list}&execute GDB {\it command-list} every time breakpoint {\it n} is reached. \opt{{\tt silent} suppresses default
+display}\cr
+end&end of {\it command-list}\cr
\endsec
\sec Program Stack;
{\it addr}\cr
info args&arguments of selected frame\cr
info locals&local variables of selected frame\cr
-info reg \opt{\it{rn}}®ister values \opt{for reg {\it rn\/}} in selected frame\cr
-info catch&exception handlers active in selected frame\cr
+info reg \opt{\it rn}$\ldots$\par
+info all-reg \opt{\it rn}®ister values \opt{for regs {\it rn\/}} in
+selected frame; {\tt all-reg} includes floating point\cr
\endsec
\vfill\eject
step \opt{\it count}\par
s \opt{\it count}&execute until another line reached; repeat {\it count} times if
specified\cr
-\cr
stepi \opt{\it count}\par
si \opt{\it count}&step by machine instructions rather than source
lines\cr
\cr
next \opt{\it count}\par
n \opt{\it count}&execute next line, including any function calls\cr
-\cr
nexti \opt{\it count}\par
ni \opt{\it count}&next machine instruction rather than source
line\cr
\endsec
\sec Display;
-print \opt{\tt/{\it f}\/} {\it expr}\par
-p \opt{\tt/{\it f}\/} {\it expr}&show value of {\it expr} according to format {\it f}:\cr
+print \opt{\tt/{\it f}\/} \opt{\it expr}\par
+p \opt{\tt/{\it f}\/} \opt{\it expr}&show value of {\it expr} \opt{or
+last value \tt \$} according to format {\it f}:\cr
\qquad x&hexadecimal\cr
\qquad d&signed decimal\cr
\qquad u&unsigned decimal\cr
\qquad o&octal\cr
+\qquad t&binary\cr
\qquad a&address, absolute and relative\cr
\qquad c&character\cr
\qquad f&floating point\cr
\cr
show values \opt{{\it n}}&show last 10 values \opt{or surrounding
\${\it n}}\cr
-show convenience&display all convenience variables\cr
+show conv&display all convenience variables\cr
\endsec
\sec Symbol Table;
(all, or matching {\it regex})\cr
info var \opt{\it regex}&show names, types of global variables (all,
or matching {\it regex})\cr
-whatis {\it expr}\par
-ptype {\it expr}&show data type of {\it expr} without evaluating; {\tt
-ptype} gives more detail\cr
+whatis \opt{\it expr}\par
+ptype \opt{\it expr}&show data type of {\it expr} \opt{or \tt \$}
+without evaluating; {\tt ptype} gives more detail\cr
ptype {\it type}&describe type, struct, union, or enum\cr
\endsec
script}\cr
\cr
define {\it cmd}\par
-\qquad {\it command list}&new GDB command {\it cmd}, executes script
-defined by {\it command list} \cr
-end&end of {\it command list}\cr
+\qquad {\it command-list}&create new GDB command {\it cmd};
+execute script defined by {\it command-list}\cr
+end&end of {\it command-list}\cr
document {\it cmd}\par
-\qquad {\it help text}&new online documentation for GDB command {\it
-cmd}\cr
-end&end of {\it help text}\cr
+\qquad {\it help-text}&create online documentation
+for new GDB command {\it cmd}\cr
+end&end of {\it help-text}\cr
\endsec
\sec Signals;
\vfill\eject
\sec Controlling GDB;
set {\it param} {\it value}&set one of GDB's internal parameters\cr
-show {\it param}&display current setting of a GDB parameter\cr
+show {\it param}&display current setting of parameter\cr
\xtra{\rm Parameters understood by {\tt set} and {\tt show}:}
-\quad complaints {\it limit}&number of messages on unusual symbols\cr
+\quad complaint {\it limit}&number of messages on unusual symbols\cr
\quad confirm {\it on/off}&enable or disable cautionary queries\cr
\quad editing {\it on/off}&control {\tt readline} command-line editing\cr
\quad height {\it lpp}&number of lines before pause in display\cr
\quad prompt {\it str}&use {\it str} as GDB prompt\cr
\quad radix {\it base}&octal, decimal, or hex number representation\cr
\quad verbose {\it on/off}&control messages when loading
-symbol table\cr
+symbols\cr
\quad width {\it cpl}&number of characters before line folded\cr
\quad write {\it on/off}&Allow or forbid patching binary, core files
(when reopened with {\tt exec} or {\tt core})
\cr
-\quad history $\ldots$&({\tt h}) groups the following options:\cr
-\quad h exp {\it off/on}&disable or enable {\tt readline} history expansion\cr
+\quad history $\ldots$\par
+\quad h $\ldots$&groups with the following options:\cr
+\quad h exp {\it off/on}&disable/enable {\tt readline} history expansion\cr
\quad h file {\it filename}&file for recording GDB command history\cr
\quad h size {\it size}&number of commands kept in history list\cr
\quad h save {\it off/on}&control use of external file for
command history\cr
\cr
-\quad print $\ldots$&({\tt p}) groups the following options:\cr
+\quad print $\ldots$\par
+\quad p $\ldots$&groups with the following options:\cr
\quad p address {\it on/off}&print memory addresses in stacks,
values\cr
\quad p array {\it off/on}&compact or attractive format for
symbols\cr
\quad p asm-dem {\it on/off}&demangle C++ symbols in
machine-instruction output\cr
-\quad p elements {\it limit}&number of elements to display from an
-array\cr
+\quad p elements {\it limit}&number of array elements to display\cr
\quad p object {\it on/off}&print C++ derived types for objects\cr
\quad p pretty {\it off/on}&struct display: compact or indented\cr
-\quad p union {\it on/off}&enable or disable display of union members\cr
+\quad p union {\it on/off}&display of union members\cr
\quad p vtbl {\it off/on}&display of C++ virtual function
tables\cr
\cr
\endsec
\sec Working Files;
-file {\it file}&use {\it file} for symbols and executable\cr
-core {\it file}&read {\it file} as coredump\cr
-exec {\it file}&use {\it file} as executable only\cr
-symbol {\it file}&use only symbol table from {\it file}\cr
+file \opt{\it file}&use {\it file} for both symbols and executable;
+with no arg, discard both\cr
+core \opt{\it file}&read {\it file} as coredump; or discard\cr
+exec \opt{\it file}&use {\it file} as executable only; or discard\cr
+symbol \opt{\it file}&use symbol table from {\it file}; or discard\cr
load {\it file}&dynamically link {\it file\/} and add its symbols\cr
add-sym {\it file} {\it addr}&read additional symbols from {\it file},
dynamically loaded at {\it addr}\cr
\cr
list&show next ten lines of source\cr
list -&show previous ten lines\cr
-list {\it lines}&display source centered around {\it lines},
-specified as one of:\cr
+list {\it lines}&display source surrounding {\it lines},
+specified as:\cr
\quad{\opt{\it file\tt:}\it num}&line number \opt{in named file}\cr
\quad{\opt{\it file\tt:}\it function}&beginning of function \opt{in
named file}\cr
\endsec
\sec GDB License;
-info copying&Display GNU General Public License\cr
-info warranty&There is NO WARRANTY for GDB. Display full no-warranty
+show copying&Display GNU General Public License\cr
+show warranty&There is NO WARRANTY for GDB. Display full no-warranty
statement.\cr
\endsec
\vfill
{\smrm\parskip=6pt
-\centerline{Copyright \copyright 1991 Free Software Foundation, Inc.}
-\centerline{Roland Pesch (pesch@cygnus.com), September 1991---\manvers}
-\centerline{The author assumes no responsibility for any errors on this card.}
+Copyright \copyright 1991, 1992, 1993, 1998, 2000, 2010 Free Software Foundation, Inc.
+Author: Roland H. Pesch
+
+The author assumes no responsibility for any errors on this card.
This card may be freely distributed under the terms of the GNU
General Public License.
-\centerline{Please contribute to development of this card by
-annotating it.}
+Please contribute to development of this card by
+annotating it. Improvements can be sent to bug-gdb@gnu.org.
GDB itself is free software; you are welcome to distribute copies of
it under the terms of the GNU General Public License. There is