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