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