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