* corelow.c, exec.c, inftarg.c, m3-nat.c, op50-rom.c, procfs.c,
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
CommitLineData
29a2b744 1\input texinfo @c -*-texinfo-*-
5986c8ea 2@c Copyright 1988 1989 1990 1991 1992 1993 1994 Free Software Foundation, Inc.
18fae2a8 3@c
29a2b744 4@c %**start of header
18fae2a8 5@c makeinfo ignores cmds prev to setfilename, so its arg cannot make use
1d7c3357 6@c of @set vars. However, you can override filename with makeinfo -o.
18fae2a8
RP
7@setfilename gdb.info
8@c
361daf65 9@include gdb-cfg.texi
18fae2a8
RP
10@c
11@ifset GENERIC
12@settitle Debugging with @value{GDBN}
13@end ifset
14@ifclear GENERIC
1d7c3357 15@settitle Debugging with @value{GDBN} (@value{TARGET})
18fae2a8 16@end ifclear
29a2b744 17@setchapternewpage odd
29a2b744
RP
18@c %**end of header
19
ed447b95 20@iftex
51b65b74 21@c @smallbook
fe715d06 22@c @cropmarks
ed447b95
RP
23@end iftex
24
29a2b744
RP
25@finalout
26@syncodeindex ky cp
27
fe715d06
RP
28@c readline appendices use @vindex
29@syncodeindex vr cp
30
0cb95a9c 31@c !!set GDB manual's edition---not the same as GDB version!
9a27b06e 32@set EDITION 4.12
0cb95a9c
RP
33
34@c !!set GDB manual's revision date
9a27b06e 35@set DATE January 1994
29a2b744 36
d24e0922 37@c GDB CHANGELOG CONSULTED BETWEEN:
29a2b744
RP
38@c Fri Oct 11 23:27:06 1991 John Gilmore (gnu at cygnus.com)
39@c Sat Dec 22 02:51:40 1990 John Gilmore (gnu at cygint)
40
9c3ad547 41@c THIS MANUAL REQUIRES TEXINFO-2 macros and info-makers to format properly.
29a2b744 42
b7becc8f 43@ifinfo
ed447b95
RP
44@c This is a dir.info fragment to support semi-automated addition of
45@c manuals to an info tree. zoo@cygnus.com is developing this facility.
b7becc8f
RP
46@format
47START-INFO-DIR-ENTRY
95cb23dc 48* Gdb: (gdb). The GNU debugger.
b7becc8f
RP
49END-INFO-DIR-ENTRY
50@end format
51@end ifinfo
18fae2a8 52@c
70b88761 53@c
70b88761 54@ifinfo
18fae2a8 55This file documents the GNU debugger @value{GDBN}.
70b88761 56
0cb95a9c
RP
57
58This is Edition @value{EDITION}, @value{DATE},
18fae2a8
RP
59of @cite{Debugging with @value{GDBN}: the GNU Source-Level Debugger}
60for GDB Version @value{GDBVN}.
29a2b744 61
6b51acad 62Copyright (C) 1988, '89, '90, '91, '92, '93 Free Software Foundation, Inc.
70b88761
RP
63
64Permission is granted to make and distribute verbatim copies of
65this manual provided the copyright notice and this permission notice
66are preserved on all copies.
67
68@ignore
69Permission is granted to process this file through TeX and print the
70results, provided the printed document carries copying permission
71notice identical to this one except for the removal of this paragraph
72(this paragraph not being relevant to the printed manual).
73
74@end ignore
75Permission is granted to copy and distribute modified versions of this
76manual under the conditions for verbatim copying, provided also that the
d55320a0
RP
77entire resulting derived work is distributed under the terms of a
78permission notice identical to this one.
70b88761
RP
79
80Permission is granted to copy and distribute translations of this manual
d55320a0 81into another language, under the above conditions for modified versions.
70b88761 82@end ifinfo
1041a570 83
70b88761 84@titlepage
18fae2a8 85@title Debugging with @value{GDBN}
95d5ceb9 86@subtitle The GNU Source-Level Debugger
18fae2a8 87@ifclear GENERIC
a64a6c2b 88@subtitle (@value{TARGET})
18fae2a8 89@end ifclear
70b88761 90@sp 1
0cb95a9c
RP
91@subtitle Edition @value{EDITION}, for @value{GDBN} version @value{GDBVN}
92@subtitle @value{DATE}
6b51acad 93@author Richard M. Stallman and Roland H. Pesch
70b88761
RP
94@page
95@tex
96{\parskip=0pt
18fae2a8 97\hfill (Send bugs and comments on @value{GDBN} to bug-gdb\@prep.ai.mit.edu.)\par
ed447b95 98\hfill {\it Debugging with @value{GDBN}}\par
70b88761 99\hfill \TeX{}info \texinfoversion\par
ed447b95 100\hfill pesch\@cygnus.com\par
70b88761
RP
101}
102@end tex
103
104@vskip 0pt plus 1filll
6b51acad
RP
105Copyright @copyright{} 1988, '89, '90, '91, '92, '93 Free Software
106Foundation, Inc.
107@sp 2
108Published by the Free Software Foundation @*
109675 Massachusetts Avenue, @*
110Cambridge, MA 02139 USA @*
111Printed copies are available for $20 each. @*
112ISBN 1-882114-11-6 @*
70b88761
RP
113
114Permission is granted to make and distribute verbatim copies of
115this manual provided the copyright notice and this permission notice
116are preserved on all copies.
117
118Permission is granted to copy and distribute modified versions of this
119manual under the conditions for verbatim copying, provided also that the
d55320a0
RP
120entire resulting derived work is distributed under the terms of a
121permission notice identical to this one.
70b88761
RP
122
123Permission is granted to copy and distribute translations of this manual
d55320a0 124into another language, under the above conditions for modified versions.
70b88761
RP
125@end titlepage
126@page
127
70b88761 128@ifinfo
4eb4cf57 129@node Top
18fae2a8 130@top Debugging with @value{GDBN}
29a2b744 131
18fae2a8 132This file describes @value{GDBN}, the GNU symbolic debugger.
29a2b744 133
0cb95a9c 134This is Edition @value{EDITION}, @value{DATE}, for GDB Version @value{GDBVN}.
70b88761
RP
135
136@menu
18fae2a8
RP
137* Summary:: Summary of @value{GDBN}
138@ifset NOVEL
c7cb8acb 139* New Features:: New features since GDB version 3.5
18fae2a8
RP
140@end ifset
141@ifclear BARETARGET
142* Sample Session:: A sample @value{GDBN} session
143@end ifclear
b0157555 144
18fae2a8
RP
145* Invocation:: Getting in and out of @value{GDBN}
146* Commands:: @value{GDBN} commands
147* Running:: Running programs under @value{GDBN}
29a2b744
RP
148* Stopping:: Stopping and continuing
149* Stack:: Examining the stack
150* Source:: Examining source files
151* Data:: Examining data
18fae2a8
RP
152@ifclear CONLY
153* Languages:: Using @value{GDBN} with different languages
154@end ifclear
155@ifset CONLY
1d7c3357 156* C:: C language support
18fae2a8 157@end ifset
1d7c3357 158@c remnant makeinfo bug, blank line needed after two end-ifs?
18fae2a8 159
18fae2a8
RP
160* Symbols:: Examining the symbol table
161* Altering:: Altering execution
93918348 162* GDB Files:: @value{GDBN} files
18fae2a8
RP
163* Targets:: Specifying a debugging target
164* Controlling GDB:: Controlling @value{GDBN}
165* Sequences:: Canned sequences of commands
18fae2a8 166@ifclear DOSHOST
18fae2a8 167* Emacs:: Using @value{GDBN} under GNU Emacs
18fae2a8 168@end ifclear
b0157555 169
18fae2a8 170* GDB Bugs:: Reporting bugs in @value{GDBN}
da24340c
RP
171* Command Line Editing:: Facilities of the readline library
172* Using History Interactively::
18fae2a8 173@ifset NOVEL
18fae2a8 174* Renamed Commands::
18fae2a8 175@end ifset
1d7c3357 176@ifclear PRECONFIGURED
18fae2a8
RP
177* Formatting Documentation:: How to format and print GDB documentation
178* Installing GDB:: Installing GDB
18fae2a8 179@end ifclear
b0157555 180
18fae2a8
RP
181* Index:: Index
182@end menu
18fae2a8 183@end ifinfo
70b88761 184
4eb4cf57 185@node Summary
18fae2a8 186@unnumbered Summary of @value{GDBN}
70b88761 187
18fae2a8 188The purpose of a debugger such as @value{GDBN} is to allow you to see what is
70b88761 189going on ``inside'' another program while it executes---or what another
1041a570 190program was doing at the moment it crashed.
70b88761 191
18fae2a8 192@value{GDBN} can do four main kinds of things (plus other things in support of
1041a570 193these) to help you catch bugs in the act:
70b88761
RP
194
195@itemize @bullet
196@item
197Start your program, specifying anything that might affect its behavior.
198
199@item
200Make your program stop on specified conditions.
201
202@item
203Examine what has happened, when your program has stopped.
204
205@item
206Change things in your program, so you can experiment with correcting the
207effects of one bug and go on to learn about another.
208@end itemize
209
18fae2a8 210@ifclear CONLY
9934dce8 211You can use @value{GDBN} to debug programs written in C or C++.
22b5dba5
RP
212@c "MOD2" used as a "miscellaneous languages" flag here.
213@c This is acceptable while there is no real doc for Chill and Pascal.
9934dce8
RP
214@ifclear MOD2
215For more information, see @ref{Support,,Supported languages}.
216@end ifclear
217@ifset MOD2
218For more information, see @ref{C,,C and C++}.
219
3f73b7c8 220Support for Modula-2 and Chill is partial. For information on Modula-2,
2ae6d007 221see @ref{Modula-2,,Modula-2}. There is no further documentation on Chill yet.
3f73b7c8 222
b1955f0b 223Debugging Pascal programs which use sets, subranges, file variables, or nested
22b5dba5 224functions does not currently work. @value{GDBN} does not support
b1955f0b 225entering expressions, printing values, or similar features using Pascal syntax.
09934a2b
RP
226@end ifset
227@ifset FORTRAN
11e7b867 228@cindex Fortran
3ff8a96f 229@value{GDBN} can be used to debug programs written in Fortran, although
b1955f0b
RP
230it does not yet support entering expressions, printing values, or
231similar features using Fortran syntax. It may be necessary to refer to
232some variables with a trailing underscore.
09934a2b 233@end ifset
18fae2a8 234@end ifclear
70b88761
RP
235
236@menu
ed447b95 237* Free Software:: Freely redistributable software
b80282d5 238* Contributors:: Contributors to GDB
70b88761
RP
239@end menu
240
4eb4cf57 241@node Free Software
93928b60 242@unnumberedsec Free software
1041a570 243
18fae2a8 244@value{GDBN} is @dfn{free software}, protected by the GNU General Public License
1041a570 245(GPL). The GPL gives you the freedom to copy or adapt a licensed
70b88761
RP
246program---but every person getting a copy also gets with it the
247freedom to modify that copy (which means that they must get access to
248the source code), and the freedom to distribute further copies.
249Typical software companies use copyrights to limit your freedoms; the
250Free Software Foundation uses the GPL to preserve these freedoms.
251
252Fundamentally, the General Public License is a license which says that
29a2b744 253you have these freedoms and that you cannot take these freedoms away
70b88761
RP
254from anyone else.
255
4eb4cf57 256@node Contributors
70b88761
RP
257@unnumberedsec Contributors to GDB
258
259Richard Stallman was the original author of GDB, and of many other GNU
260programs. Many others have contributed to its development. This
261section attempts to credit major contributors. One of the virtues of
262free software is that everyone is free to contribute to it; with
263regret, we cannot actually acknowledge everyone here. The file
264@file{ChangeLog} in the GDB distribution approximates a blow-by-blow
265account.
266
267Changes much prior to version 2.0 are lost in the mists of time.
268
269@quotation
270@emph{Plea:} Additions to this section are particularly welcome. If you
93918348 271or your friends (or enemies, to be evenhanded) have been unfairly
70b88761
RP
272omitted from this list, we would like to add your names!
273@end quotation
274
275So that they may not regard their long labor as thankless, we
356bc67b
SS
276particularly thank those who shepherded GDB through major releases:
277Fred Fish (releases 4.12, 4.11, 4.10, and 4.9),
278Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4),
279John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
280Jim Kingdon (releases 3.5, 3.4, and 3.3);
281and Randy Smith (releases 3.2, 3.1, and 3.0).
282As major maintainer of GDB for some period, each
a88ec213
RP
283contributed significantly to the structure, stability, and capabilities
284of the entire debugger.
70b88761 285
6b51acad 286Richard Stallman, assisted at various times by Peter TerMaat, Chris
70b88761
RP
287Hanson, and Richard Mlynarik, handled releases through 2.8.
288
1d7c3357 289@ifclear CONLY
70b88761
RP
290Michael Tiemann is the author of most of the GNU C++ support in GDB,
291with significant additional contributions from Per Bothner. James
292Clark wrote the GNU C++ demangler. Early work on C++ was by Peter
293TerMaat (who also did much general update work leading to release 3.0).
1d7c3357 294@end ifclear
70b88761 295
1041a570
RP
296GDB 4 uses the BFD subroutine library to examine multiple
297object-file formats; BFD was a joint project of David V.
298Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
70b88761 299
1041a570
RP
300David Johnson wrote the original COFF support; Pace Willison did
301the original support for encapsulated COFF.
70b88761
RP
302
303Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
304Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
1041a570 305support.
356bc67b
SS
306Jean-Daniel Fekete contributed Sun 386i support.
307Chris Hanson improved the HP9000 support.
308Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
309David Johnson contributed Encore Umax support.
310Jyrki Kuoppala contributed Altos 3068 support.
311Jeff Law contributed HP PA and SOM support.
312Keith Packard contributed NS32K support.
313Doug Rabson contributed Acorn Risc Machine support.
314Bob Rusk contributed Harris Nighthawk CX-UX support.
315Chris Smith contributed Convex support (and Fortran debugging).
316Jonathan Stone contributed Pyramid support.
317Michael Tiemann contributed SPARC support.
318Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
319Pace Willison contributed Intel 386 support.
320Jay Vosburgh contributed Symmetry support.
70b88761 321
c338a2fd
RP
322Rich Schaefer and Peter Schauer helped with support of SunOS shared
323libraries.
70b88761
RP
324
325Jay Fenlason and Roland McGrath ensured that GDB and GAS agree about
326several machine instruction sets.
327
1041a570
RP
328Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped
329develop remote debugging. Intel Corporation and Wind River Systems
330contributed remote debugging modules for their products.
70b88761 331
1041a570
RP
332Brian Fox is the author of the readline libraries providing
333command-line editing and command history.
70b88761 334
09934a2b
RP
335Andrew Beers of SUNY Buffalo wrote the language-switching code,
336@ifset MOD2
337the Modula-2 support,
338@end ifset
339and contributed the Languages chapter of this manual.
c2bbbb22 340
1d7c3357
RP
341Fred Fish wrote most of the support for Unix System Vr4.
342@ifclear CONLY
343He also enhanced the command-completion support to cover C++ overloaded
344symbols.
345@end ifclear
346
a64a6c2b 347Hitachi America, Ltd. sponsored the support for Hitachi microprocessors.
14d01801 348
356bc67b
SS
349Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
350watchpoints.
351
352Stu Grossman wrote gdbserver.
353
354Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
355nearly innumerable bug fixes and cleanups throughout GDB.
356
18fae2a8 357@ifset NOVEL
4eb4cf57 358@node New Features
ed447b95 359@unnumbered New Features since GDB Version 3.5
70b88761
RP
360
361@table @emph
362@item Targets
363Using the new command @code{target}, you can select at runtime whether
364you are debugging local files, local processes, standalone systems over
b1955f0b 365a serial port, or realtime systems over a TCP/IP connection. The
b80282d5 366command @code{load} can download programs into a remote system. Serial
b21b18e1
RP
367stubs are available for Motorola 680x0, Intel 80386, and Sparc remote
368systems; GDB also supports debugging realtime processes running under
b80282d5 369VxWorks, using SunRPC Remote Procedure Calls over TCP/IP to talk to a
b21b18e1
RP
370debugger stub on the target system. Internally, GDB now uses a function
371vector to mediate access to different targets; if you need to add your
372own support for a remote protocol, this makes it much easier.
70b88761
RP
373
374@item Watchpoints
c7cb8acb 375GDB now sports watchpoints as well as breakpoints. You can use a
70b88761
RP
376watchpoint to stop execution whenever the value of an expression
377changes, without having to predict a particular place in your program
378where this may happen.
379
b80282d5
RP
380@item Wide Output
381Commands that issue wide output now insert newlines at places designed
382to make the output more readable.
383
70b88761 384@item Object Code Formats
d55320a0
RP
385GDB uses a new library called the Binary File Descriptor (BFD) Library
386to permit it to switch dynamically, without reconfiguration or
3d3ab540 387recompilation, between different object-file formats. Formats currently
d55320a0
RP
388supported are COFF, ELF, a.out, Intel 960 b.out, MIPS ECOFF, HPPA SOM
389(with stabs debugging), and S-records; files may be read as .o files,
390archive libraries, or core dumps. BFD is available as a subroutine
391library so that other programs may take advantage of it, and the other
392GNU binary utilities are being converted to use it.
70b88761 393
b80282d5 394@item Configuration and Ports
70b88761 395Compile-time configuration (to select a particular architecture and
7463aadd 396operating system) is much easier. The script @code{configure} now
c7cb8acb
RP
397allows you to configure GDB as either a native debugger or a
398cross-debugger. @xref{Installing GDB}, for details on how to
6a8cb0e7 399configure.
70b88761
RP
400
401@item Interaction
93918348
RP
402The user interface to the GDB control variables is simpler,
403and is consolidated in two commands, @code{set} and @code{show}. Output
70b88761
RP
404lines are now broken at readable places, rather than overflowing onto
405the next line. You can suppress output of machine-level addresses,
406displaying only source language information.
407
b80282d5 408@item C++
c7cb8acb 409GDB now supports C++ multiple inheritance (if used with a GCC
b80282d5 410version 2 compiler), and also has limited support for C++ exception
c7cb8acb 411handling, with the commands @code{catch} and @code{info catch}: GDB
b80282d5
RP
412can break when an exception is raised, before the stack is peeled back
413to the exception handler's context.
70b88761 414
09934a2b 415@ifset MOD2
c2bbbb22 416@item Modula-2
ed447b95
RP
417GDB now has preliminary support for the GNU Modula-2 compiler, currently
418under development at the State University of New York at Buffalo.
419Coordinated development of both GDB and the GNU Modula-2 compiler will
420continue. Other Modula-2 compilers are currently not supported, and
421attempting to debug programs compiled with them will likely result in an
422error as the symbol table of the executable is read in.
09934a2b 423@end ifset
c2bbbb22 424
70b88761 425@item Command Rationalization
c7cb8acb 426Many GDB commands have been renamed to make them easier to remember
70b88761
RP
427and use. In particular, the subcommands of @code{info} and
428@code{show}/@code{set} are grouped to make the former refer to the state
c7cb8acb 429of your program, and the latter refer to the state of GDB itself.
70b88761
RP
430@xref{Renamed Commands}, for details on what commands were renamed.
431
70b88761 432@item Shared Libraries
77b46d13
JG
433GDB 4 can debug programs and core files that use SunOS, SVR4, or IBM RS/6000
434shared libraries.
b80282d5 435
22b5dba5
RP
436@item Threads
437On some systems, GDB 4 has facilities to debug multi-thread programs.
438
b80282d5 439@item Reference Card
6f3ec223 440GDB 4 has a reference card. @xref{Formatting Documentation,,Formatting
ed447b95 441the Documentation}, for instructions about how to print it.
70b88761 442@end table
18fae2a8 443@end ifset
70b88761 444
18fae2a8 445@ifclear BARETARGET
4eb4cf57 446@node Sample Session
18fae2a8 447@chapter A Sample @value{GDBN} Session
70b88761 448
18fae2a8 449You can use this manual at your leisure to read all about @value{GDBN}.
70b88761 450However, a handful of commands are enough to get started using the
ed447b95 451debugger. This chapter illustrates those commands.
70b88761
RP
452
453@iftex
6ca72cc6 454In this sample session, we emphasize user input like this: @b{input},
70b88761
RP
455to make it easier to pick out from the surrounding output.
456@end iftex
457
458@c FIXME: this example may not be appropriate for some configs, where
459@c FIXME...primary interest is in remote use.
18fae2a8 460
70b88761
RP
461One of the preliminary versions of GNU @code{m4} (a generic macro
462processor) exhibits the following bug: sometimes, when we change its
93918348
RP
463quote strings from the default, the commands used to capture one macro
464definition within another stop working. In the following short @code{m4}
70b88761 465session, we define a macro @code{foo} which expands to @code{0000}; we
29a2b744 466then use the @code{m4} built-in @code{defn} to define @code{bar} as the
70b88761
RP
467same thing. However, when we change the open quote string to
468@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
469procedure fails to define a new synonym @code{baz}:
470
471@smallexample
6ca72cc6
RP
472$ @b{cd gnu/m4}
473$ @b{./m4}
474@b{define(foo,0000)}
70b88761 475
6ca72cc6 476@b{foo}
70b88761 4770000
6ca72cc6 478@b{define(bar,defn(`foo'))}
70b88761 479
6ca72cc6 480@b{bar}
70b88761 4810000
6ca72cc6 482@b{changequote(<QUOTE>,<UNQUOTE>)}
70b88761 483
6ca72cc6
RP
484@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
485@b{baz}
486@b{C-d}
70b88761
RP
487m4: End of input: 0: fatal error: EOF in string
488@end smallexample
489
490@noindent
93918348 491Let us use @value{GDBN} to try to see what is going on.
70b88761
RP
492
493@smallexample
18fae2a8 494$ @b{@value{GDBP} m4}
203eea5d
RP
495@c FIXME: this falsifies the exact text played out, to permit smallbook
496@c FIXME... format to come out better.
497GDB is free software and you are welcome to distribute copies
498 of it under certain conditions; type "show copying" to see
499 the conditions.
500There is absolutely no warranty for GDB; type "show warranty"
ed447b95
RP
501 for details.
502GDB @value{GDBVN}, Copyright 1993 Free Software Foundation, Inc...
18fae2a8 503(@value{GDBP})
70b88761
RP
504@end smallexample
505
506@noindent
9a27b06e
RP
507@value{GDBN} reads only enough symbol data to know where to find the
508rest when needed; as a result, the first prompt comes up very quickly.
509We now tell @value{GDBN} to use a narrower display width than usual, so
510that examples fit in this manual.
70b88761
RP
511
512@smallexample
18fae2a8 513(@value{GDBP}) @b{set width 70}
70b88761
RP
514@end smallexample
515
e251e767 516@noindent
93918348 517We need to see how the @code{m4} built-in @code{changequote} works.
70b88761 518Having looked at the source, we know the relevant subroutine is
93918348 519@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
70b88761
RP
520@code{break} command.
521
522@smallexample
18fae2a8 523(@value{GDBP}) @b{break m4_changequote}
70b88761
RP
524Breakpoint 1 at 0x62f4: file builtin.c, line 879.
525@end smallexample
526
527@noindent
18fae2a8 528Using the @code{run} command, we start @code{m4} running under @value{GDBN}
70b88761
RP
529control; as long as control does not reach the @code{m4_changequote}
530subroutine, the program runs as usual:
531
532@smallexample
18fae2a8 533(@value{GDBP}) @b{run}
e251e767 534Starting program: /work/Editorial/gdb/gnu/m4/m4
6ca72cc6 535@b{define(foo,0000)}
70b88761 536
6ca72cc6 537@b{foo}
70b88761
RP
5380000
539@end smallexample
540
541@noindent
18fae2a8 542To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
70b88761
RP
543suspends execution of @code{m4}, displaying information about the
544context where it stops.
545
546@smallexample
6ca72cc6 547@b{changequote(<QUOTE>,<UNQUOTE>)}
70b88761 548
203eea5d
RP
549Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
550 at builtin.c:879
38962738 551879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
70b88761
RP
552@end smallexample
553
554@noindent
555Now we use the command @code{n} (@code{next}) to advance execution to
556the next line of the current function.
557
558@smallexample
18fae2a8 559(@value{GDBP}) @b{n}
203eea5d
RP
560882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
561 : nil,
70b88761
RP
562@end smallexample
563
564@noindent
565@code{set_quotes} looks like a promising subroutine. We can go into it
566by using the command @code{s} (@code{step}) instead of @code{next}.
567@code{step} goes to the next line to be executed in @emph{any}
e251e767 568subroutine, so it steps into @code{set_quotes}.
70b88761
RP
569
570@smallexample
18fae2a8 571(@value{GDBP}) @b{s}
70b88761
RP
572set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
573 at input.c:530
574530 if (lquote != def_lquote)
575@end smallexample
576
577@noindent
29a2b744
RP
578The display that shows the subroutine where @code{m4} is now
579suspended (and its arguments) is called a stack frame display. It
580shows a summary of the stack. We can use the @code{backtrace}
581command (which can also be spelled @code{bt}), to see where we are
582in the stack as a whole: the @code{backtrace} command displays a
583stack frame for each active subroutine.
70b88761
RP
584
585@smallexample
18fae2a8 586(@value{GDBP}) @b{bt}
70b88761
RP
587#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
588 at input.c:530
203eea5d
RP
589#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
590 at builtin.c:882
70b88761
RP
591#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
592#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
593 at macro.c:71
594#4 0x79dc in expand_input () at macro.c:40
595#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
596@end smallexample
597
598@noindent
9a27b06e 599We step through a few more lines to see what happens. The first two
70b88761
RP
600times, we can use @samp{s}; the next two times we use @code{n} to avoid
601falling into the @code{xstrdup} subroutine.
1041a570 602
70b88761 603@smallexample
18fae2a8 604(@value{GDBP}) @b{s}
70b88761 6050x3b5c 532 if (rquote != def_rquote)
18fae2a8 606(@value{GDBP}) @b{s}
203eea5d
RP
6070x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
608def_lquote : xstrdup(lq);
18fae2a8 609(@value{GDBP}) @b{n}
203eea5d
RP
610536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
611 : xstrdup(rq);
18fae2a8 612(@value{GDBP}) @b{n}
70b88761
RP
613538 len_lquote = strlen(rquote);
614@end smallexample
615
616@noindent
93918348 617The last line displayed looks a little odd; we can examine the variables
70b88761 618@code{lquote} and @code{rquote} to see if they are in fact the new left
93918348 619and right quotes we specified. We use the command @code{p}
70b88761
RP
620(@code{print}) to see their values.
621
622@smallexample
18fae2a8 623(@value{GDBP}) @b{p lquote}
70b88761 624$1 = 0x35d40 "<QUOTE>"
18fae2a8 625(@value{GDBP}) @b{p rquote}
70b88761
RP
626$2 = 0x35d50 "<UNQUOTE>"
627@end smallexample
628
629@noindent
630@code{lquote} and @code{rquote} are indeed the new left and right quotes.
93918348
RP
631To look at some context, we can display ten lines of source
632surrounding the current line with the @code{l} (@code{list}) command.
70b88761
RP
633
634@smallexample
18fae2a8 635(@value{GDBP}) @b{l}
70b88761 636533 xfree(rquote);
e251e767 637534
203eea5d
RP
638535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
639 : xstrdup (lq);
640536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
641 : xstrdup (rq);
e251e767 642537
70b88761
RP
643538 len_lquote = strlen(rquote);
644539 len_rquote = strlen(lquote);
645540 @}
e251e767 646541
70b88761
RP
647542 void
648@end smallexample
649
650@noindent
93918348 651Let us step past the two lines that set @code{len_lquote} and
70b88761
RP
652@code{len_rquote}, and then examine the values of those variables.
653
654@smallexample
18fae2a8 655(@value{GDBP}) @b{n}
70b88761 656539 len_rquote = strlen(lquote);
18fae2a8 657(@value{GDBP}) @b{n}
70b88761 658540 @}
18fae2a8 659(@value{GDBP}) @b{p len_lquote}
70b88761 660$3 = 9
18fae2a8 661(@value{GDBP}) @b{p len_rquote}
70b88761
RP
662$4 = 7
663@end smallexample
664
665@noindent
666That certainly looks wrong, assuming @code{len_lquote} and
667@code{len_rquote} are meant to be the lengths of @code{lquote} and
93918348
RP
668@code{rquote} respectively. We can set them to better values using
669the @code{p} command, since it can print the value of
70b88761 670any expression---and that expression can include subroutine calls and
e251e767 671assignments.
70b88761
RP
672
673@smallexample
18fae2a8 674(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
70b88761 675$5 = 7
18fae2a8 676(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
70b88761
RP
677$6 = 9
678@end smallexample
679
680@noindent
93918348
RP
681Is that enough to fix the problem of using the new quotes with the
682@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
70b88761
RP
683executing with the @code{c} (@code{continue}) command, and then try the
684example that caused trouble initially:
685
686@smallexample
18fae2a8 687(@value{GDBP}) @b{c}
70b88761
RP
688Continuing.
689
6ca72cc6 690@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
70b88761
RP
691
692baz
6930000
694@end smallexample
695
696@noindent
697Success! The new quotes now work just as well as the default ones. The
698problem seems to have been just the two typos defining the wrong
93918348 699lengths. We allow @code{m4} exit by giving it an EOF as input:
70b88761
RP
700
701@smallexample
6ca72cc6 702@b{C-d}
70b88761
RP
703Program exited normally.
704@end smallexample
705
e251e767 706@noindent
18fae2a8
RP
707The message @samp{Program exited normally.} is from @value{GDBN}; it
708indicates @code{m4} has finished executing. We can end our @value{GDBN}
709session with the @value{GDBN} @code{quit} command.
70b88761
RP
710
711@smallexample
18fae2a8
RP
712(@value{GDBP}) @b{quit}
713@end smallexample
714@end ifclear
70b88761 715
4eb4cf57 716@node Invocation
18fae2a8 717@chapter Getting In and Out of @value{GDBN}
70b88761 718
18fae2a8
RP
719This chapter discusses how to start @value{GDBN}, and how to get out of it.
720(The essentials: type @samp{@value{GDBP}} to start GDB, and type @kbd{quit}
c7cb8acb 721or @kbd{C-d} to exit.)
29a2b744 722
70b88761 723@menu
ed447b95
RP
724* Invoking GDB:: How to start @value{GDBN}
725* Quitting GDB:: How to quit @value{GDBN}
ed447b95 726* Shell Commands:: How to use shell commands inside @value{GDBN}
70b88761 727@end menu
18fae2a8
RP
728
729@node Invoking GDB
ed447b95 730@section Invoking @value{GDBN}
18fae2a8 731
a64a6c2b 732@ifset H8EXCLUSIVE
18fae2a8 733For details on starting up @value{GDBP} as a
a64a6c2b
RP
734remote debugger attached to a Hitachi microprocessor, see @ref{Hitachi
735Remote,,@value{GDBN} and Hitachi Microprocessors}.
18fae2a8 736@end ifset
4eb4cf57 737
ed447b95 738Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
18fae2a8 739@value{GDBN} reads commands from the terminal until you tell it to exit.
70b88761 740
18fae2a8 741You can also run @code{@value{GDBP}} with a variety of arguments and options,
c7cb8acb
RP
742to specify more of your debugging environment at the outset.
743
18fae2a8 744@ifset GENERIC
c7cb8acb
RP
745The command-line options described here are designed
746to cover a variety of situations; in some environments, some of these
747options may effectively be unavailable.
18fae2a8 748@end ifset
c7cb8acb 749
18fae2a8 750The most usual way to start @value{GDBN} is with one argument,
4eb4cf57 751specifying an executable program:
1041a570 752
70b88761 753@example
18fae2a8 754@value{GDBP} @var{program}
70b88761 755@end example
1041a570 756
18fae2a8 757@ifclear BARETARGET
70b88761 758@noindent
29a2b744
RP
759You can also start with both an executable program and a core file
760specified:
1041a570 761
70b88761 762@example
18fae2a8 763@value{GDBP} @var{program} @var{core}
70b88761
RP
764@end example
765
b80282d5
RP
766You can, instead, specify a process ID as a second argument, if you want
767to debug a running process:
1041a570 768
b80282d5 769@example
18fae2a8 770@value{GDBP} @var{program} 1234
b80282d5 771@end example
1041a570 772
b80282d5 773@noindent
18fae2a8
RP
774would attach @value{GDBN} to process @code{1234} (unless you also have a file
775named @file{1234}; @value{GDBN} does check for a core file first).
b80282d5 776
c7cb8acb 777Taking advantage of the second command-line argument requires a fairly
18fae2a8 778complete operating system; when you use @value{GDBN} as a remote debugger
c7cb8acb
RP
779attached to a bare board, there may not be any notion of ``process'',
780and there is often no way to get a core dump.
18fae2a8 781@end ifclear
c7cb8acb 782
70b88761 783@noindent
18fae2a8
RP
784You can further control how @value{GDBN} starts up by using command-line
785options. @value{GDBN} itself can remind you of the options available.
29a2b744
RP
786
787@noindent
788Type
789
70b88761 790@example
18fae2a8 791@value{GDBP} -help
70b88761 792@end example
29a2b744 793
70b88761 794@noindent
29a2b744 795to display all available options and briefly describe their use
18fae2a8 796(@samp{@value{GDBP} -h} is a shorter equivalent).
70b88761
RP
797
798All options and command line arguments you give are processed
799in sequential order. The order makes a difference when the
e251e767 800@samp{-x} option is used.
70b88761 801
18fae2a8 802
70b88761 803@menu
18fae2a8
RP
804@ifclear GENERIC
805@ifset REMOTESTUB
806* Remote Serial:: @value{GDBN} remote serial protocol
807@end ifset
a64a6c2b 808@ifset I960
18fae2a8
RP
809* i960-Nindy Remote:: @value{GDBN} with a remote i960 (Nindy)
810@end ifset
a64a6c2b 811@ifset AMD29K
b1955f0b
RP
812* UDI29K Remote:: The UDI protocol for AMD29K
813* EB29K Remote:: The EBMON protocol for AMD29K
18fae2a8
RP
814@end ifset
815@ifset VXWORKS
816* VxWorks Remote:: @value{GDBN} and VxWorks
817@end ifset
a64a6c2b 818@ifset ST2000
18fae2a8
RP
819* ST2000 Remote:: @value{GDBN} with a Tandem ST2000
820@end ifset
a64a6c2b
RP
821@ifset H8
822* Hitachi Remote:: @value{GDBN} and Hitachi Microprocessors
18fae2a8 823@end ifset
34ae25cd
RP
824@ifset MIPS
825* MIPS Remote:: @value{GDBN} and MIPS boards
826@end ifset
fe715d06
RP
827@ifset SIMS
828* Simulator:: Simulated CPU target
18fae2a8
RP
829@end ifset
830@end ifclear
1d7c3357 831@c remnant makeinfo bug requires this blank line after *two* end-ifblahs:
18fae2a8 832
ed447b95
RP
833* File Options:: Choosing files
834* Mode Options:: Choosing modes
18fae2a8 835@end menu
18fae2a8
RP
836
837@ifclear GENERIC
4af6d502 838@include remote.texi
18fae2a8 839@end ifclear
4eb4cf57
RP
840
841@node File Options
93928b60 842@subsection Choosing files
70b88761 843
18fae2a8
RP
844@ifclear BARETARGET
845When @value{GDBN} starts, it reads any arguments other than options as
29a2b744
RP
846specifying an executable file and core file (or process ID). This is
847the same as if the arguments were specified by the @samp{-se} and
18fae2a8 848@samp{-c} options respectively. (@value{GDBN} reads the first argument
29a2b744
RP
849that does not have an associated option flag as equivalent to the
850@samp{-se} option followed by that argument; and the second argument
851that does not have an associated option flag, if any, as equivalent to
852the @samp{-c} option followed by that argument.)
18fae2a8
RP
853@end ifclear
854@ifset BARETARGET
855When @value{GDBN} starts, it reads any argument other than options as
4eb4cf57
RP
856specifying an executable file. This is the same as if the argument was
857specified by the @samp{-se} option.
18fae2a8 858@end ifset
29a2b744
RP
859
860Many options have both long and short forms; both are shown in the
18fae2a8 861following list. @value{GDBN} also recognizes the long forms if you truncate
29a2b744
RP
862them, so long as enough of the option is present to be unambiguous.
863(If you prefer, you can flag option arguments with @samp{--} rather
864than @samp{-}, though we illustrate the more usual convention.)
70b88761
RP
865
866@table @code
6b51acad 867@item -symbols @var{file}
70b88761
RP
868@itemx -s @var{file}
869Read symbol table from file @var{file}.
870
6b51acad 871@item -exec @var{file}
70b88761
RP
872@itemx -e @var{file}
873Use file @var{file} as the executable file to execute when
1d7c3357
RP
874@ifset BARETARGET
875appropriate.
876@end ifset
877@ifclear BARETARGET
70b88761
RP
878appropriate, and for examining pure data in conjunction with a core
879dump.
1d7c3357 880@end ifclear
70b88761 881
6b51acad 882@item -se @var{file}
70b88761
RP
883Read symbol table from file @var{file} and use it as the executable
884file.
885
18fae2a8 886@ifclear BARETARGET
6b51acad 887@item -core @var{file}
70b88761
RP
888@itemx -c @var{file}
889Use file @var{file} as a core dump to examine.
d55320a0
RP
890
891@item -c @var{number}
892Connect to process ID @var{number}, as with the @code{attach} command
893(unless there is a file in core-dump format named @var{number}, in which
894case @samp{-c} specifies that file as a core dump to read).
18fae2a8 895@end ifclear
70b88761 896
6b51acad 897@item -command @var{file}
70b88761 898@itemx -x @var{file}
93928b60
RP
899Execute @value{GDBN} commands from file @var{file}. @xref{Command
900Files,, Command files}.
70b88761 901
6b51acad 902@item -directory @var{directory}
70b88761
RP
903@itemx -d @var{directory}
904Add @var{directory} to the path to search for source files.
14d01801 905
18fae2a8 906@ifclear BARETARGET
14d01801
RP
907@item -m
908@itemx -mapped
909@emph{Warning: this option depends on operating system facilities that are not
910supported on all systems.}@*
77b46d13
JG
911If memory-mapped files are available on your system through the @code{mmap}
912system call, you can use this option
18fae2a8 913to have @value{GDBN} write the symbols from your
77b46d13 914program into a reusable file in the current directory. If the program you are debugging is
9a27b06e
RP
915called @file{/tmp/fred}, the mapped symbol file is @file{./fred.syms}.
916Future @value{GDBN} debugging sessions notice the presence of this file,
917and can quickly map in symbol information from it, rather than reading
77b46d13
JG
918the symbol table from the executable program.
919
1d7c3357
RP
920@c FIXME! Really host, not target?
921The @file{.syms} file is specific to the host machine where @value{GDBN}
922is run. It holds an exact image of the internal @value{GDBN} symbol
923table. It cannot be shared across multiple host platforms.
18fae2a8 924@end ifclear
77b46d13
JG
925
926@item -r
927@itemx -readnow
928Read each symbol file's entire symbol table immediately, rather than
929the default, which is to read it incrementally as it is needed.
930This makes startup slower, but makes future operations faster.
70b88761
RP
931@end table
932
18fae2a8 933@ifclear BARETARGET
93918348
RP
934The @code{-mapped} and @code{-readnow} options are typically combined in
935order to build a @file{.syms} file that contains complete symbol
93928b60 936information. (@xref{Files,,Commands to specify files}, for information
93918348
RP
937on @file{.syms} files.) A simple GDB invocation to do nothing but build
938a @file{.syms} file for future use is:
77b46d13
JG
939
940@example
941 gdb -batch -nx -mapped -readnow programname
942@end example
18fae2a8 943@end ifclear
77b46d13 944
4eb4cf57 945@node Mode Options
93928b60 946@subsection Choosing modes
1041a570 947
18fae2a8 948You can run @value{GDBN} in various alternative modes---for example, in
29a2b744 949batch mode or quiet mode.
70b88761
RP
950
951@table @code
952@item -nx
953@itemx -n
d55320a0
RP
954Do not execute commands from any initialization files (normally called
955@file{@value{GDBINIT}}). Normally, the commands in these files are
956executed after all the command options and arguments have been
957processed. @xref{Command Files,,Command files}.
70b88761
RP
958
959@item -quiet
960@itemx -q
961``Quiet''. Do not print the introductory and copyright messages. These
c338a2fd 962messages are also suppressed in batch mode.
70b88761
RP
963
964@item -batch
d55320a0
RP
965Run in batch mode. Exit with status @code{0} after processing all the
966command files specified with @samp{-x} (and all commands from
967initialization files, if not inhibited with @samp{-n}). Exit with
968nonzero status if an error occurs in executing the @value{GDBN} commands
969in the command files.
70b88761 970
18fae2a8 971Batch mode may be useful for running @value{GDBN} as a filter, for example to
70b88761 972download and run a program on another computer; in order to make this
e251e767 973more useful, the message
1041a570 974
70b88761
RP
975@example
976Program exited normally.
977@end example
1041a570 978
70b88761 979@noindent
18fae2a8 980(which is ordinarily issued whenever a program running under @value{GDBN} control
70b88761
RP
981terminates) is not issued when running in batch mode.
982
6b51acad 983@item -cd @var{directory}
18fae2a8 984Run @value{GDBN} using @var{directory} as its working directory,
70b88761
RP
985instead of the current directory.
986
18fae2a8 987@ifset LUCID
45c53080 988@item -context @var{authentication}
18fae2a8 989When the Energize programming system starts up @value{GDBN}, it uses this
6ca72cc6 990option to trigger an alternate mode of interaction.
18fae2a8 991@var{authentication} is a pair of numeric codes that identify @value{GDBN}
6ca72cc6 992as a client in the Energize environment. Avoid this option when you run
18fae2a8
RP
993@value{GDBN} directly from the command line. See @ref{Energize,,Using
994@value{GDBN} with Energize} for more discussion of using @value{GDBN} with Energize.
995@end ifset
6ca72cc6 996
1d7c3357 997@ifclear DOSHOST
70b88761
RP
998@item -fullname
999@itemx -f
18fae2a8 1000Emacs sets this option when it runs @value{GDBN} as a subprocess. It tells @value{GDBN}
70b88761
RP
1001to output the full file name and line number in a standard,
1002recognizable fashion each time a stack frame is displayed (which
29a2b744 1003includes each time your program stops). This recognizable format looks
70b88761
RP
1004like two @samp{\032} characters, followed by the file name, line number
1005and character position separated by colons, and a newline. The
18fae2a8 1006Emacs-to-@value{GDBN} interface program uses the two @samp{\032} characters as
70b88761 1007a signal to display the source code for the frame.
1d7c3357 1008@end ifclear
70b88761 1009
18fae2a8 1010@ifset SERIAL
70b88761
RP
1011@item -b @var{bps}
1012Set the line speed (baud rate or bits per second) of any serial
18fae2a8 1013interface used by @value{GDBN} for remote debugging.
70b88761 1014
6b51acad 1015@item -tty @var{device}
70b88761 1016Run using @var{device} for your program's standard input and output.
29a2b744 1017@c FIXME: kingdon thinks there is more to -tty. Investigate.
18fae2a8 1018@end ifset
70b88761
RP
1019@end table
1020
ed447b95
RP
1021@node Quitting GDB
1022@section Quitting @value{GDBN}
18fae2a8 1023@cindex exiting @value{GDBN}
ed447b95 1024@cindex leaving @value{GDBN}
1041a570 1025
70b88761
RP
1026@table @code
1027@item quit
1028@kindex quit
1029@kindex q
18fae2a8 1030To exit @value{GDBN}, use the @code{quit} command (abbreviated @code{q}), or type
e251e767 1031an end-of-file character (usually @kbd{C-d}).
70b88761
RP
1032@end table
1033
1034@cindex interrupt
9a27b06e
RP
1035An interrupt (often @kbd{C-c}) does not exit from @value{GDBN}, but rather
1036terminates the action of any @value{GDBN} command that is in progress and
1037returns to @value{GDBN} command level. It is safe to type the interrupt
18fae2a8 1038character at any time because @value{GDBN} does not allow it to take effect
70b88761
RP
1039until a time when it is safe.
1040
18fae2a8 1041@ifclear BARETARGET
ed447b95
RP
1042If you have been using @value{GDBN} to control an attached process or
1043device, you can release it with the @code{detach} command
93928b60 1044(@pxref{Attach, ,Debugging an already-running process}).
18fae2a8 1045@end ifclear
70b88761 1046
4eb4cf57 1047@node Shell Commands
93928b60 1048@section Shell commands
1041a570 1049
70b88761 1050If you need to execute occasional shell commands during your
18fae2a8 1051debugging session, there is no need to leave or suspend @value{GDBN}; you can
70b88761
RP
1052just use the @code{shell} command.
1053
1054@table @code
1055@item shell @var{command string}
1056@kindex shell
1057@cindex shell escape
75f844cc 1058Invoke a the standard shell to execute @var{command string}.
a1eff6c2 1059@ifclear DOSHOST
75f844cc
RP
1060If it exists, the environment variable @code{SHELL} determines which
1061shell to run. Otherwise @value{GDBN} uses @code{/bin/sh}.
a1eff6c2 1062@end ifclear
70b88761
RP
1063@end table
1064
1065The utility @code{make} is often needed in development environments.
a1eff6c2
RP
1066You do not have to use the @code{shell} command for this purpose in
1067@value{GDBN}:
70b88761
RP
1068
1069@table @code
1070@item make @var{make-args}
1071@kindex make
1072@cindex calling make
a1eff6c2 1073Execute the @code{make} program with the specified
70b88761
RP
1074arguments. This is equivalent to @samp{shell make @var{make-args}}.
1075@end table
1076
4eb4cf57 1077@node Commands
18fae2a8 1078@chapter @value{GDBN} Commands
70b88761 1079
18fae2a8 1080You can abbreviate a @value{GDBN} command to the first few letters of the command
6f3ec223 1081name, if that abbreviation is unambiguous; and you can repeat certain
18fae2a8
RP
1082@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1083key to get @value{GDBN} to fill out the rest of a word in a command (or to
93918348 1084show you the alternatives available, if there is more than one possibility).
29a2b744 1085
70b88761 1086@menu
ed447b95
RP
1087* Command Syntax:: How to give commands to @value{GDBN}
1088* Completion:: Command completion
1089* Help:: How to ask @value{GDBN} for help
70b88761
RP
1090@end menu
1091
4eb4cf57 1092@node Command Syntax
93928b60 1093@section Command syntax
1041a570 1094
fe715d06
RP
1095A @value{GDBN} command is a single line of input. There is no limit on
1096how long it can be. It starts with a command name, which is followed by
1097arguments whose meaning depends on the command name. For example, the
1098command @code{step} accepts an argument which is the number of times to
1099step, as in @samp{step 5}. You can also use the @code{step} command
1100with no arguments. Some command names do not allow any arguments.
70b88761
RP
1101
1102@cindex abbreviation
18fae2a8 1103@value{GDBN} command names may always be truncated if that abbreviation is
70b88761
RP
1104unambiguous. Other possible command abbreviations are listed in the
1105documentation for individual commands. In some cases, even ambiguous
1106abbreviations are allowed; for example, @code{s} is specially defined as
1107equivalent to @code{step} even though there are other commands whose
1108names start with @code{s}. You can test abbreviations by using them as
7463aadd 1109arguments to the @code{help} command.
70b88761 1110
e251e767 1111@cindex repeating commands
70b88761 1112@kindex RET
18fae2a8 1113A blank line as input to @value{GDBN} (typing just @key{RET}) means to
70b88761 1114repeat the previous command. Certain commands (for example, @code{run})
9a27b06e 1115will not repeat this way; these are commands whose unintentional
70b88761
RP
1116repetition might cause trouble and which you are unlikely to want to
1117repeat.
1118
1119The @code{list} and @code{x} commands, when you repeat them with
1120@key{RET}, construct new arguments rather than repeating
1121exactly as typed. This permits easy scanning of source or memory.
1122
18fae2a8 1123@value{GDBN} can also use @key{RET} in another way: to partition lengthy
b80282d5 1124output, in a way similar to the common utility @code{more}
93928b60
RP
1125(@pxref{Screen Size,,Screen size}). Since it is easy to press one
1126@key{RET} too many in this situation, @value{GDBN} disables command
1127repetition after any command that generates this sort of display.
b80282d5 1128
70b88761
RP
1129@kindex #
1130@cindex comment
fe715d06
RP
1131Any text from a @kbd{#} to the end of the line is a comment; it does
1132nothing. This is useful mainly in command files (@pxref{Command
1133Files,,Command files}).
70b88761 1134
4eb4cf57 1135@node Completion
93928b60 1136@section Command completion
6f3ec223
RP
1137
1138@cindex completion
1139@cindex word completion
93918348 1140@value{GDBN} can fill in the rest of a word in a command for you, if there is
6f3ec223 1141only one possibility; it can also show you what the valid possibilities
18fae2a8
RP
1142are for the next word in a command, at any time. This works for @value{GDBN}
1143commands, @value{GDBN} subcommands, and the names of symbols in your program.
6f3ec223 1144
18fae2a8 1145Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
9a27b06e
RP
1146of a word. If there is only one possibility, @value{GDBN} fills in the
1147word, and waits for you to finish the command (or press @key{RET} to
6f3ec223
RP
1148enter it). For example, if you type
1149
93918348 1150@c FIXME "@key" does not distinguish its argument sufficiently to permit
0fdc6e27
RP
1151@c complete accuracy in these examples; space introduced for clarity.
1152@c If texinfo enhancements make it unnecessary, it would be nice to
1153@c replace " @key" by "@key" in the following...
6f3ec223 1154@example
18fae2a8 1155(@value{GDBP}) info bre @key{TAB}
6f3ec223
RP
1156@end example
1157
1158@noindent
93918348 1159@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
6f3ec223
RP
1160the only @code{info} subcommand beginning with @samp{bre}:
1161
1162@example
18fae2a8 1163(@value{GDBP}) info breakpoints
6f3ec223
RP
1164@end example
1165
1166@noindent
1167You can either press @key{RET} at this point, to run the @code{info
1168breakpoints} command, or backspace and enter something else, if
93918348 1169@samp{breakpoints} does not look like the command you expected. (If you
6f3ec223
RP
1170were sure you wanted @code{info breakpoints} in the first place, you
1171might as well just type @key{RET} immediately after @samp{info bre},
1172to exploit command abbreviations rather than command completion).
1173
1174If there is more than one possibility for the next word when you press
9a27b06e
RP
1175@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1176characters and try again, or just press @key{TAB} a second time;
1177@value{GDBN} displays all the possible completions for that word. For
6f3ec223 1178example, you might want to set a breakpoint on a subroutine whose name
18fae2a8 1179begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
9a27b06e 1180just sounds the bell. Typing @key{TAB} again displays all the
6f3ec223
RP
1181function names in your program that begin with those characters, for
1182example:
1183
1184@example
18fae2a8
RP
1185(@value{GDBP}) b make_ @key{TAB}
1186@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
6f3ec223
RP
1187make_a_section_from_file make_environ
1188make_abs_section make_function_type
1189make_blockvector make_pointer_type
1190make_cleanup make_reference_type
1191make_command make_symbol_completion_list
18fae2a8 1192(@value{GDBP}) b make_
6f3ec223
RP
1193@end example
1194
1195@noindent
18fae2a8 1196After displaying the available possibilities, @value{GDBN} copies your
b1385986 1197partial input (@samp{b make_} in the example) so you can finish the
6f3ec223
RP
1198command.
1199
1200If you just want to see the list of alternatives in the first place, you
b1385986 1201can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
0f153e74 1202means @kbd{@key{META} ?}. You can type this
18fae2a8 1203@ifclear DOSHOST
0f153e74 1204either by holding down a
b1385986 1205key designated as the @key{META} shift on your keyboard (if there is
0f153e74 1206one) while typing @kbd{?}, or
18fae2a8 1207@end ifclear
0f153e74 1208as @key{ESC} followed by @kbd{?}.
6f3ec223
RP
1209
1210@cindex quotes in commands
1211@cindex completion of quoted strings
1212Sometimes the string you need, while logically a ``word'', may contain
18fae2a8 1213parentheses or other characters that @value{GDBN} normally excludes from its
6f3ec223 1214notion of a word. To permit word completion to work in this situation,
18fae2a8 1215you may enclose words in @code{'} (single quote marks) in @value{GDBN} commands.
6f3ec223 1216
1d7c3357 1217@ifclear CONLY
6f3ec223
RP
1218The most likely situation where you might need this is in typing the
1219name of a C++ function. This is because C++ allows function overloading
1220(multiple definitions of the same function, distinguished by argument
b1385986
RP
1221type). For example, when you want to set a breakpoint you may need to
1222distinguish whether you mean the version of @code{name} that takes an
1223@code{int} parameter, @code{name(int)}, or the version that takes a
1224@code{float} parameter, @code{name(float)}. To use the word-completion
1225facilities in this situation, type a single quote @code{'} at the
18fae2a8 1226beginning of the function name. This alerts @value{GDBN} that it may need to
b1385986
RP
1227consider more information than usual when you press @key{TAB} or
1228@kbd{M-?} to request word completion:
6f3ec223
RP
1229
1230@example
18fae2a8 1231(@value{GDBP}) b 'bubble( @key{M-?}
0fdc6e27 1232bubble(double,double) bubble(int,int)
18fae2a8 1233(@value{GDBP}) b 'bubble(
6f3ec223
RP
1234@end example
1235
9a27b06e
RP
1236In some cases, @value{GDBN} can tell that completing a name requires using
1237quotes. When this happens, @value{GDBN} inserts the quote for you (while
0fdc6e27
RP
1238completing as much as it can) if you do not type the quote in the first
1239place:
1240
1241@example
18fae2a8
RP
1242(@value{GDBP}) b bub @key{TAB}
1243@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1244(@value{GDBP}) b 'bubble(
0fdc6e27
RP
1245@end example
1246
1247@noindent
18fae2a8 1248In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
0fdc6e27
RP
1249you have not yet started typing the argument list when you ask for
1250completion on an overloaded symbol.
1d7c3357 1251@end ifclear
0fdc6e27
RP
1252
1253
4eb4cf57 1254@node Help
93928b60 1255@section Getting help
70b88761
RP
1256@cindex online documentation
1257@kindex help
1041a570 1258
18fae2a8 1259You can always ask @value{GDBN} itself for information on its commands, using the
e251e767 1260command @code{help}.
70b88761
RP
1261
1262@table @code
1263@item help
1264@itemx h
1265@kindex h
1266You can use @code{help} (abbreviated @code{h}) with no arguments to
1267display a short list of named classes of commands:
1041a570 1268
70b88761 1269@smallexample
18fae2a8 1270(@value{GDBP}) help
70b88761
RP
1271List of classes of commands:
1272
1273running -- Running the program
1274stack -- Examining the stack
1275data -- Examining data
1276breakpoints -- Making program stop at certain points
1277files -- Specifying and examining files
1278status -- Status inquiries
1279support -- Support facilities
1280user-defined -- User-defined commands
1281aliases -- Aliases of other commands
1282obscure -- Obscure features
1283
203eea5d
RP
1284Type "help" followed by a class name for a list of
1285commands in that class.
1286Type "help" followed by command name for full
1287documentation.
70b88761 1288Command name abbreviations are allowed if unambiguous.
18fae2a8 1289(@value{GDBP})
70b88761
RP
1290@end smallexample
1291
1292@item help @var{class}
1293Using one of the general help classes as an argument, you can get a
1294list of the individual commands in that class. For example, here is the
1295help display for the class @code{status}:
1041a570 1296
70b88761 1297@smallexample
18fae2a8 1298(@value{GDBP}) help status
70b88761
RP
1299Status inquiries.
1300
1301List of commands:
1302
8c69096b
RP
1303@c Line break in "show" line falsifies real output, but needed
1304@c to fit in smallbook page size.
1305show -- Generic command for showing things set
1306 with "set"
70b88761
RP
1307info -- Generic command for printing status
1308
203eea5d
RP
1309Type "help" followed by command name for full
1310documentation.
70b88761 1311Command name abbreviations are allowed if unambiguous.
18fae2a8 1312(@value{GDBP})
70b88761
RP
1313@end smallexample
1314
1315@item help @var{command}
9a27b06e 1316With a command name as @code{help} argument, @value{GDBN} displays a
e251e767 1317short paragraph on how to use that command.
70b88761
RP
1318@end table
1319
18fae2a8 1320In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
70b88761 1321and @code{show} to inquire about the state of your program, or the state
18fae2a8 1322of @value{GDBN} itself. Each command supports many topics of inquiry; this
70b88761
RP
1323manual introduces each of them in the appropriate context. The listings
1324under @code{info} and under @code{show} in the Index point to
29a2b744 1325all the sub-commands. @xref{Index}.
70b88761
RP
1326
1327@c @group
1328@table @code
1329@item info
1330@kindex info
1331@kindex i
1332This command (abbreviated @code{i}) is for describing the state of your
ed447b95
RP
1333program. For example, you can list the arguments given to your program
1334with @code{info args}, list the registers currently in use with @code{info
1335registers}, or list the breakpoints you have set with @code{info breakpoints}.
70b88761
RP
1336You can get a complete list of the @code{info} sub-commands with
1337@w{@code{help info}}.
1338
1339@kindex show
1340@item show
18fae2a8 1341In contrast, @code{show} is for describing the state of @value{GDBN} itself.
70b88761
RP
1342You can change most of the things you can @code{show}, by using the
1343related command @code{set}; for example, you can control what number
1344system is used for displays with @code{set radix}, or simply inquire
e251e767 1345which is currently in use with @code{show radix}.
70b88761
RP
1346
1347@kindex info set
1348To display all the settable parameters and their current
1349values, you can use @code{show} with no arguments; you may also use
1350@code{info set}. Both commands produce the same display.
1351@c FIXME: "info set" violates the rule that "info" is for state of
1352@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1353@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1354@end table
1355@c @end group
1356
1357Here are three miscellaneous @code{show} subcommands, all of which are
1358exceptional in lacking corresponding @code{set} commands:
1359
1360@table @code
1361@kindex show version
3d3ab540 1362@cindex version number
70b88761 1363@item show version
18fae2a8
RP
1364Show what version of @value{GDBN} is running. You should include this
1365information in @value{GDBN} bug-reports. If multiple versions of @value{GDBN} are in
ed447b95 1366use at your site, you may occasionally want to determine which version
18fae2a8 1367of @value{GDBN} you are running; as @value{GDBN} evolves, new commands are introduced,
1041a570 1368and old ones may wither away. The version number is also announced
d55320a0 1369when you start @value{GDBN}.
70b88761
RP
1370
1371@kindex show copying
1372@item show copying
18fae2a8 1373Display information about permission for copying @value{GDBN}.
70b88761
RP
1374
1375@kindex show warranty
1376@item show warranty
1377Display the GNU ``NO WARRANTY'' statement.
1378@end table
1379
4eb4cf57 1380@node Running
18fae2a8 1381@chapter Running Programs Under @value{GDBN}
70b88761 1382
ed447b95 1383When you run a program under @value{GDBN}, you must first generate
1d7c3357 1384debugging information when you compile it.
18fae2a8 1385@ifclear BARETARGET
1d7c3357
RP
1386You may start it with its arguments, if any, in an environment of your
1387choice. You may redirect your program's input and output, debug an
1388already running process, or kill a child process.
18fae2a8 1389@end ifclear
18fae2a8 1390
18fae2a8 1391@menu
ed447b95
RP
1392* Compilation:: Compiling for debugging
1393* Starting:: Starting your program
1d7c3357 1394@ifclear BARETARGET
ed447b95
RP
1395* Arguments:: Your program's arguments
1396* Environment:: Your program's environment
1397* Working Directory:: Your program's working directory
1398* Input/Output:: Your program's input and output
1399* Attach:: Debugging an already-running process
1400* Kill Process:: Killing the child process
1401* Process Information:: Additional process information
0cb95a9c 1402* Threads:: Debugging programs with multiple threads
18fae2a8 1403@end ifclear
18fae2a8 1404@end menu
70b88761 1405
4eb4cf57 1406@node Compilation
93928b60 1407@section Compiling for debugging
70b88761
RP
1408
1409In order to debug a program effectively, you need to generate
1410debugging information when you compile it. This debugging information
1411is stored in the object file; it describes the data type of each
1412variable or function and the correspondence between source line numbers
1413and addresses in the executable code.
1414
1415To request debugging information, specify the @samp{-g} option when you run
1416the compiler.
1417
1418Many C compilers are unable to handle the @samp{-g} and @samp{-O}
1419options together. Using those compilers, you cannot generate optimized
1420executables containing debugging information.
1421
18fae2a8 1422@value{NGCC}, the GNU C compiler, supports @samp{-g} with or without
c7cb8acb
RP
1423@samp{-O}, making it possible to debug optimized code. We recommend
1424that you @emph{always} use @samp{-g} whenever you compile a program.
1425You may think your program is correct, but there is no sense in pushing
1426your luck.
70b88761 1427
6ca72cc6
RP
1428@cindex optimized code, debugging
1429@cindex debugging optimized code
1430When you debug a program compiled with @samp{-g -O}, remember that the
9a27b06e 1431optimizer is rearranging your code; the debugger shows you what is
93918348 1432really there. Do not be too surprised when the execution path does not
6ca72cc6 1433exactly match your source file! An extreme example: if you define a
9a27b06e 1434variable, but never use it, @value{GDBN} never sees that
6ca72cc6
RP
1435variable---because the compiler optimizes it out of existence.
1436
70b88761
RP
1437Some things do not work as well with @samp{-g -O} as with just
1438@samp{-g}, particularly on machines with instruction scheduling. If in
1439doubt, recompile with @samp{-g} alone, and if this fixes the problem,
1440please report it as a bug (including a test case!).
1441
1442Older versions of the GNU C compiler permitted a variant option
18fae2a8 1443@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
70b88761
RP
1444format; if your GNU C compiler has this option, do not use it.
1445
d55320a0 1446@need 2000
4eb4cf57 1447@node Starting
93928b60 1448@section Starting your program
70b88761
RP
1449@cindex starting
1450@cindex running
1041a570 1451
70b88761
RP
1452@table @code
1453@item run
1454@itemx r
1455@kindex run
18fae2a8 1456Use the @code{run} command to start your program under @value{GDBN}. You must
1041a570 1457first specify the program name
18fae2a8 1458@ifset VXWORKS
7463aadd 1459(except on VxWorks)
18fae2a8 1460@end ifset
ed447b95
RP
1461with an argument to @value{GDBN} (@pxref{Invocation, ,Getting In and
1462Out of @value{GDBN}}), or by using the @code{file} or @code{exec-file}
93928b60 1463command (@pxref{Files, ,Commands to specify files}).
1041a570 1464
70b88761
RP
1465@end table
1466
18fae2a8 1467@ifclear BARETARGET
29a2b744
RP
1468If you are running your program in an execution environment that
1469supports processes, @code{run} creates an inferior process and makes
1470that process run your program. (In environments without processes,
1471@code{run} jumps to the start of your program.)
70b88761
RP
1472
1473The execution of a program is affected by certain information it
18fae2a8 1474receives from its superior. @value{GDBN} provides ways to specify this
6ca72cc6 1475information, which you must do @emph{before} starting your program. (You
9a27b06e 1476can change it after starting your program, but such changes only affect
29a2b744 1477your program the next time you start it.) This information may be
70b88761
RP
1478divided into four categories:
1479
1480@table @asis
6ca72cc6 1481@item The @emph{arguments.}
29a2b744 1482Specify the arguments to give your program as the arguments of the
1041a570
RP
1483@code{run} command. If a shell is available on your target, the shell
1484is used to pass the arguments, so that you may use normal conventions
1485(such as wildcard expansion or variable substitution) in describing
1486the arguments. In Unix systems, you can control which shell is used
1487with the @code{SHELL} environment variable. @xref{Arguments, ,Your
93928b60 1488program's arguments}.
70b88761 1489
6ca72cc6 1490@item The @emph{environment.}
18fae2a8
RP
1491Your program normally inherits its environment from @value{GDBN}, but you can
1492use the @value{GDBN} commands @code{set environment} and @code{unset
9a27b06e 1493environment} to change parts of the environment that affect
93928b60 1494your program. @xref{Environment, ,Your program's environment}.
70b88761 1495
6ca72cc6 1496@item The @emph{working directory.}
18fae2a8 1497Your program inherits its working directory from @value{GDBN}. You can set
93918348 1498the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
93928b60 1499@xref{Working Directory, ,Your program's working directory}.
70b88761 1500
6ca72cc6 1501@item The @emph{standard input and output.}
70b88761 1502Your program normally uses the same device for standard input and
18fae2a8 1503standard output as @value{GDBN} is using. You can redirect input and output
70b88761
RP
1504in the @code{run} command line, or you can use the @code{tty} command to
1505set a different device for your program.
93928b60 1506@xref{Input/Output, ,Your program's input and output}.
3d3ab540
RP
1507
1508@cindex pipes
29a2b744
RP
1509@emph{Warning:} While input and output redirection work, you cannot use
1510pipes to pass the output of the program you are debugging to another
18fae2a8 1511program; if you attempt this, @value{GDBN} is likely to wind up debugging the
3d3ab540 1512wrong program.
70b88761 1513@end table
18fae2a8 1514@end ifclear
70b88761 1515
1041a570 1516When you issue the @code{run} command, your program begins to execute
93928b60 1517immediately. @xref{Stopping, ,Stopping and continuing}, for discussion
4eb4cf57 1518of how to arrange for your program to stop. Once your program has
6b51acad 1519stopped, you may call functions in your program, using the @code{print}
4eb4cf57 1520or @code{call} commands. @xref{Data, ,Examining Data}.
70b88761 1521
9a27b06e
RP
1522If the modification time of your symbol file has changed since the last
1523time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1524table, and reads it again. When it does this, @value{GDBN} tries to retain
1525your current breakpoints.
70b88761 1526
18fae2a8 1527@ifclear BARETARGET
4eb4cf57 1528@node Arguments
93928b60 1529@section Your program's arguments
70b88761
RP
1530
1531@cindex arguments (to your program)
1532The arguments to your program can be specified by the arguments of the
1533@code{run} command. They are passed to a shell, which expands wildcard
29a2b744 1534characters and performs redirection of I/O, and thence to your program.
34ae25cd 1535Your @code{SHELL} environment variable (if it exists) specifies what
ac74588e
JK
1536shell @value{GDBN} uses. If you do not define @code{SHELL},
1537@value{GDBN} uses @code{/bin/sh}.
70b88761
RP
1538
1539@code{run} with no arguments uses the same arguments used by the previous
1540@code{run}, or those set by the @code{set args} command.
1541
1542@kindex set args
1543@table @code
1544@item set args
1545Specify the arguments to be used the next time your program is run. If
9a27b06e 1546@code{set args} has no arguments, @code{run} executes your program
e251e767 1547with no arguments. Once you have run your program with arguments,
70b88761
RP
1548using @code{set args} before the next @code{run} is the only way to run
1549it again without arguments.
1550
1551@item show args
1552@kindex show args
1553Show the arguments to give your program when it is started.
1554@end table
1555
4eb4cf57 1556@node Environment
93928b60 1557@section Your program's environment
70b88761
RP
1558
1559@cindex environment (of your program)
1560The @dfn{environment} consists of a set of environment variables and
1561their values. Environment variables conventionally record such things as
1562your user name, your home directory, your terminal type, and your search
1563path for programs to run. Usually you set up environment variables with
1564the shell and they are inherited by all the other programs you run. When
29a2b744 1565debugging, it can be useful to try running your program with a modified
18fae2a8 1566environment without having to start @value{GDBN} over again.
70b88761
RP
1567
1568@table @code
1569@item path @var{directory}
1570@kindex path
1571Add @var{directory} to the front of the @code{PATH} environment variable
18fae2a8 1572(the search path for executables), for both @value{GDBN} and your program.
70b88761
RP
1573You may specify several directory names, separated by @samp{:} or
1574whitespace. If @var{directory} is already in the path, it is moved to
9a27b06e 1575the front, so it is searched sooner.
7463aadd
RP
1576
1577You can use the string @samp{$cwd} to refer to whatever is the current
d55320a0
RP
1578working directory at the time @value{GDBN} searches the path. If you
1579use @samp{.} instead, it refers to the directory where you executed the
1580@code{path} command. @value{GDBN} replaces @samp{.} in the
1581@var{directory} argument (with the current path) before adding
1582@var{directory} to the search path.
29a2b744 1583@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
70b88761
RP
1584@c document that, since repeating it would be a no-op.
1585
1586@item show paths
1587@kindex show paths
1588Display the list of search paths for executables (the @code{PATH}
1589environment variable).
1590
1591@item show environment @r{[}@var{varname}@r{]}
1592@kindex show environment
1593Print the value of environment variable @var{varname} to be given to
29a2b744 1594your program when it starts. If you do not supply @var{varname},
70b88761
RP
1595print the names and values of all environment variables to be given to
1596your program. You can abbreviate @code{environment} as @code{env}.
1597
7463aadd 1598@item set environment @var{varname} @r{[}=@r{]} @var{value}
70b88761 1599@kindex set environment
ed447b95 1600Set environment variable @var{varname} to @var{value}. The value
18fae2a8 1601changes for your program only, not for @value{GDBN} itself. @var{value} may
70b88761
RP
1602be any string; the values of environment variables are just strings, and
1603any interpretation is supplied by your program itself. The @var{value}
1604parameter is optional; if it is eliminated, the variable is set to a
1605null value.
29a2b744 1606@c "any string" here does not include leading, trailing
70b88761
RP
1607@c blanks. Gnu asks: does anyone care?
1608
1609For example, this command:
1610
1611@example
1612set env USER = foo
1613@end example
1614
1615@noindent
1616tells a Unix program, when subsequently run, that its user is named
1617@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
1618are not actually required.)
1619
1620@item unset environment @var{varname}
1621@kindex unset environment
1622Remove variable @var{varname} from the environment to be passed to your
1623program. This is different from @samp{set env @var{varname} =};
1624@code{unset environment} removes the variable from the environment,
e251e767 1625rather than assigning it an empty value.
70b88761
RP
1626@end table
1627
34ae25cd
RP
1628@emph{Warning:} @value{GDBN} runs your program using the shell indicated
1629by your @code{SHELL} environment variable if it exists (or
1630@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
1631that runs an initialization file---such as @file{.cshrc} for C-shell, or
9a27b06e 1632@file{.bashrc} for BASH---any variables you set in that file affect
34ae25cd
RP
1633your program. You may wish to move setting of environment variables to
1634files that are only run when you sign on, such as @file{.login} or
1635@file{.profile}.
562a18b2 1636
4eb4cf57 1637@node Working Directory
93928b60 1638@section Your program's working directory
70b88761
RP
1639
1640@cindex working directory (of your program)
1641Each time you start your program with @code{run}, it inherits its
93918348
RP
1642working directory from the current working directory of @value{GDBN}.
1643The @value{GDBN} working directory is initially whatever it inherited
1644from its parent process (typically the shell), but you can specify a new
1645working directory in @value{GDBN} with the @code{cd} command.
70b88761 1646
18fae2a8
RP
1647The @value{GDBN} working directory also serves as a default for the commands
1648that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
93928b60 1649specify files}.
70b88761
RP
1650
1651@table @code
1652@item cd @var{directory}
1653@kindex cd
93918348 1654Set the @value{GDBN} working directory to @var{directory}.
70b88761
RP
1655
1656@item pwd
1657@kindex pwd
93918348 1658Print the @value{GDBN} working directory.
70b88761
RP
1659@end table
1660
4eb4cf57 1661@node Input/Output
93928b60 1662@section Your program's input and output
70b88761
RP
1663
1664@cindex redirection
1665@cindex i/o
1666@cindex terminal
18fae2a8
RP
1667By default, the program you run under @value{GDBN} does input and output to
1668the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal to
70b88761
RP
1669its own terminal modes to interact with you, but it records the terminal
1670modes your program was using and switches back to them when you continue
1671running your program.
1672
1673@table @code
1674@item info terminal
1675@kindex info terminal
93918348 1676Displays information recorded by @value{GDBN} about the terminal modes your
70b88761
RP
1677program is using.
1678@end table
1679
29a2b744 1680You can redirect your program's input and/or output using shell
70b88761
RP
1681redirection with the @code{run} command. For example,
1682
18fae2a8 1683@example
70b88761 1684run > outfile
18fae2a8 1685@end example
70b88761
RP
1686
1687@noindent
29a2b744 1688starts your program, diverting its output to the file @file{outfile}.
70b88761
RP
1689
1690@kindex tty
1691@cindex controlling terminal
29a2b744 1692Another way to specify where your program should do input and output is
70b88761
RP
1693with the @code{tty} command. This command accepts a file name as
1694argument, and causes this file to be the default for future @code{run}
1695commands. It also resets the controlling terminal for the child
1696process, for future @code{run} commands. For example,
1697
1698@example
1699tty /dev/ttyb
1700@end example
1701
1702@noindent
1703directs that processes started with subsequent @code{run} commands
1704default to do input and output on the terminal @file{/dev/ttyb} and have
1705that as their controlling terminal.
1706
1707An explicit redirection in @code{run} overrides the @code{tty} command's
1708effect on the input/output device, but not its effect on the controlling
1709terminal.
1710
1711When you use the @code{tty} command or redirect input in the @code{run}
1712command, only the input @emph{for your program} is affected. The input
18fae2a8 1713for @value{GDBN} still comes from your terminal.
70b88761 1714
4eb4cf57 1715@node Attach
93928b60 1716@section Debugging an already-running process
70b88761
RP
1717@kindex attach
1718@cindex attach
1719
1720@table @code
1721@item attach @var{process-id}
1d7c3357 1722This command attaches to a running process---one that was started
9a27b06e 1723outside @value{GDBN}. (@code{info files} shows your active
1d7c3357
RP
1724targets.) The command takes as argument a process ID. The usual way to
1725find out the process-id of a Unix process is with the @code{ps} utility,
1726or with the @samp{jobs -l} shell command.
70b88761 1727
9a27b06e 1728@code{attach} does not repeat if you press @key{RET} a second time after
70b88761
RP
1729executing the command.
1730@end table
1731
d55320a0
RP
1732To use @code{attach}, your program must be running in an environment
1733which supports processes; for example, @code{attach} does not work for
1734programs on bare-board targets that lack an operating system. You must
1735also have permission to send the process a signal.
70b88761
RP
1736
1737When using @code{attach}, you should first use the @code{file} command
1738to specify the program running in the process and load its symbol table.
29a2b744 1739@xref{Files, ,Commands to Specify Files}.
70b88761 1740
18fae2a8 1741The first thing @value{GDBN} does after arranging to debug the specified
70b88761 1742process is to stop it. You can examine and modify an attached process
18fae2a8 1743with all the @value{GDBN} commands that are ordinarily available when you start
70b88761
RP
1744processes with @code{run}. You can insert breakpoints; you can step and
1745continue; you can modify storage. If you would rather the process
1746continue running, you may use the @code{continue} command after
18fae2a8 1747attaching @value{GDBN} to the process.
70b88761
RP
1748
1749@table @code
1750@item detach
1751@kindex detach
1752When you have finished debugging the attached process, you can use the
93918348 1753@code{detach} command to release it from @value{GDBN} control. Detaching
70b88761 1754the process continues its execution. After the @code{detach} command,
18fae2a8 1755that process and @value{GDBN} become completely independent once more, and you
70b88761 1756are ready to @code{attach} another process or start one with @code{run}.
9a27b06e 1757@code{detach} does not repeat if you press @key{RET} again after
70b88761
RP
1758executing the command.
1759@end table
1760
9a27b06e
RP
1761If you exit @value{GDBN} or use the @code{run} command while you have an
1762attached process, you kill that process. By default, @value{GDBN} asks
1763for confirmation if you try to do either of these things; you can
1764control whether or not you need to confirm by using the @code{set
1765confirm} command (@pxref{Messages/Warnings, ,Optional warnings and
1766messages}).
70b88761 1767
4eb4cf57 1768@node Kill Process
70b88761 1769@c @group
93928b60 1770@section Killing the child process
70b88761
RP
1771
1772@table @code
1773@item kill
1774@kindex kill
18fae2a8 1775Kill the child process in which your program is running under @value{GDBN}.
70b88761
RP
1776@end table
1777
1778This command is useful if you wish to debug a core dump instead of a
18fae2a8 1779running process. @value{GDBN} ignores any core dump file while your program
70b88761
RP
1780is running.
1781@c @end group
1782
18fae2a8
RP
1783On some operating systems, a program cannot be executed outside @value{GDBN}
1784while you have breakpoints set on it inside @value{GDBN}. You can use the
29a2b744 1785@code{kill} command in this situation to permit running your program
70b88761
RP
1786outside the debugger.
1787
1788The @code{kill} command is also useful if you wish to recompile and
29a2b744 1789relink your program, since on many systems it is impossible to modify an
70b88761 1790executable file while it is running in a process. In this case, when you
9a27b06e
RP
1791next type @code{run}, @value{GDBN} notices that the file has changed, and
1792reads the symbol table again (while trying to preserve your current
70b88761
RP
1793breakpoint settings).
1794
4eb4cf57 1795@node Process Information
93928b60 1796@section Additional process information
d24e0922
RP
1797
1798@kindex /proc
1799@cindex process image
1800Some operating systems provide a facility called @samp{/proc} that can
cc9bc574 1801be used to examine the image of a running process using file-system
18fae2a8 1802subroutines. If @value{GDBN} is configured for an operating system with this
cc9bc574
RP
1803facility, the command @code{info proc} is available to report on several
1804kinds of information about the process running your program.
d24e0922
RP
1805
1806@table @code
1807@item info proc
1808@kindex info proc
1809Summarize available information about the process.
1810
1811@item info proc mappings
1812@kindex info proc mappings
1813Report on the address ranges accessible in the program, with information
1814on whether your program may read, write, or execute each range.
1815
1816@item info proc times
1817@kindex info proc times
1818Starting time, user CPU time, and system CPU time for your program and
1819its children.
1820
1821@item info proc id
1822@kindex info proc id
93918348
RP
1823Report on the process IDs related to your program: its own process ID,
1824the ID of its parent, the process group ID, and the session ID.
d24e0922
RP
1825
1826@item info proc status
1827@kindex info proc status
1828General information on the state of the process. If the process is
1829stopped, this report includes the reason for stopping, and any signal
1830received.
cc9bc574
RP
1831
1832@item info proc all
1833Show all the above information about the process.
d24e0922 1834@end table
0cb95a9c
RP
1835
1836@node Threads
1837@section Debugging programs with multiple threads
1838
1839@cindex threads of execution
1840@cindex multiple threads
1841@cindex switching threads
1842In some operating systems, a single program may have more than one
1843@dfn{thread} of execution. The precise semantics of threads differ from
1844one operating system to another, but in general the threads of a single
1845program are akin to multiple processes---except that they share one
1846address space (that is, they can all examine and modify the same
1847variables). On the other hand, each thread has its own registers and
1848execution stack, and perhaps private memory.
1849
22b5dba5 1850@value{GDBN} provides these facilities for debugging multi-thread
0cb95a9c
RP
1851programs:
1852
1853@itemize @bullet
1854@item automatic notification of new threads
1855@item @samp{thread @var{threadno}}, a command to switch among threads
1856@item @samp{info threads}, a command to inquire about existing threads
1857@item thread-specific breakpoints
1858@end itemize
1859
1860@quotation
1861@emph{Warning:} These facilities are not yet available on every
1862@value{GDBN} configuration where the operating system supports threads.
1863If your @value{GDBN} does not support threads, these commands have no
1864effect. For example, a system without thread support shows no output
1865from @samp{info threads}, and always rejects the @code{thread} command,
1866like this:
1867
1868@smallexample
1869(@value{GDBP}) info threads
1870(@value{GDBP}) thread 1
1871Thread ID 1 not known. Use the "info threads" command to
1872see the IDs of currently known threads.
1873@end smallexample
1874@c FIXME to implementors: how hard would it be to say "sorry, this GDB
1875@c doesn't support threads"?
1876@end quotation
1877
1878@cindex focus of debugging
1879@cindex current thread
1880The @value{GDBN} thread debugging facility allows you to observe all
1881threads while your program runs---but whenever @value{GDBN} takes
1882control, one thread in particular is always the focus of debugging.
1883This thread is called the @dfn{current thread}. Debugging commands show
1884program information from the perspective of the current thread.
1885
1886@kindex New @var{systag}
1887@cindex thread identifier (system)
1888@c FIXME-implementors!! It would be more helpful if the [New...] message
1889@c included GDB's numeric thread handle, so you could just go to that
1890@c thread without first checking `info threads'.
1891Whenever @value{GDBN} detects a new thread in your program, it displays
22b5dba5
RP
1892the target system's identification for the thread with a message in the
1893form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
1894whose form varies depending on the particular system. For example, on
1895LynxOS, you might see
0cb95a9c
RP
1896
1897@example
1898[New process 35 thread 27]
1899@end example
1900
1901@noindent
1902when @value{GDBN} notices a new thread. In contrast, on an SGI system,
1903the @var{systag} is simply something like @samp{process 368}, with no
1904further qualifier.
1905
1906@c FIXME!! (1) Does the [New...] message appear even for the very first
1907@c thread of a program, or does it only appear for the
1908@c second---i.e., when it becomes obvious we have a multithread
1909@c program?
1910@c (2) *Is* there necessarily a first thread always? Or do some
1911@c multithread systems permit starting a program with multiple
1912@c threads ab initio?
1913
1914@cindex thread number
1915@cindex thread identifier (GDB)
1916For debugging purposes, @value{GDBN} associates its own thread
1917number---always a single integer---with each thread in your program.
1918
1919@table @code
1920@item info threads
1921@kindex info threads
1922Display a summary of all threads currently in your
1923program. @value{GDBN} displays for each thread (in this order):
1924
1925@enumerate
22b5dba5 1926@item the thread number assigned by @value{GDBN}
0cb95a9c 1927
22b5dba5 1928@item the target system's thread identifier (@var{systag})
0cb95a9c
RP
1929
1930@item the current stack frame summary for that thread
1931@end enumerate
1932
1933@noindent
1934An asterisk @samp{*} to the left of the @value{GDBN} thread number
1935indicates the current thread.
1936
1937For example,
1938@end table
1939@c end table here to get a little more width for example
1940
1941@smallexample
1942(@value{GDBP}) info threads
1943 3 process 35 thread 27 0x34e5 in sigpause ()
1944 2 process 35 thread 23 0x34e5 in sigpause ()
1945* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
1946 at threadtest.c:68
1947@end smallexample
1948
1949@table @code
1950@item thread @var{threadno}
22b5dba5 1951@kindex thread @var{threadno}
0cb95a9c
RP
1952Make thread number @var{threadno} the current thread. The command
1953argument @var{threadno} is the internal @value{GDBN} thread number, as
1954shown in the first field of the @samp{info threads} display.
1955@value{GDBN} responds by displaying the system identifier of the thread
1956you selected, and its current stack frame summary:
1957
1958@smallexample
1959@c FIXME!! This example made up; find a GDB w/threads and get real one
1960(@value{GDBP}) thread 2
1961[Switching to process 35 thread 23]
19620x34e5 in sigpause ()
1963@end smallexample
1964
1965@noindent
1966As with the @samp{[New @dots{}]} message, the form of the text after
1967@samp{Switching to} depends on your system's conventions for identifying
1968threads.
1969@end table
1970
1971@cindex automatic thread selection
1972@cindex switching threads automatically
1973@cindex threads, automatic switching
1974Whenever @value{GDBN} stops your program, due to a breakpoint or a
1975signal, it automatically selects the thread where that breakpoint or
1976signal happened. @value{GDBN} alerts you to the context switch with a
1977message of the form @samp{[Switching to @var{systag}]} to identify the
1978thread.
1979
1980@xref{Thread Stops,,Stopping and starting multi-thread programs}, for
1981more information about how @value{GDBN} behaves when you stop and start
1982programs with multiple threads.
22b5dba5
RP
1983
1984@xref{Set Watchpoints,,Setting watchpoints}, for information about
1985watchpoints in programs with multiple threads.
18fae2a8 1986@end ifclear
d24e0922 1987
4eb4cf57 1988@node Stopping
70b88761
RP
1989@chapter Stopping and Continuing
1990
ed447b95 1991The principal purposes of using a debugger are so that you can stop your
29a2b744 1992program before it terminates; or so that, if your program runs into
70b88761
RP
1993trouble, you can investigate and find out why.
1994
18fae2a8 1995Inside @value{GDBN}, your program may stop for any of several reasons, such
1d7c3357
RP
1996as
1997@ifclear BARETARGET
1998a signal,
1999@end ifclear
2000a breakpoint, or reaching a new line after a @value{GDBN}
70b88761
RP
2001command such as @code{step}. You may then examine and change
2002variables, set new breakpoints or remove old ones, and then continue
18fae2a8 2003execution. Usually, the messages shown by @value{GDBN} provide ample
70b88761
RP
2004explanation of the status of your program---but you can also explicitly
2005request this information at any time.
2006
2007@table @code
2008@item info program
2009@kindex info program
2010Display information about the status of your program: whether it is
1d7c3357
RP
2011running or not,
2012@ifclear BARETARGET
2013what process it is,
2014@end ifclear
2015and why it stopped.
70b88761
RP
2016@end table
2017
18fae2a8
RP
2018@menu
2019@ifclear CONLY
ed447b95 2020* Breakpoints:: Breakpoints, watchpoints, and exceptions
18fae2a8
RP
2021@end ifclear
2022@ifset CONLY
ed447b95 2023* Breakpoints:: Breakpoints and watchpoints
18fae2a8 2024@end ifset
1d7c3357 2025@c Remnant makeinfo bug requires blank line after *successful* end-if in menu:
18fae2a8 2026
ed447b95 2027* Continuing and Stepping:: Resuming execution
18fae2a8 2028@ifset POSIX
b80282d5 2029* Signals:: Signals
18fae2a8 2030@end ifset
0cb95a9c
RP
2031@ifclear BARETARGET
2032* Thread Stops:: Stopping and starting multi-thread programs
2033@end ifclear
18fae2a8 2034@end menu
70b88761 2035
1d7c3357 2036@c makeinfo node-defaulting requires adjacency of @node and sectioning cmds
18fae2a8
RP
2037@c ...hence distribute @node Breakpoints over two possible @if expansions.
2038@c
2039@ifclear CONLY
4eb4cf57 2040@node Breakpoints
93928b60 2041@section Breakpoints, watchpoints, and exceptions
18fae2a8
RP
2042@end ifclear
2043@ifset CONLY
2044@node Breakpoints
93928b60 2045@section Breakpoints and watchpoints
18fae2a8 2046@end ifset
70b88761
RP
2047
2048@cindex breakpoints
2049A @dfn{breakpoint} makes your program stop whenever a certain point in
9a27b06e
RP
2050the program is reached. For each breakpoint, you can add
2051conditions to control in finer detail whether your program stops.
70b88761 2052You can set breakpoints with the @code{break} command and its variants
93928b60 2053(@pxref{Set Breaks, ,Setting breakpoints}), to specify the place where
29a2b744 2054your program should stop by line number, function name or exact address
0f153e74 2055in the program.
18fae2a8 2056@ifclear CONLY
0f153e74 2057In languages with exception handling (such as GNU C++), you can also set
0cb95a9c
RP
2058breakpoints where an exception is raised (@pxref{Exception Handling,,
2059Breakpoints and exceptions}).
18fae2a8 2060@end ifclear
70b88761
RP
2061
2062@cindex watchpoints
6ca72cc6
RP
2063@cindex memory tracing
2064@cindex breakpoint on memory address
2065@cindex breakpoint on variable modification
29a2b744
RP
2066A @dfn{watchpoint} is a special breakpoint that stops your program
2067when the value of an expression changes. You must use a different
2068command to set watchpoints (@pxref{Set Watchpoints, ,Setting
93928b60 2069watchpoints}), but aside from that, you can manage a watchpoint like
29a2b744 2070any other breakpoint: you enable, disable, and delete both breakpoints
1041a570 2071and watchpoints using the same commands.
70b88761 2072
fe715d06 2073You can arrange to have values from your program displayed automatically
0cb95a9c
RP
2074whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
2075Automatic display}.
fe715d06 2076
6ca72cc6
RP
2077@cindex breakpoint numbers
2078@cindex numbers for breakpoints
18fae2a8 2079@value{GDBN} assigns a number to each breakpoint or watchpoint when you
6ca72cc6
RP
2080create it; these numbers are successive integers starting with one. In
2081many of the commands for controlling various features of breakpoints you
2082use the breakpoint number to say which breakpoint you want to change.
2083Each breakpoint may be @dfn{enabled} or @dfn{disabled}; if disabled, it has
29a2b744 2084no effect on your program until you enable it again.
70b88761
RP
2085
2086@menu
ed447b95
RP
2087* Set Breaks:: Setting breakpoints
2088* Set Watchpoints:: Setting watchpoints
1d7c3357 2089@ifclear CONLY
ed447b95 2090* Exception Handling:: Breakpoints and exceptions
1d7c3357 2091@end ifclear
b0157555 2092
ed447b95
RP
2093* Delete Breaks:: Deleting breakpoints
2094* Disabling:: Disabling breakpoints
2095* Conditions:: Break conditions
2096* Break Commands:: Breakpoint command lists
1d7c3357 2097@ifclear CONLY
ed447b95 2098* Breakpoint Menus:: Breakpoint menus
1d7c3357
RP
2099@end ifclear
2100@ifclear BARETARGET
ed447b95 2101* Error in Breakpoints:: ``Cannot insert breakpoints''
1d7c3357 2102@end ifclear
70b88761
RP
2103@end menu
2104
4eb4cf57 2105@node Set Breaks
93928b60 2106@subsection Setting breakpoints
70b88761 2107
4906534f
RP
2108@c FIXME LMB what does GDB do if no code on line of breakpt?
2109@c consider in particular declaration with/without initialization.
2110@c
2111@c FIXME 2 is there stuff on this already? break at fun start, already init?
2112
70b88761
RP
2113@kindex break
2114@kindex b
6ca72cc6
RP
2115@kindex $bpnum
2116@cindex latest breakpoint
2117Breakpoints are set with the @code{break} command (abbreviated
2118@code{b}). The debugger convenience variable @samp{$bpnum} records the
2119number of the beakpoint you've set most recently; see @ref{Convenience
93928b60 2120Vars,, Convenience variables}, for a discussion of what you can do with
6ca72cc6 2121convenience variables.
70b88761
RP
2122
2123You have several ways to say where the breakpoint should go.
2124
2125@table @code
2126@item break @var{function}
0f153e74 2127Set a breakpoint at entry to function @var{function}.
18fae2a8 2128@ifclear CONLY
0f153e74
RP
2129When using source languages that permit overloading of symbols, such as
2130C++, @var{function} may refer to more than one possible place to break.
93928b60 2131@xref{Breakpoint Menus,,Breakpoint menus}, for a discussion of that situation.
18fae2a8 2132@end ifclear
70b88761
RP
2133
2134@item break +@var{offset}
2135@itemx break -@var{offset}
2136Set a breakpoint some number of lines forward or back from the position
2137at which execution stopped in the currently selected frame.
2138
2139@item break @var{linenum}
2140Set a breakpoint at line @var{linenum} in the current source file.
2141That file is the last file whose source text was printed. This
9a27b06e 2142breakpoint stops your program just before it executes any of the
70b88761
RP
2143code on that line.
2144
2145@item break @var{filename}:@var{linenum}
2146Set a breakpoint at line @var{linenum} in source file @var{filename}.
2147
2148@item break @var{filename}:@var{function}
2149Set a breakpoint at entry to function @var{function} found in file
2150@var{filename}. Specifying a file name as well as a function name is
2151superfluous except when multiple files contain similarly named
2152functions.
2153
2154@item break *@var{address}
2155Set a breakpoint at address @var{address}. You can use this to set
29a2b744 2156breakpoints in parts of your program which do not have debugging
70b88761
RP
2157information or source files.
2158
2159@item break
29a2b744
RP
2160When called without any arguments, @code{break} sets a breakpoint at
2161the next instruction to be executed in the selected stack frame
2162(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
9a27b06e 2163innermost, this makes your program stop as soon as control
29a2b744
RP
2164returns to that frame. This is similar to the effect of a
2165@code{finish} command in the frame inside the selected frame---except
2166that @code{finish} does not leave an active breakpoint. If you use
9a27b06e 2167@code{break} without an argument in the innermost frame, @value{GDBN} stops
1041a570
RP
2168the next time it reaches the current location; this may be useful
2169inside loops.
70b88761 2170
18fae2a8 2171@value{GDBN} normally ignores breakpoints when it resumes execution, until at
70b88761
RP
2172least one instruction has been executed. If it did not do this, you
2173would be unable to proceed past a breakpoint without first disabling the
2174breakpoint. This rule applies whether or not the breakpoint already
29a2b744 2175existed when your program stopped.
70b88761
RP
2176
2177@item break @dots{} if @var{cond}
2178Set a breakpoint with condition @var{cond}; evaluate the expression
2179@var{cond} each time the breakpoint is reached, and stop only if the
3d3ab540 2180value is nonzero---that is, if @var{cond} evaluates as true.
1041a570
RP
2181@samp{@dots{}} stands for one of the possible arguments described
2182above (or no argument) specifying where to break. @xref{Conditions,
93928b60 2183,Break conditions}, for more information on breakpoint conditions.
70b88761
RP
2184
2185@item tbreak @var{args}
2186@kindex tbreak
2187Set a breakpoint enabled only for one stop. @var{args} are the
2188same as for the @code{break} command, and the breakpoint is set in the same
cfcafcba 2189way, but the breakpoint is automatically deleted after the first time your
93928b60 2190program stops there. @xref{Disabling, ,Disabling breakpoints}.
70b88761
RP
2191
2192@item rbreak @var{regex}
2193@kindex rbreak
2194@cindex regular expression
4906534f 2195@c FIXME what kind of regexp?
70b88761 2196Set breakpoints on all functions matching the regular expression
b80282d5 2197@var{regex}. This command
70b88761 2198sets an unconditional breakpoint on all matches, printing a list of all
b1955f0b
RP
2199breakpoints it set. Once these breakpoints are set, they are treated
2200just like the breakpoints set with the @code{break} command. You can
2201delete them, disable them, or make them conditional the same way as any
2202other breakpoint.
70b88761 2203
18fae2a8 2204@ifclear CONLY
b80282d5
RP
2205When debugging C++ programs, @code{rbreak} is useful for setting
2206breakpoints on overloaded functions that are not members of any special
2207classes.
18fae2a8 2208@end ifclear
b80282d5 2209
70b88761 2210@kindex info breakpoints
c338a2fd 2211@cindex @code{$_} and @code{info breakpoints}
70b88761 2212@item info breakpoints @r{[}@var{n}@r{]}
6ca72cc6
RP
2213@itemx info break @r{[}@var{n}@r{]}
2214@itemx info watchpoints @r{[}@var{n}@r{]}
2215Print a table of all breakpoints and watchpoints set and not
2216deleted, with the following columns for each breakpoint:
2217
2218@table @emph
2219@item Breakpoint Numbers
2220@item Type
2221Breakpoint or watchpoint.
2222@item Disposition
2223Whether the breakpoint is marked to be disabled or deleted when hit.
2224@item Enabled or Disabled
d24e0922 2225Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
6ca72cc6
RP
2226that are not enabled.
2227@item Address
2228Where the breakpoint is in your program, as a memory address
2229@item What
2230Where the breakpoint is in the source for your program, as a file and
2231line number.
2232@end table
2233
2234@noindent
d55320a0
RP
2235If a breakpoint is conditional, @code{info break} shows the condition on
2236the line following the affected breakpoint; breakpoint commands, if any,
2237are listed after that.
6ca72cc6
RP
2238
2239@noindent
2240@code{info break} with a breakpoint
29a2b744
RP
2241number @var{n} as argument lists only that breakpoint. The
2242convenience variable @code{$_} and the default examining-address for
2243the @code{x} command are set to the address of the last breakpoint
93928b60 2244listed (@pxref{Memory, ,Examining memory}).
1041a570 2245@end table
70b88761 2246
18fae2a8 2247@value{GDBN} allows you to set any number of breakpoints at the same place in
1041a570
RP
2248your program. There is nothing silly or meaningless about this. When
2249the breakpoints are conditional, this is even useful
93928b60 2250(@pxref{Conditions, ,Break conditions}).
70b88761 2251
6ca72cc6 2252@cindex negative breakpoint numbers
18fae2a8
RP
2253@cindex internal @value{GDBN} breakpoints
2254@value{GDBN} itself sometimes sets breakpoints in your program for special
6ca72cc6
RP
2255purposes, such as proper handling of @code{longjmp} (in C programs).
2256These internal breakpoints are assigned negative numbers, starting with
5a2c1d85 2257@code{-1}; @samp{info breakpoints} does not display them.
d48da190 2258
18fae2a8 2259You can see these breakpoints with the @value{GDBN} maintenance command
5a2c1d85 2260@samp{maint info breakpoints}.
6ca72cc6
RP
2261
2262@table @code
d48da190
RP
2263@kindex maint info breakpoints
2264@item maint info breakpoints
6ca72cc6 2265Using the same format as @samp{info breakpoints}, display both the
18fae2a8 2266breakpoints you've set explicitly, and those @value{GDBN} is using for
6ca72cc6
RP
2267internal purposes. Internal breakpoints are shown with negative
2268breakpoint numbers. The type column identifies what kind of breakpoint
2269is shown:
2270
2271@table @code
2272@item breakpoint
2273Normal, explicitly set breakpoint.
2274
2275@item watchpoint
2276Normal, explicitly set watchpoint.
2277
2278@item longjmp
2279Internal breakpoint, used to handle correctly stepping through
2280@code{longjmp} calls.
2281
2282@item longjmp resume
2283Internal breakpoint at the target of a @code{longjmp}.
2284
2285@item until
18fae2a8 2286Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
6ca72cc6
RP
2287
2288@item finish
18fae2a8 2289Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
6ca72cc6
RP
2290@end table
2291
2292@end table
2293
2294
4eb4cf57 2295@node Set Watchpoints
93928b60 2296@subsection Setting watchpoints
70b88761 2297@cindex setting watchpoints
1041a570 2298
70b88761 2299You can use a watchpoint to stop execution whenever the value of an
e251e767 2300expression changes, without having to predict a particular place
70b88761
RP
2301where this may happen.
2302
2303Watchpoints currently execute two orders of magnitude more slowly than
6b51acad 2304other breakpoints, but this can be well worth it to catch errors where
9a27b06e
RP
2305you have no clue what part of your program is the culprit.
2306
2307@ignore
2308@c this "future releases" promise has been in too long, is getting
2309@c embarrassing. But...
2310@c FIXME: in future updates, check whether hardware watchpoints in on any
2311@c platforms yet. As of 26jan94, they're very close on HPPA running
2312@c Berkeley and on Irix 4.
2313Some processors provide special hardware to support watchpoint
2314evaluation; future releases of @value{GDBN} will use such hardware if it
2315is available.
2316@end ignore
70b88761
RP
2317
2318@table @code
e251e767 2319@kindex watch
70b88761
RP
2320@item watch @var{expr}
2321Set a watchpoint for an expression.
2322
2323@kindex info watchpoints
2324@item info watchpoints
6ca72cc6
RP
2325This command prints a list of watchpoints and breakpoints; it is the
2326same as @code{info break}.
70b88761
RP
2327@end table
2328
0cb95a9c
RP
2329@ifclear BARETARGET
2330@quotation
2331@cindex watchpoints and threads
2332@cindex threads and watchpoints
2333@emph{Warning:} in multi-thread programs, watchpoints have only limited
2334usefulness. With the current watchpoint implementation, @value{GDBN}
2335can only watch the value of an expression @emph{in a single thread}. If
2336you are confident that the expression can only change due to the current
9a27b06e
RP
2337thread's activity (and if you are also confident that no other thread
2338can become current), then you can use watchpoints as usual. However,
0cb95a9c
RP
2339@value{GDBN} may not notice when a non-current thread's activity changes
2340the expression.
2341@end quotation
2342@end ifclear
2343
1d7c3357 2344@ifclear CONLY
4eb4cf57 2345@node Exception Handling
93928b60 2346@subsection Breakpoints and exceptions
70b88761
RP
2347@cindex exception handlers
2348
b80282d5 2349Some languages, such as GNU C++, implement exception handling. You can
18fae2a8 2350use @value{GDBN} to examine what caused your program to raise an exception,
29a2b744 2351and to list the exceptions your program is prepared to handle at a
70b88761
RP
2352given point in time.
2353
2354@table @code
2355@item catch @var{exceptions}
2356@kindex catch
2357You can set breakpoints at active exception handlers by using the
2358@code{catch} command. @var{exceptions} is a list of names of exceptions
2359to catch.
2360@end table
2361
29a2b744 2362You can use @code{info catch} to list active exception handlers.
93928b60 2363@xref{Frame Info, ,Information about a frame}.
70b88761 2364
9a27b06e 2365There are currently some limitations to exception handling in @value{GDBN}:
70b88761
RP
2366
2367@itemize @bullet
2368@item
18fae2a8 2369If you call a function interactively, @value{GDBN} normally returns
70b88761
RP
2370control to you when the function has finished executing. If the call
2371raises an exception, however, the call may bypass the mechanism that
29a2b744 2372returns control to you and cause your program to simply continue
18fae2a8 2373running until it hits a breakpoint, catches a signal that @value{GDBN} is
70b88761 2374listening for, or exits.
9a27b06e 2375
70b88761
RP
2376@item
2377You cannot raise an exception interactively.
9a27b06e 2378
70b88761 2379@item
9a27b06e 2380You cannot install an exception handler interactively.
70b88761
RP
2381@end itemize
2382
2383@cindex raise exceptions
2384Sometimes @code{catch} is not the best way to debug exception handling:
29a2b744 2385if you need to know exactly where an exception is raised, it is better to
70b88761
RP
2386stop @emph{before} the exception handler is called, since that way you
2387can see the stack before any unwinding takes place. If you set a
2388breakpoint in an exception handler instead, it may not be easy to find
2389out where the exception was raised.
2390
2391To stop just before an exception handler is called, you need some
b80282d5 2392knowledge of the implementation. In the case of GNU C++, exceptions are
70b88761
RP
2393raised by calling a library function named @code{__raise_exception}
2394which has the following ANSI C interface:
2395
2396@example
b80282d5 2397 /* @var{addr} is where the exception identifier is stored.
70b88761
RP
2398 ID is the exception identifier. */
2399 void __raise_exception (void **@var{addr}, void *@var{id});
2400@end example
2401
2402@noindent
2403To make the debugger catch all exceptions before any stack
2404unwinding takes place, set a breakpoint on @code{__raise_exception}
93928b60 2405(@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions}).
70b88761 2406
93928b60 2407With a conditional breakpoint (@pxref{Conditions, ,Break conditions})
29a2b744
RP
2408that depends on the value of @var{id}, you can stop your program when
2409a specific exception is raised. You can use multiple conditional
2410breakpoints to stop your program when any of a number of exceptions are
2411raised.
1d7c3357 2412@end ifclear
70b88761 2413
4eb4cf57 2414@node Delete Breaks
93928b60 2415@subsection Deleting breakpoints
70b88761
RP
2416
2417@cindex clearing breakpoints, watchpoints
2418@cindex deleting breakpoints, watchpoints
2419It is often necessary to eliminate a breakpoint or watchpoint once it
29a2b744 2420has done its job and you no longer want your program to stop there. This
70b88761
RP
2421is called @dfn{deleting} the breakpoint. A breakpoint that has been
2422deleted no longer exists; it is forgotten.
2423
2424With the @code{clear} command you can delete breakpoints according to
29a2b744 2425where they are in your program. With the @code{delete} command you can
70b88761
RP
2426delete individual breakpoints or watchpoints by specifying their
2427breakpoint numbers.
2428
18fae2a8 2429It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
70b88761
RP
2430automatically ignores breakpoints on the first instruction to be executed
2431when you continue execution without changing the execution address.
2432
2433@table @code
2434@item clear
2435@kindex clear
2436Delete any breakpoints at the next instruction to be executed in the
93928b60 2437selected stack frame (@pxref{Selection, ,Selecting a frame}). When
29a2b744
RP
2438the innermost frame is selected, this is a good way to delete a
2439breakpoint where your program just stopped.
70b88761
RP
2440
2441@item clear @var{function}
2442@itemx clear @var{filename}:@var{function}
2443Delete any breakpoints set at entry to the function @var{function}.
2444
2445@item clear @var{linenum}
2446@itemx clear @var{filename}:@var{linenum}
2447Delete any breakpoints set at or within the code of the specified line.
2448
2449@item delete @r{[}breakpoints@r{]} @r{[}@var{bnums}@dots{}@r{]}
2450@cindex delete breakpoints
2451@kindex delete
2452@kindex d
2453Delete the breakpoints or watchpoints of the numbers specified as
18fae2a8 2454arguments. If no argument is specified, delete all breakpoints (@value{GDBN}
1041a570 2455asks confirmation, unless you have @code{set confirm off}). You
70b88761
RP
2456can abbreviate this command as @code{d}.
2457@end table
2458
4eb4cf57 2459@node Disabling
93928b60 2460@subsection Disabling breakpoints
70b88761
RP
2461
2462@cindex disabled breakpoints
2463@cindex enabled breakpoints
2464Rather than deleting a breakpoint or watchpoint, you might prefer to
2465@dfn{disable} it. This makes the breakpoint inoperative as if it had
2466been deleted, but remembers the information on the breakpoint so that
2467you can @dfn{enable} it again later.
2468
2469You disable and enable breakpoints and watchpoints with the
2470@code{enable} and @code{disable} commands, optionally specifying one or
2471more breakpoint numbers as arguments. Use @code{info break} or
2472@code{info watch} to print a list of breakpoints or watchpoints if you
29a2b744 2473do not know which numbers to use.
70b88761
RP
2474
2475A breakpoint or watchpoint can have any of four different states of
2476enablement:
2477
2478@itemize @bullet
2479@item
9a27b06e 2480Enabled. The breakpoint stops your program. A breakpoint set
70b88761
RP
2481with the @code{break} command starts out in this state.
2482@item
29a2b744 2483Disabled. The breakpoint has no effect on your program.
70b88761 2484@item
9a27b06e
RP
2485Enabled once. The breakpoint stops your program, but then becomes
2486disabled. A breakpoint set with the @code{tbreak} command starts out in
2487this state.
70b88761 2488@item
9a27b06e
RP
2489Enabled for deletion. The breakpoint stops your program, but
2490immediately after it does so it is deleted permanently.
70b88761
RP
2491@end itemize
2492
2493You can use the following commands to enable or disable breakpoints and
2494watchpoints:
2495
2496@table @code
2497@item disable @r{[}breakpoints@r{]} @r{[}@var{bnums}@dots{}@r{]}
2498@kindex disable breakpoints
2499@kindex disable
2500@kindex dis
2501Disable the specified breakpoints---or all breakpoints, if none are
2502listed. A disabled breakpoint has no effect but is not forgotten. All
2503options such as ignore-counts, conditions and commands are remembered in
2504case the breakpoint is enabled again later. You may abbreviate
2505@code{disable} as @code{dis}.
2506
2507@item enable @r{[}breakpoints@r{]} @r{[}@var{bnums}@dots{}@r{]}
2508@kindex enable breakpoints
2509@kindex enable
2510Enable the specified breakpoints (or all defined breakpoints). They
29a2b744 2511become effective once again in stopping your program.
70b88761
RP
2512
2513@item enable @r{[}breakpoints@r{]} once @var{bnums}@dots{}
9a27b06e
RP
2514Enable the specified breakpoints temporarily. @value{GDBN} disables any
2515of these breakpoints immediately after stopping your program.
70b88761
RP
2516
2517@item enable @r{[}breakpoints@r{]} delete @var{bnums}@dots{}
9a27b06e
RP
2518Enable the specified breakpoints to work once, then die. @value{GDBN}
2519deletes any of these breakpoints as soon as your program stops there.
70b88761
RP
2520@end table
2521
29a2b744 2522Save for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
93928b60
RP
2523,Setting breakpoints}), breakpoints that you set are initially enabled;
2524subsequently, they become disabled or enabled only when you use one of
2525the commands above. (The command @code{until} can set and delete a
9a27b06e 2526breakpoint of its own, but it does not change the state of your other
93928b60
RP
2527breakpoints; see @ref{Continuing and Stepping, ,Continuing and
2528stepping}.)
70b88761 2529
4eb4cf57 2530@node Conditions
93928b60 2531@subsection Break conditions
70b88761
RP
2532@cindex conditional breakpoints
2533@cindex breakpoint conditions
2534
4906534f
RP
2535@c FIXME what is scope of break condition expr? Context where wanted?
2536@c in particular for a watchpoint?
29a2b744 2537The simplest sort of breakpoint breaks every time your program reaches a
70b88761
RP
2538specified place. You can also specify a @dfn{condition} for a
2539breakpoint. A condition is just a Boolean expression in your
1041a570
RP
2540programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
2541a condition evaluates the expression each time your program reaches it,
2542and your program stops only if the condition is @emph{true}.
3d3ab540
RP
2543
2544This is the converse of using assertions for program validation; in that
2545situation, you want to stop when the assertion is violated---that is,
2546when the condition is false. In C, if you want to test an assertion expressed
e251e767 2547by the condition @var{assert}, you should set the condition
3d3ab540 2548@samp{! @var{assert}} on the appropriate breakpoint.
70b88761
RP
2549
2550Conditions are also accepted for watchpoints; you may not need them,
2551since a watchpoint is inspecting the value of an expression anyhow---but
2552it might be simpler, say, to just set a watchpoint on a variable name,
2553and specify a condition that tests whether the new value is an interesting
e251e767 2554one.
70b88761 2555
29a2b744 2556Break conditions can have side effects, and may even call functions in
70b88761 2557your program. This can be useful, for example, to activate functions
29a2b744
RP
2558that log program progress, or to use your own print functions to
2559format special data structures. The effects are completely predictable
2560unless there is another enabled breakpoint at the same address. (In
18fae2a8 2561that case, @value{GDBN} might see the other breakpoint first and stop your
29a2b744
RP
2562program without checking the condition of this one.) Note that
2563breakpoint commands are usually more convenient and flexible for the
2564purpose of performing side effects when a breakpoint is reached
93928b60 2565(@pxref{Break Commands, ,Breakpoint command lists}).
70b88761
RP
2566
2567Break conditions can be specified when a breakpoint is set, by using
29a2b744 2568@samp{if} in the arguments to the @code{break} command. @xref{Set
93928b60 2569Breaks, ,Setting breakpoints}. They can also be changed at any time
29a2b744
RP
2570with the @code{condition} command. The @code{watch} command does not
2571recognize the @code{if} keyword; @code{condition} is the only way to
2572impose a further condition on a watchpoint.
70b88761 2573
e251e767
RP
2574@table @code
2575@item condition @var{bnum} @var{expression}
2576@kindex condition
70b88761 2577Specify @var{expression} as the break condition for breakpoint or
9a27b06e
RP
2578watchpoint number @var{bnum}. After you set a condition, breakpoint
2579@var{bnum} stops your program only if the value of @var{expression} is
2580true (nonzero, in C). When you use @code{condition}, @value{GDBN}
2581checks @var{expression} immediately for syntactic correctness, and to
2582determine whether symbols in it have referents in the context of your
2583breakpoint.
29a2b744 2584@c FIXME so what does GDB do if there is no referent? Moreover, what
4906534f 2585@c about watchpoints?
18fae2a8 2586@value{GDBN} does
70b88761 2587not actually evaluate @var{expression} at the time the @code{condition}
1041a570 2588command is given, however. @xref{Expressions, ,Expressions}.
70b88761
RP
2589
2590@item condition @var{bnum}
2591Remove the condition from breakpoint number @var{bnum}. It becomes
2592an ordinary unconditional breakpoint.
2593@end table
2594
2595@cindex ignore count (of breakpoint)
2596A special case of a breakpoint condition is to stop only when the
2597breakpoint has been reached a certain number of times. This is so
2598useful that there is a special way to do it, using the @dfn{ignore
2599count} of the breakpoint. Every breakpoint has an ignore count, which
2600is an integer. Most of the time, the ignore count is zero, and
29a2b744 2601therefore has no effect. But if your program reaches a breakpoint whose
70b88761
RP
2602ignore count is positive, then instead of stopping, it just decrements
2603the ignore count by one and continues. As a result, if the ignore count
9a27b06e
RP
2604value is @var{n}, the breakpoint does not stop the next @var{n} times
2605your program reaches it.
70b88761
RP
2606
2607@table @code
2608@item ignore @var{bnum} @var{count}
2609@kindex ignore
2610Set the ignore count of breakpoint number @var{bnum} to @var{count}.
2611The next @var{count} times the breakpoint is reached, your program's
9a27b06e 2612execution does not stop; other than to decrement the ignore count, @value{GDBN}
70b88761
RP
2613takes no action.
2614
2615To make the breakpoint stop the next time it is reached, specify
2616a count of zero.
2617
d55320a0
RP
2618When you use @code{continue} to resume execution of your program from a
2619breakpoint, you can specify an ignore count directly as an argument to
2620@code{continue}, rather than using @code{ignore}. @xref{Continuing and
2621Stepping,,Continuing and stepping}.
70b88761 2622
9a27b06e
RP
2623If a breakpoint has a positive ignore count and a condition, the
2624condition is not checked. Once the ignore count reaches zero,
2625@value{GDBN} resumes checking the condition.
70b88761 2626
29a2b744 2627You could achieve the effect of the ignore count with a condition such
18fae2a8 2628as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
1041a570 2629is decremented each time. @xref{Convenience Vars, ,Convenience
93928b60 2630variables}.
d55320a0 2631@end table
70b88761 2632
4eb4cf57 2633@node Break Commands
93928b60 2634@subsection Breakpoint command lists
70b88761
RP
2635
2636@cindex breakpoint commands
2637You can give any breakpoint (or watchpoint) a series of commands to
29a2b744 2638execute when your program stops due to that breakpoint. For example, you
70b88761
RP
2639might want to print the values of certain expressions, or enable other
2640breakpoints.
2641
2642@table @code
2643@item commands @r{[}@var{bnum}@r{]}
2644@itemx @dots{} @var{command-list} @dots{}
2645@itemx end
2646@kindex commands
2647@kindex end
2648Specify a list of commands for breakpoint number @var{bnum}. The commands
2649themselves appear on the following lines. Type a line containing just
2650@code{end} to terminate the commands.
2651
203eea5d
RP
2652To remove all commands from a breakpoint, type @code{commands} and
2653follow it immediately with @code{end}; that is, give no commands.
70b88761
RP
2654
2655With no @var{bnum} argument, @code{commands} refers to the last
2656breakpoint or watchpoint set (not to the breakpoint most recently
2657encountered).
2658@end table
2659
18fae2a8 2660Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
70b88761
RP
2661disabled within a @var{command-list}.
2662
29a2b744 2663You can use breakpoint commands to start your program up again. Simply
70b88761 2664use the @code{continue} command, or @code{step}, or any other command
fe715d06
RP
2665that resumes execution.
2666
2667Any other commands in the command list, after a command that resumes
2668execution, are ignored. This is because any time you resume execution
2669(even with a simple @code{next} or @code{step}), you may encounter
2670another breakpoint---which could have its own command list, leading to
2671ambiguities about which list to execute.
70b88761
RP
2672
2673@kindex silent
fe715d06
RP
2674If the first command you specify in a command list is @code{silent}, the
2675usual message about stopping at a breakpoint is not printed. This may
2676be desirable for breakpoints that are to print a specific message and
2677then continue. If none of the remaining commands print anything, you
9a27b06e 2678see no sign that the breakpoint was reached. @code{silent} is
fe715d06 2679meaningful only at the beginning of a breakpoint command list.
70b88761 2680
d55320a0
RP
2681The commands @code{echo}, @code{output}, and @code{printf} allow you to
2682print precisely controlled output, and are often useful in silent
2683breakpoints. @xref{Output, ,Commands for controlled output}.
70b88761
RP
2684
2685For example, here is how you could use breakpoint commands to print the
2686value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
2687
18fae2a8 2688@example
70b88761
RP
2689break foo if x>0
2690commands
2691silent
d55320a0 2692printf "x is %d\n",x
70b88761
RP
2693cont
2694end
18fae2a8 2695@end example
70b88761
RP
2696
2697One application for breakpoint commands is to compensate for one bug so
2698you can test for another. Put a breakpoint just after the erroneous line
2699of code, give it a condition to detect the case in which something
2700erroneous has been done, and give it commands to assign correct values
2701to any variables that need them. End with the @code{continue} command
29a2b744 2702so that your program does not stop, and start with the @code{silent}
70b88761
RP
2703command so that no output is produced. Here is an example:
2704
2705@example
2706break 403
2707commands
2708silent
2709set x = y + 4
2710cont
2711end
2712@end example
2713
1d7c3357 2714@ifclear CONLY
4eb4cf57 2715@node Breakpoint Menus
93928b60 2716@subsection Breakpoint menus
b80282d5 2717@cindex overloading
e251e767 2718@cindex symbol overloading
70b88761
RP
2719
2720Some programming languages (notably C++) permit a single function name
2721to be defined several times, for application in different contexts.
2722This is called @dfn{overloading}. When a function name is overloaded,
18fae2a8 2723@samp{break @var{function}} is not enough to tell @value{GDBN} where you want
9a27b06e 2724a breakpoint. If you realize this is a problem, you can use
6f3ec223 2725something like @samp{break @var{function}(@var{types})} to specify which
18fae2a8 2726particular version of the function you want. Otherwise, @value{GDBN} offers
6f3ec223
RP
2727you a menu of numbered choices for different possible breakpoints, and
2728waits for your selection with the prompt @samp{>}. The first two
2729options are always @samp{[0] cancel} and @samp{[1] all}. Typing @kbd{1}
2730sets a breakpoint at each definition of @var{function}, and typing
2731@kbd{0} aborts the @code{break} command without setting any new
2732breakpoints.
70b88761
RP
2733
2734For example, the following session excerpt shows an attempt to set a
e251e767 2735breakpoint at the overloaded symbol @code{String::after}.
70b88761
RP
2736We choose three particular definitions of that function name:
2737
6f3ec223 2738@c FIXME! This is likely to change to show arg type lists, at least
d55320a0 2739@smallexample
18fae2a8 2740(@value{GDBP}) b String::after
70b88761
RP
2741[0] cancel
2742[1] all
2743[2] file:String.cc; line number:867
2744[3] file:String.cc; line number:860
2745[4] file:String.cc; line number:875
2746[5] file:String.cc; line number:853
2747[6] file:String.cc; line number:846
2748[7] file:String.cc; line number:735
2749> 2 4 6
2750Breakpoint 1 at 0xb26c: file String.cc, line 867.
2751Breakpoint 2 at 0xb344: file String.cc, line 875.
2752Breakpoint 3 at 0xafcc: file String.cc, line 846.
2753Multiple breakpoints were set.
d55320a0
RP
2754Use the "delete" command to delete unwanted
2755 breakpoints.
18fae2a8 2756(@value{GDBP})
d55320a0 2757@end smallexample
1d7c3357 2758@end ifclear
70b88761 2759
1d7c3357 2760@ifclear BARETARGET
4eb4cf57 2761@node Error in Breakpoints
93928b60 2762@subsection ``Cannot insert breakpoints''
70b88761 2763
e251e767 2764@c FIXME: "cannot insert breakpoints" error, v unclear.
70b88761 2765@c Q in pending mail to Gilmore. ---pesch@cygnus.com, 26mar91
e251e767 2766@c some light may be shed by looking at instances of
d24e0922 2767@c ONE_PROCESS_WRITETEXT. But error message seems possible otherwise
c338a2fd 2768@c too. pesch, 20sep91
70b88761
RP
2769Under some operating systems, breakpoints cannot be used in a program if
2770any other process is running that program. In this situation,
18fae2a8 2771attempting to run or continue a program with a breakpoint causes @value{GDBN}
70b88761
RP
2772to stop the other process.
2773
2774When this happens, you have three ways to proceed:
2775
2776@enumerate
2777@item
2778Remove or disable the breakpoints, then continue.
2779
2780@item
18fae2a8
RP
2781Suspend @value{GDBN}, and copy the file containing your program to a new name.
2782Resume @value{GDBN} and use the @code{exec-file} command to specify that @value{GDBN}
29a2b744 2783should run your program under that name. Then start your program again.
70b88761
RP
2784
2785@c FIXME: RMS commented here "Show example". Maybe when someone
2786@c explains the first FIXME: in this section...
2787
2788@item
29a2b744 2789Relink your program so that the text segment is nonsharable, using the
70b88761
RP
2790linker option @samp{-N}. The operating system limitation may not apply
2791to nonsharable executables.
2792@end enumerate
1d7c3357 2793@end ifclear
70b88761 2794
4eb4cf57 2795@node Continuing and Stepping
93928b60 2796@section Continuing and stepping
70b88761
RP
2797
2798@cindex stepping
7463aadd
RP
2799@cindex continuing
2800@cindex resuming execution
3d3ab540 2801@dfn{Continuing} means resuming program execution until your program
cedaf8bc
RP
2802completes normally. In contrast, @dfn{stepping} means executing just
2803one more ``step'' of your program, where ``step'' may mean either one
2804line of source code, or one machine instruction (depending on what
2805particular command you use). Either when continuing
4eb4cf57 2806or when stepping, your program may stop even sooner, due to
18fae2a8 2807@ifset BARETARGET
4eb4cf57 2808a breakpoint.
18fae2a8
RP
2809@end ifset
2810@ifclear BARETARGET
6b51acad 2811a breakpoint or a signal. (If due to a signal, you may want to use
4eb4cf57
RP
2812@code{handle}, or use @samp{signal 0} to resume execution.
2813@xref{Signals, ,Signals}.)
18fae2a8 2814@end ifclear
3d3ab540
RP
2815
2816@table @code
6b51acad
RP
2817@item continue @r{[}@var{ignore-count}@r{]}
2818@itemx c @r{[}@var{ignore-count}@r{]}
2819@itemx fg @r{[}@var{ignore-count}@r{]}
3d3ab540 2820@kindex continue
d55320a0
RP
2821@kindex c
2822@kindex fg
6b51acad
RP
2823Resume program execution, at the address where your program last stopped;
2824any breakpoints set at that address are bypassed. The optional argument
2825@var{ignore-count} allows you to specify a further number of times to
2826ignore a breakpoint at this location; its effect is like that of
2827@code{ignore} (@pxref{Conditions, ,Break conditions}).
2828
2829The argument @var{ignore-count} is meaningful only when your program
d55320a0
RP
2830stopped due to a breakpoint. At other times, the argument to
2831@code{continue} is ignored.
2832
2833The synonyms @code{c} and @code{fg} are provided purely for convenience,
2834and have exactly the same behavior as @code{continue}.
2835@end table
2836
3d3ab540 2837To resume execution at a different place, you can use @code{return}
93928b60 2838(@pxref{Returning, ,Returning from a function}) to go back to the
29a2b744 2839calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
93928b60 2840different address}) to go to an arbitrary location in your program.
7463aadd
RP
2841
2842A typical technique for using stepping is to set a breakpoint
93928b60
RP
2843@ifclear CONLY
2844(@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions})
2845@end ifclear
2846@ifset CONLY
2847(@pxref{Breakpoints, ,Breakpoints and watchpoints})
2848@end ifset
2849at the
29a2b744
RP
2850beginning of the function or the section of your program where a
2851problem is believed to lie, run your program until it stops at that
2852breakpoint, and then step through the suspect area, examining the
2853variables that are interesting, until you see the problem happen.
70b88761
RP
2854
2855@table @code
2856@item step
2857@kindex step
2858@kindex s
29a2b744 2859Continue running your program until control reaches a different source
18fae2a8 2860line, then stop it and return control to @value{GDBN}. This command is
70b88761
RP
2861abbreviated @code{s}.
2862
3d3ab540 2863@quotation
068b06f2
JK
2864@c "without debugging information" is imprecise; actually "without line
2865@c numbers in the debugging information". (gcc -g1 has debugging info but
2866@c not line numbers). But it seems complex to try to make that
2867@c distinction here.
3d3ab540
RP
2868@emph{Warning:} If you use the @code{step} command while control is
2869within a function that was compiled without debugging information,
d55320a0 2870execution proceeds until control reaches a function that does have
068b06f2
JK
2871debugging information. Likewise, it will not step into a function which
2872is compiled without debugging information. To step through functions
2873without debugging information, use the @code{stepi} command, described
2874below.
3d3ab540 2875@end quotation
70b88761
RP
2876
2877@item step @var{count}
2878Continue running as in @code{step}, but do so @var{count} times. If a
1d7c3357
RP
2879breakpoint is reached,
2880@ifclear BARETARGET
2881or a signal not related to stepping occurs before @var{count} steps,
2882@end ifclear
2883stepping stops right away.
70b88761 2884
7463aadd 2885@item next @r{[}@var{count}@r{]}
70b88761
RP
2886@kindex next
2887@kindex n
7463aadd
RP
2888Continue to the next source line in the current (innermost) stack frame.
2889Similar to @code{step}, but any function calls appearing within the line
2890of code are executed without stopping. Execution stops when control
2891reaches a different line of code at the stack level which was executing
2892when the @code{next} command was given. This command is abbreviated
2893@code{n}.
70b88761 2894
7463aadd 2895An argument @var{count} is a repeat count, as for @code{step}.
70b88761
RP
2896
2897@code{next} within a function that lacks debugging information acts like
2898@code{step}, but any function calls appearing within the code of the
2899function are executed without stopping.
2900
2901@item finish
2902@kindex finish
7463aadd
RP
2903Continue running until just after function in the selected stack frame
2904returns. Print the returned value (if any).
70b88761 2905
29a2b744 2906Contrast this with the @code{return} command (@pxref{Returning,
93928b60 2907,Returning from a function}).
70b88761
RP
2908
2909@item until
2910@kindex until
6b51acad 2911@itemx u
70b88761
RP
2912@kindex u
2913Continue running until a source line past the current line, in the
2914current stack frame, is reached. This command is used to avoid single
2915stepping through a loop more than once. It is like the @code{next}
2916command, except that when @code{until} encounters a jump, it
2917automatically continues execution until the program counter is greater
2918than the address of the jump.
2919
2920This means that when you reach the end of a loop after single stepping
9a27b06e
RP
2921though it, @code{until} makes your program continue execution until it
2922exits the loop. In contrast, a @code{next} command at the end of a loop
2923simply steps back to the beginning of the loop, which forces you to step
2924through the next iteration.
70b88761 2925
29a2b744 2926@code{until} always stops your program if it attempts to exit the current
70b88761
RP
2927stack frame.
2928
2929@code{until} may produce somewhat counterintuitive results if the order
7463aadd 2930of machine code does not match the order of the source lines. For
70b88761
RP
2931example, in the following excerpt from a debugging session, the @code{f}
2932(@code{frame}) command shows that execution is stopped at line
2933@code{206}; yet when we use @code{until}, we get to line @code{195}:
2934
2935@example
18fae2a8 2936(@value{GDBP}) f
70b88761 2937#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
b80282d5 2938206 expand_input();
18fae2a8 2939(@value{GDBP}) until
b80282d5 2940195 for ( ; argc > 0; NEXTARG) @{
70b88761
RP
2941@end example
2942
7463aadd
RP
2943This happened because, for execution efficiency, the compiler had
2944generated code for the loop closure test at the end, rather than the
2945start, of the loop---even though the test in a C @code{for}-loop is
2946written before the body of the loop. The @code{until} command appeared
2947to step back to the beginning of the loop when it advanced to this
2948expression; however, it has not really gone to an earlier
2949statement---not in terms of the actual machine code.
70b88761
RP
2950
2951@code{until} with no argument works by means of single
2952instruction stepping, and hence is slower than @code{until} with an
2953argument.
2954
2955@item until @var{location}
6b51acad 2956@itemx u @var{location}
29a2b744
RP
2957Continue running your program until either the specified location is
2958reached, or the current stack frame returns. @var{location} is any of
2959the forms of argument acceptable to @code{break} (@pxref{Set Breaks,
93928b60 2960,Setting breakpoints}). This form of the command uses breakpoints,
1041a570 2961and hence is quicker than @code{until} without an argument.
70b88761
RP
2962
2963@item stepi
2964@itemx si
2965@kindex stepi
2966@kindex si
2967Execute one machine instruction, then stop and return to the debugger.
2968
2969It is often useful to do @samp{display/i $pc} when stepping by machine
9a27b06e
RP
2970instructions. This makes @value{GDBN} automatically display the next
2971instruction to be executed, each time your program stops. @xref{Auto
2972Display,, Automatic display}.
70b88761
RP
2973
2974An argument is a repeat count, as in @code{step}.
2975
ed447b95 2976@need 750
70b88761
RP
2977@item nexti
2978@itemx ni
2979@kindex nexti
2980@kindex ni
2981Execute one machine instruction, but if it is a function call,
2982proceed until the function returns.
2983
2984An argument is a repeat count, as in @code{next}.
70b88761
RP
2985@end table
2986
18fae2a8 2987@ifset POSIX
4eb4cf57 2988@node Signals
70b88761
RP
2989@section Signals
2990@cindex signals
2991
2992A signal is an asynchronous event that can happen in a program. The
2993operating system defines the possible kinds of signals, and gives each
2994kind a name and a number. For example, in Unix @code{SIGINT} is the
2995signal a program gets when you type an interrupt (often @kbd{C-c});
2996@code{SIGSEGV} is the signal a program gets from referencing a place in
2997memory far away from all the areas in use; @code{SIGALRM} occurs when
29a2b744 2998the alarm clock timer goes off (which happens only if your program has
70b88761
RP
2999requested an alarm).
3000
3001@cindex fatal signals
3002Some signals, including @code{SIGALRM}, are a normal part of the
29a2b744
RP
3003functioning of your program. Others, such as @code{SIGSEGV}, indicate
3004errors; these signals are @dfn{fatal} (kill your program immediately) if the
70b88761 3005program has not specified in advance some other way to handle the signal.
29a2b744 3006@code{SIGINT} does not indicate an error in your program, but it is normally
70b88761
RP
3007fatal so it can carry out the purpose of the interrupt: to kill the program.
3008
18fae2a8
RP
3009@value{GDBN} has the ability to detect any occurrence of a signal in your
3010program. You can tell @value{GDBN} in advance what to do for each kind of
29a2b744 3011signal.
70b88761
RP
3012
3013@cindex handling signals
18fae2a8 3014Normally, @value{GDBN} is set up to ignore non-erroneous signals like @code{SIGALRM}
29a2b744
RP
3015(so as not to interfere with their role in the functioning of your program)
3016but to stop your program immediately whenever an error signal happens.
70b88761
RP
3017You can change these settings with the @code{handle} command.
3018
3019@table @code
3020@item info signals
3021@kindex info signals
18fae2a8 3022Print a table of all the kinds of signals and how @value{GDBN} has been told to
70b88761
RP
3023handle each one. You can use this to see the signal numbers of all
3024the defined types of signals.
3025
3026@item handle @var{signal} @var{keywords}@dots{}
3027@kindex handle
18fae2a8 3028Change the way @value{GDBN} handles signal @var{signal}. @var{signal} can be the
70b88761
RP
3029number of a signal or its name (with or without the @samp{SIG} at the
3030beginning). The @var{keywords} say what change to make.
3031@end table
3032
3033@c @group
3034The keywords allowed by the @code{handle} command can be abbreviated.
3035Their full names are:
3036
3037@table @code
3038@item nostop
18fae2a8 3039@value{GDBN} should not stop your program when this signal happens. It may
70b88761
RP
3040still print a message telling you that the signal has come in.
3041
3042@item stop
18fae2a8 3043@value{GDBN} should stop your program when this signal happens. This implies
70b88761
RP
3044the @code{print} keyword as well.
3045
3046@item print
18fae2a8 3047@value{GDBN} should print a message when this signal happens.
70b88761
RP
3048
3049@item noprint
18fae2a8 3050@value{GDBN} should not mention the occurrence of the signal at all. This
70b88761
RP
3051implies the @code{nostop} keyword as well.
3052
3053@item pass
9a27b06e
RP
3054@value{GDBN} should allow your program to see this signal; your program
3055can handle the signal, or else it may terminate if the signal is fatal
70b88761
RP
3056and not handled.
3057
3058@item nopass
18fae2a8 3059@value{GDBN} should not allow your program to see this signal.
70b88761
RP
3060@end table
3061@c @end group
3062
ed447b95 3063When a signal stops your program, the signal is not visible until you
9a27b06e 3064continue. Your program sees the signal then, if @code{pass} is in
ed447b95
RP
3065effect for the signal in question @emph{at that time}. In other words,
3066after @value{GDBN} reports a signal, you can use the @code{handle}
9a27b06e
RP
3067command with @code{pass} or @code{nopass} to control whether your
3068program sees that signal when you continue.
70b88761 3069
29a2b744 3070You can also use the @code{signal} command to prevent your program from
70b88761 3071seeing a signal, or cause it to see a signal it normally would not see,
29a2b744 3072or to give it any signal at any time. For example, if your program stopped
7463aadd
RP
3073due to some sort of memory reference error, you might store correct
3074values into the erroneous variables and continue, hoping to see more
29a2b744
RP
3075execution; but your program would probably terminate immediately as
3076a result of the fatal signal once it saw the signal. To prevent this,
3077you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
93928b60 3078program a signal}.
18fae2a8 3079@end ifset
70b88761 3080
0cb95a9c
RP
3081@ifclear BARETARGET
3082@node Thread Stops
3083@section Stopping and starting multi-thread programs
3084
3085When your program has multiple threads (@pxref{Threads,, Debugging
3086programs with multiple threads}), you can choose whether to set
3087breakpoints on all threads, or on a particular thread.
3088
3089@table @code
22b5dba5
RP
3090@cindex breakpoints and threads
3091@cindex thread breakpoints
0cb95a9c
RP
3092@kindex break @dots{} thread @var{threadno}
3093@item break @var{linespec} thread @var{threadno}
3094@itemx break @var{linespec} thread @var{threadno} if @dots{}
3095Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
3096to specify that you only want @value{GDBN} to stop the program when a
22b5dba5
RP
3097particular thread reaches this breakpoint. @var{threadno} is one of the
3098numeric thread identifiers assigned by @value{GDBN}, shown in the first
3099column of the @samp{info threads} display.
0cb95a9c
RP
3100
3101If you do not specify @samp{thread @var{threadno}} when you set a
3102breakpoint, the breakpoint applies to @emph{all} threads of your
3103program.
22b5dba5
RP
3104
3105You can use the @code{thread} qualifier on conditional breakpoints as
3106well; in this case, place @samp{thread @var{threadno}} before the
3107breakpoint condition, like this:
3108
3109@smallexample
3110(gdb) break frik.c:13 thread 28 if bartab > lim
3111@end smallexample
0cb95a9c
RP
3112@end table
3113
3114@cindex stopped threads
3115@cindex threads, stopped
3116Whenever your program stops under @value{GDBN} for any reason,
3117@emph{all} threads of execution stop, not just the current thread. This
3118allows you to examine the overall state of the program, including
3119switching between threads, without worrying that things may change
3120underfoot.
3121
3122@cindex continuing threads
3123@cindex threads, continuing
3124Conversely, whenever you restart the program, @emph{all} threads start
3125executing. @emph{This is true even when single-stepping} with commands
3126like @code{step} or @code{next}.
3127
3128In particular, @value{GDBN} cannot single-step all threads in lockstep.
22b5dba5
RP
3129Since thread scheduling is up to your debugging target's operating
3130system (not controlled by @value{GDBN}), other threads may
3131execute more than one statement while the current thread completes a
3132single step. Moreover, in general other threads stop in the middle of a
3133statement, rather than at a clean statement boundary, when the program
3134stops.
0cb95a9c
RP
3135
3136You might even find your program stopped in another thread after
3137continuing or even single-stepping. This happens whenever some other
3138thread runs into a breakpoint, a signal, or an exception before the
3139first thread completes whatever you requested.
3140@end ifclear
3141
4eb4cf57 3142@node Stack
70b88761
RP
3143@chapter Examining the Stack
3144
3145When your program has stopped, the first thing you need to know is where it
3146stopped and how it got there.
3147
3148@cindex call stack
3149Each time your program performs a function call, the information about
29a2b744 3150where in your program the call was made from is saved in a block of data
70b88761
RP
3151called a @dfn{stack frame}. The frame also contains the arguments of the
3152call and the local variables of the function that was called. All the
3153stack frames are allocated in a region of memory called the @dfn{call
3154stack}.
3155
93928b60
RP
3156When your program stops, the @value{GDBN} commands for examining the
3157stack allow you to see all of this information.
70b88761
RP
3158
3159@cindex selected frame
93928b60
RP
3160One of the stack frames is @dfn{selected} by @value{GDBN} and many
3161@value{GDBN} commands refer implicitly to the selected frame. In
3162particular, whenever you ask @value{GDBN} for the value of a variable in
3163your program, the value is found in the selected frame. There are
3164special @value{GDBN} commands to select whichever frame you are
3165interested in.
70b88761 3166
93928b60
RP
3167When your program stops, @value{GDBN} automatically selects the
3168currently executing frame and describes it briefly as the @code{frame}
3169command does (@pxref{Frame Info, ,Information about a frame}).
70b88761
RP
3170
3171@menu
ed447b95 3172* Frames:: Stack frames
b80282d5 3173* Backtrace:: Backtraces
ed447b95
RP
3174* Selection:: Selecting a frame
3175* Frame Info:: Information on a frame
572867a8
RP
3176@ifset MIPS
3177* MIPS Stack:: MIPS machines and the function stack
3178@end ifset
70b88761
RP
3179@end menu
3180
4eb4cf57 3181@node Frames
93928b60 3182@section Stack frames
70b88761
RP
3183
3184@cindex frame
3185@cindex stack frame
3186The call stack is divided up into contiguous pieces called @dfn{stack
3187frames}, or @dfn{frames} for short; each frame is the data associated
3188with one call to one function. The frame contains the arguments given
3189to the function, the function's local variables, and the address at
3190which the function is executing.
3191
3192@cindex initial frame
3193@cindex outermost frame
3194@cindex innermost frame
3195When your program is started, the stack has only one frame, that of the
3196function @code{main}. This is called the @dfn{initial} frame or the
3197@dfn{outermost} frame. Each time a function is called, a new frame is
3198made. Each time a function returns, the frame for that function invocation
3199is eliminated. If a function is recursive, there can be many frames for
3200the same function. The frame for the function in which execution is
3201actually occurring is called the @dfn{innermost} frame. This is the most
3202recently created of all the stack frames that still exist.
3203
3204@cindex frame pointer
3205Inside your program, stack frames are identified by their addresses. A
3206stack frame consists of many bytes, each of which has its own address; each
3207kind of computer has a convention for choosing one of those bytes whose
3208address serves as the address of the frame. Usually this address is kept
3209in a register called the @dfn{frame pointer register} while execution is
3210going on in that frame.
3211
3212@cindex frame number
18fae2a8 3213@value{GDBN} assigns numbers to all existing stack frames, starting with
70b88761
RP
3214zero for the innermost frame, one for the frame that called it,
3215and so on upward. These numbers do not really exist in your program;
18fae2a8
RP
3216they are assigned by @value{GDBN} to give you a way of designating stack
3217frames in @value{GDBN} commands.
70b88761 3218
6b51acad 3219@c below produces an acceptable overful hbox. --mew 13aug1993
70b88761 3220@cindex frameless execution
8c69096b 3221Some compilers provide a way to compile functions so that they operate
18fae2a8 3222without stack frames. (For example, the @code{@value{GCC}} option
9a27b06e 3223@samp{-fomit-frame-pointer} generates functions without a frame.)
70b88761 3224This is occasionally done with heavily used library functions to save
8c69096b
RP
3225the frame setup time. @value{GDBN} has limited facilities for dealing
3226with these function invocations. If the innermost function invocation
9a27b06e 3227has no stack frame, @value{GDBN} nevertheless regards it as though
8c69096b
RP
3228it had a separate frame, which is numbered zero as usual, allowing
3229correct tracing of the function call chain. However, @value{GDBN} has
3230no provision for frameless functions elsewhere in the stack.
70b88761 3231
4eb4cf57 3232@node Backtrace
70b88761
RP
3233@section Backtraces
3234
29a2b744 3235A backtrace is a summary of how your program got where it is. It shows one
70b88761
RP
3236line per frame, for many frames, starting with the currently executing
3237frame (frame zero), followed by its caller (frame one), and on up the
3238stack.
3239
3240@table @code
3241@item backtrace
3242@itemx bt
3243@kindex backtrace
3244@kindex bt
3245Print a backtrace of the entire stack: one line per frame for all
3246frames in the stack.
3247
3248You can stop the backtrace at any time by typing the system interrupt
3249character, normally @kbd{C-c}.
3250
3251@item backtrace @var{n}
3252@itemx bt @var{n}
3253Similar, but print only the innermost @var{n} frames.
3254
3255@item backtrace -@var{n}
3256@itemx bt -@var{n}
3257Similar, but print only the outermost @var{n} frames.
3258@end table
3259
3260@kindex where
3261@kindex info stack
3262@kindex info s
3263The names @code{where} and @code{info stack} (abbreviated @code{info s})
3264are additional aliases for @code{backtrace}.
3265
3266Each line in the backtrace shows the frame number and the function name.
3267The program counter value is also shown---unless you use @code{set
3268print address off}. The backtrace also shows the source file name and
3269line number, as well as the arguments to the function. The program
3270counter value is omitted if it is at the beginning of the code for that
3271line number.
3272
3273Here is an example of a backtrace. It was made with the command
3274@samp{bt 3}, so it shows the innermost three frames.
3275
3276@smallexample
3277@group
203eea5d
RP
3278#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
3279 at builtin.c:993
70b88761
RP
3280#1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
3281#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
3282 at macro.c:71
3283(More stack frames follow...)
3284@end group
3285@end smallexample
3286
3287@noindent
29a2b744
RP
3288The display for frame zero does not begin with a program counter
3289value, indicating that your program has stopped at the beginning of the
70b88761
RP
3290code for line @code{993} of @code{builtin.c}.
3291
4eb4cf57 3292@node Selection
93928b60 3293@section Selecting a frame
70b88761 3294
29a2b744 3295Most commands for examining the stack and other data in your program work on
70b88761
RP
3296whichever stack frame is selected at the moment. Here are the commands for
3297selecting a stack frame; all of them finish by printing a brief description
3298of the stack frame just selected.
3299
3300@table @code
3301@item frame @var{n}
3302@itemx f @var{n}
3303@kindex frame
3304@kindex f
3305Select frame number @var{n}. Recall that frame zero is the innermost
3306(currently executing) frame, frame one is the frame that called the
93918348
RP
3307innermost one, and so on. The highest-numbered frame is the one for
3308@code{main}.
70b88761
RP
3309
3310@item frame @var{addr}
3311@itemx f @var{addr}
3312Select the frame at address @var{addr}. This is useful mainly if the
3313chaining of stack frames has been damaged by a bug, making it
18fae2a8 3314impossible for @value{GDBN} to assign numbers properly to all frames. In
29a2b744 3315addition, this can be useful when your program has multiple stacks and
70b88761
RP
3316switches between them.
3317
7e17041f 3318@ifclear H8EXCLUSIVE
70b88761 3319On the SPARC architecture, @code{frame} needs two addresses to
e251e767 3320select an arbitrary frame: a frame pointer and a stack pointer.
7e17041f
JK
3321
3322On the MIPS and Alpha architecture, it needs two addresses: a stack
3323pointer and a program counter.
3324
3325On the 29k architecture, it needs three addresses: a register stack
3326pointer, a program counter, and a memory stack pointer.
70b88761 3327@c note to future updaters: this is conditioned on a flag
7e17041f
JK
3328@c SETUP_ARBITRARY_FRAME in the tm-*.h files. The above is up to date
3329@c as of 27 Jan 1994.
3330@end ifclear
70b88761
RP
3331
3332@item up @var{n}
3333@kindex up
3334Move @var{n} frames up the stack. For positive numbers @var{n}, this
3335advances toward the outermost frame, to higher frame numbers, to frames
3336that have existed longer. @var{n} defaults to one.
3337
3338@item down @var{n}
3339@kindex down
3340@kindex do
3341Move @var{n} frames down the stack. For positive numbers @var{n}, this
3342advances toward the innermost frame, to lower frame numbers, to frames
3343that were created more recently. @var{n} defaults to one. You may
3344abbreviate @code{down} as @code{do}.
3345@end table
3346
3347All of these commands end by printing two lines of output describing the
3348frame. The first line shows the frame number, the function name, the
3349arguments, and the source file and line number of execution in that
ed447b95 3350frame. The second line shows the text of that source line.
70b88761 3351
b1955f0b 3352@need 1000
ed447b95 3353For example:
b1955f0b 3354
70b88761 3355@smallexample
29a2b744 3356@group
18fae2a8 3357(@value{GDBP}) up
203eea5d
RP
3358#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
3359 at env.c:10
70b88761 336010 read_input_file (argv[i]);
29a2b744 3361@end group
70b88761
RP
3362@end smallexample
3363
9a27b06e
RP
3364After such a printout, the @code{list} command with no arguments
3365prints ten lines centered on the point of execution in the frame.
93928b60 3366@xref{List, ,Printing source lines}.
70b88761
RP
3367
3368@table @code
3369@item up-silently @var{n}
3370@itemx down-silently @var{n}
3371@kindex down-silently
3372@kindex up-silently
3373These two commands are variants of @code{up} and @code{down},
3374respectively; they differ in that they do their work silently, without
3375causing display of the new frame. They are intended primarily for use
18fae2a8 3376in @value{GDBN} command scripts, where the output might be unnecessary and
e251e767 3377distracting.
70b88761
RP
3378@end table
3379
4eb4cf57 3380@node Frame Info
93928b60 3381@section Information about a frame
70b88761
RP
3382
3383There are several other commands to print information about the selected
3384stack frame.
3385
3386@table @code
3387@item frame
3388@itemx f
29a2b744
RP
3389When used without any argument, this command does not change which
3390frame is selected, but prints a brief description of the currently
70b88761 3391selected stack frame. It can be abbreviated @code{f}. With an
ed447b95 3392argument, this command is used to select a stack frame.
93928b60 3393@xref{Selection, ,Selecting a frame}.
70b88761
RP
3394
3395@item info frame
70b88761 3396@itemx info f
29a2b744 3397@kindex info frame
70b88761
RP
3398@kindex info f
3399This command prints a verbose description of the selected stack frame,
3400including the address of the frame, the addresses of the next frame down
c2bbbb22
RP
3401(called by this frame) and the next frame up (caller of this frame), the
3402language that the source code corresponding to this frame was written in,
70b88761
RP
3403the address of the frame's arguments, the program counter saved in it
3404(the address of execution in the caller frame), and which registers
3405were saved in the frame. The verbose description is useful when
3406something has gone wrong that has made the stack format fail to fit
3407the usual conventions.
3408
3409@item info frame @var{addr}
3410@itemx info f @var{addr}
7e17041f
JK
3411Print a verbose description of the frame at address @var{addr}, without
3412selecting that frame. The selected frame remains unchanged by this
3413command. This requires the same kind of address (more than one for some
3414architectures) that you specify in the @code{frame} command.
3415@xref{Selection, ,Selecting a frame}.
70b88761
RP
3416
3417@item info args
3418@kindex info args
3419Print the arguments of the selected frame, each on a separate line.
3420
3421@item info locals
3422@kindex info locals
3423Print the local variables of the selected frame, each on a separate
ed447b95
RP
3424line. These are all variables (declared either static or automatic)
3425accessible at the point of execution of the selected frame.
70b88761 3426
1d7c3357 3427@ifclear CONLY
70b88761
RP
3428@item info catch
3429@kindex info catch
3430@cindex catch exceptions
3431@cindex exception handlers
3432Print a list of all the exception handlers that are active in the
3433current stack frame at the current point of execution. To see other
3434exception handlers, visit the associated frame (using the @code{up},
3435@code{down}, or @code{frame} commands); then type @code{info catch}.
93928b60 3436@xref{Exception Handling, ,Breakpoints and exceptions}.
1d7c3357 3437@end ifclear
70b88761
RP
3438@end table
3439
572867a8
RP
3440@ifset MIPS
3441@node MIPS Stack
3442@section MIPS machines and the function stack
3443
3444@cindex stack on MIPS
3445@cindex MIPS stack
3446MIPS based computers use an unusual stack frame, which sometimes
3447requires @value{GDBN} to search backward in the object code to find the
3448beginning of a function.
3449
3450@cindex response time, MIPS debugging
3451To improve response time (especially for embedded applications, where
3452@value{GDBN} may be restricted to a slow serial line for this search)
3453you may want to limit the size of this search, using one of these
3454commands:
3455@c FIXME! So what happens when GDB does *not* find the beginning of a
3456@c function?
3457
3458@cindex @code{heuristic-fence-post} (MIPS)
3459@table @code
3460@item set heuristic-fence-post @var{limit}
c79890ee 3461Restrict @value{GDBN} to examining at most @var{limit} bytes in its search
572867a8
RP
3462for the beginning of a function. A value of @code{0} (the default)
3463means there is no limit.
3464
3465@item show heuristic-fence-post
3466Display the current limit.
3467@end table
3468
3469@noindent
3470These commands are available @emph{only} when @value{GDBN} is configured
3471for debugging programs on MIPS processors.
3472@end ifset
3473
4eb4cf57 3474@node Source
70b88761
RP
3475@chapter Examining Source Files
3476
18fae2a8 3477@value{GDBN} can print parts of your program's source, since the debugging
ed447b95 3478information recorded in the program tells @value{GDBN} what source files were
18fae2a8 3479used to build it. When your program stops, @value{GDBN} spontaneously prints
1041a570 3480the line where it stopped. Likewise, when you select a stack frame
93928b60 3481(@pxref{Selection, ,Selecting a frame}), @value{GDBN} prints the line where
1041a570
RP
3482execution in that frame has stopped. You can print other portions of
3483source files by explicit command.
70b88761 3484
18fae2a8
RP
3485@ifclear DOSHOST
3486If you use @value{GDBN} through its GNU Emacs interface, you may prefer to use
3487Emacs facilities to view source; @pxref{Emacs, ,Using @value{GDBN} under GNU
1041a570 3488Emacs}.
18fae2a8 3489@end ifclear
70b88761
RP
3490
3491@menu
ed447b95 3492* List:: Printing source lines
18fae2a8 3493@ifclear DOSHOST
ed447b95 3494* Search:: Searching source files
18fae2a8 3495@end ifclear
b0157555 3496
ed447b95
RP
3497* Source Path:: Specifying source directories
3498* Machine Code:: Source and machine code
70b88761
RP
3499@end menu
3500
4eb4cf57 3501@node List
93928b60 3502@section Printing source lines
70b88761
RP
3503
3504@kindex list
3505@kindex l
3506To print lines from a source file, use the @code{list} command
3507(abbreviated @code{l}). There are several ways to specify what part
3508of the file you want to print.
3509
3510Here are the forms of the @code{list} command most commonly used:
3511
3512@table @code
3513@item list @var{linenum}
c338a2fd 3514Print lines centered around line number @var{linenum} in the
70b88761
RP
3515current source file.
3516
3517@item list @var{function}
c338a2fd 3518Print lines centered around the beginning of function
70b88761
RP
3519@var{function}.
3520
3521@item list
c338a2fd
RP
3522Print more lines. If the last lines printed were printed with a
3523@code{list} command, this prints lines following the last lines
70b88761 3524printed; however, if the last line printed was a solitary line printed
29a2b744 3525as part of displaying a stack frame (@pxref{Stack, ,Examining the
1041a570 3526Stack}), this prints lines centered around that line.
70b88761
RP
3527
3528@item list -
c338a2fd
RP
3529Print lines just before the lines last printed.
3530@end table
3531
18fae2a8 3532By default, @value{GDBN} prints ten source lines with any of these forms of
c338a2fd
RP
3533the @code{list} command. You can change this using @code{set listsize}:
3534
3535@table @code
3536@item set listsize @var{count}
3537@kindex set listsize
3538Make the @code{list} command display @var{count} source lines (unless
3539the @code{list} argument explicitly specifies some other number).
3540
3541@item show listsize
3542@kindex show listsize
9a27b06e 3543Display the number of lines that @code{list} prints.
70b88761
RP
3544@end table
3545
3546Repeating a @code{list} command with @key{RET} discards the argument,
3547so it is equivalent to typing just @code{list}. This is more useful
3548than listing the same lines again. An exception is made for an
3549argument of @samp{-}; that argument is preserved in repetition so that
3550each repetition moves up in the source file.
3551
3552@cindex linespec
3553In general, the @code{list} command expects you to supply zero, one or two
3554@dfn{linespecs}. Linespecs specify source lines; there are several ways
3555of writing them but the effect is always to specify some source line.
3556Here is a complete description of the possible arguments for @code{list}:
3557
3558@table @code
3559@item list @var{linespec}
c338a2fd 3560Print lines centered around the line specified by @var{linespec}.
70b88761
RP
3561
3562@item list @var{first},@var{last}
3563Print lines from @var{first} to @var{last}. Both arguments are
3564linespecs.
3565
3566@item list ,@var{last}
c338a2fd 3567Print lines ending with @var{last}.
70b88761
RP
3568
3569@item list @var{first},
c338a2fd 3570Print lines starting with @var{first}.
70b88761
RP
3571
3572@item list +
c338a2fd 3573Print lines just after the lines last printed.
70b88761
RP
3574
3575@item list -
c338a2fd 3576Print lines just before the lines last printed.
70b88761
RP
3577
3578@item list
3579As described in the preceding table.
3580@end table
3581
3582Here are the ways of specifying a single source line---all the
3583kinds of linespec.
3584
3585@table @code
3586@item @var{number}
3587Specifies line @var{number} of the current source file.
3588When a @code{list} command has two linespecs, this refers to
3589the same source file as the first linespec.
3590
3591@item +@var{offset}
3592Specifies the line @var{offset} lines after the last line printed.
3593When used as the second linespec in a @code{list} command that has
3594two, this specifies the line @var{offset} lines down from the
3595first linespec.
3596
3597@item -@var{offset}
3598Specifies the line @var{offset} lines before the last line printed.
3599
3600@item @var{filename}:@var{number}
3601Specifies line @var{number} in the source file @var{filename}.
3602
3603@item @var{function}
3604@c FIXME: "of the open-brace" is C-centric. When we add other langs...
3605Specifies the line of the open-brace that begins the body of the
3606function @var{function}.
3607
3608@item @var{filename}:@var{function}
3609Specifies the line of the open-brace that begins the body of the
3610function @var{function} in the file @var{filename}. You only need the
3611file name with a function name to avoid ambiguity when there are
3612identically named functions in different source files.
3613
3614@item *@var{address}
3615Specifies the line containing the program address @var{address}.
3616@var{address} may be any expression.
3617@end table
3618
18fae2a8 3619@ifclear DOSHOST
4eb4cf57 3620@node Search
93928b60 3621@section Searching source files
70b88761
RP
3622@cindex searching
3623@kindex reverse-search
3624
3625There are two commands for searching through the current source file for a
3626regular expression.
3627
3628@table @code
3629@item forward-search @var{regexp}
3630@itemx search @var{regexp}
3631@kindex search
3632@kindex forward-search
1041a570
RP
3633The command @samp{forward-search @var{regexp}} checks each line,
3634starting with the one following the last line listed, for a match for
3635@var{regexp}. It lists the line that is found. You can use
3636synonym @samp{search @var{regexp}} or abbreviate the command name as
3637@code{fo}.
70b88761
RP
3638
3639@item reverse-search @var{regexp}
3640The command @samp{reverse-search @var{regexp}} checks each line, starting
3641with the one before the last line listed and going backward, for a match
3642for @var{regexp}. It lists the line that is found. You can abbreviate
3643this command as @code{rev}.
3644@end table
18fae2a8 3645@end ifclear
70b88761 3646
4eb4cf57 3647@node Source Path
93928b60 3648@section Specifying source directories
70b88761
RP
3649
3650@cindex source path
3651@cindex directories for source files
3652Executable programs sometimes do not record the directories of the source
3653files from which they were compiled, just the names. Even when they do,
3654the directories could be moved between the compilation and your debugging
18fae2a8
RP
3655session. @value{GDBN} has a list of directories to search for source files;
3656this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
70b88761
RP
3657it tries all the directories in the list, in the order they are present
3658in the list, until it finds a file with the desired name. Note that
3659the executable search path is @emph{not} used for this purpose. Neither is
3660the current working directory, unless it happens to be in the source
3661path.
3662
9a27b06e
RP
3663If @value{GDBN} cannot find a source file in the source path, and the
3664object program records a directory, @value{GDBN} tries that directory
3665too. If the source path is empty, and there is no record of the
3666compilation directory, @value{GDBN} looks in the current directory as a
3667last resort.
70b88761 3668
9a27b06e 3669Whenever you reset or rearrange the source path, @value{GDBN} clears out
b1955f0b
RP
3670any information it has cached about where source files are found and where
3671each line is in the file.
70b88761
RP
3672
3673@kindex directory
18fae2a8 3674When you start @value{GDBN}, its source path is empty.
70b88761
RP
3675To add other directories, use the @code{directory} command.
3676
3677@table @code
3678@item directory @var{dirname} @dots{}
3679Add directory @var{dirname} to the front of the source path. Several
3680directory names may be given to this command, separated by @samp{:} or
3681whitespace. You may specify a directory that is already in the source
9a27b06e 3682path; this moves it forward, so @value{GDBN} searches it sooner.
7463aadd 3683
fa6df1a7
RP
3684@kindex cdir
3685@kindex cwd
a88ec213
RP
3686@kindex $cdir
3687@kindex $cwd
fa6df1a7
RP
3688@cindex compilation directory
3689@cindex current directory
3690@cindex working directory
3691@cindex directory, current
3692@cindex directory, compilation
7463aadd
RP
3693You can use the string @samp{$cdir} to refer to the compilation
3694directory (if one is recorded), and @samp{$cwd} to refer to the current
3695working directory. @samp{$cwd} is not the same as @samp{.}---the former
18fae2a8 3696tracks the current working directory as it changes during your @value{GDBN}
7463aadd
RP
3697session, while the latter is immediately expanded to the current
3698directory at the time you add an entry to the source path.
70b88761
RP
3699
3700@item directory
3701Reset the source path to empty again. This requires confirmation.
3702
3703@c RET-repeat for @code{directory} is explicitly disabled, but since
29a2b744 3704@c repeating it would be a no-op we do not say that. (thanks to RMS)
70b88761
RP
3705
3706@item show directories
3707@kindex show directories
3708Print the source path: show which directories it contains.
3709@end table
3710
3711If your source path is cluttered with directories that are no longer of
18fae2a8 3712interest, @value{GDBN} may sometimes cause confusion by finding the wrong
70b88761
RP
3713versions of source. You can correct the situation as follows:
3714
3715@enumerate
3716@item
3717Use @code{directory} with no argument to reset the source path to empty.
3718
3719@item
3720Use @code{directory} with suitable arguments to reinstall the
3721directories you want in the source path. You can add all the
3722directories in one command.
3723@end enumerate
3724
4eb4cf57 3725@node Machine Code
93928b60 3726@section Source and machine code
1041a570 3727
70b88761 3728You can use the command @code{info line} to map source lines to program
ed447b95 3729addresses (and vice versa), and the command @code{disassemble} to display
70b88761
RP
3730a range of addresses as machine instructions.
3731
3732@table @code
3733@item info line @var{linespec}
3734@kindex info line
3735Print the starting and ending addresses of the compiled code for
1041a570
RP
3736source line @var{linespec}. You can specify source lines in any of
3737the ways understood by the @code{list} command (@pxref{List, ,Printing
93928b60 3738source lines}).
70b88761
RP
3739@end table
3740
1041a570
RP
3741For example, we can use @code{info line} to discover the location of
3742the object code for the first line of function
3743@code{m4_changequote}:
3744
70b88761 3745@smallexample
18fae2a8 3746(@value{GDBP}) info line m4_changecom
70b88761
RP
3747Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
3748@end smallexample
3749
3750@noindent
3751We can also inquire (using @code{*@var{addr}} as the form for
3752@var{linespec}) what source line covers a particular address:
3753@smallexample
18fae2a8 3754(@value{GDBP}) info line *0x63ff
70b88761
RP
3755Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
3756@end smallexample
3757
c338a2fd 3758@cindex @code{$_} and @code{info line}
29a2b744
RP
3759After @code{info line}, the default address for the @code{x} command
3760is changed to the starting address of the line, so that @samp{x/i} is
3761sufficient to begin examining the machine code (@pxref{Memory,
93928b60 3762,Examining memory}). Also, this address is saved as the value of the
29a2b744 3763convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
93928b60 3764variables}).
70b88761
RP
3765
3766@table @code
3767@kindex disassemble
3768@item disassemble
c5f69ff8
RP
3769@cindex assembly instructions
3770@cindex instructions, assembly
3771@cindex machine instructions
3772@cindex listing machine instructions
e94b4a2b
RP
3773This specialized command dumps a range of memory as machine
3774instructions. The default memory range is the function surrounding the
3775program counter of the selected frame. A single argument to this
9a27b06e
RP
3776command is a program counter value; @value{GDBN} dumps the function
3777surrounding this value. Two arguments specify a range of addresses
3778(first inclusive, second exclusive) to dump.
70b88761
RP
3779@end table
3780
a64a6c2b 3781@ifclear H8EXCLUSIVE
70b88761 3782We can use @code{disassemble} to inspect the object code
4eb4cf57
RP
3783range shown in the last @code{info line} example (the example
3784shows SPARC machine instructions):
70b88761 3785
18fae2a8 3786
70b88761 3787@smallexample
18fae2a8 3788(@value{GDBP}) disas 0x63e4 0x6404
70b88761 3789Dump of assembler code from 0x63e4 to 0x6404:
b80282d5
RP
37900x63e4 <builtin_init+5340>: ble 0x63f8 <builtin_init+5360>
37910x63e8 <builtin_init+5344>: sethi %hi(0x4c00), %o0
37920x63ec <builtin_init+5348>: ld [%i1+4], %o0
37930x63f0 <builtin_init+5352>: b 0x63fc <builtin_init+5364>
37940x63f4 <builtin_init+5356>: ld [%o0+4], %o0
37950x63f8 <builtin_init+5360>: or %o0, 0x1a4, %o0
37960x63fc <builtin_init+5364>: call 0x9288 <path_search>
e251e767 37970x6400 <builtin_init+5368>: nop
70b88761 3798End of assembler dump.
70b88761 3799@end smallexample
18fae2a8 3800@end ifclear
4eb4cf57 3801
a64a6c2b 3802@ifset H8EXCLUSIVE
4eb4cf57
RP
3803For example, here is the beginning of the output for the
3804disassembly of a function @code{fact}:
70b88761 3805
18fae2a8 3806
4eb4cf57 3807@smallexample
18fae2a8 3808(@value{GDBP}) disas fact
4eb4cf57
RP
3809Dump of assembler code for function fact:
3810to 0x808c:
38110x802c <fact>: 6d f2 mov.w r2,@@-r7
38120x802e <fact+2>: 6d f3 mov.w r3,@@-r7
38130x8030 <fact+4>: 6d f6 mov.w r6,@@-r7
38140x8032 <fact+6>: 0d 76 mov.w r7,r6
38150x8034 <fact+8>: 6f 70 00 08 mov.w @@(0x8,r7),r0
38160x8038 <fact+12> 19 11 sub.w r1,r1
3817 .
3818 .
3819 .
3820@end smallexample
18fae2a8 3821@end ifset
4eb4cf57
RP
3822
3823@node Data
70b88761
RP
3824@chapter Examining Data
3825
3826@cindex printing data
3827@cindex examining data
3828@kindex print
3829@kindex inspect
1041a570 3830@c "inspect" is not quite a synonym if you are using Epoch, which we do not
29a2b744 3831@c document because it is nonstandard... Under Epoch it displays in a
70b88761
RP
3832@c different window or something like that.
3833The usual way to examine data in your program is with the @code{print}
4eb4cf57 3834command (abbreviated @code{p}), or its synonym @code{inspect}.
18fae2a8 3835@ifclear CONLY
4eb4cf57 3836It evaluates and prints the value of an expression of the language your
18fae2a8 3837program is written in (@pxref{Languages, ,Using @value{GDBN} with Different
4eb4cf57 3838Languages}).
18fae2a8 3839@end ifclear
70b88761 3840
e0dacfd1
RP
3841@table @code
3842@item print @var{exp}
3843@itemx print /@var{f} @var{exp}
93928b60
RP
3844@var{exp} is an expression (in the source language). By default the
3845value of @var{exp} is printed in a format appropriate to its data type;
3846you can choose a different format by specifying @samp{/@var{f}}, where
3847@var{f} is a letter specifying the format; @pxref{Output Formats,,Output
3848formats}.
e0dacfd1
RP
3849
3850@item print
3851@itemx print /@var{f}
18fae2a8 3852If you omit @var{exp}, @value{GDBN} displays the last value again (from the
93928b60 3853@dfn{value history}; @pxref{Value History, ,Value history}). This allows you to
e0dacfd1
RP
3854conveniently inspect the same value in an alternative format.
3855@end table
70b88761
RP
3856
3857A more low-level way of examining data is with the @code{x} command.
3858It examines data in memory at a specified address and prints it in a
93928b60 3859specified format. @xref{Memory, ,Examining memory}.
70b88761 3860
29a2b744 3861If you are interested in information about types, or about how the fields
1d7c3357
RP
3862of a struct
3863@ifclear CONLY
3864or class
18fae2a8 3865@end ifclear
1d7c3357
RP
3866are declared, use the @code{ptype @var{exp}}
3867command rather than @code{print}. @xref{Symbols, ,Examining the Symbol Table}.
18fae2a8 3868
70b88761 3869@menu
b80282d5 3870* Expressions:: Expressions
ed447b95
RP
3871* Variables:: Program variables
3872* Arrays:: Artificial arrays
eb7faec1 3873* Output Formats:: Output formats
ed447b95
RP
3874* Memory:: Examining memory
3875* Auto Display:: Automatic display
3876* Print Settings:: Print settings
3877* Value History:: Value history
3878* Convenience Vars:: Convenience variables
b80282d5 3879* Registers:: Registers
a64a6c2b 3880@ifclear HAVE-FLOAT
ed447b95 3881* Floating Point Hardware:: Floating point hardware
18fae2a8 3882@end ifclear
18fae2a8 3883@end menu
70b88761 3884
4eb4cf57 3885@node Expressions
70b88761
RP
3886@section Expressions
3887
3888@cindex expressions
18fae2a8 3889@code{print} and many other @value{GDBN} commands accept an expression and
70b88761 3890compute its value. Any kind of constant, variable or operator defined
fe715d06 3891by the programming language you are using is valid in an expression in
18fae2a8 3892@value{GDBN}. This includes conditional expressions, function calls, casts
70b88761 3893and string constants. It unfortunately does not include symbols defined
b80282d5 3894by preprocessor @code{#define} commands.
70b88761 3895
18fae2a8 3896@ifclear CONLY
c2bbbb22 3897Because C is so widespread, most of the expressions shown in examples in
18fae2a8 3898this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
c2bbbb22 3899Languages}, for information on how to use expressions in other
e251e767 3900languages.
c2bbbb22 3901
18fae2a8 3902In this section, we discuss operators that you can use in @value{GDBN}
e251e767 3903expressions regardless of your programming language.
c2bbbb22 3904
70b88761
RP
3905Casts are supported in all languages, not just in C, because it is so
3906useful to cast a number into a pointer so as to examine a structure
3907at that address in memory.
c2bbbb22 3908@c FIXME: casts supported---Mod2 true?
18fae2a8 3909@end ifclear
70b88761 3910
18fae2a8 3911@value{GDBN} supports these operators in addition to those of programming
70b88761
RP
3912languages:
3913
3914@table @code
3915@item @@
3916@samp{@@} is a binary operator for treating parts of memory as arrays.
93928b60 3917@xref{Arrays, ,Artificial arrays}, for more information.
70b88761
RP
3918
3919@item ::
3920@samp{::} allows you to specify a variable in terms of the file or
93928b60 3921function where it is defined. @xref{Variables, ,Program variables}.
70b88761
RP
3922
3923@item @{@var{type}@} @var{addr}
fe715d06
RP
3924@cindex @{@var{type}@}
3925@cindex type casting memory
3926@cindex memory, viewing as typed object
3927@cindex casts, to view memory
70b88761
RP
3928Refers to an object of type @var{type} stored at address @var{addr} in
3929memory. @var{addr} may be any expression whose value is an integer or
3930pointer (but parentheses are required around binary operators, just as in
3931a cast). This construct is allowed regardless of what kind of data is
1041a570 3932normally supposed to reside at @var{addr}.
70b88761
RP
3933@end table
3934
4eb4cf57 3935@node Variables
93928b60 3936@section Program variables
70b88761
RP
3937
3938The most common kind of expression to use is the name of a variable
3939in your program.
3940
3941Variables in expressions are understood in the selected stack frame
93928b60 3942(@pxref{Selection, ,Selecting a frame}); they must either be global
29a2b744
RP
3943(or static) or be visible according to the scope rules of the
3944programming language from the point of execution in that frame. This
3945means that in the function
70b88761
RP
3946
3947@example
3948foo (a)
3949 int a;
3950@{
3951 bar (a);
3952 @{
3953 int b = test ();
3954 bar (b);
3955 @}
3956@}
3957@end example
3958
3959@noindent
ed447b95
RP
3960you can examine and use the variable @code{a} whenever your program is
3961executing within the function @code{foo}, but you can only use or
3962examine the variable @code{b} while your program is executing inside
3963the block where @code{b} is declared.
70b88761
RP
3964
3965@cindex variable name conflict
3966There is an exception: you can refer to a variable or function whose
3967scope is a single source file even if the current execution point is not
3968in this file. But it is possible to have more than one such variable or
6ca72cc6
RP
3969function with the same name (in different source files). If that
3970happens, referring to that name has unpredictable effects. If you wish,
3971you can specify a static variable in a particular function or file,
3972using the colon-colon notation:
70b88761
RP
3973
3974@cindex colon-colon
a6d0b6d3 3975@iftex
29a2b744 3976@c info cannot cope with a :: index entry, but why deprive hard copy readers?
70b88761 3977@kindex ::
a6d0b6d3 3978@end iftex
70b88761
RP
3979@example
3980@var{file}::@var{variable}
6ca72cc6 3981@var{function}::@var{variable}
70b88761
RP
3982@end example
3983
3984@noindent
6ca72cc6 3985Here @var{file} or @var{function} is the name of the context for the
6c380b13 3986static @var{variable}. In the case of file names, you can use quotes to
18fae2a8 3987make sure @value{GDBN} parses the file name as a single word---for example,
6c380b13
RP
3988to print a global value of @code{x} defined in @file{f2.c}:
3989
3990@example
18fae2a8 3991(@value{GDBP}) p 'f2.c'::x
6c380b13 3992@end example
70b88761 3993
18fae2a8 3994@ifclear CONLY
c2bbbb22 3995@cindex C++ scope resolution
70b88761 3996This use of @samp{::} is very rarely in conflict with the very similar
18fae2a8
RP
3997use of the same notation in C++. @value{GDBN} also supports use of the C++
3998scope resolution operator in @value{GDBN} expressions.
ed447b95
RP
3999@c FIXME: Um, so what happens in one of those rare cases where it's in
4000@c conflict?? --mew
18fae2a8 4001@end ifclear
70b88761 4002
3d3ab540
RP
4003@cindex wrong values
4004@cindex variable values, wrong
4005@quotation
4006@emph{Warning:} Occasionally, a local variable may appear to have the
b0157555
RP
4007wrong value at certain points in a function---just after entry to a new
4008scope, and just before exit.
3d3ab540 4009@end quotation
b0157555
RP
4010You may see this problem when you are stepping by machine instructions.
4011This is because on most machines, it takes more than one instruction to
4012set up a stack frame (including local variable definitions); if you are
4013stepping by machine instructions, variables may appear to have the wrong
4014values until the stack frame is completely built. On exit, it usually
4015also takes more than one machine instruction to destroy a stack frame;
4016after you begin stepping through that group of instructions, local
4017variable definitions may be gone.
3d3ab540 4018
4eb4cf57 4019@node Arrays
93928b60 4020@section Artificial arrays
70b88761
RP
4021
4022@cindex artificial array
4023@kindex @@
4024It is often useful to print out several successive objects of the
4025same type in memory; a section of an array, or an array of
4026dynamically determined size for which only a pointer exists in the
4027program.
4028
fe715d06
RP
4029You can do this by referring to a contiguous span of memory as an
4030@dfn{artificial array}, using the binary operator @samp{@@}. The left
4031operand of @samp{@@} should be the first element of the desired array,
4032as an individual object. The right operand should be the desired length
4033of the array. The result is an array value whose elements are all of
4034the type of the left argument. The first element is actually the left
4035argument; the second element comes from bytes of memory immediately
4036following those that hold the first element, and so on. Here is an
4037example. If a program says
70b88761
RP
4038
4039@example
4040int *array = (int *) malloc (len * sizeof (int));
4041@end example
4042
4043@noindent
4044you can print the contents of @code{array} with
4045
4046@example
4047p *array@@len
4048@end example
4049
4050The left operand of @samp{@@} must reside in memory. Array values made
4051with @samp{@@} in this way behave just like other arrays in terms of
4052subscripting, and are coerced to pointers when used in expressions.
4053Artificial arrays most often appear in expressions via the value history
7640fe71 4054(@pxref{Value History, ,Value history}), after printing one out.
70b88761 4055
1041a570 4056Sometimes the artificial array mechanism is not quite enough; in
3d3ab540 4057moderately complex data structures, the elements of interest may not
1041a570
RP
4058actually be adjacent---for example, if you are interested in the values
4059of pointers in an array. One useful work-around in this situation is
4060to use a convenience variable (@pxref{Convenience Vars, ,Convenience
93928b60 4061variables}) as a counter in an expression that prints the first
1041a570
RP
4062interesting value, and then repeat that expression via @key{RET}. For
4063instance, suppose you have an array @code{dtab} of pointers to
4064structures, and you are interested in the values of a field @code{fv}
4065in each structure. Here is an example of what you might type:
4066
3d3ab540
RP
4067@example
4068set $i = 0
4069p dtab[$i++]->fv
4070@key{RET}
4071@key{RET}
4072@dots{}
4073@end example
4074
ed447b95 4075@node Output Formats
70b88761
RP
4076@section Output formats
4077
4078@cindex formatted output
4079@cindex output formats
18fae2a8 4080By default, @value{GDBN} prints a value according to its data type. Sometimes
70b88761
RP
4081this is not what you want. For example, you might want to print a number
4082in hex, or a pointer in decimal. Or you might want to view data in memory
4083at a certain address as a character string or as an instruction. To do
4084these things, specify an @dfn{output format} when you print a value.
4085
4086The simplest use of output formats is to say how to print a value
4087already computed. This is done by starting the arguments of the
4088@code{print} command with a slash and a format letter. The format
4089letters supported are:
4090
4091@table @code
4092@item x
4093Regard the bits of the value as an integer, and print the integer in
4094hexadecimal.
4095
4096@item d
4097Print as integer in signed decimal.
4098
4099@item u
4100Print as integer in unsigned decimal.
4101
4102@item o
4103Print as integer in octal.
4104
4105@item t
4106Print as integer in binary. The letter @samp{t} stands for ``two''.
fe715d06
RP
4107@footnote{@samp{b} cannot be used because these format letters are also
4108used with the @code{x} command, where @samp{b} stands for ``byte'';
4109@pxref{Memory,,Examining memory}.}
70b88761
RP
4110
4111@item a
9a27b06e
RP
4112@cindex unknown address, locating
4113Print as an address, both absolute in hexadecimal and as an offset from
4114the nearest preceding symbol. You can use this format used to discover
4115where (in what function) an unknown address is located:
1041a570 4116
70b88761 4117@example
18fae2a8
RP
4118(@value{GDBP}) p/a 0x54320
4119$3 = 0x54320 <_initialize_vx+396>
70b88761
RP
4120@end example
4121
70b88761
RP
4122@item c
4123Regard as an integer and print it as a character constant.
4124
4125@item f
4126Regard the bits of the value as a floating point number and print
4127using typical floating point syntax.
4128@end table
4129
4130For example, to print the program counter in hex (@pxref{Registers}), type
4131
4132@example
4133p/x $pc
4134@end example
4135
4136@noindent
4137Note that no space is required before the slash; this is because command
18fae2a8 4138names in @value{GDBN} cannot contain a slash.
70b88761
RP
4139
4140To reprint the last value in the value history with a different format,
4141you can use the @code{print} command with just a format and no
4142expression. For example, @samp{p/x} reprints the last value in hex.
4143
4eb4cf57 4144@node Memory
93928b60 4145@section Examining memory
70b88761 4146
1041a570
RP
4147You can use the command @code{x} (for ``examine'') to examine memory in
4148any of several formats, independently of your program's data types.
4149
70b88761
RP
4150@cindex examining memory
4151@table @code
4152@kindex x
cedaf8bc
RP
4153@item x/@var{nfu} @var{addr}
4154@itemx x @var{addr}
4155@itemx x
ed447b95 4156Use the @code{x} command to examine memory.
1041a570
RP
4157@end table
4158
4159@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
4160much memory to display and how to format it; @var{addr} is an
cedaf8bc
RP
4161expression giving the address where you want to start displaying memory.
4162If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
4163Several commands set convenient defaults for @var{addr}.
70b88761 4164
1041a570
RP
4165@table @r
4166@item @var{n}, the repeat count
4167The repeat count is a decimal integer; the default is 1. It specifies
4168how much memory (counting by units @var{u}) to display.
cedaf8bc
RP
4169@c This really is **decimal**; unaffected by 'set radix' as of GDB
4170@c 4.1.2.
70b88761 4171
1041a570
RP
4172@item @var{f}, the display format
4173The display format is one of the formats used by @code{print},
cedaf8bc
RP
4174or @samp{s} (null-terminated string) or @samp{i} (machine instruction).
4175The default is @samp{x} (hexadecimal) initially, or the format from the
4176last time you used either @code{x} or @code{print}.
70b88761 4177
1041a570
RP
4178@item @var{u}, the unit size
4179The unit size is any of
ed447b95 4180
70b88761
RP
4181@table @code
4182@item b
cedaf8bc 4183Bytes.
70b88761 4184@item h
cedaf8bc 4185Halfwords (two bytes).
70b88761 4186@item w
cedaf8bc 4187Words (four bytes). This is the initial default.
70b88761 4188@item g
cedaf8bc 4189Giant words (eight bytes).
70b88761
RP
4190@end table
4191
cedaf8bc
RP
4192Each time you specify a unit size with @code{x}, that size becomes the
4193default unit the next time you use @code{x}. (For the @samp{s} and
4194@samp{i} formats, the unit size is ignored and is normally not written.)
4195
1041a570 4196@item @var{addr}, starting display address
18fae2a8 4197@var{addr} is the address where you want @value{GDBN} to begin displaying
cedaf8bc
RP
4198memory. The expression need not have a pointer value (though it may);
4199it is always interpreted as an integer address of a byte of memory.
1041a570 4200@xref{Expressions, ,Expressions}, for more information on expressions. The default for
cedaf8bc
RP
4201@var{addr} is usually just after the last address examined---but several
4202other commands also set the default address: @code{info breakpoints} (to
4203the address of the last breakpoint listed), @code{info line} (to the
4204starting address of a line), and @code{print} (if you use it to display
4205a value from memory).
1041a570 4206@end table
70b88761 4207
cedaf8bc
RP
4208For example, @samp{x/3uh 0x54320} is a request to display three halfwords
4209(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
4210starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
4211words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
4212@pxref{Registers}) in hexadecimal (@samp{x}).
70b88761 4213
cedaf8bc 4214Since the letters indicating unit sizes are all distinct from the
29a2b744 4215letters specifying output formats, you do not have to remember whether
9a27b06e 4216unit size or format comes first; either order works. The output
cedaf8bc 4217specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
9a27b06e 4218(However, the count @var{n} must come first; @samp{wx4} does not work.)
cedaf8bc
RP
4219
4220Even though the unit size @var{u} is ignored for the formats @samp{s}
4221and @samp{i}, you might still want to use a count @var{n}; for example,
4222@samp{3i} specifies that you want to see three machine instructions,
4223including any operands. The command @code{disassemble} gives an
4224alternative way of inspecting machine instructions; @pxref{Machine
93928b60 4225Code,,Source and machine code}.
cedaf8bc
RP
4226
4227All the defaults for the arguments to @code{x} are designed to make it
4228easy to continue scanning memory with minimal specifications each time
1041a570 4229you use @code{x}. For example, after you have inspected three machine
cedaf8bc
RP
4230instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
4231with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
4232the repeat count @var{n} is used again; the other arguments default as
4233for successive uses of @code{x}.
70b88761 4234
c338a2fd 4235@cindex @code{$_}, @code{$__}, and value history
cedaf8bc 4236The addresses and contents printed by the @code{x} command are not saved
70b88761 4237in the value history because there is often too much of them and they
18fae2a8 4238would get in the way. Instead, @value{GDBN} makes these values available for
70b88761
RP
4239subsequent use in expressions as values of the convenience variables
4240@code{$_} and @code{$__}. After an @code{x} command, the last address
4241examined is available for use in expressions in the convenience variable
4242@code{$_}. The contents of that address, as examined, are available in
4243the convenience variable @code{$__}.
4244
4245If the @code{x} command has a repeat count, the address and contents saved
4246are from the last memory unit printed; this is not the same as the last
4247address printed if several units were printed on the last line of output.
4248
4eb4cf57 4249@node Auto Display
93928b60 4250@section Automatic display
70b88761
RP
4251@cindex automatic display
4252@cindex display of expressions
4253
4254If you find that you want to print the value of an expression frequently
4255(to see how it changes), you might want to add it to the @dfn{automatic
9a27b06e 4256display list} so that @value{GDBN} prints its value each time your program stops.
70b88761
RP
4257Each expression added to the list is given a number to identify it;
4258to remove an expression from the list, you specify that number.
4259The automatic display looks like this:
4260
4261@example
42622: foo = 38
42633: bar[5] = (struct hack *) 0x3804
4264@end example
4265
4266@noindent
ed447b95 4267This display shows item numbers, expressions and their current values. As with
70b88761
RP
4268displays you request manually using @code{x} or @code{print}, you can
4269specify the output format you prefer; in fact, @code{display} decides
4270whether to use @code{print} or @code{x} depending on how elaborate your
4271format specification is---it uses @code{x} if you specify a unit size,
4272or one of the two formats (@samp{i} and @samp{s}) that are only
4273supported by @code{x}; otherwise it uses @code{print}.
4274
4275@table @code
4276@item display @var{exp}
4277@kindex display
4278Add the expression @var{exp} to the list of expressions to display
1041a570 4279each time your program stops. @xref{Expressions, ,Expressions}.
70b88761 4280
9a27b06e 4281@code{display} does not repeat if you press @key{RET} again after using it.
70b88761
RP
4282
4283@item display/@var{fmt} @var{exp}
4284For @var{fmt} specifying only a display format and not a size or
4285count, add the expression @var{exp} to the auto-display list but
7640fe71 4286arrange to display it each time in the specified format @var{fmt}.
ed447b95 4287@xref{Output Formats,,Output formats}.
70b88761
RP
4288
4289@item display/@var{fmt} @var{addr}
4290For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
4291number of units, add the expression @var{addr} as a memory address to
29a2b744 4292be examined each time your program stops. Examining means in effect
93928b60 4293doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining memory}.
70b88761
RP
4294@end table
4295
4296For example, @samp{display/i $pc} can be helpful, to see the machine
4297instruction about to be executed each time execution stops (@samp{$pc}
4298is a common name for the program counter; @pxref{Registers}).
4299
4300@table @code
4301@item undisplay @var{dnums}@dots{}
4302@itemx delete display @var{dnums}@dots{}
4303@kindex delete display
4304@kindex undisplay
4305Remove item numbers @var{dnums} from the list of expressions to display.
4306
9a27b06e 4307@code{undisplay} does not repeat if you press @key{RET} after using it.
70b88761
RP
4308(Otherwise you would just get the error @samp{No display number @dots{}}.)
4309
4310@item disable display @var{dnums}@dots{}
4311@kindex disable display
4312Disable the display of item numbers @var{dnums}. A disabled display
4313item is not printed automatically, but is not forgotten. It may be
4314enabled again later.
4315
4316@item enable display @var{dnums}@dots{}
4317@kindex enable display
4318Enable display of item numbers @var{dnums}. It becomes effective once
4319again in auto display of its expression, until you specify otherwise.
4320
4321@item display
4322Display the current values of the expressions on the list, just as is
29a2b744 4323done when your program stops.
70b88761
RP
4324
4325@item info display
4326@kindex info display
4327Print the list of expressions previously set up to display
4328automatically, each one with its item number, but without showing the
4329values. This includes disabled expressions, which are marked as such.
4330It also includes expressions which would not be displayed right now
4331because they refer to automatic variables not currently available.
4332@end table
4333
4334If a display expression refers to local variables, then it does not make
4335sense outside the lexical context for which it was set up. Such an
4336expression is disabled when execution enters a context where one of its
4337variables is not defined. For example, if you give the command
4338@code{display last_char} while inside a function with an argument
9a27b06e 4339@code{last_char}, @value{GDBN} displays this argument while your program
70b88761 4340continues to stop inside that function. When it stops elsewhere---where
9a27b06e
RP
4341there is no variable @code{last_char}---the display is disabled
4342automatically. The next time your program stops where @code{last_char}
4343is meaningful, you can enable the display expression once again.
70b88761 4344
4eb4cf57 4345@node Print Settings
93928b60 4346@section Print settings
70b88761
RP
4347
4348@cindex format options
4349@cindex print settings
18fae2a8 4350@value{GDBN} provides the following ways to control how arrays, structures,
e251e767 4351and symbols are printed.
70b88761
RP
4352
4353@noindent
4354These settings are useful for debugging programs in any language:
4355
4356@table @code
4357@item set print address
6b51acad 4358@itemx set print address on
70b88761 4359@kindex set print address
9a27b06e 4360@value{GDBN} prints memory addresses showing the location of stack
70b88761
RP
4361traces, structure values, pointer values, breakpoints, and so forth,
4362even when it also displays the contents of those addresses. The default
9a27b06e 4363is @code{on}. For example, this is what a stack frame display looks like, with
70b88761 4364@code{set print address on}:
1041a570 4365
70b88761 4366@smallexample
1041a570 4367@group
18fae2a8 4368(@value{GDBP}) f
e251e767 4369#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
70b88761 4370 at input.c:530
b80282d5 4371530 if (lquote != def_lquote)
1041a570 4372@end group
70b88761
RP
4373@end smallexample
4374
4375@item set print address off
4376Do not print addresses when displaying their contents. For example,
4377this is the same stack frame displayed with @code{set print address off}:
1041a570 4378
d55320a0 4379@smallexample
1041a570 4380@group
18fae2a8
RP
4381(@value{GDBP}) set print addr off
4382(@value{GDBP}) f
70b88761 4383#0 set_quotes (lq="<<", rq=">>") at input.c:530
b80282d5 4384530 if (lquote != def_lquote)
1041a570 4385@end group
d55320a0 4386@end smallexample
70b88761 4387
fe715d06
RP
4388You can use @samp{set print address off} to eliminate all machine
4389dependent displays from the @value{GDBN} interface. For example, with
4390@code{print address off}, you should get the same text for backtraces on
4391all machines---whether or not they involve pointer arguments.
4392
70b88761
RP
4393@item show print address
4394@kindex show print address
4395Show whether or not addresses are to be printed.
14621224
JK
4396@end table
4397
4398When @value{GDBN} prints a symbolic address, it normally prints the
4399closest earlier symbol plus an offset. If that symbol does not uniquely
4400identify the address (for example, it is a name whose scope is a single
4401source file), you may need to disambiguate. One way to do this is with
9a27b06e 4402@code{info line}, for example @samp{info line *0x4537}. Alternately,
14621224
JK
4403you can set @value{GDBN} to print the source file and line number when
4404it prints a symbolic address:
4405
4406@table @code
4407@item set print symbol-filename on
4408@kindex set print symbol-filename
4409Tell @value{GDBN} to print the source file name and line number of a
4410symbol in the symbolic form of an address.
4411
4412@item set print symbol-filename off
4413Do not print source file name and line number of a symbol. This is the
4414default.
4415
4416@item show print symbol-filename
4417@kindex show print symbol-filename
4418Show whether or not @value{GDBN} will print the source file name and
4419line number of a symbol in the symbolic form of an address.
4420@end table
4421
9a27b06e
RP
4422Another situation where it is helpful to show symbol filenames and line
4423numbers is when disassembling code; @value{GDBN} shows you the line
5986c8ea
JG
4424number and source file that corresponds to each instruction.
4425
14621224
JK
4426Also, you may wish to see the symbolic form only if the address being
4427printed is reasonably close to the closest earlier symbol:
4428
4429@table @code
4430@item set print max-symbolic-offset @var{max-offset}
4431@kindex set print max-symbolic-offset
4432Tell @value{GDBN} to only display the symbolic form of an address if the
4433offset between the closest earlier symbol and the address is less than
4434@var{max-offset}. The default is 0, which means to always print the
4435symbolic form of an address, if any symbol precedes it.
4436
4437@item show print max-symbolic-offset
4438@kindex show print max-symbolic-offset
9a27b06e 4439Ask how large the maximum offset is that @value{GDBN} prints in a
14621224
JK
4440symbolic address.
4441@end table
70b88761 4442
9a27b06e
RP
4443@cindex wild pointer, interpreting
4444@cindex pointer, finding referent
4445If you have a pointer and you are not sure where it points, try
ec35141c
JK
4446@samp{set print symbol-filename on}. Then you can determine the name
4447and source file location of the variable where it points, using
4448@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
4449For example, here @value{GDBN} shows that a variable @code{ptt} points
4450at another variable @code{t}, defined in @file{hi2.c}:
9a27b06e
RP
4451
4452@example
9a27b06e
RP
4453(@value{GDBP}) set print symbol-filename on
4454(@value{GDBP}) p/a ptt
4455$4 = 0xe008 <t in hi2.c>
4456@end example
4457
4458@quotation
4459@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
4460does not show the symbol name and filename of the referent, even with
4461the appropriate @code{set print} options turned on.
4462@end quotation
4463
5986c8ea
JG
4464Other settings control how different kinds of objects are printed:
4465
14621224 4466@table @code
70b88761
RP
4467@item set print array
4468@itemx set print array on
4469@kindex set print array
9a27b06e 4470Pretty-print arrays. This format is more convenient to read,
70b88761
RP
4471but uses more space. The default is off.
4472
fe715d06 4473@item set print array off
70b88761
RP
4474Return to compressed format for arrays.
4475
4476@item show print array
4477@kindex show print array
4478Show whether compressed or pretty format is selected for displaying
e251e767 4479arrays.
70b88761
RP
4480
4481@item set print elements @var{number-of-elements}
4482@kindex set print elements
9a27b06e 4483If @value{GDBN} is printing a large array, it stops printing after it has
70b88761
RP
4484printed the number of elements set by the @code{set print elements} command.
4485This limit also applies to the display of strings.
6edfa487 4486Setting the number of elements to zero means that the printing is unlimited.
70b88761
RP
4487
4488@item show print elements
4489@kindex show print elements
9a27b06e 4490Display the number of elements of a large array that @value{GDBN} prints
70b88761
RP
4491before losing patience.
4492
4493@item set print pretty on
4494@kindex set print pretty
18fae2a8 4495Cause @value{GDBN} to print structures in an indented format with one member per
70b88761
RP
4496line, like this:
4497
d55320a0 4498@smallexample
1041a570 4499@group
70b88761
RP
4500$1 = @{
4501 next = 0x0,
4502 flags = @{
4503 sweet = 1,
4504 sour = 1
4505 @},
4506 meat = 0x54 "Pork"
4507@}
1041a570 4508@end group
d55320a0 4509@end smallexample
70b88761
RP
4510
4511@item set print pretty off
18fae2a8 4512Cause @value{GDBN} to print structures in a compact format, like this:
70b88761
RP
4513
4514@smallexample
1041a570 4515@group
38962738
RP
4516$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
4517meat = 0x54 "Pork"@}
1041a570 4518@end group
70b88761
RP
4519@end smallexample
4520
4521@noindent
4522This is the default format.
4523
4524@item show print pretty
4525@kindex show print pretty
9a27b06e 4526Show which format @value{GDBN} is using to print structures.
70b88761
RP
4527
4528@item set print sevenbit-strings on
f2857bd9 4529@kindex set print sevenbit-strings
e251e767 4530Print using only seven-bit characters; if this option is set,
9a27b06e
RP
4531@value{GDBN} displays any eight-bit characters (in strings or
4532character values) using the notation @code{\}@var{nnn}. This setting is
4533best if you are working in English (@sc{ascii}) and you use the
4534high-order bit of characters as a marker or ``meta'' bit.
70b88761
RP
4535
4536@item set print sevenbit-strings off
9a27b06e
RP
4537Print full eight-bit characters. This allows the use of more
4538international character sets, and is the default.
70b88761
RP
4539
4540@item show print sevenbit-strings
f2857bd9 4541@kindex show print sevenbit-strings
9a27b06e 4542Show whether or not @value{GDBN} is printing only seven-bit characters.
70b88761
RP
4543
4544@item set print union on
4545@kindex set print union
18fae2a8 4546Tell @value{GDBN} to print unions which are contained in structures. This is the
70b88761
RP
4547default setting.
4548
4549@item set print union off
18fae2a8 4550Tell @value{GDBN} not to print unions which are contained in structures.
70b88761
RP
4551
4552@item show print union
4553@kindex show print union
18fae2a8 4554Ask @value{GDBN} whether or not it will print unions which are contained in
e251e767 4555structures.
70b88761
RP
4556
4557For example, given the declarations
4558
4559@smallexample
4560typedef enum @{Tree, Bug@} Species;
4561typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
203eea5d
RP
4562typedef enum @{Caterpillar, Cocoon, Butterfly@}
4563 Bug_forms;
70b88761
RP
4564
4565struct thing @{
4566 Species it;
4567 union @{
4568 Tree_forms tree;
4569 Bug_forms bug;
4570 @} form;
4571@};
4572
4573struct thing foo = @{Tree, @{Acorn@}@};
4574@end smallexample
4575
4576@noindent
4577with @code{set print union on} in effect @samp{p foo} would print
4578
4579@smallexample
4580$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
4581@end smallexample
4582
4583@noindent
4584and with @code{set print union off} in effect it would print
4585
4586@smallexample
4587$1 = @{it = Tree, form = @{...@}@}
4588@end smallexample
4589@end table
4590
1d7c3357 4591@ifclear CONLY
d55320a0 4592@need 1000
70b88761
RP
4593@noindent
4594These settings are of interest when debugging C++ programs:
4595
4596@table @code
e251e767
RP
4597@item set print demangle
4598@itemx set print demangle on
70b88761 4599@kindex set print demangle
fe715d06
RP
4600Print C++ names in their source form rather than in the encoded
4601(``mangled'') form passed to the assembler and linker for type-safe
4602linkage. The default is @samp{on}.
70b88761
RP
4603
4604@item show print demangle
4605@kindex show print demangle
9a27b06e 4606Show whether C++ names are printed in mangled or demangled form.
70b88761 4607
e251e767
RP
4608@item set print asm-demangle
4609@itemx set print asm-demangle on
70b88761
RP
4610@kindex set print asm-demangle
4611Print C++ names in their source form rather than their mangled form, even
4612in assembler code printouts such as instruction disassemblies.
4613The default is off.
4614
4615@item show print asm-demangle
4616@kindex show print asm-demangle
9a27b06e 4617Show whether C++ names in assembly listings are printed in mangled
70b88761
RP
4618or demangled form.
4619
fe715d06
RP
4620@item set demangle-style @var{style}
4621@kindex set demangle-style
4622@cindex C++ symbol decoding style
4623@cindex symbol decoding style, C++
4624Choose among several encoding schemes used by different compilers to
4625represent C++ names. The choices for @var{style} are currently:
4626
4627@table @code
4628@item auto
4629Allow @value{GDBN} to choose a decoding style by inspecting your program.
4630
4631@item gnu
4632Decode based on the GNU C++ compiler (@code{g++}) encoding algorithm.
4633
4634@item lucid
4635Decode based on the Lucid C++ compiler (@code{lcc}) encoding algorithm.
4636
a1eff6c2 4637@item arm
fe715d06 4638Decode using the algorithm in the @cite{C++ Annotated Reference Manual}.
a1eff6c2
RP
4639@strong{Warning:} this setting alone is not sufficient to allow
4640debugging @code{cfront}-generated executables. @value{GDBN} would
4641require further enhancement to permit that.
fe715d06
RP
4642@end table
4643
4644@item show demangle-style
4645@kindex show demangle-style
4646Display the encoding style currently in use for decoding C++ symbols.
4647
70b88761
RP
4648@item set print object
4649@itemx set print object on
4650@kindex set print object
4651When displaying a pointer to an object, identify the @emph{actual}
4652(derived) type of the object rather than the @emph{declared} type, using
4653the virtual function table.
4654
4655@item set print object off
4656Display only the declared type of objects, without reference to the
4657virtual function table. This is the default setting.
4658
4659@item show print object
4660@kindex show print object
9a27b06e 4661Show whether actual, or declared, object types are displayed.
70b88761 4662
e251e767
RP
4663@item set print vtbl
4664@itemx set print vtbl on
70b88761
RP
4665@kindex set print vtbl
4666Pretty print C++ virtual function tables. The default is off.
4667
4668@item set print vtbl off
4669Do not pretty print C++ virtual function tables.
4670
4671@item show print vtbl
4672@kindex show print vtbl
4673Show whether C++ virtual function tables are pretty printed, or not.
70b88761 4674@end table
1d7c3357 4675@end ifclear
70b88761 4676
4eb4cf57 4677@node Value History
93928b60 4678@section Value history
70b88761
RP
4679
4680@cindex value history
93918348 4681Values printed by the @code{print} command are saved in the @value{GDBN} @dfn{value
70b88761
RP
4682history} so that you can refer to them in other expressions. Values are
4683kept until the symbol table is re-read or discarded (for example with
4684the @code{file} or @code{symbol-file} commands). When the symbol table
4685changes, the value history is discarded, since the values may contain
4686pointers back to the types defined in the symbol table.
4687
4688@cindex @code{$}
4689@cindex @code{$$}
4690@cindex history number
6b51acad
RP
4691The values printed are given @dfn{history numbers} by which you can
4692refer to them. These are successive integers starting with one.
4693@code{print} shows you the history number assigned to a value by
4694printing @samp{$@var{num} = } before the value; here @var{num} is the
4695history number.
70b88761
RP
4696
4697To refer to any previous value, use @samp{$} followed by the value's
4698history number. The way @code{print} labels its output is designed to
4699remind you of this. Just @code{$} refers to the most recent value in
4700the history, and @code{$$} refers to the value before that.
4701@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
4702is the value just prior to @code{$$}, @code{$$1} is equivalent to
4703@code{$$}, and @code{$$0} is equivalent to @code{$}.
4704
4705For example, suppose you have just printed a pointer to a structure and
4706want to see the contents of the structure. It suffices to type
4707
4708@example
4709p *$
4710@end example
4711
4712If you have a chain of structures where the component @code{next} points
4713to the next one, you can print the contents of the next one with this:
4714
4715@example
4716p *$.next
4717@end example
4718
4719@noindent
4720You can print successive links in the chain by repeating this
4721command---which you can do by just typing @key{RET}.
4722
4723Note that the history records values, not expressions. If the value of
4724@code{x} is 4 and you type these commands:
4725
4726@example
4727print x
4728set x=5
4729@end example
4730
4731@noindent
4732then the value recorded in the value history by the @code{print} command
4733remains 4 even though the value of @code{x} has changed.
4734
4735@table @code
4736@kindex show values
4737@item show values
4738Print the last ten values in the value history, with their item numbers.
4739This is like @samp{p@ $$9} repeated ten times, except that @code{show
4740values} does not change the history.
4741
4742@item show values @var{n}
4743Print ten history values centered on history item number @var{n}.
4744
4745@item show values +
4746Print ten history values just after the values last printed. If no more
4747values are available, produces no display.
4748@end table
4749
4750Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
e251e767 4751same effect as @samp{show values +}.
70b88761 4752
4eb4cf57 4753@node Convenience Vars
93928b60 4754@section Convenience variables
70b88761
RP
4755
4756@cindex convenience variables
18fae2a8
RP
4757@value{GDBN} provides @dfn{convenience variables} that you can use within
4758@value{GDBN} to hold on to a value and refer to it later. These variables
4759exist entirely within @value{GDBN}; they are not part of your program, and
70b88761 4760setting a convenience variable has no direct effect on further execution
1041a570 4761of your program. That is why you can use them freely.
70b88761
RP
4762
4763Convenience variables are prefixed with @samp{$}. Any name preceded by
4764@samp{$} can be used for a convenience variable, unless it is one of
4765the predefined machine-specific register names (@pxref{Registers}).
4766(Value history references, in contrast, are @emph{numbers} preceded
93928b60 4767by @samp{$}. @xref{Value History, ,Value history}.)
70b88761
RP
4768
4769You can save a value in a convenience variable with an assignment
ed447b95
RP
4770expression, just as you would set a variable in your program.
4771For example:
70b88761
RP
4772
4773@example
4774set $foo = *object_ptr
4775@end example
4776
4777@noindent
4778would save in @code{$foo} the value contained in the object pointed to by
4779@code{object_ptr}.
4780
6b51acad
RP
4781Using a convenience variable for the first time creates it, but its
4782value is @code{void} until you assign a new value. You can alter the
4783value with another assignment at any time.
70b88761
RP
4784
4785Convenience variables have no fixed types. You can assign a convenience
4786variable any type of value, including structures and arrays, even if
4787that variable already has a value of a different type. The convenience
4788variable, when used as an expression, has the type of its current value.
4789
4790@table @code
4791@item show convenience
4792@kindex show convenience
4793Print a list of convenience variables used so far, and their values.
4794Abbreviated @code{show con}.
4795@end table
4796
4797One of the ways to use a convenience variable is as a counter to be
4798incremented or a pointer to be advanced. For example, to print
4799a field from successive elements of an array of structures:
4800
18fae2a8 4801@example
70b88761
RP
4802set $i = 0
4803print bar[$i++]->contents
4804@i{@dots{} repeat that command by typing @key{RET}.}
18fae2a8 4805@end example
70b88761 4806
18fae2a8 4807Some convenience variables are created automatically by @value{GDBN} and given
70b88761
RP
4808values likely to be useful.
4809
4810@table @code
4811@item $_
c338a2fd 4812@kindex $_
70b88761 4813The variable @code{$_} is automatically set by the @code{x} command to
93928b60 4814the last address examined (@pxref{Memory, ,Examining memory}). Other
29a2b744
RP
4815commands which provide a default address for @code{x} to examine also
4816set @code{$_} to that address; these commands include @code{info line}
4817and @code{info breakpoint}. The type of @code{$_} is @code{void *}
4818except when set by the @code{x} command, in which case it is a pointer
4819to the type of @code{$__}.
70b88761
RP
4820
4821@item $__
c338a2fd 4822@kindex $__
70b88761 4823The variable @code{$__} is automatically set by the @code{x} command
c2bbbb22
RP
4824to the value found in the last address examined. Its type is chosen
4825to match the format in which the data was printed.
70b88761
RP
4826@end table
4827
4eb4cf57 4828@node Registers
70b88761
RP
4829@section Registers
4830
4831@cindex registers
b80282d5 4832You can refer to machine register contents, in expressions, as variables
70b88761
RP
4833with names starting with @samp{$}. The names of registers are different
4834for each machine; use @code{info registers} to see the names used on
e251e767 4835your machine.
70b88761
RP
4836
4837@table @code
4838@item info registers
4839@kindex info registers
b80282d5
RP
4840Print the names and values of all registers except floating-point
4841registers (in the selected stack frame).
4842
4843@item info all-registers
4844@kindex info all-registers
4845@cindex floating point registers
4846Print the names and values of all registers, including floating-point
4847registers.
70b88761 4848
4eb4cf57 4849@item info registers @var{regname} @dots{}
0d1cd01e
JG
4850Print the relativized value of each specified register @var{regname}.
4851@var{regname} may be any register name valid on the machine you are using, with
70b88761
RP
4852or without the initial @samp{$}.
4853@end table
4854
18fae2a8 4855@value{GDBN} has four ``standard'' register names that are available (in
29a2b744 4856expressions) on most machines---whenever they do not conflict with an
09267865
RP
4857architecture's canonical mnemonics for registers. The register names
4858@code{$pc} and @code{$sp} are used for the program counter register and
4859the stack pointer. @code{$fp} is used for a register that contains a
4860pointer to the current stack frame, and @code{$ps} is used for a
4861register that contains the processor status. For example,
70b88761 4862you could print the program counter in hex with
1041a570 4863
70b88761
RP
4864@example
4865p/x $pc
4866@end example
4867
4868@noindent
4869or print the instruction to be executed next with
1041a570 4870
70b88761
RP
4871@example
4872x/i $pc
4873@end example
4874
4875@noindent
ed447b95 4876or add four to the stack pointer@footnote{This is a way of removing
29a2b744
RP
4877one word from the stack, on machines where stacks grow downward in
4878memory (most machines, nowadays). This assumes that the innermost
4879stack frame is selected; setting @code{$sp} is not allowed when other
4880stack frames are selected. To pop entire frames off the stack,
4881regardless of machine architecture, use @code{return};
93928b60 4882@pxref{Returning, ,Returning from a function}.} with
1041a570 4883
70b88761
RP
4884@example
4885set $sp += 4
4886@end example
4887
09267865
RP
4888Whenever possible, these four standard register names are available on
4889your machine even though the machine has different canonical mnemonics,
4890so long as there is no conflict. The @code{info registers} command
4891shows the canonical names. For example, on the SPARC, @code{info
70b88761
RP
4892registers} displays the processor status register as @code{$psr} but you
4893can also refer to it as @code{$ps}.
4894
18fae2a8 4895@value{GDBN} always considers the contents of an ordinary register as an
70b88761
RP
4896integer when the register is examined in this way. Some machines have
4897special registers which can hold nothing but floating point; these
4898registers are considered to have floating point values. There is no way
4899to refer to the contents of an ordinary register as floating point value
4900(although you can @emph{print} it as a floating point value with
4901@samp{print/f $@var{regname}}).
4902
4903Some registers have distinct ``raw'' and ``virtual'' data formats. This
4904means that the data format in which the register contents are saved by
4905the operating system is not the same one that your program normally
4906sees. For example, the registers of the 68881 floating point
4907coprocessor are always saved in ``extended'' (raw) format, but all C
4908programs expect to work with ``double'' (virtual) format. In such
18fae2a8 4909cases, @value{GDBN} normally works with the virtual format only (the format that
70b88761
RP
4910makes sense for your program), but the @code{info registers} command
4911prints the data in both formats.
4912
4913Normally, register values are relative to the selected stack frame
93928b60 4914(@pxref{Selection, ,Selecting a frame}). This means that you get the
29a2b744
RP
4915value that the register would contain if all stack frames farther in
4916were exited and their saved registers restored. In order to see the
4917true contents of hardware registers, you must select the innermost
4918frame (with @samp{frame 0}).
70b88761 4919
18fae2a8 4920However, @value{GDBN} must deduce where registers are saved, from the machine
70b88761 4921code generated by your compiler. If some registers are not saved, or if
18fae2a8 4922@value{GDBN} is unable to locate the saved registers, the selected stack
9a27b06e 4923frame makes no difference.
70b88761 4924
a64a6c2b 4925@ifset AMD29K
03a77779 4926@table @code
d8a68b28
JG
4927@item set rstack_high_address @var{address}
4928@kindex set rstack_high_address
03a77779
RP
4929@cindex AMD 29K register stack
4930@cindex register stack, AMD29K
4931On AMD 29000 family processors, registers are saved in a separate
18fae2a8
RP
4932``register stack''. There is no way for @value{GDBN} to determine the extent
4933of this stack. Normally, @value{GDBN} just assumes that the stack is ``large
4934enough''. This may result in @value{GDBN} referencing memory locations that
93918348 4935do not exist. If necessary, you can get around this problem by
03a77779
RP
4936specifying the ending address of the register stack with the @code{set
4937rstack_high_address} command. The argument should be an address, which
9a27b06e 4938you probably want to precede with @samp{0x} to specify in
03a77779 4939hexadecimal.
d8a68b28
JG
4940
4941@item show rstack_high_address
4942@kindex show rstack_high_address
03a77779
RP
4943Display the current limit of the register stack, on AMD 29000 family
4944processors.
4945@end table
18fae2a8 4946@end ifset
d8a68b28 4947
a64a6c2b 4948@ifclear HAVE-FLOAT
4eb4cf57 4949@node Floating Point Hardware
93928b60 4950@section Floating point hardware
70b88761 4951@cindex floating point
1041a570 4952
1d7c3357 4953@c FIXME! Really host, not target?
18fae2a8 4954Depending on the host machine architecture, @value{GDBN} may be able to give
70b88761
RP
4955you more information about the status of the floating point hardware.
4956
4957@table @code
4958@item info float
4959@kindex info float
8c69096b 4960Display hardware-dependent information about the floating
70b88761 4961point unit. The exact contents and layout vary depending on the
8c69096b
RP
4962floating point chip; on some platforms, @samp{info float} is not
4963available at all.
70b88761
RP
4964@end table
4965@c FIXME: this is a cop-out. Try to get examples, explanations. Only
e251e767
RP
4966@c FIXME...supported currently on arm's and 386's. Mark properly with
4967@c FIXME... m4 macros to isolate general statements from hardware-dep,
70b88761 4968@c FIXME... at that point.
18fae2a8 4969@end ifclear
70b88761 4970
18fae2a8 4971@ifclear CONLY
4eb4cf57 4972@node Languages
18fae2a8 4973@chapter Using @value{GDBN} with Different Languages
c2bbbb22
RP
4974@cindex languages
4975
09934a2b 4976@ifset MOD2
c2bbbb22
RP
4977Although programming languages generally have common aspects, they are
4978rarely expressed in the same manner. For instance, in ANSI C,
4979dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
4980Modula-2, it is accomplished by @code{p^}. Values can also be
4981represented (and displayed) differently. Hex numbers in C are written
4982like @samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
09934a2b 4983@end ifset
c2bbbb22
RP
4984
4985@cindex working language
18fae2a8 4986Language-specific information is built into @value{GDBN} for some languages,
29a2b744 4987allowing you to express operations like the above in your program's
18fae2a8 4988native language, and allowing @value{GDBN} to output values in a manner
29a2b744 4989consistent with the syntax of your program's native language. The
c2bbbb22 4990language you use to build expressions, called the @dfn{working
18fae2a8 4991language}, can be selected manually, or @value{GDBN} can set it
c2bbbb22
RP
4992automatically.
4993
4994@menu
4995* Setting:: Switching between source languages
4996* Show:: Displaying the language
09934a2b 4997@ifset MOD2
ed447b95 4998* Checks:: Type and range checks
09934a2b 4999@end ifset
da374d80 5000
c2bbbb22
RP
5001* Support:: Supported languages
5002@end menu
5003
4eb4cf57 5004@node Setting
c2bbbb22
RP
5005@section Switching between source languages
5006
18fae2a8 5007There are two ways to control the working language---either have @value{GDBN}
c2bbbb22 5008set it automatically, or select it manually yourself. You can use the
18fae2a8 5009@code{set language} command for either purpose. On startup, @value{GDBN}
c2bbbb22
RP
5010defaults to setting the language automatically.
5011
5012@menu
5013* Manually:: Setting the working language manually
18fae2a8 5014* Automatically:: Having @value{GDBN} infer the source language
c2bbbb22
RP
5015@end menu
5016
4eb4cf57 5017@node Manually
c2bbbb22
RP
5018@subsection Setting the working language
5019
ed447b95
RP
5020If you allow @value{GDBN} to set the language automatically,
5021expressions are interpreted the same way in your debugging session and
5022your program.
5023
c2bbbb22 5024@kindex set language
ed447b95
RP
5025If you wish, you may set the language manually. To do this, issue the
5026command @samp{set language @var{lang}}, where @var{lang} is the name of
09934a2b
RP
5027a language, such as
5028@ifclear MOD2
5029@code{c}.
5030@end ifclear
5031@ifset MOD2
5032@code{c} or @code{modula-2}.
5033@end ifset
5034For a list of the supported languages, type @samp{set language}.
ed447b95 5035@c FIXME: rms: eventually this command should be "help set language".
c2bbbb22 5036
09934a2b 5037@ifset MOD2
18fae2a8 5038Setting the language manually prevents @value{GDBN} from updating the working
c2bbbb22
RP
5039language automatically. This can lead to confusion if you try
5040to debug a program when the working language is not the same as the
5041source language, when an expression is acceptable to both
5042languages---but means different things. For instance, if the current
18fae2a8 5043source file were written in C, and @value{GDBN} was parsing Modula-2, a
c2bbbb22
RP
5044command such as:
5045
5046@example
5047print a = b + c
5048@end example
5049
5050@noindent
5051might not have the effect you intended. In C, this means to add
5052@code{b} and @code{c} and place the result in @code{a}. The result
5053printed would be the value of @code{a}. In Modula-2, this means to compare
5054@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
09934a2b 5055@end ifset
c2bbbb22 5056
4eb4cf57 5057@node Automatically
18fae2a8 5058@subsection Having @value{GDBN} infer the source language
c2bbbb22 5059
18fae2a8
RP
5060To have @value{GDBN} set the working language automatically, use @samp{set
5061language local} or @samp{set language auto}. @value{GDBN} then infers the
c2bbbb22
RP
5062language that a program was written in by looking at the name of its
5063source files, and examining their extensions:
5064
5065@table @file
09934a2b 5066@ifset MOD2
c2bbbb22
RP
5067@item *.mod
5068Modula-2 source file
09934a2b 5069@end ifset
c2bbbb22
RP
5070
5071@item *.c
5a2c1d85
RP
5072C source file
5073
5074@item *.C
c2bbbb22 5075@itemx *.cc
5a2c1d85 5076C++ source file
c2bbbb22
RP
5077@end table
5078
5079This information is recorded for each function or procedure in a source
5080file. When your program stops in a frame (usually by encountering a
18fae2a8 5081breakpoint), @value{GDBN} sets the working language to the language recorded
c2bbbb22
RP
5082for the function in that frame. If the language for a frame is unknown
5083(that is, if the function or block corresponding to the frame was
5084defined in a source file that does not have a recognized extension), the
18fae2a8 5085current working language is not changed, and @value{GDBN} issues a warning.
c2bbbb22
RP
5086
5087This may not seem necessary for most programs, which are written
5088entirely in one source language. However, program modules and libraries
5089written in one source language can be used by a main program written in
5090a different source language. Using @samp{set language auto} in this
5091case frees you from having to set the working language manually.
5092
4eb4cf57 5093@node Show
c2bbbb22
RP
5094@section Displaying the language
5095
9a27b06e 5096The following commands help you find out which language is the
c2bbbb22
RP
5097working language, and also what language source files were written in.
5098
5099@kindex show language
5100@kindex info frame
5101@kindex info source
5102@table @code
5103@item show language
5104Display the current working language. This is the
5105language you can use with commands such as @code{print} to
29a2b744 5106build and compute expressions that may involve variables in your program.
c2bbbb22
RP
5107
5108@item info frame
1041a570 5109Among the other information listed here (@pxref{Frame Info, ,Information
9a27b06e
RP
5110about a frame}) is the source language for this frame. This
5111language becomes the working language if you use an
5112identifier from this frame.
c2bbbb22
RP
5113
5114@item info source
1041a570 5115Among the other information listed here (@pxref{Symbols, ,Examining the
c2bbbb22 5116Symbol Table}) is the source language of this source file.
c2bbbb22
RP
5117@end table
5118
09934a2b 5119@ifset MOD2
4eb4cf57 5120@node Checks
93928b60 5121@section Type and range checking
c2bbbb22
RP
5122
5123@quotation
18fae2a8 5124@emph{Warning:} In this release, the @value{GDBN} commands for type and range
c2bbbb22
RP
5125checking are included, but they do not yet have any effect. This
5126section documents the intended facilities.
5127@end quotation
5128@c FIXME remove warning when type/range code added
5129
5130Some languages are designed to guard you against making seemingly common
5131errors through a series of compile- and run-time checks. These include
5132checking the type of arguments to functions and operators, and making
5133sure mathematical overflows are caught at run time. Checks such as
5134these help to ensure a program's correctness once it has been compiled
5135by eliminating type mismatches, and providing active checks for range
29a2b744 5136errors when your program is running.
c2bbbb22 5137
18fae2a8 5138@value{GDBN} can check for conditions like the above if you wish.
9a27b06e 5139Although @value{GDBN} does not check the statements in your program, it
18fae2a8 5140can check expressions entered directly into @value{GDBN} for evaluation via
1041a570 5141the @code{print} command, for example. As with the working language,
18fae2a8 5142@value{GDBN} can also decide whether or not to check automatically based on
93928b60 5143your program's source language. @xref{Support, ,Supported languages},
1041a570 5144for the default settings of supported languages.
c2bbbb22
RP
5145
5146@menu
5147* Type Checking:: An overview of type checking
5148* Range Checking:: An overview of range checking
5149@end menu
5150
5151@cindex type checking
5152@cindex checks, type
4eb4cf57 5153@node Type Checking
c2bbbb22
RP
5154@subsection An overview of type checking
5155
5156Some languages, such as Modula-2, are strongly typed, meaning that the
5157arguments to operators and functions have to be of the correct type,
5158otherwise an error occurs. These checks prevent type mismatch
5159errors from ever causing any run-time problems. For example,
5160
5161@example
51621 + 2 @result{} 3
1041a570 5163@exdent but
c2bbbb22
RP
5164@error{} 1 + 2.3
5165@end example
5166
5167The second example fails because the @code{CARDINAL} 1 is not
5168type-compatible with the @code{REAL} 2.3.
5169
18fae2a8 5170For expressions you use in @value{GDBN} commands, you can tell the @value{GDBN}
c2bbbb22
RP
5171type checker to skip checking; to treat any mismatches as errors and
5172abandon the expression; or only issue warnings when type mismatches
5173occur, but evaluate the expression anyway. When you choose the last of
18fae2a8 5174these, @value{GDBN} evaluates expressions like the second example above, but
c2bbbb22
RP
5175also issues a warning.
5176
5177Even though you may turn type checking off, other type-based reasons may
18fae2a8 5178prevent @value{GDBN} from evaluating an expression. For instance, @value{GDBN} does not
c2bbbb22
RP
5179know how to add an @code{int} and a @code{struct foo}. These particular
5180type errors have nothing to do with the language in use, and usually
5181arise from expressions, such as the one described above, which make
5182little sense to evaluate anyway.
5183
5184Each language defines to what degree it is strict about type. For
5185instance, both Modula-2 and C require the arguments to arithmetical
5186operators to be numbers. In C, enumerated types and pointers can be
5187represented as numbers, so that they are valid arguments to mathematical
93928b60 5188operators. @xref{Support, ,Supported languages}, for further
c2bbbb22
RP
5189details on specific languages.
5190
18fae2a8 5191@value{GDBN} provides some additional commands for controlling the type checker:
c2bbbb22
RP
5192
5193@kindex set check
5194@kindex set check type
5195@kindex show check type
5196@table @code
5197@item set check type auto
e251e767 5198Set type checking on or off based on the current working language.
93928b60 5199@xref{Support, ,Supported languages}, for the default settings for
c2bbbb22
RP
5200each language.
5201
5202@item set check type on
5203@itemx set check type off
5204Set type checking on or off, overriding the default setting for the
5205current working language. Issue a warning if the setting does not
93918348 5206match the language default. If any type mismatches occur in
18fae2a8 5207evaluating an expression while typechecking is on, @value{GDBN} prints a
c2bbbb22
RP
5208message and aborts evaluation of the expression.
5209
5210@item set check type warn
5211Cause the type checker to issue warnings, but to always attempt to
5212evaluate the expression. Evaluating the expression may still
18fae2a8 5213be impossible for other reasons. For example, @value{GDBN} cannot add
c2bbbb22
RP
5214numbers and structures.
5215
5216@item show type
18fae2a8 5217Show the current setting of the type checker, and whether or not @value{GDBN} is
c2bbbb22
RP
5218setting it automatically.
5219@end table
5220
5221@cindex range checking
5222@cindex checks, range
4eb4cf57 5223@node Range Checking
ed447b95 5224@subsection An overview of range checking
c2bbbb22
RP
5225
5226In some languages (such as Modula-2), it is an error to exceed the
5227bounds of a type; this is enforced with run-time checks. Such range
5228checking is meant to ensure program correctness by making sure
5229computations do not overflow, or indices on an array element access do
5230not exceed the bounds of the array.
5231
ed447b95
RP
5232For expressions you use in @value{GDBN} commands, you can tell
5233@value{GDBN} to treat range errors in one of three ways: ignore them,
5234always treat them as errors and abandon the expression, or issue
5235warnings but evaluate the expression anyway.
c2bbbb22
RP
5236
5237A range error can result from numerical overflow, from exceeding an
ed447b95 5238array index bound, or when you type a constant that is not a member
c2bbbb22
RP
5239of any type. Some languages, however, do not treat overflows as an
5240error. In many implementations of C, mathematical overflow causes the
5241result to ``wrap around'' to lower values---for example, if @var{m} is
5242the largest integer value, and @var{s} is the smallest, then
1041a570 5243
c2bbbb22
RP
5244@example
5245@var{m} + 1 @result{} @var{s}
5246@end example
5247
5248This, too, is specific to individual languages, and in some cases
1041a570 5249specific to individual compilers or machines. @xref{Support, ,
93928b60 5250Supported languages}, for further details on specific languages.
c2bbbb22 5251
18fae2a8 5252@value{GDBN} provides some additional commands for controlling the range checker:
c2bbbb22
RP
5253
5254@kindex set check
5255@kindex set check range
5256@kindex show check range
5257@table @code
5258@item set check range auto
e251e767 5259Set range checking on or off based on the current working language.
93928b60 5260@xref{Support, ,Supported languages}, for the default settings for
c2bbbb22
RP
5261each language.
5262
5263@item set check range on
5264@itemx set check range off
5265Set range checking on or off, overriding the default setting for the
5266current working language. A warning is issued if the setting does not
93918348 5267match the language default. If a range error occurs, then a message
c2bbbb22
RP
5268is printed and evaluation of the expression is aborted.
5269
5270@item set check range warn
18fae2a8 5271Output messages when the @value{GDBN} range checker detects a range error,
c2bbbb22
RP
5272but attempt to evaluate the expression anyway. Evaluating the
5273expression may still be impossible for other reasons, such as accessing
6b51acad 5274memory that the process does not own (a typical example from many Unix
c2bbbb22
RP
5275systems).
5276
5277@item show range
e251e767 5278Show the current setting of the range checker, and whether or not it is
18fae2a8 5279being set automatically by @value{GDBN}.
c2bbbb22 5280@end table
09934a2b 5281@end ifset
c2bbbb22 5282
4eb4cf57 5283@node Support
93928b60 5284@section Supported languages
c2bbbb22 5285
09934a2b
RP
5286@ifset MOD2
5287@value{GDBN} 4 supports C, C++, and Modula-2.
5288@end ifset
5289@ifclear MOD2
5290@value{GDBN} 4 supports C, and C++.
5291@end ifclear
5292Some @value{GDBN} features may be used in expressions regardless of the
5293language you use: the @value{GDBN} @code{@@} and @code{::} operators,
5294and the @samp{@{type@}addr} construct (@pxref{Expressions,
5295,Expressions}) can be used with the constructs of any supported
5296language.
5297
5298The following sections detail to what degree each source language is
5299supported by @value{GDBN}. These sections are not meant to be language
5300tutorials or references, but serve only as a reference guide to what the
9a27b06e 5301@value{GDBN} expression parser accepts, and what input and output
09934a2b
RP
5302formats should look like for different languages. There are many good
5303books written on each of these languages; please look to these for a
5304language reference or tutorial.
5305
5306@ifset MOD2
c2bbbb22
RP
5307@menu
5308* C:: C and C++
5309* Modula-2:: Modula-2
5310@end menu
5311
4eb4cf57 5312@node C
c2bbbb22
RP
5313@subsection C and C++
5314@cindex C and C++
c2bbbb22 5315@cindex expressions in C or C++
0f153e74 5316
18fae2a8 5317Since C and C++ are so closely related, many features of @value{GDBN} apply
5a2c1d85
RP
5318to both languages. Whenever this is the case, we discuss both languages
5319together.
09934a2b
RP
5320@end ifset
5321@ifclear MOD2
5322@c Cancel this below, under same condition, at end of this chapter!
6370267a 5323@raisesections
09934a2b 5324@end ifclear
b80282d5
RP
5325
5326@cindex C++
5327@kindex g++
5328@cindex GNU C++
c2bbbb22 5329The C++ debugging facilities are jointly implemented by the GNU C++
22b5dba5
RP
5330compiler and @value{GDBN}. Therefore, to debug your C++ code
5331effectively, you must compile your C++ programs with the GNU C++
5332compiler, @code{g++}.
5333
5334For best results when debugging C++ programs, use the stabs debugging
5335format. You can select that format explicitly with the @code{g++}
5336command-line options @samp{-gstabs} or @samp{-gstabs+}. See
5337@ref{Debugging Options,,Options for Debugging Your Program or GNU CC,
5338gcc.info, Using GNU CC}, for more information.
18fae2a8
RP
5339@end ifclear
5340@ifset CONLY
0f153e74
RP
5341@node C
5342@chapter C Language Support
5343@cindex C language
5344@cindex expressions in C
5345
18fae2a8
RP
5346Information specific to the C language is built into @value{GDBN} so that you
5347can use C expressions while degugging. This also permits @value{GDBN} to
0f153e74 5348output values in a manner consistent with C conventions.
c2bbbb22 5349
0f153e74 5350@menu
ed447b95
RP
5351* C Operators:: C operators
5352* C Constants:: C constants
18fae2a8 5353* Debugging C:: @value{GDBN} and C
0f153e74 5354@end menu
18fae2a8
RP
5355@end ifset
5356@ifclear CONLY
b80282d5 5357@menu
ed447b95
RP
5358* C Operators:: C and C++ operators
5359* C Constants:: C and C++ constants
5360* Cplus expressions:: C++ expressions
c2bbbb22 5361* C Defaults:: Default settings for C and C++
09934a2b 5362@ifset MOD2
ed447b95 5363* C Checks:: C and C++ type and range checks
09934a2b 5364@end ifset
da374d80 5365
18fae2a8 5366* Debugging C:: @value{GDBN} and C
c2bbbb22 5367* Debugging C plus plus:: Special features for C++
b80282d5 5368@end menu
18fae2a8 5369@end ifclear
b80282d5 5370
18fae2a8 5371@ifclear CONLY
c2bbbb22 5372@cindex C and C++ operators
4eb4cf57 5373@node C Operators
93928b60 5374@subsubsection C and C++ operators
18fae2a8
RP
5375@end ifclear
5376@ifset CONLY
0f153e74
RP
5377@cindex C operators
5378@node C Operators
93928b60 5379@section C operators
18fae2a8 5380@end ifset
c2bbbb22
RP
5381
5382Operators must be defined on values of specific types. For instance,
5383@code{+} is defined on numbers, but not on structures. Operators are
0f153e74
RP
5384often defined on groups of types.
5385
18fae2a8 5386@ifclear CONLY
0f153e74 5387For the purposes of C and C++, the following definitions hold:
18fae2a8 5388@end ifclear
c2bbbb22
RP
5389
5390@itemize @bullet
e251e767 5391@item
c2bbbb22 5392@emph{Integral types} include @code{int} with any of its storage-class
9aa964da 5393specifiers; @code{char}; and @code{enum}.
c2bbbb22
RP
5394
5395@item
5396@emph{Floating-point types} include @code{float} and @code{double}.
5397
5398@item
5399@emph{Pointer types} include all types defined as @code{(@var{type}
5400*)}.
5401
e251e767 5402@item
c2bbbb22 5403@emph{Scalar types} include all of the above.
c2bbbb22
RP
5404@end itemize
5405
5406@noindent
5407The following operators are supported. They are listed here
5408in order of increasing precedence:
5409
5410@table @code
18fae2a8 5411@item ,
c2bbbb22
RP
5412The comma or sequencing operator. Expressions in a comma-separated list
5413are evaluated from left to right, with the result of the entire
5414expression being the last expression evaluated.
5415
5416@item =
5417Assignment. The value of an assignment expression is the value
5418assigned. Defined on scalar types.
5419
5420@item @var{op}=
1041a570
RP
5421Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
5422and translated to @w{@code{@var{a} = @var{a op b}}}.
5423@w{@code{@var{op}=}} and @code{=} have the same precendence.
5424@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
5425@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
c2bbbb22
RP
5426
5427@item ?:
5428The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
5429of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
5430integral type.
5431
5432@item ||
1041a570 5433Logical @sc{or}. Defined on integral types.
c2bbbb22
RP
5434
5435@item &&
1041a570 5436Logical @sc{and}. Defined on integral types.
c2bbbb22
RP
5437
5438@item |
1041a570 5439Bitwise @sc{or}. Defined on integral types.
c2bbbb22
RP
5440
5441@item ^
1041a570 5442Bitwise exclusive-@sc{or}. Defined on integral types.
c2bbbb22
RP
5443
5444@item &
1041a570 5445Bitwise @sc{and}. Defined on integral types.
c2bbbb22
RP
5446
5447@item ==@r{, }!=
5448Equality and inequality. Defined on scalar types. The value of these
5449expressions is 0 for false and non-zero for true.
5450
5451@item <@r{, }>@r{, }<=@r{, }>=
5452Less than, greater than, less than or equal, greater than or equal.
5453Defined on scalar types. The value of these expressions is 0 for false
5454and non-zero for true.
5455
5456@item <<@r{, }>>
18fae2a8 5457left shift, and right shift. Defined on integral types.
c2bbbb22 5458
e251e767 5459@item @@
18fae2a8 5460The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
c2bbbb22
RP
5461
5462@item +@r{, }-
5463Addition and subtraction. Defined on integral types, floating-point types and
e251e767 5464pointer types.
c2bbbb22
RP
5465
5466@item *@r{, }/@r{, }%
5467Multiplication, division, and modulus. Multiplication and division are
5468defined on integral and floating-point types. Modulus is defined on
5469integral types.
5470
5471@item ++@r{, }--
5472Increment and decrement. When appearing before a variable, the
5473operation is performed before the variable is used in an expression;
5474when appearing after it, the variable's value is used before the
5475operation takes place.
5476
5477@item *
5478Pointer dereferencing. Defined on pointer types. Same precedence as
5479@code{++}.
5480
5481@item &
5482Address operator. Defined on variables. Same precedence as @code{++}.
5483
18fae2a8 5484@ifclear CONLY
93918348 5485For debugging C++, @value{GDBN} implements a use of @samp{&} beyond what is
6ca72cc6 5486allowed in the C++ language itself: you can use @samp{&(&@var{ref})}
7640fe71 5487(or, if you prefer, simply @samp{&&@var{ref}}) to examine the address
6ca72cc6
RP
5488where a C++ reference variable (declared with @samp{&@var{ref}}) is
5489stored.
18fae2a8 5490@end ifclear
6ca72cc6 5491
c2bbbb22
RP
5492@item -
5493Negative. Defined on integral and floating-point types. Same
5494precedence as @code{++}.
5495
5496@item !
5497Logical negation. Defined on integral types. Same precedence as
5498@code{++}.
5499
5500@item ~
5501Bitwise complement operator. Defined on integral types. Same precedence as
5502@code{++}.
5503
18fae2a8 5504
c2bbbb22
RP
5505@item .@r{, }->
5506Structure member, and pointer-to-structure member. For convenience,
18fae2a8 5507@value{GDBN} regards the two as equivalent, choosing whether to dereference a
e251e767 5508pointer based on the stored type information.
9aa964da 5509Defined on @code{struct} and @code{union} data.
c2bbbb22
RP
5510
5511@item []
5512Array indexing. @code{@var{a}[@var{i}]} is defined as
5513@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
5514
5515@item ()
18fae2a8 5516Function parameter list. Same precedence as @code{->}.
c2bbbb22 5517
18fae2a8 5518@ifclear CONLY
c2bbbb22
RP
5519@item ::
5520C++ scope resolution operator. Defined on
5521@code{struct}, @code{union}, and @code{class} types.
18fae2a8 5522@end ifclear
c2bbbb22
RP
5523
5524@item ::
ed447b95
RP
5525Doubled colons
5526@ifclear CONLY
5527also
5528@end ifclear
5529represent the @value{GDBN} scope operator (@pxref{Expressions,
5530,Expressions}).
18fae2a8 5531@ifclear CONLY
0f153e74 5532Same precedence as @code{::}, above.
18fae2a8 5533@end ifclear
c2bbbb22
RP
5534@end table
5535
18fae2a8 5536@ifclear CONLY
c2bbbb22 5537@cindex C and C++ constants
4eb4cf57 5538@node C Constants
93928b60 5539@subsubsection C and C++ constants
0f153e74 5540
18fae2a8 5541@value{GDBN} allows you to express the constants of C and C++ in the
0f153e74 5542following ways:
18fae2a8
RP
5543@end ifclear
5544@ifset CONLY
0f153e74
RP
5545@cindex C constants
5546@node C Constants
93928b60 5547@section C constants
c2bbbb22 5548
18fae2a8 5549@value{GDBN} allows you to express the constants of C in the
c2bbbb22 5550following ways:
18fae2a8 5551@end ifset
c2bbbb22
RP
5552
5553@itemize @bullet
c2bbbb22
RP
5554@item
5555Integer constants are a sequence of digits. Octal constants are
5556specified by a leading @samp{0} (ie. zero), and hexadecimal constants by
1041a570 5557a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
c2bbbb22
RP
5558@samp{l}, specifying that the constant should be treated as a
5559@code{long} value.
5560
5561@item
5562Floating point constants are a sequence of digits, followed by a decimal
5563point, followed by a sequence of digits, and optionally followed by an
5564exponent. An exponent is of the form:
5565@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
5566sequence of digits. The @samp{+} is optional for positive exponents.
5567
5568@item
5569Enumerated constants consist of enumerated identifiers, or their
5570integral equivalents.
5571
5572@item
5573Character constants are a single character surrounded by single quotes
5574(@code{'}), or a number---the ordinal value of the corresponding character
5575(usually its @sc{ASCII} value). Within quotes, the single character may
5576be represented by a letter or by @dfn{escape sequences}, which are of
5577the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
5578of the character's ordinal value; or of the form @samp{\@var{x}}, where
5579@samp{@var{x}} is a predefined special character---for example,
5580@samp{\n} for newline.
5581
5582@item
5583String constants are a sequence of character constants surrounded
5584by double quotes (@code{"}).
5585
5586@item
fe715d06
RP
5587Pointer constants are an integral value. You can also write pointers
5588to constants using the C operator @samp{&}.
5589
5590@item
5591Array constants are comma-separated lists surrounded by braces @samp{@{}
5592and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
5593integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
5594and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
c2bbbb22
RP
5595@end itemize
5596
18fae2a8 5597@ifclear CONLY
ed447b95 5598@node Cplus expressions
93928b60 5599@subsubsection C++ expressions
b80282d5
RP
5600
5601@cindex expressions in C++
93918348 5602@value{GDBN} expression handling has a number of extensions to
b1385986
RP
5603interpret a significant subset of C++ expressions.
5604
5605@cindex C++ support, not in @sc{coff}
5606@cindex @sc{coff} versus C++
5607@cindex C++ and object formats
5608@cindex object formats and C++
5609@cindex a.out and C++
5610@cindex @sc{ecoff} and C++
5611@cindex @sc{xcoff} and C++
5612@cindex @sc{elf}/stabs and C++
5613@cindex @sc{elf}/@sc{dwarf} and C++
9a27b06e
RP
5614@c FIXME!! GDB may eventually be able to debug C++ using DWARF; check
5615@c periodically whether this has happened...
b1385986 5616@quotation
9a27b06e
RP
5617@emph{Warning:} @value{GDBN} can only debug C++ code if you compile with
5618the GNU C++ compiler. Moreover, C++ debugging depends on the use of
5619additional debugging information in the symbol table, and thus requires
5620special support. @value{GDBN} has this support @emph{only} with the
5621stabs debug format. In particular, if your compiler generates a.out,
5622MIPS @sc{ecoff}, RS/6000 @sc{xcoff}, or @sc{elf} with stabs extensions
5623to the symbol table, these facilities are all available. (With GNU CC,
5624you can use the @samp{-gstabs} option to request stabs debugging
5625extensions explicitly.) Where the object code format is standard
5626@sc{coff} or @sc{dwarf} in @sc{elf}, on the other hand, most of the C++
5627support in @value{GDBN} does @emph{not} work.
b1385986 5628@end quotation
b80282d5
RP
5629
5630@enumerate
5631
5632@cindex member functions
e251e767 5633@item
b80282d5 5634Member function calls are allowed; you can use expressions like
1041a570 5635
b80282d5
RP
5636@example
5637count = aml->GetOriginal(x, y)
5638@end example
5639
5640@kindex this
5641@cindex namespace in C++
e251e767 5642@item
b80282d5
RP
5643While a member function is active (in the selected stack frame), your
5644expressions have the same namespace available as the member function;
18fae2a8 5645that is, @value{GDBN} allows implicit references to the class instance
b80282d5
RP
5646pointer @code{this} following the same rules as C++.
5647
5648@cindex call overloaded functions
5649@cindex type conversions in C++
e251e767 5650@item
9a27b06e 5651You can call overloaded functions; @value{GDBN} resolves the function
b80282d5
RP
5652call to the right definition, with one restriction---you must use
5653arguments of the type required by the function that you want to call.
9a27b06e 5654@value{GDBN} does not perform conversions requiring constructors or
b80282d5
RP
5655user-defined type operators.
5656
5657@cindex reference declarations
5658@item
18fae2a8 5659@value{GDBN} understands variables declared as C++ references; you can use them in
b80282d5 5660expressions just as you do in C++ source---they are automatically
e251e767 5661dereferenced.
b80282d5 5662
18fae2a8 5663In the parameter list shown when @value{GDBN} displays a frame, the values of
b80282d5
RP
5664reference variables are not displayed (unlike other variables); this
5665avoids clutter, since references are often used for large structures.
5666The @emph{address} of a reference variable is always shown, unless
1041a570 5667you have specified @samp{set print address off}.
b80282d5
RP
5668
5669@item
18fae2a8 5670@value{GDBN} supports the C++ name resolution operator @code{::}---your
c2bbbb22
RP
5671expressions can use it just as expressions in your program do. Since
5672one scope may be defined in another, you can use @code{::} repeatedly if
5673necessary, for example in an expression like
18fae2a8 5674@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
c2bbbb22 5675resolving name scope by reference to source files, in both C and C++
93928b60 5676debugging (@pxref{Variables, ,Program variables}).
b80282d5
RP
5677@end enumerate
5678
4eb4cf57 5679@node C Defaults
93928b60 5680@subsubsection C and C++ defaults
c2bbbb22
RP
5681@cindex C and C++ defaults
5682
18fae2a8 5683If you allow @value{GDBN} to set type and range checking automatically, they
e251e767 5684both default to @code{off} whenever the working language changes to
18fae2a8 5685C or C++. This happens regardless of whether you, or @value{GDBN},
c2bbbb22
RP
5686selected the working language.
5687
18fae2a8 5688If you allow @value{GDBN} to set the language automatically, it sets the
5a2c1d85
RP
5689working language to C or C++ on entering code compiled from a source file
5690whose name ends with @file{.c}, @file{.C}, or @file{.cc}.
18fae2a8 5691@xref{Automatically, ,Having @value{GDBN} infer the source language}, for
c2bbbb22
RP
5692further details.
5693
09934a2b
RP
5694@ifset MOD2
5695@c Type checking is (a) primarily motivated by Modula-2, and (b)
5696@c unimplemented. If (b) changes, it might make sense to let this node
5697@c appear even if Mod-2 does not, but meanwhile ignore it. pesch 16jul93.
4eb4cf57 5698@node C Checks
93928b60 5699@subsubsection C and C++ type and range checks
c2bbbb22
RP
5700@cindex C and C++ checks
5701
18fae2a8 5702By default, when @value{GDBN} parses C or C++ expressions, type checking
9a27b06e
RP
5703is not used. However, if you turn type checking on, @value{GDBN}
5704considers two variables type equivalent if:
c2bbbb22
RP
5705
5706@itemize @bullet
5707@item
5708The two variables are structured and have the same structure, union, or
5709enumerated tag.
5710
e251e767 5711@item
c2bbbb22
RP
5712Two two variables have the same type name, or types that have been
5713declared equivalent through @code{typedef}.
5714
5715@ignore
5716@c leaving this out because neither J Gilmore nor R Pesch understand it.
5717@c FIXME--beers?
5718@item
5719The two @code{struct}, @code{union}, or @code{enum} variables are
5720declared in the same declaration. (Note: this may not be true for all C
5721compilers.)
5722@end ignore
c2bbbb22
RP
5723@end itemize
5724
5725Range checking, if turned on, is done on mathematical operations. Array
5726indices are not checked, since they are often used to index a pointer
5727that is not itself an array.
09934a2b 5728@end ifset
18fae2a8 5729@end ifclear
c2bbbb22 5730
18fae2a8 5731@ifclear CONLY
4eb4cf57 5732@node Debugging C
18fae2a8
RP
5733@subsubsection @value{GDBN} and C
5734@end ifclear
5735@ifset CONLY
5736@node Debugging C
5737@section @value{GDBN} and C
5738@end ifset
c2bbbb22
RP
5739
5740The @code{set print union} and @code{show print union} commands apply to
5741the @code{union} type. When set to @samp{on}, any @code{union} that is
1d7c3357
RP
5742inside a @code{struct}
5743@ifclear CONLY
5744or @code{class}
5745@end ifclear
9a27b06e
RP
5746is also printed.
5747Otherwise, it appears as @samp{@{...@}}.
c2bbbb22
RP
5748
5749The @code{@@} operator aids in the debugging of dynamic arrays, formed
ed447b95
RP
5750with pointers and a memory allocation function. @xref{Expressions,
5751,Expressions}.
c2bbbb22 5752
18fae2a8 5753@ifclear CONLY
4eb4cf57 5754@node Debugging C plus plus
93928b60 5755@subsubsection @value{GDBN} features for C++
b80282d5
RP
5756
5757@cindex commands for C++
18fae2a8 5758Some @value{GDBN} commands are particularly useful with C++, and some are
b80282d5
RP
5759designed specifically for use with C++. Here is a summary:
5760
5761@table @code
5762@cindex break in overloaded functions
5763@item @r{breakpoint menus}
5764When you want a breakpoint in a function whose name is overloaded,
93918348 5765@value{GDBN} breakpoint menus help you specify which function definition
93928b60 5766you want. @xref{Breakpoint Menus,,Breakpoint menus}.
b80282d5
RP
5767
5768@cindex overloading in C++
5769@item rbreak @var{regex}
5770Setting breakpoints using regular expressions is helpful for setting
5771breakpoints on overloaded functions that are not members of any special
e251e767 5772classes.
93928b60 5773@xref{Set Breaks, ,Setting breakpoints}.
b80282d5
RP
5774
5775@cindex C++ exception handling
5776@item catch @var{exceptions}
5777@itemx info catch
29a2b744 5778Debug C++ exception handling using these commands. @xref{Exception
93928b60 5779Handling, ,Breakpoints and exceptions}.
b80282d5 5780
e251e767 5781@cindex inheritance
b80282d5
RP
5782@item ptype @var{typename}
5783Print inheritance relationships as well as other information for type
e251e767 5784@var{typename}.
1041a570 5785@xref{Symbols, ,Examining the Symbol Table}.
b80282d5
RP
5786
5787@cindex C++ symbol display
5788@item set print demangle
5789@itemx show print demangle
5790@itemx set print asm-demangle
5791@itemx show print asm-demangle
5792Control whether C++ symbols display in their source form, both when
5793displaying code as C++ source and when displaying disassemblies.
93928b60 5794@xref{Print Settings, ,Print settings}.
b80282d5
RP
5795
5796@item set print object
5797@itemx show print object
e251e767 5798Choose whether to print derived (actual) or declared types of objects.
93928b60 5799@xref{Print Settings, ,Print settings}.
b80282d5
RP
5800
5801@item set print vtbl
5802@itemx show print vtbl
5803Control the format for printing virtual function tables.
93928b60 5804@xref{Print Settings, ,Print settings}.
6f3ec223
RP
5805
5806@item @r{Overloaded symbol names}
5807You can specify a particular definition of an overloaded symbol, using
93918348 5808the same notation that is used to declare such symbols in C++: type
6f3ec223 5809@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
93918348 5810also use the @value{GDBN} command-line word completion facilities to list the
6f3ec223 5811available choices, or to finish the type list for you.
93928b60 5812@xref{Completion,, Command completion}, for details on how to do this.
b80282d5 5813@end table
09934a2b 5814@ifclear MOD2
6370267a
RP
5815@c cancels "raisesections" under same conditions near bgn of chapter
5816@lowersections
09934a2b 5817@end ifclear
b80282d5 5818
09934a2b 5819@ifset MOD2
4eb4cf57 5820@node Modula-2
c2bbbb22
RP
5821@subsection Modula-2
5822@cindex Modula-2
5823
ed447b95
RP
5824The extensions made to @value{GDBN} to support Modula-2 only support
5825output from the GNU Modula-2 compiler (which is currently being
5826developed). Other Modula-2 compilers are not currently supported, and
9a27b06e
RP
5827attempting to debug executables produced by them is most likely
5828to give an error as @value{GDBN} reads in the executable's symbol
ed447b95 5829table.
c2bbbb22
RP
5830
5831@cindex expressions in Modula-2
5832@menu
5833* M2 Operators:: Built-in operators
ed447b95
RP
5834* Built-In Func/Proc:: Built-in functions and procedures
5835* M2 Constants:: Modula-2 constants
c2bbbb22
RP
5836* M2 Defaults:: Default settings for Modula-2
5837* Deviations:: Deviations from standard Modula-2
ed447b95 5838* M2 Checks:: Modula-2 type and range checks
c2bbbb22 5839* M2 Scope:: The scope operators @code{::} and @code{.}
18fae2a8 5840* GDB/M2:: @value{GDBN} and Modula-2
c2bbbb22
RP
5841@end menu
5842
4eb4cf57 5843@node M2 Operators
c2bbbb22
RP
5844@subsubsection Operators
5845@cindex Modula-2 operators
5846
5847Operators must be defined on values of specific types. For instance,
5848@code{+} is defined on numbers, but not on structures. Operators are
5849often defined on groups of types. For the purposes of Modula-2, the
5850following definitions hold:
5851
5852@itemize @bullet
5853
5854@item
5855@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
5856their subranges.
5857
5858@item
5859@emph{Character types} consist of @code{CHAR} and its subranges.
5860
5861@item
5862@emph{Floating-point types} consist of @code{REAL}.
5863
5864@item
5865@emph{Pointer types} consist of anything declared as @code{POINTER TO
5866@var{type}}.
5867
5868@item
5869@emph{Scalar types} consist of all of the above.
5870
5871@item
9aa964da 5872@emph{Set types} consist of @code{SET} and @code{BITSET} types.
c2bbbb22
RP
5873
5874@item
5875@emph{Boolean types} consist of @code{BOOLEAN}.
c2bbbb22
RP
5876@end itemize
5877
5878@noindent
5879The following operators are supported, and appear in order of
5880increasing precedence:
5881
5882@table @code
c2bbbb22
RP
5883@item ,
5884Function argument or array index separator.
18fae2a8 5885
c2bbbb22
RP
5886@item :=
5887Assignment. The value of @var{var} @code{:=} @var{value} is
5888@var{value}.
5889
5890@item <@r{, }>
5891Less than, greater than on integral, floating-point, or enumerated
5892types.
5893
5894@item <=@r{, }>=
5895Less than, greater than, less than or equal to, greater than or equal to
5896on integral, floating-point and enumerated types, or set inclusion on
5897set types. Same precedence as @code{<}.
5898
5899@item =@r{, }<>@r{, }#
5900Equality and two ways of expressing inequality, valid on scalar types.
18fae2a8 5901Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
c2bbbb22
RP
5902available for inequality, since @code{#} conflicts with the script
5903comment character.
5904
5905@item IN
5906Set membership. Defined on set types and the types of their members.
5907Same precedence as @code{<}.
5908
5909@item OR
5910Boolean disjunction. Defined on boolean types.
5911
5912@item AND@r{, }&
5913Boolean conjuction. Defined on boolean types.
5914
5915@item @@
18fae2a8 5916The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
c2bbbb22
RP
5917
5918@item +@r{, }-
5919Addition and subtraction on integral and floating-point types, or union
5920and difference on set types.
5921
5922@item *
5923Multiplication on integral and floating-point types, or set intersection
5924on set types.
5925
5926@item /
5927Division on floating-point types, or symmetric set difference on set
5928types. Same precedence as @code{*}.
5929
5930@item DIV@r{, }MOD
5931Integer division and remainder. Defined on integral types. Same
5932precedence as @code{*}.
5933
5934@item -
9aa964da 5935Negative. Defined on @code{INTEGER} and @code{REAL} data.
c2bbbb22
RP
5936
5937@item ^
e251e767 5938Pointer dereferencing. Defined on pointer types.
c2bbbb22
RP
5939
5940@item NOT
5941Boolean negation. Defined on boolean types. Same precedence as
5942@code{^}.
5943
5944@item .
9aa964da 5945@code{RECORD} field selector. Defined on @code{RECORD} data. Same
c2bbbb22
RP
5946precedence as @code{^}.
5947
5948@item []
9aa964da 5949Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
c2bbbb22
RP
5950
5951@item ()
9aa964da 5952Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
c2bbbb22
RP
5953as @code{^}.
5954
5955@item ::@r{, }.
18fae2a8 5956@value{GDBN} and Modula-2 scope operators.
c2bbbb22
RP
5957@end table
5958
5959@quotation
18fae2a8 5960@emph{Warning:} Sets and their operations are not yet supported, so @value{GDBN}
9a27b06e 5961treats the use of the operator @code{IN}, or the use of operators
c2bbbb22
RP
5962@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
5963@code{<=}, and @code{>=} on sets as an error.
5964@end quotation
18fae2a8 5965
29a2b744 5966@cindex Modula-2 built-ins
4eb4cf57 5967@node Built-In Func/Proc
93928b60 5968@subsubsection Built-in functions and procedures
c2bbbb22
RP
5969
5970Modula-2 also makes available several built-in procedures and functions.
5971In describing these, the following metavariables are used:
5972
5973@table @var
5974
5975@item a
5976represents an @code{ARRAY} variable.
5977
5978@item c
5979represents a @code{CHAR} constant or variable.
5980
5981@item i
5982represents a variable or constant of integral type.
5983
5984@item m
5985represents an identifier that belongs to a set. Generally used in the
5986same function with the metavariable @var{s}. The type of @var{s} should
6b51acad 5987be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
c2bbbb22
RP
5988
5989@item n
5990represents a variable or constant of integral or floating-point type.
5991
5992@item r
5993represents a variable or constant of floating-point type.
5994
5995@item t
5996represents a type.
5997
5998@item v
5999represents a variable.
6000
6001@item x
6002represents a variable or constant of one of many types. See the
6003explanation of the function for details.
c2bbbb22
RP
6004@end table
6005
6006All Modula-2 built-in procedures also return a result, described below.
6007
6008@table @code
6009@item ABS(@var{n})
6010Returns the absolute value of @var{n}.
6011
6012@item CAP(@var{c})
6013If @var{c} is a lower case letter, it returns its upper case
6014equivalent, otherwise it returns its argument
6015
6016@item CHR(@var{i})
6017Returns the character whose ordinal value is @var{i}.
6018
6019@item DEC(@var{v})
6020Decrements the value in the variable @var{v}. Returns the new value.
6021
6022@item DEC(@var{v},@var{i})
6023Decrements the value in the variable @var{v} by @var{i}. Returns the
6024new value.
6025
6026@item EXCL(@var{m},@var{s})
6027Removes the element @var{m} from the set @var{s}. Returns the new
6028set.
6029
6030@item FLOAT(@var{i})
6031Returns the floating point equivalent of the integer @var{i}.
6032
6033@item HIGH(@var{a})
6034Returns the index of the last member of @var{a}.
6035
6036@item INC(@var{v})
6037Increments the value in the variable @var{v}. Returns the new value.
6038
6039@item INC(@var{v},@var{i})
6040Increments the value in the variable @var{v} by @var{i}. Returns the
6041new value.
6042
6043@item INCL(@var{m},@var{s})
6044Adds the element @var{m} to the set @var{s} if it is not already
6045there. Returns the new set.
6046
6047@item MAX(@var{t})
6048Returns the maximum value of the type @var{t}.
6049
6050@item MIN(@var{t})
6051Returns the minimum value of the type @var{t}.
6052
6053@item ODD(@var{i})
6054Returns boolean TRUE if @var{i} is an odd number.
6055
6056@item ORD(@var{x})
6057Returns the ordinal value of its argument. For example, the ordinal
6058value of a character is its ASCII value (on machines supporting the
6059ASCII character set). @var{x} must be of an ordered type, which include
6060integral, character and enumerated types.
6061
6062@item SIZE(@var{x})
6063Returns the size of its argument. @var{x} can be a variable or a type.
6064
6065@item TRUNC(@var{r})
6066Returns the integral part of @var{r}.
6067
6068@item VAL(@var{t},@var{i})
6069Returns the member of the type @var{t} whose ordinal value is @var{i}.
6070@end table
6071
6072@quotation
6073@emph{Warning:} Sets and their operations are not yet supported, so
9a27b06e 6074@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
c2bbbb22
RP
6075an error.
6076@end quotation
6077
6078@cindex Modula-2 constants
4eb4cf57 6079@node M2 Constants
c2bbbb22
RP
6080@subsubsection Constants
6081
18fae2a8 6082@value{GDBN} allows you to express the constants of Modula-2 in the following
c2bbbb22
RP
6083ways:
6084
6085@itemize @bullet
6086
6087@item
6088Integer constants are simply a sequence of digits. When used in an
6089expression, a constant is interpreted to be type-compatible with the
6090rest of the expression. Hexadecimal integers are specified by a
6091trailing @samp{H}, and octal integers by a trailing @samp{B}.
6092
6093@item
6094Floating point constants appear as a sequence of digits, followed by a
6095decimal point and another sequence of digits. An optional exponent can
6096then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
6097@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
6098digits of the floating point constant must be valid decimal (base 10)
6099digits.
6100
6101@item
6102Character constants consist of a single character enclosed by a pair of
6103like quotes, either single (@code{'}) or double (@code{"}). They may
6104also be expressed by their ordinal value (their ASCII value, usually)
6105followed by a @samp{C}.
6106
6107@item
1041a570
RP
6108String constants consist of a sequence of characters enclosed by a
6109pair of like quotes, either single (@code{'}) or double (@code{"}).
6110Escape sequences in the style of C are also allowed. @xref{C
93928b60 6111Constants, ,C and C++ constants}, for a brief explanation of escape
1041a570 6112sequences.
c2bbbb22
RP
6113
6114@item
6115Enumerated constants consist of an enumerated identifier.
6116
6117@item
6118Boolean constants consist of the identifiers @code{TRUE} and
6119@code{FALSE}.
6120
6121@item
6122Pointer constants consist of integral values only.
6123
6124@item
6125Set constants are not yet supported.
c2bbbb22
RP
6126@end itemize
6127
4eb4cf57 6128@node M2 Defaults
93928b60 6129@subsubsection Modula-2 defaults
c2bbbb22
RP
6130@cindex Modula-2 defaults
6131
18fae2a8 6132If type and range checking are set automatically by @value{GDBN}, they
e251e767 6133both default to @code{on} whenever the working language changes to
18fae2a8 6134Modula-2. This happens regardless of whether you, or @value{GDBN},
c2bbbb22
RP
6135selected the working language.
6136
18fae2a8 6137If you allow @value{GDBN} to set the language automatically, then entering
9a27b06e 6138code compiled from a file whose name ends with @file{.mod} sets the
18fae2a8 6139working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} set
c2bbbb22
RP
6140the language automatically}, for further details.
6141
4eb4cf57 6142@node Deviations
93928b60 6143@subsubsection Deviations from standard Modula-2
c2bbbb22
RP
6144@cindex Modula-2, deviations from
6145
6146A few changes have been made to make Modula-2 programs easier to debug.
6147This is done primarily via loosening its type strictness:
6148
6149@itemize @bullet
e251e767 6150@item
c2bbbb22
RP
6151Unlike in standard Modula-2, pointer constants can be formed by
6152integers. This allows you to modify pointer variables during
6153debugging. (In standard Modula-2, the actual address contained in a
6154pointer variable is hidden from you; it can only be modified
6155through direct assignment to another pointer variable or expression that
6156returned a pointer.)
6157
e251e767 6158@item
c2bbbb22 6159C escape sequences can be used in strings and characters to represent
9a27b06e 6160non-printable characters. @value{GDBN} prints out strings with these
c2bbbb22
RP
6161escape sequences embedded. Single non-printable characters are
6162printed using the @samp{CHR(@var{nnn})} format.
6163
6164@item
6165The assignment operator (@code{:=}) returns the value of its right-hand
6166argument.
6167
6168@item
29a2b744 6169All built-in procedures both modify @emph{and} return their argument.
e251e767 6170@end itemize
c2bbbb22 6171
4eb4cf57 6172@node M2 Checks
93928b60 6173@subsubsection Modula-2 type and range checks
c2bbbb22
RP
6174@cindex Modula-2 checks
6175
6176@quotation
18fae2a8 6177@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
c2bbbb22
RP
6178range checking.
6179@end quotation
6180@c FIXME remove warning when type/range checks added
6181
18fae2a8 6182@value{GDBN} considers two Modula-2 variables type equivalent if:
c2bbbb22
RP
6183
6184@itemize @bullet
6185@item
6186They are of types that have been declared equivalent via a @code{TYPE
6187@var{t1} = @var{t2}} statement
6188
6189@item
6190They have been declared on the same line. (Note: This is true of the
6191GNU Modula-2 compiler, but it may not be true of other compilers.)
c2bbbb22
RP
6192@end itemize
6193
6194As long as type checking is enabled, any attempt to combine variables
6195whose types are not equivalent is an error.
6196
6197Range checking is done on all mathematical operations, assignment, array
29a2b744 6198index bounds, and all built-in functions and procedures.
c2bbbb22 6199
4eb4cf57 6200@node M2 Scope
c2bbbb22
RP
6201@subsubsection The scope operators @code{::} and @code{.}
6202@cindex scope
6203@kindex .
e94b4a2b 6204@cindex colon, doubled as scope operator
1041a570
RP
6205@ifinfo
6206@kindex colon-colon
ed447b95 6207@c Info cannot handle :: but TeX can.
1041a570
RP
6208@end ifinfo
6209@iftex
c2bbbb22 6210@kindex ::
1041a570 6211@end iftex
c2bbbb22
RP
6212
6213There are a few subtle differences between the Modula-2 scope operator
18fae2a8 6214(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
c2bbbb22
RP
6215similar syntax:
6216
6217@example
6218
6219@var{module} . @var{id}
6220@var{scope} :: @var{id}
c2bbbb22
RP
6221@end example
6222
6223@noindent
6224where @var{scope} is the name of a module or a procedure,
29a2b744
RP
6225@var{module} the name of a module, and @var{id} is any declared
6226identifier within your program, except another module.
c2bbbb22 6227
18fae2a8 6228Using the @code{::} operator makes @value{GDBN} search the scope
c2bbbb22 6229specified by @var{scope} for the identifier @var{id}. If it is not
9a27b06e 6230found in the specified scope, then @value{GDBN} searches all scopes
c2bbbb22
RP
6231enclosing the one specified by @var{scope}.
6232
18fae2a8 6233Using the @code{.} operator makes @value{GDBN} search the current scope for
c2bbbb22
RP
6234the identifier specified by @var{id} that was imported from the
6235definition module specified by @var{module}. With this operator, it is
6236an error if the identifier @var{id} was not imported from definition
6237module @var{module}, or if @var{id} is not an identifier in
6238@var{module}.
6239
4eb4cf57 6240@node GDB/M2
18fae2a8 6241@subsubsection @value{GDBN} and Modula-2
c2bbbb22 6242
18fae2a8 6243Some @value{GDBN} commands have little use when debugging Modula-2 programs.
c2bbbb22
RP
6244Five subcommands of @code{set print} and @code{show print} apply
6245specifically to C and C++: @samp{vtbl}, @samp{demangle},
6246@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
93918348 6247apply to C++, and the last to the C @code{union} type, which has no direct
c2bbbb22
RP
6248analogue in Modula-2.
6249
1041a570 6250The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
c2bbbb22
RP
6251while using any language, is not useful with Modula-2. Its
6252intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
6253created in Modula-2 as they can in C or C++. However, because an
6254address can be specified by an integral constant, the construct
1041a570 6255@samp{@{@var{type}@}@var{adrexp}} is still useful. (@pxref{Expressions, ,Expressions})
18fae2a8 6256
c2bbbb22 6257@cindex @code{#} in Modula-2
18fae2a8 6258In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
c2bbbb22 6259interpreted as the beginning of a comment. Use @code{<>} instead.
18fae2a8 6260
09934a2b 6261@end ifset
da374d80 6262@end ifclear
4eb4cf57
RP
6263
6264@node Symbols
70b88761
RP
6265@chapter Examining the Symbol Table
6266
6267The commands described in this section allow you to inquire about the
6268symbols (names of variables, functions and types) defined in your
6269program. This information is inherent in the text of your program and
18fae2a8
RP
6270does not change as your program executes. @value{GDBN} finds it in your
6271program's symbol table, in the file indicated when you started @value{GDBN}
93928b60
RP
6272(@pxref{File Options, ,Choosing files}), or by one of the
6273file-management commands (@pxref{Files, ,Commands to specify files}).
70b88761 6274
6c380b13
RP
6275@c FIXME! This might be intentionally specific to C and C++; if so, move
6276@c to someplace in C section of lang chapter.
6277@cindex symbol names
6278@cindex names of symbols
6279@cindex quoting names
6280Occasionally, you may need to refer to symbols that contain unusual
18fae2a8 6281characters, which @value{GDBN} ordinarily treats as word delimiters. The
6c380b13 6282most frequent case is in referring to static variables in other
93928b60 6283source files (@pxref{Variables,,Program variables}). File names
18fae2a8 6284are recorded in object files as debugging symbols, but @value{GDBN} would
6c380b13 6285ordinarily parse a typical file name, like @file{foo.c}, as the three words
18fae2a8 6286@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
6c380b13
RP
6287@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
6288
6289@example
6290p 'foo.c'::x
6291@end example
6292
6293@noindent
6294looks up the value of @code{x} in the scope of the file @file{foo.c}.
6295
70b88761
RP
6296@table @code
6297@item info address @var{symbol}
6298@kindex info address
6299Describe where the data for @var{symbol} is stored. For a register
6300variable, this says which register it is kept in. For a non-register
6301local variable, this prints the stack-frame offset at which the variable
6302is always stored.
6303
6304Note the contrast with @samp{print &@var{symbol}}, which does not work
6b51acad 6305at all for a register variable, and for a stack local variable prints
70b88761
RP
6306the exact address of the current instantiation of the variable.
6307
6308@item whatis @var{exp}
6309@kindex whatis
6310Print the data type of expression @var{exp}. @var{exp} is not
6311actually evaluated, and any side-effecting operations (such as
6312assignments or function calls) inside it do not take place.
1041a570 6313@xref{Expressions, ,Expressions}.
70b88761
RP
6314
6315@item whatis
6316Print the data type of @code{$}, the last value in the value history.
6317
6318@item ptype @var{typename}
6319@kindex ptype
6320Print a description of data type @var{typename}. @var{typename} may be
6321the name of a type, or for C code it may have the form
25f9d853
JK
6322@ifclear CONLY
6323@samp{class @var{class-name}},
6324@end ifclear
70b88761 6325@samp{struct @var{struct-tag}}, @samp{union @var{union-tag}} or
1041a570 6326@samp{enum @var{enum-tag}}.
70b88761
RP
6327
6328@item ptype @var{exp}
e0dacfd1 6329@itemx ptype
70b88761 6330Print a description of the type of expression @var{exp}. @code{ptype}
1041a570 6331differs from @code{whatis} by printing a detailed description, instead
ed447b95
RP
6332of just the name of the type.
6333
6334For example, for this variable declaration:
1041a570 6335
70b88761
RP
6336@example
6337struct complex @{double real; double imag;@} v;
6338@end example
1041a570 6339
70b88761 6340@noindent
ed447b95 6341the two commands give this output:
1041a570 6342
70b88761 6343@example
1041a570 6344@group
18fae2a8 6345(@value{GDBP}) whatis v
70b88761 6346type = struct complex
18fae2a8 6347(@value{GDBP}) ptype v
70b88761
RP
6348type = struct complex @{
6349 double real;
6350 double imag;
6351@}
1041a570 6352@end group
70b88761 6353@end example
1041a570 6354
e0dacfd1
RP
6355@noindent
6356As with @code{whatis}, using @code{ptype} without an argument refers to
6357the type of @code{$}, the last value in the value history.
70b88761
RP
6358
6359@item info types @var{regexp}
6360@itemx info types
e251e767 6361@kindex info types
70b88761
RP
6362Print a brief description of all types whose name matches @var{regexp}
6363(or all types in your program, if you supply no argument). Each
6364complete typename is matched as though it were a complete line; thus,
6365@samp{i type value} gives information on all types in your program whose
6366name includes the string @code{value}, but @samp{i type ^value$} gives
6367information only on types whose complete name is @code{value}.
6368
6369This command differs from @code{ptype} in two ways: first, like
6370@code{whatis}, it does not print a detailed description; second, it
6371lists all source files where a type is defined.
6372
6373@item info source
6374@kindex info source
6375Show the name of the current source file---that is, the source file for
c2bbbb22
RP
6376the function containing the current point of execution---and the language
6377it was written in.
70b88761
RP
6378
6379@item info sources
6380@kindex info sources
29a2b744 6381Print the names of all source files in your program for which there is
b80282d5
RP
6382debugging information, organized into two lists: files whose symbols
6383have already been read, and files whose symbols will be read when needed.
70b88761
RP
6384
6385@item info functions
6386@kindex info functions
6387Print the names and data types of all defined functions.
6388
6389@item info functions @var{regexp}
6390Print the names and data types of all defined functions
6391whose names contain a match for regular expression @var{regexp}.
6392Thus, @samp{info fun step} finds all functions whose names
6393include @code{step}; @samp{info fun ^step} finds those whose names
6394start with @code{step}.
6395
6396@item info variables
6397@kindex info variables
6398Print the names and data types of all variables that are declared
6399outside of functions (i.e., excluding local variables).
6400
6401@item info variables @var{regexp}
6402Print the names and data types of all variables (except for local
6403variables) whose names contain a match for regular expression
6404@var{regexp}.
6405
70b88761
RP
6406@ignore
6407This was never implemented.
6408@item info methods
6409@itemx info methods @var{regexp}
6410@kindex info methods
6411The @code{info methods} command permits the user to examine all defined
6412methods within C++ program, or (with the @var{regexp} argument) a
6413specific set of methods found in the various C++ classes. Many
6414C++ classes provide a large number of methods. Thus, the output
6415from the @code{ptype} command can be overwhelming and hard to use. The
6416@code{info-methods} command filters the methods, printing only those
6417which match the regular-expression @var{regexp}.
6418@end ignore
6419
d48da190
RP
6420@item maint print symbols @var{filename}
6421@itemx maint print psymbols @var{filename}
6422@itemx maint print msymbols @var{filename}
6423@kindex maint print symbols
440d9834 6424@cindex symbol dump
d48da190 6425@kindex maint print psymbols
440d9834
RP
6426@cindex partial symbol dump
6427Write a dump of debugging symbol data into the file @var{filename}.
18fae2a8 6428These commands are used to debug the @value{GDBN} symbol-reading code. Only
d48da190 6429symbols with debugging data are included. If you use @samp{maint print
18fae2a8 6430symbols}, @value{GDBN} includes all the symbols for which it has already
d48da190 6431collected full details: that is, @var{filename} reflects symbols for
18fae2a8 6432only those files whose symbols @value{GDBN} has read. You can use the
d48da190
RP
6433command @code{info sources} to find out which files these are. If you
6434use @samp{maint print psymbols} instead, the dump shows information about
18fae2a8
RP
6435symbols that @value{GDBN} only knows partially---that is, symbols defined in
6436files that @value{GDBN} has skimmed, but not yet read completely. Finally,
d48da190 6437@samp{maint print msymbols} dumps just the minimal symbol information
18fae2a8 6438required for each object file from which @value{GDBN} has read some symbols.
d55320a0
RP
6439@xref{Files, ,Commands to specify files}, for a discussion of how
6440@value{GDBN} reads symbols (in the description of @code{symbol-file}).
70b88761
RP
6441@end table
6442
4eb4cf57 6443@node Altering
70b88761
RP
6444@chapter Altering Execution
6445
29a2b744 6446Once you think you have found an error in your program, you might want to
70b88761
RP
6447find out for certain whether correcting the apparent error would lead to
6448correct results in the rest of the run. You can find the answer by
18fae2a8 6449experiment, using the @value{GDBN} features for altering execution of the
70b88761
RP
6450program.
6451
6452For example, you can store new values into variables or memory
1d7c3357 6453locations,
18fae2a8 6454@ifclear BARETARGET
1d7c3357 6455give your program a signal, restart it
18fae2a8 6456@end ifclear
1d7c3357
RP
6457@ifset BARETARGET
6458restart your program
6459@end ifset
6460at a different address, or even return prematurely from a function to
6461its caller.
18fae2a8 6462
18fae2a8 6463@menu
ed447b95
RP
6464* Assignment:: Assignment to variables
6465* Jumping:: Continuing at a different address
1d7c3357 6466@ifclear BARETARGET
ed447b95 6467* Signaling:: Giving your program a signal
18fae2a8 6468@end ifclear
b0157555 6469
ed447b95
RP
6470* Returning:: Returning from a function
6471* Calling:: Calling your program's functions
6472* Patching:: Patching your program
18fae2a8 6473@end menu
70b88761 6474
4eb4cf57 6475@node Assignment
93928b60 6476@section Assignment to variables
70b88761
RP
6477
6478@cindex assignment
6479@cindex setting variables
6480To alter the value of a variable, evaluate an assignment expression.
1041a570 6481@xref{Expressions, ,Expressions}. For example,
70b88761
RP
6482
6483@example
6484print x=4
6485@end example
6486
6487@noindent
1041a570 6488stores the value 4 into the variable @code{x}, and then prints the
4eb4cf57 6489value of the assignment expression (which is 4).
18fae2a8
RP
6490@ifclear CONLY
6491@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
4eb4cf57 6492information on operators in supported languages.
18fae2a8 6493@end ifclear
70b88761 6494
70b88761
RP
6495@kindex set variable
6496@cindex variables, setting
6497If you are not interested in seeing the value of the assignment, use the
6498@code{set} command instead of the @code{print} command. @code{set} is
93928b60
RP
6499really the same as @code{print} except that the expression's value is
6500not printed and is not put in the value history (@pxref{Value History,
6501,Value history}). The expression is evaluated only for its effects.
70b88761
RP
6502
6503If the beginning of the argument string of the @code{set} command
6504appears identical to a @code{set} subcommand, use the @code{set
6505variable} command instead of just @code{set}. This command is identical
ed447b95
RP
6506to @code{set} except for its lack of subcommands. For example, if
6507your program has a variable @code{width}, you get
6508an error if you try to set a new value with just @samp{set width=13},
6509because @value{GDBN} has the command @code{set width}:
1041a570 6510
70b88761 6511@example
18fae2a8 6512(@value{GDBP}) whatis width
70b88761 6513type = double
18fae2a8 6514(@value{GDBP}) p width
70b88761 6515$4 = 13
18fae2a8 6516(@value{GDBP}) set width=47
70b88761
RP
6517Invalid syntax in expression.
6518@end example
1041a570 6519
70b88761 6520@noindent
ed447b95
RP
6521The invalid expression, of course, is @samp{=47}. In
6522order to actually set the program's variable @code{width}, use
1041a570 6523
70b88761 6524@example
18fae2a8 6525(@value{GDBP}) set var width=47
70b88761
RP
6526@end example
6527
18fae2a8 6528@value{GDBN} allows more implicit conversions in assignments than C; you can
1041a570 6529freely store an integer value into a pointer variable or vice versa,
ed447b95 6530and you can convert any structure to any other structure that is the
1041a570 6531same length or shorter.
e251e767 6532@comment FIXME: how do structs align/pad in these conversions?
70b88761
RP
6533@comment /pesch@cygnus.com 18dec1990
6534
6535To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
6536construct to generate a value of specified type at a specified address
1041a570 6537(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
70b88761
RP
6538to memory location @code{0x83040} as an integer (which implies a certain size
6539and representation in memory), and
6540
6541@example
6542set @{int@}0x83040 = 4
6543@end example
6544
6545@noindent
6546stores the value 4 into that memory location.
6547
4eb4cf57 6548@node Jumping
93928b60 6549@section Continuing at a different address
70b88761 6550
29a2b744 6551Ordinarily, when you continue your program, you do so at the place where
70b88761
RP
6552it stopped, with the @code{continue} command. You can instead continue at
6553an address of your own choosing, with the following commands:
6554
6555@table @code
6556@item jump @var{linespec}
6557@kindex jump
9a27b06e 6558Resume execution at line @var{linespec}. Execution stops again
29a2b744 6559immediately if there is a breakpoint there. @xref{List, ,Printing
93928b60 6560source lines}, for a description of the different forms of
29a2b744 6561@var{linespec}.
70b88761
RP
6562
6563The @code{jump} command does not change the current stack frame, or
6564the stack pointer, or the contents of any memory location or any
6565register other than the program counter. If line @var{linespec} is in
6566a different function from the one currently executing, the results may
6567be bizarre if the two functions expect different patterns of arguments or
6568of local variables. For this reason, the @code{jump} command requests
6569confirmation if the specified line is not in the function currently
6570executing. However, even bizarre results are predictable if you are
29a2b744 6571well acquainted with the machine-language code of your program.
70b88761
RP
6572
6573@item jump *@var{address}
6574Resume execution at the instruction at address @var{address}.
6575@end table
6576
6577You can get much the same effect as the @code{jump} command by storing a
6578new value into the register @code{$pc}. The difference is that this
29a2b744 6579does not start your program running; it only changes the address where it
9a27b06e 6580@emph{will} run when you continue. For example,
70b88761
RP
6581
6582@example
6583set $pc = 0x485
6584@end example
6585
6586@noindent
9a27b06e 6587makes the next @code{continue} command or stepping command execute at
1041a570 6588address @code{0x485}, rather than at the address where your program stopped.
93928b60 6589@xref{Continuing and Stepping, ,Continuing and stepping}.
70b88761
RP
6590
6591The most common occasion to use the @code{jump} command is to back up,
6592perhaps with more breakpoints set, over a portion of a program that has
6593already executed, in order to examine its execution in more detail.
6594
18fae2a8 6595@ifclear BARETARGET
70b88761 6596@c @group
ed447b95
RP
6597@node Signaling
6598@section Giving your program a signal
70b88761
RP
6599
6600@table @code
fd32a1dd 6601@item signal @var{signal}
70b88761 6602@kindex signal
6b51acad 6603Resume execution where your program stopped, but immediately give it the
fd32a1dd
JK
6604signal @var{signal}. @var{signal} can be the name or the number of a
6605signal. For example, on many systems @code{signal 2} and @code{signal
6606SIGINT} are both ways of sending an interrupt signal.
70b88761 6607
fd32a1dd 6608Alternatively, if @var{signal} is zero, continue execution without
29a2b744 6609giving a signal. This is useful when your program stopped on account of
70b88761
RP
6610a signal and would ordinary see the signal when resumed with the
6611@code{continue} command; @samp{signal 0} causes it to resume without a
6612signal.
6613
6614@code{signal} does not repeat when you press @key{RET} a second time
6615after executing the command.
6616@end table
6617@c @end group
fd32a1dd
JK
6618
6619Invoking the @code{signal} command is not the same as invoking the
6620@code{kill} utility from the shell. Sending a signal with @code{kill}
6621causes @value{GDBN} to decide what to do with the signal depending on
6622the signal handling tables (@pxref{Signals}). The @code{signal} command
6623passes the signal directly to your program.
6624
18fae2a8 6625@end ifclear
70b88761 6626
4eb4cf57 6627@node Returning
93928b60 6628@section Returning from a function
70b88761
RP
6629
6630@table @code
6631@item return
6632@itemx return @var{expression}
6633@cindex returning from a function
6634@kindex return
6635You can cancel execution of a function call with the @code{return}
6636command. If you give an
6637@var{expression} argument, its value is used as the function's return
e251e767 6638value.
70b88761
RP
6639@end table
6640
18fae2a8 6641When you use @code{return}, @value{GDBN} discards the selected stack frame
70b88761
RP
6642(and all frames within it). You can think of this as making the
6643discarded frame return prematurely. If you wish to specify a value to
6644be returned, give that value as the argument to @code{return}.
6645
29a2b744 6646This pops the selected stack frame (@pxref{Selection, ,Selecting a
93928b60 6647frame}), and any other frames inside of it, leaving its caller as the
29a2b744
RP
6648innermost remaining frame. That frame becomes selected. The
6649specified value is stored in the registers used for returning values
6650of functions.
70b88761
RP
6651
6652The @code{return} command does not resume execution; it leaves the
6653program stopped in the state that would exist if the function had just
1041a570 6654returned. In contrast, the @code{finish} command (@pxref{Continuing
93928b60 6655and Stepping, ,Continuing and stepping}) resumes execution until the
1041a570 6656selected stack frame returns naturally.
70b88761 6657
4eb4cf57 6658@node Calling
ed447b95 6659@section Calling program functions
70b88761
RP
6660
6661@cindex calling functions
6662@kindex call
6663@table @code
6664@item call @var{expr}
6665Evaluate the expression @var{expr} without displaying @code{void}
6666returned values.
6667@end table
6668
6669You can use this variant of the @code{print} command if you want to
6670execute a function from your program, but without cluttering the output
6671with @code{void} returned values. The result is printed and saved in
6672the value history, if it is not void.
6673
4eb4cf57 6674@node Patching
ed447b95 6675@section Patching programs
c338a2fd
RP
6676@cindex patching binaries
6677@cindex writing into executables
1d7c3357 6678@ifclear BARETARGET
c338a2fd 6679@cindex writing into corefiles
1d7c3357 6680@end ifclear
1041a570 6681
18fae2a8 6682By default, @value{GDBN} opens the file containing your program's executable
1d7c3357
RP
6683code
6684@ifclear BARETARGET
6685(or the corefile)
6686@end ifclear
6687read-only. This prevents accidental alterations
c338a2fd
RP
6688to machine code; but it also prevents you from intentionally patching
6689your program's binary.
6690
6691If you'd like to be able to patch the binary, you can specify that
6692explicitly with the @code{set write} command. For example, you might
6693want to turn on internal debugging flags, or even to make emergency
e251e767 6694repairs.
c338a2fd
RP
6695
6696@table @code
6697@item set write on
6698@itemx set write off
6699@kindex set write
9a27b06e 6700If you specify @samp{set write on}, @value{GDBN} opens executable
18fae2a8 6701@ifclear BARETARGET
0f153e74 6702and core
18fae2a8 6703@end ifclear
0f153e74 6704files for both reading and writing; if you specify @samp{set write
9a27b06e 6705off} (the default), @value{GDBN} opens them read-only.
c338a2fd 6706
1d7c3357
RP
6707If you have already loaded a file, you must load it again (using the
6708@code{exec-file}
6709@ifclear BARETARGET
6710or @code{core-file}
6711@end ifclear
6712command) after changing @code{set write}, for your new setting to take
6713effect.
c338a2fd
RP
6714
6715@item show write
7d7ff5f6 6716@kindex show write
0f153e74 6717Display whether executable files
18fae2a8 6718@ifclear BARETARGET
0f153e74 6719and core files
18fae2a8 6720@end ifclear
9a27b06e 6721are opened for writing as well as reading.
c338a2fd
RP
6722@end table
6723
18fae2a8 6724@node GDB Files
93918348 6725@chapter @value{GDBN} Files
70b88761 6726
18fae2a8 6727@value{GDBN} needs to know the file name of the program to be debugged, both in
4eb4cf57 6728order to read its symbol table and in order to start your program.
18fae2a8 6729@ifclear BARETARGET
93918348
RP
6730To debug a core dump of a previous run, you must also tell @value{GDBN}
6731the name of the core dump file.
18fae2a8 6732@end ifclear
1041a570 6733
70b88761 6734@menu
ed447b95
RP
6735* Files:: Commands to specify files
6736* Symbol Errors:: Errors reading symbol files
70b88761
RP
6737@end menu
6738
4eb4cf57 6739@node Files
93928b60 6740@section Commands to specify files
70b88761 6741@cindex symbol table
70b88761 6742
18fae2a8 6743@ifclear BARETARGET
0f153e74 6744@cindex core dump file
1041a570 6745The usual way to specify executable and core dump file names is with
ed447b95 6746the command arguments given when you start @value{GDBN} (@pxref{Invocation,
18fae2a8
RP
6747,Getting In and Out of @value{GDBN}}.
6748@end ifclear
6749@ifset BARETARGET
4eb4cf57 6750The usual way to specify an executable file name is with
18fae2a8
RP
6751the command argument given when you start @value{GDBN}, (@pxref{Invocation,
6752,Getting In and Out of @value{GDBN}}.
6753@end ifset
70b88761
RP
6754
6755Occasionally it is necessary to change to a different file during a
93918348
RP
6756@value{GDBN} session. Or you may run @value{GDBN} and forget to specify
6757a file you want to use. In these situations the @value{GDBN} commands
6758to specify new files are useful.
70b88761
RP
6759
6760@table @code
6761@item file @var{filename}
6762@cindex executable file
6763@kindex file
6764Use @var{filename} as the program to be debugged. It is read for its
6765symbols and for the contents of pure memory. It is also the program
6766executed when you use the @code{run} command. If you do not specify a
93918348 6767directory and the file is not found in the @value{GDBN} working directory, @value{GDBN}
1041a570
RP
6768uses the environment variable @code{PATH} as a list of directories to
6769search, just as the shell does when looking for a program to run. You
18fae2a8 6770can change the value of this variable, for both @value{GDBN} and your program,
1041a570 6771using the @code{path} command.
70b88761 6772
9a27b06e
RP
6773On systems with memory-mapped files, an auxiliary file
6774@file{@var{filename}.syms} may hold symbol table information for
6775@var{filename}. If so, @value{GDBN} maps in the symbol table from
14d01801 6776@file{@var{filename}.syms}, starting up more quickly. See the
9a27b06e
RP
6777descriptions of the options @samp{-mapped} and @samp{-readnow}
6778(available on the command line, and with the commands @code{file},
6779@code{symbol-file}, or @code{add-symbol-file}), for more information.
14d01801 6780
e0dacfd1 6781@item file
18fae2a8 6782@code{file} with no argument makes @value{GDBN} discard any information it
70b88761
RP
6783has on both executable file and the symbol table.
6784
e0dacfd1 6785@item exec-file @r{[} @var{filename} @r{]}
70b88761
RP
6786@kindex exec-file
6787Specify that the program to be run (but not the symbol table) is found
9a27b06e 6788in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
29a2b744 6789if necessary to locate your program. Omitting @var{filename} means to
e0dacfd1 6790discard information on the executable file.
70b88761 6791
e0dacfd1 6792@item symbol-file @r{[} @var{filename} @r{]}
70b88761
RP
6793@kindex symbol-file
6794Read symbol table information from file @var{filename}. @code{PATH} is
6795searched when necessary. Use the @code{file} command to get both symbol
6796table and program to run from the same file.
6797
93918348 6798@code{symbol-file} with no argument clears out @value{GDBN} information on your
70b88761
RP
6799program's symbol table.
6800
18fae2a8 6801The @code{symbol-file} command causes @value{GDBN} to forget the contents of its
70b88761
RP
6802convenience variables, the value history, and all breakpoints and
6803auto-display expressions. This is because they may contain pointers to
6804the internal data recording symbols and data types, which are part of
18fae2a8 6805the old symbol table data being discarded inside @value{GDBN}.
70b88761 6806
9a27b06e 6807@code{symbol-file} does not repeat if you press @key{RET} again after
70b88761
RP
6808executing it once.
6809
9a27b06e
RP
6810When @value{GDBN} is configured for a particular environment, it
6811understands debugging information in whatever format is the standard
14d01801
RP
6812generated for that environment; you may use either a GNU compiler, or
6813other compilers that adhere to the local conventions. Best results are
18fae2a8 6814usually obtained from GNU compilers; for example, using @code{@value{GCC}}
14d01801
RP
6815you can generate debugging information for optimized code.
6816
70b88761 6817On some kinds of object files, the @code{symbol-file} command does not
14d01801 6818normally read the symbol table in full right away. Instead, it scans
70b88761
RP
6819the symbol table quickly to find which source files and which symbols
6820are present. The details are read later, one source file at a time,
1041a570 6821as they are needed.
70b88761 6822
18fae2a8 6823The purpose of this two-stage reading strategy is to make @value{GDBN} start up
1041a570
RP
6824faster. For the most part, it is invisible except for occasional
6825pauses while the symbol table details for a particular source file are
6826being read. (The @code{set verbose} command can turn these pauses
93928b60
RP
6827into messages if desired. @xref{Messages/Warnings, ,Optional warnings
6828and messages}.)
70b88761 6829
8c69096b
RP
6830We have not implemented the two-stage strategy for COFF yet. When the
6831symbol table is stored in COFF format, @code{symbol-file} reads the
6832symbol table data in full right away.
70b88761 6833
95d5ceb9
RP
6834@item symbol-file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
6835@itemx file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
14d01801
RP
6836@kindex readnow
6837@cindex reading symbols immediately
6838@cindex symbols, reading immediately
6839@kindex mapped
6840@cindex memory-mapped symbol file
38962738 6841@cindex saving symbol table
18fae2a8 6842You can override the @value{GDBN} two-stage strategy for reading symbol
95d5ceb9 6843tables by using the @samp{-readnow} option with any of the commands that
18fae2a8 6844load symbol table information, if you want to be sure @value{GDBN} has the
14d01801
RP
6845entire symbol table available.
6846
18fae2a8 6847@ifclear BARETARGET
14d01801 6848If memory-mapped files are available on your system through the
95d5ceb9 6849@code{mmap} system call, you can use another option, @samp{-mapped}, to
18fae2a8 6850cause @value{GDBN} to write the symbols for your program into a reusable
9a27b06e 6851file. Future @value{GDBN} debugging sessions map in symbol information
93918348 6852from this auxiliary symbol file (if the program has not changed), rather
77b46d13
JG
6853than spending time reading the symbol table from the executable
6854program. Using the @samp{-mapped} option has the same effect as
18fae2a8 6855starting @value{GDBN} with the @samp{-mapped} command-line option.
14d01801 6856
95d5ceb9 6857You can use both options together, to make sure the auxiliary symbol
14d01801
RP
6858file has all the symbol information for your program.
6859
6860The auxiliary symbol file for a program called @var{myprog} is called
6861@samp{@var{myprog}.syms}. Once this file exists (so long as it is newer
9a27b06e 6862than the corresponding executable), @value{GDBN} always attempts to use
14d01801
RP
6863it when you debug @var{myprog}; no special options or commands are
6864needed.
93918348
RP
6865
6866The @file{.syms} file is specific to the host machine where you run
34ae25cd 6867@value{GDBN}. It holds an exact image of the internal @value{GDBN}
93918348
RP
6868symbol table. It cannot be shared across multiple host platforms.
6869
14d01801
RP
6870@c FIXME: for now no mention of directories, since this seems to be in
6871@c flux. 13mar1992 status is that in theory GDB would look either in
6872@c current dir or in same dir as myprog; but issues like competing
6873@c GDB's, or clutter in system dirs, mean that in practice right now
6874@c only current dir is used. FFish says maybe a special GDB hierarchy
6875@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
6876@c files.
70b88761 6877
e0dacfd1 6878@item core-file @r{[} @var{filename} @r{]}
70b88761
RP
6879@kindex core
6880@kindex core-file
6881Specify the whereabouts of a core dump file to be used as the ``contents
6882of memory''. Traditionally, core files contain only some parts of the
18fae2a8 6883address space of the process that generated them; @value{GDBN} can access the
70b88761
RP
6884executable file itself for other parts.
6885
6886@code{core-file} with no argument specifies that no core file is
6887to be used.
6888
6889Note that the core file is ignored when your program is actually running
18fae2a8 6890under @value{GDBN}. So, if you have been running your program and you wish to
70b88761
RP
6891debug a core file instead, you must kill the subprocess in which the
6892program is running. To do this, use the @code{kill} command
93928b60 6893(@pxref{Kill Process, ,Killing the child process}).
18fae2a8 6894@end ifclear
70b88761
RP
6895
6896@item load @var{filename}
6897@kindex load
18fae2a8 6898@ifset GENERIC
70b88761 6899Depending on what remote debugging facilities are configured into
18fae2a8 6900@value{GDBN}, the @code{load} command may be available. Where it exists, it
70b88761
RP
6901is meant to make @var{filename} (an executable) available for debugging
6902on the remote system---by downloading, or dynamic linking, for example.
93918348 6903@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
70b88761
RP
6904the @code{add-symbol-file} command.
6905
ed447b95
RP
6906If your @value{GDBN} does not have a @code{load} command, attempting to
6907execute it gets the error message ``@code{You can't do that when your
6908target is @dots{}}''
18fae2a8 6909@end ifset
70b88761 6910
99d1da6a 6911The file is loaded at whatever address is specified in the executable.
22b5dba5
RP
6912For some object file formats, you can specify the load address when you
6913link the program; for other formats, like a.out, the object file format
6914specifies a fixed address.
6915@c FIXME! This would be a good place for an xref to the GNU linker doc.
99d1da6a 6916
18fae2a8 6917@ifset VXWORKS
9a27b06e 6918On VxWorks, @code{load} links @var{filename} dynamically on the
18fae2a8
RP
6919current target system as well as adding its symbols in @value{GDBN}.
6920@end ifset
70b88761 6921
a64a6c2b 6922@ifset I960
70b88761 6923@cindex download to Nindy-960
9a27b06e
RP
6924With the Nindy interface to an Intel 960 board, @code{load}
6925downloads @var{filename} to the 960 as well as adding its symbols in
18fae2a8
RP
6926@value{GDBN}.
6927@end ifset
70b88761 6928
a64a6c2b 6929@ifset H8
1d7c3357
RP
6930@cindex download to H8/300 or H8/500
6931@cindex H8/300 or H8/500 download
a64a6c2b
RP
6932@cindex download to Hitachi SH
6933@cindex Hitachi SH download
72545cc6 6934When you select remote debugging to a Hitachi SH, H8/300, or H8/500 board
a64a6c2b 6935(@pxref{Hitachi Remote,,@value{GDBN} and Hitachi Microprocessors}),
1d7c3357
RP
6936the @code{load} command downloads your program to the Hitachi board and also
6937opens it as the current executable target for @value{GDBN} on your host
6938(like the @code{file} command).
18fae2a8 6939@end ifset
c7cb8acb 6940
9a27b06e 6941@code{load} does not repeat if you press @key{RET} again after using it.
70b88761 6942
18fae2a8 6943@ifclear BARETARGET
70b88761 6944@item add-symbol-file @var{filename} @var{address}
95d5ceb9 6945@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
70b88761
RP
6946@kindex add-symbol-file
6947@cindex dynamic linking
6948The @code{add-symbol-file} command reads additional symbol table information
b80282d5 6949from the file @var{filename}. You would use this command when @var{filename}
70b88761
RP
6950has been dynamically loaded (by some other means) into the program that
6951is running. @var{address} should be the memory address at which the
18fae2a8 6952file has been loaded; @value{GDBN} cannot figure this out for itself.
d55320a0 6953You can specify @var{address} as an expression.
70b88761
RP
6954
6955The symbol table of the file @var{filename} is added to the symbol table
6956originally read with the @code{symbol-file} command. You can use the
6957@code{add-symbol-file} command any number of times; the new symbol data thus
6958read keeps adding to the old. To discard all old symbol data instead,
e251e767 6959use the @code{symbol-file} command.
70b88761 6960
9a27b06e 6961@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
70b88761 6962
95d5ceb9 6963You can use the @samp{-mapped} and @samp{-readnow} options just as with
18fae2a8 6964the @code{symbol-file} command, to change how @value{GDBN} manages the symbol
0f153e74 6965table information for @var{filename}.
18fae2a8 6966@end ifclear
95d5ceb9 6967
70b88761
RP
6968@item info files
6969@itemx info target
6970@kindex info files
6971@kindex info target
1041a570 6972@code{info files} and @code{info target} are synonymous; both print
1d7c3357
RP
6973the current target (@pxref{Targets, ,Specifying a Debugging Target}),
6974including the
6975@ifclear BARETARGET
6976names of the executable and core dump files
6977@end ifclear
6978@ifset BARETARGET
6979name of the executable file
6980@end ifset
6981currently in use by @value{GDBN}, and the files from which symbols were
a4ae3702 6982loaded. The command @code{help target} lists all possible targets
1d7c3357 6983rather than current ones.
70b88761
RP
6984@end table
6985
6986All file-specifying commands allow both absolute and relative file names
b550c03a 6987as arguments. @value{GDBN} always converts the file name to an absolute file
70b88761
RP
6988name and remembers it that way.
6989
18fae2a8 6990@ifclear BARETARGET
70b88761 6991@cindex shared libraries
9a27b06e 6992@value{GDBN} supports SunOS, SVr4, Irix 5, and IBM RS/6000 shared libraries.
18fae2a8 6993@value{GDBN} automatically loads symbol definitions from shared libraries
77b46d13 6994when you use the @code{run} command, or when you examine a core file.
9a27b06e 6995(Before you issue the @code{run} command, @value{GDBN} does not understand
77b46d13
JG
6996references to a function in a shared library, however---unless you are
6997debugging a core file).
9a27b06e
RP
6998@c FIXME: some @value{GDBN} release may permit some refs to undef
6999@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
7000@c FIXME...lib; check this from time to time when updating manual
70b88761
RP
7001
7002@table @code
70b88761
RP
7003@item info share
7004@itemx info sharedlibrary
7005@kindex info sharedlibrary
7006@kindex info share
c338a2fd 7007Print the names of the shared libraries which are currently loaded.
70b88761 7008
c338a2fd
RP
7009@item sharedlibrary @var{regex}
7010@itemx share @var{regex}
7011@kindex sharedlibrary
7012@kindex share
6b51acad
RP
7013This is an obsolescent command; you can use it to explicitly load shared
7014object library symbols for files matching a Unix regular expression, but
9a27b06e 7015as with files loaded automatically, it only loads shared libraries
6b51acad
RP
7016required by your program for a core file or after typing @code{run}. If
7017@var{regex} is omitted all shared libraries required by your program are
7018loaded.
c338a2fd 7019@end table
18fae2a8 7020@end ifclear
70b88761 7021
4eb4cf57 7022@node Symbol Errors
93928b60 7023@section Errors reading symbol files
1041a570 7024
9a27b06e 7025While reading a symbol file, @value{GDBN} occasionally encounters problems,
1041a570 7026such as symbol types it does not recognize, or known bugs in compiler
18fae2a8 7027output. By default, @value{GDBN} does not notify you of such problems, since
1041a570
RP
7028they are relatively common and primarily of interest to people
7029debugging compilers. If you are interested in seeing information
18fae2a8 7030about ill-constructed symbol tables, you can either ask @value{GDBN} to print
b80282d5 7031only one message about each such type of problem, no matter how many
18fae2a8 7032times the problem occurs; or you can ask @value{GDBN} to print more messages,
1041a570 7033to see how many times the problems occur, with the @code{set
93928b60
RP
7034complaints} command (@pxref{Messages/Warnings, ,Optional warnings and
7035messages}).
70b88761 7036
d55320a0 7037The messages currently printed, and their meanings, include:
70b88761
RP
7038
7039@table @code
7040@item inner block not inside outer block in @var{symbol}
7041
7042The symbol information shows where symbol scopes begin and end
7043(such as at the start of a function or a block of statements). This
7044error indicates that an inner scope block is not fully contained
e251e767 7045in its outer scope blocks.
70b88761 7046
18fae2a8 7047@value{GDBN} circumvents the problem by treating the inner block as if it had
70b88761
RP
7048the same scope as the outer block. In the error message, @var{symbol}
7049may be shown as ``@code{(don't know)}'' if the outer block is not a
7050function.
7051
7052@item block at @var{address} out of order
7053
e251e767 7054The symbol information for symbol scope blocks should occur in
70b88761 7055order of increasing addresses. This error indicates that it does not
e251e767 7056do so.
70b88761 7057
9a27b06e 7058@value{GDBN} does not circumvent this problem, and has trouble
ed447b95
RP
7059locating symbols in the source file whose symbols it is reading. (You
7060can often determine what source file is affected by specifying
93928b60
RP
7061@code{set verbose on}. @xref{Messages/Warnings, ,Optional warnings and
7062messages}.)
70b88761
RP
7063
7064@item bad block start address patched
7065
7066The symbol information for a symbol scope block has a start address
7067smaller than the address of the preceding source line. This is known
e251e767 7068to occur in the SunOS 4.1.1 (and earlier) C compiler.
70b88761 7069
18fae2a8 7070@value{GDBN} circumvents the problem by treating the symbol scope block as
70b88761
RP
7071starting on the previous source line.
7072
70b88761
RP
7073@item bad string table offset in symbol @var{n}
7074
7075@cindex foo
7076Symbol number @var{n} contains a pointer into the string table which is
e251e767 7077larger than the size of the string table.
70b88761 7078
18fae2a8 7079@value{GDBN} circumvents the problem by considering the symbol to have the
70b88761
RP
7080name @code{foo}, which may cause other problems if many symbols end up
7081with this name.
7082
7083@item unknown symbol type @code{0x@var{nn}}
7084
18fae2a8 7085The symbol information contains new data types that @value{GDBN} does not yet
70b88761 7086know how to read. @code{0x@var{nn}} is the symbol type of the misunderstood
e251e767 7087information, in hexadecimal.
70b88761 7088
18fae2a8 7089@value{GDBN} circumvents the error by ignoring this symbol information. This
9a27b06e
RP
7090usually allows you to debug your program, though certain symbols
7091are not accessible. If you encounter such a problem and feel like
18fae2a8 7092debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint on
70b88761
RP
7093@code{complain}, then go up to the function @code{read_dbx_symtab} and
7094examine @code{*bufp} to see the symbol.
7095
7096@item stub type has NULL name
1d7c3357
RP
7097@value{GDBN} could not find the full definition for
7098@ifclear CONLY
7099a struct or class.
7100@end ifclear
7101@ifset CONLY
7102a struct.
7103@end ifset
70b88761 7104
1d7c3357 7105@ifclear CONLY
440d9834 7106@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
70b88761
RP
7107
7108The symbol information for a C++ member function is missing some
440d9834
RP
7109information that recent versions of the compiler should have output
7110for it.
1d7c3357 7111@end ifclear
70b88761 7112
440d9834 7113@item info mismatch between compiler and debugger
70b88761 7114
18fae2a8 7115@value{GDBN} could not parse a type specification output by the compiler.
70b88761
RP
7116@end table
7117
4eb4cf57 7118@node Targets
e251e767 7119@chapter Specifying a Debugging Target
70b88761
RP
7120@cindex debugging target
7121@kindex target
1041a570 7122
cedaf8bc 7123A @dfn{target} is the execution environment occupied by your program.
18fae2a8
RP
7124@ifclear BARETARGET
7125Often, @value{GDBN} runs in the same host environment as your program; in
1041a570
RP
7126that case, the debugging target is specified as a side effect when you
7127use the @code{file} or @code{core} commands. When you need more
18fae2a8 7128flexibility---for example, running @value{GDBN} on a physically separate
1041a570 7129host, or controlling a standalone system over a serial port or a
0f153e74 7130realtime system over a TCP/IP connection---you
18fae2a8
RP
7131@end ifclear
7132@ifset BARETARGET
0f153e74 7133You
18fae2a8 7134@end ifset
0f153e74 7135can use the @code{target} command to specify one of the target types
93928b60
RP
7136configured for @value{GDBN} (@pxref{Target Commands, ,Commands for managing
7137targets}).
70b88761
RP
7138
7139@menu
ed447b95
RP
7140* Active Targets:: Active targets
7141* Target Commands:: Commands for managing targets
7142* Remote:: Remote debugging
70b88761
RP
7143@end menu
7144
4eb4cf57 7145@node Active Targets
93928b60 7146@section Active targets
70b88761
RP
7147@cindex stacking targets
7148@cindex active targets
7149@cindex multiple targets
7150
18fae2a8 7151@ifclear BARETARGET
cedaf8bc 7152There are three classes of targets: processes, core files, and
18fae2a8 7153executable files. @value{GDBN} can work concurrently on up to three active
cedaf8bc
RP
7154targets, one in each class. This allows you to (for example) start a
7155process and inspect its activity without abandoning your work on a core
7156file.
70b88761 7157
ed447b95 7158For example, if you execute @samp{gdb a.out}, then the executable file
cedaf8bc
RP
7159@code{a.out} is the only active target. If you designate a core file as
7160well---presumably from a prior run that crashed and coredumped---then
9a27b06e 7161@value{GDBN} has two active targets and uses them in tandem, looking
cedaf8bc
RP
7162first in the corefile target, then in the executable file, to satisfy
7163requests for memory addresses. (Typically, these two classes of target
29a2b744 7164are complementary, since core files contain only a program's
cedaf8bc
RP
7165read-write memory---variables and so on---plus machine status, while
7166executable files contain only the program text and initialized data.)
18fae2a8 7167@end ifclear
cedaf8bc
RP
7168
7169When you type @code{run}, your executable file becomes an active process
18fae2a8 7170target as well. When a process target is active, all @value{GDBN} commands
0f153e74 7171requesting memory addresses refer to that target; addresses in an
18fae2a8 7172@ifclear BARETARGET
0f153e74 7173active core file or
18fae2a8 7174@end ifclear
0f153e74 7175executable file target are obscured while the process
cedaf8bc
RP
7176target is active.
7177
18fae2a8 7178@ifset BARETARGET
4eb4cf57 7179Use the @code{exec-file} command to select a
93928b60
RP
7180new executable target (@pxref{Files, ,Commands to specify
7181files}).
18fae2a8
RP
7182@end ifset
7183@ifclear BARETARGET
1041a570 7184Use the @code{core-file} and @code{exec-file} commands to select a
93928b60
RP
7185new core file or executable target (@pxref{Files, ,Commands to specify
7186files}). To specify as a target a process that is already running, use
1041a570 7187the @code{attach} command (@pxref{Attach, ,Debugging an
93928b60 7188already-running process}).
18fae2a8 7189@end ifclear
70b88761 7190
4eb4cf57 7191@node Target Commands
93928b60 7192@section Commands for managing targets
70b88761
RP
7193
7194@table @code
7195@item target @var{type} @var{parameters}
1d7c3357
RP
7196Connects the @value{GDBN} host environment to a target
7197@ifset BARETARGET
7198machine.
7199@end ifset
7200@ifclear BARETARGET
7201machine or process. A target is typically a protocol for talking to
7202debugging facilities. You use the argument @var{type} to specify the
7203type or protocol of the target machine.
70b88761
RP
7204
7205Further @var{parameters} are interpreted by the target protocol, but
7206typically include things like device names or host names to connect
e251e767 7207with, process numbers, and baud rates.
1d7c3357 7208@end ifclear
70b88761 7209
9a27b06e 7210The @code{target} command does not repeat if you press @key{RET} again
70b88761
RP
7211after executing the command.
7212
7213@item help target
7214@kindex help target
7215Displays the names of all targets available. To display targets
7216currently selected, use either @code{info target} or @code{info files}
93928b60 7217(@pxref{Files, ,Commands to specify files}).
70b88761
RP
7218
7219@item help target @var{name}
7220Describe a particular target, including any parameters necessary to
7221select it.
7222@end table
7223
c7cb8acb 7224Here are some common targets (available, or not, depending on the GDB
70b88761
RP
7225configuration):
7226
7227@table @code
fe715d06 7228@item target exec @var{program}
70b88761 7229@kindex target exec
fe715d06
RP
7230An executable file. @samp{target exec @var{program}} is the same as
7231@samp{exec-file @var{program}}.
70b88761 7232
1d7c3357 7233@ifclear BARETARGET
70b88761
RP
7234@item target core @var{filename}
7235@kindex target core
7236A core dump file. @samp{target core @var{filename}} is the same as
7237@samp{core-file @var{filename}}.
1d7c3357 7238@end ifclear
70b88761 7239
18fae2a8 7240@ifset REMOTESTUB
70b88761
RP
7241@item target remote @var{dev}
7242@kindex target remote
c7cb8acb 7243Remote serial target in GDB-specific protocol. The argument @var{dev}
70b88761 7244specifies what serial device to use for the connection (e.g.
93928b60 7245@file{/dev/ttya}). @xref{Remote, ,Remote debugging}.
18fae2a8 7246@end ifset
70b88761 7247
fe715d06
RP
7248@ifset SIMS
7249@item target sim
7250@kindex target sim
7251CPU simulator. @xref{Simulator,,Simulated CPU Target}.
7252@end ifset
7253
a64a6c2b 7254@ifset AMD29K
fe715d06
RP
7255@item target udi @var{keyword}
7256@kindex target udi
7257Remote AMD29K target, using the AMD UDI protocol. The @var{keyword}
7258argument specifies which 29K board or simulator to use. @xref{UDI29K
b1955f0b 7259Remote,,The UDI protocol for AMD29K}.
fe715d06 7260
70b88761
RP
7261@item target amd-eb @var{dev} @var{speed} @var{PROG}
7262@kindex target amd-eb
7263@cindex AMD EB29K
7264Remote PC-resident AMD EB29K board, attached over serial lines.
7265@var{dev} is the serial device, as for @code{target remote};
7266@var{speed} allows you to specify the linespeed; and @var{PROG} is the
7267name of the program to be debugged, as it appears to DOS on the PC.
b1955f0b 7268@xref{EB29K Remote, ,The EBMON protocol for AMD29K}.
77fe5411 7269
18fae2a8 7270@end ifset
a64a6c2b 7271@ifset H8
c7cb8acb
RP
7272@item target hms
7273@kindex target hms
72545cc6 7274A Hitachi SH, H8/300, or H8/500 board, attached via serial line to your host.
a64a6c2b
RP
7275@ifclear H8EXCLUSIVE
7276@c Unix only, not currently of interest for H8-only manual
7277Use special commands @code{device} and @code{speed} to control the serial
7278line and the communications speed used.
7279@end ifclear
7280@xref{Hitachi Remote,,@value{GDBN} and Hitachi Microprocessors}.
c7cb8acb 7281
18fae2a8 7282@end ifset
a64a6c2b 7283@ifset I960
70b88761
RP
7284@item target nindy @var{devicename}
7285@kindex target nindy
7286An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
7287the name of the serial device to use for the connection, e.g.
ed447b95 7288@file{/dev/ttya}. @xref{i960-Nindy Remote, ,@value{GDBN} with a remote i960 (Nindy)}.
70b88761 7289
18fae2a8 7290@end ifset
a64a6c2b 7291@ifset ST2000
77fe5411
RP
7292@item target st2000 @var{dev} @var{speed}
7293@kindex target st2000
7294A Tandem ST2000 phone switch, running Tandem's STDBUG protocol. @var{dev}
7295is the name of the device attached to the ST2000 serial line;
7296@var{speed} is the communication line speed. The arguments are not used
18fae2a8
RP
7297if @value{GDBN} is configured to connect to the ST2000 using TCP or Telnet.
7298@xref{ST2000 Remote,,@value{GDBN} with a Tandem ST2000}.
77fe5411 7299
18fae2a8
RP
7300@end ifset
7301@ifset VXWORKS
70b88761
RP
7302@item target vxworks @var{machinename}
7303@kindex target vxworks
7304A VxWorks system, attached via TCP/IP. The argument @var{machinename}
7305is the target system's machine name or IP address.
18fae2a8
RP
7306@xref{VxWorks Remote, ,@value{GDBN} and VxWorks}.
7307@end ifset
70b88761
RP
7308@end table
7309
18fae2a8
RP
7310@ifset GENERIC
7311Different targets are available on different configurations of @value{GDBN}; your
70b88761 7312configuration may have more or fewer targets.
18fae2a8 7313@end ifset
70b88761 7314
4eb4cf57 7315@node Remote
93928b60 7316@section Remote debugging
70b88761
RP
7317@cindex remote debugging
7318
29a2b744 7319If you are trying to debug a program running on a machine that cannot run
c7cb8acb 7320GDB in the usual way, it is often useful to use remote debugging. For
70b88761
RP
7321example, you might use remote debugging on an operating system kernel, or on
7322a small system which does not have a general purpose operating system
e251e767 7323powerful enough to run a full-featured debugger.
70b88761 7324
c7cb8acb 7325Some configurations of GDB have special serial or TCP/IP interfaces
70b88761 7326to make this work with particular debugging targets. In addition,
c7cb8acb 7327GDB comes with a generic serial protocol (specific to GDB, but
70b88761 7328not specific to any particular target system) which you can use if you
9a27b06e 7329write the remote stubs---the code that runs on the remote system to
c7cb8acb 7330communicate with GDB.
70b88761 7331
70b88761 7332Other remote targets may be available in your
a4ae3702 7333configuration of GDB; use @code{help target} to list them.
70b88761 7334
18fae2a8
RP
7335@ifset GENERIC
7336@c Text on starting up GDB in various specific cases; it goes up front
7337@c in manuals configured for any of those particular situations, here
7338@c otherwise.
18fae2a8
RP
7339@menu
7340@ifset REMOTESTUB
7341* Remote Serial:: @value{GDBN} remote serial protocol
7342@end ifset
a64a6c2b 7343@ifset I960
18fae2a8
RP
7344* i960-Nindy Remote:: @value{GDBN} with a remote i960 (Nindy)
7345@end ifset
a64a6c2b 7346@ifset AMD29K
b1955f0b
RP
7347* UDI29K Remote:: The UDI protocol for AMD29K
7348* EB29K Remote:: The EBMON protocol for AMD29K
18fae2a8
RP
7349@end ifset
7350@ifset VXWORKS
7351* VxWorks Remote:: @value{GDBN} and VxWorks
7352@end ifset
a64a6c2b 7353@ifset ST2000
18fae2a8
RP
7354* ST2000 Remote:: @value{GDBN} with a Tandem ST2000
7355@end ifset
a64a6c2b
RP
7356@ifset H8
7357* Hitachi Remote:: @value{GDBN} and Hitachi Microprocessors
18fae2a8 7358@end ifset
34ae25cd
RP
7359@ifset MIPS
7360* MIPS Remote:: @value{GDBN} and MIPS boards
7361@end ifset
fe715d06
RP
7362@ifset SIMS
7363* Simulator:: Simulated CPU target
18fae2a8
RP
7364@end ifset
7365@end menu
70b88761 7366
4af6d502 7367@include remote.texi
18fae2a8
RP
7368@end ifset
7369
7370@node Controlling GDB
7371@chapter Controlling @value{GDBN}
70b88761 7372
93918348 7373You can alter the way @value{GDBN} interacts with you by using
18fae2a8 7374the @code{set} command. For commands controlling how @value{GDBN} displays
93928b60 7375data, @pxref{Print Settings, ,Print settings}; other settings are described here.
70b88761
RP
7376
7377@menu
b80282d5 7378* Prompt:: Prompt
ed447b95
RP
7379* Editing:: Command editing
7380* History:: Command history
7381* Screen Size:: Screen size
b80282d5 7382* Numbers:: Numbers
ed447b95 7383* Messages/Warnings:: Optional warnings and messages
70b88761
RP
7384@end menu
7385
4eb4cf57 7386@node Prompt
70b88761
RP
7387@section Prompt
7388@cindex prompt
1041a570 7389
18fae2a8
RP
7390@value{GDBN} indicates its readiness to read a command by printing a string
7391called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
70b88761 7392can change the prompt string with the @code{set prompt} command. For
18fae2a8 7393instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
9aa964da 7394the prompt in one of the @value{GDBN} sessions so that you can always tell which
70b88761
RP
7395one you are talking to.
7396
7397@table @code
7398@item set prompt @var{newprompt}
7399@kindex set prompt
18fae2a8 7400Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
70b88761
RP
7401@kindex show prompt
7402@item show prompt
7403Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
7404@end table
7405
4eb4cf57 7406@node Editing
93928b60 7407@section Command editing
70b88761
RP
7408@cindex readline
7409@cindex command line editing
1041a570 7410
18fae2a8 7411@value{GDBN} reads its input commands via the @dfn{readline} interface. This
70b88761
RP
7412GNU library provides consistent behavior for programs which provide a
7413command line interface to the user. Advantages are @code{emacs}-style
7414or @code{vi}-style inline editing of commands, @code{csh}-like history
7415substitution, and a storage and recall of command history across
7416debugging sessions.
7417
18fae2a8 7418You may control the behavior of command line editing in @value{GDBN} with the
e251e767 7419command @code{set}.
70b88761
RP
7420
7421@table @code
7422@kindex set editing
7423@cindex editing
7424@item set editing
7425@itemx set editing on
7426Enable command line editing (enabled by default).
7427
7428@item set editing off
7429Disable command line editing.
7430
7431@kindex show editing
7432@item show editing
7433Show whether command line editing is enabled.
7434@end table
7435
4eb4cf57 7436@node History
ed447b95
RP
7437@section Command history
7438
7439@value{GDBN} can keep track of the commands you type during your
7440debugging sessions, so that you can be certain of precisely what
7441happened. Use these commands to manage the @value{GDBN} command
7442history facility.
1041a570 7443
70b88761
RP
7444@table @code
7445@cindex history substitution
7446@cindex history file
7447@kindex set history filename
9a27b06e 7448@kindex GDBHISTFILE
70b88761 7449@item set history filename @var{fname}
9a27b06e
RP
7450Set the name of the @value{GDBN} command history file to @var{fname}.
7451This is the file where @value{GDBN} reads an initial command history
7452list, and where it writes the command history from this session when it
7453exits. You can access this list through history expansion or through
7454the history command editing characters listed below. This file defaults
7455to the value of the environment variable @code{GDBHISTFILE}, or to
70b88761
RP
7456@file{./.gdb_history} if this variable is not set.
7457
7458@cindex history save
7459@kindex set history save
7460@item set history save
7461@itemx set history save on
7462Record command history in a file, whose name may be specified with the
7463@code{set history filename} command. By default, this option is disabled.
7464
7465@item set history save off
7466Stop recording command history in a file.
7467
7468@cindex history size
7469@kindex set history size
7470@item set history size @var{size}
9a27b06e 7471Set the number of commands which @value{GDBN} keeps in its history list.
70b88761
RP
7472This defaults to the value of the environment variable
7473@code{HISTSIZE}, or to 256 if this variable is not set.
7474@end table
7475
7476@cindex history expansion
7477History expansion assigns special meaning to the character @kbd{!}.
ed447b95 7478@ifset have-readline-appendices
1041a570 7479@xref{Event Designators}.
ed447b95
RP
7480@end ifset
7481
70b88761
RP
7482Since @kbd{!} is also the logical not operator in C, history expansion
7483is off by default. If you decide to enable history expansion with the
7484@code{set history expansion on} command, you may sometimes need to
7485follow @kbd{!} (when it is used as logical not, in an expression) with
7486a space or a tab to prevent it from being expanded. The readline
9a27b06e 7487history facilities do not attempt substitution on the strings
70b88761
RP
7488@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
7489
7490The commands to control history expansion are:
7491
7492@table @code
7493
7494@kindex set history expansion
7495@item set history expansion on
7496@itemx set history expansion
7497Enable history expansion. History expansion is off by default.
7498
7499@item set history expansion off
7500Disable history expansion.
7501
7502The readline code comes with more complete documentation of
7503editing and history expansion features. Users unfamiliar with @code{emacs}
e251e767 7504or @code{vi} may wish to read it.
ed447b95 7505@ifset have-readline-appendices
70b88761 7506@xref{Command Line Editing}.
ed447b95 7507@end ifset
70b88761
RP
7508
7509@c @group
7510@kindex show history
7511@item show history
7512@itemx show history filename
7513@itemx show history save
7514@itemx show history size
7515@itemx show history expansion
18fae2a8 7516These commands display the state of the @value{GDBN} history parameters.
70b88761
RP
7517@code{show history} by itself displays all four states.
7518@c @end group
70b88761
RP
7519@end table
7520
7521@table @code
7522@kindex show commands
7523@item show commands
7524Display the last ten commands in the command history.
7525
7526@item show commands @var{n}
7527Print ten commands centered on command number @var{n}.
7528
7529@item show commands +
7530Print ten commands just after the commands last printed.
70b88761
RP
7531@end table
7532
4eb4cf57 7533@node Screen Size
93928b60 7534@section Screen size
70b88761
RP
7535@cindex size of screen
7536@cindex pauses in output
1041a570 7537
a1eff6c2
RP
7538Certain commands to @value{GDBN} may produce large amounts of
7539information output to the screen. To help you read all of it,
7540@value{GDBN} pauses and asks you for input at the end of each page of
7541output. Type @key{RET} when you want to continue the output, or @kbd{q}
34ae25cd
RP
7542to discard the remaining output. Also, the screen width setting
7543determines when to wrap lines of output. Depending on what is being
7544printed, @value{GDBN} tries to break the line at a readable place,
70b88761
RP
7545rather than simply letting it overflow onto the following line.
7546
18fae2a8 7547Normally @value{GDBN} knows the size of the screen from the termcap data base
70b88761
RP
7548together with the value of the @code{TERM} environment variable and the
7549@code{stty rows} and @code{stty cols} settings. If this is not correct,
7550you can override it with the @code{set height} and @code{set
7551width} commands:
7552
7553@table @code
7554@item set height @var{lpp}
7555@itemx show height
7556@itemx set width @var{cpl}
7557@itemx show width
7558@kindex set height
7559@kindex set width
7560@kindex show width
7561@kindex show height
7562These @code{set} commands specify a screen height of @var{lpp} lines and
7563a screen width of @var{cpl} characters. The associated @code{show}
7564commands display the current settings.
7565
9a27b06e 7566If you specify a height of zero lines, @value{GDBN} does not pause during output
70b88761
RP
7567no matter how long the output is. This is useful if output is to a file
7568or to an editor buffer.
d55320a0
RP
7569
7570Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
7571from wrapping its output.
70b88761
RP
7572@end table
7573
4eb4cf57 7574@node Numbers
70b88761
RP
7575@section Numbers
7576@cindex number representation
7577@cindex entering numbers
1041a570 7578
18fae2a8 7579You can always enter numbers in octal, decimal, or hexadecimal in @value{GDBN} by
70b88761
RP
7580the usual conventions: octal numbers begin with @samp{0}, decimal
7581numbers end with @samp{.}, and hexadecimal numbers begin with @samp{0x}.
7582Numbers that begin with none of these are, by default, entered in base
758310; likewise, the default display for numbers---when no particular
7584format is specified---is base 10. You can change the default base for
7585both input and output with the @code{set radix} command.
7586
7587@table @code
7588@kindex set radix
7589@item set radix @var{base}
7590Set the default base for numeric input and display. Supported choices
d55320a0 7591for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
70b88761
RP
7592specified either unambiguously or using the current default radix; for
7593example, any of
7594
7595@example
7596set radix 012
7597set radix 10.
7598set radix 0xa
7599@end example
7600
7601@noindent
9a27b06e
RP
7602sets the base to decimal. On the other hand, @samp{set radix 10}
7603leaves the radix unchanged no matter what it was.
70b88761
RP
7604
7605@kindex show radix
7606@item show radix
7607Display the current default base for numeric input and display.
70b88761
RP
7608@end table
7609
4eb4cf57 7610@node Messages/Warnings
93928b60 7611@section Optional warnings and messages
1041a570 7612
18fae2a8 7613By default, @value{GDBN} is silent about its inner workings. If you are running
70b88761 7614on a slow machine, you may want to use the @code{set verbose} command.
9a27b06e 7615It makes @value{GDBN} tell you when it does a lengthy internal operation, so
1041a570 7616you will not think it has crashed.
70b88761 7617
1041a570 7618Currently, the messages controlled by @code{set verbose} are those
d48da190 7619which announce that the symbol table for a source file is being read;
93928b60 7620see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
70b88761
RP
7621
7622@table @code
7623@kindex set verbose
7624@item set verbose on
93918348 7625Enables @value{GDBN} output of certain informational messages.
70b88761
RP
7626
7627@item set verbose off
93918348 7628Disables @value{GDBN} output of certain informational messages.
70b88761
RP
7629
7630@kindex show verbose
7631@item show verbose
7632Displays whether @code{set verbose} is on or off.
7633@end table
7634
18fae2a8 7635By default, if @value{GDBN} encounters bugs in the symbol table of an object
b80282d5 7636file, it is silent; but if you are debugging a compiler, you may find
93928b60 7637this information useful (@pxref{Symbol Errors, ,Errors reading symbol files}).
70b88761
RP
7638
7639@table @code
7640@kindex set complaints
7641@item set complaints @var{limit}
18fae2a8 7642Permits @value{GDBN} to output @var{limit} complaints about each type of unusual
70b88761
RP
7643symbols before becoming silent about the problem. Set @var{limit} to
7644zero to suppress all complaints; set it to a large number to prevent
7645complaints from being suppressed.
7646
7647@kindex show complaints
7648@item show complaints
18fae2a8 7649Displays how many symbol complaints @value{GDBN} is permitted to produce.
70b88761
RP
7650@end table
7651
18fae2a8 7652By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
70b88761
RP
7653lot of stupid questions to confirm certain commands. For example, if
7654you try to run a program which is already running:
1041a570 7655
70b88761 7656@example
18fae2a8 7657(@value{GDBP}) run
70b88761 7658The program being debugged has been started already.
e251e767 7659Start it from the beginning? (y or n)
70b88761
RP
7660@end example
7661
29a2b744 7662If you are willing to unflinchingly face the consequences of your own
70b88761
RP
7663commands, you can disable this ``feature'':
7664
7665@table @code
7666@kindex set confirm
7667@cindex flinching
7668@cindex confirmation
7669@cindex stupid questions
7670@item set confirm off
7671Disables confirmation requests.
7672
7673@item set confirm on
7674Enables confirmation requests (the default).
7675
7676@item show confirm
7677@kindex show confirm
7678Displays state of confirmation requests.
7679@end table
7680
29a2b744 7681@c FIXME this does not really belong here. But where *does* it belong?
b80282d5
RP
7682@cindex reloading symbols
7683Some systems allow individual object files that make up your program to
7684be replaced without stopping and restarting your program.
18fae2a8 7685@ifset VXWORKS
b80282d5
RP
7686For example, in VxWorks you can simply recompile a defective object file
7687and keep on running.
18fae2a8
RP
7688@end ifset
7689If you are running on one of these systems, you can allow @value{GDBN} to
1041a570
RP
7690reload the symbols for automatically relinked modules:
7691
b80282d5
RP
7692@table @code
7693@kindex set symbol-reloading
7694@item set symbol-reloading on
7695Replace symbol definitions for the corresponding source file when an
7696object file with a particular name is seen again.
7697
7698@item set symbol-reloading off
1041a570 7699Do not replace symbol definitions when re-encountering object files of
29a2b744 7700the same name. This is the default state; if you are not running on a
b80282d5 7701system that permits automatically relinking modules, you should leave
18fae2a8 7702@code{symbol-reloading} off, since otherwise @value{GDBN} may discard symbols
b80282d5
RP
7703when linking large programs, that may contain several modules (from
7704different directories or libraries) with the same name.
7705
7706@item show symbol-reloading
7707Show the current @code{on} or @code{off} setting.
7708@end table
7709
4eb4cf57 7710@node Sequences
70b88761
RP
7711@chapter Canned Sequences of Commands
7712
29a2b744 7713Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
93928b60 7714command lists}), @value{GDBN} provides two ways to store sequences of commands
1041a570 7715for execution as a unit: user-defined commands and command files.
70b88761
RP
7716
7717@menu
ed447b95
RP
7718* Define:: User-defined commands
7719* Hooks:: User-defined command hooks
7720* Command Files:: Command files
7721* Output:: Commands for controlled output
70b88761
RP
7722@end menu
7723
4eb4cf57 7724@node Define
ed447b95 7725@section User-defined commands
70b88761
RP
7726
7727@cindex user-defined command
18fae2a8 7728A @dfn{user-defined command} is a sequence of @value{GDBN} commands to which you
70b88761
RP
7729assign a new name as a command. This is done with the @code{define}
7730command.
7731
7732@table @code
7733@item define @var{commandname}
7734@kindex define
7735Define a command named @var{commandname}. If there is already a command
7736by that name, you are asked to confirm that you want to redefine it.
7737
18fae2a8 7738The definition of the command is made up of other @value{GDBN} command lines,
70b88761
RP
7739which are given following the @code{define} command. The end of these
7740commands is marked by a line containing @code{end}.
7741
7742@item document @var{commandname}
7743@kindex document
7744Give documentation to the user-defined command @var{commandname}. The
7745command @var{commandname} must already be defined. This command reads
7746lines of documentation just as @code{define} reads the lines of the
7747command definition, ending with @code{end}. After the @code{document}
9a27b06e 7748command is finished, @code{help} on command @var{commandname} displays
70b88761
RP
7749the documentation you have specified.
7750
7751You may use the @code{document} command again to change the
7752documentation of a command. Redefining the command with @code{define}
7753does not change the documentation.
7754
7755@item help user-defined
7756@kindex help user-defined
7757List all user-defined commands, with the first line of the documentation
7758(if any) for each.
7759
4768ba62
JG
7760@item show user
7761@itemx show user @var{commandname}
7762@kindex show user
18fae2a8 7763Display the @value{GDBN} commands used to define @var{commandname} (but not its
70b88761
RP
7764documentation). If no @var{commandname} is given, display the
7765definitions for all user-defined commands.
7766@end table
7767
7768User-defined commands do not take arguments. When they are executed, the
7769commands of the definition are not printed. An error in any command
7770stops execution of the user-defined command.
7771
7772Commands that would ask for confirmation if used interactively proceed
18fae2a8 7773without asking when used inside a user-defined command. Many @value{GDBN} commands
70b88761
RP
7774that normally print messages to say what they are doing omit the messages
7775when used in a user-defined command.
7776
35a15d60 7777@node Hooks
93928b60 7778@section User-defined command hooks
35a15d60
JG
7779@cindex command files
7780
7781You may define @emph{hooks}, which are a special kind of user-defined
7782command. Whenever you run the command @samp{foo}, if the user-defined
7783command @samp{hook-foo} exists, it is executed (with no arguments)
7784before that command.
7785
1d7c3357
RP
7786In addition, a pseudo-command, @samp{stop} exists. Defining
7787(@samp{hook-stop}) makes the associated commands execute every time
7788execution stops in your program: before breakpoint commands are run,
7789displays are printed, or the stack frame is printed.
35a15d60 7790
1d7c3357
RP
7791@ifclear BARETARGET
7792For example, to ignore @code{SIGALRM} signals while
7793single-stepping, but treat them normally during normal execution,
7794you could define:
35a15d60
JG
7795
7796@example
7797define hook-stop
7798handle SIGALRM nopass
7799end
7800
7801define hook-run
7802handle SIGALRM pass
7803end
7804
7805define hook-continue
7806handle SIGLARM pass
7807end
7808@end example
1d7c3357 7809@end ifclear
35a15d60 7810
1d7c3357
RP
7811You can define a hook for any single-word command in @value{GDBN}, but
7812not for command aliases; you should define a hook for the basic command
7813name, e.g. @code{backtrace} rather than @code{bt}.
7814@c FIXME! So how does Joe User discover whether a command is an alias
7815@c or not?
7816If an error occurs during the execution of your hook, execution of
7817@value{GDBN} commands stops and @value{GDBN} issues a prompt
7818(before the command that you actually typed had a chance to run).
35a15d60 7819
93918348 7820If you try to define a hook which does not match any known command, you
9a27b06e 7821get a warning from the @code{define} command.
35a15d60 7822
4eb4cf57 7823@node Command Files
93928b60 7824@section Command files
70b88761
RP
7825
7826@cindex command files
18fae2a8 7827A command file for @value{GDBN} is a file of lines that are @value{GDBN} commands. Comments
70b88761
RP
7828(lines starting with @kbd{#}) may also be included. An empty line in a
7829command file does nothing; it does not mean to repeat the last command, as
7830it would from the terminal.
7831
7832@cindex init file
18fae2a8
RP
7833@cindex @file{@value{GDBINIT}}
7834When you start @value{GDBN}, it automatically executes commands from its
64a01450
JK
7835@dfn{init files}. These are files named @file{@value{GDBINIT}}.
7836@value{GDBN} reads the init file (if any) in your home directory, then
7837processes command line options and operands, and then reads the init
7838file (if any) in the current working directory. This is so the init
7839file in your home directory can set options (such as @code{set
8d43be62 7840complaints}) which affect the processing of the command line options and
64a01450
JK
7841operands. The init files are not executed if you use the @samp{-nx}
7842option; @pxref{Mode Options, ,Choosing modes}.
51b65b74
RP
7843
7844@ifset GENERIC
7845@cindex init file name
7846On some configurations of @value{GDBN}, the init file is known by a
7847different name (these are typically environments where a specialized
7848form of GDB may need to coexist with other forms, hence a different name
7849for the specialized version's init file). These are the environments
7850with special init file names:
7851
7852@itemize @bullet
7853@kindex .vxgdbinit
7854@item
7855VxWorks (Wind River Systems real-time OS): @samp{.vxgdbinit}
7856
7857@kindex .os68gdbinit
7858@item
7859OS68K (Enea Data Systems real-time OS): @samp{.os68gdbinit}
7860
7861@kindex .esgdbinit
7862@item
7863ES-1800 (Ericsson Telecom AB M68000 emulator): @samp{.esgdbinit}
7864@end itemize
7865@end ifset
7866
7867You can also request the execution of a command file with the
7868@code{source} command:
70b88761
RP
7869
7870@table @code
7871@item source @var{filename}
7872@kindex source
7873Execute the command file @var{filename}.
7874@end table
7875
7876The lines in a command file are executed sequentially. They are not
7877printed as they are executed. An error in any command terminates execution
7878of the command file.
7879
7880Commands that would ask for confirmation if used interactively proceed
18fae2a8 7881without asking when used in a command file. Many @value{GDBN} commands that
70b88761
RP
7882normally print messages to say what they are doing omit the messages
7883when called from command files.
7884
4eb4cf57 7885@node Output
93928b60 7886@section Commands for controlled output
70b88761
RP
7887
7888During the execution of a command file or a user-defined command, normal
18fae2a8 7889@value{GDBN} output is suppressed; the only output that appears is what is
70b88761
RP
7890explicitly printed by the commands in the definition. This section
7891describes three commands useful for generating exactly the output you
7892want.
7893
7894@table @code
7895@item echo @var{text}
7896@kindex echo
29a2b744
RP
7897@c I do not consider backslash-space a standard C escape sequence
7898@c because it is not in ANSI.
1041a570
RP
7899Print @var{text}. Nonprinting characters can be included in
7900@var{text} using C escape sequences, such as @samp{\n} to print a
9a27b06e 7901newline. @strong{No newline is printed unless you specify one.}
1041a570 7902In addition to the standard C escape sequences, a backslash followed
ed447b95 7903by a space stands for a space. This is useful for displaying a
1041a570
RP
7904string with spaces at the beginning or the end, since leading and
7905trailing spaces are otherwise trimmed from all arguments.
7906To print @samp{@w{ }and foo =@w{ }}, use the command
7907@samp{echo \@w{ }and foo = \@w{ }}.
70b88761
RP
7908
7909A backslash at the end of @var{text} can be used, as in C, to continue
7910the command onto subsequent lines. For example,
7911
7912@example
7913echo This is some text\n\
7914which is continued\n\
7915onto several lines.\n
7916@end example
7917
7918produces the same output as
7919
7920@example
7921echo This is some text\n
7922echo which is continued\n
7923echo onto several lines.\n
7924@end example
7925
7926@item output @var{expression}
7927@kindex output
7928Print the value of @var{expression} and nothing but that value: no
7929newlines, no @samp{$@var{nn} = }. The value is not entered in the
1041a570 7930value history either. @xref{Expressions, ,Expressions}, for more information on
e251e767 7931expressions.
70b88761
RP
7932
7933@item output/@var{fmt} @var{expression}
7934Print the value of @var{expression} in format @var{fmt}. You can use
ed447b95
RP
7935the same formats as for @code{print}. @xref{Output Formats,,Output
7936formats}, for more information.
70b88761
RP
7937
7938@item printf @var{string}, @var{expressions}@dots{}
7939@kindex printf
7940Print the values of the @var{expressions} under the control of
d55320a0
RP
7941@var{string}. The @var{expressions} are separated by commas and may be
7942either numbers or pointers. Their values are printed as specified by
7943@var{string}, exactly as if your program were to execute the C
7944subroutine
70b88761
RP
7945
7946@example
7947printf (@var{string}, @var{expressions}@dots{});
7948@end example
7949
7950For example, you can print two values in hex like this:
7951
0fd24984 7952@smallexample
70b88761 7953printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
0fd24984 7954@end smallexample
70b88761
RP
7955
7956The only backslash-escape sequences that you can use in the format
7957string are the simple ones that consist of backslash followed by a
7958letter.
7959@end table
7960
18fae2a8 7961@ifclear DOSHOST
4eb4cf57 7962@node Emacs
18fae2a8 7963@chapter Using @value{GDBN} under GNU Emacs
70b88761
RP
7964
7965@cindex emacs
7966A special interface allows you to use GNU Emacs to view (and
7967edit) the source files for the program you are debugging with
18fae2a8 7968@value{GDBN}.
70b88761
RP
7969
7970To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
7971executable file you want to debug as an argument. This command starts
18fae2a8 7972@value{GDBN} as a subprocess of Emacs, with input and output through a newly
70b88761
RP
7973created Emacs buffer.
7974
18fae2a8 7975Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
70b88761
RP
7976things:
7977
7978@itemize @bullet
7979@item
e251e767 7980All ``terminal'' input and output goes through the Emacs buffer.
70b88761
RP
7981@end itemize
7982
18fae2a8 7983This applies both to @value{GDBN} commands and their output, and to the input
70b88761
RP
7984and output done by the program you are debugging.
7985
7986This is useful because it means that you can copy the text of previous
7987commands and input them again; you can even use parts of the output
7988in this way.
7989
3d3ab540
RP
7990All the facilities of Emacs' Shell mode are available for interacting
7991with your program. In particular, you can send signals the usual
7992way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
7993stop.
70b88761
RP
7994
7995@itemize @bullet
7996@item
18fae2a8 7997@value{GDBN} displays source code through Emacs.
70b88761
RP
7998@end itemize
7999
18fae2a8
RP
8000Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
8001source file for that frame and puts an arrow (@samp{=>}) at the
70b88761 8002left margin of the current line. Emacs uses a separate buffer for
fe715d06 8003source display, and splits the screen to show both your @value{GDBN} session
70b88761
RP
8004and the source.
8005
18fae2a8 8006Explicit @value{GDBN} @code{list} or search commands still produce output as
9a27b06e 8007usual, but you probably have no reason to use them from Emacs.
70b88761
RP
8008
8009@quotation
8010@emph{Warning:} If the directory where your program resides is not your
8011current directory, it can be easy to confuse Emacs about the location of
9a27b06e 8012the source files, in which case the auxiliary display buffer does not
18fae2a8
RP
8013appear to show your source. @value{GDBN} can find programs by searching your
8014environment's @code{PATH} variable, so the @value{GDBN} input and output
9a27b06e 8015session proceeds normally; but Emacs does not get enough information
18fae2a8
RP
8016back from @value{GDBN} to locate the source files in this situation. To
8017avoid this problem, either start @value{GDBN} mode from the directory where
b550c03a 8018your program resides, or specify an absolute file name when prompted for the
70b88761
RP
8019@kbd{M-x gdb} argument.
8020
18fae2a8 8021A similar confusion can result if you use the @value{GDBN} @code{file} command to
70b88761 8022switch to debugging a program in some other location, from an existing
18fae2a8 8023@value{GDBN} buffer in Emacs.
70b88761
RP
8024@end quotation
8025
8026By default, @kbd{M-x gdb} calls the program called @file{gdb}. If
18fae2a8 8027you need to call @value{GDBN} by a different name (for example, if you keep
70b88761
RP
8028several configurations around, with different names) you can set the
8029Emacs variable @code{gdb-command-name}; for example,
1041a570 8030
70b88761
RP
8031@example
8032(setq gdb-command-name "mygdb")
8033@end example
1041a570 8034
70b88761
RP
8035@noindent
8036(preceded by @kbd{ESC ESC}, or typed in the @code{*scratch*} buffer, or
9a27b06e 8037in your @file{.emacs} file) makes Emacs call the program named
70b88761
RP
8038``@code{mygdb}'' instead.
8039
18fae2a8 8040In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
70b88761
RP
8041addition to the standard Shell mode commands:
8042
8043@table @kbd
8044@item C-h m
18fae2a8 8045Describe the features of Emacs' @value{GDBN} Mode.
70b88761
RP
8046
8047@item M-s
18fae2a8 8048Execute to another source line, like the @value{GDBN} @code{step} command; also
70b88761
RP
8049update the display window to show the current file and location.
8050
8051@item M-n
8052Execute to next source line in this function, skipping all function
18fae2a8 8053calls, like the @value{GDBN} @code{next} command. Then update the display window
70b88761
RP
8054to show the current file and location.
8055
8056@item M-i
18fae2a8 8057Execute one instruction, like the @value{GDBN} @code{stepi} command; update
70b88761
RP
8058display window accordingly.
8059
8060@item M-x gdb-nexti
18fae2a8 8061Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
70b88761
RP
8062display window accordingly.
8063
8064@item C-c C-f
18fae2a8 8065Execute until exit from the selected stack frame, like the @value{GDBN}
70b88761
RP
8066@code{finish} command.
8067
8068@item M-c
18fae2a8 8069Continue execution of your program, like the @value{GDBN} @code{continue}
1041a570 8070command.
203eea5d
RP
8071
8072@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
70b88761
RP
8073
8074@item M-u
8075Go up the number of frames indicated by the numeric argument
8076(@pxref{Arguments, , Numeric Arguments, emacs, The GNU Emacs Manual}),
18fae2a8 8077like the @value{GDBN} @code{up} command.
203eea5d 8078
1041a570 8079@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
70b88761
RP
8080
8081@item M-d
8082Go down the number of frames indicated by the numeric argument, like the
18fae2a8 8083@value{GDBN} @code{down} command.
203eea5d
RP
8084
8085@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
70b88761
RP
8086
8087@item C-x &
8088Read the number where the cursor is positioned, and insert it at the end
18fae2a8 8089of the @value{GDBN} I/O buffer. For example, if you wish to disassemble code
70b88761
RP
8090around an address that was displayed earlier, type @kbd{disassemble};
8091then move the cursor to the address display, and pick up the
e251e767 8092argument for @code{disassemble} by typing @kbd{C-x &}.
70b88761 8093
ed447b95 8094You can customize this further by defining elements of the list
70b88761
RP
8095@code{gdb-print-command}; once it is defined, you can format or
8096otherwise process numbers picked up by @kbd{C-x &} before they are
9a27b06e
RP
8097inserted. A numeric argument to @kbd{C-x &} indicates that you
8098wish special formatting, and also acts as an index to pick an element of the
70b88761
RP
8099list. If the list element is a string, the number to be inserted is
8100formatted using the Emacs function @code{format}; otherwise the number
8101is passed as an argument to the corresponding list element.
70b88761
RP
8102@end table
8103
8104In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
18fae2a8 8105tells @value{GDBN} to set a breakpoint on the source line point is on.
70b88761
RP
8106
8107If you accidentally delete the source-display buffer, an easy way to get
18fae2a8 8108it back is to type the command @code{f} in the @value{GDBN} buffer, to
9a27b06e 8109request a frame display; when you run under Emacs, this recreates
70b88761
RP
8110the source buffer if necessary to show you the context of the current
8111frame.
8112
8113The source files displayed in Emacs are in ordinary Emacs buffers
8114which are visiting the source files in the usual way. You can edit
18fae2a8 8115the files with these buffers if you wish; but keep in mind that @value{GDBN}
70b88761 8116communicates with Emacs in terms of line numbers. If you add or
9a27b06e 8117delete lines from the text, the line numbers that @value{GDBN} knows cease
ed447b95 8118to correspond properly with the code.
70b88761
RP
8119
8120@c The following dropped because Epoch is nonstandard. Reactivate
8121@c if/when v19 does something similar. ---pesch@cygnus.com 19dec1990
8122@ignore
e251e767 8123@kindex emacs epoch environment
70b88761
RP
8124@kindex epoch
8125@kindex inspect
8126
8127Version 18 of Emacs has a built-in window system called the @code{epoch}
8128environment. Users of this environment can use a new command,
8129@code{inspect} which performs identically to @code{print} except that
8130each value is printed in its own window.
8131@end ignore
18fae2a8 8132@end ifclear
70b88761 8133
18fae2a8 8134@ifset LUCID
4eb4cf57 8135@node Energize
18fae2a8 8136@chapter Using @value{GDBN} with Energize
6ca72cc6
RP
8137
8138@cindex Energize
8139The Energize Programming System is an integrated development environment
8140that includes a point-and-click interface to many programming tools.
18fae2a8
RP
8141When you use @value{GDBN} in this environment, you can use the standard
8142Energize graphical interface to drive @value{GDBN}; you can also, if you
8143choose, type @value{GDBN} commands as usual in a debugging window. Even if
6ca72cc6 8144you use the graphical interface, the debugging window (which uses Emacs,
18fae2a8 8145and resembles the standard Emacs interface to @value{GDBN}) displays the
6ca72cc6
RP
8146equivalent commands, so that the history of your debugging session is
8147properly reflected.
8148
18fae2a8 8149When Energize starts up a @value{GDBN} session, it uses one of the
6ca72cc6
RP
8150command-line options @samp{-energize} or @samp{-cadillac} (``cadillac''
8151is the name of the communications protocol used by the Energize system).
18fae2a8 8152This option makes @value{GDBN} run as one of the tools in the Energize Tool
6ca72cc6
RP
8153Set: it sends all output to the Energize kernel, and accept input from
8154it as well.
8155
8156See the user manual for the Energize Programming System for
8157information on how to use the Energize graphical interface and the other
18fae2a8 8158development tools that Energize integrates with @value{GDBN}.
6ca72cc6 8159
18fae2a8 8160@end ifset
4eb4cf57 8161
18fae2a8
RP
8162@node GDB Bugs
8163@chapter Reporting Bugs in @value{GDBN}
ed447b95
RP
8164@cindex bugs in @value{GDBN}
8165@cindex reporting bugs in @value{GDBN}
70b88761 8166
18fae2a8 8167Your bug reports play an essential role in making @value{GDBN} reliable.
70b88761
RP
8168
8169Reporting a bug may help you by bringing a solution to your problem, or it
8170may not. But in any case the principal function of a bug report is to help
18fae2a8
RP
8171the entire community by making the next version of @value{GDBN} work better. Bug
8172reports are your contribution to the maintenance of @value{GDBN}.
70b88761
RP
8173
8174In order for a bug report to serve its purpose, you must include the
8175information that enables us to fix the bug.
8176
8177@menu
ed447b95
RP
8178* Bug Criteria:: Have you found a bug?
8179* Bug Reporting:: How to report bugs
70b88761
RP
8180@end menu
8181
4eb4cf57 8182@node Bug Criteria
93928b60 8183@section Have you found a bug?
ed447b95 8184@cindex bug criteria
70b88761
RP
8185
8186If you are not sure whether you have found a bug, here are some guidelines:
8187
8188@itemize @bullet
8189@item
0f153e74 8190@cindex fatal signal
1d7c3357
RP
8191@cindex debugger crash
8192@cindex crash of debugger
70b88761 8193If the debugger gets a fatal signal, for any input whatever, that is a
18fae2a8 8194@value{GDBN} bug. Reliable debuggers never crash.
70b88761
RP
8195
8196@item
0f153e74 8197@cindex error on valid input
18fae2a8 8198If @value{GDBN} produces an error message for valid input, that is a bug.
70b88761
RP
8199
8200@item
ed447b95 8201@cindex invalid input
18fae2a8 8202If @value{GDBN} does not produce an error message for invalid input,
70b88761
RP
8203that is a bug. However, you should note that your idea of
8204``invalid input'' might be our idea of ``an extension'' or ``support
8205for traditional practice''.
8206
8207@item
8208If you are an experienced user of debugging tools, your suggestions
18fae2a8 8209for improvement of @value{GDBN} are welcome in any case.
70b88761
RP
8210@end itemize
8211
4eb4cf57 8212@node Bug Reporting
93928b60 8213@section How to report bugs
0f153e74 8214@cindex bug reports
18fae2a8 8215@cindex @value{GDBN} bugs, reporting
70b88761
RP
8216
8217A number of companies and individuals offer support for GNU products.
18fae2a8 8218If you obtained @value{GDBN} from a support organization, we recommend you
e251e767 8219contact that organization first.
70b88761 8220
ed447b95
RP
8221You can find contact information for many support companies and
8222individuals in the file @file{etc/SERVICE} in the GNU Emacs
8223distribution.
70b88761 8224
18fae2a8 8225In any event, we also recommend that you send bug reports for @value{GDBN} to one
70b88761
RP
8226of these addresses:
8227
8228@example
8229bug-gdb@@prep.ai.mit.edu
8230@{ucbvax|mit-eddie|uunet@}!prep.ai.mit.edu!bug-gdb
8231@end example
8232
8233@strong{Do not send bug reports to @samp{info-gdb}, or to
18fae2a8 8234@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do not want to
70b88761
RP
8235receive bug reports. Those that do, have arranged to receive @samp{bug-gdb}.
8236
3d3ab540
RP
8237The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
8238serves as a repeater. The mailing list and the newsgroup carry exactly
8239the same messages. Often people think of posting bug reports to the
8240newsgroup instead of mailing them. This appears to work, but it has one
8241problem which can be crucial: a newsgroup posting often lacks a mail
8242path back to the sender. Thus, if we need to ask for more information,
8243we may be unable to reach you. For this reason, it is better to send
8244bug reports to the mailing list.
70b88761
RP
8245
8246As a last resort, send bug reports on paper to:
8247
8248@example
8249GNU Debugger Bugs
3d3ab540 8250Free Software Foundation
70b88761
RP
8251545 Tech Square
8252Cambridge, MA 02139
8253@end example
8254
8255The fundamental principle of reporting bugs usefully is this:
8256@strong{report all the facts}. If you are not sure whether to state a
8257fact or leave it out, state it!
8258
8259Often people omit facts because they think they know what causes the
29a2b744 8260problem and assume that some details do not matter. Thus, you might
70b88761 8261assume that the name of the variable you use in an example does not matter.
29a2b744 8262Well, probably it does not, but one cannot be sure. Perhaps the bug is a
70b88761
RP
8263stray memory reference which happens to fetch from the location where that
8264name is stored in memory; perhaps, if the name were different, the contents
8265of that location would fool the debugger into doing the right thing despite
8266the bug. Play it safe and give a specific, complete example. That is the
8267easiest thing for you to do, and the most helpful.
8268
8269Keep in mind that the purpose of a bug report is to enable us to fix
1041a570 8270the bug if it is new to us. It is not as important as what happens if
70b88761
RP
8271the bug is already known. Therefore, always write your bug reports on
8272the assumption that the bug has not been reported previously.
8273
8274Sometimes people give a few sketchy facts and ask, ``Does this ring a
8275bell?'' Those bug reports are useless, and we urge everyone to
8276@emph{refuse to respond to them} except to chide the sender to report
8277bugs properly.
8278
8279To enable us to fix the bug, you should include all these things:
8280
8281@itemize @bullet
8282@item
18fae2a8 8283The version of @value{GDBN}. @value{GDBN} announces it if you start with no
70b88761
RP
8284arguments; you can also print it at any time using @code{show version}.
8285
1041a570 8286Without this, we will not know whether there is any point in looking for
18fae2a8 8287the bug in the current version of @value{GDBN}.
70b88761
RP
8288
8289@item
ddf21240
JG
8290The type of machine you are using, and the operating system name and
8291version number.
70b88761
RP
8292
8293@item
18fae2a8
RP
8294What compiler (and its version) was used to compile @value{GDBN}---e.g.
8295``@value{GCC}--2.0''.
70b88761 8296
ddf21240
JG
8297@item
8298What compiler (and its version) was used to compile the program you
18fae2a8 8299are debugging---e.g. ``@value{GCC}--2.0''.
ddf21240 8300
70b88761
RP
8301@item
8302The command arguments you gave the compiler to compile your example and
8303observe the bug. For example, did you use @samp{-O}? To guarantee
1041a570 8304you will not omit something important, list them all. A copy of the
ddf21240 8305Makefile (or the output from make) is sufficient.
70b88761
RP
8306
8307If we were to try to guess the arguments, we would probably guess wrong
8308and then we might not encounter the bug.
8309
8310@item
ddf21240
JG
8311A complete input script, and all necessary source files, that will
8312reproduce the bug.
70b88761
RP
8313
8314@item
8315A description of what behavior you observe that you believe is
8316incorrect. For example, ``It gets a fatal signal.''
8317
18fae2a8 8318Of course, if the bug is that @value{GDBN} gets a fatal signal, then we will
70b88761
RP
8319certainly notice it. But if the bug is incorrect output, we might not
8320notice unless it is glaringly wrong. We are human, after all. You
8321might as well not give us a chance to make a mistake.
8322
8323Even if the problem you experience is a fatal signal, you should still
8324say so explicitly. Suppose something strange is going on, such as,
18fae2a8 8325your copy of @value{GDBN} is out of synch, or you have encountered a
70b88761
RP
8326bug in the C library on your system. (This has happened!) Your copy
8327might crash and ours would not. If you told us to expect a crash,
8328then when ours fails to crash, we would know that the bug was not
8329happening for us. If you had not told us to expect a crash, then we
8330would not be able to draw any conclusion from our observations.
8331
8332@item
18fae2a8
RP
8333If you wish to suggest changes to the @value{GDBN} source, send us context
8334diffs. If you even discuss something in the @value{GDBN} source, refer to
70b88761
RP
8335it by context, not by line number.
8336
1041a570 8337The line numbers in our development sources will not match those in your
70b88761 8338sources. Your line numbers would convey no useful information to us.
70b88761
RP
8339@end itemize
8340
8341Here are some things that are not necessary:
8342
8343@itemize @bullet
8344@item
8345A description of the envelope of the bug.
8346
8347Often people who encounter a bug spend a lot of time investigating
8348which changes to the input file will make the bug go away and which
8349changes will not affect it.
8350
8351This is often time consuming and not very useful, because the way we
8352will find the bug is by running a single example under the debugger
8353with breakpoints, not by pure deduction from a series of examples.
8354We recommend that you save your time for something else.
8355
8356Of course, if you can find a simpler example to report @emph{instead}
8357of the original one, that is a convenience for us. Errors in the
8358output will be easier to spot, running under the debugger will take
b1955f0b 8359less time, and so on.
70b88761 8360
29a2b744 8361However, simplification is not vital; if you do not want to do this,
70b88761
RP
8362report the bug anyway and send us the entire test case you used.
8363
8364@item
8365A patch for the bug.
8366
29a2b744 8367A patch for the bug does help us if it is a good one. But do not omit
70b88761
RP
8368the necessary information, such as the test case, on the assumption that
8369a patch is all we need. We might see problems with your patch and decide
8370to fix the problem another way, or we might not understand it at all.
8371
18fae2a8 8372Sometimes with a program as complicated as @value{GDBN} it is very hard to
70b88761 8373construct an example that will make the program follow a certain path
1041a570
RP
8374through the code. If you do not send us the example, we will not be able
8375to construct one, so we will not be able to verify that the bug is fixed.
70b88761 8376
29a2b744 8377And if we cannot understand what bug you are trying to fix, or why your
1041a570 8378patch should be an improvement, we will not install it. A test case will
70b88761
RP
8379help us to understand.
8380
8381@item
8382A guess about what the bug is or what it depends on.
8383
29a2b744 8384Such guesses are usually wrong. Even we cannot guess right about such
70b88761
RP
8385things without first using the debugger to find the facts.
8386@end itemize
8387
da24340c
RP
8388@c The readline documentation is distributed with the readline code
8389@c and consists of the two following files:
8390@c rluser.texinfo
8391@c inc-hist.texi
8392@c Use -I with makeinfo to point to the appropriate directory,
8393@c environment var TEXINPUTS with TeX.
cacf5942
RP
8394@include rluser.texinfo
8395@include inc-hist.texi
70b88761 8396
18fae2a8 8397@ifset NOVEL
4eb4cf57 8398@node Renamed Commands
70b88761
RP
8399@appendix Renamed Commands
8400
c7cb8acb 8401The following commands were renamed in GDB 4, in order to make the
70b88761
RP
8402command set as a whole more consistent and easier to use and remember:
8403
e251e767
RP
8404@kindex add-syms
8405@kindex delete environment
8406@kindex info copying
8407@kindex info convenience
8408@kindex info directories
8409@kindex info editing
8410@kindex info history
8411@kindex info targets
8412@kindex info values
8413@kindex info version
8414@kindex info warranty
8415@kindex set addressprint
8416@kindex set arrayprint
8417@kindex set prettyprint
8418@kindex set screen-height
8419@kindex set screen-width
8420@kindex set unionprint
8421@kindex set vtblprint
8422@kindex set demangle
8423@kindex set asm-demangle
8424@kindex set sevenbit-strings
8425@kindex set array-max
8426@kindex set caution
8427@kindex set history write
8428@kindex show addressprint
8429@kindex show arrayprint
8430@kindex show prettyprint
8431@kindex show screen-height
8432@kindex show screen-width
8433@kindex show unionprint
8434@kindex show vtblprint
8435@kindex show demangle
8436@kindex show asm-demangle
8437@kindex show sevenbit-strings
8438@kindex show array-max
8439@kindex show caution
8440@kindex show history write
8441@kindex unset
70b88761 8442
92b73793 8443@c TEXI2ROFF-KILL
70b88761 8444@ifinfo
92b73793 8445@c END TEXI2ROFF-KILL
cf496415
RP
8446@example
8447OLD COMMAND NEW COMMAND
92b73793 8448@c TEXI2ROFF-KILL
cf496415 8449--------------- -------------------------------
92b73793 8450@c END TEXI2ROFF-KILL
cf496415
RP
8451add-syms add-symbol-file
8452delete environment unset environment
8453info convenience show convenience
8454info copying show copying
e251e767 8455info directories show directories
cf496415
RP
8456info editing show commands
8457info history show values
8458info targets help target
8459info values show values
8460info version show version
8461info warranty show warranty
8462set/show addressprint set/show print address
8463set/show array-max set/show print elements
8464set/show arrayprint set/show print array
8465set/show asm-demangle set/show print asm-demangle
8466set/show caution set/show confirm
8467set/show demangle set/show print demangle
8468set/show history write set/show history save
8469set/show prettyprint set/show print pretty
8470set/show screen-height set/show height
8471set/show screen-width set/show width
8472set/show sevenbit-strings set/show print sevenbit-strings
8473set/show unionprint set/show print union
8474set/show vtblprint set/show print vtbl
8475
8476unset [No longer an alias for delete]
8477@end example
92b73793 8478@c TEXI2ROFF-KILL
70b88761
RP
8479@end ifinfo
8480
8481@tex
8482\vskip \parskip\vskip \baselineskip
8483\halign{\tt #\hfil &\qquad#&\tt #\hfil\cr
8484{\bf Old Command} &&{\bf New Command}\cr
8485add-syms &&add-symbol-file\cr
8486delete environment &&unset environment\cr
8487info convenience &&show convenience\cr
8488info copying &&show copying\cr
8489info directories &&show directories \cr
8490info editing &&show commands\cr
8491info history &&show values\cr
8492info targets &&help target\cr
8493info values &&show values\cr
8494info version &&show version\cr
8495info warranty &&show warranty\cr
8496set{\rm / }show addressprint &&set{\rm / }show print address\cr
8497set{\rm / }show array-max &&set{\rm / }show print elements\cr
8498set{\rm / }show arrayprint &&set{\rm / }show print array\cr
8499set{\rm / }show asm-demangle &&set{\rm / }show print asm-demangle\cr
8500set{\rm / }show caution &&set{\rm / }show confirm\cr
8501set{\rm / }show demangle &&set{\rm / }show print demangle\cr
8502set{\rm / }show history write &&set{\rm / }show history save\cr
8503set{\rm / }show prettyprint &&set{\rm / }show print pretty\cr
8504set{\rm / }show screen-height &&set{\rm / }show height\cr
8505set{\rm / }show screen-width &&set{\rm / }show width\cr
8506set{\rm / }show sevenbit-strings &&set{\rm / }show print sevenbit-strings\cr
8507set{\rm / }show unionprint &&set{\rm / }show print union\cr
8508set{\rm / }show vtblprint &&set{\rm / }show print vtbl\cr
8509\cr
8510unset &&\rm(No longer an alias for delete)\cr
8511}
8512@end tex
92b73793 8513@c END TEXI2ROFF-KILL
18fae2a8 8514@end ifset
70b88761 8515
18fae2a8 8516@ifclear PRECONFIGURED
4eb4cf57 8517@node Formatting Documentation
fe715d06 8518@appendix Formatting Documentation
77b46d13
JG
8519
8520@cindex GDB reference card
8521@cindex reference card
8522The GDB 4 release includes an already-formatted reference card, ready
d241c8c8 8523for printing with PostScript or Ghostscript, in the @file{gdb}
ed447b95
RP
8524subdirectory of the main source directory@footnote{In
8525@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
d241c8c8 8526release.}. If you can use PostScript or Ghostscript with your printer,
ed447b95 8527you can print the reference card immediately with @file{refcard.ps}.
77b46d13
JG
8528
8529The release also includes the source for the reference card. You
8530can format it, using @TeX{}, by typing:
8531
8532@example
8533make refcard.dvi
8534@end example
8535
8536The GDB reference card is designed to print in landscape mode on US
8537``letter'' size paper; that is, on a sheet 11 inches wide by 8.5 inches
8538high. You will need to specify this form of printing as an option to
8539your @sc{dvi} output program.
8540
8541@cindex documentation
8542
8543All the documentation for GDB comes as part of the machine-readable
8544distribution. The documentation is written in Texinfo format, which is
8545a documentation system that uses a single source file to produce both
8546on-line information and a printed manual. You can use one of the Info
8547formatting commands to create the on-line version of the documentation
8548and @TeX{} (or @code{texi2roff}) to typeset the printed version.
8549
8550GDB includes an already formatted copy of the on-line Info version of
8551this manual in the @file{gdb} subdirectory. The main Info file is
8552@file{gdb-@var{version-number}/gdb/gdb.info}, and it refers to
a89f94c2
RP
8553subordinate files matching @samp{gdb.info*} in the same directory. If
8554necessary, you can print out these files, or read them with any editor;
8555but they are easier to read using the @code{info} subsystem in GNU Emacs
8556or the standalone @code{info} program, available as part of the GNU
8557Texinfo distribution.
77b46d13
JG
8558
8559If you want to format these Info files yourself, you need one of the
8560Info formatting programs, such as @code{texinfo-format-buffer} or
8561@code{makeinfo}.
8562
8563If you have @code{makeinfo} installed, and are in the top level GDB
18fae2a8 8564source directory (@file{gdb-@value{GDBVN}}, in the case of version @value{GDBVN}), you can
77b46d13
JG
8565make the Info file by typing:
8566
8567@example
8568cd gdb
8569make gdb.info
8570@end example
8571
fe715d06
RP
8572If you want to typeset and print copies of this manual, you need @TeX{},
8573a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
8574Texinfo definitions file.
77b46d13 8575
83bfcbae 8576@TeX{} is a typesetting program; it does not print files directly, but
77b46d13
JG
8577produces output files called @sc{dvi} files. To print a typeset
8578document, you need a program to print @sc{dvi} files. If your system
8579has @TeX{} installed, chances are it has such a program. The precise
8580command to use depends on your system; @kbd{lpr -d} is common; another
fe715d06
RP
8581(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
8582require a file name without any extension or a @samp{.dvi} extension.
77b46d13
JG
8583
8584@TeX{} also requires a macro definitions file called
8585@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
8586written in Texinfo format. On its own, @TeX{} cannot read, much less
8587typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
8588and is located in the @file{gdb-@var{version-number}/texinfo}
8589directory.
8590
8591If you have @TeX{} and a @sc{dvi} printer program installed, you can
8592typeset and print this manual. First switch to the the @file{gdb}
8593subdirectory of the main source directory (for example, to
18fae2a8 8594@file{gdb-@value{GDBVN}/gdb}) and then type:
77b46d13
JG
8595
8596@example
8597make gdb.dvi
8598@end example
8599
4eb4cf57 8600@node Installing GDB
c7cb8acb
RP
8601@appendix Installing GDB
8602@cindex configuring GDB
70b88761
RP
8603@cindex installation
8604
ed447b95
RP
8605GDB comes with a @code{configure} script that automates the process
8606of preparing GDB for installation; you can then use @code{make} to
8607build the @code{gdb} program.
f672bb7f
RP
8608@iftex
8609@c irrelevant in info file; it's as current as the code it lives with.
ed447b95
RP
8610@footnote{If you have a more recent version of GDB than @value{GDBVN},
8611look at the @file{README} file in the sources; we may have improved the
8612installation procedures since publishing this manual.}
f672bb7f
RP
8613@end iftex
8614
c7cb8acb 8615The GDB distribution includes all the source code you need for GDB in
1041a570
RP
8616a single directory, whose name is usually composed by appending the
8617version number to @samp{gdb}.
8618
ed447b95
RP
8619For example, the GDB version @value{GDBVN} distribution is in the
8620@file{gdb-@value{GDBVN}} directory. That directory contains:
b80282d5 8621
3d3ab540 8622@table @code
18fae2a8 8623@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
c7cb8acb 8624script for configuring GDB and all its supporting libraries.
b80282d5 8625
18fae2a8 8626@item gdb-@value{GDBVN}/gdb
c7cb8acb 8627the source specific to GDB itself
3d3ab540 8628
18fae2a8 8629@item gdb-@value{GDBVN}/bfd
77b46d13 8630source for the Binary File Descriptor library
3d3ab540 8631
18fae2a8 8632@item gdb-@value{GDBVN}/include
b80282d5 8633GNU include files
3d3ab540 8634
18fae2a8 8635@item gdb-@value{GDBVN}/libiberty
3d3ab540
RP
8636source for the @samp{-liberty} free software library
8637
18fae2a8 8638@item gdb-@value{GDBVN}/opcodes
3214c51c
JG
8639source for the library of opcode tables and disassemblers
8640
18fae2a8 8641@item gdb-@value{GDBVN}/readline
b80282d5 8642source for the GNU command-line interface
77b46d13 8643
18fae2a8 8644@item gdb-@value{GDBVN}/glob
77b46d13
JG
8645source for the GNU filename pattern-matching subroutine
8646
18fae2a8 8647@item gdb-@value{GDBVN}/mmalloc
77b46d13 8648source for the GNU memory-mapped malloc package
3d3ab540 8649@end table
1041a570 8650
c7cb8acb 8651The simplest way to configure and build GDB is to run @code{configure}
1041a570 8652from the @file{gdb-@var{version-number}} source directory, which in
18fae2a8 8653this example is the @file{gdb-@value{GDBVN}} directory.
1041a570
RP
8654
8655First switch to the @file{gdb-@var{version-number}} source directory
8656if you are not already in it; then run @code{configure}. Pass the
c7cb8acb 8657identifier for the platform on which GDB will run as an
1041a570
RP
8658argument.
8659
8660For example:
8661
7463aadd 8662@example
18fae2a8 8663cd gdb-@value{GDBVN}
3d3ab540 8664./configure @var{host}
7463aadd
RP
8665make
8666@end example
1041a570 8667
7463aadd 8668@noindent
1041a570 8669where @var{host} is an identifier such as @samp{sun4} or
c7cb8acb 8670@samp{decstation}, that identifies the platform where GDB will run.
d55320a0
RP
8671(You can often leave off @var{host}; @code{configure} tries to guess the
8672correct value by examining your system.)
1041a570 8673
8c69096b 8674Running @samp{configure @var{host}} and then running @code{make} builds the
38962738
RP
8675@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
8676libraries, then @code{gdb} itself. The configured source files, and the
8677binaries, are left in the corresponding source directories.
3d3ab540 8678
e251e767 8679@code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
29a2b744 8680system does not recognize this automatically when you run a different
1041a570
RP
8681shell, you may need to run @code{sh} on it explicitly:
8682
8683@example
8684sh configure @var{host}
8685@end example
e251e767 8686
f672bb7f
RP
8687If you run @code{configure} from a directory that contains source
8688directories for multiple libraries or programs, such as the
18fae2a8 8689@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
f672bb7f 8690creates configuration files for every directory level underneath (unless
98349959 8691you tell it not to, with the @samp{--norecursion} option).
f672bb7f
RP
8692
8693You can run the @code{configure} script from any of the
d55320a0
RP
8694subordinate directories in the GDB distribution if you only want to
8695configure that subdirectory, but be sure to specify a path to it.
1041a570 8696
18fae2a8 8697For example, with version @value{GDBVN}, type the following to configure only
1041a570
RP
8698the @code{bfd} subdirectory:
8699
e251e767 8700@example
203eea5d 8701@group
18fae2a8 8702cd gdb-@value{GDBVN}/bfd
e251e767 8703../configure @var{host}
203eea5d 8704@end group
e251e767
RP
8705@end example
8706
18fae2a8 8707You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
1041a570
RP
8708However, you should make sure that the shell on your path (named by
8709the @samp{SHELL} environment variable) is publicly readable. Remember
c7cb8acb
RP
8710that GDB uses the shell to start your program---some systems refuse to
8711let GDB debug child processes whose programs are not readable.
3d3ab540
RP
8712
8713@menu
c7cb8acb 8714* Separate Objdir:: Compiling GDB in another directory
b80282d5
RP
8715* Config Names:: Specifying names for hosts and targets
8716* configure Options:: Summary of options for configure
3d3ab540
RP
8717@end menu
8718
4eb4cf57 8719@node Separate Objdir
93928b60 8720@section Compiling GDB in another directory
1041a570 8721
c7cb8acb 8722If you want to run GDB versions for several host or target machines,
ed447b95 8723you need a different @code{gdb} compiled for each combination of
1041a570 8724host and target. @code{configure} is designed to make this easy by
f672bb7f
RP
8725allowing you to generate each configuration in a separate subdirectory,
8726rather than in the source directory. If your @code{make} program
8727handles the @samp{VPATH} feature (GNU @code{make} does), running
ed447b95 8728@code{make} in each of these directories builds the @code{gdb}
f672bb7f 8729program specified there.
b80282d5 8730
c7cb8acb 8731To build @code{gdb} in a separate directory, run @code{configure}
f672bb7f 8732with the @samp{--srcdir} option to specify where to find the source.
93918348 8733(You also need to specify a path to find @code{configure}
77b46d13
JG
8734itself from your working directory. If the path to @code{configure}
8735would be the same as the argument to @samp{--srcdir}, you can leave out
9a27b06e 8736the @samp{--srcdir} option; it is assumed.)
1041a570 8737
18fae2a8 8738For example, with version @value{GDBVN}, you can build GDB in a separate
f672bb7f 8739directory for a Sun 4 like this:
70b88761
RP
8740
8741@example
3d3ab540 8742@group
18fae2a8 8743cd gdb-@value{GDBVN}
f672bb7f
RP
8744mkdir ../gdb-sun4
8745cd ../gdb-sun4
18fae2a8 8746../gdb-@value{GDBVN}/configure sun4
70b88761 8747make
3d3ab540 8748@end group
70b88761
RP
8749@end example
8750
f672bb7f
RP
8751When @code{configure} builds a configuration using a remote source
8752directory, it creates a tree for the binaries with the same structure
8753(and using the same names) as the tree under the source directory. In
8754the example, you'd find the Sun 4 library @file{libiberty.a} in the
c7cb8acb 8755directory @file{gdb-sun4/libiberty}, and GDB itself in
f672bb7f 8756@file{gdb-sun4/gdb}.
1041a570 8757
38962738 8758One popular reason to build several GDB configurations in separate
c7cb8acb 8759directories is to configure GDB for cross-compiling (where GDB
f672bb7f
RP
8760runs on one machine---the host---while debugging programs that run on
8761another machine---the target). You specify a cross-debugging target by
8762giving the @samp{--target=@var{target}} option to @code{configure}.
c7637ea6 8763
1041a570 8764When you run @code{make} to build a program or library, you must run
f672bb7f
RP
8765it in a configured directory---whatever directory you were in when you
8766called @code{configure} (or one of its subdirectories).
c7637ea6 8767
fe715d06 8768The @code{Makefile} that @code{configure} generates in each source
f672bb7f 8769directory also runs recursively. If you type @code{make} in a source
18fae2a8 8770directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
b550c03a 8771directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
ed447b95 8772will build all the required libraries, and then build GDB.
3d3ab540 8773
f672bb7f
RP
8774When you have multiple hosts or targets configured in separate
8775directories, you can run @code{make} on them in parallel (for example,
8776if they are NFS-mounted on each of the hosts); they will not interfere
8777with each other.
3d3ab540 8778
4eb4cf57 8779@node Config Names
93928b60 8780@section Specifying names for hosts and targets
b80282d5
RP
8781
8782The specifications used for hosts and targets in the @code{configure}
8783script are based on a three-part naming scheme, but some short predefined
8784aliases are also supported. The full naming scheme encodes three pieces
e251e767 8785of information in the following pattern:
1041a570 8786
b80282d5
RP
8787@example
8788@var{architecture}-@var{vendor}-@var{os}
8789@end example
8790
8c69096b
RP
8791For example, you can use the alias @code{sun4} as a @var{host} argument,
8792or as the value for @var{target} in a @code{--target=@var{target}}
8793option. The equivalent full name is @samp{sparc-sun-sunos4}.
b80282d5 8794
c7cb8acb 8795The @code{configure} script accompanying GDB does not provide
b80282d5
RP
8796any query facility to list all supported host and target names or
8797aliases. @code{configure} calls the Bourne shell script
8798@code{config.sub} to map abbreviations to full names; you can read the
8799script, if you wish, or you can use it to test your guesses on
8800abbreviations---for example:
1041a570 8801
b1385986 8802@smallexample
b80282d5 8803% sh config.sub sun4
d55320a0 8804sparc-sun-sunos4.1.1
b80282d5 8805% sh config.sub sun3
d55320a0 8806m68k-sun-sunos4.1.1
b80282d5 8807% sh config.sub decstation
d55320a0 8808mips-dec-ultrix4.2
b80282d5
RP
8809% sh config.sub hp300bsd
8810m68k-hp-bsd
8811% sh config.sub i386v
6a8cb0e7 8812i386-unknown-sysv
e94b4a2b 8813% sh config.sub i786v
6a8cb0e7 8814Invalid configuration `i786v': machine `i786v' not recognized
b1385986 8815@end smallexample
1041a570 8816
c7637ea6 8817@noindent
1041a570 8818@code{config.sub} is also distributed in the GDB source
18fae2a8 8819directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
b80282d5 8820
4eb4cf57 8821@node configure Options
93928b60 8822@section @code{configure} options
7463aadd 8823
d48da190 8824Here is a summary of the @code{configure} options and arguments that
18fae2a8 8825are most often useful for building @value{GDBN}. @code{configure} also has
d48da190
RP
8826several other options not listed here. @inforef{What Configure
8827Does,,configure.info}, for a full explanation of @code{configure}.
8828@c FIXME: Would this be more, or less, useful as an xref (ref to printed
8829@c manual in the printed manual, ref to info file only from the info file)?
7463aadd
RP
8830
8831@example
d48da190
RP
8832configure @r{[}--help@r{]}
8833 @r{[}--prefix=@var{dir}@r{]}
b550c03a 8834 @r{[}--srcdir=@var{dirname}@r{]}
f672bb7f
RP
8835 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
8836 @r{[}--target=@var{target}@r{]} @var{host}
7463aadd 8837@end example
1041a570 8838
3d3ab540 8839@noindent
f672bb7f
RP
8840You may introduce options with a single @samp{-} rather than
8841@samp{--} if you prefer; but you may abbreviate option names if you use
8842@samp{--}.
70b88761
RP
8843
8844@table @code
d48da190
RP
8845@item --help
8846Display a quick summary of how to invoke @code{configure}.
8847
8848@item -prefix=@var{dir}
8849Configure the source to install programs and files under directory
8850@file{@var{dir}}.
8851
b1955f0b
RP
8852@c avoid splitting the warning from the explanation:
8853@need 2000
b550c03a 8854@item --srcdir=@var{dirname}
6ca72cc6
RP
8855@strong{Warning: using this option requires GNU @code{make}, or another
8856@code{make} that implements the @code{VPATH} feature.}@*
f672bb7f 8857Use this option to make configurations in directories separate from the
c7cb8acb 8858GDB source directories. Among other things, you can use this to
f672bb7f
RP
8859build (or maintain) several configurations simultaneously, in separate
8860directories. @code{configure} writes configuration specific files in
8861the current directory, but arranges for them to use the source in the
b550c03a 8862directory @var{dirname}. @code{configure} creates directories under
f672bb7f 8863the working directory in parallel to the source directories below
b550c03a 8864@var{dirname}.
f672bb7f
RP
8865
8866@item --norecursion
8867Configure only the directory level where @code{configure} is executed; do not
7463aadd
RP
8868propagate configuration to subdirectories.
8869
f672bb7f 8870@item --rm
d55320a0 8871@emph{Remove} files otherwise built during configuration.
7463aadd 8872
29a2b744 8873@c This does not work (yet if ever). FIXME.
f672bb7f 8874@c @item --parse=@var{lang} @dots{}
c7cb8acb
RP
8875@c Configure the GDB expression parser to parse the listed languages.
8876@c @samp{all} configures GDB for all supported languages. To get a
d7b569d5 8877@c list of all supported languages, omit the argument. Without this
c7cb8acb 8878@c option, GDB is configured to parse all supported languages.
c2bbbb22 8879
f672bb7f 8880@item --target=@var{target}
c7cb8acb
RP
8881Configure GDB for cross-debugging programs running on the specified
8882@var{target}. Without this option, GDB is configured to debug
8883programs that run on the same machine (@var{host}) as GDB itself.
b80282d5
RP
8884
8885There is no convenient way to generate a list of all available targets.
7463aadd
RP
8886
8887@item @var{host} @dots{}
c7cb8acb 8888Configure GDB to run on the specified @var{host}.
b80282d5
RP
8889
8890There is no convenient way to generate a list of all available hosts.
70b88761
RP
8891@end table
8892
3d3ab540
RP
8893@noindent
8894@code{configure} accepts other options, for compatibility with
b80282d5 8895configuring other GNU tools recursively; but these are the only
c7cb8acb 8896options that affect GDB or its supporting libraries.
18fae2a8 8897@end ifclear
3d3ab540 8898
4eb4cf57 8899@node Index
d2e08421 8900@unnumbered Index
e91b87a3 8901
8902@printindex cp
8903
fe3f5fc8
RP
8904@tex
8905% I think something like @colophon should be in texinfo. In the
8906% meantime:
8907\long\def\colophon{\hbox to0pt{}\vfill
8908\centerline{The body of this manual is set in}
8909\centerline{\fontname\tenrm,}
8910\centerline{with headings in {\bf\fontname\tenbf}}
8911\centerline{and examples in {\tt\fontname\tentt}.}
a6d0b6d3
RP
8912\centerline{{\it\fontname\tenit\/},}
8913\centerline{{\bf\fontname\tenbf}, and}
fe3f5fc8
RP
8914\centerline{{\sl\fontname\tensl\/}}
8915\centerline{are used for emphasis.}\vfill}
8916\page\colophon
a6d0b6d3 8917% Blame: pesch@cygnus.com, 1991.
fe3f5fc8
RP
8918@end tex
8919
e91b87a3 8920@contents
8921@bye
This page took 0.755028 seconds and 4 git commands to generate.