* maint.c (match_substring): Make parameters `string' and `substr'
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
CommitLineData
c906108c 1\input texinfo @c -*-texinfo-*-
b6ba6518
KB
2@c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
3@c 1999, 2000, 2001
c906108c
SS
4@c Free Software Foundation, Inc.
5@c
5d161b24 6@c %**start of header
c906108c
SS
7@c makeinfo ignores cmds prev to setfilename, so its arg cannot make use
8@c of @set vars. However, you can override filename with makeinfo -o.
9@setfilename gdb.info
10@c
11@include gdb-cfg.texi
12@c
c906108c 13@settitle Debugging with @value{GDBN}
c906108c
SS
14@setchapternewpage odd
15@c %**end of header
16
17@iftex
18@c @smallbook
19@c @cropmarks
20@end iftex
21
22@finalout
23@syncodeindex ky cp
24
41afff9a 25@c readline appendices use @vindex, @findex and @ftable,
48e934c6 26@c annotate.texi and gdbmi use @findex.
c906108c 27@syncodeindex vr cp
41afff9a 28@syncodeindex fn cp
c906108c
SS
29
30@c !!set GDB manual's edition---not the same as GDB version!
e9c75b65 31@set EDITION Ninth
c906108c
SS
32
33@c !!set GDB manual's revision date
e9c75b65 34@set DATE April 2001
c906108c 35
6d2ebf8b 36@c THIS MANUAL REQUIRES TEXINFO 3.12 OR LATER.
c906108c 37
c906108c 38@c This is a dir.info fragment to support semi-automated addition of
6d2ebf8b 39@c manuals to an info tree.
96a2c332
SS
40@dircategory Programming & development tools.
41@direntry
c906108c 42* Gdb: (gdb). The @sc{gnu} debugger.
96a2c332
SS
43@end direntry
44
c906108c
SS
45@ifinfo
46This file documents the @sc{gnu} debugger @value{GDBN}.
47
48
5d161b24 49This is the @value{EDITION} Edition, @value{DATE},
c906108c
SS
50of @cite{Debugging with @value{GDBN}: the @sc{gnu} Source-Level Debugger}
51for @value{GDBN} Version @value{GDBVN}.
52
e9c75b65
EZ
53Copyright (C) 1988,1989,1990,1991,1992,1993,1994,1995,1996,1998,1999,2000,2001
54 Free Software Foundation, Inc.
c906108c 55
e9c75b65
EZ
56Permission is granted to copy, distribute and/or modify this document
57under the terms of the GNU Free Documentation License, Version 1.1 or
58any later version published by the Free Software Foundation; with the
59Invariant Sections being ``A Sample GDB Session'' and ``Free
60Software'', with the Front-Cover texts being ``A GNU Manual,'' and
61with the Back-Cover Texts as in (a) below.
c906108c 62
e9c75b65
EZ
63(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
64this GNU Manual, like GNU software. Copies published by the Free
65Software Foundation raise funds for GNU development.''
c906108c
SS
66@end ifinfo
67
68@titlepage
69@title Debugging with @value{GDBN}
70@subtitle The @sc{gnu} Source-Level Debugger
c906108c 71@sp 1
c906108c
SS
72@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
73@subtitle @value{DATE}
9e9c5ae7 74@author Richard Stallman, Roland Pesch, Stan Shebs, et al.
c906108c 75@page
c906108c
SS
76@tex
77{\parskip=0pt
53a5351d 78\hfill (Send bugs and comments on @value{GDBN} to bug-gdb\@gnu.org.)\par
c906108c
SS
79\hfill {\it Debugging with @value{GDBN}}\par
80\hfill \TeX{}info \texinfoversion\par
81}
82@end tex
53a5351d 83
c906108c 84@vskip 0pt plus 1filll
e9c75b65
EZ
85Copyright @copyright{} 1988,1989,1990,1991,1992,1993,1994,1995,1996,1998,1999,2000,2001
86 Free Software Foundation, Inc.
c906108c 87@sp 2
c906108c
SS
88Published by the Free Software Foundation @*
8959 Temple Place - Suite 330, @*
90Boston, MA 02111-1307 USA @*
6d2ebf8b 91ISBN 1-882114-77-9 @*
e9c75b65
EZ
92
93Permission is granted to copy, distribute and/or modify this document
94under the terms of the GNU Free Documentation License, Version 1.1 or
95any later version published by the Free Software Foundation; with the
96Invariant Sections being ``A Sample GDB Session'' and ``Free
97Software'', with the Front-Cover texts being ``A GNU Manual,'' and
98with the Back-Cover Texts as in (a) below.
99
100(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
101this GNU Manual, like GNU software. Copies published by the Free
102Software Foundation raise funds for GNU development.''
c906108c
SS
103@end titlepage
104@page
105
b9deaee7 106@ifinfo
6d2ebf8b
SS
107@node Top, Summary, (dir), (dir)
108
c906108c
SS
109@top Debugging with @value{GDBN}
110
111This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
112
5d161b24 113This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
c906108c
SS
114@value{GDBVN}.
115
e9c75b65 116Copyright (C) 1988-2001 Free Software Foundation, Inc.
6d2ebf8b
SS
117
118@menu
119* Summary:: Summary of @value{GDBN}
120* Sample Session:: A sample @value{GDBN} session
121
122* Invocation:: Getting in and out of @value{GDBN}
123* Commands:: @value{GDBN} commands
124* Running:: Running programs under @value{GDBN}
125* Stopping:: Stopping and continuing
126* Stack:: Examining the stack
127* Source:: Examining source files
128* Data:: Examining data
b37052ae 129* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 130* Overlays:: Debugging programs that use overlays
6d2ebf8b
SS
131
132* Languages:: Using @value{GDBN} with different languages
133
134* Symbols:: Examining the symbol table
135* Altering:: Altering execution
136* GDB Files:: @value{GDBN} files
137* Targets:: Specifying a debugging target
138* Configurations:: Configuration-specific information
139* Controlling GDB:: Controlling @value{GDBN}
140* Sequences:: Canned sequences of commands
c4555f82 141* TUI:: @value{GDBN} Text User Interface
6d2ebf8b
SS
142* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
143* Annotations:: @value{GDBN}'s annotation interface.
7162c0ca 144* GDB/MI:: @value{GDBN}'s Machine Interface.
6d2ebf8b
SS
145
146* GDB Bugs:: Reporting bugs in @value{GDBN}
147* Formatting Documentation:: How to format and print @value{GDBN} documentation
148
149* Command Line Editing:: Command Line Editing
150* Using History Interactively:: Using History Interactively
151* Installing GDB:: Installing GDB
152* Index:: Index
153@end menu
154
b9deaee7 155@end ifinfo
6d2ebf8b
SS
156
157@c the replication sucks, but this avoids a texinfo 3.12 lameness
158
159@ifhtml
160@node Top
161
162@top Debugging with @value{GDBN}
163
164This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
165
b37052ae 166This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
6d2ebf8b
SS
167@value{GDBVN}.
168
169Copyright (C) 1988-2000 Free Software Foundation, Inc.
170
c906108c
SS
171@menu
172* Summary:: Summary of @value{GDBN}
c906108c 173* Sample Session:: A sample @value{GDBN} session
c906108c
SS
174
175* Invocation:: Getting in and out of @value{GDBN}
176* Commands:: @value{GDBN} commands
177* Running:: Running programs under @value{GDBN}
178* Stopping:: Stopping and continuing
179* Stack:: Examining the stack
180* Source:: Examining source files
181* Data:: Examining data
496e6bc3 182* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 183* Overlays:: Debugging programs that use overlays
c906108c 184
7a292a7a 185* Languages:: Using @value{GDBN} with different languages
c906108c
SS
186
187* Symbols:: Examining the symbol table
188* Altering:: Altering execution
189* GDB Files:: @value{GDBN} files
190* Targets:: Specifying a debugging target
104c1213 191* Configurations:: Configuration-specific information
c906108c
SS
192* Controlling GDB:: Controlling @value{GDBN}
193* Sequences:: Canned sequences of commands
496e6bc3 194* TUI:: @value{GDBN} Text User Interface
c906108c 195* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
6d2ebf8b 196* Annotations:: @value{GDBN}'s annotation interface.
496e6bc3 197* GDB/MI:: @value{GDBN}'s Machine Interface.
c906108c
SS
198
199* GDB Bugs:: Reporting bugs in @value{GDBN}
c906108c 200* Formatting Documentation:: How to format and print @value{GDBN} documentation
c906108c
SS
201
202* Command Line Editing:: Command Line Editing
203* Using History Interactively:: Using History Interactively
204* Installing GDB:: Installing GDB
205* Index:: Index
c906108c
SS
206@end menu
207
6d2ebf8b
SS
208@end ifhtml
209
449f3b6c
AC
210@c TeX can handle the contents at the start but makeinfo 3.12 can not
211@iftex
212@contents
213@end iftex
214
6d2ebf8b 215@node Summary
c906108c
SS
216@unnumbered Summary of @value{GDBN}
217
218The purpose of a debugger such as @value{GDBN} is to allow you to see what is
219going on ``inside'' another program while it executes---or what another
220program was doing at the moment it crashed.
221
222@value{GDBN} can do four main kinds of things (plus other things in support of
223these) to help you catch bugs in the act:
224
225@itemize @bullet
226@item
227Start your program, specifying anything that might affect its behavior.
228
229@item
230Make your program stop on specified conditions.
231
232@item
233Examine what has happened, when your program has stopped.
234
235@item
236Change things in your program, so you can experiment with correcting the
237effects of one bug and go on to learn about another.
238@end itemize
239
cce74817 240You can use @value{GDBN} to debug programs written in C and C++.
c906108c 241For more information, see @ref{Support,,Supported languages}.
c906108c
SS
242For more information, see @ref{C,,C and C++}.
243
cce74817
JM
244@cindex Chill
245@cindex Modula-2
c906108c 246Support for Modula-2 and Chill is partial. For information on Modula-2,
cce74817 247see @ref{Modula-2,,Modula-2}. For information on Chill, see @ref{Chill}.
c906108c 248
cce74817
JM
249@cindex Pascal
250Debugging Pascal programs which use sets, subranges, file variables, or
251nested functions does not currently work. @value{GDBN} does not support
252entering expressions, printing values, or similar features using Pascal
253syntax.
c906108c 254
c906108c
SS
255@cindex Fortran
256@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 257it may be necessary to refer to some variables with a trailing
cce74817 258underscore.
c906108c 259
c906108c
SS
260@menu
261* Free Software:: Freely redistributable software
262* Contributors:: Contributors to GDB
263@end menu
264
6d2ebf8b 265@node Free Software
c906108c
SS
266@unnumberedsec Free software
267
5d161b24 268@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
c906108c
SS
269General Public License
270(GPL). The GPL gives you the freedom to copy or adapt a licensed
271program---but every person getting a copy also gets with it the
272freedom to modify that copy (which means that they must get access to
273the source code), and the freedom to distribute further copies.
274Typical software companies use copyrights to limit your freedoms; the
275Free Software Foundation uses the GPL to preserve these freedoms.
276
277Fundamentally, the General Public License is a license which says that
278you have these freedoms and that you cannot take these freedoms away
279from anyone else.
280
6d2ebf8b 281@node Contributors
96a2c332
SS
282@unnumberedsec Contributors to @value{GDBN}
283
284Richard Stallman was the original author of @value{GDBN}, and of many
285other @sc{gnu} programs. Many others have contributed to its
286development. This section attempts to credit major contributors. One
287of the virtues of free software is that everyone is free to contribute
288to it; with regret, we cannot actually acknowledge everyone here. The
289file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
290blow-by-blow account.
291
292Changes much prior to version 2.0 are lost in the mists of time.
293
294@quotation
295@emph{Plea:} Additions to this section are particularly welcome. If you
296or your friends (or enemies, to be evenhanded) have been unfairly
297omitted from this list, we would like to add your names!
298@end quotation
299
300So that they may not regard their many labors as thankless, we
301particularly thank those who shepherded @value{GDBN} through major
302releases:
b37052ae 303Andrew Cagney (releases 5.0 and 5.1);
c906108c
SS
304Jim Blandy (release 4.18);
305Jason Molenda (release 4.17);
306Stan Shebs (release 4.14);
307Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
308Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
309John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
310Jim Kingdon (releases 3.5, 3.4, and 3.3);
311and Randy Smith (releases 3.2, 3.1, and 3.0).
312
313Richard Stallman, assisted at various times by Peter TerMaat, Chris
314Hanson, and Richard Mlynarik, handled releases through 2.8.
315
b37052ae
EZ
316Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
317in @value{GDBN}, with significant additional contributions from Per
318Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
319demangler. Early work on C@t{++} was by Peter TerMaat (who also did
320much general update work leading to release 3.0).
c906108c 321
b37052ae 322@value{GDBN} uses the BFD subroutine library to examine multiple
c906108c
SS
323object-file formats; BFD was a joint project of David V.
324Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
325
326David Johnson wrote the original COFF support; Pace Willison did
327the original support for encapsulated COFF.
328
96c405b3 329Brent Benson of Harris Computer Systems contributed DWARF2 support.
c906108c
SS
330
331Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
332Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
333support.
334Jean-Daniel Fekete contributed Sun 386i support.
335Chris Hanson improved the HP9000 support.
336Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
337David Johnson contributed Encore Umax support.
338Jyrki Kuoppala contributed Altos 3068 support.
339Jeff Law contributed HP PA and SOM support.
340Keith Packard contributed NS32K support.
341Doug Rabson contributed Acorn Risc Machine support.
342Bob Rusk contributed Harris Nighthawk CX-UX support.
343Chris Smith contributed Convex support (and Fortran debugging).
344Jonathan Stone contributed Pyramid support.
345Michael Tiemann contributed SPARC support.
346Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
347Pace Willison contributed Intel 386 support.
348Jay Vosburgh contributed Symmetry support.
349
350Andreas Schwab contributed M68K Linux support.
351
352Rich Schaefer and Peter Schauer helped with support of SunOS shared
353libraries.
354
355Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
356about several machine instruction sets.
357
358Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
359remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
360contributed remote debugging modules for the i960, VxWorks, A29K UDI,
361and RDI targets, respectively.
362
363Brian Fox is the author of the readline libraries providing
364command-line editing and command history.
365
7a292a7a
SS
366Andrew Beers of SUNY Buffalo wrote the language-switching code, the
367Modula-2 support, and contributed the Languages chapter of this manual.
c906108c 368
5d161b24 369Fred Fish wrote most of the support for Unix System Vr4.
b37052ae 370He also enhanced the command-completion support to cover C@t{++} overloaded
c906108c 371symbols.
c906108c
SS
372
373Hitachi America, Ltd. sponsored the support for H8/300, H8/500, and
374Super-H processors.
375
376NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
377
378Mitsubishi sponsored the support for D10V, D30V, and M32R/D processors.
379
380Toshiba sponsored the support for the TX39 Mips processor.
381
382Matsushita sponsored the support for the MN10200 and MN10300 processors.
383
96a2c332 384Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
385
386Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
387watchpoints.
388
389Michael Snyder added support for tracepoints.
390
391Stu Grossman wrote gdbserver.
392
393Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 394nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
395
396The following people at the Hewlett-Packard Company contributed
397support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
b37052ae 398(narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
c906108c
SS
399compiler, and the terminal user interface: Ben Krepp, Richard Title,
400John Bishop, Susan Macchia, Kathy Mann, Satish Pai, India Paul, Steve
401Rehrauer, and Elena Zannoni. Kim Haase provided HP-specific
402information in this manual.
403
b37052ae
EZ
404DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
405Robert Hoehne made significant contributions to the DJGPP port.
406
96a2c332
SS
407Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
408development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
409fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
410Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
411Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
412Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
413Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
414addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
415JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
416Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
417Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
418Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
419Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
420Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
421Zuhn have made contributions both large and small.
c906108c
SS
422
423
6d2ebf8b 424@node Sample Session
c906108c
SS
425@chapter A Sample @value{GDBN} Session
426
427You can use this manual at your leisure to read all about @value{GDBN}.
428However, a handful of commands are enough to get started using the
429debugger. This chapter illustrates those commands.
430
431@iftex
432In this sample session, we emphasize user input like this: @b{input},
433to make it easier to pick out from the surrounding output.
434@end iftex
435
436@c FIXME: this example may not be appropriate for some configs, where
437@c FIXME...primary interest is in remote use.
438
439One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
440processor) exhibits the following bug: sometimes, when we change its
441quote strings from the default, the commands used to capture one macro
442definition within another stop working. In the following short @code{m4}
443session, we define a macro @code{foo} which expands to @code{0000}; we
444then use the @code{m4} built-in @code{defn} to define @code{bar} as the
445same thing. However, when we change the open quote string to
446@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
447procedure fails to define a new synonym @code{baz}:
448
449@smallexample
450$ @b{cd gnu/m4}
451$ @b{./m4}
452@b{define(foo,0000)}
453
454@b{foo}
4550000
456@b{define(bar,defn(`foo'))}
457
458@b{bar}
4590000
460@b{changequote(<QUOTE>,<UNQUOTE>)}
461
462@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
463@b{baz}
464@b{C-d}
465m4: End of input: 0: fatal error: EOF in string
466@end smallexample
467
468@noindent
469Let us use @value{GDBN} to try to see what is going on.
470
c906108c
SS
471@smallexample
472$ @b{@value{GDBP} m4}
473@c FIXME: this falsifies the exact text played out, to permit smallbook
474@c FIXME... format to come out better.
475@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 476 of it under certain conditions; type "show copying" to see
c906108c 477 the conditions.
5d161b24 478There is absolutely no warranty for @value{GDBN}; type "show warranty"
c906108c
SS
479 for details.
480
481@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
482(@value{GDBP})
483@end smallexample
c906108c
SS
484
485@noindent
486@value{GDBN} reads only enough symbol data to know where to find the
487rest when needed; as a result, the first prompt comes up very quickly.
488We now tell @value{GDBN} to use a narrower display width than usual, so
489that examples fit in this manual.
490
491@smallexample
492(@value{GDBP}) @b{set width 70}
493@end smallexample
494
495@noindent
496We need to see how the @code{m4} built-in @code{changequote} works.
497Having looked at the source, we know the relevant subroutine is
498@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
499@code{break} command.
500
501@smallexample
502(@value{GDBP}) @b{break m4_changequote}
503Breakpoint 1 at 0x62f4: file builtin.c, line 879.
504@end smallexample
505
506@noindent
507Using the @code{run} command, we start @code{m4} running under @value{GDBN}
508control; as long as control does not reach the @code{m4_changequote}
509subroutine, the program runs as usual:
510
511@smallexample
512(@value{GDBP}) @b{run}
513Starting program: /work/Editorial/gdb/gnu/m4/m4
514@b{define(foo,0000)}
515
516@b{foo}
5170000
518@end smallexample
519
520@noindent
521To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
522suspends execution of @code{m4}, displaying information about the
523context where it stops.
524
525@smallexample
526@b{changequote(<QUOTE>,<UNQUOTE>)}
527
5d161b24 528Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
529 at builtin.c:879
530879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
531@end smallexample
532
533@noindent
534Now we use the command @code{n} (@code{next}) to advance execution to
535the next line of the current function.
536
537@smallexample
538(@value{GDBP}) @b{n}
539882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
540 : nil,
541@end smallexample
542
543@noindent
544@code{set_quotes} looks like a promising subroutine. We can go into it
545by using the command @code{s} (@code{step}) instead of @code{next}.
546@code{step} goes to the next line to be executed in @emph{any}
547subroutine, so it steps into @code{set_quotes}.
548
549@smallexample
550(@value{GDBP}) @b{s}
551set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
552 at input.c:530
553530 if (lquote != def_lquote)
554@end smallexample
555
556@noindent
557The display that shows the subroutine where @code{m4} is now
558suspended (and its arguments) is called a stack frame display. It
559shows a summary of the stack. We can use the @code{backtrace}
560command (which can also be spelled @code{bt}), to see where we are
561in the stack as a whole: the @code{backtrace} command displays a
562stack frame for each active subroutine.
563
564@smallexample
565(@value{GDBP}) @b{bt}
566#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
567 at input.c:530
5d161b24 568#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
569 at builtin.c:882
570#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
571#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
572 at macro.c:71
573#4 0x79dc in expand_input () at macro.c:40
574#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
575@end smallexample
576
577@noindent
578We step through a few more lines to see what happens. The first two
579times, we can use @samp{s}; the next two times we use @code{n} to avoid
580falling into the @code{xstrdup} subroutine.
581
582@smallexample
583(@value{GDBP}) @b{s}
5840x3b5c 532 if (rquote != def_rquote)
585(@value{GDBP}) @b{s}
5860x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
587def_lquote : xstrdup(lq);
588(@value{GDBP}) @b{n}
589536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
590 : xstrdup(rq);
591(@value{GDBP}) @b{n}
592538 len_lquote = strlen(rquote);
593@end smallexample
594
595@noindent
596The last line displayed looks a little odd; we can examine the variables
597@code{lquote} and @code{rquote} to see if they are in fact the new left
598and right quotes we specified. We use the command @code{p}
599(@code{print}) to see their values.
600
601@smallexample
602(@value{GDBP}) @b{p lquote}
603$1 = 0x35d40 "<QUOTE>"
604(@value{GDBP}) @b{p rquote}
605$2 = 0x35d50 "<UNQUOTE>"
606@end smallexample
607
608@noindent
609@code{lquote} and @code{rquote} are indeed the new left and right quotes.
610To look at some context, we can display ten lines of source
611surrounding the current line with the @code{l} (@code{list}) command.
612
613@smallexample
614(@value{GDBP}) @b{l}
615533 xfree(rquote);
616534
617535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
618 : xstrdup (lq);
619536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
620 : xstrdup (rq);
621537
622538 len_lquote = strlen(rquote);
623539 len_rquote = strlen(lquote);
624540 @}
625541
626542 void
627@end smallexample
628
629@noindent
630Let us step past the two lines that set @code{len_lquote} and
631@code{len_rquote}, and then examine the values of those variables.
632
633@smallexample
634(@value{GDBP}) @b{n}
635539 len_rquote = strlen(lquote);
636(@value{GDBP}) @b{n}
637540 @}
638(@value{GDBP}) @b{p len_lquote}
639$3 = 9
640(@value{GDBP}) @b{p len_rquote}
641$4 = 7
642@end smallexample
643
644@noindent
645That certainly looks wrong, assuming @code{len_lquote} and
646@code{len_rquote} are meant to be the lengths of @code{lquote} and
647@code{rquote} respectively. We can set them to better values using
648the @code{p} command, since it can print the value of
649any expression---and that expression can include subroutine calls and
650assignments.
651
652@smallexample
653(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
654$5 = 7
655(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
656$6 = 9
657@end smallexample
658
659@noindent
660Is that enough to fix the problem of using the new quotes with the
661@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
662executing with the @code{c} (@code{continue}) command, and then try the
663example that caused trouble initially:
664
665@smallexample
666(@value{GDBP}) @b{c}
667Continuing.
668
669@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
670
671baz
6720000
673@end smallexample
674
675@noindent
676Success! The new quotes now work just as well as the default ones. The
677problem seems to have been just the two typos defining the wrong
678lengths. We allow @code{m4} exit by giving it an EOF as input:
679
680@smallexample
681@b{C-d}
682Program exited normally.
683@end smallexample
684
685@noindent
686The message @samp{Program exited normally.} is from @value{GDBN}; it
687indicates @code{m4} has finished executing. We can end our @value{GDBN}
688session with the @value{GDBN} @code{quit} command.
689
690@smallexample
691(@value{GDBP}) @b{quit}
692@end smallexample
c906108c 693
6d2ebf8b 694@node Invocation
c906108c
SS
695@chapter Getting In and Out of @value{GDBN}
696
697This chapter discusses how to start @value{GDBN}, and how to get out of it.
5d161b24 698The essentials are:
c906108c 699@itemize @bullet
5d161b24 700@item
53a5351d 701type @samp{@value{GDBP}} to start @value{GDBN}.
5d161b24 702@item
c906108c
SS
703type @kbd{quit} or @kbd{C-d} to exit.
704@end itemize
705
706@menu
707* Invoking GDB:: How to start @value{GDBN}
708* Quitting GDB:: How to quit @value{GDBN}
709* Shell Commands:: How to use shell commands inside @value{GDBN}
710@end menu
711
6d2ebf8b 712@node Invoking GDB
c906108c
SS
713@section Invoking @value{GDBN}
714
c906108c
SS
715Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
716@value{GDBN} reads commands from the terminal until you tell it to exit.
717
718You can also run @code{@value{GDBP}} with a variety of arguments and options,
719to specify more of your debugging environment at the outset.
720
c906108c
SS
721The command-line options described here are designed
722to cover a variety of situations; in some environments, some of these
5d161b24 723options may effectively be unavailable.
c906108c
SS
724
725The most usual way to start @value{GDBN} is with one argument,
726specifying an executable program:
727
728@example
729@value{GDBP} @var{program}
730@end example
731
c906108c
SS
732@noindent
733You can also start with both an executable program and a core file
734specified:
735
736@example
737@value{GDBP} @var{program} @var{core}
738@end example
739
740You can, instead, specify a process ID as a second argument, if you want
741to debug a running process:
742
743@example
744@value{GDBP} @var{program} 1234
745@end example
746
747@noindent
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).
750
c906108c 751Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
752complete operating system; when you use @value{GDBN} as a remote
753debugger attached to a bare board, there may not be any notion of
754``process'', and there is often no way to get a core dump. @value{GDBN}
755will warn you if it is unable to attach or to read core dumps.
c906108c 756
aa26fa3a
TT
757You can optionally have @code{@value{GDBP}} pass any arguments after the
758executable file to the inferior using @code{--args}. This option stops
759option processing.
760@example
761gdb --args gcc -O2 -c foo.c
762@end example
763This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
764@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
765
96a2c332 766You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
767@value{GDBN}'s non-warranty, by specifying @code{-silent}:
768
769@smallexample
770@value{GDBP} -silent
771@end smallexample
772
773@noindent
774You can further control how @value{GDBN} starts up by using command-line
775options. @value{GDBN} itself can remind you of the options available.
776
777@noindent
778Type
779
780@example
781@value{GDBP} -help
782@end example
783
784@noindent
785to display all available options and briefly describe their use
786(@samp{@value{GDBP} -h} is a shorter equivalent).
787
788All options and command line arguments you give are processed
789in sequential order. The order makes a difference when the
790@samp{-x} option is used.
791
792
793@menu
c906108c
SS
794* File Options:: Choosing files
795* Mode Options:: Choosing modes
796@end menu
797
6d2ebf8b 798@node File Options
c906108c
SS
799@subsection Choosing files
800
2df3850c 801When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
802specifying an executable file and core file (or process ID). This is
803the same as if the arguments were specified by the @samp{-se} and
804@samp{-c} options respectively. (@value{GDBN} reads the first argument
805that does not have an associated option flag as equivalent to the
806@samp{-se} option followed by that argument; and the second argument
807that does not have an associated option flag, if any, as equivalent to
808the @samp{-c} option followed by that argument.)
7a292a7a
SS
809
810If @value{GDBN} has not been configured to included core file support,
811such as for most embedded targets, then it will complain about a second
812argument and ignore it.
c906108c
SS
813
814Many options have both long and short forms; both are shown in the
815following list. @value{GDBN} also recognizes the long forms if you truncate
816them, so long as enough of the option is present to be unambiguous.
817(If you prefer, you can flag option arguments with @samp{--} rather
818than @samp{-}, though we illustrate the more usual convention.)
819
d700128c
EZ
820@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
821@c way, both those who look for -foo and --foo in the index, will find
822@c it.
823
c906108c
SS
824@table @code
825@item -symbols @var{file}
826@itemx -s @var{file}
d700128c
EZ
827@cindex @code{--symbols}
828@cindex @code{-s}
c906108c
SS
829Read symbol table from file @var{file}.
830
831@item -exec @var{file}
832@itemx -e @var{file}
d700128c
EZ
833@cindex @code{--exec}
834@cindex @code{-e}
7a292a7a
SS
835Use file @var{file} as the executable file to execute when appropriate,
836and for examining pure data in conjunction with a core dump.
c906108c
SS
837
838@item -se @var{file}
d700128c 839@cindex @code{--se}
c906108c
SS
840Read symbol table from file @var{file} and use it as the executable
841file.
842
c906108c
SS
843@item -core @var{file}
844@itemx -c @var{file}
d700128c
EZ
845@cindex @code{--core}
846@cindex @code{-c}
c906108c
SS
847Use file @var{file} as a core dump to examine.
848
849@item -c @var{number}
850Connect to process ID @var{number}, as with the @code{attach} command
851(unless there is a file in core-dump format named @var{number}, in which
852case @samp{-c} specifies that file as a core dump to read).
c906108c
SS
853
854@item -command @var{file}
855@itemx -x @var{file}
d700128c
EZ
856@cindex @code{--command}
857@cindex @code{-x}
c906108c
SS
858Execute @value{GDBN} commands from file @var{file}. @xref{Command
859Files,, Command files}.
860
861@item -directory @var{directory}
862@itemx -d @var{directory}
d700128c
EZ
863@cindex @code{--directory}
864@cindex @code{-d}
c906108c
SS
865Add @var{directory} to the path to search for source files.
866
c906108c
SS
867@item -m
868@itemx -mapped
d700128c
EZ
869@cindex @code{--mapped}
870@cindex @code{-m}
c906108c
SS
871@emph{Warning: this option depends on operating system facilities that are not
872supported on all systems.}@*
873If memory-mapped files are available on your system through the @code{mmap}
5d161b24 874system call, you can use this option
c906108c
SS
875to have @value{GDBN} write the symbols from your
876program into a reusable file in the current directory. If the program you are debugging is
96a2c332 877called @file{/tmp/fred}, the mapped symbol file is @file{/tmp/fred.syms}.
c906108c
SS
878Future @value{GDBN} debugging sessions notice the presence of this file,
879and can quickly map in symbol information from it, rather than reading
880the symbol table from the executable program.
881
882The @file{.syms} file is specific to the host machine where @value{GDBN}
883is run. It holds an exact image of the internal @value{GDBN} symbol
884table. It cannot be shared across multiple host platforms.
c906108c 885
c906108c
SS
886@item -r
887@itemx -readnow
d700128c
EZ
888@cindex @code{--readnow}
889@cindex @code{-r}
c906108c
SS
890Read each symbol file's entire symbol table immediately, rather than
891the default, which is to read it incrementally as it is needed.
892This makes startup slower, but makes future operations faster.
53a5351d 893
c906108c
SS
894@end table
895
2df3850c 896You typically combine the @code{-mapped} and @code{-readnow} options in
c906108c 897order to build a @file{.syms} file that contains complete symbol
2df3850c
JM
898information. (@xref{Files,,Commands to specify files}, for information
899on @file{.syms} files.) A simple @value{GDBN} invocation to do nothing
900but build a @file{.syms} file for future use is:
c906108c
SS
901
902@example
2df3850c 903gdb -batch -nx -mapped -readnow programname
c906108c 904@end example
c906108c 905
6d2ebf8b 906@node Mode Options
c906108c
SS
907@subsection Choosing modes
908
909You can run @value{GDBN} in various alternative modes---for example, in
910batch mode or quiet mode.
911
912@table @code
913@item -nx
914@itemx -n
d700128c
EZ
915@cindex @code{--nx}
916@cindex @code{-n}
96565e91 917Do not execute commands found in any initialization files. Normally,
2df3850c
JM
918@value{GDBN} executes the commands in these files after all the command
919options and arguments have been processed. @xref{Command Files,,Command
920files}.
c906108c
SS
921
922@item -quiet
d700128c 923@itemx -silent
c906108c 924@itemx -q
d700128c
EZ
925@cindex @code{--quiet}
926@cindex @code{--silent}
927@cindex @code{-q}
c906108c
SS
928``Quiet''. Do not print the introductory and copyright messages. These
929messages are also suppressed in batch mode.
930
931@item -batch
d700128c 932@cindex @code{--batch}
c906108c
SS
933Run in batch mode. Exit with status @code{0} after processing all the
934command files specified with @samp{-x} (and all commands from
935initialization files, if not inhibited with @samp{-n}). Exit with
936nonzero status if an error occurs in executing the @value{GDBN} commands
937in the command files.
938
2df3850c
JM
939Batch mode may be useful for running @value{GDBN} as a filter, for
940example to download and run a program on another computer; in order to
941make this more useful, the message
c906108c
SS
942
943@example
944Program exited normally.
945@end example
946
947@noindent
2df3850c
JM
948(which is ordinarily issued whenever a program running under
949@value{GDBN} control terminates) is not issued when running in batch
950mode.
951
952@item -nowindows
953@itemx -nw
d700128c
EZ
954@cindex @code{--nowindows}
955@cindex @code{-nw}
2df3850c 956``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 957(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
958interface. If no GUI is available, this option has no effect.
959
960@item -windows
961@itemx -w
d700128c
EZ
962@cindex @code{--windows}
963@cindex @code{-w}
2df3850c
JM
964If @value{GDBN} includes a GUI, then this option requires it to be
965used if possible.
c906108c
SS
966
967@item -cd @var{directory}
d700128c 968@cindex @code{--cd}
c906108c
SS
969Run @value{GDBN} using @var{directory} as its working directory,
970instead of the current directory.
971
c906108c
SS
972@item -fullname
973@itemx -f
d700128c
EZ
974@cindex @code{--fullname}
975@cindex @code{-f}
7a292a7a
SS
976@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
977subprocess. It tells @value{GDBN} to output the full file name and line
978number in a standard, recognizable fashion each time a stack frame is
979displayed (which includes each time your program stops). This
980recognizable format looks like two @samp{\032} characters, followed by
981the file name, line number and character position separated by colons,
982and a newline. The Emacs-to-@value{GDBN} interface program uses the two
983@samp{\032} characters as a signal to display the source code for the
984frame.
c906108c 985
d700128c
EZ
986@item -epoch
987@cindex @code{--epoch}
988The Epoch Emacs-@value{GDBN} interface sets this option when it runs
989@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
990routines so as to allow Epoch to display values of expressions in a
991separate window.
992
993@item -annotate @var{level}
994@cindex @code{--annotate}
995This option sets the @dfn{annotation level} inside @value{GDBN}. Its
996effect is identical to using @samp{set annotate @var{level}}
997(@pxref{Annotations}).
998Annotation level controls how much information does @value{GDBN} print
999together with its prompt, values of expressions, source lines, and other
1000types of output. Level 0 is the normal, level 1 is for use when
1001@value{GDBN} is run as a subprocess of @sc{gnu} Emacs, level 2 is the
1002maximum annotation suitable for programs that control @value{GDBN}.
1003
1004@item -async
1005@cindex @code{--async}
1006Use the asynchronous event loop for the command-line interface.
1007@value{GDBN} processes all events, such as user keyboard input, via a
1008special event loop. This allows @value{GDBN} to accept and process user
1009commands in parallel with the debugged process being
1010run@footnote{@value{GDBN} built with @sc{djgpp} tools for
1011MS-DOS/MS-Windows supports this mode of operation, but the event loop is
1012suspended when the debuggee runs.}, so you don't need to wait for
1013control to return to @value{GDBN} before you type the next command.
b37052ae 1014(@emph{Note:} as of version 5.1, the target side of the asynchronous
d700128c
EZ
1015operation is not yet in place, so @samp{-async} does not work fully
1016yet.)
1017@c FIXME: when the target side of the event loop is done, the above NOTE
1018@c should be removed.
1019
1020When the standard input is connected to a terminal device, @value{GDBN}
1021uses the asynchronous event loop by default, unless disabled by the
1022@samp{-noasync} option.
1023
1024@item -noasync
1025@cindex @code{--noasync}
1026Disable the asynchronous event loop for the command-line interface.
1027
aa26fa3a
TT
1028@item --args
1029@cindex @code{--args}
1030Change interpretation of command line so that arguments following the
1031executable file are passed as command line arguments to the inferior.
1032This option stops option processing.
1033
2df3850c
JM
1034@item -baud @var{bps}
1035@itemx -b @var{bps}
d700128c
EZ
1036@cindex @code{--baud}
1037@cindex @code{-b}
c906108c
SS
1038Set the line speed (baud rate or bits per second) of any serial
1039interface used by @value{GDBN} for remote debugging.
c906108c
SS
1040
1041@item -tty @var{device}
d700128c
EZ
1042@itemx -t @var{device}
1043@cindex @code{--tty}
1044@cindex @code{-t}
c906108c
SS
1045Run using @var{device} for your program's standard input and output.
1046@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1047
53a5351d 1048@c resolve the situation of these eventually
c4555f82
SC
1049@item -tui
1050@cindex @code{--tui}
1051Activate the Terminal User Interface when starting.
1052The Terminal User Interface manages several text windows on the terminal,
1053showing source, assembly, registers and @value{GDBN} command outputs
1054(@pxref{TUI, ,@value{GDBN} Text User Interface}).
1055Do not use this option if you run @value{GDBN} from Emacs
1056(@pxref{Emacs, ,Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1057
1058@c @item -xdb
d700128c 1059@c @cindex @code{--xdb}
53a5351d
JM
1060@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1061@c For information, see the file @file{xdb_trans.html}, which is usually
1062@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1063@c systems.
1064
d700128c
EZ
1065@item -interpreter @var{interp}
1066@cindex @code{--interpreter}
1067Use the interpreter @var{interp} for interface with the controlling
1068program or device. This option is meant to be set by programs which
94bbb2c0
AC
1069communicate with @value{GDBN} using it as a back end.
1070
1071@samp{--interpreter=mi} (or @samp{--interpreter=mi1}) causes
1072@value{GDBN} to use the @dfn{gdb/mi interface} (@pxref{GDB/MI, , The
1073@sc{gdb/mi} Interface}). The older @sc{gdb/mi} interface, included in
1074@value{GDBN} version 5.0 can be selected with @samp{--interpreter=mi0}.
d700128c
EZ
1075
1076@item -write
1077@cindex @code{--write}
1078Open the executable and core files for both reading and writing. This
1079is equivalent to the @samp{set write on} command inside @value{GDBN}
1080(@pxref{Patching}).
1081
1082@item -statistics
1083@cindex @code{--statistics}
1084This option causes @value{GDBN} to print statistics about time and
1085memory usage after it completes each command and returns to the prompt.
1086
1087@item -version
1088@cindex @code{--version}
1089This option causes @value{GDBN} to print its version number and
1090no-warranty blurb, and exit.
1091
c906108c
SS
1092@end table
1093
6d2ebf8b 1094@node Quitting GDB
c906108c
SS
1095@section Quitting @value{GDBN}
1096@cindex exiting @value{GDBN}
1097@cindex leaving @value{GDBN}
1098
1099@table @code
1100@kindex quit @r{[}@var{expression}@r{]}
41afff9a 1101@kindex q @r{(@code{quit})}
96a2c332
SS
1102@item quit @r{[}@var{expression}@r{]}
1103@itemx q
1104To exit @value{GDBN}, use the @code{quit} command (abbreviated
1105@code{q}), or type an end-of-file character (usually @kbd{C-d}). If you
1106do not supply @var{expression}, @value{GDBN} will terminate normally;
1107otherwise it will terminate using the result of @var{expression} as the
1108error code.
c906108c
SS
1109@end table
1110
1111@cindex interrupt
1112An interrupt (often @kbd{C-c}) does not exit from @value{GDBN}, but rather
1113terminates the action of any @value{GDBN} command that is in progress and
1114returns to @value{GDBN} command level. It is safe to type the interrupt
1115character at any time because @value{GDBN} does not allow it to take effect
1116until a time when it is safe.
1117
c906108c
SS
1118If you have been using @value{GDBN} to control an attached process or
1119device, you can release it with the @code{detach} command
1120(@pxref{Attach, ,Debugging an already-running process}).
c906108c 1121
6d2ebf8b 1122@node Shell Commands
c906108c
SS
1123@section Shell commands
1124
1125If you need to execute occasional shell commands during your
1126debugging session, there is no need to leave or suspend @value{GDBN}; you can
1127just use the @code{shell} command.
1128
1129@table @code
1130@kindex shell
1131@cindex shell escape
1132@item shell @var{command string}
1133Invoke a standard shell to execute @var{command string}.
c906108c 1134If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1135shell to run. Otherwise @value{GDBN} uses the default shell
1136(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1137@end table
1138
1139The utility @code{make} is often needed in development environments.
1140You do not have to use the @code{shell} command for this purpose in
1141@value{GDBN}:
1142
1143@table @code
1144@kindex make
1145@cindex calling make
1146@item make @var{make-args}
1147Execute the @code{make} program with the specified
1148arguments. This is equivalent to @samp{shell make @var{make-args}}.
1149@end table
1150
6d2ebf8b 1151@node Commands
c906108c
SS
1152@chapter @value{GDBN} Commands
1153
1154You can abbreviate a @value{GDBN} command to the first few letters of the command
1155name, if that abbreviation is unambiguous; and you can repeat certain
1156@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1157key to get @value{GDBN} to fill out the rest of a word in a command (or to
1158show you the alternatives available, if there is more than one possibility).
1159
1160@menu
1161* Command Syntax:: How to give commands to @value{GDBN}
1162* Completion:: Command completion
1163* Help:: How to ask @value{GDBN} for help
1164@end menu
1165
6d2ebf8b 1166@node Command Syntax
c906108c
SS
1167@section Command syntax
1168
1169A @value{GDBN} command is a single line of input. There is no limit on
1170how long it can be. It starts with a command name, which is followed by
1171arguments whose meaning depends on the command name. For example, the
1172command @code{step} accepts an argument which is the number of times to
1173step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1174with no arguments. Some commands do not allow any arguments.
c906108c
SS
1175
1176@cindex abbreviation
1177@value{GDBN} command names may always be truncated if that abbreviation is
1178unambiguous. Other possible command abbreviations are listed in the
1179documentation for individual commands. In some cases, even ambiguous
1180abbreviations are allowed; for example, @code{s} is specially defined as
1181equivalent to @code{step} even though there are other commands whose
1182names start with @code{s}. You can test abbreviations by using them as
1183arguments to the @code{help} command.
1184
1185@cindex repeating commands
41afff9a 1186@kindex RET @r{(repeat last command)}
c906108c 1187A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1188repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1189will not repeat this way; these are commands whose unintentional
1190repetition might cause trouble and which you are unlikely to want to
1191repeat.
1192
1193The @code{list} and @code{x} commands, when you repeat them with
1194@key{RET}, construct new arguments rather than repeating
1195exactly as typed. This permits easy scanning of source or memory.
1196
1197@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1198output, in a way similar to the common utility @code{more}
1199(@pxref{Screen Size,,Screen size}). Since it is easy to press one
1200@key{RET} too many in this situation, @value{GDBN} disables command
1201repetition after any command that generates this sort of display.
1202
41afff9a 1203@kindex # @r{(a comment)}
c906108c
SS
1204@cindex comment
1205Any text from a @kbd{#} to the end of the line is a comment; it does
1206nothing. This is useful mainly in command files (@pxref{Command
1207Files,,Command files}).
1208
88118b3a
TT
1209@cindex repeating command sequences
1210@kindex C-o @r{(operate-and-get-next)}
1211The @kbd{C-o} binding is useful for repeating a complex sequence of
1212commands. This command accepts the current line, like @kbd{RET}, and
1213then fetches the next line relative to the current line from the history
1214for editing.
1215
6d2ebf8b 1216@node Completion
c906108c
SS
1217@section Command completion
1218
1219@cindex completion
1220@cindex word completion
1221@value{GDBN} can fill in the rest of a word in a command for you, if there is
1222only one possibility; it can also show you what the valid possibilities
1223are for the next word in a command, at any time. This works for @value{GDBN}
1224commands, @value{GDBN} subcommands, and the names of symbols in your program.
1225
1226Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1227of a word. If there is only one possibility, @value{GDBN} fills in the
1228word, and waits for you to finish the command (or press @key{RET} to
1229enter it). For example, if you type
1230
1231@c FIXME "@key" does not distinguish its argument sufficiently to permit
1232@c complete accuracy in these examples; space introduced for clarity.
1233@c If texinfo enhancements make it unnecessary, it would be nice to
1234@c replace " @key" by "@key" in the following...
1235@example
1236(@value{GDBP}) info bre @key{TAB}
1237@end example
1238
1239@noindent
1240@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1241the only @code{info} subcommand beginning with @samp{bre}:
1242
1243@example
1244(@value{GDBP}) info breakpoints
1245@end example
1246
1247@noindent
1248You can either press @key{RET} at this point, to run the @code{info
1249breakpoints} command, or backspace and enter something else, if
1250@samp{breakpoints} does not look like the command you expected. (If you
1251were sure you wanted @code{info breakpoints} in the first place, you
1252might as well just type @key{RET} immediately after @samp{info bre},
1253to exploit command abbreviations rather than command completion).
1254
1255If there is more than one possibility for the next word when you press
1256@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1257characters and try again, or just press @key{TAB} a second time;
1258@value{GDBN} displays all the possible completions for that word. For
1259example, you might want to set a breakpoint on a subroutine whose name
1260begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1261just sounds the bell. Typing @key{TAB} again displays all the
1262function names in your program that begin with those characters, for
1263example:
1264
1265@example
1266(@value{GDBP}) b make_ @key{TAB}
1267@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1268make_a_section_from_file make_environ
1269make_abs_section make_function_type
1270make_blockvector make_pointer_type
1271make_cleanup make_reference_type
c906108c
SS
1272make_command make_symbol_completion_list
1273(@value{GDBP}) b make_
1274@end example
1275
1276@noindent
1277After displaying the available possibilities, @value{GDBN} copies your
1278partial input (@samp{b make_} in the example) so you can finish the
1279command.
1280
1281If you just want to see the list of alternatives in the first place, you
b37052ae 1282can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1283means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1284key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1285one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1286
1287@cindex quotes in commands
1288@cindex completion of quoted strings
1289Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1290parentheses or other characters that @value{GDBN} normally excludes from
1291its notion of a word. To permit word completion to work in this
1292situation, you may enclose words in @code{'} (single quote marks) in
1293@value{GDBN} commands.
c906108c 1294
c906108c 1295The most likely situation where you might need this is in typing the
b37052ae
EZ
1296name of a C@t{++} function. This is because C@t{++} allows function
1297overloading (multiple definitions of the same function, distinguished
1298by argument type). For example, when you want to set a breakpoint you
1299may need to distinguish whether you mean the version of @code{name}
1300that takes an @code{int} parameter, @code{name(int)}, or the version
1301that takes a @code{float} parameter, @code{name(float)}. To use the
1302word-completion facilities in this situation, type a single quote
1303@code{'} at the beginning of the function name. This alerts
1304@value{GDBN} that it may need to consider more information than usual
1305when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c
SS
1306
1307@example
96a2c332 1308(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1309bubble(double,double) bubble(int,int)
1310(@value{GDBP}) b 'bubble(
1311@end example
1312
1313In some cases, @value{GDBN} can tell that completing a name requires using
1314quotes. When this happens, @value{GDBN} inserts the quote for you (while
1315completing as much as it can) if you do not type the quote in the first
1316place:
1317
1318@example
1319(@value{GDBP}) b bub @key{TAB}
1320@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1321(@value{GDBP}) b 'bubble(
1322@end example
1323
1324@noindent
1325In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1326you have not yet started typing the argument list when you ask for
1327completion on an overloaded symbol.
1328
d4f3574e 1329For more information about overloaded functions, see @ref{C plus plus
b37052ae 1330expressions, ,C@t{++} expressions}. You can use the command @code{set
c906108c 1331overload-resolution off} to disable overload resolution;
b37052ae 1332see @ref{Debugging C plus plus, ,@value{GDBN} features for C@t{++}}.
c906108c
SS
1333
1334
6d2ebf8b 1335@node Help
c906108c
SS
1336@section Getting help
1337@cindex online documentation
1338@kindex help
1339
5d161b24 1340You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1341using the command @code{help}.
1342
1343@table @code
41afff9a 1344@kindex h @r{(@code{help})}
c906108c
SS
1345@item help
1346@itemx h
1347You can use @code{help} (abbreviated @code{h}) with no arguments to
1348display a short list of named classes of commands:
1349
1350@smallexample
1351(@value{GDBP}) help
1352List of classes of commands:
1353
2df3850c 1354aliases -- Aliases of other commands
c906108c 1355breakpoints -- Making program stop at certain points
2df3850c 1356data -- Examining data
c906108c 1357files -- Specifying and examining files
2df3850c
JM
1358internals -- Maintenance commands
1359obscure -- Obscure features
1360running -- Running the program
1361stack -- Examining the stack
c906108c
SS
1362status -- Status inquiries
1363support -- Support facilities
96a2c332
SS
1364tracepoints -- Tracing of program execution without@*
1365 stopping the program
c906108c 1366user-defined -- User-defined commands
c906108c 1367
5d161b24 1368Type "help" followed by a class name for a list of
c906108c 1369commands in that class.
5d161b24 1370Type "help" followed by command name for full
c906108c
SS
1371documentation.
1372Command name abbreviations are allowed if unambiguous.
1373(@value{GDBP})
1374@end smallexample
96a2c332 1375@c the above line break eliminates huge line overfull...
c906108c
SS
1376
1377@item help @var{class}
1378Using one of the general help classes as an argument, you can get a
1379list of the individual commands in that class. For example, here is the
1380help display for the class @code{status}:
1381
1382@smallexample
1383(@value{GDBP}) help status
1384Status inquiries.
1385
1386List of commands:
1387
1388@c Line break in "show" line falsifies real output, but needed
1389@c to fit in smallbook page size.
2df3850c
JM
1390info -- Generic command for showing things
1391 about the program being debugged
1392show -- Generic command for showing things
1393 about the debugger
c906108c 1394
5d161b24 1395Type "help" followed by command name for full
c906108c
SS
1396documentation.
1397Command name abbreviations are allowed if unambiguous.
1398(@value{GDBP})
1399@end smallexample
1400
1401@item help @var{command}
1402With a command name as @code{help} argument, @value{GDBN} displays a
1403short paragraph on how to use that command.
1404
6837a0a2
DB
1405@kindex apropos
1406@item apropos @var{args}
1407The @code{apropos @var{args}} command searches through all of the @value{GDBN}
1408commands, and their documentation, for the regular expression specified in
1409@var{args}. It prints out all matches found. For example:
1410
1411@smallexample
1412apropos reload
1413@end smallexample
1414
b37052ae
EZ
1415@noindent
1416results in:
6837a0a2
DB
1417
1418@smallexample
6d2ebf8b
SS
1419@c @group
1420set symbol-reloading -- Set dynamic symbol table reloading
1421 multiple times in one run
1422show symbol-reloading -- Show dynamic symbol table reloading
1423 multiple times in one run
1424@c @end group
6837a0a2
DB
1425@end smallexample
1426
c906108c
SS
1427@kindex complete
1428@item complete @var{args}
1429The @code{complete @var{args}} command lists all the possible completions
1430for the beginning of a command. Use @var{args} to specify the beginning of the
1431command you want completed. For example:
1432
1433@smallexample
1434complete i
1435@end smallexample
1436
1437@noindent results in:
1438
1439@smallexample
1440@group
2df3850c
JM
1441if
1442ignore
c906108c
SS
1443info
1444inspect
c906108c
SS
1445@end group
1446@end smallexample
1447
1448@noindent This is intended for use by @sc{gnu} Emacs.
1449@end table
1450
1451In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1452and @code{show} to inquire about the state of your program, or the state
1453of @value{GDBN} itself. Each command supports many topics of inquiry; this
1454manual introduces each of them in the appropriate context. The listings
1455under @code{info} and under @code{show} in the Index point to
1456all the sub-commands. @xref{Index}.
1457
1458@c @group
1459@table @code
1460@kindex info
41afff9a 1461@kindex i @r{(@code{info})}
c906108c
SS
1462@item info
1463This command (abbreviated @code{i}) is for describing the state of your
1464program. For example, you can list the arguments given to your program
1465with @code{info args}, list the registers currently in use with @code{info
1466registers}, or list the breakpoints you have set with @code{info breakpoints}.
1467You can get a complete list of the @code{info} sub-commands with
1468@w{@code{help info}}.
1469
1470@kindex set
1471@item set
5d161b24 1472You can assign the result of an expression to an environment variable with
c906108c
SS
1473@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1474@code{set prompt $}.
1475
1476@kindex show
1477@item show
5d161b24 1478In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1479@value{GDBN} itself.
1480You can change most of the things you can @code{show}, by using the
1481related command @code{set}; for example, you can control what number
1482system is used for displays with @code{set radix}, or simply inquire
1483which is currently in use with @code{show radix}.
1484
1485@kindex info set
1486To display all the settable parameters and their current
1487values, you can use @code{show} with no arguments; you may also use
1488@code{info set}. Both commands produce the same display.
1489@c FIXME: "info set" violates the rule that "info" is for state of
1490@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1491@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1492@end table
1493@c @end group
1494
1495Here are three miscellaneous @code{show} subcommands, all of which are
1496exceptional in lacking corresponding @code{set} commands:
1497
1498@table @code
1499@kindex show version
1500@cindex version number
1501@item show version
1502Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1503information in @value{GDBN} bug-reports. If multiple versions of
1504@value{GDBN} are in use at your site, you may need to determine which
1505version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1506commands are introduced, and old ones may wither away. Also, many
1507system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1508variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1509The version number is the same as the one announced when you start
1510@value{GDBN}.
c906108c
SS
1511
1512@kindex show copying
1513@item show copying
1514Display information about permission for copying @value{GDBN}.
1515
1516@kindex show warranty
1517@item show warranty
2df3850c 1518Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1519if your version of @value{GDBN} comes with one.
2df3850c 1520
c906108c
SS
1521@end table
1522
6d2ebf8b 1523@node Running
c906108c
SS
1524@chapter Running Programs Under @value{GDBN}
1525
1526When you run a program under @value{GDBN}, you must first generate
1527debugging information when you compile it.
7a292a7a
SS
1528
1529You may start @value{GDBN} with its arguments, if any, in an environment
1530of your choice. If you are doing native debugging, you may redirect
1531your program's input and output, debug an already running process, or
1532kill a child process.
c906108c
SS
1533
1534@menu
1535* Compilation:: Compiling for debugging
1536* Starting:: Starting your program
c906108c
SS
1537* Arguments:: Your program's arguments
1538* Environment:: Your program's environment
c906108c
SS
1539
1540* Working Directory:: Your program's working directory
1541* Input/Output:: Your program's input and output
1542* Attach:: Debugging an already-running process
1543* Kill Process:: Killing the child process
c906108c
SS
1544
1545* Threads:: Debugging programs with multiple threads
1546* Processes:: Debugging programs with multiple processes
1547@end menu
1548
6d2ebf8b 1549@node Compilation
c906108c
SS
1550@section Compiling for debugging
1551
1552In order to debug a program effectively, you need to generate
1553debugging information when you compile it. This debugging information
1554is stored in the object file; it describes the data type of each
1555variable or function and the correspondence between source line numbers
1556and addresses in the executable code.
1557
1558To request debugging information, specify the @samp{-g} option when you run
1559the compiler.
1560
1561Many C compilers are unable to handle the @samp{-g} and @samp{-O}
1562options together. Using those compilers, you cannot generate optimized
1563executables containing debugging information.
1564
53a5351d
JM
1565@value{NGCC}, the @sc{gnu} C compiler, supports @samp{-g} with or
1566without @samp{-O}, making it possible to debug optimized code. We
1567recommend that you @emph{always} use @samp{-g} whenever you compile a
1568program. You may think your program is correct, but there is no sense
1569in pushing your luck.
c906108c
SS
1570
1571@cindex optimized code, debugging
1572@cindex debugging optimized code
1573When you debug a program compiled with @samp{-g -O}, remember that the
1574optimizer is rearranging your code; the debugger shows you what is
1575really there. Do not be too surprised when the execution path does not
1576exactly match your source file! An extreme example: if you define a
1577variable, but never use it, @value{GDBN} never sees that
1578variable---because the compiler optimizes it out of existence.
1579
1580Some things do not work as well with @samp{-g -O} as with just
1581@samp{-g}, particularly on machines with instruction scheduling. If in
1582doubt, recompile with @samp{-g} alone, and if this fixes the problem,
1583please report it to us as a bug (including a test case!).
1584
1585Older versions of the @sc{gnu} C compiler permitted a variant option
1586@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1587format; if your @sc{gnu} C compiler has this option, do not use it.
1588
1589@need 2000
6d2ebf8b 1590@node Starting
c906108c
SS
1591@section Starting your program
1592@cindex starting
1593@cindex running
1594
1595@table @code
1596@kindex run
41afff9a 1597@kindex r @r{(@code{run})}
c906108c
SS
1598@item run
1599@itemx r
7a292a7a
SS
1600Use the @code{run} command to start your program under @value{GDBN}.
1601You must first specify the program name (except on VxWorks) with an
1602argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1603@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
1604(@pxref{Files, ,Commands to specify files}).
c906108c
SS
1605
1606@end table
1607
c906108c
SS
1608If you are running your program in an execution environment that
1609supports processes, @code{run} creates an inferior process and makes
1610that process run your program. (In environments without processes,
1611@code{run} jumps to the start of your program.)
1612
1613The execution of a program is affected by certain information it
1614receives from its superior. @value{GDBN} provides ways to specify this
1615information, which you must do @emph{before} starting your program. (You
1616can change it after starting your program, but such changes only affect
1617your program the next time you start it.) This information may be
1618divided into four categories:
1619
1620@table @asis
1621@item The @emph{arguments.}
1622Specify the arguments to give your program as the arguments of the
1623@code{run} command. If a shell is available on your target, the shell
1624is used to pass the arguments, so that you may use normal conventions
1625(such as wildcard expansion or variable substitution) in describing
1626the arguments.
1627In Unix systems, you can control which shell is used with the
1628@code{SHELL} environment variable.
1629@xref{Arguments, ,Your program's arguments}.
1630
1631@item The @emph{environment.}
1632Your program normally inherits its environment from @value{GDBN}, but you can
1633use the @value{GDBN} commands @code{set environment} and @code{unset
1634environment} to change parts of the environment that affect
1635your program. @xref{Environment, ,Your program's environment}.
1636
1637@item The @emph{working directory.}
1638Your program inherits its working directory from @value{GDBN}. You can set
1639the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
1640@xref{Working Directory, ,Your program's working directory}.
1641
1642@item The @emph{standard input and output.}
1643Your program normally uses the same device for standard input and
1644standard output as @value{GDBN} is using. You can redirect input and output
1645in the @code{run} command line, or you can use the @code{tty} command to
1646set a different device for your program.
1647@xref{Input/Output, ,Your program's input and output}.
1648
1649@cindex pipes
1650@emph{Warning:} While input and output redirection work, you cannot use
1651pipes to pass the output of the program you are debugging to another
1652program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1653wrong program.
1654@end table
c906108c
SS
1655
1656When you issue the @code{run} command, your program begins to execute
1657immediately. @xref{Stopping, ,Stopping and continuing}, for discussion
1658of how to arrange for your program to stop. Once your program has
1659stopped, you may call functions in your program, using the @code{print}
1660or @code{call} commands. @xref{Data, ,Examining Data}.
1661
1662If the modification time of your symbol file has changed since the last
1663time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1664table, and reads it again. When it does this, @value{GDBN} tries to retain
1665your current breakpoints.
1666
6d2ebf8b 1667@node Arguments
c906108c
SS
1668@section Your program's arguments
1669
1670@cindex arguments (to your program)
1671The arguments to your program can be specified by the arguments of the
5d161b24 1672@code{run} command.
c906108c
SS
1673They are passed to a shell, which expands wildcard characters and
1674performs redirection of I/O, and thence to your program. Your
1675@code{SHELL} environment variable (if it exists) specifies what shell
1676@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
1677the default shell (@file{/bin/sh} on Unix).
1678
1679On non-Unix systems, the program is usually invoked directly by
1680@value{GDBN}, which emulates I/O redirection via the appropriate system
1681calls, and the wildcard characters are expanded by the startup code of
1682the program, not by the shell.
c906108c
SS
1683
1684@code{run} with no arguments uses the same arguments used by the previous
1685@code{run}, or those set by the @code{set args} command.
1686
c906108c 1687@table @code
41afff9a 1688@kindex set args
c906108c
SS
1689@item set args
1690Specify the arguments to be used the next time your program is run. If
1691@code{set args} has no arguments, @code{run} executes your program
1692with no arguments. Once you have run your program with arguments,
1693using @code{set args} before the next @code{run} is the only way to run
1694it again without arguments.
1695
1696@kindex show args
1697@item show args
1698Show the arguments to give your program when it is started.
1699@end table
1700
6d2ebf8b 1701@node Environment
c906108c
SS
1702@section Your program's environment
1703
1704@cindex environment (of your program)
1705The @dfn{environment} consists of a set of environment variables and
1706their values. Environment variables conventionally record such things as
1707your user name, your home directory, your terminal type, and your search
1708path for programs to run. Usually you set up environment variables with
1709the shell and they are inherited by all the other programs you run. When
1710debugging, it can be useful to try running your program with a modified
1711environment without having to start @value{GDBN} over again.
1712
1713@table @code
1714@kindex path
1715@item path @var{directory}
1716Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
1717(the search path for executables) that will be passed to your program.
1718The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
1719You may specify several directory names, separated by whitespace or by a
1720system-dependent separator character (@samp{:} on Unix, @samp{;} on
1721MS-DOS and MS-Windows). If @var{directory} is already in the path, it
1722is moved to the front, so it is searched sooner.
c906108c
SS
1723
1724You can use the string @samp{$cwd} to refer to whatever is the current
1725working directory at the time @value{GDBN} searches the path. If you
1726use @samp{.} instead, it refers to the directory where you executed the
1727@code{path} command. @value{GDBN} replaces @samp{.} in the
1728@var{directory} argument (with the current path) before adding
1729@var{directory} to the search path.
1730@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
1731@c document that, since repeating it would be a no-op.
1732
1733@kindex show paths
1734@item show paths
1735Display the list of search paths for executables (the @code{PATH}
1736environment variable).
1737
1738@kindex show environment
1739@item show environment @r{[}@var{varname}@r{]}
1740Print the value of environment variable @var{varname} to be given to
1741your program when it starts. If you do not supply @var{varname},
1742print the names and values of all environment variables to be given to
1743your program. You can abbreviate @code{environment} as @code{env}.
1744
1745@kindex set environment
53a5351d 1746@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
1747Set environment variable @var{varname} to @var{value}. The value
1748changes for your program only, not for @value{GDBN} itself. @var{value} may
1749be any string; the values of environment variables are just strings, and
1750any interpretation is supplied by your program itself. The @var{value}
1751parameter is optional; if it is eliminated, the variable is set to a
1752null value.
1753@c "any string" here does not include leading, trailing
1754@c blanks. Gnu asks: does anyone care?
1755
1756For example, this command:
1757
1758@example
1759set env USER = foo
1760@end example
1761
1762@noindent
d4f3574e 1763tells the debugged program, when subsequently run, that its user is named
c906108c
SS
1764@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
1765are not actually required.)
1766
1767@kindex unset environment
1768@item unset environment @var{varname}
1769Remove variable @var{varname} from the environment to be passed to your
1770program. This is different from @samp{set env @var{varname} =};
1771@code{unset environment} removes the variable from the environment,
1772rather than assigning it an empty value.
1773@end table
1774
d4f3574e
SS
1775@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
1776the shell indicated
c906108c
SS
1777by your @code{SHELL} environment variable if it exists (or
1778@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
1779that runs an initialization file---such as @file{.cshrc} for C-shell, or
1780@file{.bashrc} for BASH---any variables you set in that file affect
1781your program. You may wish to move setting of environment variables to
1782files that are only run when you sign on, such as @file{.login} or
1783@file{.profile}.
1784
6d2ebf8b 1785@node Working Directory
c906108c
SS
1786@section Your program's working directory
1787
1788@cindex working directory (of your program)
1789Each time you start your program with @code{run}, it inherits its
1790working directory from the current working directory of @value{GDBN}.
1791The @value{GDBN} working directory is initially whatever it inherited
1792from its parent process (typically the shell), but you can specify a new
1793working directory in @value{GDBN} with the @code{cd} command.
1794
1795The @value{GDBN} working directory also serves as a default for the commands
1796that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
1797specify files}.
1798
1799@table @code
1800@kindex cd
1801@item cd @var{directory}
1802Set the @value{GDBN} working directory to @var{directory}.
1803
1804@kindex pwd
1805@item pwd
1806Print the @value{GDBN} working directory.
1807@end table
1808
6d2ebf8b 1809@node Input/Output
c906108c
SS
1810@section Your program's input and output
1811
1812@cindex redirection
1813@cindex i/o
1814@cindex terminal
1815By default, the program you run under @value{GDBN} does input and output to
5d161b24 1816the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
1817to its own terminal modes to interact with you, but it records the terminal
1818modes your program was using and switches back to them when you continue
1819running your program.
1820
1821@table @code
1822@kindex info terminal
1823@item info terminal
1824Displays information recorded by @value{GDBN} about the terminal modes your
1825program is using.
1826@end table
1827
1828You can redirect your program's input and/or output using shell
1829redirection with the @code{run} command. For example,
1830
1831@example
1832run > outfile
1833@end example
1834
1835@noindent
1836starts your program, diverting its output to the file @file{outfile}.
1837
1838@kindex tty
1839@cindex controlling terminal
1840Another way to specify where your program should do input and output is
1841with the @code{tty} command. This command accepts a file name as
1842argument, and causes this file to be the default for future @code{run}
1843commands. It also resets the controlling terminal for the child
1844process, for future @code{run} commands. For example,
1845
1846@example
1847tty /dev/ttyb
1848@end example
1849
1850@noindent
1851directs that processes started with subsequent @code{run} commands
1852default to do input and output on the terminal @file{/dev/ttyb} and have
1853that as their controlling terminal.
1854
1855An explicit redirection in @code{run} overrides the @code{tty} command's
1856effect on the input/output device, but not its effect on the controlling
1857terminal.
1858
1859When you use the @code{tty} command or redirect input in the @code{run}
1860command, only the input @emph{for your program} is affected. The input
1861for @value{GDBN} still comes from your terminal.
1862
6d2ebf8b 1863@node Attach
c906108c
SS
1864@section Debugging an already-running process
1865@kindex attach
1866@cindex attach
1867
1868@table @code
1869@item attach @var{process-id}
1870This command attaches to a running process---one that was started
1871outside @value{GDBN}. (@code{info files} shows your active
1872targets.) The command takes as argument a process ID. The usual way to
1873find out the process-id of a Unix process is with the @code{ps} utility,
1874or with the @samp{jobs -l} shell command.
1875
1876@code{attach} does not repeat if you press @key{RET} a second time after
1877executing the command.
1878@end table
1879
1880To use @code{attach}, your program must be running in an environment
1881which supports processes; for example, @code{attach} does not work for
1882programs on bare-board targets that lack an operating system. You must
1883also have permission to send the process a signal.
1884
1885When you use @code{attach}, the debugger finds the program running in
1886the process first by looking in the current working directory, then (if
1887the program is not found) by using the source file search path
1888(@pxref{Source Path, ,Specifying source directories}). You can also use
1889the @code{file} command to load the program. @xref{Files, ,Commands to
1890Specify Files}.
1891
1892The first thing @value{GDBN} does after arranging to debug the specified
1893process is to stop it. You can examine and modify an attached process
53a5351d
JM
1894with all the @value{GDBN} commands that are ordinarily available when
1895you start processes with @code{run}. You can insert breakpoints; you
1896can step and continue; you can modify storage. If you would rather the
1897process continue running, you may use the @code{continue} command after
c906108c
SS
1898attaching @value{GDBN} to the process.
1899
1900@table @code
1901@kindex detach
1902@item detach
1903When you have finished debugging the attached process, you can use the
1904@code{detach} command to release it from @value{GDBN} control. Detaching
1905the process continues its execution. After the @code{detach} command,
1906that process and @value{GDBN} become completely independent once more, and you
1907are ready to @code{attach} another process or start one with @code{run}.
1908@code{detach} does not repeat if you press @key{RET} again after
1909executing the command.
1910@end table
1911
1912If you exit @value{GDBN} or use the @code{run} command while you have an
1913attached process, you kill that process. By default, @value{GDBN} asks
1914for confirmation if you try to do either of these things; you can
1915control whether or not you need to confirm by using the @code{set
1916confirm} command (@pxref{Messages/Warnings, ,Optional warnings and
1917messages}).
1918
6d2ebf8b 1919@node Kill Process
c906108c 1920@section Killing the child process
c906108c
SS
1921
1922@table @code
1923@kindex kill
1924@item kill
1925Kill the child process in which your program is running under @value{GDBN}.
1926@end table
1927
1928This command is useful if you wish to debug a core dump instead of a
1929running process. @value{GDBN} ignores any core dump file while your program
1930is running.
1931
1932On some operating systems, a program cannot be executed outside @value{GDBN}
1933while you have breakpoints set on it inside @value{GDBN}. You can use the
1934@code{kill} command in this situation to permit running your program
1935outside the debugger.
1936
1937The @code{kill} command is also useful if you wish to recompile and
1938relink your program, since on many systems it is impossible to modify an
1939executable file while it is running in a process. In this case, when you
1940next type @code{run}, @value{GDBN} notices that the file has changed, and
1941reads the symbol table again (while trying to preserve your current
1942breakpoint settings).
1943
6d2ebf8b 1944@node Threads
c906108c 1945@section Debugging programs with multiple threads
c906108c
SS
1946
1947@cindex threads of execution
1948@cindex multiple threads
1949@cindex switching threads
1950In some operating systems, such as HP-UX and Solaris, a single program
1951may have more than one @dfn{thread} of execution. The precise semantics
1952of threads differ from one operating system to another, but in general
1953the threads of a single program are akin to multiple processes---except
1954that they share one address space (that is, they can all examine and
1955modify the same variables). On the other hand, each thread has its own
1956registers and execution stack, and perhaps private memory.
1957
1958@value{GDBN} provides these facilities for debugging multi-thread
1959programs:
1960
1961@itemize @bullet
1962@item automatic notification of new threads
1963@item @samp{thread @var{threadno}}, a command to switch among threads
1964@item @samp{info threads}, a command to inquire about existing threads
5d161b24 1965@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
1966a command to apply a command to a list of threads
1967@item thread-specific breakpoints
1968@end itemize
1969
c906108c
SS
1970@quotation
1971@emph{Warning:} These facilities are not yet available on every
1972@value{GDBN} configuration where the operating system supports threads.
1973If your @value{GDBN} does not support threads, these commands have no
1974effect. For example, a system without thread support shows no output
1975from @samp{info threads}, and always rejects the @code{thread} command,
1976like this:
1977
1978@smallexample
1979(@value{GDBP}) info threads
1980(@value{GDBP}) thread 1
1981Thread ID 1 not known. Use the "info threads" command to
1982see the IDs of currently known threads.
1983@end smallexample
1984@c FIXME to implementors: how hard would it be to say "sorry, this GDB
1985@c doesn't support threads"?
1986@end quotation
c906108c
SS
1987
1988@cindex focus of debugging
1989@cindex current thread
1990The @value{GDBN} thread debugging facility allows you to observe all
1991threads while your program runs---but whenever @value{GDBN} takes
1992control, one thread in particular is always the focus of debugging.
1993This thread is called the @dfn{current thread}. Debugging commands show
1994program information from the perspective of the current thread.
1995
41afff9a 1996@cindex @code{New} @var{systag} message
c906108c
SS
1997@cindex thread identifier (system)
1998@c FIXME-implementors!! It would be more helpful if the [New...] message
1999@c included GDB's numeric thread handle, so you could just go to that
2000@c thread without first checking `info threads'.
2001Whenever @value{GDBN} detects a new thread in your program, it displays
2002the target system's identification for the thread with a message in the
2003form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2004whose form varies depending on the particular system. For example, on
2005LynxOS, you might see
2006
2007@example
2008[New process 35 thread 27]
2009@end example
2010
2011@noindent
2012when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2013the @var{systag} is simply something like @samp{process 368}, with no
2014further qualifier.
2015
2016@c FIXME!! (1) Does the [New...] message appear even for the very first
2017@c thread of a program, or does it only appear for the
2018@c second---i.e., when it becomes obvious we have a multithread
2019@c program?
2020@c (2) *Is* there necessarily a first thread always? Or do some
2021@c multithread systems permit starting a program with multiple
5d161b24 2022@c threads ab initio?
c906108c
SS
2023
2024@cindex thread number
2025@cindex thread identifier (GDB)
2026For debugging purposes, @value{GDBN} associates its own thread
2027number---always a single integer---with each thread in your program.
2028
2029@table @code
2030@kindex info threads
2031@item info threads
2032Display a summary of all threads currently in your
2033program. @value{GDBN} displays for each thread (in this order):
2034
2035@enumerate
2036@item the thread number assigned by @value{GDBN}
2037
2038@item the target system's thread identifier (@var{systag})
2039
2040@item the current stack frame summary for that thread
2041@end enumerate
2042
2043@noindent
2044An asterisk @samp{*} to the left of the @value{GDBN} thread number
2045indicates the current thread.
2046
5d161b24 2047For example,
c906108c
SS
2048@end table
2049@c end table here to get a little more width for example
2050
2051@smallexample
2052(@value{GDBP}) info threads
2053 3 process 35 thread 27 0x34e5 in sigpause ()
2054 2 process 35 thread 23 0x34e5 in sigpause ()
2055* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
2056 at threadtest.c:68
2057@end smallexample
53a5351d
JM
2058
2059On HP-UX systems:
c906108c
SS
2060
2061@cindex thread number
2062@cindex thread identifier (GDB)
2063For debugging purposes, @value{GDBN} associates its own thread
2064number---a small integer assigned in thread-creation order---with each
2065thread in your program.
2066
41afff9a
EZ
2067@cindex @code{New} @var{systag} message, on HP-UX
2068@cindex thread identifier (system), on HP-UX
c906108c
SS
2069@c FIXME-implementors!! It would be more helpful if the [New...] message
2070@c included GDB's numeric thread handle, so you could just go to that
2071@c thread without first checking `info threads'.
2072Whenever @value{GDBN} detects a new thread in your program, it displays
2073both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
2074form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2075whose form varies depending on the particular system. For example, on
2076HP-UX, you see
2077
2078@example
2079[New thread 2 (system thread 26594)]
2080@end example
2081
2082@noindent
5d161b24 2083when @value{GDBN} notices a new thread.
c906108c
SS
2084
2085@table @code
2086@kindex info threads
2087@item info threads
2088Display a summary of all threads currently in your
2089program. @value{GDBN} displays for each thread (in this order):
2090
2091@enumerate
2092@item the thread number assigned by @value{GDBN}
2093
2094@item the target system's thread identifier (@var{systag})
2095
2096@item the current stack frame summary for that thread
2097@end enumerate
2098
2099@noindent
2100An asterisk @samp{*} to the left of the @value{GDBN} thread number
2101indicates the current thread.
2102
5d161b24 2103For example,
c906108c
SS
2104@end table
2105@c end table here to get a little more width for example
2106
2107@example
2108(@value{GDBP}) info threads
6d2ebf8b
SS
2109 * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") \@*
2110 at quicksort.c:137
2111 2 system thread 26606 0x7b0030d8 in __ksleep () \@*
2112 from /usr/lib/libc.2
2113 1 system thread 27905 0x7b003498 in _brk () \@*
2114 from /usr/lib/libc.2
c906108c 2115@end example
c906108c
SS
2116
2117@table @code
2118@kindex thread @var{threadno}
2119@item thread @var{threadno}
2120Make thread number @var{threadno} the current thread. The command
2121argument @var{threadno} is the internal @value{GDBN} thread number, as
2122shown in the first field of the @samp{info threads} display.
2123@value{GDBN} responds by displaying the system identifier of the thread
2124you selected, and its current stack frame summary:
2125
2126@smallexample
2127@c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one
2128(@value{GDBP}) thread 2
c906108c 2129[Switching to process 35 thread 23]
c906108c
SS
21300x34e5 in sigpause ()
2131@end smallexample
2132
2133@noindent
2134As with the @samp{[New @dots{}]} message, the form of the text after
2135@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2136threads.
c906108c
SS
2137
2138@kindex thread apply
2139@item thread apply [@var{threadno}] [@var{all}] @var{args}
2140The @code{thread apply} command allows you to apply a command to one or
2141more threads. Specify the numbers of the threads that you want affected
2142with the command argument @var{threadno}. @var{threadno} is the internal
2143@value{GDBN} thread number, as shown in the first field of the @samp{info
5d161b24
DB
2144threads} display. To apply a command to all threads, use
2145@code{thread apply all} @var{args}.
c906108c
SS
2146@end table
2147
2148@cindex automatic thread selection
2149@cindex switching threads automatically
2150@cindex threads, automatic switching
2151Whenever @value{GDBN} stops your program, due to a breakpoint or a
2152signal, it automatically selects the thread where that breakpoint or
2153signal happened. @value{GDBN} alerts you to the context switch with a
2154message of the form @samp{[Switching to @var{systag}]} to identify the
2155thread.
2156
2157@xref{Thread Stops,,Stopping and starting multi-thread programs}, for
2158more information about how @value{GDBN} behaves when you stop and start
2159programs with multiple threads.
2160
2161@xref{Set Watchpoints,,Setting watchpoints}, for information about
2162watchpoints in programs with multiple threads.
c906108c 2163
6d2ebf8b 2164@node Processes
c906108c
SS
2165@section Debugging programs with multiple processes
2166
2167@cindex fork, debugging programs which call
2168@cindex multiple processes
2169@cindex processes, multiple
53a5351d
JM
2170On most systems, @value{GDBN} has no special support for debugging
2171programs which create additional processes using the @code{fork}
2172function. When a program forks, @value{GDBN} will continue to debug the
2173parent process and the child process will run unimpeded. If you have
2174set a breakpoint in any code which the child then executes, the child
2175will get a @code{SIGTRAP} signal which (unless it catches the signal)
2176will cause it to terminate.
c906108c
SS
2177
2178However, if you want to debug the child process there is a workaround
2179which isn't too painful. Put a call to @code{sleep} in the code which
2180the child process executes after the fork. It may be useful to sleep
2181only if a certain environment variable is set, or a certain file exists,
2182so that the delay need not occur when you don't want to run @value{GDBN}
2183on the child. While the child is sleeping, use the @code{ps} program to
2184get its process ID. Then tell @value{GDBN} (a new invocation of
2185@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 2186the child process (@pxref{Attach}). From that point on you can debug
c906108c 2187the child process just like any other process which you attached to.
c906108c 2188
53a5351d
JM
2189On HP-UX (11.x and later only?), @value{GDBN} provides support for
2190debugging programs that create additional processes using the
2191@code{fork} or @code{vfork} function.
c906108c
SS
2192
2193By default, when a program forks, @value{GDBN} will continue to debug
2194the parent process and the child process will run unimpeded.
2195
2196If you want to follow the child process instead of the parent process,
2197use the command @w{@code{set follow-fork-mode}}.
2198
2199@table @code
2200@kindex set follow-fork-mode
2201@item set follow-fork-mode @var{mode}
2202Set the debugger response to a program call of @code{fork} or
2203@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
2204process. The @var{mode} can be:
2205
2206@table @code
2207@item parent
2208The original process is debugged after a fork. The child process runs
2df3850c 2209unimpeded. This is the default.
c906108c
SS
2210
2211@item child
2212The new process is debugged after a fork. The parent process runs
2213unimpeded.
2214
2215@item ask
2216The debugger will ask for one of the above choices.
2217@end table
2218
2219@item show follow-fork-mode
2df3850c 2220Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
2221@end table
2222
2223If you ask to debug a child process and a @code{vfork} is followed by an
2224@code{exec}, @value{GDBN} executes the new target up to the first
2225breakpoint in the new target. If you have a breakpoint set on
2226@code{main} in your original program, the breakpoint will also be set on
2227the child process's @code{main}.
2228
2229When a child process is spawned by @code{vfork}, you cannot debug the
2230child or parent until an @code{exec} call completes.
2231
2232If you issue a @code{run} command to @value{GDBN} after an @code{exec}
2233call executes, the new target restarts. To restart the parent process,
2234use the @code{file} command with the parent executable name as its
2235argument.
2236
2237You can use the @code{catch} command to make @value{GDBN} stop whenever
2238a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
2239Catchpoints, ,Setting catchpoints}.
c906108c 2240
6d2ebf8b 2241@node Stopping
c906108c
SS
2242@chapter Stopping and Continuing
2243
2244The principal purposes of using a debugger are so that you can stop your
2245program before it terminates; or so that, if your program runs into
2246trouble, you can investigate and find out why.
2247
7a292a7a
SS
2248Inside @value{GDBN}, your program may stop for any of several reasons,
2249such as a signal, a breakpoint, or reaching a new line after a
2250@value{GDBN} command such as @code{step}. You may then examine and
2251change variables, set new breakpoints or remove old ones, and then
2252continue execution. Usually, the messages shown by @value{GDBN} provide
2253ample explanation of the status of your program---but you can also
2254explicitly request this information at any time.
c906108c
SS
2255
2256@table @code
2257@kindex info program
2258@item info program
2259Display information about the status of your program: whether it is
7a292a7a 2260running or not, what process it is, and why it stopped.
c906108c
SS
2261@end table
2262
2263@menu
2264* Breakpoints:: Breakpoints, watchpoints, and catchpoints
2265* Continuing and Stepping:: Resuming execution
c906108c 2266* Signals:: Signals
c906108c 2267* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
2268@end menu
2269
6d2ebf8b 2270@node Breakpoints
c906108c
SS
2271@section Breakpoints, watchpoints, and catchpoints
2272
2273@cindex breakpoints
2274A @dfn{breakpoint} makes your program stop whenever a certain point in
2275the program is reached. For each breakpoint, you can add conditions to
2276control in finer detail whether your program stops. You can set
2277breakpoints with the @code{break} command and its variants (@pxref{Set
2278Breaks, ,Setting breakpoints}), to specify the place where your program
2279should stop by line number, function name or exact address in the
2280program.
2281
2282In HP-UX, SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can set
2283breakpoints in shared libraries before the executable is run. There is
2284a minor limitation on HP-UX systems: you must wait until the executable
2285is run in order to set breakpoints in shared library routines that are
2286not called directly by the program (for example, routines that are
2287arguments in a @code{pthread_create} call).
2288
2289@cindex watchpoints
2290@cindex memory tracing
2291@cindex breakpoint on memory address
2292@cindex breakpoint on variable modification
2293A @dfn{watchpoint} is a special breakpoint that stops your program
2294when the value of an expression changes. You must use a different
2295command to set watchpoints (@pxref{Set Watchpoints, ,Setting
2296watchpoints}), but aside from that, you can manage a watchpoint like
2297any other breakpoint: you enable, disable, and delete both breakpoints
2298and watchpoints using the same commands.
2299
2300You can arrange to have values from your program displayed automatically
2301whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
2302Automatic display}.
2303
2304@cindex catchpoints
2305@cindex breakpoint on events
2306A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 2307when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
2308exception or the loading of a library. As with watchpoints, you use a
2309different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
2310catchpoints}), but aside from that, you can manage a catchpoint like any
2311other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 2312@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
2313
2314@cindex breakpoint numbers
2315@cindex numbers for breakpoints
2316@value{GDBN} assigns a number to each breakpoint, watchpoint, or
2317catchpoint when you create it; these numbers are successive integers
2318starting with one. In many of the commands for controlling various
2319features of breakpoints you use the breakpoint number to say which
2320breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
2321@dfn{disabled}; if disabled, it has no effect on your program until you
2322enable it again.
2323
c5394b80
JM
2324@cindex breakpoint ranges
2325@cindex ranges of breakpoints
2326Some @value{GDBN} commands accept a range of breakpoints on which to
2327operate. A breakpoint range is either a single breakpoint number, like
2328@samp{5}, or two such numbers, in increasing order, separated by a
2329hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
2330all breakpoint in that range are operated on.
2331
c906108c
SS
2332@menu
2333* Set Breaks:: Setting breakpoints
2334* Set Watchpoints:: Setting watchpoints
2335* Set Catchpoints:: Setting catchpoints
2336* Delete Breaks:: Deleting breakpoints
2337* Disabling:: Disabling breakpoints
2338* Conditions:: Break conditions
2339* Break Commands:: Breakpoint command lists
c906108c 2340* Breakpoint Menus:: Breakpoint menus
d4f3574e 2341* Error in Breakpoints:: ``Cannot insert breakpoints''
c906108c
SS
2342@end menu
2343
6d2ebf8b 2344@node Set Breaks
c906108c
SS
2345@subsection Setting breakpoints
2346
5d161b24 2347@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
2348@c consider in particular declaration with/without initialization.
2349@c
2350@c FIXME 2 is there stuff on this already? break at fun start, already init?
2351
2352@kindex break
41afff9a
EZ
2353@kindex b @r{(@code{break})}
2354@vindex $bpnum@r{, convenience variable}
c906108c
SS
2355@cindex latest breakpoint
2356Breakpoints are set with the @code{break} command (abbreviated
5d161b24 2357@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 2358number of the breakpoint you've set most recently; see @ref{Convenience
c906108c
SS
2359Vars,, Convenience variables}, for a discussion of what you can do with
2360convenience variables.
2361
2362You have several ways to say where the breakpoint should go.
2363
2364@table @code
2365@item break @var{function}
5d161b24 2366Set a breakpoint at entry to function @var{function}.
c906108c 2367When using source languages that permit overloading of symbols, such as
b37052ae 2368C@t{++}, @var{function} may refer to more than one possible place to break.
c906108c 2369@xref{Breakpoint Menus,,Breakpoint menus}, for a discussion of that situation.
c906108c
SS
2370
2371@item break +@var{offset}
2372@itemx break -@var{offset}
2373Set a breakpoint some number of lines forward or back from the position
d4f3574e 2374at which execution stopped in the currently selected @dfn{stack frame}.
2df3850c 2375(@xref{Frames, ,Frames}, for a description of stack frames.)
c906108c
SS
2376
2377@item break @var{linenum}
2378Set a breakpoint at line @var{linenum} in the current source file.
d4f3574e
SS
2379The current source file is the last file whose source text was printed.
2380The breakpoint will stop your program just before it executes any of the
c906108c
SS
2381code on that line.
2382
2383@item break @var{filename}:@var{linenum}
2384Set a breakpoint at line @var{linenum} in source file @var{filename}.
2385
2386@item break @var{filename}:@var{function}
2387Set a breakpoint at entry to function @var{function} found in file
2388@var{filename}. Specifying a file name as well as a function name is
2389superfluous except when multiple files contain similarly named
2390functions.
2391
2392@item break *@var{address}
2393Set a breakpoint at address @var{address}. You can use this to set
2394breakpoints in parts of your program which do not have debugging
2395information or source files.
2396
2397@item break
2398When called without any arguments, @code{break} sets a breakpoint at
2399the next instruction to be executed in the selected stack frame
2400(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
2401innermost, this makes your program stop as soon as control
2402returns to that frame. This is similar to the effect of a
2403@code{finish} command in the frame inside the selected frame---except
2404that @code{finish} does not leave an active breakpoint. If you use
2405@code{break} without an argument in the innermost frame, @value{GDBN} stops
2406the next time it reaches the current location; this may be useful
2407inside loops.
2408
2409@value{GDBN} normally ignores breakpoints when it resumes execution, until at
2410least one instruction has been executed. If it did not do this, you
2411would be unable to proceed past a breakpoint without first disabling the
2412breakpoint. This rule applies whether or not the breakpoint already
2413existed when your program stopped.
2414
2415@item break @dots{} if @var{cond}
2416Set a breakpoint with condition @var{cond}; evaluate the expression
2417@var{cond} each time the breakpoint is reached, and stop only if the
2418value is nonzero---that is, if @var{cond} evaluates as true.
2419@samp{@dots{}} stands for one of the possible arguments described
2420above (or no argument) specifying where to break. @xref{Conditions,
2421,Break conditions}, for more information on breakpoint conditions.
2422
2423@kindex tbreak
2424@item tbreak @var{args}
2425Set a breakpoint enabled only for one stop. @var{args} are the
2426same as for the @code{break} command, and the breakpoint is set in the same
2427way, but the breakpoint is automatically deleted after the first time your
2428program stops there. @xref{Disabling, ,Disabling breakpoints}.
2429
c906108c
SS
2430@kindex hbreak
2431@item hbreak @var{args}
d4f3574e
SS
2432Set a hardware-assisted breakpoint. @var{args} are the same as for the
2433@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
2434breakpoint requires hardware support and some target hardware may not
2435have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
2436debugging, so you can set a breakpoint at an instruction without
2437changing the instruction. This can be used with the new trap-generation
2438provided by SPARClite DSU and some x86-based targets. These targets
2439will generate traps when a program accesses some data or instruction
2440address that is assigned to the debug registers. However the hardware
2441breakpoint registers can take a limited number of breakpoints. For
2442example, on the DSU, only two data breakpoints can be set at a time, and
2443@value{GDBN} will reject this command if more than two are used. Delete
2444or disable unused hardware breakpoints before setting new ones
2445(@pxref{Disabling, ,Disabling}). @xref{Conditions, ,Break conditions}.
c906108c
SS
2446
2447@kindex thbreak
2448@item thbreak @var{args}
2449Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
2450are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 2451the same way. However, like the @code{tbreak} command,
c906108c
SS
2452the breakpoint is automatically deleted after the
2453first time your program stops there. Also, like the @code{hbreak}
5d161b24
DB
2454command, the breakpoint requires hardware support and some target hardware
2455may not have this support. @xref{Disabling, ,Disabling breakpoints}.
d4f3574e 2456See also @ref{Conditions, ,Break conditions}.
c906108c
SS
2457
2458@kindex rbreak
2459@cindex regular expression
2460@item rbreak @var{regex}
c906108c 2461Set breakpoints on all functions matching the regular expression
11cf8741
JM
2462@var{regex}. This command sets an unconditional breakpoint on all
2463matches, printing a list of all breakpoints it set. Once these
2464breakpoints are set, they are treated just like the breakpoints set with
2465the @code{break} command. You can delete them, disable them, or make
2466them conditional the same way as any other breakpoint.
2467
2468The syntax of the regular expression is the standard one used with tools
2469like @file{grep}. Note that this is different from the syntax used by
2470shells, so for instance @code{foo*} matches all functions that include
2471an @code{fo} followed by zero or more @code{o}s. There is an implicit
2472@code{.*} leading and trailing the regular expression you supply, so to
2473match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 2474
b37052ae 2475When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
2476breakpoints on overloaded functions that are not members of any special
2477classes.
c906108c
SS
2478
2479@kindex info breakpoints
2480@cindex @code{$_} and @code{info breakpoints}
2481@item info breakpoints @r{[}@var{n}@r{]}
2482@itemx info break @r{[}@var{n}@r{]}
2483@itemx info watchpoints @r{[}@var{n}@r{]}
2484Print a table of all breakpoints, watchpoints, and catchpoints set and
2485not deleted, with the following columns for each breakpoint:
2486
2487@table @emph
2488@item Breakpoint Numbers
2489@item Type
2490Breakpoint, watchpoint, or catchpoint.
2491@item Disposition
2492Whether the breakpoint is marked to be disabled or deleted when hit.
2493@item Enabled or Disabled
2494Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
2495that are not enabled.
2496@item Address
2df3850c 2497Where the breakpoint is in your program, as a memory address.
c906108c
SS
2498@item What
2499Where the breakpoint is in the source for your program, as a file and
2500line number.
2501@end table
2502
2503@noindent
2504If a breakpoint is conditional, @code{info break} shows the condition on
2505the line following the affected breakpoint; breakpoint commands, if any,
2506are listed after that.
2507
2508@noindent
2509@code{info break} with a breakpoint
2510number @var{n} as argument lists only that breakpoint. The
2511convenience variable @code{$_} and the default examining-address for
2512the @code{x} command are set to the address of the last breakpoint
5d161b24 2513listed (@pxref{Memory, ,Examining memory}).
c906108c
SS
2514
2515@noindent
2516@code{info break} displays a count of the number of times the breakpoint
2517has been hit. This is especially useful in conjunction with the
2518@code{ignore} command. You can ignore a large number of breakpoint
2519hits, look at the breakpoint info to see how many times the breakpoint
2520was hit, and then run again, ignoring one less than that number. This
2521will get you quickly to the last hit of that breakpoint.
2522@end table
2523
2524@value{GDBN} allows you to set any number of breakpoints at the same place in
2525your program. There is nothing silly or meaningless about this. When
2526the breakpoints are conditional, this is even useful
2527(@pxref{Conditions, ,Break conditions}).
2528
2529@cindex negative breakpoint numbers
2530@cindex internal @value{GDBN} breakpoints
2531@value{GDBN} itself sometimes sets breakpoints in your program for special
2532purposes, such as proper handling of @code{longjmp} (in C programs).
2533These internal breakpoints are assigned negative numbers, starting with
2534@code{-1}; @samp{info breakpoints} does not display them.
2535
2536You can see these breakpoints with the @value{GDBN} maintenance command
2537@samp{maint info breakpoints}.
2538
2539@table @code
2540@kindex maint info breakpoints
2541@item maint info breakpoints
2542Using the same format as @samp{info breakpoints}, display both the
2543breakpoints you've set explicitly, and those @value{GDBN} is using for
2544internal purposes. Internal breakpoints are shown with negative
2545breakpoint numbers. The type column identifies what kind of breakpoint
2546is shown:
2547
2548@table @code
2549@item breakpoint
2550Normal, explicitly set breakpoint.
2551
2552@item watchpoint
2553Normal, explicitly set watchpoint.
2554
2555@item longjmp
2556Internal breakpoint, used to handle correctly stepping through
2557@code{longjmp} calls.
2558
2559@item longjmp resume
2560Internal breakpoint at the target of a @code{longjmp}.
2561
2562@item until
2563Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
2564
2565@item finish
2566Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
2567
c906108c
SS
2568@item shlib events
2569Shared library events.
53a5351d 2570
c906108c 2571@end table
53a5351d 2572
c906108c
SS
2573@end table
2574
2575
6d2ebf8b 2576@node Set Watchpoints
c906108c
SS
2577@subsection Setting watchpoints
2578
2579@cindex setting watchpoints
2580@cindex software watchpoints
2581@cindex hardware watchpoints
2582You can use a watchpoint to stop execution whenever the value of an
2583expression changes, without having to predict a particular place where
2584this may happen.
2585
2586Depending on your system, watchpoints may be implemented in software or
2df3850c 2587hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
2588program and testing the variable's value each time, which is hundreds of
2589times slower than normal execution. (But this may still be worth it, to
2590catch errors where you have no clue what part of your program is the
2591culprit.)
2592
d4f3574e 2593On some systems, such as HP-UX, Linux and some other x86-based targets,
2df3850c 2594@value{GDBN} includes support for
c906108c
SS
2595hardware watchpoints, which do not slow down the running of your
2596program.
2597
2598@table @code
2599@kindex watch
2600@item watch @var{expr}
2601Set a watchpoint for an expression. @value{GDBN} will break when @var{expr}
2602is written into by the program and its value changes.
2603
2604@kindex rwatch
2605@item rwatch @var{expr}
2606Set a watchpoint that will break when watch @var{expr} is read by the program.
c906108c
SS
2607
2608@kindex awatch
2609@item awatch @var{expr}
2df3850c 2610Set a watchpoint that will break when @var{expr} is either read or written into
7be570e7 2611by the program.
c906108c
SS
2612
2613@kindex info watchpoints
2614@item info watchpoints
2615This command prints a list of watchpoints, breakpoints, and catchpoints;
2616it is the same as @code{info break}.
2617@end table
2618
2619@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
2620watchpoints execute very quickly, and the debugger reports a change in
2621value at the exact instruction where the change occurs. If @value{GDBN}
2622cannot set a hardware watchpoint, it sets a software watchpoint, which
2623executes more slowly and reports the change in value at the next
2624statement, not the instruction, after the change occurs.
2625
2626When you issue the @code{watch} command, @value{GDBN} reports
2627
2628@example
2629Hardware watchpoint @var{num}: @var{expr}
2630@end example
2631
2632@noindent
2633if it was able to set a hardware watchpoint.
2634
7be570e7
JM
2635Currently, the @code{awatch} and @code{rwatch} commands can only set
2636hardware watchpoints, because accesses to data that don't change the
2637value of the watched expression cannot be detected without examining
2638every instruction as it is being executed, and @value{GDBN} does not do
2639that currently. If @value{GDBN} finds that it is unable to set a
2640hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
2641will print a message like this:
2642
2643@smallexample
2644Expression cannot be implemented with read/access watchpoint.
2645@end smallexample
2646
2647Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
2648data type of the watched expression is wider than what a hardware
2649watchpoint on the target machine can handle. For example, some systems
2650can only watch regions that are up to 4 bytes wide; on such systems you
2651cannot set hardware watchpoints for an expression that yields a
2652double-precision floating-point number (which is typically 8 bytes
2653wide). As a work-around, it might be possible to break the large region
2654into a series of smaller ones and watch them with separate watchpoints.
2655
2656If you set too many hardware watchpoints, @value{GDBN} might be unable
2657to insert all of them when you resume the execution of your program.
2658Since the precise number of active watchpoints is unknown until such
2659time as the program is about to be resumed, @value{GDBN} might not be
2660able to warn you about this when you set the watchpoints, and the
2661warning will be printed only when the program is resumed:
2662
2663@smallexample
2664Hardware watchpoint @var{num}: Could not insert watchpoint
2665@end smallexample
2666
2667@noindent
2668If this happens, delete or disable some of the watchpoints.
2669
2670The SPARClite DSU will generate traps when a program accesses some data
2671or instruction address that is assigned to the debug registers. For the
2672data addresses, DSU facilitates the @code{watch} command. However the
2673hardware breakpoint registers can only take two data watchpoints, and
2674both watchpoints must be the same kind. For example, you can set two
2675watchpoints with @code{watch} commands, two with @code{rwatch} commands,
2676@strong{or} two with @code{awatch} commands, but you cannot set one
2677watchpoint with one command and the other with a different command.
c906108c
SS
2678@value{GDBN} will reject the command if you try to mix watchpoints.
2679Delete or disable unused watchpoint commands before setting new ones.
2680
2681If you call a function interactively using @code{print} or @code{call},
2df3850c 2682any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
2683kind of breakpoint or the call completes.
2684
7be570e7
JM
2685@value{GDBN} automatically deletes watchpoints that watch local
2686(automatic) variables, or expressions that involve such variables, when
2687they go out of scope, that is, when the execution leaves the block in
2688which these variables were defined. In particular, when the program
2689being debugged terminates, @emph{all} local variables go out of scope,
2690and so only watchpoints that watch global variables remain set. If you
2691rerun the program, you will need to set all such watchpoints again. One
2692way of doing that would be to set a code breakpoint at the entry to the
2693@code{main} function and when it breaks, set all the watchpoints.
2694
c906108c
SS
2695@quotation
2696@cindex watchpoints and threads
2697@cindex threads and watchpoints
c906108c
SS
2698@emph{Warning:} In multi-thread programs, watchpoints have only limited
2699usefulness. With the current watchpoint implementation, @value{GDBN}
2700can only watch the value of an expression @emph{in a single thread}. If
2701you are confident that the expression can only change due to the current
2702thread's activity (and if you are also confident that no other thread
2703can become current), then you can use watchpoints as usual. However,
2704@value{GDBN} may not notice when a non-current thread's activity changes
2705the expression.
53a5351d 2706
d4f3574e 2707@c FIXME: this is almost identical to the previous paragraph.
53a5351d
JM
2708@emph{HP-UX Warning:} In multi-thread programs, software watchpoints
2709have only limited usefulness. If @value{GDBN} creates a software
2710watchpoint, it can only watch the value of an expression @emph{in a
2711single thread}. If you are confident that the expression can only
2712change due to the current thread's activity (and if you are also
2713confident that no other thread can become current), then you can use
2714software watchpoints as usual. However, @value{GDBN} may not notice
2715when a non-current thread's activity changes the expression. (Hardware
2716watchpoints, in contrast, watch an expression in all threads.)
c906108c 2717@end quotation
c906108c 2718
6d2ebf8b 2719@node Set Catchpoints
c906108c 2720@subsection Setting catchpoints
d4f3574e 2721@cindex catchpoints, setting
c906108c
SS
2722@cindex exception handlers
2723@cindex event handling
2724
2725You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 2726kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
2727shared library. Use the @code{catch} command to set a catchpoint.
2728
2729@table @code
2730@kindex catch
2731@item catch @var{event}
2732Stop when @var{event} occurs. @var{event} can be any of the following:
2733@table @code
2734@item throw
2735@kindex catch throw
b37052ae 2736The throwing of a C@t{++} exception.
c906108c
SS
2737
2738@item catch
2739@kindex catch catch
b37052ae 2740The catching of a C@t{++} exception.
c906108c
SS
2741
2742@item exec
2743@kindex catch exec
2744A call to @code{exec}. This is currently only available for HP-UX.
2745
2746@item fork
2747@kindex catch fork
2748A call to @code{fork}. This is currently only available for HP-UX.
2749
2750@item vfork
2751@kindex catch vfork
2752A call to @code{vfork}. This is currently only available for HP-UX.
2753
2754@item load
2755@itemx load @var{libname}
2756@kindex catch load
2757The dynamic loading of any shared library, or the loading of the library
2758@var{libname}. This is currently only available for HP-UX.
2759
2760@item unload
2761@itemx unload @var{libname}
2762@kindex catch unload
2763The unloading of any dynamically loaded shared library, or the unloading
2764of the library @var{libname}. This is currently only available for HP-UX.
2765@end table
2766
2767@item tcatch @var{event}
2768Set a catchpoint that is enabled only for one stop. The catchpoint is
2769automatically deleted after the first time the event is caught.
2770
2771@end table
2772
2773Use the @code{info break} command to list the current catchpoints.
2774
b37052ae 2775There are currently some limitations to C@t{++} exception handling
c906108c
SS
2776(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
2777
2778@itemize @bullet
2779@item
2780If you call a function interactively, @value{GDBN} normally returns
2781control to you when the function has finished executing. If the call
2782raises an exception, however, the call may bypass the mechanism that
2783returns control to you and cause your program either to abort or to
2784simply continue running until it hits a breakpoint, catches a signal
2785that @value{GDBN} is listening for, or exits. This is the case even if
2786you set a catchpoint for the exception; catchpoints on exceptions are
2787disabled within interactive calls.
2788
2789@item
2790You cannot raise an exception interactively.
2791
2792@item
2793You cannot install an exception handler interactively.
2794@end itemize
2795
2796@cindex raise exceptions
2797Sometimes @code{catch} is not the best way to debug exception handling:
2798if you need to know exactly where an exception is raised, it is better to
2799stop @emph{before} the exception handler is called, since that way you
2800can see the stack before any unwinding takes place. If you set a
2801breakpoint in an exception handler instead, it may not be easy to find
2802out where the exception was raised.
2803
2804To stop just before an exception handler is called, you need some
b37052ae 2805knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
2806raised by calling a library function named @code{__raise_exception}
2807which has the following ANSI C interface:
2808
2809@example
2810 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
2811 @var{id} is the exception identifier. */
2812 void __raise_exception (void **addr, void *id);
c906108c
SS
2813@end example
2814
2815@noindent
2816To make the debugger catch all exceptions before any stack
2817unwinding takes place, set a breakpoint on @code{__raise_exception}
2818(@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions}).
2819
2820With a conditional breakpoint (@pxref{Conditions, ,Break conditions})
2821that depends on the value of @var{id}, you can stop your program when
2822a specific exception is raised. You can use multiple conditional
2823breakpoints to stop your program when any of a number of exceptions are
2824raised.
2825
2826
6d2ebf8b 2827@node Delete Breaks
c906108c
SS
2828@subsection Deleting breakpoints
2829
2830@cindex clearing breakpoints, watchpoints, catchpoints
2831@cindex deleting breakpoints, watchpoints, catchpoints
2832It is often necessary to eliminate a breakpoint, watchpoint, or
2833catchpoint once it has done its job and you no longer want your program
2834to stop there. This is called @dfn{deleting} the breakpoint. A
2835breakpoint that has been deleted no longer exists; it is forgotten.
2836
2837With the @code{clear} command you can delete breakpoints according to
2838where they are in your program. With the @code{delete} command you can
2839delete individual breakpoints, watchpoints, or catchpoints by specifying
2840their breakpoint numbers.
2841
2842It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
2843automatically ignores breakpoints on the first instruction to be executed
2844when you continue execution without changing the execution address.
2845
2846@table @code
2847@kindex clear
2848@item clear
2849Delete any breakpoints at the next instruction to be executed in the
2850selected stack frame (@pxref{Selection, ,Selecting a frame}). When
2851the innermost frame is selected, this is a good way to delete a
2852breakpoint where your program just stopped.
2853
2854@item clear @var{function}
2855@itemx clear @var{filename}:@var{function}
2856Delete any breakpoints set at entry to the function @var{function}.
2857
2858@item clear @var{linenum}
2859@itemx clear @var{filename}:@var{linenum}
2860Delete any breakpoints set at or within the code of the specified line.
2861
2862@cindex delete breakpoints
2863@kindex delete
41afff9a 2864@kindex d @r{(@code{delete})}
c5394b80
JM
2865@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2866Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
2867ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
2868breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
2869confirm off}). You can abbreviate this command as @code{d}.
2870@end table
2871
6d2ebf8b 2872@node Disabling
c906108c
SS
2873@subsection Disabling breakpoints
2874
2875@kindex disable breakpoints
2876@kindex enable breakpoints
2877Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
2878prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
2879it had been deleted, but remembers the information on the breakpoint so
2880that you can @dfn{enable} it again later.
2881
2882You disable and enable breakpoints, watchpoints, and catchpoints with
2883the @code{enable} and @code{disable} commands, optionally specifying one
2884or more breakpoint numbers as arguments. Use @code{info break} or
2885@code{info watch} to print a list of breakpoints, watchpoints, and
2886catchpoints if you do not know which numbers to use.
2887
2888A breakpoint, watchpoint, or catchpoint can have any of four different
2889states of enablement:
2890
2891@itemize @bullet
2892@item
2893Enabled. The breakpoint stops your program. A breakpoint set
2894with the @code{break} command starts out in this state.
2895@item
2896Disabled. The breakpoint has no effect on your program.
2897@item
2898Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 2899disabled.
c906108c
SS
2900@item
2901Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
2902immediately after it does so it is deleted permanently. A breakpoint
2903set with the @code{tbreak} command starts out in this state.
c906108c
SS
2904@end itemize
2905
2906You can use the following commands to enable or disable breakpoints,
2907watchpoints, and catchpoints:
2908
2909@table @code
2910@kindex disable breakpoints
2911@kindex disable
41afff9a 2912@kindex dis @r{(@code{disable})}
c5394b80 2913@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
2914Disable the specified breakpoints---or all breakpoints, if none are
2915listed. A disabled breakpoint has no effect but is not forgotten. All
2916options such as ignore-counts, conditions and commands are remembered in
2917case the breakpoint is enabled again later. You may abbreviate
2918@code{disable} as @code{dis}.
2919
2920@kindex enable breakpoints
2921@kindex enable
c5394b80 2922@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
2923Enable the specified breakpoints (or all defined breakpoints). They
2924become effective once again in stopping your program.
2925
c5394b80 2926@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
2927Enable the specified breakpoints temporarily. @value{GDBN} disables any
2928of these breakpoints immediately after stopping your program.
2929
c5394b80 2930@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
2931Enable the specified breakpoints to work once, then die. @value{GDBN}
2932deletes any of these breakpoints as soon as your program stops there.
2933@end table
2934
d4f3574e
SS
2935@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
2936@c confusing: tbreak is also initially enabled.
c906108c
SS
2937Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
2938,Setting breakpoints}), breakpoints that you set are initially enabled;
2939subsequently, they become disabled or enabled only when you use one of
2940the commands above. (The command @code{until} can set and delete a
2941breakpoint of its own, but it does not change the state of your other
2942breakpoints; see @ref{Continuing and Stepping, ,Continuing and
2943stepping}.)
2944
6d2ebf8b 2945@node Conditions
c906108c
SS
2946@subsection Break conditions
2947@cindex conditional breakpoints
2948@cindex breakpoint conditions
2949
2950@c FIXME what is scope of break condition expr? Context where wanted?
5d161b24 2951@c in particular for a watchpoint?
c906108c
SS
2952The simplest sort of breakpoint breaks every time your program reaches a
2953specified place. You can also specify a @dfn{condition} for a
2954breakpoint. A condition is just a Boolean expression in your
2955programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
2956a condition evaluates the expression each time your program reaches it,
2957and your program stops only if the condition is @emph{true}.
2958
2959This is the converse of using assertions for program validation; in that
2960situation, you want to stop when the assertion is violated---that is,
2961when the condition is false. In C, if you want to test an assertion expressed
2962by the condition @var{assert}, you should set the condition
2963@samp{! @var{assert}} on the appropriate breakpoint.
2964
2965Conditions are also accepted for watchpoints; you may not need them,
2966since a watchpoint is inspecting the value of an expression anyhow---but
2967it might be simpler, say, to just set a watchpoint on a variable name,
2968and specify a condition that tests whether the new value is an interesting
2969one.
2970
2971Break conditions can have side effects, and may even call functions in
2972your program. This can be useful, for example, to activate functions
2973that log program progress, or to use your own print functions to
2974format special data structures. The effects are completely predictable
2975unless there is another enabled breakpoint at the same address. (In
2976that case, @value{GDBN} might see the other breakpoint first and stop your
2977program without checking the condition of this one.) Note that
d4f3574e
SS
2978breakpoint commands are usually more convenient and flexible than break
2979conditions for the
c906108c
SS
2980purpose of performing side effects when a breakpoint is reached
2981(@pxref{Break Commands, ,Breakpoint command lists}).
2982
2983Break conditions can be specified when a breakpoint is set, by using
2984@samp{if} in the arguments to the @code{break} command. @xref{Set
2985Breaks, ,Setting breakpoints}. They can also be changed at any time
2986with the @code{condition} command.
53a5351d 2987
c906108c
SS
2988You can also use the @code{if} keyword with the @code{watch} command.
2989The @code{catch} command does not recognize the @code{if} keyword;
2990@code{condition} is the only way to impose a further condition on a
2991catchpoint.
c906108c
SS
2992
2993@table @code
2994@kindex condition
2995@item condition @var{bnum} @var{expression}
2996Specify @var{expression} as the break condition for breakpoint,
2997watchpoint, or catchpoint number @var{bnum}. After you set a condition,
2998breakpoint @var{bnum} stops your program only if the value of
2999@var{expression} is true (nonzero, in C). When you use
3000@code{condition}, @value{GDBN} checks @var{expression} immediately for
3001syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
3002referents in the context of your breakpoint. If @var{expression} uses
3003symbols not referenced in the context of the breakpoint, @value{GDBN}
3004prints an error message:
3005
3006@example
3007No symbol "foo" in current context.
3008@end example
3009
3010@noindent
c906108c
SS
3011@value{GDBN} does
3012not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
3013command (or a command that sets a breakpoint with a condition, like
3014@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
3015
3016@item condition @var{bnum}
3017Remove the condition from breakpoint number @var{bnum}. It becomes
3018an ordinary unconditional breakpoint.
3019@end table
3020
3021@cindex ignore count (of breakpoint)
3022A special case of a breakpoint condition is to stop only when the
3023breakpoint has been reached a certain number of times. This is so
3024useful that there is a special way to do it, using the @dfn{ignore
3025count} of the breakpoint. Every breakpoint has an ignore count, which
3026is an integer. Most of the time, the ignore count is zero, and
3027therefore has no effect. But if your program reaches a breakpoint whose
3028ignore count is positive, then instead of stopping, it just decrements
3029the ignore count by one and continues. As a result, if the ignore count
3030value is @var{n}, the breakpoint does not stop the next @var{n} times
3031your program reaches it.
3032
3033@table @code
3034@kindex ignore
3035@item ignore @var{bnum} @var{count}
3036Set the ignore count of breakpoint number @var{bnum} to @var{count}.
3037The next @var{count} times the breakpoint is reached, your program's
3038execution does not stop; other than to decrement the ignore count, @value{GDBN}
3039takes no action.
3040
3041To make the breakpoint stop the next time it is reached, specify
3042a count of zero.
3043
3044When you use @code{continue} to resume execution of your program from a
3045breakpoint, you can specify an ignore count directly as an argument to
3046@code{continue}, rather than using @code{ignore}. @xref{Continuing and
3047Stepping,,Continuing and stepping}.
3048
3049If a breakpoint has a positive ignore count and a condition, the
3050condition is not checked. Once the ignore count reaches zero,
3051@value{GDBN} resumes checking the condition.
3052
3053You could achieve the effect of the ignore count with a condition such
3054as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
3055is decremented each time. @xref{Convenience Vars, ,Convenience
3056variables}.
3057@end table
3058
3059Ignore counts apply to breakpoints, watchpoints, and catchpoints.
3060
3061
6d2ebf8b 3062@node Break Commands
c906108c
SS
3063@subsection Breakpoint command lists
3064
3065@cindex breakpoint commands
3066You can give any breakpoint (or watchpoint or catchpoint) a series of
3067commands to execute when your program stops due to that breakpoint. For
3068example, you might want to print the values of certain expressions, or
3069enable other breakpoints.
3070
3071@table @code
3072@kindex commands
3073@kindex end
3074@item commands @r{[}@var{bnum}@r{]}
3075@itemx @dots{} @var{command-list} @dots{}
3076@itemx end
3077Specify a list of commands for breakpoint number @var{bnum}. The commands
3078themselves appear on the following lines. Type a line containing just
3079@code{end} to terminate the commands.
3080
3081To remove all commands from a breakpoint, type @code{commands} and
3082follow it immediately with @code{end}; that is, give no commands.
3083
3084With no @var{bnum} argument, @code{commands} refers to the last
3085breakpoint, watchpoint, or catchpoint set (not to the breakpoint most
3086recently encountered).
3087@end table
3088
3089Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
3090disabled within a @var{command-list}.
3091
3092You can use breakpoint commands to start your program up again. Simply
3093use the @code{continue} command, or @code{step}, or any other command
3094that resumes execution.
3095
3096Any other commands in the command list, after a command that resumes
3097execution, are ignored. This is because any time you resume execution
3098(even with a simple @code{next} or @code{step}), you may encounter
3099another breakpoint---which could have its own command list, leading to
3100ambiguities about which list to execute.
3101
3102@kindex silent
3103If the first command you specify in a command list is @code{silent}, the
3104usual message about stopping at a breakpoint is not printed. This may
3105be desirable for breakpoints that are to print a specific message and
3106then continue. If none of the remaining commands print anything, you
3107see no sign that the breakpoint was reached. @code{silent} is
3108meaningful only at the beginning of a breakpoint command list.
3109
3110The commands @code{echo}, @code{output}, and @code{printf} allow you to
3111print precisely controlled output, and are often useful in silent
3112breakpoints. @xref{Output, ,Commands for controlled output}.
3113
3114For example, here is how you could use breakpoint commands to print the
3115value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
3116
3117@example
3118break foo if x>0
3119commands
3120silent
3121printf "x is %d\n",x
3122cont
3123end
3124@end example
3125
3126One application for breakpoint commands is to compensate for one bug so
3127you can test for another. Put a breakpoint just after the erroneous line
3128of code, give it a condition to detect the case in which something
3129erroneous has been done, and give it commands to assign correct values
3130to any variables that need them. End with the @code{continue} command
3131so that your program does not stop, and start with the @code{silent}
3132command so that no output is produced. Here is an example:
3133
3134@example
3135break 403
3136commands
3137silent
3138set x = y + 4
3139cont
3140end
3141@end example
3142
6d2ebf8b 3143@node Breakpoint Menus
c906108c
SS
3144@subsection Breakpoint menus
3145@cindex overloading
3146@cindex symbol overloading
3147
b37052ae 3148Some programming languages (notably C@t{++}) permit a single function name
c906108c
SS
3149to be defined several times, for application in different contexts.
3150This is called @dfn{overloading}. When a function name is overloaded,
3151@samp{break @var{function}} is not enough to tell @value{GDBN} where you want
3152a breakpoint. If you realize this is a problem, you can use
3153something like @samp{break @var{function}(@var{types})} to specify which
3154particular version of the function you want. Otherwise, @value{GDBN} offers
3155you a menu of numbered choices for different possible breakpoints, and
3156waits for your selection with the prompt @samp{>}. The first two
3157options are always @samp{[0] cancel} and @samp{[1] all}. Typing @kbd{1}
3158sets a breakpoint at each definition of @var{function}, and typing
3159@kbd{0} aborts the @code{break} command without setting any new
3160breakpoints.
3161
3162For example, the following session excerpt shows an attempt to set a
3163breakpoint at the overloaded symbol @code{String::after}.
3164We choose three particular definitions of that function name:
3165
3166@c FIXME! This is likely to change to show arg type lists, at least
3167@smallexample
3168@group
3169(@value{GDBP}) b String::after
3170[0] cancel
3171[1] all
3172[2] file:String.cc; line number:867
3173[3] file:String.cc; line number:860
3174[4] file:String.cc; line number:875
3175[5] file:String.cc; line number:853
3176[6] file:String.cc; line number:846
3177[7] file:String.cc; line number:735
3178> 2 4 6
3179Breakpoint 1 at 0xb26c: file String.cc, line 867.
3180Breakpoint 2 at 0xb344: file String.cc, line 875.
3181Breakpoint 3 at 0xafcc: file String.cc, line 846.
3182Multiple breakpoints were set.
3183Use the "delete" command to delete unwanted
3184 breakpoints.
3185(@value{GDBP})
3186@end group
3187@end smallexample
c906108c
SS
3188
3189@c @ifclear BARETARGET
6d2ebf8b 3190@node Error in Breakpoints
d4f3574e 3191@subsection ``Cannot insert breakpoints''
c906108c
SS
3192@c
3193@c FIXME!! 14/6/95 Is there a real example of this? Let's use it.
3194@c
d4f3574e
SS
3195Under some operating systems, breakpoints cannot be used in a program if
3196any other process is running that program. In this situation,
5d161b24 3197attempting to run or continue a program with a breakpoint causes
d4f3574e
SS
3198@value{GDBN} to print an error message:
3199
3200@example
3201Cannot insert breakpoints.
3202The same program may be running in another process.
3203@end example
3204
3205When this happens, you have three ways to proceed:
3206
3207@enumerate
3208@item
3209Remove or disable the breakpoints, then continue.
3210
3211@item
5d161b24 3212Suspend @value{GDBN}, and copy the file containing your program to a new
d4f3574e 3213name. Resume @value{GDBN} and use the @code{exec-file} command to specify
5d161b24 3214that @value{GDBN} should run your program under that name.
d4f3574e
SS
3215Then start your program again.
3216
3217@item
3218Relink your program so that the text segment is nonsharable, using the
3219linker option @samp{-N}. The operating system limitation may not apply
3220to nonsharable executables.
3221@end enumerate
c906108c
SS
3222@c @end ifclear
3223
d4f3574e
SS
3224A similar message can be printed if you request too many active
3225hardware-assisted breakpoints and watchpoints:
3226
3227@c FIXME: the precise wording of this message may change; the relevant
3228@c source change is not committed yet (Sep 3, 1999).
3229@smallexample
3230Stopped; cannot insert breakpoints.
3231You may have requested too many hardware breakpoints and watchpoints.
3232@end smallexample
3233
3234@noindent
3235This message is printed when you attempt to resume the program, since
3236only then @value{GDBN} knows exactly how many hardware breakpoints and
3237watchpoints it needs to insert.
3238
3239When this message is printed, you need to disable or remove some of the
3240hardware-assisted breakpoints and watchpoints, and then continue.
3241
3242
6d2ebf8b 3243@node Continuing and Stepping
c906108c
SS
3244@section Continuing and stepping
3245
3246@cindex stepping
3247@cindex continuing
3248@cindex resuming execution
3249@dfn{Continuing} means resuming program execution until your program
3250completes normally. In contrast, @dfn{stepping} means executing just
3251one more ``step'' of your program, where ``step'' may mean either one
3252line of source code, or one machine instruction (depending on what
7a292a7a
SS
3253particular command you use). Either when continuing or when stepping,
3254your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
3255it stops due to a signal, you may want to use @code{handle}, or use
3256@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
3257
3258@table @code
3259@kindex continue
41afff9a
EZ
3260@kindex c @r{(@code{continue})}
3261@kindex fg @r{(resume foreground execution)}
c906108c
SS
3262@item continue @r{[}@var{ignore-count}@r{]}
3263@itemx c @r{[}@var{ignore-count}@r{]}
3264@itemx fg @r{[}@var{ignore-count}@r{]}
3265Resume program execution, at the address where your program last stopped;
3266any breakpoints set at that address are bypassed. The optional argument
3267@var{ignore-count} allows you to specify a further number of times to
3268ignore a breakpoint at this location; its effect is like that of
3269@code{ignore} (@pxref{Conditions, ,Break conditions}).
3270
3271The argument @var{ignore-count} is meaningful only when your program
3272stopped due to a breakpoint. At other times, the argument to
3273@code{continue} is ignored.
3274
d4f3574e
SS
3275The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
3276debugged program is deemed to be the foreground program) are provided
3277purely for convenience, and have exactly the same behavior as
3278@code{continue}.
c906108c
SS
3279@end table
3280
3281To resume execution at a different place, you can use @code{return}
3282(@pxref{Returning, ,Returning from a function}) to go back to the
3283calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
3284different address}) to go to an arbitrary location in your program.
3285
3286A typical technique for using stepping is to set a breakpoint
3287(@pxref{Breakpoints, ,Breakpoints; watchpoints; and catchpoints}) at the
3288beginning of the function or the section of your program where a problem
3289is believed to lie, run your program until it stops at that breakpoint,
3290and then step through the suspect area, examining the variables that are
3291interesting, until you see the problem happen.
3292
3293@table @code
3294@kindex step
41afff9a 3295@kindex s @r{(@code{step})}
c906108c
SS
3296@item step
3297Continue running your program until control reaches a different source
3298line, then stop it and return control to @value{GDBN}. This command is
3299abbreviated @code{s}.
3300
3301@quotation
3302@c "without debugging information" is imprecise; actually "without line
3303@c numbers in the debugging information". (gcc -g1 has debugging info but
3304@c not line numbers). But it seems complex to try to make that
3305@c distinction here.
3306@emph{Warning:} If you use the @code{step} command while control is
3307within a function that was compiled without debugging information,
3308execution proceeds until control reaches a function that does have
3309debugging information. Likewise, it will not step into a function which
3310is compiled without debugging information. To step through functions
3311without debugging information, use the @code{stepi} command, described
3312below.
3313@end quotation
3314
4a92d011
EZ
3315The @code{step} command only stops at the first instruction of a source
3316line. This prevents the multiple stops that could otherwise occur in
3317@code{switch} statements, @code{for} loops, etc. @code{step} continues
3318to stop if a function that has debugging information is called within
3319the line. In other words, @code{step} @emph{steps inside} any functions
3320called within the line.
c906108c 3321
d4f3574e
SS
3322Also, the @code{step} command only enters a function if there is line
3323number information for the function. Otherwise it acts like the
5d161b24 3324@code{next} command. This avoids problems when using @code{cc -gl}
c906108c 3325on MIPS machines. Previously, @code{step} entered subroutines if there
5d161b24 3326was any debugging information about the routine.
c906108c
SS
3327
3328@item step @var{count}
3329Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
3330breakpoint is reached, or a signal not related to stepping occurs before
3331@var{count} steps, stepping stops right away.
c906108c
SS
3332
3333@kindex next
41afff9a 3334@kindex n @r{(@code{next})}
c906108c
SS
3335@item next @r{[}@var{count}@r{]}
3336Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
3337This is similar to @code{step}, but function calls that appear within
3338the line of code are executed without stopping. Execution stops when
3339control reaches a different line of code at the original stack level
3340that was executing when you gave the @code{next} command. This command
3341is abbreviated @code{n}.
c906108c
SS
3342
3343An argument @var{count} is a repeat count, as for @code{step}.
3344
3345
3346@c FIX ME!! Do we delete this, or is there a way it fits in with
3347@c the following paragraph? --- Vctoria
3348@c
3349@c @code{next} within a function that lacks debugging information acts like
3350@c @code{step}, but any function calls appearing within the code of the
3351@c function are executed without stopping.
3352
d4f3574e
SS
3353The @code{next} command only stops at the first instruction of a
3354source line. This prevents multiple stops that could otherwise occur in
4a92d011 3355@code{switch} statements, @code{for} loops, etc.
c906108c 3356
b90a5f51
CF
3357@kindex set step-mode
3358@item set step-mode
3359@cindex functions without line info, and stepping
3360@cindex stepping into functions with no line info
3361@itemx set step-mode on
4a92d011 3362The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
3363stop at the first instruction of a function which contains no debug line
3364information rather than stepping over it.
3365
4a92d011
EZ
3366This is useful in cases where you may be interested in inspecting the
3367machine instructions of a function which has no symbolic info and do not
3368want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
3369
3370@item set step-mode off
4a92d011 3371Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
3372debug information. This is the default.
3373
c906108c
SS
3374@kindex finish
3375@item finish
3376Continue running until just after function in the selected stack frame
3377returns. Print the returned value (if any).
3378
3379Contrast this with the @code{return} command (@pxref{Returning,
3380,Returning from a function}).
3381
3382@kindex until
41afff9a 3383@kindex u @r{(@code{until})}
c906108c
SS
3384@item until
3385@itemx u
3386Continue running until a source line past the current line, in the
3387current stack frame, is reached. This command is used to avoid single
3388stepping through a loop more than once. It is like the @code{next}
3389command, except that when @code{until} encounters a jump, it
3390automatically continues execution until the program counter is greater
3391than the address of the jump.
3392
3393This means that when you reach the end of a loop after single stepping
3394though it, @code{until} makes your program continue execution until it
3395exits the loop. In contrast, a @code{next} command at the end of a loop
3396simply steps back to the beginning of the loop, which forces you to step
3397through the next iteration.
3398
3399@code{until} always stops your program if it attempts to exit the current
3400stack frame.
3401
3402@code{until} may produce somewhat counterintuitive results if the order
3403of machine code does not match the order of the source lines. For
3404example, in the following excerpt from a debugging session, the @code{f}
3405(@code{frame}) command shows that execution is stopped at line
3406@code{206}; yet when we use @code{until}, we get to line @code{195}:
3407
3408@example
3409(@value{GDBP}) f
3410#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
3411206 expand_input();
3412(@value{GDBP}) until
3413195 for ( ; argc > 0; NEXTARG) @{
3414@end example
3415
3416This happened because, for execution efficiency, the compiler had
3417generated code for the loop closure test at the end, rather than the
3418start, of the loop---even though the test in a C @code{for}-loop is
3419written before the body of the loop. The @code{until} command appeared
3420to step back to the beginning of the loop when it advanced to this
3421expression; however, it has not really gone to an earlier
3422statement---not in terms of the actual machine code.
3423
3424@code{until} with no argument works by means of single
3425instruction stepping, and hence is slower than @code{until} with an
3426argument.
3427
3428@item until @var{location}
3429@itemx u @var{location}
3430Continue running your program until either the specified location is
3431reached, or the current stack frame returns. @var{location} is any of
3432the forms of argument acceptable to @code{break} (@pxref{Set Breaks,
3433,Setting breakpoints}). This form of the command uses breakpoints,
3434and hence is quicker than @code{until} without an argument.
3435
3436@kindex stepi
41afff9a 3437@kindex si @r{(@code{stepi})}
c906108c 3438@item stepi
96a2c332 3439@itemx stepi @var{arg}
c906108c
SS
3440@itemx si
3441Execute one machine instruction, then stop and return to the debugger.
3442
3443It is often useful to do @samp{display/i $pc} when stepping by machine
3444instructions. This makes @value{GDBN} automatically display the next
3445instruction to be executed, each time your program stops. @xref{Auto
3446Display,, Automatic display}.
3447
3448An argument is a repeat count, as in @code{step}.
3449
3450@need 750
3451@kindex nexti
41afff9a 3452@kindex ni @r{(@code{nexti})}
c906108c 3453@item nexti
96a2c332 3454@itemx nexti @var{arg}
c906108c
SS
3455@itemx ni
3456Execute one machine instruction, but if it is a function call,
3457proceed until the function returns.
3458
3459An argument is a repeat count, as in @code{next}.
3460@end table
3461
6d2ebf8b 3462@node Signals
c906108c
SS
3463@section Signals
3464@cindex signals
3465
3466A signal is an asynchronous event that can happen in a program. The
3467operating system defines the possible kinds of signals, and gives each
3468kind a name and a number. For example, in Unix @code{SIGINT} is the
d4f3574e 3469signal a program gets when you type an interrupt character (often @kbd{C-c});
c906108c
SS
3470@code{SIGSEGV} is the signal a program gets from referencing a place in
3471memory far away from all the areas in use; @code{SIGALRM} occurs when
3472the alarm clock timer goes off (which happens only if your program has
3473requested an alarm).
3474
3475@cindex fatal signals
3476Some signals, including @code{SIGALRM}, are a normal part of the
3477functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 3478errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
3479program has not specified in advance some other way to handle the signal.
3480@code{SIGINT} does not indicate an error in your program, but it is normally
3481fatal so it can carry out the purpose of the interrupt: to kill the program.
3482
3483@value{GDBN} has the ability to detect any occurrence of a signal in your
3484program. You can tell @value{GDBN} in advance what to do for each kind of
3485signal.
3486
3487@cindex handling signals
24f93129
EZ
3488Normally, @value{GDBN} is set up to let the non-erroneous signals like
3489@code{SIGALRM} be silently passed to your program
3490(so as not to interfere with their role in the program's functioning)
c906108c
SS
3491but to stop your program immediately whenever an error signal happens.
3492You can change these settings with the @code{handle} command.
3493
3494@table @code
3495@kindex info signals
3496@item info signals
96a2c332 3497@itemx info handle
c906108c
SS
3498Print a table of all the kinds of signals and how @value{GDBN} has been told to
3499handle each one. You can use this to see the signal numbers of all
3500the defined types of signals.
3501
d4f3574e 3502@code{info handle} is an alias for @code{info signals}.
c906108c
SS
3503
3504@kindex handle
3505@item handle @var{signal} @var{keywords}@dots{}
5ece1a18
EZ
3506Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
3507can be the number of a signal or its name (with or without the
24f93129 3508@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18
EZ
3509@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
3510known signals. The @var{keywords} say what change to make.
c906108c
SS
3511@end table
3512
3513@c @group
3514The keywords allowed by the @code{handle} command can be abbreviated.
3515Their full names are:
3516
3517@table @code
3518@item nostop
3519@value{GDBN} should not stop your program when this signal happens. It may
3520still print a message telling you that the signal has come in.
3521
3522@item stop
3523@value{GDBN} should stop your program when this signal happens. This implies
3524the @code{print} keyword as well.
3525
3526@item print
3527@value{GDBN} should print a message when this signal happens.
3528
3529@item noprint
3530@value{GDBN} should not mention the occurrence of the signal at all. This
3531implies the @code{nostop} keyword as well.
3532
3533@item pass
5ece1a18 3534@itemx noignore
c906108c
SS
3535@value{GDBN} should allow your program to see this signal; your program
3536can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 3537and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
3538
3539@item nopass
5ece1a18 3540@itemx ignore
c906108c 3541@value{GDBN} should not allow your program to see this signal.
5ece1a18 3542@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
3543@end table
3544@c @end group
3545
d4f3574e
SS
3546When a signal stops your program, the signal is not visible to the
3547program until you
c906108c
SS
3548continue. Your program sees the signal then, if @code{pass} is in
3549effect for the signal in question @emph{at that time}. In other words,
3550after @value{GDBN} reports a signal, you can use the @code{handle}
3551command with @code{pass} or @code{nopass} to control whether your
3552program sees that signal when you continue.
3553
24f93129
EZ
3554The default is set to @code{nostop}, @code{noprint}, @code{pass} for
3555non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
3556@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
3557erroneous signals.
3558
c906108c
SS
3559You can also use the @code{signal} command to prevent your program from
3560seeing a signal, or cause it to see a signal it normally would not see,
3561or to give it any signal at any time. For example, if your program stopped
3562due to some sort of memory reference error, you might store correct
3563values into the erroneous variables and continue, hoping to see more
3564execution; but your program would probably terminate immediately as
3565a result of the fatal signal once it saw the signal. To prevent this,
3566you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
5d161b24 3567program a signal}.
c906108c 3568
6d2ebf8b 3569@node Thread Stops
c906108c
SS
3570@section Stopping and starting multi-thread programs
3571
3572When your program has multiple threads (@pxref{Threads,, Debugging
3573programs with multiple threads}), you can choose whether to set
3574breakpoints on all threads, or on a particular thread.
3575
3576@table @code
3577@cindex breakpoints and threads
3578@cindex thread breakpoints
3579@kindex break @dots{} thread @var{threadno}
3580@item break @var{linespec} thread @var{threadno}
3581@itemx break @var{linespec} thread @var{threadno} if @dots{}
3582@var{linespec} specifies source lines; there are several ways of
3583writing them, but the effect is always to specify some source line.
3584
3585Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
3586to specify that you only want @value{GDBN} to stop the program when a
3587particular thread reaches this breakpoint. @var{threadno} is one of the
3588numeric thread identifiers assigned by @value{GDBN}, shown in the first
3589column of the @samp{info threads} display.
3590
3591If you do not specify @samp{thread @var{threadno}} when you set a
3592breakpoint, the breakpoint applies to @emph{all} threads of your
3593program.
3594
3595You can use the @code{thread} qualifier on conditional breakpoints as
3596well; in this case, place @samp{thread @var{threadno}} before the
3597breakpoint condition, like this:
3598
3599@smallexample
2df3850c 3600(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
3601@end smallexample
3602
3603@end table
3604
3605@cindex stopped threads
3606@cindex threads, stopped
3607Whenever your program stops under @value{GDBN} for any reason,
3608@emph{all} threads of execution stop, not just the current thread. This
3609allows you to examine the overall state of the program, including
3610switching between threads, without worrying that things may change
3611underfoot.
3612
3613@cindex continuing threads
3614@cindex threads, continuing
3615Conversely, whenever you restart the program, @emph{all} threads start
3616executing. @emph{This is true even when single-stepping} with commands
5d161b24 3617like @code{step} or @code{next}.
c906108c
SS
3618
3619In particular, @value{GDBN} cannot single-step all threads in lockstep.
3620Since thread scheduling is up to your debugging target's operating
3621system (not controlled by @value{GDBN}), other threads may
3622execute more than one statement while the current thread completes a
3623single step. Moreover, in general other threads stop in the middle of a
3624statement, rather than at a clean statement boundary, when the program
3625stops.
3626
3627You might even find your program stopped in another thread after
3628continuing or even single-stepping. This happens whenever some other
3629thread runs into a breakpoint, a signal, or an exception before the
3630first thread completes whatever you requested.
3631
3632On some OSes, you can lock the OS scheduler and thus allow only a single
3633thread to run.
3634
3635@table @code
3636@item set scheduler-locking @var{mode}
3637Set the scheduler locking mode. If it is @code{off}, then there is no
3638locking and any thread may run at any time. If @code{on}, then only the
3639current thread may run when the inferior is resumed. The @code{step}
3640mode optimizes for single-stepping. It stops other threads from
3641``seizing the prompt'' by preempting the current thread while you are
3642stepping. Other threads will only rarely (or never) get a chance to run
d4f3574e 3643when you step. They are more likely to run when you @samp{next} over a
c906108c 3644function call, and they are completely free to run when you use commands
d4f3574e 3645like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
c906108c 3646thread hits a breakpoint during its timeslice, they will never steal the
2df3850c 3647@value{GDBN} prompt away from the thread that you are debugging.
c906108c
SS
3648
3649@item show scheduler-locking
3650Display the current scheduler locking mode.
3651@end table
3652
c906108c 3653
6d2ebf8b 3654@node Stack
c906108c
SS
3655@chapter Examining the Stack
3656
3657When your program has stopped, the first thing you need to know is where it
3658stopped and how it got there.
3659
3660@cindex call stack
5d161b24
DB
3661Each time your program performs a function call, information about the call
3662is generated.
3663That information includes the location of the call in your program,
3664the arguments of the call,
c906108c 3665and the local variables of the function being called.
5d161b24 3666The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
3667The stack frames are allocated in a region of memory called the @dfn{call
3668stack}.
3669
3670When your program stops, the @value{GDBN} commands for examining the
3671stack allow you to see all of this information.
3672
3673@cindex selected frame
3674One of the stack frames is @dfn{selected} by @value{GDBN} and many
3675@value{GDBN} commands refer implicitly to the selected frame. In
3676particular, whenever you ask @value{GDBN} for the value of a variable in
3677your program, the value is found in the selected frame. There are
3678special @value{GDBN} commands to select whichever frame you are
3679interested in. @xref{Selection, ,Selecting a frame}.
3680
3681When your program stops, @value{GDBN} automatically selects the
5d161b24 3682currently executing frame and describes it briefly, similar to the
c906108c
SS
3683@code{frame} command (@pxref{Frame Info, ,Information about a frame}).
3684
3685@menu
3686* Frames:: Stack frames
3687* Backtrace:: Backtraces
3688* Selection:: Selecting a frame
3689* Frame Info:: Information on a frame
c906108c
SS
3690
3691@end menu
3692
6d2ebf8b 3693@node Frames
c906108c
SS
3694@section Stack frames
3695
d4f3574e 3696@cindex frame, definition
c906108c
SS
3697@cindex stack frame
3698The call stack is divided up into contiguous pieces called @dfn{stack
3699frames}, or @dfn{frames} for short; each frame is the data associated
3700with one call to one function. The frame contains the arguments given
3701to the function, the function's local variables, and the address at
3702which the function is executing.
3703
3704@cindex initial frame
3705@cindex outermost frame
3706@cindex innermost frame
3707When your program is started, the stack has only one frame, that of the
3708function @code{main}. This is called the @dfn{initial} frame or the
3709@dfn{outermost} frame. Each time a function is called, a new frame is
3710made. Each time a function returns, the frame for that function invocation
3711is eliminated. If a function is recursive, there can be many frames for
3712the same function. The frame for the function in which execution is
3713actually occurring is called the @dfn{innermost} frame. This is the most
3714recently created of all the stack frames that still exist.
3715
3716@cindex frame pointer
3717Inside your program, stack frames are identified by their addresses. A
3718stack frame consists of many bytes, each of which has its own address; each
3719kind of computer has a convention for choosing one byte whose
3720address serves as the address of the frame. Usually this address is kept
3721in a register called the @dfn{frame pointer register} while execution is
3722going on in that frame.
3723
3724@cindex frame number
3725@value{GDBN} assigns numbers to all existing stack frames, starting with
3726zero for the innermost frame, one for the frame that called it,
3727and so on upward. These numbers do not really exist in your program;
3728they are assigned by @value{GDBN} to give you a way of designating stack
3729frames in @value{GDBN} commands.
3730
6d2ebf8b
SS
3731@c The -fomit-frame-pointer below perennially causes hbox overflow
3732@c underflow problems.
c906108c
SS
3733@cindex frameless execution
3734Some compilers provide a way to compile functions so that they operate
6d2ebf8b
SS
3735without stack frames. (For example, the @value{GCC} option
3736@example
3737@samp{-fomit-frame-pointer}
3738@end example
3739generates functions without a frame.)
c906108c
SS
3740This is occasionally done with heavily used library functions to save
3741the frame setup time. @value{GDBN} has limited facilities for dealing
3742with these function invocations. If the innermost function invocation
3743has no stack frame, @value{GDBN} nevertheless regards it as though
3744it had a separate frame, which is numbered zero as usual, allowing
3745correct tracing of the function call chain. However, @value{GDBN} has
3746no provision for frameless functions elsewhere in the stack.
3747
3748@table @code
d4f3574e 3749@kindex frame@r{, command}
41afff9a 3750@cindex current stack frame
c906108c 3751@item frame @var{args}
5d161b24 3752The @code{frame} command allows you to move from one stack frame to another,
c906108c 3753and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
3754address of the frame or the stack frame number. Without an argument,
3755@code{frame} prints the current stack frame.
c906108c
SS
3756
3757@kindex select-frame
41afff9a 3758@cindex selecting frame silently
c906108c
SS
3759@item select-frame
3760The @code{select-frame} command allows you to move from one stack frame
3761to another without printing the frame. This is the silent version of
3762@code{frame}.
3763@end table
3764
6d2ebf8b 3765@node Backtrace
c906108c
SS
3766@section Backtraces
3767
3768@cindex backtraces
3769@cindex tracebacks
3770@cindex stack traces
3771A backtrace is a summary of how your program got where it is. It shows one
3772line per frame, for many frames, starting with the currently executing
3773frame (frame zero), followed by its caller (frame one), and on up the
3774stack.
3775
3776@table @code
3777@kindex backtrace
41afff9a 3778@kindex bt @r{(@code{backtrace})}
c906108c
SS
3779@item backtrace
3780@itemx bt
3781Print a backtrace of the entire stack: one line per frame for all
3782frames in the stack.
3783
3784You can stop the backtrace at any time by typing the system interrupt
3785character, normally @kbd{C-c}.
3786
3787@item backtrace @var{n}
3788@itemx bt @var{n}
3789Similar, but print only the innermost @var{n} frames.
3790
3791@item backtrace -@var{n}
3792@itemx bt -@var{n}
3793Similar, but print only the outermost @var{n} frames.
3794@end table
3795
3796@kindex where
3797@kindex info stack
41afff9a 3798@kindex info s @r{(@code{info stack})}
c906108c
SS
3799The names @code{where} and @code{info stack} (abbreviated @code{info s})
3800are additional aliases for @code{backtrace}.
3801
3802Each line in the backtrace shows the frame number and the function name.
3803The program counter value is also shown---unless you use @code{set
3804print address off}. The backtrace also shows the source file name and
3805line number, as well as the arguments to the function. The program
3806counter value is omitted if it is at the beginning of the code for that
3807line number.
3808
3809Here is an example of a backtrace. It was made with the command
3810@samp{bt 3}, so it shows the innermost three frames.
3811
3812@smallexample
3813@group
5d161b24 3814#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c
SS
3815 at builtin.c:993
3816#1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
3817#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
3818 at macro.c:71
3819(More stack frames follow...)
3820@end group
3821@end smallexample
3822
3823@noindent
3824The display for frame zero does not begin with a program counter
3825value, indicating that your program has stopped at the beginning of the
3826code for line @code{993} of @code{builtin.c}.
3827
6d2ebf8b 3828@node Selection
c906108c
SS
3829@section Selecting a frame
3830
3831Most commands for examining the stack and other data in your program work on
3832whichever stack frame is selected at the moment. Here are the commands for
3833selecting a stack frame; all of them finish by printing a brief description
3834of the stack frame just selected.
3835
3836@table @code
d4f3574e 3837@kindex frame@r{, selecting}
41afff9a 3838@kindex f @r{(@code{frame})}
c906108c
SS
3839@item frame @var{n}
3840@itemx f @var{n}
3841Select frame number @var{n}. Recall that frame zero is the innermost
3842(currently executing) frame, frame one is the frame that called the
3843innermost one, and so on. The highest-numbered frame is the one for
3844@code{main}.
3845
3846@item frame @var{addr}
3847@itemx f @var{addr}
3848Select the frame at address @var{addr}. This is useful mainly if the
3849chaining of stack frames has been damaged by a bug, making it
3850impossible for @value{GDBN} to assign numbers properly to all frames. In
3851addition, this can be useful when your program has multiple stacks and
3852switches between them.
3853
c906108c
SS
3854On the SPARC architecture, @code{frame} needs two addresses to
3855select an arbitrary frame: a frame pointer and a stack pointer.
3856
3857On the MIPS and Alpha architecture, it needs two addresses: a stack
3858pointer and a program counter.
3859
3860On the 29k architecture, it needs three addresses: a register stack
3861pointer, a program counter, and a memory stack pointer.
3862@c note to future updaters: this is conditioned on a flag
3863@c SETUP_ARBITRARY_FRAME in the tm-*.h files. The above is up to date
3864@c as of 27 Jan 1994.
c906108c
SS
3865
3866@kindex up
3867@item up @var{n}
3868Move @var{n} frames up the stack. For positive numbers @var{n}, this
3869advances toward the outermost frame, to higher frame numbers, to frames
3870that have existed longer. @var{n} defaults to one.
3871
3872@kindex down
41afff9a 3873@kindex do @r{(@code{down})}
c906108c
SS
3874@item down @var{n}
3875Move @var{n} frames down the stack. For positive numbers @var{n}, this
3876advances toward the innermost frame, to lower frame numbers, to frames
3877that were created more recently. @var{n} defaults to one. You may
3878abbreviate @code{down} as @code{do}.
3879@end table
3880
3881All of these commands end by printing two lines of output describing the
3882frame. The first line shows the frame number, the function name, the
3883arguments, and the source file and line number of execution in that
5d161b24 3884frame. The second line shows the text of that source line.
c906108c
SS
3885
3886@need 1000
3887For example:
3888
3889@smallexample
3890@group
3891(@value{GDBP}) up
3892#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
3893 at env.c:10
389410 read_input_file (argv[i]);
3895@end group
3896@end smallexample
3897
3898After such a printout, the @code{list} command with no arguments
3899prints ten lines centered on the point of execution in the frame.
3900@xref{List, ,Printing source lines}.
3901
3902@table @code
3903@kindex down-silently
3904@kindex up-silently
3905@item up-silently @var{n}
3906@itemx down-silently @var{n}
3907These two commands are variants of @code{up} and @code{down},
3908respectively; they differ in that they do their work silently, without
3909causing display of the new frame. They are intended primarily for use
3910in @value{GDBN} command scripts, where the output might be unnecessary and
3911distracting.
3912@end table
3913
6d2ebf8b 3914@node Frame Info
c906108c
SS
3915@section Information about a frame
3916
3917There are several other commands to print information about the selected
3918stack frame.
3919
3920@table @code
3921@item frame
3922@itemx f
3923When used without any argument, this command does not change which
3924frame is selected, but prints a brief description of the currently
3925selected stack frame. It can be abbreviated @code{f}. With an
3926argument, this command is used to select a stack frame.
3927@xref{Selection, ,Selecting a frame}.
3928
3929@kindex info frame
41afff9a 3930@kindex info f @r{(@code{info frame})}
c906108c
SS
3931@item info frame
3932@itemx info f
3933This command prints a verbose description of the selected stack frame,
3934including:
3935
3936@itemize @bullet
5d161b24
DB
3937@item
3938the address of the frame
c906108c
SS
3939@item
3940the address of the next frame down (called by this frame)
3941@item
3942the address of the next frame up (caller of this frame)
3943@item
3944the language in which the source code corresponding to this frame is written
3945@item
3946the address of the frame's arguments
3947@item
d4f3574e
SS
3948the address of the frame's local variables
3949@item
c906108c
SS
3950the program counter saved in it (the address of execution in the caller frame)
3951@item
3952which registers were saved in the frame
3953@end itemize
3954
3955@noindent The verbose description is useful when
3956something has gone wrong that has made the stack format fail to fit
3957the usual conventions.
3958
3959@item info frame @var{addr}
3960@itemx info f @var{addr}
3961Print a verbose description of the frame at address @var{addr}, without
3962selecting that frame. The selected frame remains unchanged by this
3963command. This requires the same kind of address (more than one for some
3964architectures) that you specify in the @code{frame} command.
3965@xref{Selection, ,Selecting a frame}.
3966
3967@kindex info args
3968@item info args
3969Print the arguments of the selected frame, each on a separate line.
3970
3971@item info locals
3972@kindex info locals
3973Print the local variables of the selected frame, each on a separate
3974line. These are all variables (declared either static or automatic)
3975accessible at the point of execution of the selected frame.
3976
c906108c 3977@kindex info catch
d4f3574e
SS
3978@cindex catch exceptions, list active handlers
3979@cindex exception handlers, how to list
c906108c
SS
3980@item info catch
3981Print a list of all the exception handlers that are active in the
3982current stack frame at the current point of execution. To see other
3983exception handlers, visit the associated frame (using the @code{up},
3984@code{down}, or @code{frame} commands); then type @code{info catch}.
3985@xref{Set Catchpoints, , Setting catchpoints}.
53a5351d 3986
c906108c
SS
3987@end table
3988
c906108c 3989
6d2ebf8b 3990@node Source
c906108c
SS
3991@chapter Examining Source Files
3992
3993@value{GDBN} can print parts of your program's source, since the debugging
3994information recorded in the program tells @value{GDBN} what source files were
3995used to build it. When your program stops, @value{GDBN} spontaneously prints
3996the line where it stopped. Likewise, when you select a stack frame
3997(@pxref{Selection, ,Selecting a frame}), @value{GDBN} prints the line where
3998execution in that frame has stopped. You can print other portions of
3999source files by explicit command.
4000
7a292a7a 4001If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 4002prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 4003@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
4004
4005@menu
4006* List:: Printing source lines
c906108c 4007* Search:: Searching source files
c906108c
SS
4008* Source Path:: Specifying source directories
4009* Machine Code:: Source and machine code
4010@end menu
4011
6d2ebf8b 4012@node List
c906108c
SS
4013@section Printing source lines
4014
4015@kindex list
41afff9a 4016@kindex l @r{(@code{list})}
c906108c 4017To print lines from a source file, use the @code{list} command
5d161b24 4018(abbreviated @code{l}). By default, ten lines are printed.
c906108c
SS
4019There are several ways to specify what part of the file you want to print.
4020
4021Here are the forms of the @code{list} command most commonly used:
4022
4023@table @code
4024@item list @var{linenum}
4025Print lines centered around line number @var{linenum} in the
4026current source file.
4027
4028@item list @var{function}
4029Print lines centered around the beginning of function
4030@var{function}.
4031
4032@item list
4033Print more lines. If the last lines printed were printed with a
4034@code{list} command, this prints lines following the last lines
4035printed; however, if the last line printed was a solitary line printed
4036as part of displaying a stack frame (@pxref{Stack, ,Examining the
4037Stack}), this prints lines centered around that line.
4038
4039@item list -
4040Print lines just before the lines last printed.
4041@end table
4042
4043By default, @value{GDBN} prints ten source lines with any of these forms of
4044the @code{list} command. You can change this using @code{set listsize}:
4045
4046@table @code
4047@kindex set listsize
4048@item set listsize @var{count}
4049Make the @code{list} command display @var{count} source lines (unless
4050the @code{list} argument explicitly specifies some other number).
4051
4052@kindex show listsize
4053@item show listsize
4054Display the number of lines that @code{list} prints.
4055@end table
4056
4057Repeating a @code{list} command with @key{RET} discards the argument,
4058so it is equivalent to typing just @code{list}. This is more useful
4059than listing the same lines again. An exception is made for an
4060argument of @samp{-}; that argument is preserved in repetition so that
4061each repetition moves up in the source file.
4062
4063@cindex linespec
4064In general, the @code{list} command expects you to supply zero, one or two
4065@dfn{linespecs}. Linespecs specify source lines; there are several ways
d4f3574e 4066of writing them, but the effect is always to specify some source line.
c906108c
SS
4067Here is a complete description of the possible arguments for @code{list}:
4068
4069@table @code
4070@item list @var{linespec}
4071Print lines centered around the line specified by @var{linespec}.
4072
4073@item list @var{first},@var{last}
4074Print lines from @var{first} to @var{last}. Both arguments are
4075linespecs.
4076
4077@item list ,@var{last}
4078Print lines ending with @var{last}.
4079
4080@item list @var{first},
4081Print lines starting with @var{first}.
4082
4083@item list +
4084Print lines just after the lines last printed.
4085
4086@item list -
4087Print lines just before the lines last printed.
4088
4089@item list
4090As described in the preceding table.
4091@end table
4092
4093Here are the ways of specifying a single source line---all the
4094kinds of linespec.
4095
4096@table @code
4097@item @var{number}
4098Specifies line @var{number} of the current source file.
4099When a @code{list} command has two linespecs, this refers to
4100the same source file as the first linespec.
4101
4102@item +@var{offset}
4103Specifies the line @var{offset} lines after the last line printed.
4104When used as the second linespec in a @code{list} command that has
4105two, this specifies the line @var{offset} lines down from the
4106first linespec.
4107
4108@item -@var{offset}
4109Specifies the line @var{offset} lines before the last line printed.
4110
4111@item @var{filename}:@var{number}
4112Specifies line @var{number} in the source file @var{filename}.
4113
4114@item @var{function}
4115Specifies the line that begins the body of the function @var{function}.
4116For example: in C, this is the line with the open brace.
4117
4118@item @var{filename}:@var{function}
4119Specifies the line of the open-brace that begins the body of the
4120function @var{function} in the file @var{filename}. You only need the
4121file name with a function name to avoid ambiguity when there are
4122identically named functions in different source files.
4123
4124@item *@var{address}
4125Specifies the line containing the program address @var{address}.
4126@var{address} may be any expression.
4127@end table
4128
6d2ebf8b 4129@node Search
c906108c
SS
4130@section Searching source files
4131@cindex searching
4132@kindex reverse-search
4133
4134There are two commands for searching through the current source file for a
4135regular expression.
4136
4137@table @code
4138@kindex search
4139@kindex forward-search
4140@item forward-search @var{regexp}
4141@itemx search @var{regexp}
4142The command @samp{forward-search @var{regexp}} checks each line,
4143starting with the one following the last line listed, for a match for
5d161b24 4144@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
4145synonym @samp{search @var{regexp}} or abbreviate the command name as
4146@code{fo}.
4147
4148@item reverse-search @var{regexp}
4149The command @samp{reverse-search @var{regexp}} checks each line, starting
4150with the one before the last line listed and going backward, for a match
4151for @var{regexp}. It lists the line that is found. You can abbreviate
4152this command as @code{rev}.
4153@end table
c906108c 4154
6d2ebf8b 4155@node Source Path
c906108c
SS
4156@section Specifying source directories
4157
4158@cindex source path
4159@cindex directories for source files
4160Executable programs sometimes do not record the directories of the source
4161files from which they were compiled, just the names. Even when they do,
4162the directories could be moved between the compilation and your debugging
4163session. @value{GDBN} has a list of directories to search for source files;
4164this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
4165it tries all the directories in the list, in the order they are present
4166in the list, until it finds a file with the desired name. Note that
4167the executable search path is @emph{not} used for this purpose. Neither is
4168the current working directory, unless it happens to be in the source
4169path.
4170
4171If @value{GDBN} cannot find a source file in the source path, and the
4172object program records a directory, @value{GDBN} tries that directory
4173too. If the source path is empty, and there is no record of the
4174compilation directory, @value{GDBN} looks in the current directory as a
4175last resort.
4176
4177Whenever you reset or rearrange the source path, @value{GDBN} clears out
4178any information it has cached about where source files are found and where
4179each line is in the file.
4180
4181@kindex directory
4182@kindex dir
d4f3574e
SS
4183When you start @value{GDBN}, its source path includes only @samp{cdir}
4184and @samp{cwd}, in that order.
c906108c
SS
4185To add other directories, use the @code{directory} command.
4186
4187@table @code
4188@item directory @var{dirname} @dots{}
4189@item dir @var{dirname} @dots{}
4190Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
4191directory names may be given to this command, separated by @samp{:}
4192(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
4193part of absolute file names) or
c906108c
SS
4194whitespace. You may specify a directory that is already in the source
4195path; this moves it forward, so @value{GDBN} searches it sooner.
4196
4197@kindex cdir
4198@kindex cwd
41afff9a
EZ
4199@vindex $cdir@r{, convenience variable}
4200@vindex $cwdr@r{, convenience variable}
c906108c
SS
4201@cindex compilation directory
4202@cindex current directory
4203@cindex working directory
4204@cindex directory, current
4205@cindex directory, compilation
4206You can use the string @samp{$cdir} to refer to the compilation
4207directory (if one is recorded), and @samp{$cwd} to refer to the current
4208working directory. @samp{$cwd} is not the same as @samp{.}---the former
4209tracks the current working directory as it changes during your @value{GDBN}
4210session, while the latter is immediately expanded to the current
4211directory at the time you add an entry to the source path.
4212
4213@item directory
4214Reset the source path to empty again. This requires confirmation.
4215
4216@c RET-repeat for @code{directory} is explicitly disabled, but since
4217@c repeating it would be a no-op we do not say that. (thanks to RMS)
4218
4219@item show directories
4220@kindex show directories
4221Print the source path: show which directories it contains.
4222@end table
4223
4224If your source path is cluttered with directories that are no longer of
4225interest, @value{GDBN} may sometimes cause confusion by finding the wrong
4226versions of source. You can correct the situation as follows:
4227
4228@enumerate
4229@item
4230Use @code{directory} with no argument to reset the source path to empty.
4231
4232@item
4233Use @code{directory} with suitable arguments to reinstall the
4234directories you want in the source path. You can add all the
4235directories in one command.
4236@end enumerate
4237
6d2ebf8b 4238@node Machine Code
c906108c
SS
4239@section Source and machine code
4240
4241You can use the command @code{info line} to map source lines to program
4242addresses (and vice versa), and the command @code{disassemble} to display
4243a range of addresses as machine instructions. When run under @sc{gnu} Emacs
d4f3574e 4244mode, the @code{info line} command causes the arrow to point to the
5d161b24 4245line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
4246well as hex.
4247
4248@table @code
4249@kindex info line
4250@item info line @var{linespec}
4251Print the starting and ending addresses of the compiled code for
4252source line @var{linespec}. You can specify source lines in any of
4253the ways understood by the @code{list} command (@pxref{List, ,Printing
4254source lines}).
4255@end table
4256
4257For example, we can use @code{info line} to discover the location of
4258the object code for the first line of function
4259@code{m4_changequote}:
4260
d4f3574e
SS
4261@c FIXME: I think this example should also show the addresses in
4262@c symbolic form, as they usually would be displayed.
c906108c 4263@smallexample
96a2c332 4264(@value{GDBP}) info line m4_changequote
c906108c
SS
4265Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
4266@end smallexample
4267
4268@noindent
4269We can also inquire (using @code{*@var{addr}} as the form for
4270@var{linespec}) what source line covers a particular address:
4271@smallexample
4272(@value{GDBP}) info line *0x63ff
4273Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
4274@end smallexample
4275
4276@cindex @code{$_} and @code{info line}
41afff9a 4277@kindex x@r{(examine), and} info line
c906108c
SS
4278After @code{info line}, the default address for the @code{x} command
4279is changed to the starting address of the line, so that @samp{x/i} is
4280sufficient to begin examining the machine code (@pxref{Memory,
4281,Examining memory}). Also, this address is saved as the value of the
4282convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
4283variables}).
4284
4285@table @code
4286@kindex disassemble
4287@cindex assembly instructions
4288@cindex instructions, assembly
4289@cindex machine instructions
4290@cindex listing machine instructions
4291@item disassemble
4292This specialized command dumps a range of memory as machine
4293instructions. The default memory range is the function surrounding the
4294program counter of the selected frame. A single argument to this
4295command is a program counter value; @value{GDBN} dumps the function
4296surrounding this value. Two arguments specify a range of addresses
4297(first inclusive, second exclusive) to dump.
4298@end table
4299
c906108c
SS
4300The following example shows the disassembly of a range of addresses of
4301HP PA-RISC 2.0 code:
4302
4303@smallexample
4304(@value{GDBP}) disas 0x32c4 0x32e4
4305Dump of assembler code from 0x32c4 to 0x32e4:
43060x32c4 <main+204>: addil 0,dp
43070x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
43080x32cc <main+212>: ldil 0x3000,r31
43090x32d0 <main+216>: ble 0x3f8(sr4,r31)
43100x32d4 <main+220>: ldo 0(r31),rp
43110x32d8 <main+224>: addil -0x800,dp
43120x32dc <main+228>: ldo 0x588(r1),r26
43130x32e0 <main+232>: ldil 0x3000,r31
4314End of assembler dump.
4315@end smallexample
c906108c
SS
4316
4317Some architectures have more than one commonly-used set of instruction
4318mnemonics or other syntax.
4319
4320@table @code
d4f3574e 4321@kindex set disassembly-flavor
c906108c
SS
4322@cindex assembly instructions
4323@cindex instructions, assembly
4324@cindex machine instructions
4325@cindex listing machine instructions
d4f3574e
SS
4326@cindex Intel disassembly flavor
4327@cindex AT&T disassembly flavor
4328@item set disassembly-flavor @var{instruction-set}
c906108c
SS
4329Select the instruction set to use when disassembling the
4330program via the @code{disassemble} or @code{x/i} commands.
4331
4332Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
4333can set @var{instruction-set} to either @code{intel} or @code{att}.
4334The default is @code{att}, the AT&T flavor used by default by Unix
4335assemblers for x86-based targets.
c906108c
SS
4336@end table
4337
4338
6d2ebf8b 4339@node Data
c906108c
SS
4340@chapter Examining Data
4341
4342@cindex printing data
4343@cindex examining data
4344@kindex print
4345@kindex inspect
4346@c "inspect" is not quite a synonym if you are using Epoch, which we do not
4347@c document because it is nonstandard... Under Epoch it displays in a
4348@c different window or something like that.
4349The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
4350command (abbreviated @code{p}), or its synonym @code{inspect}. It
4351evaluates and prints the value of an expression of the language your
4352program is written in (@pxref{Languages, ,Using @value{GDBN} with
4353Different Languages}).
c906108c
SS
4354
4355@table @code
d4f3574e
SS
4356@item print @var{expr}
4357@itemx print /@var{f} @var{expr}
4358@var{expr} is an expression (in the source language). By default the
4359value of @var{expr} is printed in a format appropriate to its data type;
c906108c 4360you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 4361@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
c906108c
SS
4362formats}.
4363
4364@item print
4365@itemx print /@var{f}
d4f3574e 4366If you omit @var{expr}, @value{GDBN} displays the last value again (from the
c906108c
SS
4367@dfn{value history}; @pxref{Value History, ,Value history}). This allows you to
4368conveniently inspect the same value in an alternative format.
4369@end table
4370
4371A more low-level way of examining data is with the @code{x} command.
4372It examines data in memory at a specified address and prints it in a
4373specified format. @xref{Memory, ,Examining memory}.
4374
7a292a7a 4375If you are interested in information about types, or about how the
d4f3574e
SS
4376fields of a struct or a class are declared, use the @code{ptype @var{exp}}
4377command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 4378Table}.
c906108c
SS
4379
4380@menu
4381* Expressions:: Expressions
4382* Variables:: Program variables
4383* Arrays:: Artificial arrays
4384* Output Formats:: Output formats
4385* Memory:: Examining memory
4386* Auto Display:: Automatic display
4387* Print Settings:: Print settings
4388* Value History:: Value history
4389* Convenience Vars:: Convenience variables
4390* Registers:: Registers
c906108c 4391* Floating Point Hardware:: Floating point hardware
29e57380 4392* Memory Region Attributes:: Memory region attributes
c906108c
SS
4393@end menu
4394
6d2ebf8b 4395@node Expressions
c906108c
SS
4396@section Expressions
4397
4398@cindex expressions
4399@code{print} and many other @value{GDBN} commands accept an expression and
4400compute its value. Any kind of constant, variable or operator defined
4401by the programming language you are using is valid in an expression in
4402@value{GDBN}. This includes conditional expressions, function calls, casts
4403and string constants. It unfortunately does not include symbols defined
4404by preprocessor @code{#define} commands.
4405
d4f3574e
SS
4406@value{GDBN} supports array constants in expressions input by
4407the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
5d161b24 4408you can use the command @code{print @{1, 2, 3@}} to build up an array in
d4f3574e 4409memory that is @code{malloc}ed in the target program.
c906108c 4410
c906108c
SS
4411Because C is so widespread, most of the expressions shown in examples in
4412this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
4413Languages}, for information on how to use expressions in other
4414languages.
4415
4416In this section, we discuss operators that you can use in @value{GDBN}
4417expressions regardless of your programming language.
4418
4419Casts are supported in all languages, not just in C, because it is so
4420useful to cast a number into a pointer in order to examine a structure
4421at that address in memory.
4422@c FIXME: casts supported---Mod2 true?
c906108c
SS
4423
4424@value{GDBN} supports these operators, in addition to those common
4425to programming languages:
4426
4427@table @code
4428@item @@
4429@samp{@@} is a binary operator for treating parts of memory as arrays.
4430@xref{Arrays, ,Artificial arrays}, for more information.
4431
4432@item ::
4433@samp{::} allows you to specify a variable in terms of the file or
4434function where it is defined. @xref{Variables, ,Program variables}.
4435
4436@cindex @{@var{type}@}
4437@cindex type casting memory
4438@cindex memory, viewing as typed object
4439@cindex casts, to view memory
4440@item @{@var{type}@} @var{addr}
4441Refers to an object of type @var{type} stored at address @var{addr} in
4442memory. @var{addr} may be any expression whose value is an integer or
4443pointer (but parentheses are required around binary operators, just as in
4444a cast). This construct is allowed regardless of what kind of data is
4445normally supposed to reside at @var{addr}.
4446@end table
4447
6d2ebf8b 4448@node Variables
c906108c
SS
4449@section Program variables
4450
4451The most common kind of expression to use is the name of a variable
4452in your program.
4453
4454Variables in expressions are understood in the selected stack frame
4455(@pxref{Selection, ,Selecting a frame}); they must be either:
4456
4457@itemize @bullet
4458@item
4459global (or file-static)
4460@end itemize
4461
5d161b24 4462@noindent or
c906108c
SS
4463
4464@itemize @bullet
4465@item
4466visible according to the scope rules of the
4467programming language from the point of execution in that frame
5d161b24 4468@end itemize
c906108c
SS
4469
4470@noindent This means that in the function
4471
4472@example
4473foo (a)
4474 int a;
4475@{
4476 bar (a);
4477 @{
4478 int b = test ();
4479 bar (b);
4480 @}
4481@}
4482@end example
4483
4484@noindent
4485you can examine and use the variable @code{a} whenever your program is
4486executing within the function @code{foo}, but you can only use or
4487examine the variable @code{b} while your program is executing inside
4488the block where @code{b} is declared.
4489
4490@cindex variable name conflict
4491There is an exception: you can refer to a variable or function whose
4492scope is a single source file even if the current execution point is not
4493in this file. But it is possible to have more than one such variable or
4494function with the same name (in different source files). If that
4495happens, referring to that name has unpredictable effects. If you wish,
4496you can specify a static variable in a particular function or file,
4497using the colon-colon notation:
4498
d4f3574e 4499@cindex colon-colon, context for variables/functions
c906108c
SS
4500@iftex
4501@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 4502@cindex @code{::}, context for variables/functions
c906108c
SS
4503@end iftex
4504@example
4505@var{file}::@var{variable}
4506@var{function}::@var{variable}
4507@end example
4508
4509@noindent
4510Here @var{file} or @var{function} is the name of the context for the
4511static @var{variable}. In the case of file names, you can use quotes to
4512make sure @value{GDBN} parses the file name as a single word---for example,
4513to print a global value of @code{x} defined in @file{f2.c}:
4514
4515@example
4516(@value{GDBP}) p 'f2.c'::x
4517@end example
4518
b37052ae 4519@cindex C@t{++} scope resolution
c906108c 4520This use of @samp{::} is very rarely in conflict with the very similar
b37052ae 4521use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
4522scope resolution operator in @value{GDBN} expressions.
4523@c FIXME: Um, so what happens in one of those rare cases where it's in
4524@c conflict?? --mew
c906108c
SS
4525
4526@cindex wrong values
4527@cindex variable values, wrong
4528@quotation
4529@emph{Warning:} Occasionally, a local variable may appear to have the
4530wrong value at certain points in a function---just after entry to a new
4531scope, and just before exit.
4532@end quotation
4533You may see this problem when you are stepping by machine instructions.
4534This is because, on most machines, it takes more than one instruction to
4535set up a stack frame (including local variable definitions); if you are
4536stepping by machine instructions, variables may appear to have the wrong
4537values until the stack frame is completely built. On exit, it usually
4538also takes more than one machine instruction to destroy a stack frame;
4539after you begin stepping through that group of instructions, local
4540variable definitions may be gone.
4541
4542This may also happen when the compiler does significant optimizations.
4543To be sure of always seeing accurate values, turn off all optimization
4544when compiling.
4545
d4f3574e
SS
4546@cindex ``No symbol "foo" in current context''
4547Another possible effect of compiler optimizations is to optimize
4548unused variables out of existence, or assign variables to registers (as
4549opposed to memory addresses). Depending on the support for such cases
4550offered by the debug info format used by the compiler, @value{GDBN}
4551might not be able to display values for such local variables. If that
4552happens, @value{GDBN} will print a message like this:
4553
4554@example
4555No symbol "foo" in current context.
4556@end example
4557
4558To solve such problems, either recompile without optimizations, or use a
4559different debug info format, if the compiler supports several such
b37052ae 4560formats. For example, @value{NGCC}, the @sc{gnu} C/C@t{++} compiler usually
d4f3574e
SS
4561supports the @samp{-gstabs} option. @samp{-gstabs} produces debug info
4562in a format that is superior to formats such as COFF. You may be able
96c405b3 4563to use DWARF2 (@samp{-gdwarf-2}), which is also an effective form for
d4f3574e
SS
4564debug info. See @ref{Debugging Options,,Options for Debugging Your
4565Program or @sc{gnu} CC, gcc.info, Using @sc{gnu} CC}, for more
4566information.
4567
4568
6d2ebf8b 4569@node Arrays
c906108c
SS
4570@section Artificial arrays
4571
4572@cindex artificial array
41afff9a 4573@kindex @@@r{, referencing memory as an array}
c906108c
SS
4574It is often useful to print out several successive objects of the
4575same type in memory; a section of an array, or an array of
4576dynamically determined size for which only a pointer exists in the
4577program.
4578
4579You can do this by referring to a contiguous span of memory as an
4580@dfn{artificial array}, using the binary operator @samp{@@}. The left
4581operand of @samp{@@} should be the first element of the desired array
4582and be an individual object. The right operand should be the desired length
4583of the array. The result is an array value whose elements are all of
4584the type of the left argument. The first element is actually the left
4585argument; the second element comes from bytes of memory immediately
4586following those that hold the first element, and so on. Here is an
4587example. If a program says
4588
4589@example
4590int *array = (int *) malloc (len * sizeof (int));
4591@end example
4592
4593@noindent
4594you can print the contents of @code{array} with
4595
4596@example
4597p *array@@len
4598@end example
4599
4600The left operand of @samp{@@} must reside in memory. Array values made
4601with @samp{@@} in this way behave just like other arrays in terms of
4602subscripting, and are coerced to pointers when used in expressions.
4603Artificial arrays most often appear in expressions via the value history
4604(@pxref{Value History, ,Value history}), after printing one out.
4605
4606Another way to create an artificial array is to use a cast.
4607This re-interprets a value as if it were an array.
4608The value need not be in memory:
4609@example
4610(@value{GDBP}) p/x (short[2])0x12345678
4611$1 = @{0x1234, 0x5678@}
4612@end example
4613
4614As a convenience, if you leave the array length out (as in
c3f6f71d 4615@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c
SS
4616the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
4617@example
4618(@value{GDBP}) p/x (short[])0x12345678
4619$2 = @{0x1234, 0x5678@}
4620@end example
4621
4622Sometimes the artificial array mechanism is not quite enough; in
4623moderately complex data structures, the elements of interest may not
4624actually be adjacent---for example, if you are interested in the values
4625of pointers in an array. One useful work-around in this situation is
4626to use a convenience variable (@pxref{Convenience Vars, ,Convenience
4627variables}) as a counter in an expression that prints the first
4628interesting value, and then repeat that expression via @key{RET}. For
4629instance, suppose you have an array @code{dtab} of pointers to
4630structures, and you are interested in the values of a field @code{fv}
4631in each structure. Here is an example of what you might type:
4632
4633@example
4634set $i = 0
4635p dtab[$i++]->fv
4636@key{RET}
4637@key{RET}
4638@dots{}
4639@end example
4640
6d2ebf8b 4641@node Output Formats
c906108c
SS
4642@section Output formats
4643
4644@cindex formatted output
4645@cindex output formats
4646By default, @value{GDBN} prints a value according to its data type. Sometimes
4647this is not what you want. For example, you might want to print a number
4648in hex, or a pointer in decimal. Or you might want to view data in memory
4649at a certain address as a character string or as an instruction. To do
4650these things, specify an @dfn{output format} when you print a value.
4651
4652The simplest use of output formats is to say how to print a value
4653already computed. This is done by starting the arguments of the
4654@code{print} command with a slash and a format letter. The format
4655letters supported are:
4656
4657@table @code
4658@item x
4659Regard the bits of the value as an integer, and print the integer in
4660hexadecimal.
4661
4662@item d
4663Print as integer in signed decimal.
4664
4665@item u
4666Print as integer in unsigned decimal.
4667
4668@item o
4669Print as integer in octal.
4670
4671@item t
4672Print as integer in binary. The letter @samp{t} stands for ``two''.
4673@footnote{@samp{b} cannot be used because these format letters are also
4674used with the @code{x} command, where @samp{b} stands for ``byte'';
d4f3574e 4675see @ref{Memory,,Examining memory}.}
c906108c
SS
4676
4677@item a
4678@cindex unknown address, locating
3d67e040 4679@cindex locate address
c906108c
SS
4680Print as an address, both absolute in hexadecimal and as an offset from
4681the nearest preceding symbol. You can use this format used to discover
4682where (in what function) an unknown address is located:
4683
4684@example
4685(@value{GDBP}) p/a 0x54320
4686$3 = 0x54320 <_initialize_vx+396>
4687@end example
4688
3d67e040
EZ
4689@noindent
4690The command @code{info symbol 0x54320} yields similar results.
4691@xref{Symbols, info symbol}.
4692
c906108c
SS
4693@item c
4694Regard as an integer and print it as a character constant.
4695
4696@item f
4697Regard the bits of the value as a floating point number and print
4698using typical floating point syntax.
4699@end table
4700
4701For example, to print the program counter in hex (@pxref{Registers}), type
4702
4703@example
4704p/x $pc
4705@end example
4706
4707@noindent
4708Note that no space is required before the slash; this is because command
4709names in @value{GDBN} cannot contain a slash.
4710
4711To reprint the last value in the value history with a different format,
4712you can use the @code{print} command with just a format and no
4713expression. For example, @samp{p/x} reprints the last value in hex.
4714
6d2ebf8b 4715@node Memory
c906108c
SS
4716@section Examining memory
4717
4718You can use the command @code{x} (for ``examine'') to examine memory in
4719any of several formats, independently of your program's data types.
4720
4721@cindex examining memory
4722@table @code
41afff9a 4723@kindex x @r{(examine memory)}
c906108c
SS
4724@item x/@var{nfu} @var{addr}
4725@itemx x @var{addr}
4726@itemx x
4727Use the @code{x} command to examine memory.
4728@end table
4729
4730@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
4731much memory to display and how to format it; @var{addr} is an
4732expression giving the address where you want to start displaying memory.
4733If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
4734Several commands set convenient defaults for @var{addr}.
4735
4736@table @r
4737@item @var{n}, the repeat count
4738The repeat count is a decimal integer; the default is 1. It specifies
4739how much memory (counting by units @var{u}) to display.
4740@c This really is **decimal**; unaffected by 'set radix' as of GDB
4741@c 4.1.2.
4742
4743@item @var{f}, the display format
4744The display format is one of the formats used by @code{print},
4745@samp{s} (null-terminated string), or @samp{i} (machine instruction).
4746The default is @samp{x} (hexadecimal) initially.
4747The default changes each time you use either @code{x} or @code{print}.
4748
4749@item @var{u}, the unit size
4750The unit size is any of
4751
4752@table @code
4753@item b
4754Bytes.
4755@item h
4756Halfwords (two bytes).
4757@item w
4758Words (four bytes). This is the initial default.
4759@item g
4760Giant words (eight bytes).
4761@end table
4762
4763Each time you specify a unit size with @code{x}, that size becomes the
4764default unit the next time you use @code{x}. (For the @samp{s} and
4765@samp{i} formats, the unit size is ignored and is normally not written.)
4766
4767@item @var{addr}, starting display address
4768@var{addr} is the address where you want @value{GDBN} to begin displaying
4769memory. The expression need not have a pointer value (though it may);
4770it is always interpreted as an integer address of a byte of memory.
4771@xref{Expressions, ,Expressions}, for more information on expressions. The default for
4772@var{addr} is usually just after the last address examined---but several
4773other commands also set the default address: @code{info breakpoints} (to
4774the address of the last breakpoint listed), @code{info line} (to the
4775starting address of a line), and @code{print} (if you use it to display
4776a value from memory).
4777@end table
4778
4779For example, @samp{x/3uh 0x54320} is a request to display three halfwords
4780(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
4781starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
4782words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 4783@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
4784
4785Since the letters indicating unit sizes are all distinct from the
4786letters specifying output formats, you do not have to remember whether
4787unit size or format comes first; either order works. The output
4788specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
4789(However, the count @var{n} must come first; @samp{wx4} does not work.)
4790
4791Even though the unit size @var{u} is ignored for the formats @samp{s}
4792and @samp{i}, you might still want to use a count @var{n}; for example,
4793@samp{3i} specifies that you want to see three machine instructions,
4794including any operands. The command @code{disassemble} gives an
d4f3574e 4795alternative way of inspecting machine instructions; see @ref{Machine
c906108c
SS
4796Code,,Source and machine code}.
4797
4798All the defaults for the arguments to @code{x} are designed to make it
4799easy to continue scanning memory with minimal specifications each time
4800you use @code{x}. For example, after you have inspected three machine
4801instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
4802with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
4803the repeat count @var{n} is used again; the other arguments default as
4804for successive uses of @code{x}.
4805
4806@cindex @code{$_}, @code{$__}, and value history
4807The addresses and contents printed by the @code{x} command are not saved
4808in the value history because there is often too much of them and they
4809would get in the way. Instead, @value{GDBN} makes these values available for
4810subsequent use in expressions as values of the convenience variables
4811@code{$_} and @code{$__}. After an @code{x} command, the last address
4812examined is available for use in expressions in the convenience variable
4813@code{$_}. The contents of that address, as examined, are available in
4814the convenience variable @code{$__}.
4815
4816If the @code{x} command has a repeat count, the address and contents saved
4817are from the last memory unit printed; this is not the same as the last
4818address printed if several units were printed on the last line of output.
4819
6d2ebf8b 4820@node Auto Display
c906108c
SS
4821@section Automatic display
4822@cindex automatic display
4823@cindex display of expressions
4824
4825If you find that you want to print the value of an expression frequently
4826(to see how it changes), you might want to add it to the @dfn{automatic
4827display list} so that @value{GDBN} prints its value each time your program stops.
4828Each expression added to the list is given a number to identify it;
4829to remove an expression from the list, you specify that number.
4830The automatic display looks like this:
4831
4832@example
48332: foo = 38
48343: bar[5] = (struct hack *) 0x3804
4835@end example
4836
4837@noindent
4838This display shows item numbers, expressions and their current values. As with
4839displays you request manually using @code{x} or @code{print}, you can
4840specify the output format you prefer; in fact, @code{display} decides
4841whether to use @code{print} or @code{x} depending on how elaborate your
4842format specification is---it uses @code{x} if you specify a unit size,
4843or one of the two formats (@samp{i} and @samp{s}) that are only
4844supported by @code{x}; otherwise it uses @code{print}.
4845
4846@table @code
4847@kindex display
d4f3574e
SS
4848@item display @var{expr}
4849Add the expression @var{expr} to the list of expressions to display
c906108c
SS
4850each time your program stops. @xref{Expressions, ,Expressions}.
4851
4852@code{display} does not repeat if you press @key{RET} again after using it.
4853
d4f3574e 4854@item display/@var{fmt} @var{expr}
c906108c 4855For @var{fmt} specifying only a display format and not a size or
d4f3574e 4856count, add the expression @var{expr} to the auto-display list but
c906108c
SS
4857arrange to display it each time in the specified format @var{fmt}.
4858@xref{Output Formats,,Output formats}.
4859
4860@item display/@var{fmt} @var{addr}
4861For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
4862number of units, add the expression @var{addr} as a memory address to
4863be examined each time your program stops. Examining means in effect
4864doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining memory}.
4865@end table
4866
4867For example, @samp{display/i $pc} can be helpful, to see the machine
4868instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 4869is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
4870
4871@table @code
4872@kindex delete display
4873@kindex undisplay
4874@item undisplay @var{dnums}@dots{}
4875@itemx delete display @var{dnums}@dots{}
4876Remove item numbers @var{dnums} from the list of expressions to display.
4877
4878@code{undisplay} does not repeat if you press @key{RET} after using it.
4879(Otherwise you would just get the error @samp{No display number @dots{}}.)
4880
4881@kindex disable display
4882@item disable display @var{dnums}@dots{}
4883Disable the display of item numbers @var{dnums}. A disabled display
4884item is not printed automatically, but is not forgotten. It may be
4885enabled again later.
4886
4887@kindex enable display
4888@item enable display @var{dnums}@dots{}
4889Enable display of item numbers @var{dnums}. It becomes effective once
4890again in auto display of its expression, until you specify otherwise.
4891
4892@item display
4893Display the current values of the expressions on the list, just as is
4894done when your program stops.
4895
4896@kindex info display
4897@item info display
4898Print the list of expressions previously set up to display
4899automatically, each one with its item number, but without showing the
4900values. This includes disabled expressions, which are marked as such.
4901It also includes expressions which would not be displayed right now
4902because they refer to automatic variables not currently available.
4903@end table
4904
4905If a display expression refers to local variables, then it does not make
4906sense outside the lexical context for which it was set up. Such an
4907expression is disabled when execution enters a context where one of its
4908variables is not defined. For example, if you give the command
4909@code{display last_char} while inside a function with an argument
4910@code{last_char}, @value{GDBN} displays this argument while your program
4911continues to stop inside that function. When it stops elsewhere---where
4912there is no variable @code{last_char}---the display is disabled
4913automatically. The next time your program stops where @code{last_char}
4914is meaningful, you can enable the display expression once again.
4915
6d2ebf8b 4916@node Print Settings
c906108c
SS
4917@section Print settings
4918
4919@cindex format options
4920@cindex print settings
4921@value{GDBN} provides the following ways to control how arrays, structures,
4922and symbols are printed.
4923
4924@noindent
4925These settings are useful for debugging programs in any language:
4926
4927@table @code
4928@kindex set print address
4929@item set print address
4930@itemx set print address on
4931@value{GDBN} prints memory addresses showing the location of stack
4932traces, structure values, pointer values, breakpoints, and so forth,
4933even when it also displays the contents of those addresses. The default
4934is @code{on}. For example, this is what a stack frame display looks like with
4935@code{set print address on}:
4936
4937@smallexample
4938@group
4939(@value{GDBP}) f
4940#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
4941 at input.c:530
4942530 if (lquote != def_lquote)
4943@end group
4944@end smallexample
4945
4946@item set print address off
4947Do not print addresses when displaying their contents. For example,
4948this is the same stack frame displayed with @code{set print address off}:
4949
4950@smallexample
4951@group
4952(@value{GDBP}) set print addr off
4953(@value{GDBP}) f
4954#0 set_quotes (lq="<<", rq=">>") at input.c:530
4955530 if (lquote != def_lquote)
4956@end group
4957@end smallexample
4958
4959You can use @samp{set print address off} to eliminate all machine
4960dependent displays from the @value{GDBN} interface. For example, with
4961@code{print address off}, you should get the same text for backtraces on
4962all machines---whether or not they involve pointer arguments.
4963
4964@kindex show print address
4965@item show print address
4966Show whether or not addresses are to be printed.
4967@end table
4968
4969When @value{GDBN} prints a symbolic address, it normally prints the
4970closest earlier symbol plus an offset. If that symbol does not uniquely
4971identify the address (for example, it is a name whose scope is a single
4972source file), you may need to clarify. One way to do this is with
4973@code{info line}, for example @samp{info line *0x4537}. Alternately,
4974you can set @value{GDBN} to print the source file and line number when
4975it prints a symbolic address:
4976
4977@table @code
4978@kindex set print symbol-filename
4979@item set print symbol-filename on
4980Tell @value{GDBN} to print the source file name and line number of a
4981symbol in the symbolic form of an address.
4982
4983@item set print symbol-filename off
4984Do not print source file name and line number of a symbol. This is the
4985default.
4986
4987@kindex show print symbol-filename
4988@item show print symbol-filename
4989Show whether or not @value{GDBN} will print the source file name and
4990line number of a symbol in the symbolic form of an address.
4991@end table
4992
4993Another situation where it is helpful to show symbol filenames and line
4994numbers is when disassembling code; @value{GDBN} shows you the line
4995number and source file that corresponds to each instruction.
4996
4997Also, you may wish to see the symbolic form only if the address being
4998printed is reasonably close to the closest earlier symbol:
4999
5000@table @code
5001@kindex set print max-symbolic-offset
5002@item set print max-symbolic-offset @var{max-offset}
5003Tell @value{GDBN} to only display the symbolic form of an address if the
5004offset between the closest earlier symbol and the address is less than
5d161b24 5005@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
5006to always print the symbolic form of an address if any symbol precedes it.
5007
5008@kindex show print max-symbolic-offset
5009@item show print max-symbolic-offset
5010Ask how large the maximum offset is that @value{GDBN} prints in a
5011symbolic address.
5012@end table
5013
5014@cindex wild pointer, interpreting
5015@cindex pointer, finding referent
5016If you have a pointer and you are not sure where it points, try
5017@samp{set print symbol-filename on}. Then you can determine the name
5018and source file location of the variable where it points, using
5019@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
5020For example, here @value{GDBN} shows that a variable @code{ptt} points
5021at another variable @code{t}, defined in @file{hi2.c}:
5022
5023@example
5024(@value{GDBP}) set print symbol-filename on
5025(@value{GDBP}) p/a ptt
5026$4 = 0xe008 <t in hi2.c>
5027@end example
5028
5029@quotation
5030@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
5031does not show the symbol name and filename of the referent, even with
5032the appropriate @code{set print} options turned on.
5033@end quotation
5034
5035Other settings control how different kinds of objects are printed:
5036
5037@table @code
5038@kindex set print array
5039@item set print array
5040@itemx set print array on
5041Pretty print arrays. This format is more convenient to read,
5042but uses more space. The default is off.
5043
5044@item set print array off
5045Return to compressed format for arrays.
5046
5047@kindex show print array
5048@item show print array
5049Show whether compressed or pretty format is selected for displaying
5050arrays.
5051
5052@kindex set print elements
5053@item set print elements @var{number-of-elements}
5054Set a limit on how many elements of an array @value{GDBN} will print.
5055If @value{GDBN} is printing a large array, it stops printing after it has
5056printed the number of elements set by the @code{set print elements} command.
5057This limit also applies to the display of strings.
d4f3574e 5058When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
5059Setting @var{number-of-elements} to zero means that the printing is unlimited.
5060
5061@kindex show print elements
5062@item show print elements
5063Display the number of elements of a large array that @value{GDBN} will print.
5064If the number is 0, then the printing is unlimited.
5065
5066@kindex set print null-stop
5067@item set print null-stop
5068Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 5069@sc{null} is encountered. This is useful when large arrays actually
c906108c 5070contain only short strings.
d4f3574e 5071The default is off.
c906108c
SS
5072
5073@kindex set print pretty
5074@item set print pretty on
5d161b24 5075Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
5076per line, like this:
5077
5078@smallexample
5079@group
5080$1 = @{
5081 next = 0x0,
5082 flags = @{
5083 sweet = 1,
5084 sour = 1
5085 @},
5086 meat = 0x54 "Pork"
5087@}
5088@end group
5089@end smallexample
5090
5091@item set print pretty off
5092Cause @value{GDBN} to print structures in a compact format, like this:
5093
5094@smallexample
5095@group
5096$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
5097meat = 0x54 "Pork"@}
5098@end group
5099@end smallexample
5100
5101@noindent
5102This is the default format.
5103
5104@kindex show print pretty
5105@item show print pretty
5106Show which format @value{GDBN} is using to print structures.
5107
5108@kindex set print sevenbit-strings
5109@item set print sevenbit-strings on
5110Print using only seven-bit characters; if this option is set,
5111@value{GDBN} displays any eight-bit characters (in strings or
5112character values) using the notation @code{\}@var{nnn}. This setting is
5113best if you are working in English (@sc{ascii}) and you use the
5114high-order bit of characters as a marker or ``meta'' bit.
5115
5116@item set print sevenbit-strings off
5117Print full eight-bit characters. This allows the use of more
5118international character sets, and is the default.
5119
5120@kindex show print sevenbit-strings
5121@item show print sevenbit-strings
5122Show whether or not @value{GDBN} is printing only seven-bit characters.
5123
5124@kindex set print union
5125@item set print union on
5d161b24 5126Tell @value{GDBN} to print unions which are contained in structures. This
c906108c
SS
5127is the default setting.
5128
5129@item set print union off
5130Tell @value{GDBN} not to print unions which are contained in structures.
5131
5132@kindex show print union
5133@item show print union
5134Ask @value{GDBN} whether or not it will print unions which are contained in
5135structures.
5136
5137For example, given the declarations
5138
5139@smallexample
5140typedef enum @{Tree, Bug@} Species;
5141typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 5142typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
5143 Bug_forms;
5144
5145struct thing @{
5146 Species it;
5147 union @{
5148 Tree_forms tree;
5149 Bug_forms bug;
5150 @} form;
5151@};
5152
5153struct thing foo = @{Tree, @{Acorn@}@};
5154@end smallexample
5155
5156@noindent
5157with @code{set print union on} in effect @samp{p foo} would print
5158
5159@smallexample
5160$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
5161@end smallexample
5162
5163@noindent
5164and with @code{set print union off} in effect it would print
5165
5166@smallexample
5167$1 = @{it = Tree, form = @{...@}@}
5168@end smallexample
5169@end table
5170
c906108c
SS
5171@need 1000
5172@noindent
b37052ae 5173These settings are of interest when debugging C@t{++} programs:
c906108c
SS
5174
5175@table @code
5176@cindex demangling
5177@kindex set print demangle
5178@item set print demangle
5179@itemx set print demangle on
b37052ae 5180Print C@t{++} names in their source form rather than in the encoded
c906108c 5181(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 5182linkage. The default is on.
c906108c
SS
5183
5184@kindex show print demangle
5185@item show print demangle
b37052ae 5186Show whether C@t{++} names are printed in mangled or demangled form.
c906108c
SS
5187
5188@kindex set print asm-demangle
5189@item set print asm-demangle
5190@itemx set print asm-demangle on
b37052ae 5191Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
5192in assembler code printouts such as instruction disassemblies.
5193The default is off.
5194
5195@kindex show print asm-demangle
5196@item show print asm-demangle
b37052ae 5197Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
5198or demangled form.
5199
5200@kindex set demangle-style
b37052ae
EZ
5201@cindex C@t{++} symbol decoding style
5202@cindex symbol decoding style, C@t{++}
c906108c
SS
5203@item set demangle-style @var{style}
5204Choose among several encoding schemes used by different compilers to
b37052ae 5205represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
5206
5207@table @code
5208@item auto
5209Allow @value{GDBN} to choose a decoding style by inspecting your program.
5210
5211@item gnu
b37052ae 5212Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c 5213This is the default.
c906108c
SS
5214
5215@item hp
b37052ae 5216Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
5217
5218@item lucid
b37052ae 5219Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
5220
5221@item arm
b37052ae 5222Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
5223@strong{Warning:} this setting alone is not sufficient to allow
5224debugging @code{cfront}-generated executables. @value{GDBN} would
5225require further enhancement to permit that.
5226
5227@end table
5228If you omit @var{style}, you will see a list of possible formats.
5229
5230@kindex show demangle-style
5231@item show demangle-style
b37052ae 5232Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c
SS
5233
5234@kindex set print object
5235@item set print object
5236@itemx set print object on
5237When displaying a pointer to an object, identify the @emph{actual}
5238(derived) type of the object rather than the @emph{declared} type, using
5239the virtual function table.
5240
5241@item set print object off
5242Display only the declared type of objects, without reference to the
5243virtual function table. This is the default setting.
5244
5245@kindex show print object
5246@item show print object
5247Show whether actual, or declared, object types are displayed.
5248
5249@kindex set print static-members
5250@item set print static-members
5251@itemx set print static-members on
b37052ae 5252Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
5253
5254@item set print static-members off
b37052ae 5255Do not print static members when displaying a C@t{++} object.
c906108c
SS
5256
5257@kindex show print static-members
5258@item show print static-members
b37052ae 5259Show whether C@t{++} static members are printed, or not.
c906108c
SS
5260
5261@c These don't work with HP ANSI C++ yet.
5262@kindex set print vtbl
5263@item set print vtbl
5264@itemx set print vtbl on
b37052ae 5265Pretty print C@t{++} virtual function tables. The default is off.
c906108c 5266(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 5267ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
5268
5269@item set print vtbl off
b37052ae 5270Do not pretty print C@t{++} virtual function tables.
c906108c
SS
5271
5272@kindex show print vtbl
5273@item show print vtbl
b37052ae 5274Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 5275@end table
c906108c 5276
6d2ebf8b 5277@node Value History
c906108c
SS
5278@section Value history
5279
5280@cindex value history
5d161b24
DB
5281Values printed by the @code{print} command are saved in the @value{GDBN}
5282@dfn{value history}. This allows you to refer to them in other expressions.
5283Values are kept until the symbol table is re-read or discarded
5284(for example with the @code{file} or @code{symbol-file} commands).
5285When the symbol table changes, the value history is discarded,
5286since the values may contain pointers back to the types defined in the
c906108c
SS
5287symbol table.
5288
5289@cindex @code{$}
5290@cindex @code{$$}
5291@cindex history number
5292The values printed are given @dfn{history numbers} by which you can
5293refer to them. These are successive integers starting with one.
5294@code{print} shows you the history number assigned to a value by
5295printing @samp{$@var{num} = } before the value; here @var{num} is the
5296history number.
5297
5298To refer to any previous value, use @samp{$} followed by the value's
5299history number. The way @code{print} labels its output is designed to
5300remind you of this. Just @code{$} refers to the most recent value in
5301the history, and @code{$$} refers to the value before that.
5302@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
5303is the value just prior to @code{$$}, @code{$$1} is equivalent to
5304@code{$$}, and @code{$$0} is equivalent to @code{$}.
5305
5306For example, suppose you have just printed a pointer to a structure and
5307want to see the contents of the structure. It suffices to type
5308
5309@example
5310p *$
5311@end example
5312
5313If you have a chain of structures where the component @code{next} points
5314to the next one, you can print the contents of the next one with this:
5315
5316@example
5317p *$.next
5318@end example
5319
5320@noindent
5321You can print successive links in the chain by repeating this
5322command---which you can do by just typing @key{RET}.
5323
5324Note that the history records values, not expressions. If the value of
5325@code{x} is 4 and you type these commands:
5326
5327@example
5328print x
5329set x=5
5330@end example
5331
5332@noindent
5333then the value recorded in the value history by the @code{print} command
5334remains 4 even though the value of @code{x} has changed.
5335
5336@table @code
5337@kindex show values
5338@item show values
5339Print the last ten values in the value history, with their item numbers.
5340This is like @samp{p@ $$9} repeated ten times, except that @code{show
5341values} does not change the history.
5342
5343@item show values @var{n}
5344Print ten history values centered on history item number @var{n}.
5345
5346@item show values +
5347Print ten history values just after the values last printed. If no more
5348values are available, @code{show values +} produces no display.
5349@end table
5350
5351Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
5352same effect as @samp{show values +}.
5353
6d2ebf8b 5354@node Convenience Vars
c906108c
SS
5355@section Convenience variables
5356
5357@cindex convenience variables
5358@value{GDBN} provides @dfn{convenience variables} that you can use within
5359@value{GDBN} to hold on to a value and refer to it later. These variables
5360exist entirely within @value{GDBN}; they are not part of your program, and
5361setting a convenience variable has no direct effect on further execution
5362of your program. That is why you can use them freely.
5363
5364Convenience variables are prefixed with @samp{$}. Any name preceded by
5365@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 5366the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c
SS
5367(Value history references, in contrast, are @emph{numbers} preceded
5368by @samp{$}. @xref{Value History, ,Value history}.)
5369
5370You can save a value in a convenience variable with an assignment
5371expression, just as you would set a variable in your program.
5372For example:
5373
5374@example
5375set $foo = *object_ptr
5376@end example
5377
5378@noindent
5379would save in @code{$foo} the value contained in the object pointed to by
5380@code{object_ptr}.
5381
5382Using a convenience variable for the first time creates it, but its
5383value is @code{void} until you assign a new value. You can alter the
5384value with another assignment at any time.
5385
5386Convenience variables have no fixed types. You can assign a convenience
5387variable any type of value, including structures and arrays, even if
5388that variable already has a value of a different type. The convenience
5389variable, when used as an expression, has the type of its current value.
5390
5391@table @code
5392@kindex show convenience
5393@item show convenience
5394Print a list of convenience variables used so far, and their values.
d4f3574e 5395Abbreviated @code{show conv}.
c906108c
SS
5396@end table
5397
5398One of the ways to use a convenience variable is as a counter to be
5399incremented or a pointer to be advanced. For example, to print
5400a field from successive elements of an array of structures:
5401
5402@example
5403set $i = 0
5404print bar[$i++]->contents
5405@end example
5406
d4f3574e
SS
5407@noindent
5408Repeat that command by typing @key{RET}.
c906108c
SS
5409
5410Some convenience variables are created automatically by @value{GDBN} and given
5411values likely to be useful.
5412
5413@table @code
41afff9a 5414@vindex $_@r{, convenience variable}
c906108c
SS
5415@item $_
5416The variable @code{$_} is automatically set by the @code{x} command to
5417the last address examined (@pxref{Memory, ,Examining memory}). Other
5418commands which provide a default address for @code{x} to examine also
5419set @code{$_} to that address; these commands include @code{info line}
5420and @code{info breakpoint}. The type of @code{$_} is @code{void *}
5421except when set by the @code{x} command, in which case it is a pointer
5422to the type of @code{$__}.
5423
41afff9a 5424@vindex $__@r{, convenience variable}
c906108c
SS
5425@item $__
5426The variable @code{$__} is automatically set by the @code{x} command
5427to the value found in the last address examined. Its type is chosen
5428to match the format in which the data was printed.
5429
5430@item $_exitcode
41afff9a 5431@vindex $_exitcode@r{, convenience variable}
c906108c
SS
5432The variable @code{$_exitcode} is automatically set to the exit code when
5433the program being debugged terminates.
5434@end table
5435
53a5351d
JM
5436On HP-UX systems, if you refer to a function or variable name that
5437begins with a dollar sign, @value{GDBN} searches for a user or system
5438name first, before it searches for a convenience variable.
c906108c 5439
6d2ebf8b 5440@node Registers
c906108c
SS
5441@section Registers
5442
5443@cindex registers
5444You can refer to machine register contents, in expressions, as variables
5445with names starting with @samp{$}. The names of registers are different
5446for each machine; use @code{info registers} to see the names used on
5447your machine.
5448
5449@table @code
5450@kindex info registers
5451@item info registers
5452Print the names and values of all registers except floating-point
5453registers (in the selected stack frame).
5454
5455@kindex info all-registers
5456@cindex floating point registers
5457@item info all-registers
5458Print the names and values of all registers, including floating-point
5459registers.
5460
5461@item info registers @var{regname} @dots{}
5462Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
5463As discussed in detail below, register values are normally relative to
5464the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
5465the machine you are using, with or without the initial @samp{$}.
5466@end table
5467
5468@value{GDBN} has four ``standard'' register names that are available (in
5469expressions) on most machines---whenever they do not conflict with an
5470architecture's canonical mnemonics for registers. The register names
5471@code{$pc} and @code{$sp} are used for the program counter register and
5472the stack pointer. @code{$fp} is used for a register that contains a
5473pointer to the current stack frame, and @code{$ps} is used for a
5474register that contains the processor status. For example,
5475you could print the program counter in hex with
5476
5477@example
5478p/x $pc
5479@end example
5480
5481@noindent
5482or print the instruction to be executed next with
5483
5484@example
5485x/i $pc
5486@end example
5487
5488@noindent
5489or add four to the stack pointer@footnote{This is a way of removing
5490one word from the stack, on machines where stacks grow downward in
5491memory (most machines, nowadays). This assumes that the innermost
5492stack frame is selected; setting @code{$sp} is not allowed when other
5493stack frames are selected. To pop entire frames off the stack,
5494regardless of machine architecture, use @code{return};
d4f3574e 5495see @ref{Returning, ,Returning from a function}.} with
c906108c
SS
5496
5497@example
5498set $sp += 4
5499@end example
5500
5501Whenever possible, these four standard register names are available on
5502your machine even though the machine has different canonical mnemonics,
5503so long as there is no conflict. The @code{info registers} command
5504shows the canonical names. For example, on the SPARC, @code{info
5505registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
5506can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
5507is an alias for the @sc{eflags} register.
c906108c
SS
5508
5509@value{GDBN} always considers the contents of an ordinary register as an
5510integer when the register is examined in this way. Some machines have
5511special registers which can hold nothing but floating point; these
5512registers are considered to have floating point values. There is no way
5513to refer to the contents of an ordinary register as floating point value
5514(although you can @emph{print} it as a floating point value with
5515@samp{print/f $@var{regname}}).
5516
5517Some registers have distinct ``raw'' and ``virtual'' data formats. This
5518means that the data format in which the register contents are saved by
5519the operating system is not the same one that your program normally
5520sees. For example, the registers of the 68881 floating point
5521coprocessor are always saved in ``extended'' (raw) format, but all C
5522programs expect to work with ``double'' (virtual) format. In such
5d161b24 5523cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
5524that makes sense for your program), but the @code{info registers} command
5525prints the data in both formats.
5526
5527Normally, register values are relative to the selected stack frame
5528(@pxref{Selection, ,Selecting a frame}). This means that you get the
5529value that the register would contain if all stack frames farther in
5530were exited and their saved registers restored. In order to see the
5531true contents of hardware registers, you must select the innermost
5532frame (with @samp{frame 0}).
5533
5534However, @value{GDBN} must deduce where registers are saved, from the machine
5535code generated by your compiler. If some registers are not saved, or if
5536@value{GDBN} is unable to locate the saved registers, the selected stack
5537frame makes no difference.
5538
6d2ebf8b 5539@node Floating Point Hardware
c906108c
SS
5540@section Floating point hardware
5541@cindex floating point
5542
5543Depending on the configuration, @value{GDBN} may be able to give
5544you more information about the status of the floating point hardware.
5545
5546@table @code
5547@kindex info float
5548@item info float
5549Display hardware-dependent information about the floating
5550point unit. The exact contents and layout vary depending on the
5551floating point chip. Currently, @samp{info float} is supported on
5552the ARM and x86 machines.
5553@end table
c906108c 5554
29e57380
C
5555@node Memory Region Attributes
5556@section Memory Region Attributes
5557@cindex memory region attributes
5558
5559@dfn{Memory region attributes} allow you to describe special handling
5560required by regions of your target's memory. @value{GDBN} uses attributes
5561to determine whether to allow certain types of memory accesses; whether to
5562use specific width accesses; and whether to cache target memory.
5563
5564Defined memory regions can be individually enabled and disabled. When a
5565memory region is disabled, @value{GDBN} uses the default attributes when
5566accessing memory in that region. Similarly, if no memory regions have
5567been defined, @value{GDBN} uses the default attributes when accessing
5568all memory.
5569
5570When a memory region is defined, it is given a number to identify it;
5571to enable, disable, or remove a memory region, you specify that number.
5572
5573@table @code
5574@kindex mem
5575@item mem @var{address1} @var{address1} @var{attributes}@dots{}
5576Define memory region bounded by @var{address1} and @var{address2}
5577with attributes @var{attributes}@dots{}.
5578
5579@kindex delete mem
5580@item delete mem @var{nums}@dots{}
5581Remove memory region numbers @var{nums}.
5582
5583@kindex disable mem
5584@item disable mem @var{nums}@dots{}
5585Disable memory region numbers @var{nums}.
5586A disabled memory region is not forgotten.
5587It may be enabled again later.
5588
5589@kindex enable mem
5590@item enable mem @var{nums}@dots{}
5591Enable memory region numbers @var{nums}.
5592
5593@kindex info mem
5594@item info mem
5595Print a table of all defined memory regions, with the following columns
5596for each region.
5597
5598@table @emph
5599@item Memory Region Number
5600@item Enabled or Disabled.
5601Enabled memory regions are marked with @samp{y}.
5602Disabled memory regions are marked with @samp{n}.
5603
5604@item Lo Address
5605The address defining the inclusive lower bound of the memory region.
5606
5607@item Hi Address
5608The address defining the exclusive upper bound of the memory region.
5609
5610@item Attributes
5611The list of attributes set for this memory region.
5612@end table
5613@end table
5614
5615
5616@subsection Attributes
5617
5618@subsubsection Memory Access Mode
5619The access mode attributes set whether @value{GDBN} may make read or
5620write accesses to a memory region.
5621
5622While these attributes prevent @value{GDBN} from performing invalid
5623memory accesses, they do nothing to prevent the target system, I/O DMA,
5624etc. from accessing memory.
5625
5626@table @code
5627@item ro
5628Memory is read only.
5629@item wo
5630Memory is write only.
5631@item rw
5632Memory is read/write (default).
5633@end table
5634
5635@subsubsection Memory Access Size
5636The acccess size attributes tells @value{GDBN} to use specific sized
5637accesses in the memory region. Often memory mapped device registers
5638require specific sized accesses. If no access size attribute is
5639specified, @value{GDBN} may use accesses of any size.
5640
5641@table @code
5642@item 8
5643Use 8 bit memory accesses.
5644@item 16
5645Use 16 bit memory accesses.
5646@item 32
5647Use 32 bit memory accesses.
5648@item 64
5649Use 64 bit memory accesses.
5650@end table
5651
5652@c @subsubsection Hardware/Software Breakpoints
5653@c The hardware/software breakpoint attributes set whether @value{GDBN}
5654@c will use hardware or software breakpoints for the internal breakpoints
5655@c used by the step, next, finish, until, etc. commands.
5656@c
5657@c @table @code
5658@c @item hwbreak
5659@c Always use hardware breakpoints
5660@c @item swbreak (default)
5661@c @end table
5662
5663@subsubsection Data Cache
5664The data cache attributes set whether @value{GDBN} will cache target
5665memory. While this generally improves performance by reducing debug
5666protocol overhead, it can lead to incorrect results because @value{GDBN}
5667does not know about volatile variables or memory mapped device
5668registers.
5669
5670@table @code
5671@item cache
5672Enable @value{GDBN} to cache target memory.
5673@item nocache (default)
5674Disable @value{GDBN} from caching target memory.
5675@end table
5676
5677@c @subsubsection Memory Write Verification
5678@c The memory write verification attributes set whether @value{GDBN}
5679@c will re-reads data after each write to verify the write was successful.
5680@c
5681@c @table @code
5682@c @item verify
5683@c @item noverify (default)
5684@c @end table
5685
b37052ae
EZ
5686@node Tracepoints
5687@chapter Tracepoints
5688@c This chapter is based on the documentation written by Michael
5689@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
5690
5691@cindex tracepoints
5692In some applications, it is not feasible for the debugger to interrupt
5693the program's execution long enough for the developer to learn
5694anything helpful about its behavior. If the program's correctness
5695depends on its real-time behavior, delays introduced by a debugger
5696might cause the program to change its behavior drastically, or perhaps
5697fail, even when the code itself is correct. It is useful to be able
5698to observe the program's behavior without interrupting it.
5699
5700Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
5701specify locations in the program, called @dfn{tracepoints}, and
5702arbitrary expressions to evaluate when those tracepoints are reached.
5703Later, using the @code{tfind} command, you can examine the values
5704those expressions had when the program hit the tracepoints. The
5705expressions may also denote objects in memory---structures or arrays,
5706for example---whose values @value{GDBN} should record; while visiting
5707a particular tracepoint, you may inspect those objects as if they were
5708in memory at that moment. However, because @value{GDBN} records these
5709values without interacting with you, it can do so quickly and
5710unobtrusively, hopefully not disturbing the program's behavior.
5711
5712The tracepoint facility is currently available only for remote
5713targets. @xref{Targets}.
5714
5715This chapter describes the tracepoint commands and features.
5716
5717@menu
5718* Set Tracepoints::
5719* Analyze Collected Data::
5720* Tracepoint Variables::
5721@end menu
5722
5723@node Set Tracepoints
5724@section Commands to Set Tracepoints
5725
5726Before running such a @dfn{trace experiment}, an arbitrary number of
5727tracepoints can be set. Like a breakpoint (@pxref{Set Breaks}), a
5728tracepoint has a number assigned to it by @value{GDBN}. Like with
5729breakpoints, tracepoint numbers are successive integers starting from
5730one. Many of the commands associated with tracepoints take the
5731tracepoint number as their argument, to identify which tracepoint to
5732work on.
5733
5734For each tracepoint, you can specify, in advance, some arbitrary set
5735of data that you want the target to collect in the trace buffer when
5736it hits that tracepoint. The collected data can include registers,
5737local variables, or global data. Later, you can use @value{GDBN}
5738commands to examine the values these data had at the time the
5739tracepoint was hit.
5740
5741This section describes commands to set tracepoints and associated
5742conditions and actions.
5743
5744@menu
5745* Create and Delete Tracepoints::
5746* Enable and Disable Tracepoints::
5747* Tracepoint Passcounts::
5748* Tracepoint Actions::
5749* Listing Tracepoints::
5750* Starting and Stopping Trace Experiment::
5751@end menu
5752
5753@node Create and Delete Tracepoints
5754@subsection Create and Delete Tracepoints
5755
5756@table @code
5757@cindex set tracepoint
5758@kindex trace
5759@item trace
5760The @code{trace} command is very similar to the @code{break} command.
5761Its argument can be a source line, a function name, or an address in
5762the target program. @xref{Set Breaks}. The @code{trace} command
5763defines a tracepoint, which is a point in the target program where the
5764debugger will briefly stop, collect some data, and then allow the
5765program to continue. Setting a tracepoint or changing its commands
5766doesn't take effect until the next @code{tstart} command; thus, you
5767cannot change the tracepoint attributes once a trace experiment is
5768running.
5769
5770Here are some examples of using the @code{trace} command:
5771
5772@smallexample
5773(@value{GDBP}) @b{trace foo.c:121} // a source file and line number
5774
5775(@value{GDBP}) @b{trace +2} // 2 lines forward
5776
5777(@value{GDBP}) @b{trace my_function} // first source line of function
5778
5779(@value{GDBP}) @b{trace *my_function} // EXACT start address of function
5780
5781(@value{GDBP}) @b{trace *0x2117c4} // an address
5782@end smallexample
5783
5784@noindent
5785You can abbreviate @code{trace} as @code{tr}.
5786
5787@vindex $tpnum
5788@cindex last tracepoint number
5789@cindex recent tracepoint number
5790@cindex tracepoint number
5791The convenience variable @code{$tpnum} records the tracepoint number
5792of the most recently set tracepoint.
5793
5794@kindex delete tracepoint
5795@cindex tracepoint deletion
5796@item delete tracepoint @r{[}@var{num}@r{]}
5797Permanently delete one or more tracepoints. With no argument, the
5798default is to delete all tracepoints.
5799
5800Examples:
5801
5802@smallexample
5803(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
5804
5805(@value{GDBP}) @b{delete trace} // remove all tracepoints
5806@end smallexample
5807
5808@noindent
5809You can abbreviate this command as @code{del tr}.
5810@end table
5811
5812@node Enable and Disable Tracepoints
5813@subsection Enable and Disable Tracepoints
5814
5815@table @code
5816@kindex disable tracepoint
5817@item disable tracepoint @r{[}@var{num}@r{]}
5818Disable tracepoint @var{num}, or all tracepoints if no argument
5819@var{num} is given. A disabled tracepoint will have no effect during
5820the next trace experiment, but it is not forgotten. You can re-enable
5821a disabled tracepoint using the @code{enable tracepoint} command.
5822
5823@kindex enable tracepoint
5824@item enable tracepoint @r{[}@var{num}@r{]}
5825Enable tracepoint @var{num}, or all tracepoints. The enabled
5826tracepoints will become effective the next time a trace experiment is
5827run.
5828@end table
5829
5830@node Tracepoint Passcounts
5831@subsection Tracepoint Passcounts
5832
5833@table @code
5834@kindex passcount
5835@cindex tracepoint pass count
5836@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
5837Set the @dfn{passcount} of a tracepoint. The passcount is a way to
5838automatically stop a trace experiment. If a tracepoint's passcount is
5839@var{n}, then the trace experiment will be automatically stopped on
5840the @var{n}'th time that tracepoint is hit. If the tracepoint number
5841@var{num} is not specified, the @code{passcount} command sets the
5842passcount of the most recently defined tracepoint. If no passcount is
5843given, the trace experiment will run until stopped explicitly by the
5844user.
5845
5846Examples:
5847
5848@smallexample
5849(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of tracepoint 2
5850
5851(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
5852 // most recently defined tracepoint.
5853(@value{GDBP}) @b{trace foo}
5854(@value{GDBP}) @b{pass 3}
5855(@value{GDBP}) @b{trace bar}
5856(@value{GDBP}) @b{pass 2}
5857(@value{GDBP}) @b{trace baz}
5858(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
5859 // executed 3 times OR when bar has
5860 // been executed 2 times
5861 // OR when baz has been executed 1 time.
5862@end smallexample
5863@end table
5864
5865@node Tracepoint Actions
5866@subsection Tracepoint Action Lists
5867
5868@table @code
5869@kindex actions
5870@cindex tracepoint actions
5871@item actions @r{[}@var{num}@r{]}
5872This command will prompt for a list of actions to be taken when the
5873tracepoint is hit. If the tracepoint number @var{num} is not
5874specified, this command sets the actions for the one that was most
5875recently defined (so that you can define a tracepoint and then say
5876@code{actions} without bothering about its number). You specify the
5877actions themselves on the following lines, one action at a time, and
5878terminate the actions list with a line containing just @code{end}. So
5879far, the only defined actions are @code{collect} and
5880@code{while-stepping}.
5881
5882@cindex remove actions from a tracepoint
5883To remove all actions from a tracepoint, type @samp{actions @var{num}}
5884and follow it immediately with @samp{end}.
5885
5886@smallexample
5887(@value{GDBP}) @b{collect @var{data}} // collect some data
5888
5889(@value{GDBP}) @b{while-stepping 5} // single-step 5 times and collect data
5890
5891(@value{GDBP}) @b{end} // signals the end of actions.
5892@end smallexample
5893
5894In the following example, the action list begins with @code{collect}
5895commands indicating the things to be collected when the tracepoint is
5896hit. Then, in order to single-step and collect additional data
5897following the tracepoint, a @code{while-stepping} command is used,
5898followed by the list of things to be collected while stepping. The
5899@code{while-stepping} command is terminated by its own separate
5900@code{end} command. Lastly, the action list is terminated by an
5901@code{end} command.
5902
5903@smallexample
5904(@value{GDBP}) @b{trace foo}
5905(@value{GDBP}) @b{actions}
5906Enter actions for tracepoint 1, one per line:
5907> collect bar,baz
5908> collect $regs
5909> while-stepping 12
5910 > collect $fp, $sp
5911 > end
5912end
5913@end smallexample
5914
5915@kindex collect @r{(tracepoints)}
5916@item collect @var{expr1}, @var{expr2}, @dots{}
5917Collect values of the given expressions when the tracepoint is hit.
5918This command accepts a comma-separated list of any valid expressions.
5919In addition to global, static, or local variables, the following
5920special arguments are supported:
5921
5922@table @code
5923@item $regs
5924collect all registers
5925
5926@item $args
5927collect all function arguments
5928
5929@item $locals
5930collect all local variables.
5931@end table
5932
5933You can give several consecutive @code{collect} commands, each one
5934with a single argument, or one @code{collect} command with several
5935arguments separated by commas: the effect is the same.
5936
f5c37c66
EZ
5937The command @code{info scope} (@pxref{Symbols, info scope}) is
5938particularly useful for figuring out what data to collect.
5939
b37052ae
EZ
5940@kindex while-stepping @r{(tracepoints)}
5941@item while-stepping @var{n}
5942Perform @var{n} single-step traces after the tracepoint, collecting
5943new data at each step. The @code{while-stepping} command is
5944followed by the list of what to collect while stepping (followed by
5945its own @code{end} command):
5946
5947@smallexample
5948> while-stepping 12
5949 > collect $regs, myglobal
5950 > end
5951>
5952@end smallexample
5953
5954@noindent
5955You may abbreviate @code{while-stepping} as @code{ws} or
5956@code{stepping}.
5957@end table
5958
5959@node Listing Tracepoints
5960@subsection Listing Tracepoints
5961
5962@table @code
5963@kindex info tracepoints
5964@cindex information about tracepoints
5965@item info tracepoints @r{[}@var{num}@r{]}
5966Display information the tracepoint @var{num}. If you don't specify a
5967tracepoint number displays information about all the tracepoints
5968defined so far. For each tracepoint, the following information is
5969shown:
5970
5971@itemize @bullet
5972@item
5973its number
5974@item
5975whether it is enabled or disabled
5976@item
5977its address
5978@item
5979its passcount as given by the @code{passcount @var{n}} command
5980@item
5981its step count as given by the @code{while-stepping @var{n}} command
5982@item
5983where in the source files is the tracepoint set
5984@item
5985its action list as given by the @code{actions} command
5986@end itemize
5987
5988@smallexample
5989(@value{GDBP}) @b{info trace}
5990Num Enb Address PassC StepC What
59911 y 0x002117c4 0 0 <gdb_asm>
59922 y 0x0020dc64 0 0 in gdb_test at gdb_test.c:375
59933 y 0x0020b1f4 0 0 in collect_data at ../foo.c:1741
5994(@value{GDBP})
5995@end smallexample
5996
5997@noindent
5998This command can be abbreviated @code{info tp}.
5999@end table
6000
6001@node Starting and Stopping Trace Experiment
6002@subsection Starting and Stopping Trace Experiment
6003
6004@table @code
6005@kindex tstart
6006@cindex start a new trace experiment
6007@cindex collected data discarded
6008@item tstart
6009This command takes no arguments. It starts the trace experiment, and
6010begins collecting data. This has the side effect of discarding all
6011the data collected in the trace buffer during the previous trace
6012experiment.
6013
6014@kindex tstop
6015@cindex stop a running trace experiment
6016@item tstop
6017This command takes no arguments. It ends the trace experiment, and
6018stops collecting data.
6019
6020@strong{Note:} a trace experiment and data collection may stop
6021automatically if any tracepoint's passcount is reached
6022(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
6023
6024@kindex tstatus
6025@cindex status of trace data collection
6026@cindex trace experiment, status of
6027@item tstatus
6028This command displays the status of the current trace data
6029collection.
6030@end table
6031
6032Here is an example of the commands we described so far:
6033
6034@smallexample
6035(@value{GDBP}) @b{trace gdb_c_test}
6036(@value{GDBP}) @b{actions}
6037Enter actions for tracepoint #1, one per line.
6038> collect $regs,$locals,$args
6039> while-stepping 11
6040 > collect $regs
6041 > end
6042> end
6043(@value{GDBP}) @b{tstart}
6044 [time passes @dots{}]
6045(@value{GDBP}) @b{tstop}
6046@end smallexample
6047
6048
6049@node Analyze Collected Data
6050@section Using the collected data
6051
6052After the tracepoint experiment ends, you use @value{GDBN} commands
6053for examining the trace data. The basic idea is that each tracepoint
6054collects a trace @dfn{snapshot} every time it is hit and another
6055snapshot every time it single-steps. All these snapshots are
6056consecutively numbered from zero and go into a buffer, and you can
6057examine them later. The way you examine them is to @dfn{focus} on a
6058specific trace snapshot. When the remote stub is focused on a trace
6059snapshot, it will respond to all @value{GDBN} requests for memory and
6060registers by reading from the buffer which belongs to that snapshot,
6061rather than from @emph{real} memory or registers of the program being
6062debugged. This means that @strong{all} @value{GDBN} commands
6063(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
6064behave as if we were currently debugging the program state as it was
6065when the tracepoint occurred. Any requests for data that are not in
6066the buffer will fail.
6067
6068@menu
6069* tfind:: How to select a trace snapshot
6070* tdump:: How to display all data for a snapshot
6071* save-tracepoints:: How to save tracepoints for a future run
6072@end menu
6073
6074@node tfind
6075@subsection @code{tfind @var{n}}
6076
6077@kindex tfind
6078@cindex select trace snapshot
6079@cindex find trace snapshot
6080The basic command for selecting a trace snapshot from the buffer is
6081@code{tfind @var{n}}, which finds trace snapshot number @var{n},
6082counting from zero. If no argument @var{n} is given, the next
6083snapshot is selected.
6084
6085Here are the various forms of using the @code{tfind} command.
6086
6087@table @code
6088@item tfind start
6089Find the first snapshot in the buffer. This is a synonym for
6090@code{tfind 0} (since 0 is the number of the first snapshot).
6091
6092@item tfind none
6093Stop debugging trace snapshots, resume @emph{live} debugging.
6094
6095@item tfind end
6096Same as @samp{tfind none}.
6097
6098@item tfind
6099No argument means find the next trace snapshot.
6100
6101@item tfind -
6102Find the previous trace snapshot before the current one. This permits
6103retracing earlier steps.
6104
6105@item tfind tracepoint @var{num}
6106Find the next snapshot associated with tracepoint @var{num}. Search
6107proceeds forward from the last examined trace snapshot. If no
6108argument @var{num} is given, it means find the next snapshot collected
6109for the same tracepoint as the current snapshot.
6110
6111@item tfind pc @var{addr}
6112Find the next snapshot associated with the value @var{addr} of the
6113program counter. Search proceeds forward from the last examined trace
6114snapshot. If no argument @var{addr} is given, it means find the next
6115snapshot with the same value of PC as the current snapshot.
6116
6117@item tfind outside @var{addr1}, @var{addr2}
6118Find the next snapshot whose PC is outside the given range of
6119addresses.
6120
6121@item tfind range @var{addr1}, @var{addr2}
6122Find the next snapshot whose PC is between @var{addr1} and
6123@var{addr2}. @c FIXME: Is the range inclusive or exclusive?
6124
6125@item tfind line @r{[}@var{file}:@r{]}@var{n}
6126Find the next snapshot associated with the source line @var{n}. If
6127the optional argument @var{file} is given, refer to line @var{n} in
6128that source file. Search proceeds forward from the last examined
6129trace snapshot. If no argument @var{n} is given, it means find the
6130next line other than the one currently being examined; thus saying
6131@code{tfind line} repeatedly can appear to have the same effect as
6132stepping from line to line in a @emph{live} debugging session.
6133@end table
6134
6135The default arguments for the @code{tfind} commands are specifically
6136designed to make it easy to scan through the trace buffer. For
6137instance, @code{tfind} with no argument selects the next trace
6138snapshot, and @code{tfind -} with no argument selects the previous
6139trace snapshot. So, by giving one @code{tfind} command, and then
6140simply hitting @key{RET} repeatedly you can examine all the trace
6141snapshots in order. Or, by saying @code{tfind -} and then hitting
6142@key{RET} repeatedly you can examine the snapshots in reverse order.
6143The @code{tfind line} command with no argument selects the snapshot
6144for the next source line executed. The @code{tfind pc} command with
6145no argument selects the next snapshot with the same program counter
6146(PC) as the current frame. The @code{tfind tracepoint} command with
6147no argument selects the next trace snapshot collected by the same
6148tracepoint as the current one.
6149
6150In addition to letting you scan through the trace buffer manually,
6151these commands make it easy to construct @value{GDBN} scripts that
6152scan through the trace buffer and print out whatever collected data
6153you are interested in. Thus, if we want to examine the PC, FP, and SP
6154registers from each trace frame in the buffer, we can say this:
6155
6156@smallexample
6157(@value{GDBP}) @b{tfind start}
6158(@value{GDBP}) @b{while ($trace_frame != -1)}
6159> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
6160 $trace_frame, $pc, $sp, $fp
6161> tfind
6162> end
6163
6164Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
6165Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
6166Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
6167Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
6168Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
6169Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
6170Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
6171Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
6172Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
6173Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
6174Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
6175@end smallexample
6176
6177Or, if we want to examine the variable @code{X} at each source line in
6178the buffer:
6179
6180@smallexample
6181(@value{GDBP}) @b{tfind start}
6182(@value{GDBP}) @b{while ($trace_frame != -1)}
6183> printf "Frame %d, X == %d\n", $trace_frame, X
6184> tfind line
6185> end
6186
6187Frame 0, X = 1
6188Frame 7, X = 2
6189Frame 13, X = 255
6190@end smallexample
6191
6192@node tdump
6193@subsection @code{tdump}
6194@kindex tdump
6195@cindex dump all data collected at tracepoint
6196@cindex tracepoint data, display
6197
6198This command takes no arguments. It prints all the data collected at
6199the current trace snapshot.
6200
6201@smallexample
6202(@value{GDBP}) @b{trace 444}
6203(@value{GDBP}) @b{actions}
6204Enter actions for tracepoint #2, one per line:
6205> collect $regs, $locals, $args, gdb_long_test
6206> end
6207
6208(@value{GDBP}) @b{tstart}
6209
6210(@value{GDBP}) @b{tfind line 444}
6211#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
6212at gdb_test.c:444
6213444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
6214
6215(@value{GDBP}) @b{tdump}
6216Data collected at tracepoint 2, trace frame 1:
6217d0 0xc4aa0085 -995491707
6218d1 0x18 24
6219d2 0x80 128
6220d3 0x33 51
6221d4 0x71aea3d 119204413
6222d5 0x22 34
6223d6 0xe0 224
6224d7 0x380035 3670069
6225a0 0x19e24a 1696330
6226a1 0x3000668 50333288
6227a2 0x100 256
6228a3 0x322000 3284992
6229a4 0x3000698 50333336
6230a5 0x1ad3cc 1758156
6231fp 0x30bf3c 0x30bf3c
6232sp 0x30bf34 0x30bf34
6233ps 0x0 0
6234pc 0x20b2c8 0x20b2c8
6235fpcontrol 0x0 0
6236fpstatus 0x0 0
6237fpiaddr 0x0 0
6238p = 0x20e5b4 "gdb-test"
6239p1 = (void *) 0x11
6240p2 = (void *) 0x22
6241p3 = (void *) 0x33
6242p4 = (void *) 0x44
6243p5 = (void *) 0x55
6244p6 = (void *) 0x66
6245gdb_long_test = 17 '\021'
6246
6247(@value{GDBP})
6248@end smallexample
6249
6250@node save-tracepoints
6251@subsection @code{save-tracepoints @var{filename}}
6252@kindex save-tracepoints
6253@cindex save tracepoints for future sessions
6254
6255This command saves all current tracepoint definitions together with
6256their actions and passcounts, into a file @file{@var{filename}}
6257suitable for use in a later debugging session. To read the saved
6258tracepoint definitions, use the @code{source} command (@pxref{Command
6259Files}).
6260
6261@node Tracepoint Variables
6262@section Convenience Variables for Tracepoints
6263@cindex tracepoint variables
6264@cindex convenience variables for tracepoints
6265
6266@table @code
6267@vindex $trace_frame
6268@item (int) $trace_frame
6269The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
6270snapshot is selected.
6271
6272@vindex $tracepoint
6273@item (int) $tracepoint
6274The tracepoint for the current trace snapshot.
6275
6276@vindex $trace_line
6277@item (int) $trace_line
6278The line number for the current trace snapshot.
6279
6280@vindex $trace_file
6281@item (char []) $trace_file
6282The source file for the current trace snapshot.
6283
6284@vindex $trace_func
6285@item (char []) $trace_func
6286The name of the function containing @code{$tracepoint}.
6287@end table
6288
6289Note: @code{$trace_file} is not suitable for use in @code{printf},
6290use @code{output} instead.
6291
6292Here's a simple example of using these convenience variables for
6293stepping through all the trace snapshots and printing some of their
6294data.
6295
6296@smallexample
6297(@value{GDBP}) @b{tfind start}
6298
6299(@value{GDBP}) @b{while $trace_frame != -1}
6300> output $trace_file
6301> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
6302> tfind
6303> end
6304@end smallexample
6305
df0cd8c5
JB
6306@node Overlays
6307@chapter Debugging Programs That Use Overlays
6308@cindex overlays
6309
6310If your program is too large to fit completely in your target system's
6311memory, you can sometimes use @dfn{overlays} to work around this
6312problem. @value{GDBN} provides some support for debugging programs that
6313use overlays.
6314
6315@menu
6316* How Overlays Work:: A general explanation of overlays.
6317* Overlay Commands:: Managing overlays in @value{GDBN}.
6318* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
6319 mapped by asking the inferior.
6320* Overlay Sample Program:: A sample program using overlays.
6321@end menu
6322
6323@node How Overlays Work
6324@section How Overlays Work
6325@cindex mapped overlays
6326@cindex unmapped overlays
6327@cindex load address, overlay's
6328@cindex mapped address
6329@cindex overlay area
6330
6331Suppose you have a computer whose instruction address space is only 64
6332kilobytes long, but which has much more memory which can be accessed by
6333other means: special instructions, segment registers, or memory
6334management hardware, for example. Suppose further that you want to
6335adapt a program which is larger than 64 kilobytes to run on this system.
6336
6337One solution is to identify modules of your program which are relatively
6338independent, and need not call each other directly; call these modules
6339@dfn{overlays}. Separate the overlays from the main program, and place
6340their machine code in the larger memory. Place your main program in
6341instruction memory, but leave at least enough space there to hold the
6342largest overlay as well.
6343
6344Now, to call a function located in an overlay, you must first copy that
6345overlay's machine code from the large memory into the space set aside
6346for it in the instruction memory, and then jump to its entry point
6347there.
6348
6349@example
6350@group
6351 Data Instruction Larger
6352Address Space Address Space Address Space
6353+-----------+ +-----------+ +-----------+
6354| | | | | |
6355+-----------+ +-----------+ +-----------+<-- overlay 1
6356| program | | main | | | load address
6357| variables | | program | | overlay 1 |
6358| and heap | | | ,---| |
6359+-----------+ | | | | |
6360| | +-----------+ | +-----------+
6361+-----------+ | | | | |
6362 mapped --->+-----------+ / +-----------+<-- overlay 2
6363 address | overlay | <-' | overlay 2 | load address
6364 | area | <-----| |
6365 | | <---. +-----------+
6366 | | | | |
6367 +-----------+ | | |
6368 | | | +-----------+<-- overlay 3
6369 +-----------+ `--| | load address
6370 | overlay 3 |
6371 | |
6372 +-----------+
6373 | |
6374 +-----------+
6375
6376 To map an overlay, copy its code from the larger address space
6377 to the instruction address space. Since the overlays shown here
6378 all use the same mapped address, only one may be mapped at a time.
6379@end group
6380@end example
6381
6382This diagram shows a system with separate data and instruction address
6383spaces. For a system with a single address space for data and
6384instructions, the diagram would be similar, except that the program
6385variables and heap would share an address space with the main program
6386and the overlay area.
6387
6388An overlay loaded into instruction memory and ready for use is called a
6389@dfn{mapped} overlay; its @dfn{mapped address} is its address in the
6390instruction memory. An overlay not present (or only partially present)
6391in instruction memory is called @dfn{unmapped}; its @dfn{load address}
6392is its address in the larger memory. The mapped address is also called
6393the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
6394called the @dfn{load memory address}, or @dfn{LMA}.
6395
6396Unfortunately, overlays are not a completely transparent way to adapt a
6397program to limited instruction memory. They introduce a new set of
6398global constraints you must keep in mind as you design your program:
6399
6400@itemize @bullet
6401
6402@item
6403Before calling or returning to a function in an overlay, your program
6404must make sure that overlay is actually mapped. Otherwise, the call or
6405return will transfer control to the right address, but in the wrong
6406overlay, and your program will probably crash.
6407
6408@item
6409If the process of mapping an overlay is expensive on your system, you
6410will need to choose your overlays carefully to minimize their effect on
6411your program's performance.
6412
6413@item
6414The executable file you load onto your system must contain each
6415overlay's instructions, appearing at the overlay's load address, not its
6416mapped address. However, each overlay's instructions must be relocated
6417and its symbols defined as if the overlay were at its mapped address.
6418You can use GNU linker scripts to specify different load and relocation
6419addresses for pieces of your program; see @ref{Overlay Description,,,
6420ld.info, Using ld: the GNU linker}.
6421
6422@item
6423The procedure for loading executable files onto your system must be able
6424to load their contents into the larger address space as well as the
6425instruction and data spaces.
6426
6427@end itemize
6428
6429The overlay system described above is rather simple, and could be
6430improved in many ways:
6431
6432@itemize @bullet
6433
6434@item
6435If your system has suitable bank switch registers or memory management
6436hardware, you could use those facilities to make an overlay's load area
6437contents simply appear at their mapped address in instruction space.
6438This would probably be faster than copying the overlay to its mapped
6439area in the usual way.
6440
6441@item
6442If your overlays are small enough, you could set aside more than one
6443overlay area, and have more than one overlay mapped at a time.
6444
6445@item
6446You can use overlays to manage data, as well as instructions. In
6447general, data overlays are even less transparent to your design than
6448code overlays: whereas code overlays only require care when you call or
6449return to functions, data overlays require care every time you access
6450the data. Also, if you change the contents of a data overlay, you
6451must copy its contents back out to its load address before you can copy a
6452different data overlay into the same mapped area.
6453
6454@end itemize
6455
6456
6457@node Overlay Commands
6458@section Overlay Commands
6459
6460To use @value{GDBN}'s overlay support, each overlay in your program must
6461correspond to a separate section of the executable file. The section's
6462virtual memory address and load memory address must be the overlay's
6463mapped and load addresses. Identifying overlays with sections allows
6464@value{GDBN} to determine the appropriate address of a function or
6465variable, depending on whether the overlay is mapped or not.
6466
6467@value{GDBN}'s overlay commands all start with the word @code{overlay};
6468you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
6469
6470@table @code
6471@item overlay off
6472@kindex overlay off
6473Disable @value{GDBN}'s overlay support. When overlay support is
6474disabled, @value{GDBN} assumes that all functions and variables are
6475always present at their mapped addresses. By default, @value{GDBN}'s
6476overlay support is disabled.
6477
6478@item overlay manual
6479@kindex overlay manual
6480@cindex manual overlay debugging
6481Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
6482relies on you to tell it which overlays are mapped, and which are not,
6483using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
6484commands described below.
6485
6486@item overlay map-overlay @var{overlay}
6487@itemx overlay map @var{overlay}
6488@kindex overlay map-overlay
6489@cindex map an overlay
6490Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
6491be the name of the object file section containing the overlay. When an
6492overlay is mapped, @value{GDBN} assumes it can find the overlay's
6493functions and variables at their mapped addresses. @value{GDBN} assumes
6494that any other overlays whose mapped ranges overlap that of
6495@var{overlay} are now unmapped.
6496
6497@item overlay unmap-overlay @var{overlay}
6498@itemx overlay unmap @var{overlay}
6499@kindex overlay unmap-overlay
6500@cindex unmap an overlay
6501Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
6502must be the name of the object file section containing the overlay.
6503When an overlay is unmapped, @value{GDBN} assumes it can find the
6504overlay's functions and variables at their load addresses.
6505
6506@item overlay auto
6507@kindex overlay auto
6508Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
6509consults a data structure the overlay manager maintains in the inferior
6510to see which overlays are mapped. For details, see @ref{Automatic
6511Overlay Debugging}.
6512
6513@item overlay load-target
6514@itemx overlay load
6515@kindex overlay load-target
6516@cindex reloading the overlay table
6517Re-read the overlay table from the inferior. Normally, @value{GDBN}
6518re-reads the table @value{GDBN} automatically each time the inferior
6519stops, so this command should only be necessary if you have changed the
6520overlay mapping yourself using @value{GDBN}. This command is only
6521useful when using automatic overlay debugging.
6522
6523@item overlay list-overlays
6524@itemx overlay list
6525@cindex listing mapped overlays
6526Display a list of the overlays currently mapped, along with their mapped
6527addresses, load addresses, and sizes.
6528
6529@end table
6530
6531Normally, when @value{GDBN} prints a code address, it includes the name
6532of the function the address falls in:
6533
6534@example
6535(gdb) print main
6536$3 = @{int ()@} 0x11a0 <main>
6537@end example
6538@noindent
6539When overlay debugging is enabled, @value{GDBN} recognizes code in
6540unmapped overlays, and prints the names of unmapped functions with
6541asterisks around them. For example, if @code{foo} is a function in an
6542unmapped overlay, @value{GDBN} prints it this way:
6543
6544@example
6545(gdb) overlay list
6546No sections are mapped.
6547(gdb) print foo
6548$5 = @{int (int)@} 0x100000 <*foo*>
6549@end example
6550@noindent
6551When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
6552name normally:
6553
6554@example
6555(gdb) overlay list
6556Section .ov.foo.text, loaded at 0x100000 - 0x100034,
6557 mapped at 0x1016 - 0x104a
6558(gdb) print foo
6559$6 = @{int (int)@} 0x1016 <foo>
6560@end example
6561
6562When overlay debugging is enabled, @value{GDBN} can find the correct
6563address for functions and variables in an overlay, whether or not the
6564overlay is mapped. This allows most @value{GDBN} commands, like
6565@code{break} and @code{disassemble}, to work normally, even on unmapped
6566code. However, @value{GDBN}'s breakpoint support has some limitations:
6567
6568@itemize @bullet
6569@item
6570@cindex breakpoints in overlays
6571@cindex overlays, setting breakpoints in
6572You can set breakpoints in functions in unmapped overlays, as long as
6573@value{GDBN} can write to the overlay at its load address.
6574@item
6575@value{GDBN} can not set hardware or simulator-based breakpoints in
6576unmapped overlays. However, if you set a breakpoint at the end of your
6577overlay manager (and tell @value{GDBN} which overlays are now mapped, if
6578you are using manual overlay management), @value{GDBN} will re-set its
6579breakpoints properly.
6580@end itemize
6581
6582
6583@node Automatic Overlay Debugging
6584@section Automatic Overlay Debugging
6585@cindex automatic overlay debugging
6586
6587@value{GDBN} can automatically track which overlays are mapped and which
6588are not, given some simple co-operation from the overlay manager in the
6589inferior. If you enable automatic overlay debugging with the
6590@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
6591looks in the inferior's memory for certain variables describing the
6592current state of the overlays.
6593
6594Here are the variables your overlay manager must define to support
6595@value{GDBN}'s automatic overlay debugging:
6596
6597@table @asis
6598
6599@item @code{_ovly_table}:
6600This variable must be an array of the following structures:
6601
6602@example
6603struct
6604@{
6605 /* The overlay's mapped address. */
6606 unsigned long vma;
6607
6608 /* The size of the overlay, in bytes. */
6609 unsigned long size;
6610
6611 /* The overlay's load address. */
6612 unsigned long lma;
6613
6614 /* Non-zero if the overlay is currently mapped;
6615 zero otherwise. */
6616 unsigned long mapped;
6617@}
6618@end example
6619
6620@item @code{_novlys}:
6621This variable must be a four-byte signed integer, holding the total
6622number of elements in @code{_ovly_table}.
6623
6624@end table
6625
6626To decide whether a particular overlay is mapped or not, @value{GDBN}
6627looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
6628@code{lma} members equal the VMA and LMA of the overlay's section in the
6629executable file. When @value{GDBN} finds a matching entry, it consults
6630the entry's @code{mapped} member to determine whether the overlay is
6631currently mapped.
6632
6633
6634@node Overlay Sample Program
6635@section Overlay Sample Program
6636@cindex overlay example program
6637
6638When linking a program which uses overlays, you must place the overlays
6639at their load addresses, while relocating them to run at their mapped
6640addresses. To do this, you must write a linker script (@pxref{Overlay
6641Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
6642since linker scripts are specific to a particular host system, target
6643architecture, and target memory layout, this manual cannot provide
6644portable sample code demonstrating @value{GDBN}'s overlay support.
6645
6646However, the @value{GDBN} source distribution does contain an overlaid
6647program, with linker scripts for a few systems, as part of its test
6648suite. The program consists of the following files from
6649@file{gdb/testsuite/gdb.base}:
6650
6651@table @file
6652@item overlays.c
6653The main program file.
6654@item ovlymgr.c
6655A simple overlay manager, used by @file{overlays.c}.
6656@item foo.c
6657@itemx bar.c
6658@itemx baz.c
6659@itemx grbx.c
6660Overlay modules, loaded and used by @file{overlays.c}.
6661@item d10v.ld
6662@itemx m32r.ld
6663Linker scripts for linking the test program on the @code{d10v-elf}
6664and @code{m32r-elf} targets.
6665@end table
6666
6667You can build the test program using the @code{d10v-elf} GCC
6668cross-compiler like this:
6669
6670@example
6671$ d10v-elf-gcc -g -c overlays.c
6672$ d10v-elf-gcc -g -c ovlymgr.c
6673$ d10v-elf-gcc -g -c foo.c
6674$ d10v-elf-gcc -g -c bar.c
6675$ d10v-elf-gcc -g -c baz.c
6676$ d10v-elf-gcc -g -c grbx.c
6677$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
6678 baz.o grbx.o -Wl,-Td10v.ld -o overlays
6679@end example
6680
6681The build process is identical for any other architecture, except that
6682you must substitute the appropriate compiler and linker script for the
6683target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
6684
6685
6d2ebf8b 6686@node Languages
c906108c
SS
6687@chapter Using @value{GDBN} with Different Languages
6688@cindex languages
6689
c906108c
SS
6690Although programming languages generally have common aspects, they are
6691rarely expressed in the same manner. For instance, in ANSI C,
6692dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
6693Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 6694represented (and displayed) differently. Hex numbers in C appear as
c906108c 6695@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
6696
6697@cindex working language
6698Language-specific information is built into @value{GDBN} for some languages,
6699allowing you to express operations like the above in your program's
6700native language, and allowing @value{GDBN} to output values in a manner
6701consistent with the syntax of your program's native language. The
6702language you use to build expressions is called the @dfn{working
6703language}.
6704
6705@menu
6706* Setting:: Switching between source languages
6707* Show:: Displaying the language
c906108c 6708* Checks:: Type and range checks
c906108c
SS
6709* Support:: Supported languages
6710@end menu
6711
6d2ebf8b 6712@node Setting
c906108c
SS
6713@section Switching between source languages
6714
6715There are two ways to control the working language---either have @value{GDBN}
6716set it automatically, or select it manually yourself. You can use the
6717@code{set language} command for either purpose. On startup, @value{GDBN}
6718defaults to setting the language automatically. The working language is
6719used to determine how expressions you type are interpreted, how values
6720are printed, etc.
6721
6722In addition to the working language, every source file that
6723@value{GDBN} knows about has its own working language. For some object
6724file formats, the compiler might indicate which language a particular
6725source file is in. However, most of the time @value{GDBN} infers the
6726language from the name of the file. The language of a source file
b37052ae 6727controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 6728show each frame appropriately for its own language. There is no way to
d4f3574e
SS
6729set the language of a source file from within @value{GDBN}, but you can
6730set the language associated with a filename extension. @xref{Show, ,
6731Displaying the language}.
c906108c
SS
6732
6733This is most commonly a problem when you use a program, such
5d161b24 6734as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
6735another language. In that case, make the
6736program use @code{#line} directives in its C output; that way
6737@value{GDBN} will know the correct language of the source code of the original
6738program, and will display that source code, not the generated C code.
6739
6740@menu
6741* Filenames:: Filename extensions and languages.
6742* Manually:: Setting the working language manually
6743* Automatically:: Having @value{GDBN} infer the source language
6744@end menu
6745
6d2ebf8b 6746@node Filenames
c906108c
SS
6747@subsection List of filename extensions and languages
6748
6749If a source file name ends in one of the following extensions, then
6750@value{GDBN} infers that its language is the one indicated.
6751
6752@table @file
6753
6754@item .c
6755C source file
6756
6757@item .C
6758@itemx .cc
6759@itemx .cp
6760@itemx .cpp
6761@itemx .cxx
6762@itemx .c++
b37052ae 6763C@t{++} source file
c906108c
SS
6764
6765@item .f
6766@itemx .F
6767Fortran source file
6768
c906108c
SS
6769@item .ch
6770@itemx .c186
6771@itemx .c286
96a2c332 6772CHILL source file
c906108c 6773
c906108c
SS
6774@item .mod
6775Modula-2 source file
c906108c
SS
6776
6777@item .s
6778@itemx .S
6779Assembler source file. This actually behaves almost like C, but
6780@value{GDBN} does not skip over function prologues when stepping.
6781@end table
6782
6783In addition, you may set the language associated with a filename
6784extension. @xref{Show, , Displaying the language}.
6785
6d2ebf8b 6786@node Manually
c906108c
SS
6787@subsection Setting the working language
6788
6789If you allow @value{GDBN} to set the language automatically,
6790expressions are interpreted the same way in your debugging session and
6791your program.
6792
6793@kindex set language
6794If you wish, you may set the language manually. To do this, issue the
6795command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 6796a language, such as
c906108c 6797@code{c} or @code{modula-2}.
c906108c
SS
6798For a list of the supported languages, type @samp{set language}.
6799
c906108c
SS
6800Setting the language manually prevents @value{GDBN} from updating the working
6801language automatically. This can lead to confusion if you try
6802to debug a program when the working language is not the same as the
6803source language, when an expression is acceptable to both
6804languages---but means different things. For instance, if the current
6805source file were written in C, and @value{GDBN} was parsing Modula-2, a
6806command such as:
6807
6808@example
6809print a = b + c
6810@end example
6811
6812@noindent
6813might not have the effect you intended. In C, this means to add
6814@code{b} and @code{c} and place the result in @code{a}. The result
6815printed would be the value of @code{a}. In Modula-2, this means to compare
6816@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 6817
6d2ebf8b 6818@node Automatically
c906108c
SS
6819@subsection Having @value{GDBN} infer the source language
6820
6821To have @value{GDBN} set the working language automatically, use
6822@samp{set language local} or @samp{set language auto}. @value{GDBN}
6823then infers the working language. That is, when your program stops in a
6824frame (usually by encountering a breakpoint), @value{GDBN} sets the
6825working language to the language recorded for the function in that
6826frame. If the language for a frame is unknown (that is, if the function
6827or block corresponding to the frame was defined in a source file that
6828does not have a recognized extension), the current working language is
6829not changed, and @value{GDBN} issues a warning.
6830
6831This may not seem necessary for most programs, which are written
6832entirely in one source language. However, program modules and libraries
6833written in one source language can be used by a main program written in
6834a different source language. Using @samp{set language auto} in this
6835case frees you from having to set the working language manually.
6836
6d2ebf8b 6837@node Show
c906108c 6838@section Displaying the language
c906108c
SS
6839
6840The following commands help you find out which language is the
6841working language, and also what language source files were written in.
6842
6843@kindex show language
d4f3574e
SS
6844@kindex info frame@r{, show the source language}
6845@kindex info source@r{, show the source language}
c906108c
SS
6846@table @code
6847@item show language
6848Display the current working language. This is the
6849language you can use with commands such as @code{print} to
6850build and compute expressions that may involve variables in your program.
6851
6852@item info frame
5d161b24 6853Display the source language for this frame. This language becomes the
c906108c 6854working language if you use an identifier from this frame.
5d161b24 6855@xref{Frame Info, ,Information about a frame}, to identify the other
c906108c
SS
6856information listed here.
6857
6858@item info source
6859Display the source language of this source file.
5d161b24 6860@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
6861information listed here.
6862@end table
6863
6864In unusual circumstances, you may have source files with extensions
6865not in the standard list. You can then set the extension associated
6866with a language explicitly:
6867
6868@kindex set extension-language
6869@kindex info extensions
6870@table @code
6871@item set extension-language @var{.ext} @var{language}
6872Set source files with extension @var{.ext} to be assumed to be in
6873the source language @var{language}.
6874
6875@item info extensions
6876List all the filename extensions and the associated languages.
6877@end table
6878
6d2ebf8b 6879@node Checks
c906108c
SS
6880@section Type and range checking
6881
6882@quotation
6883@emph{Warning:} In this release, the @value{GDBN} commands for type and range
6884checking are included, but they do not yet have any effect. This
6885section documents the intended facilities.
6886@end quotation
6887@c FIXME remove warning when type/range code added
6888
6889Some languages are designed to guard you against making seemingly common
6890errors through a series of compile- and run-time checks. These include
6891checking the type of arguments to functions and operators, and making
6892sure mathematical overflows are caught at run time. Checks such as
6893these help to ensure a program's correctness once it has been compiled
6894by eliminating type mismatches, and providing active checks for range
6895errors when your program is running.
6896
6897@value{GDBN} can check for conditions like the above if you wish.
6898Although @value{GDBN} does not check the statements in your program, it
6899can check expressions entered directly into @value{GDBN} for evaluation via
6900the @code{print} command, for example. As with the working language,
6901@value{GDBN} can also decide whether or not to check automatically based on
6902your program's source language. @xref{Support, ,Supported languages},
6903for the default settings of supported languages.
6904
6905@menu
6906* Type Checking:: An overview of type checking
6907* Range Checking:: An overview of range checking
6908@end menu
6909
6910@cindex type checking
6911@cindex checks, type
6d2ebf8b 6912@node Type Checking
c906108c
SS
6913@subsection An overview of type checking
6914
6915Some languages, such as Modula-2, are strongly typed, meaning that the
6916arguments to operators and functions have to be of the correct type,
6917otherwise an error occurs. These checks prevent type mismatch
6918errors from ever causing any run-time problems. For example,
6919
6920@smallexample
69211 + 2 @result{} 3
6922@exdent but
6923@error{} 1 + 2.3
6924@end smallexample
6925
6926The second example fails because the @code{CARDINAL} 1 is not
6927type-compatible with the @code{REAL} 2.3.
6928
5d161b24
DB
6929For the expressions you use in @value{GDBN} commands, you can tell the
6930@value{GDBN} type checker to skip checking;
6931to treat any mismatches as errors and abandon the expression;
6932or to only issue warnings when type mismatches occur,
c906108c
SS
6933but evaluate the expression anyway. When you choose the last of
6934these, @value{GDBN} evaluates expressions like the second example above, but
6935also issues a warning.
6936
5d161b24
DB
6937Even if you turn type checking off, there may be other reasons
6938related to type that prevent @value{GDBN} from evaluating an expression.
6939For instance, @value{GDBN} does not know how to add an @code{int} and
6940a @code{struct foo}. These particular type errors have nothing to do
6941with the language in use, and usually arise from expressions, such as
c906108c
SS
6942the one described above, which make little sense to evaluate anyway.
6943
6944Each language defines to what degree it is strict about type. For
6945instance, both Modula-2 and C require the arguments to arithmetical
6946operators to be numbers. In C, enumerated types and pointers can be
6947represented as numbers, so that they are valid arguments to mathematical
6948operators. @xref{Support, ,Supported languages}, for further
6949details on specific languages.
6950
6951@value{GDBN} provides some additional commands for controlling the type checker:
6952
d4f3574e 6953@kindex set check@r{, type}
c906108c
SS
6954@kindex set check type
6955@kindex show check type
6956@table @code
6957@item set check type auto
6958Set type checking on or off based on the current working language.
6959@xref{Support, ,Supported languages}, for the default settings for
6960each language.
6961
6962@item set check type on
6963@itemx set check type off
6964Set type checking on or off, overriding the default setting for the
6965current working language. Issue a warning if the setting does not
6966match the language default. If any type mismatches occur in
d4f3574e 6967evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
6968message and aborts evaluation of the expression.
6969
6970@item set check type warn
6971Cause the type checker to issue warnings, but to always attempt to
6972evaluate the expression. Evaluating the expression may still
6973be impossible for other reasons. For example, @value{GDBN} cannot add
6974numbers and structures.
6975
6976@item show type
5d161b24 6977Show the current setting of the type checker, and whether or not @value{GDBN}
c906108c
SS
6978is setting it automatically.
6979@end table
6980
6981@cindex range checking
6982@cindex checks, range
6d2ebf8b 6983@node Range Checking
c906108c
SS
6984@subsection An overview of range checking
6985
6986In some languages (such as Modula-2), it is an error to exceed the
6987bounds of a type; this is enforced with run-time checks. Such range
6988checking is meant to ensure program correctness by making sure
6989computations do not overflow, or indices on an array element access do
6990not exceed the bounds of the array.
6991
6992For expressions you use in @value{GDBN} commands, you can tell
6993@value{GDBN} to treat range errors in one of three ways: ignore them,
6994always treat them as errors and abandon the expression, or issue
6995warnings but evaluate the expression anyway.
6996
6997A range error can result from numerical overflow, from exceeding an
6998array index bound, or when you type a constant that is not a member
6999of any type. Some languages, however, do not treat overflows as an
7000error. In many implementations of C, mathematical overflow causes the
7001result to ``wrap around'' to lower values---for example, if @var{m} is
7002the largest integer value, and @var{s} is the smallest, then
7003
7004@example
7005@var{m} + 1 @result{} @var{s}
7006@end example
7007
7008This, too, is specific to individual languages, and in some cases
7009specific to individual compilers or machines. @xref{Support, ,
7010Supported languages}, for further details on specific languages.
7011
7012@value{GDBN} provides some additional commands for controlling the range checker:
7013
d4f3574e 7014@kindex set check@r{, range}
c906108c
SS
7015@kindex set check range
7016@kindex show check range
7017@table @code
7018@item set check range auto
7019Set range checking on or off based on the current working language.
7020@xref{Support, ,Supported languages}, for the default settings for
7021each language.
7022
7023@item set check range on
7024@itemx set check range off
7025Set range checking on or off, overriding the default setting for the
7026current working language. A warning is issued if the setting does not
c3f6f71d
JM
7027match the language default. If a range error occurs and range checking is on,
7028then a message is printed and evaluation of the expression is aborted.
c906108c
SS
7029
7030@item set check range warn
7031Output messages when the @value{GDBN} range checker detects a range error,
7032but attempt to evaluate the expression anyway. Evaluating the
7033expression may still be impossible for other reasons, such as accessing
7034memory that the process does not own (a typical example from many Unix
7035systems).
7036
7037@item show range
7038Show the current setting of the range checker, and whether or not it is
7039being set automatically by @value{GDBN}.
7040@end table
c906108c 7041
6d2ebf8b 7042@node Support
c906108c 7043@section Supported languages
c906108c 7044
b37052ae 7045@value{GDBN} supports C, C@t{++}, Fortran, Java, Chill, assembly, and Modula-2.
cce74817 7046@c This is false ...
c906108c
SS
7047Some @value{GDBN} features may be used in expressions regardless of the
7048language you use: the @value{GDBN} @code{@@} and @code{::} operators,
7049and the @samp{@{type@}addr} construct (@pxref{Expressions,
7050,Expressions}) can be used with the constructs of any supported
7051language.
7052
7053The following sections detail to what degree each source language is
7054supported by @value{GDBN}. These sections are not meant to be language
7055tutorials or references, but serve only as a reference guide to what the
7056@value{GDBN} expression parser accepts, and what input and output
7057formats should look like for different languages. There are many good
7058books written on each of these languages; please look to these for a
7059language reference or tutorial.
7060
c906108c 7061@menu
b37052ae 7062* C:: C and C@t{++}
cce74817 7063* Modula-2:: Modula-2
104c1213 7064* Chill:: Chill
c906108c
SS
7065@end menu
7066
6d2ebf8b 7067@node C
b37052ae 7068@subsection C and C@t{++}
7a292a7a 7069
b37052ae
EZ
7070@cindex C and C@t{++}
7071@cindex expressions in C or C@t{++}
c906108c 7072
b37052ae 7073Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
7074to both languages. Whenever this is the case, we discuss those languages
7075together.
7076
41afff9a
EZ
7077@cindex C@t{++}
7078@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
7079@cindex @sc{gnu} C@t{++}
7080The C@t{++} debugging facilities are jointly implemented by the C@t{++}
7081compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
7082effectively, you must compile your C@t{++} programs with a supported
7083C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
7084compiler (@code{aCC}).
7085
b37052ae 7086For best results when using @sc{gnu} C@t{++}, use the stabs debugging
c906108c
SS
7087format. You can select that format explicitly with the @code{g++}
7088command-line options @samp{-gstabs} or @samp{-gstabs+}. See
7089@ref{Debugging Options,,Options for Debugging Your Program or @sc{gnu}
7090CC, gcc.info, Using @sc{gnu} CC}, for more information.
c906108c 7091
c906108c 7092@menu
b37052ae
EZ
7093* C Operators:: C and C@t{++} operators
7094* C Constants:: C and C@t{++} constants
7095* C plus plus expressions:: C@t{++} expressions
7096* C Defaults:: Default settings for C and C@t{++}
7097* C Checks:: C and C@t{++} type and range checks
c906108c 7098* Debugging C:: @value{GDBN} and C
b37052ae 7099* Debugging C plus plus:: @value{GDBN} features for C@t{++}
c906108c 7100@end menu
c906108c 7101
6d2ebf8b 7102@node C Operators
b37052ae 7103@subsubsection C and C@t{++} operators
7a292a7a 7104
b37052ae 7105@cindex C and C@t{++} operators
c906108c
SS
7106
7107Operators must be defined on values of specific types. For instance,
7108@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 7109often defined on groups of types.
c906108c 7110
b37052ae 7111For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
7112
7113@itemize @bullet
53a5351d 7114
c906108c 7115@item
c906108c 7116@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 7117specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
7118
7119@item
d4f3574e
SS
7120@emph{Floating-point types} include @code{float}, @code{double}, and
7121@code{long double} (if supported by the target platform).
c906108c
SS
7122
7123@item
53a5351d 7124@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
7125
7126@item
7127@emph{Scalar types} include all of the above.
53a5351d 7128
c906108c
SS
7129@end itemize
7130
7131@noindent
7132The following operators are supported. They are listed here
7133in order of increasing precedence:
7134
7135@table @code
7136@item ,
7137The comma or sequencing operator. Expressions in a comma-separated list
7138are evaluated from left to right, with the result of the entire
7139expression being the last expression evaluated.
7140
7141@item =
7142Assignment. The value of an assignment expression is the value
7143assigned. Defined on scalar types.
7144
7145@item @var{op}=
7146Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
7147and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 7148@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
7149@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
7150@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
7151
7152@item ?:
7153The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
7154of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
7155integral type.
7156
7157@item ||
7158Logical @sc{or}. Defined on integral types.
7159
7160@item &&
7161Logical @sc{and}. Defined on integral types.
7162
7163@item |
7164Bitwise @sc{or}. Defined on integral types.
7165
7166@item ^
7167Bitwise exclusive-@sc{or}. Defined on integral types.
7168
7169@item &
7170Bitwise @sc{and}. Defined on integral types.
7171
7172@item ==@r{, }!=
7173Equality and inequality. Defined on scalar types. The value of these
7174expressions is 0 for false and non-zero for true.
7175
7176@item <@r{, }>@r{, }<=@r{, }>=
7177Less than, greater than, less than or equal, greater than or equal.
7178Defined on scalar types. The value of these expressions is 0 for false
7179and non-zero for true.
7180
7181@item <<@r{, }>>
7182left shift, and right shift. Defined on integral types.
7183
7184@item @@
7185The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
7186
7187@item +@r{, }-
7188Addition and subtraction. Defined on integral types, floating-point types and
7189pointer types.
7190
7191@item *@r{, }/@r{, }%
7192Multiplication, division, and modulus. Multiplication and division are
7193defined on integral and floating-point types. Modulus is defined on
7194integral types.
7195
7196@item ++@r{, }--
7197Increment and decrement. When appearing before a variable, the
7198operation is performed before the variable is used in an expression;
7199when appearing after it, the variable's value is used before the
7200operation takes place.
7201
7202@item *
7203Pointer dereferencing. Defined on pointer types. Same precedence as
7204@code{++}.
7205
7206@item &
7207Address operator. Defined on variables. Same precedence as @code{++}.
7208
b37052ae
EZ
7209For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
7210allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
c906108c 7211(or, if you prefer, simply @samp{&&@var{ref}}) to examine the address
b37052ae 7212where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 7213stored.
c906108c
SS
7214
7215@item -
7216Negative. Defined on integral and floating-point types. Same
7217precedence as @code{++}.
7218
7219@item !
7220Logical negation. Defined on integral types. Same precedence as
7221@code{++}.
7222
7223@item ~
7224Bitwise complement operator. Defined on integral types. Same precedence as
7225@code{++}.
7226
7227
7228@item .@r{, }->
7229Structure member, and pointer-to-structure member. For convenience,
7230@value{GDBN} regards the two as equivalent, choosing whether to dereference a
7231pointer based on the stored type information.
7232Defined on @code{struct} and @code{union} data.
7233
c906108c
SS
7234@item .*@r{, }->*
7235Dereferences of pointers to members.
c906108c
SS
7236
7237@item []
7238Array indexing. @code{@var{a}[@var{i}]} is defined as
7239@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
7240
7241@item ()
7242Function parameter list. Same precedence as @code{->}.
7243
c906108c 7244@item ::
b37052ae 7245C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 7246and @code{class} types.
c906108c
SS
7247
7248@item ::
7a292a7a
SS
7249Doubled colons also represent the @value{GDBN} scope operator
7250(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
7251above.
c906108c
SS
7252@end table
7253
c906108c
SS
7254If an operator is redefined in the user code, @value{GDBN} usually
7255attempts to invoke the redefined version instead of using the operator's
7256predefined meaning.
c906108c 7257
c906108c 7258@menu
5d161b24 7259* C Constants::
c906108c
SS
7260@end menu
7261
6d2ebf8b 7262@node C Constants
b37052ae 7263@subsubsection C and C@t{++} constants
c906108c 7264
b37052ae 7265@cindex C and C@t{++} constants
c906108c 7266
b37052ae 7267@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 7268following ways:
c906108c
SS
7269
7270@itemize @bullet
7271@item
7272Integer constants are a sequence of digits. Octal constants are
7273specified by a leading @samp{0} (i.e. zero), and hexadecimal constants by
7274a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
7275@samp{l}, specifying that the constant should be treated as a
7276@code{long} value.
7277
7278@item
7279Floating point constants are a sequence of digits, followed by a decimal
7280point, followed by a sequence of digits, and optionally followed by an
7281exponent. An exponent is of the form:
7282@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
7283sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
7284A floating-point constant may also end with a letter @samp{f} or
7285@samp{F}, specifying that the constant should be treated as being of
7286the @code{float} (as opposed to the default @code{double}) type; or with
7287a letter @samp{l} or @samp{L}, which specifies a @code{long double}
7288constant.
c906108c
SS
7289
7290@item
7291Enumerated constants consist of enumerated identifiers, or their
7292integral equivalents.
7293
7294@item
7295Character constants are a single character surrounded by single quotes
7296(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 7297(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
7298be represented by a letter or by @dfn{escape sequences}, which are of
7299the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
7300of the character's ordinal value; or of the form @samp{\@var{x}}, where
7301@samp{@var{x}} is a predefined special character---for example,
7302@samp{\n} for newline.
7303
7304@item
96a2c332
SS
7305String constants are a sequence of character constants surrounded by
7306double quotes (@code{"}). Any valid character constant (as described
7307above) may appear. Double quotes within the string must be preceded by
7308a backslash, so for instance @samp{"a\"b'c"} is a string of five
7309characters.
c906108c
SS
7310
7311@item
7312Pointer constants are an integral value. You can also write pointers
7313to constants using the C operator @samp{&}.
7314
7315@item
7316Array constants are comma-separated lists surrounded by braces @samp{@{}
7317and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
7318integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
7319and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
7320@end itemize
7321
c906108c 7322@menu
5d161b24
DB
7323* C plus plus expressions::
7324* C Defaults::
7325* C Checks::
c906108c 7326
5d161b24 7327* Debugging C::
c906108c
SS
7328@end menu
7329
6d2ebf8b 7330@node C plus plus expressions
b37052ae
EZ
7331@subsubsection C@t{++} expressions
7332
7333@cindex expressions in C@t{++}
7334@value{GDBN} expression handling can interpret most C@t{++} expressions.
7335
7336@cindex C@t{++} support, not in @sc{coff}
7337@cindex @sc{coff} versus C@t{++}
7338@cindex C@t{++} and object formats
7339@cindex object formats and C@t{++}
7340@cindex a.out and C@t{++}
7341@cindex @sc{ecoff} and C@t{++}
7342@cindex @sc{xcoff} and C@t{++}
7343@cindex @sc{elf}/stabs and C@t{++}
7344@cindex @sc{elf}/@sc{dwarf} and C@t{++}
c906108c
SS
7345@c FIXME!! GDB may eventually be able to debug C++ using DWARF; check
7346@c periodically whether this has happened...
7347@quotation
b37052ae
EZ
7348@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use the
7349proper compiler. Typically, C@t{++} debugging depends on the use of
c906108c
SS
7350additional debugging information in the symbol table, and thus requires
7351special support. In particular, if your compiler generates a.out, MIPS
7352@sc{ecoff}, RS/6000 @sc{xcoff}, or @sc{elf} with stabs extensions to the
7353symbol table, these facilities are all available. (With @sc{gnu} CC,
7354you can use the @samp{-gstabs} option to request stabs debugging
7355extensions explicitly.) Where the object code format is standard
b37052ae 7356@sc{coff} or @sc{dwarf} in @sc{elf}, on the other hand, most of the C@t{++}
c906108c
SS
7357support in @value{GDBN} does @emph{not} work.
7358@end quotation
c906108c
SS
7359
7360@enumerate
7361
7362@cindex member functions
7363@item
7364Member function calls are allowed; you can use expressions like
7365
7366@example
7367count = aml->GetOriginal(x, y)
7368@end example
7369
41afff9a 7370@vindex this@r{, inside C@t{++} member functions}
b37052ae 7371@cindex namespace in C@t{++}
c906108c
SS
7372@item
7373While a member function is active (in the selected stack frame), your
7374expressions have the same namespace available as the member function;
7375that is, @value{GDBN} allows implicit references to the class instance
b37052ae 7376pointer @code{this} following the same rules as C@t{++}.
c906108c 7377
c906108c 7378@cindex call overloaded functions
d4f3574e 7379@cindex overloaded functions, calling
b37052ae 7380@cindex type conversions in C@t{++}
c906108c
SS
7381@item
7382You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 7383call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
7384perform overload resolution involving user-defined type conversions,
7385calls to constructors, or instantiations of templates that do not exist
7386in the program. It also cannot handle ellipsis argument lists or
7387default arguments.
7388
7389It does perform integral conversions and promotions, floating-point
7390promotions, arithmetic conversions, pointer conversions, conversions of
7391class objects to base classes, and standard conversions such as those of
7392functions or arrays to pointers; it requires an exact match on the
7393number of function arguments.
7394
7395Overload resolution is always performed, unless you have specified
7396@code{set overload-resolution off}. @xref{Debugging C plus plus,
b37052ae 7397,@value{GDBN} features for C@t{++}}.
c906108c 7398
d4f3574e 7399You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
7400explicit function signature to call an overloaded function, as in
7401@smallexample
7402p 'foo(char,int)'('x', 13)
7403@end smallexample
d4f3574e 7404
c906108c 7405The @value{GDBN} command-completion facility can simplify this;
d4f3574e 7406see @ref{Completion, ,Command completion}.
c906108c 7407
c906108c
SS
7408@cindex reference declarations
7409@item
b37052ae
EZ
7410@value{GDBN} understands variables declared as C@t{++} references; you can use
7411them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
7412dereferenced.
7413
7414In the parameter list shown when @value{GDBN} displays a frame, the values of
7415reference variables are not displayed (unlike other variables); this
7416avoids clutter, since references are often used for large structures.
7417The @emph{address} of a reference variable is always shown, unless
7418you have specified @samp{set print address off}.
7419
7420@item
b37052ae 7421@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
7422expressions can use it just as expressions in your program do. Since
7423one scope may be defined in another, you can use @code{::} repeatedly if
7424necessary, for example in an expression like
7425@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 7426resolving name scope by reference to source files, in both C and C@t{++}
c906108c
SS
7427debugging (@pxref{Variables, ,Program variables}).
7428@end enumerate
7429
b37052ae 7430In addition, when used with HP's C@t{++} compiler, @value{GDBN} supports
53a5351d
JM
7431calling virtual functions correctly, printing out virtual bases of
7432objects, calling functions in a base subobject, casting objects, and
7433invoking user-defined operators.
c906108c 7434
6d2ebf8b 7435@node C Defaults
b37052ae 7436@subsubsection C and C@t{++} defaults
7a292a7a 7437
b37052ae 7438@cindex C and C@t{++} defaults
c906108c 7439
c906108c
SS
7440If you allow @value{GDBN} to set type and range checking automatically, they
7441both default to @code{off} whenever the working language changes to
b37052ae 7442C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 7443selects the working language.
c906108c
SS
7444
7445If you allow @value{GDBN} to set the language automatically, it
7446recognizes source files whose names end with @file{.c}, @file{.C}, or
7447@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
b37052ae 7448these files, it sets the working language to C or C@t{++}.
c906108c
SS
7449@xref{Automatically, ,Having @value{GDBN} infer the source language},
7450for further details.
7451
c906108c
SS
7452@c Type checking is (a) primarily motivated by Modula-2, and (b)
7453@c unimplemented. If (b) changes, it might make sense to let this node
7454@c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7a292a7a 7455
6d2ebf8b 7456@node C Checks
b37052ae 7457@subsubsection C and C@t{++} type and range checks
7a292a7a 7458
b37052ae 7459@cindex C and C@t{++} checks
c906108c 7460
b37052ae 7461By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
c906108c
SS
7462is not used. However, if you turn type checking on, @value{GDBN}
7463considers two variables type equivalent if:
7464
7465@itemize @bullet
7466@item
7467The two variables are structured and have the same structure, union, or
7468enumerated tag.
7469
7470@item
7471The two variables have the same type name, or types that have been
7472declared equivalent through @code{typedef}.
7473
7474@ignore
7475@c leaving this out because neither J Gilmore nor R Pesch understand it.
7476@c FIXME--beers?
7477@item
7478The two @code{struct}, @code{union}, or @code{enum} variables are
7479declared in the same declaration. (Note: this may not be true for all C
7480compilers.)
7481@end ignore
7482@end itemize
7483
7484Range checking, if turned on, is done on mathematical operations. Array
7485indices are not checked, since they are often used to index a pointer
7486that is not itself an array.
c906108c 7487
6d2ebf8b 7488@node Debugging C
c906108c 7489@subsubsection @value{GDBN} and C
c906108c
SS
7490
7491The @code{set print union} and @code{show print union} commands apply to
7492the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
7493inside a @code{struct} or @code{class} is also printed. Otherwise, it
7494appears as @samp{@{...@}}.
c906108c
SS
7495
7496The @code{@@} operator aids in the debugging of dynamic arrays, formed
7497with pointers and a memory allocation function. @xref{Expressions,
7498,Expressions}.
7499
c906108c 7500@menu
5d161b24 7501* Debugging C plus plus::
c906108c
SS
7502@end menu
7503
6d2ebf8b 7504@node Debugging C plus plus
b37052ae 7505@subsubsection @value{GDBN} features for C@t{++}
c906108c 7506
b37052ae 7507@cindex commands for C@t{++}
7a292a7a 7508
b37052ae
EZ
7509Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
7510designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
7511
7512@table @code
7513@cindex break in overloaded functions
7514@item @r{breakpoint menus}
7515When you want a breakpoint in a function whose name is overloaded,
7516@value{GDBN} breakpoint menus help you specify which function definition
7517you want. @xref{Breakpoint Menus,,Breakpoint menus}.
7518
b37052ae 7519@cindex overloading in C@t{++}
c906108c
SS
7520@item rbreak @var{regex}
7521Setting breakpoints using regular expressions is helpful for setting
7522breakpoints on overloaded functions that are not members of any special
7523classes.
7524@xref{Set Breaks, ,Setting breakpoints}.
7525
b37052ae 7526@cindex C@t{++} exception handling
c906108c
SS
7527@item catch throw
7528@itemx catch catch
b37052ae 7529Debug C@t{++} exception handling using these commands. @xref{Set
c906108c
SS
7530Catchpoints, , Setting catchpoints}.
7531
7532@cindex inheritance
7533@item ptype @var{typename}
7534Print inheritance relationships as well as other information for type
7535@var{typename}.
7536@xref{Symbols, ,Examining the Symbol Table}.
7537
b37052ae 7538@cindex C@t{++} symbol display
c906108c
SS
7539@item set print demangle
7540@itemx show print demangle
7541@itemx set print asm-demangle
7542@itemx show print asm-demangle
b37052ae
EZ
7543Control whether C@t{++} symbols display in their source form, both when
7544displaying code as C@t{++} source and when displaying disassemblies.
c906108c
SS
7545@xref{Print Settings, ,Print settings}.
7546
7547@item set print object
7548@itemx show print object
7549Choose whether to print derived (actual) or declared types of objects.
7550@xref{Print Settings, ,Print settings}.
7551
7552@item set print vtbl
7553@itemx show print vtbl
7554Control the format for printing virtual function tables.
7555@xref{Print Settings, ,Print settings}.
c906108c 7556(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 7557ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
7558
7559@kindex set overload-resolution
d4f3574e 7560@cindex overloaded functions, overload resolution
c906108c 7561@item set overload-resolution on
b37052ae 7562Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
7563is on. For overloaded functions, @value{GDBN} evaluates the arguments
7564and searches for a function whose signature matches the argument types,
b37052ae 7565using the standard C@t{++} conversion rules (see @ref{C plus plus expressions, ,C@t{++}
d4f3574e 7566expressions}, for details). If it cannot find a match, it emits a
c906108c
SS
7567message.
7568
7569@item set overload-resolution off
b37052ae 7570Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
7571overloaded functions that are not class member functions, @value{GDBN}
7572chooses the first function of the specified name that it finds in the
7573symbol table, whether or not its arguments are of the correct type. For
7574overloaded functions that are class member functions, @value{GDBN}
7575searches for a function whose signature @emph{exactly} matches the
7576argument types.
c906108c
SS
7577
7578@item @r{Overloaded symbol names}
7579You can specify a particular definition of an overloaded symbol, using
b37052ae 7580the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
7581@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
7582also use the @value{GDBN} command-line word completion facilities to list the
7583available choices, or to finish the type list for you.
7584@xref{Completion,, Command completion}, for details on how to do this.
7585@end table
c906108c 7586
6d2ebf8b 7587@node Modula-2
c906108c 7588@subsection Modula-2
7a292a7a 7589
d4f3574e 7590@cindex Modula-2, @value{GDBN} support
c906108c
SS
7591
7592The extensions made to @value{GDBN} to support Modula-2 only support
7593output from the @sc{gnu} Modula-2 compiler (which is currently being
7594developed). Other Modula-2 compilers are not currently supported, and
7595attempting to debug executables produced by them is most likely
7596to give an error as @value{GDBN} reads in the executable's symbol
7597table.
7598
7599@cindex expressions in Modula-2
7600@menu
7601* M2 Operators:: Built-in operators
7602* Built-In Func/Proc:: Built-in functions and procedures
7603* M2 Constants:: Modula-2 constants
7604* M2 Defaults:: Default settings for Modula-2
7605* Deviations:: Deviations from standard Modula-2
7606* M2 Checks:: Modula-2 type and range checks
7607* M2 Scope:: The scope operators @code{::} and @code{.}
7608* GDB/M2:: @value{GDBN} and Modula-2
7609@end menu
7610
6d2ebf8b 7611@node M2 Operators
c906108c
SS
7612@subsubsection Operators
7613@cindex Modula-2 operators
7614
7615Operators must be defined on values of specific types. For instance,
7616@code{+} is defined on numbers, but not on structures. Operators are
7617often defined on groups of types. For the purposes of Modula-2, the
7618following definitions hold:
7619
7620@itemize @bullet
7621
7622@item
7623@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
7624their subranges.
7625
7626@item
7627@emph{Character types} consist of @code{CHAR} and its subranges.
7628
7629@item
7630@emph{Floating-point types} consist of @code{REAL}.
7631
7632@item
7633@emph{Pointer types} consist of anything declared as @code{POINTER TO
7634@var{type}}.
7635
7636@item
7637@emph{Scalar types} consist of all of the above.
7638
7639@item
7640@emph{Set types} consist of @code{SET} and @code{BITSET} types.
7641
7642@item
7643@emph{Boolean types} consist of @code{BOOLEAN}.
7644@end itemize
7645
7646@noindent
7647The following operators are supported, and appear in order of
7648increasing precedence:
7649
7650@table @code
7651@item ,
7652Function argument or array index separator.
7653
7654@item :=
7655Assignment. The value of @var{var} @code{:=} @var{value} is
7656@var{value}.
7657
7658@item <@r{, }>
7659Less than, greater than on integral, floating-point, or enumerated
7660types.
7661
7662@item <=@r{, }>=
96a2c332 7663Less than or equal to, greater than or equal to
c906108c
SS
7664on integral, floating-point and enumerated types, or set inclusion on
7665set types. Same precedence as @code{<}.
7666
7667@item =@r{, }<>@r{, }#
7668Equality and two ways of expressing inequality, valid on scalar types.
7669Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
7670available for inequality, since @code{#} conflicts with the script
7671comment character.
7672
7673@item IN
7674Set membership. Defined on set types and the types of their members.
7675Same precedence as @code{<}.
7676
7677@item OR
7678Boolean disjunction. Defined on boolean types.
7679
7680@item AND@r{, }&
d4f3574e 7681Boolean conjunction. Defined on boolean types.
c906108c
SS
7682
7683@item @@
7684The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
7685
7686@item +@r{, }-
7687Addition and subtraction on integral and floating-point types, or union
7688and difference on set types.
7689
7690@item *
7691Multiplication on integral and floating-point types, or set intersection
7692on set types.
7693
7694@item /
7695Division on floating-point types, or symmetric set difference on set
7696types. Same precedence as @code{*}.
7697
7698@item DIV@r{, }MOD
7699Integer division and remainder. Defined on integral types. Same
7700precedence as @code{*}.
7701
7702@item -
7703Negative. Defined on @code{INTEGER} and @code{REAL} data.
7704
7705@item ^
7706Pointer dereferencing. Defined on pointer types.
7707
7708@item NOT
7709Boolean negation. Defined on boolean types. Same precedence as
7710@code{^}.
7711
7712@item .
7713@code{RECORD} field selector. Defined on @code{RECORD} data. Same
7714precedence as @code{^}.
7715
7716@item []
7717Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
7718
7719@item ()
7720Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
7721as @code{^}.
7722
7723@item ::@r{, }.
7724@value{GDBN} and Modula-2 scope operators.
7725@end table
7726
7727@quotation
7728@emph{Warning:} Sets and their operations are not yet supported, so @value{GDBN}
7729treats the use of the operator @code{IN}, or the use of operators
7730@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
7731@code{<=}, and @code{>=} on sets as an error.
7732@end quotation
7733
cb51c4e0 7734
6d2ebf8b 7735@node Built-In Func/Proc
c906108c 7736@subsubsection Built-in functions and procedures
cb51c4e0 7737@cindex Modula-2 built-ins
c906108c
SS
7738
7739Modula-2 also makes available several built-in procedures and functions.
7740In describing these, the following metavariables are used:
7741
7742@table @var
7743
7744@item a
7745represents an @code{ARRAY} variable.
7746
7747@item c
7748represents a @code{CHAR} constant or variable.
7749
7750@item i
7751represents a variable or constant of integral type.
7752
7753@item m
7754represents an identifier that belongs to a set. Generally used in the
7755same function with the metavariable @var{s}. The type of @var{s} should
7756be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
7757
7758@item n
7759represents a variable or constant of integral or floating-point type.
7760
7761@item r
7762represents a variable or constant of floating-point type.
7763
7764@item t
7765represents a type.
7766
7767@item v
7768represents a variable.
7769
7770@item x
7771represents a variable or constant of one of many types. See the
7772explanation of the function for details.
7773@end table
7774
7775All Modula-2 built-in procedures also return a result, described below.
7776
7777@table @code
7778@item ABS(@var{n})
7779Returns the absolute value of @var{n}.
7780
7781@item CAP(@var{c})
7782If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 7783equivalent, otherwise it returns its argument.
c906108c
SS
7784
7785@item CHR(@var{i})
7786Returns the character whose ordinal value is @var{i}.
7787
7788@item DEC(@var{v})
c3f6f71d 7789Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
7790
7791@item DEC(@var{v},@var{i})
7792Decrements the value in the variable @var{v} by @var{i}. Returns the
7793new value.
7794
7795@item EXCL(@var{m},@var{s})
7796Removes the element @var{m} from the set @var{s}. Returns the new
7797set.
7798
7799@item FLOAT(@var{i})
7800Returns the floating point equivalent of the integer @var{i}.
7801
7802@item HIGH(@var{a})
7803Returns the index of the last member of @var{a}.
7804
7805@item INC(@var{v})
c3f6f71d 7806Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
7807
7808@item INC(@var{v},@var{i})
7809Increments the value in the variable @var{v} by @var{i}. Returns the
7810new value.
7811
7812@item INCL(@var{m},@var{s})
7813Adds the element @var{m} to the set @var{s} if it is not already
7814there. Returns the new set.
7815
7816@item MAX(@var{t})
7817Returns the maximum value of the type @var{t}.
7818
7819@item MIN(@var{t})
7820Returns the minimum value of the type @var{t}.
7821
7822@item ODD(@var{i})
7823Returns boolean TRUE if @var{i} is an odd number.
7824
7825@item ORD(@var{x})
7826Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
7827value of a character is its @sc{ascii} value (on machines supporting the
7828@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
7829integral, character and enumerated types.
7830
7831@item SIZE(@var{x})
7832Returns the size of its argument. @var{x} can be a variable or a type.
7833
7834@item TRUNC(@var{r})
7835Returns the integral part of @var{r}.
7836
7837@item VAL(@var{t},@var{i})
7838Returns the member of the type @var{t} whose ordinal value is @var{i}.
7839@end table
7840
7841@quotation
7842@emph{Warning:} Sets and their operations are not yet supported, so
7843@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
7844an error.
7845@end quotation
7846
7847@cindex Modula-2 constants
6d2ebf8b 7848@node M2 Constants
c906108c
SS
7849@subsubsection Constants
7850
7851@value{GDBN} allows you to express the constants of Modula-2 in the following
7852ways:
7853
7854@itemize @bullet
7855
7856@item
7857Integer constants are simply a sequence of digits. When used in an
7858expression, a constant is interpreted to be type-compatible with the
7859rest of the expression. Hexadecimal integers are specified by a
7860trailing @samp{H}, and octal integers by a trailing @samp{B}.
7861
7862@item
7863Floating point constants appear as a sequence of digits, followed by a
7864decimal point and another sequence of digits. An optional exponent can
7865then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
7866@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
7867digits of the floating point constant must be valid decimal (base 10)
7868digits.
7869
7870@item
7871Character constants consist of a single character enclosed by a pair of
7872like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 7873also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
7874followed by a @samp{C}.
7875
7876@item
7877String constants consist of a sequence of characters enclosed by a
7878pair of like quotes, either single (@code{'}) or double (@code{"}).
7879Escape sequences in the style of C are also allowed. @xref{C
b37052ae 7880Constants, ,C and C@t{++} constants}, for a brief explanation of escape
c906108c
SS
7881sequences.
7882
7883@item
7884Enumerated constants consist of an enumerated identifier.
7885
7886@item
7887Boolean constants consist of the identifiers @code{TRUE} and
7888@code{FALSE}.
7889
7890@item
7891Pointer constants consist of integral values only.
7892
7893@item
7894Set constants are not yet supported.
7895@end itemize
7896
6d2ebf8b 7897@node M2 Defaults
c906108c
SS
7898@subsubsection Modula-2 defaults
7899@cindex Modula-2 defaults
7900
7901If type and range checking are set automatically by @value{GDBN}, they
7902both default to @code{on} whenever the working language changes to
d4f3574e 7903Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
7904selected the working language.
7905
7906If you allow @value{GDBN} to set the language automatically, then entering
7907code compiled from a file whose name ends with @file{.mod} sets the
d4f3574e 7908working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} set
c906108c
SS
7909the language automatically}, for further details.
7910
6d2ebf8b 7911@node Deviations
c906108c
SS
7912@subsubsection Deviations from standard Modula-2
7913@cindex Modula-2, deviations from
7914
7915A few changes have been made to make Modula-2 programs easier to debug.
7916This is done primarily via loosening its type strictness:
7917
7918@itemize @bullet
7919@item
7920Unlike in standard Modula-2, pointer constants can be formed by
7921integers. This allows you to modify pointer variables during
7922debugging. (In standard Modula-2, the actual address contained in a
7923pointer variable is hidden from you; it can only be modified
7924through direct assignment to another pointer variable or expression that
7925returned a pointer.)
7926
7927@item
7928C escape sequences can be used in strings and characters to represent
7929non-printable characters. @value{GDBN} prints out strings with these
7930escape sequences embedded. Single non-printable characters are
7931printed using the @samp{CHR(@var{nnn})} format.
7932
7933@item
7934The assignment operator (@code{:=}) returns the value of its right-hand
7935argument.
7936
7937@item
7938All built-in procedures both modify @emph{and} return their argument.
7939@end itemize
7940
6d2ebf8b 7941@node M2 Checks
c906108c
SS
7942@subsubsection Modula-2 type and range checks
7943@cindex Modula-2 checks
7944
7945@quotation
7946@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
7947range checking.
7948@end quotation
7949@c FIXME remove warning when type/range checks added
7950
7951@value{GDBN} considers two Modula-2 variables type equivalent if:
7952
7953@itemize @bullet
7954@item
7955They are of types that have been declared equivalent via a @code{TYPE
7956@var{t1} = @var{t2}} statement
7957
7958@item
7959They have been declared on the same line. (Note: This is true of the
7960@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
7961@end itemize
7962
7963As long as type checking is enabled, any attempt to combine variables
7964whose types are not equivalent is an error.
7965
7966Range checking is done on all mathematical operations, assignment, array
7967index bounds, and all built-in functions and procedures.
7968
6d2ebf8b 7969@node M2 Scope
c906108c
SS
7970@subsubsection The scope operators @code{::} and @code{.}
7971@cindex scope
41afff9a 7972@cindex @code{.}, Modula-2 scope operator
c906108c
SS
7973@cindex colon, doubled as scope operator
7974@ifinfo
41afff9a 7975@vindex colon-colon@r{, in Modula-2}
c906108c
SS
7976@c Info cannot handle :: but TeX can.
7977@end ifinfo
7978@iftex
41afff9a 7979@vindex ::@r{, in Modula-2}
c906108c
SS
7980@end iftex
7981
7982There are a few subtle differences between the Modula-2 scope operator
7983(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
7984similar syntax:
7985
7986@example
7987
7988@var{module} . @var{id}
7989@var{scope} :: @var{id}
7990@end example
7991
7992@noindent
7993where @var{scope} is the name of a module or a procedure,
7994@var{module} the name of a module, and @var{id} is any declared
7995identifier within your program, except another module.
7996
7997Using the @code{::} operator makes @value{GDBN} search the scope
7998specified by @var{scope} for the identifier @var{id}. If it is not
7999found in the specified scope, then @value{GDBN} searches all scopes
8000enclosing the one specified by @var{scope}.
8001
8002Using the @code{.} operator makes @value{GDBN} search the current scope for
8003the identifier specified by @var{id} that was imported from the
8004definition module specified by @var{module}. With this operator, it is
8005an error if the identifier @var{id} was not imported from definition
8006module @var{module}, or if @var{id} is not an identifier in
8007@var{module}.
8008
6d2ebf8b 8009@node GDB/M2
c906108c
SS
8010@subsubsection @value{GDBN} and Modula-2
8011
8012Some @value{GDBN} commands have little use when debugging Modula-2 programs.
8013Five subcommands of @code{set print} and @code{show print} apply
b37052ae 8014specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 8015@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 8016apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
8017analogue in Modula-2.
8018
8019The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 8020with any language, is not useful with Modula-2. Its
c906108c 8021intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 8022created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 8023address can be specified by an integral constant, the construct
d4f3574e 8024@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
8025
8026@cindex @code{#} in Modula-2
8027In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
8028interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 8029
6d2ebf8b 8030@node Chill
cce74817
JM
8031@subsection Chill
8032
8033The extensions made to @value{GDBN} to support Chill only support output
d4f3574e 8034from the @sc{gnu} Chill compiler. Other Chill compilers are not currently
cce74817
JM
8035supported, and attempting to debug executables produced by them is most
8036likely to give an error as @value{GDBN} reads in the executable's symbol
8037table.
8038
d4f3574e
SS
8039@c This used to say "... following Chill related topics ...", but since
8040@c menus are not shown in the printed manual, it would look awkward.
8041This section covers the Chill related topics and the features
cce74817
JM
8042of @value{GDBN} which support these topics.
8043
8044@menu
104c1213
JM
8045* How modes are displayed:: How modes are displayed
8046* Locations:: Locations and their accesses
cce74817 8047* Values and their Operations:: Values and their Operations
5d161b24 8048* Chill type and range checks::
53a5351d 8049* Chill defaults::
cce74817
JM
8050@end menu
8051
6d2ebf8b 8052@node How modes are displayed
cce74817
JM
8053@subsubsection How modes are displayed
8054
8055The Chill Datatype- (Mode) support of @value{GDBN} is directly related
d4f3574e 8056with the functionality of the @sc{gnu} Chill compiler, and therefore deviates
cce74817
JM
8057slightly from the standard specification of the Chill language. The
8058provided modes are:
d4f3574e
SS
8059
8060@c FIXME: this @table's contents effectively disable @code by using @r
8061@c on every @item. So why does it need @code?
cce74817
JM
8062@table @code
8063@item @r{@emph{Discrete modes:}}
8064@itemize @bullet
8065@item
8066@emph{Integer Modes} which are predefined by @code{BYTE, UBYTE, INT,
8067UINT, LONG, ULONG},
8068@item
5d161b24 8069@emph{Boolean Mode} which is predefined by @code{BOOL},
cce74817 8070@item
5d161b24 8071@emph{Character Mode} which is predefined by @code{CHAR},
cce74817
JM
8072@item
8073@emph{Set Mode} which is displayed by the keyword @code{SET}.
8074@smallexample
8075(@value{GDBP}) ptype x
8076type = SET (karli = 10, susi = 20, fritzi = 100)
8077@end smallexample
8078If the type is an unnumbered set the set element values are omitted.
8079@item
6d2ebf8b
SS
8080@emph{Range Mode} which is displayed by
8081@smallexample
8082@code{type = <basemode>(<lower bound> : <upper bound>)}
8083@end smallexample
8084where @code{<lower bound>, <upper bound>} can be of any discrete literal
8085expression (e.g. set element names).
cce74817
JM
8086@end itemize
8087
8088@item @r{@emph{Powerset Mode:}}
8089A Powerset Mode is displayed by the keyword @code{POWERSET} followed by
d4f3574e 8090the member mode of the powerset. The member mode can be any discrete mode.
cce74817
JM
8091@smallexample
8092(@value{GDBP}) ptype x
8093type = POWERSET SET (egon, hugo, otto)
8094@end smallexample
8095
8096@item @r{@emph{Reference Modes:}}
8097@itemize @bullet
8098@item
d4f3574e 8099@emph{Bound Reference Mode} which is displayed by the keyword @code{REF}
cce74817
JM
8100followed by the mode name to which the reference is bound.
8101@item
8102@emph{Free Reference Mode} which is displayed by the keyword @code{PTR}.
8103@end itemize
8104
8105@item @r{@emph{Procedure mode}}
8106The procedure mode is displayed by @code{type = PROC(<parameter list>)
8107<return mode> EXCEPTIONS (<exception list>)}. The @code{<parameter
d4f3574e
SS
8108list>} is a list of the parameter modes. @code{<return mode>} indicates
8109the mode of the result of the procedure if any. The exceptionlist lists
cce74817
JM
8110all possible exceptions which can be raised by the procedure.
8111
8112@ignore
8113@item @r{@emph{Instance mode}}
8114The instance mode is represented by a structure, which has a static
5d161b24 8115type, and is therefore not really of interest.
cce74817
JM
8116@end ignore
8117
5d161b24 8118@item @r{@emph{Synchronization Modes:}}
cce74817
JM
8119@itemize @bullet
8120@item
6d2ebf8b
SS
8121@emph{Event Mode} which is displayed by
8122@smallexample
8123@code{EVENT (<event length>)}
8124@end smallexample
cce74817
JM
8125where @code{(<event length>)} is optional.
8126@item
6d2ebf8b
SS
8127@emph{Buffer Mode} which is displayed by
8128@smallexample
8129@code{BUFFER (<buffer length>)<buffer element mode>}
8130@end smallexample
8131where @code{(<buffer length>)} is optional.
cce74817
JM
8132@end itemize
8133
5d161b24 8134@item @r{@emph{Timing Modes:}}
cce74817
JM
8135@itemize @bullet
8136@item
8137@emph{Duration Mode} which is predefined by @code{DURATION}
8138@item
8139@emph{Absolute Time Mode} which is predefined by @code{TIME}
8140@end itemize
8141
8142@item @r{@emph{Real Modes:}}
8143Real Modes are predefined with @code{REAL} and @code{LONG_REAL}.
8144
8145@item @r{@emph{String Modes:}}
8146@itemize @bullet
8147@item
6d2ebf8b
SS
8148@emph{Character String Mode} which is displayed by
8149@smallexample
8150@code{CHARS(<string length>)}
8151@end smallexample
8152followed by the keyword @code{VARYING} if the String Mode is a varying
8153mode
cce74817 8154@item
6d2ebf8b
SS
8155@emph{Bit String Mode} which is displayed by
8156@smallexample
8157@code{BOOLS(<string
8158length>)}
8159@end smallexample
cce74817
JM
8160@end itemize
8161
8162@item @r{@emph{Array Mode:}}
8163The Array Mode is displayed by the keyword @code{ARRAY(<range>)}
8164followed by the element mode (which may in turn be an array mode).
8165@smallexample
8166(@value{GDBP}) ptype x
5d161b24
DB
8167type = ARRAY (1:42)
8168 ARRAY (1:20)
cce74817
JM
8169 SET (karli = 10, susi = 20, fritzi = 100)
8170@end smallexample
8171
5d161b24 8172@item @r{@emph{Structure Mode}}
cce74817 8173The Structure mode is displayed by the keyword @code{STRUCT(<field
d4f3574e
SS
8174list>)}. The @code{<field list>} consists of names and modes of fields
8175of the structure. Variant structures have the keyword @code{CASE <field>
8176OF <variant fields> ESAC} in their field list. Since the current version
cce74817
JM
8177of the GNU Chill compiler doesn't implement tag processing (no runtime
8178checks of variant fields, and therefore no debugging info), the output
8179always displays all variant fields.
8180@smallexample
8181(@value{GDBP}) ptype str
8182type = STRUCT (
8183 as x,
8184 bs x,
8185 CASE bs OF
8186 (karli):
8187 cs a
8188 (ott):
8189 ds x
8190 ESAC
8191)
8192@end smallexample
8193@end table
8194
6d2ebf8b 8195@node Locations
cce74817
JM
8196@subsubsection Locations and their accesses
8197
8198A location in Chill is an object which can contain values.
8199
8200A value of a location is generally accessed by the (declared) name of
d4f3574e
SS
8201the location. The output conforms to the specification of values in
8202Chill programs. How values are specified
8203is the topic of the next section, @ref{Values and their Operations}.
cce74817
JM
8204
8205The pseudo-location @code{RESULT} (or @code{result}) can be used to
8206display or change the result of a currently-active procedure:
d4f3574e 8207
cce74817
JM
8208@smallexample
8209set result := EXPR
8210@end smallexample
d4f3574e
SS
8211
8212@noindent
8213This does the same as the Chill action @code{RESULT EXPR} (which
c3f6f71d 8214is not available in @value{GDBN}).
cce74817
JM
8215
8216Values of reference mode locations are printed by @code{PTR(<hex
8217value>)} in case of a free reference mode, and by @code{(REF <reference
d4f3574e 8218mode>) (<hex-value>)} in case of a bound reference. @code{<hex value>}
cce74817
JM
8219represents the address where the reference points to. To access the
8220value of the location referenced by the pointer, use the dereference
d4f3574e 8221operator @samp{->}.
cce74817 8222
6d2ebf8b
SS
8223Values of procedure mode locations are displayed by
8224@smallexample
8225@code{@{ PROC
cce74817 8226(<argument modes> ) <return mode> @} <address> <name of procedure
6d2ebf8b
SS
8227location>}
8228@end smallexample
8229@code{<argument modes>} is a list of modes according to the parameter
8230specification of the procedure and @code{<address>} shows the address of
8231the entry point.
cce74817
JM
8232
8233@ignore
8234Locations of instance modes are displayed just like a structure with two
8235fields specifying the @emph{process type} and the @emph{copy number} of
8236the investigated instance location@footnote{This comes from the current
d4f3574e
SS
8237implementation of instances. They are implemented as a structure (no
8238na). The output should be something like @code{[<name of the process>;
8239<instance number>]}.}. The field names are @code{__proc_type} and
cce74817
JM
8240@code{__proc_copy}.
8241
8242Locations of synchronization modes are displayed like a structure with
8243the field name @code{__event_data} in case of a event mode location, and
8244like a structure with the field @code{__buffer_data} in case of a buffer
8245mode location (refer to previous paragraph).
8246
8247Structure Mode locations are printed by @code{[.<field name>: <value>,
d4f3574e 8248...]}. The @code{<field name>} corresponds to the structure mode
cce74817 8249definition and the layout of @code{<value>} varies depending of the mode
d4f3574e
SS
8250of the field. If the investigated structure mode location is of variant
8251structure mode, the variant parts of the structure are enclosed in curled
8252braces (@samp{@{@}}). Fields enclosed by @samp{@{,@}} are residing
cce74817 8253on the same memory location and represent the current values of the
d4f3574e 8254memory location in their specific modes. Since no tag processing is done
cce74817 8255all variants are displayed. A variant field is printed by
d4f3574e 8256@code{(<variant name>) = .<field name>: <value>}. (who implements the
cce74817
JM
8257stuff ???)
8258@smallexample
8259(@value{GDBP}) print str1 $4 = [.as: 0, .bs: karli, .<TAG>: { (karli) =
8260[.cs: []], (susi) = [.ds: susi]}]
8261@end smallexample
8262@end ignore
8263
8264Substructures of string mode-, array mode- or structure mode-values
8265(e.g. array slices, fields of structure locations) are accessed using
d4f3574e
SS
8266certain operations which are described in the next section, @ref{Values
8267and their Operations}.
cce74817
JM
8268
8269A location value may be interpreted as having a different mode using the
d4f3574e
SS
8270location conversion. This mode conversion is written as @code{<mode
8271name>(<location>)}. The user has to consider that the sizes of the modes
8272have to be equal otherwise an error occurs. Furthermore, no range
8273checking of the location against the destination mode is performed, and
cce74817 8274therefore the result can be quite confusing.
d4f3574e 8275
cce74817
JM
8276@smallexample
8277(@value{GDBP}) print int (s(3 up 4)) XXX TO be filled in !! XXX
8278@end smallexample
8279
6d2ebf8b 8280@node Values and their Operations
cce74817
JM
8281@subsubsection Values and their Operations
8282
8283Values are used to alter locations, to investigate complex structures in
8284more detail or to filter relevant information out of a large amount of
d4f3574e
SS
8285data. There are several (mode dependent) operations defined which enable
8286such investigations. These operations are not only applicable to
cce74817 8287constant values but also to locations, which can become quite useful
d4f3574e 8288when debugging complex structures. During parsing the command line
cce74817
JM
8289(e.g. evaluating an expression) @value{GDBN} treats location names as
8290the values behind these locations.
8291
d4f3574e 8292This section describes how values have to be specified and which
cce74817
JM
8293operations are legal to be used with such values.
8294
8295@table @code
8296@item Literal Values
d4f3574e
SS
8297Literal values are specified in the same manner as in @sc{gnu} Chill programs.
8298For detailed specification refer to the @sc{gnu} Chill implementation Manual
cce74817 8299chapter 1.5.
d4f3574e
SS
8300@c FIXME: if the Chill Manual is a Texinfo documents, the above should
8301@c be converted to a @ref.
cce74817 8302
5d161b24 8303@ignore
cce74817
JM
8304@itemize @bullet
8305@item
8306@emph{Integer Literals} are specified in the same manner as in Chill
d4f3574e 8307programs (refer to the Chill Standard z200/88 chpt 5.2.4.2)
cce74817
JM
8308@item
8309@emph{Boolean Literals} are defined by @code{TRUE} and @code{FALSE}.
8310@item
8311@emph{Character Literals} are defined by @code{'<character>'}. (e.g.
8312@code{'M'})
8313@item
8314@emph{Set Literals} are defined by a name which was specified in a set
d4f3574e 8315mode. The value delivered by a Set Literal is the set value. This is
b37052ae 8316comparable to an enumeration in C/C@t{++} language.
cce74817 8317@item
d4f3574e 8318@emph{Emptiness Literal} is predefined by @code{NULL}. The value of the
cce74817 8319emptiness literal delivers either the empty reference value, the empty
5d161b24 8320procedure value or the empty instance value.
cce74817
JM
8321
8322@item
8323@emph{Character String Literals} are defined by a sequence of characters
d4f3574e 8324enclosed in single- or double quotes. If a single- or double quote has
cce74817
JM
8325to be part of the string literal it has to be stuffed (specified twice).
8326@item
8327@emph{Bitstring Literals} are specified in the same manner as in Chill
8328programs (refer z200/88 chpt 5.2.4.8).
8329@item
8330@emph{Floating point literals} are specified in the same manner as in
d4f3574e 8331(gnu-)Chill programs (refer @sc{gnu} Chill implementation Manual chapter 1.5).
cce74817
JM
8332@end itemize
8333@end ignore
8334
8335@item Tuple Values
8336A tuple is specified by @code{<mode name>[<tuple>]}, where @code{<mode
d4f3574e 8337name>} can be omitted if the mode of the tuple is unambiguous. This
cce74817
JM
8338unambiguity is derived from the context of a evaluated expression.
8339@code{<tuple>} can be one of the following:
d4f3574e 8340
cce74817
JM
8341@itemize @bullet
8342@item @emph{Powerset Tuple}
8343@item @emph{Array Tuple}
8344@item @emph{Structure Tuple}
8345Powerset tuples, array tuples and structure tuples are specified in the
d4f3574e 8346same manner as in Chill programs refer to z200/88 chpt 5.2.5.
cce74817
JM
8347@end itemize
8348
8349@item String Element Value
6d2ebf8b
SS
8350A string element value is specified by
8351@smallexample
8352@code{<string value>(<index>)}
8353@end smallexample
d4f3574e 8354where @code{<index>} is a integer expression. It delivers a character
cce74817
JM
8355value which is equivalent to the character indexed by @code{<index>} in
8356the string.
8357
8358@item String Slice Value
8359A string slice value is specified by @code{<string value>(<slice
8360spec>)}, where @code{<slice spec>} can be either a range of integer
8361expressions or specified by @code{<start expr> up <size>}.
8362@code{<size>} denotes the number of elements which the slice contains.
8363The delivered value is a string value, which is part of the specified
8364string.
8365
8366@item Array Element Values
8367An array element value is specified by @code{<array value>(<expr>)} and
8368delivers a array element value of the mode of the specified array.
8369
8370@item Array Slice Values
8371An array slice is specified by @code{<array value>(<slice spec>)}, where
8372@code{<slice spec>} can be either a range specified by expressions or by
d4f3574e
SS
8373@code{<start expr> up <size>}. @code{<size>} denotes the number of
8374arrayelements the slice contains. The delivered value is an array value
cce74817
JM
8375which is part of the specified array.
8376
8377@item Structure Field Values
8378A structure field value is derived by @code{<structure value>.<field
d4f3574e
SS
8379name>}, where @code{<field name>} indicates the name of a field specified
8380in the mode definition of the structure. The mode of the delivered value
cce74817
JM
8381corresponds to this mode definition in the structure definition.
8382
8383@item Procedure Call Value
8384The procedure call value is derived from the return value of the
8385procedure@footnote{If a procedure call is used for instance in an
8386expression, then this procedure is called with all its side
d4f3574e 8387effects. This can lead to confusing results if used carelessly.}.
cce74817 8388
d4f3574e 8389Values of duration mode locations are represented by @code{ULONG} literals.
cce74817 8390
6d2ebf8b
SS
8391Values of time mode locations appear as
8392@smallexample
8393@code{TIME(<secs>:<nsecs>)}
8394@end smallexample
8395
cce74817
JM
8396
8397@ignore
8398This is not implemented yet:
8399@item Built-in Value
8400@noindent
8401The following built in functions are provided:
d4f3574e 8402
cce74817
JM
8403@table @code
8404@item @code{ADDR()}
8405@item @code{NUM()}
8406@item @code{PRED()}
8407@item @code{SUCC()}
8408@item @code{ABS()}
8409@item @code{CARD()}
8410@item @code{MAX()}
8411@item @code{MIN()}
8412@item @code{SIZE()}
8413@item @code{UPPER()}
8414@item @code{LOWER()}
8415@item @code{LENGTH()}
8416@item @code{SIN()}
8417@item @code{COS()}
8418@item @code{TAN()}
8419@item @code{ARCSIN()}
8420@item @code{ARCCOS()}
8421@item @code{ARCTAN()}
8422@item @code{EXP()}
8423@item @code{LN()}
8424@item @code{LOG()}
8425@item @code{SQRT()}
8426@end table
8427
8428For a detailed description refer to the GNU Chill implementation manual
8429chapter 1.6.
8430@end ignore
8431
8432@item Zero-adic Operator Value
8433The zero-adic operator value is derived from the instance value for the
8434current active process.
8435
8436@item Expression Values
8437The value delivered by an expression is the result of the evaluation of
d4f3574e 8438the specified expression. If there are error conditions (mode
cce74817 8439incompatibility, etc.) the evaluation of expressions is aborted with a
d4f3574e 8440corresponding error message. Expressions may be parenthesised which
cce74817 8441causes the evaluation of this expression before any other expression
d4f3574e 8442which uses the result of the parenthesised expression. The following
cce74817 8443operators are supported by @value{GDBN}:
d4f3574e 8444
cce74817
JM
8445@table @code
8446@item @code{OR, ORIF, XOR}
d4f3574e
SS
8447@itemx @code{AND, ANDIF}
8448@itemx @code{NOT}
cce74817 8449Logical operators defined over operands of boolean mode.
d4f3574e 8450
cce74817
JM
8451@item @code{=, /=}
8452Equality and inequality operators defined over all modes.
d4f3574e 8453
cce74817 8454@item @code{>, >=}
d4f3574e 8455@itemx @code{<, <=}
cce74817 8456Relational operators defined over predefined modes.
d4f3574e 8457
cce74817 8458@item @code{+, -}
d4f3574e 8459@itemx @code{*, /, MOD, REM}
cce74817 8460Arithmetic operators defined over predefined modes.
d4f3574e 8461
cce74817
JM
8462@item @code{-}
8463Change sign operator.
d4f3574e 8464
cce74817
JM
8465@item @code{//}
8466String concatenation operator.
d4f3574e 8467
cce74817
JM
8468@item @code{()}
8469String repetition operator.
d4f3574e 8470
cce74817
JM
8471@item @code{->}
8472Referenced location operator which can be used either to take the
8473address of a location (@code{->loc}), or to dereference a reference
8474location (@code{loc->}).
d4f3574e 8475
cce74817 8476@item @code{OR, XOR}
d4f3574e
SS
8477@itemx @code{AND}
8478@itemx @code{NOT}
cce74817 8479Powerset and bitstring operators.
d4f3574e 8480
cce74817 8481@item @code{>, >=}
d4f3574e 8482@itemx @code{<, <=}
cce74817 8483Powerset inclusion operators.
d4f3574e 8484
cce74817
JM
8485@item @code{IN}
8486Membership operator.
8487@end table
8488@end table
8489
6d2ebf8b 8490@node Chill type and range checks
cce74817
JM
8491@subsubsection Chill type and range checks
8492
8493@value{GDBN} considers two Chill variables mode equivalent if the sizes
d4f3574e 8494of the two modes are equal. This rule applies recursively to more
cce74817 8495complex datatypes which means that complex modes are treated
d4f3574e 8496equivalent if all element modes (which also can be complex modes like
cce74817
JM
8497structures, arrays, etc.) have the same size.
8498
8499Range checking is done on all mathematical operations, assignment, array
8500index bounds and all built in procedures.
8501
8502Strong type checks are forced using the @value{GDBN} command @code{set
d4f3574e 8503check strong}. This enforces strong type and range checks on all
cce74817
JM
8504operations where Chill constructs are used (expressions, built in
8505functions, etc.) in respect to the semantics as defined in the z.200
8506language specification.
8507
cce74817
JM
8508All checks can be disabled by the @value{GDBN} command @code{set check
8509off}.
8510
5d161b24 8511@ignore
53a5351d 8512@c Deviations from the Chill Standard Z200/88
cce74817
JM
8513see last paragraph ?
8514@end ignore
8515
6d2ebf8b 8516@node Chill defaults
cce74817
JM
8517@subsubsection Chill defaults
8518
8519If type and range checking are set automatically by @value{GDBN}, they
8520both default to @code{on} whenever the working language changes to
d4f3574e 8521Chill. This happens regardless of whether you or @value{GDBN}
cce74817
JM
8522selected the working language.
8523
8524If you allow @value{GDBN} to set the language automatically, then entering
8525code compiled from a file whose name ends with @file{.ch} sets the
d4f3574e 8526working language to Chill. @xref{Automatically, ,Having @value{GDBN} set
cce74817
JM
8527the language automatically}, for further details.
8528
6d2ebf8b 8529@node Symbols
c906108c
SS
8530@chapter Examining the Symbol Table
8531
d4f3574e 8532The commands described in this chapter allow you to inquire about the
c906108c
SS
8533symbols (names of variables, functions and types) defined in your
8534program. This information is inherent in the text of your program and
8535does not change as your program executes. @value{GDBN} finds it in your
8536program's symbol table, in the file indicated when you started @value{GDBN}
8537(@pxref{File Options, ,Choosing files}), or by one of the
8538file-management commands (@pxref{Files, ,Commands to specify files}).
8539
8540@cindex symbol names
8541@cindex names of symbols
8542@cindex quoting names
8543Occasionally, you may need to refer to symbols that contain unusual
8544characters, which @value{GDBN} ordinarily treats as word delimiters. The
8545most frequent case is in referring to static variables in other
8546source files (@pxref{Variables,,Program variables}). File names
8547are recorded in object files as debugging symbols, but @value{GDBN} would
8548ordinarily parse a typical file name, like @file{foo.c}, as the three words
8549@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
8550@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
8551
8552@example
8553p 'foo.c'::x
8554@end example
8555
8556@noindent
8557looks up the value of @code{x} in the scope of the file @file{foo.c}.
8558
8559@table @code
8560@kindex info address
b37052ae 8561@cindex address of a symbol
c906108c
SS
8562@item info address @var{symbol}
8563Describe where the data for @var{symbol} is stored. For a register
8564variable, this says which register it is kept in. For a non-register
8565local variable, this prints the stack-frame offset at which the variable
8566is always stored.
8567
8568Note the contrast with @samp{print &@var{symbol}}, which does not work
8569at all for a register variable, and for a stack local variable prints
8570the exact address of the current instantiation of the variable.
8571
3d67e040 8572@kindex info symbol
b37052ae 8573@cindex symbol from address
3d67e040
EZ
8574@item info symbol @var{addr}
8575Print the name of a symbol which is stored at the address @var{addr}.
8576If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
8577nearest symbol and an offset from it:
8578
8579@example
8580(@value{GDBP}) info symbol 0x54320
8581_initialize_vx + 396 in section .text
8582@end example
8583
8584@noindent
8585This is the opposite of the @code{info address} command. You can use
8586it to find out the name of a variable or a function given its address.
8587
c906108c 8588@kindex whatis
d4f3574e
SS
8589@item whatis @var{expr}
8590Print the data type of expression @var{expr}. @var{expr} is not
c906108c
SS
8591actually evaluated, and any side-effecting operations (such as
8592assignments or function calls) inside it do not take place.
8593@xref{Expressions, ,Expressions}.
8594
8595@item whatis
8596Print the data type of @code{$}, the last value in the value history.
8597
8598@kindex ptype
8599@item ptype @var{typename}
8600Print a description of data type @var{typename}. @var{typename} may be
7a292a7a
SS
8601the name of a type, or for C code it may have the form @samp{class
8602@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
8603@var{union-tag}} or @samp{enum @var{enum-tag}}.
c906108c 8604
d4f3574e 8605@item ptype @var{expr}
c906108c 8606@itemx ptype
d4f3574e 8607Print a description of the type of expression @var{expr}. @code{ptype}
c906108c
SS
8608differs from @code{whatis} by printing a detailed description, instead
8609of just the name of the type.
8610
8611For example, for this variable declaration:
8612
8613@example
8614struct complex @{double real; double imag;@} v;
8615@end example
8616
8617@noindent
8618the two commands give this output:
8619
8620@example
8621@group
8622(@value{GDBP}) whatis v
8623type = struct complex
8624(@value{GDBP}) ptype v
8625type = struct complex @{
8626 double real;
8627 double imag;
8628@}
8629@end group
8630@end example
8631
8632@noindent
8633As with @code{whatis}, using @code{ptype} without an argument refers to
8634the type of @code{$}, the last value in the value history.
8635
8636@kindex info types
8637@item info types @var{regexp}
8638@itemx info types
d4f3574e 8639Print a brief description of all types whose names match @var{regexp}
c906108c
SS
8640(or all types in your program, if you supply no argument). Each
8641complete typename is matched as though it were a complete line; thus,
8642@samp{i type value} gives information on all types in your program whose
d4f3574e 8643names include the string @code{value}, but @samp{i type ^value$} gives
c906108c
SS
8644information only on types whose complete name is @code{value}.
8645
8646This command differs from @code{ptype} in two ways: first, like
8647@code{whatis}, it does not print a detailed description; second, it
8648lists all source files where a type is defined.
8649
b37052ae
EZ
8650@kindex info scope
8651@cindex local variables
8652@item info scope @var{addr}
8653List all the variables local to a particular scope. This command
8654accepts a location---a function name, a source line, or an address
8655preceded by a @samp{*}, and prints all the variables local to the
8656scope defined by that location. For example:
8657
8658@smallexample
8659(@value{GDBP}) @b{info scope command_line_handler}
8660Scope for command_line_handler:
8661Symbol rl is an argument at stack/frame offset 8, length 4.
8662Symbol linebuffer is in static storage at address 0x150a18, length 4.
8663Symbol linelength is in static storage at address 0x150a1c, length 4.
8664Symbol p is a local variable in register $esi, length 4.
8665Symbol p1 is a local variable in register $ebx, length 4.
8666Symbol nline is a local variable in register $edx, length 4.
8667Symbol repeat is a local variable at frame offset -8, length 4.
8668@end smallexample
8669
f5c37c66
EZ
8670@noindent
8671This command is especially useful for determining what data to collect
8672during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
8673collect}.
8674
c906108c
SS
8675@kindex info source
8676@item info source
8677Show the name of the current source file---that is, the source file for
8678the function containing the current point of execution---and the language
8679it was written in.
8680
8681@kindex info sources
8682@item info sources
8683Print the names of all source files in your program for which there is
8684debugging information, organized into two lists: files whose symbols
8685have already been read, and files whose symbols will be read when needed.
8686
8687@kindex info functions
8688@item info functions
8689Print the names and data types of all defined functions.
8690
8691@item info functions @var{regexp}
8692Print the names and data types of all defined functions
8693whose names contain a match for regular expression @var{regexp}.
8694Thus, @samp{info fun step} finds all functions whose names
8695include @code{step}; @samp{info fun ^step} finds those whose names
1c5dfdad
MS
8696start with @code{step}. If a function name contains characters
8697that conflict with the regular expression language (eg.
8698@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
8699
8700@kindex info variables
8701@item info variables
8702Print the names and data types of all variables that are declared
8703outside of functions (i.e., excluding local variables).
8704
8705@item info variables @var{regexp}
8706Print the names and data types of all variables (except for local
8707variables) whose names contain a match for regular expression
8708@var{regexp}.
8709
8710@ignore
8711This was never implemented.
8712@kindex info methods
8713@item info methods
8714@itemx info methods @var{regexp}
8715The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
8716methods within C@t{++} program, or (with the @var{regexp} argument) a
8717specific set of methods found in the various C@t{++} classes. Many
8718C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
8719from the @code{ptype} command can be overwhelming and hard to use. The
8720@code{info-methods} command filters the methods, printing only those
8721which match the regular-expression @var{regexp}.
8722@end ignore
8723
c906108c
SS
8724@cindex reloading symbols
8725Some systems allow individual object files that make up your program to
7a292a7a
SS
8726be replaced without stopping and restarting your program. For example,
8727in VxWorks you can simply recompile a defective object file and keep on
8728running. If you are running on one of these systems, you can allow
8729@value{GDBN} to reload the symbols for automatically relinked modules:
c906108c
SS
8730
8731@table @code
8732@kindex set symbol-reloading
8733@item set symbol-reloading on
8734Replace symbol definitions for the corresponding source file when an
8735object file with a particular name is seen again.
8736
8737@item set symbol-reloading off
6d2ebf8b
SS
8738Do not replace symbol definitions when encountering object files of the
8739same name more than once. This is the default state; if you are not
8740running on a system that permits automatic relinking of modules, you
8741should leave @code{symbol-reloading} off, since otherwise @value{GDBN}
8742may discard symbols when linking large programs, that may contain
8743several modules (from different directories or libraries) with the same
8744name.
c906108c
SS
8745
8746@kindex show symbol-reloading
8747@item show symbol-reloading
8748Show the current @code{on} or @code{off} setting.
8749@end table
c906108c 8750
c906108c
SS
8751@kindex set opaque-type-resolution
8752@item set opaque-type-resolution on
8753Tell @value{GDBN} to resolve opaque types. An opaque type is a type
8754declared as a pointer to a @code{struct}, @code{class}, or
8755@code{union}---for example, @code{struct MyType *}---that is used in one
8756source file although the full declaration of @code{struct MyType} is in
8757another source file. The default is on.
8758
8759A change in the setting of this subcommand will not take effect until
8760the next time symbols for a file are loaded.
8761
8762@item set opaque-type-resolution off
8763Tell @value{GDBN} not to resolve opaque types. In this case, the type
8764is printed as follows:
8765@smallexample
8766@{<no data fields>@}
8767@end smallexample
8768
8769@kindex show opaque-type-resolution
8770@item show opaque-type-resolution
8771Show whether opaque types are resolved or not.
c906108c
SS
8772
8773@kindex maint print symbols
8774@cindex symbol dump
8775@kindex maint print psymbols
8776@cindex partial symbol dump
8777@item maint print symbols @var{filename}
8778@itemx maint print psymbols @var{filename}
8779@itemx maint print msymbols @var{filename}
8780Write a dump of debugging symbol data into the file @var{filename}.
8781These commands are used to debug the @value{GDBN} symbol-reading code. Only
8782symbols with debugging data are included. If you use @samp{maint print
8783symbols}, @value{GDBN} includes all the symbols for which it has already
8784collected full details: that is, @var{filename} reflects symbols for
8785only those files whose symbols @value{GDBN} has read. You can use the
8786command @code{info sources} to find out which files these are. If you
8787use @samp{maint print psymbols} instead, the dump shows information about
8788symbols that @value{GDBN} only knows partially---that is, symbols defined in
8789files that @value{GDBN} has skimmed, but not yet read completely. Finally,
8790@samp{maint print msymbols} dumps just the minimal symbol information
8791required for each object file from which @value{GDBN} has read some symbols.
8792@xref{Files, ,Commands to specify files}, for a discussion of how
8793@value{GDBN} reads symbols (in the description of @code{symbol-file}).
8794@end table
8795
6d2ebf8b 8796@node Altering
c906108c
SS
8797@chapter Altering Execution
8798
8799Once you think you have found an error in your program, you might want to
8800find out for certain whether correcting the apparent error would lead to
8801correct results in the rest of the run. You can find the answer by
8802experiment, using the @value{GDBN} features for altering execution of the
8803program.
8804
8805For example, you can store new values into variables or memory
7a292a7a
SS
8806locations, give your program a signal, restart it at a different
8807address, or even return prematurely from a function.
c906108c
SS
8808
8809@menu
8810* Assignment:: Assignment to variables
8811* Jumping:: Continuing at a different address
c906108c 8812* Signaling:: Giving your program a signal
c906108c
SS
8813* Returning:: Returning from a function
8814* Calling:: Calling your program's functions
8815* Patching:: Patching your program
8816@end menu
8817
6d2ebf8b 8818@node Assignment
c906108c
SS
8819@section Assignment to variables
8820
8821@cindex assignment
8822@cindex setting variables
8823To alter the value of a variable, evaluate an assignment expression.
8824@xref{Expressions, ,Expressions}. For example,
8825
8826@example
8827print x=4
8828@end example
8829
8830@noindent
8831stores the value 4 into the variable @code{x}, and then prints the
5d161b24 8832value of the assignment expression (which is 4).
c906108c
SS
8833@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
8834information on operators in supported languages.
c906108c
SS
8835
8836@kindex set variable
8837@cindex variables, setting
8838If you are not interested in seeing the value of the assignment, use the
8839@code{set} command instead of the @code{print} command. @code{set} is
8840really the same as @code{print} except that the expression's value is
8841not printed and is not put in the value history (@pxref{Value History,
8842,Value history}). The expression is evaluated only for its effects.
8843
c906108c
SS
8844If the beginning of the argument string of the @code{set} command
8845appears identical to a @code{set} subcommand, use the @code{set
8846variable} command instead of just @code{set}. This command is identical
8847to @code{set} except for its lack of subcommands. For example, if your
8848program has a variable @code{width}, you get an error if you try to set
8849a new value with just @samp{set width=13}, because @value{GDBN} has the
8850command @code{set width}:
8851
8852@example
8853(@value{GDBP}) whatis width
8854type = double
8855(@value{GDBP}) p width
8856$4 = 13
8857(@value{GDBP}) set width=47
8858Invalid syntax in expression.
8859@end example
8860
8861@noindent
8862The invalid expression, of course, is @samp{=47}. In
8863order to actually set the program's variable @code{width}, use
8864
8865@example
8866(@value{GDBP}) set var width=47
8867@end example
53a5351d 8868
c906108c
SS
8869Because the @code{set} command has many subcommands that can conflict
8870with the names of program variables, it is a good idea to use the
8871@code{set variable} command instead of just @code{set}. For example, if
8872your program has a variable @code{g}, you run into problems if you try
8873to set a new value with just @samp{set g=4}, because @value{GDBN} has
8874the command @code{set gnutarget}, abbreviated @code{set g}:
8875
8876@example
8877@group
8878(@value{GDBP}) whatis g
8879type = double
8880(@value{GDBP}) p g
8881$1 = 1
8882(@value{GDBP}) set g=4
2df3850c 8883(@value{GDBP}) p g
c906108c
SS
8884$2 = 1
8885(@value{GDBP}) r
8886The program being debugged has been started already.
8887Start it from the beginning? (y or n) y
8888Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
8889"/home/smith/cc_progs/a.out": can't open to read symbols:
8890 Invalid bfd target.
c906108c
SS
8891(@value{GDBP}) show g
8892The current BFD target is "=4".
8893@end group
8894@end example
8895
8896@noindent
8897The program variable @code{g} did not change, and you silently set the
8898@code{gnutarget} to an invalid value. In order to set the variable
8899@code{g}, use
8900
8901@example
8902(@value{GDBP}) set var g=4
8903@end example
c906108c
SS
8904
8905@value{GDBN} allows more implicit conversions in assignments than C; you can
8906freely store an integer value into a pointer variable or vice versa,
8907and you can convert any structure to any other structure that is the
8908same length or shorter.
8909@comment FIXME: how do structs align/pad in these conversions?
8910@comment /doc@cygnus.com 18dec1990
8911
8912To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
8913construct to generate a value of specified type at a specified address
8914(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
8915to memory location @code{0x83040} as an integer (which implies a certain size
8916and representation in memory), and
8917
8918@example
8919set @{int@}0x83040 = 4
8920@end example
8921
8922@noindent
8923stores the value 4 into that memory location.
8924
6d2ebf8b 8925@node Jumping
c906108c
SS
8926@section Continuing at a different address
8927
8928Ordinarily, when you continue your program, you do so at the place where
8929it stopped, with the @code{continue} command. You can instead continue at
8930an address of your own choosing, with the following commands:
8931
8932@table @code
8933@kindex jump
8934@item jump @var{linespec}
8935Resume execution at line @var{linespec}. Execution stops again
8936immediately if there is a breakpoint there. @xref{List, ,Printing
8937source lines}, for a description of the different forms of
8938@var{linespec}. It is common practice to use the @code{tbreak} command
8939in conjunction with @code{jump}. @xref{Set Breaks, ,Setting
8940breakpoints}.
8941
8942The @code{jump} command does not change the current stack frame, or
8943the stack pointer, or the contents of any memory location or any
8944register other than the program counter. If line @var{linespec} is in
8945a different function from the one currently executing, the results may
8946be bizarre if the two functions expect different patterns of arguments or
8947of local variables. For this reason, the @code{jump} command requests
8948confirmation if the specified line is not in the function currently
8949executing. However, even bizarre results are predictable if you are
8950well acquainted with the machine-language code of your program.
8951
8952@item jump *@var{address}
8953Resume execution at the instruction at address @var{address}.
8954@end table
8955
c906108c 8956@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
8957On many systems, you can get much the same effect as the @code{jump}
8958command by storing a new value into the register @code{$pc}. The
8959difference is that this does not start your program running; it only
8960changes the address of where it @emph{will} run when you continue. For
8961example,
c906108c
SS
8962
8963@example
8964set $pc = 0x485
8965@end example
8966
8967@noindent
8968makes the next @code{continue} command or stepping command execute at
8969address @code{0x485}, rather than at the address where your program stopped.
8970@xref{Continuing and Stepping, ,Continuing and stepping}.
c906108c
SS
8971
8972The most common occasion to use the @code{jump} command is to back
8973up---perhaps with more breakpoints set---over a portion of a program
8974that has already executed, in order to examine its execution in more
8975detail.
8976
c906108c 8977@c @group
6d2ebf8b 8978@node Signaling
c906108c
SS
8979@section Giving your program a signal
8980
8981@table @code
8982@kindex signal
8983@item signal @var{signal}
8984Resume execution where your program stopped, but immediately give it the
8985signal @var{signal}. @var{signal} can be the name or the number of a
8986signal. For example, on many systems @code{signal 2} and @code{signal
8987SIGINT} are both ways of sending an interrupt signal.
8988
8989Alternatively, if @var{signal} is zero, continue execution without
8990giving a signal. This is useful when your program stopped on account of
8991a signal and would ordinary see the signal when resumed with the
8992@code{continue} command; @samp{signal 0} causes it to resume without a
8993signal.
8994
8995@code{signal} does not repeat when you press @key{RET} a second time
8996after executing the command.
8997@end table
8998@c @end group
8999
9000Invoking the @code{signal} command is not the same as invoking the
9001@code{kill} utility from the shell. Sending a signal with @code{kill}
9002causes @value{GDBN} to decide what to do with the signal depending on
9003the signal handling tables (@pxref{Signals}). The @code{signal} command
9004passes the signal directly to your program.
9005
c906108c 9006
6d2ebf8b 9007@node Returning
c906108c
SS
9008@section Returning from a function
9009
9010@table @code
9011@cindex returning from a function
9012@kindex return
9013@item return
9014@itemx return @var{expression}
9015You can cancel execution of a function call with the @code{return}
9016command. If you give an
9017@var{expression} argument, its value is used as the function's return
9018value.
9019@end table
9020
9021When you use @code{return}, @value{GDBN} discards the selected stack frame
9022(and all frames within it). You can think of this as making the
9023discarded frame return prematurely. If you wish to specify a value to
9024be returned, give that value as the argument to @code{return}.
9025
9026This pops the selected stack frame (@pxref{Selection, ,Selecting a
9027frame}), and any other frames inside of it, leaving its caller as the
9028innermost remaining frame. That frame becomes selected. The
9029specified value is stored in the registers used for returning values
9030of functions.
9031
9032The @code{return} command does not resume execution; it leaves the
9033program stopped in the state that would exist if the function had just
9034returned. In contrast, the @code{finish} command (@pxref{Continuing
9035and Stepping, ,Continuing and stepping}) resumes execution until the
9036selected stack frame returns naturally.
9037
6d2ebf8b 9038@node Calling
c906108c
SS
9039@section Calling program functions
9040
9041@cindex calling functions
9042@kindex call
9043@table @code
9044@item call @var{expr}
9045Evaluate the expression @var{expr} without displaying @code{void}
9046returned values.
9047@end table
9048
9049You can use this variant of the @code{print} command if you want to
9050execute a function from your program, but without cluttering the output
5d161b24
DB
9051with @code{void} returned values. If the result is not void, it
9052is printed and saved in the value history.
c906108c 9053
c906108c
SS
9054For the A29K, a user-controlled variable @code{call_scratch_address},
9055specifies the location of a scratch area to be used when @value{GDBN}
9056calls a function in the target. This is necessary because the usual
9057method of putting the scratch area on the stack does not work in systems
9058that have separate instruction and data spaces.
c906108c 9059
6d2ebf8b 9060@node Patching
c906108c 9061@section Patching programs
7a292a7a 9062
c906108c
SS
9063@cindex patching binaries
9064@cindex writing into executables
c906108c 9065@cindex writing into corefiles
c906108c 9066
7a292a7a
SS
9067By default, @value{GDBN} opens the file containing your program's
9068executable code (or the corefile) read-only. This prevents accidental
9069alterations to machine code; but it also prevents you from intentionally
9070patching your program's binary.
c906108c
SS
9071
9072If you'd like to be able to patch the binary, you can specify that
9073explicitly with the @code{set write} command. For example, you might
9074want to turn on internal debugging flags, or even to make emergency
9075repairs.
9076
9077@table @code
9078@kindex set write
9079@item set write on
9080@itemx set write off
7a292a7a
SS
9081If you specify @samp{set write on}, @value{GDBN} opens executable and
9082core files for both reading and writing; if you specify @samp{set write
c906108c
SS
9083off} (the default), @value{GDBN} opens them read-only.
9084
9085If you have already loaded a file, you must load it again (using the
7a292a7a
SS
9086@code{exec-file} or @code{core-file} command) after changing @code{set
9087write}, for your new setting to take effect.
c906108c
SS
9088
9089@item show write
9090@kindex show write
7a292a7a
SS
9091Display whether executable files and core files are opened for writing
9092as well as reading.
c906108c
SS
9093@end table
9094
6d2ebf8b 9095@node GDB Files
c906108c
SS
9096@chapter @value{GDBN} Files
9097
7a292a7a
SS
9098@value{GDBN} needs to know the file name of the program to be debugged,
9099both in order to read its symbol table and in order to start your
9100program. To debug a core dump of a previous run, you must also tell
9101@value{GDBN} the name of the core dump file.
c906108c
SS
9102
9103@menu
9104* Files:: Commands to specify files
9105* Symbol Errors:: Errors reading symbol files
9106@end menu
9107
6d2ebf8b 9108@node Files
c906108c 9109@section Commands to specify files
c906108c 9110
7a292a7a 9111@cindex symbol table
c906108c 9112@cindex core dump file
7a292a7a
SS
9113
9114You may want to specify executable and core dump file names. The usual
9115way to do this is at start-up time, using the arguments to
9116@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
9117Out of @value{GDBN}}).
c906108c
SS
9118
9119Occasionally it is necessary to change to a different file during a
9120@value{GDBN} session. Or you may run @value{GDBN} and forget to specify
9121a file you want to use. In these situations the @value{GDBN} commands
9122to specify new files are useful.
9123
9124@table @code
9125@cindex executable file
9126@kindex file
9127@item file @var{filename}
9128Use @var{filename} as the program to be debugged. It is read for its
9129symbols and for the contents of pure memory. It is also the program
9130executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
9131directory and the file is not found in the @value{GDBN} working directory,
9132@value{GDBN} uses the environment variable @code{PATH} as a list of
9133directories to search, just as the shell does when looking for a program
9134to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
9135and your program, using the @code{path} command.
9136
6d2ebf8b 9137On systems with memory-mapped files, an auxiliary file named
c906108c
SS
9138@file{@var{filename}.syms} may hold symbol table information for
9139@var{filename}. If so, @value{GDBN} maps in the symbol table from
9140@file{@var{filename}.syms}, starting up more quickly. See the
9141descriptions of the file options @samp{-mapped} and @samp{-readnow}
9142(available on the command line, and with the commands @code{file},
5d161b24 9143@code{symbol-file}, or @code{add-symbol-file}, described below),
c906108c 9144for more information.
c906108c
SS
9145
9146@item file
9147@code{file} with no argument makes @value{GDBN} discard any information it
9148has on both executable file and the symbol table.
9149
9150@kindex exec-file
9151@item exec-file @r{[} @var{filename} @r{]}
9152Specify that the program to be run (but not the symbol table) is found
9153in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
9154if necessary to locate your program. Omitting @var{filename} means to
9155discard information on the executable file.
9156
9157@kindex symbol-file
9158@item symbol-file @r{[} @var{filename} @r{]}
9159Read symbol table information from file @var{filename}. @code{PATH} is
9160searched when necessary. Use the @code{file} command to get both symbol
9161table and program to run from the same file.
9162
9163@code{symbol-file} with no argument clears out @value{GDBN} information on your
9164program's symbol table.
9165
5d161b24 9166The @code{symbol-file} command causes @value{GDBN} to forget the contents
c906108c
SS
9167of its convenience variables, the value history, and all breakpoints and
9168auto-display expressions. This is because they may contain pointers to
9169the internal data recording symbols and data types, which are part of
9170the old symbol table data being discarded inside @value{GDBN}.
9171
9172@code{symbol-file} does not repeat if you press @key{RET} again after
9173executing it once.
9174
9175When @value{GDBN} is configured for a particular environment, it
9176understands debugging information in whatever format is the standard
9177generated for that environment; you may use either a @sc{gnu} compiler, or
9178other compilers that adhere to the local conventions.
c906108c
SS
9179Best results are usually obtained from @sc{gnu} compilers; for example,
9180using @code{@value{GCC}} you can generate debugging information for
9181optimized code.
c906108c
SS
9182
9183For most kinds of object files, with the exception of old SVR3 systems
9184using COFF, the @code{symbol-file} command does not normally read the
9185symbol table in full right away. Instead, it scans the symbol table
9186quickly to find which source files and which symbols are present. The
9187details are read later, one source file at a time, as they are needed.
9188
9189The purpose of this two-stage reading strategy is to make @value{GDBN}
9190start up faster. For the most part, it is invisible except for
9191occasional pauses while the symbol table details for a particular source
9192file are being read. (The @code{set verbose} command can turn these
9193pauses into messages if desired. @xref{Messages/Warnings, ,Optional
9194warnings and messages}.)
9195
c906108c
SS
9196We have not implemented the two-stage strategy for COFF yet. When the
9197symbol table is stored in COFF format, @code{symbol-file} reads the
9198symbol table data in full right away. Note that ``stabs-in-COFF''
9199still does the two-stage strategy, since the debug info is actually
9200in stabs format.
9201
9202@kindex readnow
9203@cindex reading symbols immediately
9204@cindex symbols, reading immediately
9205@kindex mapped
9206@cindex memory-mapped symbol file
9207@cindex saving symbol table
9208@item symbol-file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9209@itemx file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9210You can override the @value{GDBN} two-stage strategy for reading symbol
9211tables by using the @samp{-readnow} option with any of the commands that
9212load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 9213entire symbol table available.
c906108c 9214
c906108c
SS
9215If memory-mapped files are available on your system through the
9216@code{mmap} system call, you can use another option, @samp{-mapped}, to
9217cause @value{GDBN} to write the symbols for your program into a reusable
9218file. Future @value{GDBN} debugging sessions map in symbol information
9219from this auxiliary symbol file (if the program has not changed), rather
9220than spending time reading the symbol table from the executable
9221program. Using the @samp{-mapped} option has the same effect as
9222starting @value{GDBN} with the @samp{-mapped} command-line option.
9223
9224You can use both options together, to make sure the auxiliary symbol
9225file has all the symbol information for your program.
9226
9227The auxiliary symbol file for a program called @var{myprog} is called
9228@samp{@var{myprog}.syms}. Once this file exists (so long as it is newer
9229than the corresponding executable), @value{GDBN} always attempts to use
9230it when you debug @var{myprog}; no special options or commands are
9231needed.
9232
9233The @file{.syms} file is specific to the host machine where you run
9234@value{GDBN}. It holds an exact image of the internal @value{GDBN}
9235symbol table. It cannot be shared across multiple host platforms.
c906108c
SS
9236
9237@c FIXME: for now no mention of directories, since this seems to be in
9238@c flux. 13mar1992 status is that in theory GDB would look either in
9239@c current dir or in same dir as myprog; but issues like competing
9240@c GDB's, or clutter in system dirs, mean that in practice right now
9241@c only current dir is used. FFish says maybe a special GDB hierarchy
9242@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
9243@c files.
9244
9245@kindex core
9246@kindex core-file
9247@item core-file @r{[} @var{filename} @r{]}
9248Specify the whereabouts of a core dump file to be used as the ``contents
9249of memory''. Traditionally, core files contain only some parts of the
9250address space of the process that generated them; @value{GDBN} can access the
9251executable file itself for other parts.
9252
9253@code{core-file} with no argument specifies that no core file is
9254to be used.
9255
9256Note that the core file is ignored when your program is actually running
7a292a7a
SS
9257under @value{GDBN}. So, if you have been running your program and you
9258wish to debug a core file instead, you must kill the subprocess in which
9259the program is running. To do this, use the @code{kill} command
c906108c 9260(@pxref{Kill Process, ,Killing the child process}).
c906108c 9261
c906108c
SS
9262@kindex add-symbol-file
9263@cindex dynamic linking
9264@item add-symbol-file @var{filename} @var{address}
9265@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
17d9d558 9266@itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address} @dots{}
96a2c332
SS
9267The @code{add-symbol-file} command reads additional symbol table
9268information from the file @var{filename}. You would use this command
9269when @var{filename} has been dynamically loaded (by some other means)
9270into the program that is running. @var{address} should be the memory
9271address at which the file has been loaded; @value{GDBN} cannot figure
d167840f
EZ
9272this out for itself. You can additionally specify an arbitrary number
9273of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
9274section name and base address for that section. You can specify any
9275@var{address} as an expression.
c906108c
SS
9276
9277The symbol table of the file @var{filename} is added to the symbol table
9278originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
9279@code{add-symbol-file} command any number of times; the new symbol data
9280thus read keeps adding to the old. To discard all old symbol data
9281instead, use the @code{symbol-file} command without any arguments.
c906108c 9282
17d9d558
JB
9283@cindex relocatable object files, reading symbols from
9284@cindex object files, relocatable, reading symbols from
9285@cindex reading symbols from relocatable object files
9286@cindex symbols, reading from relocatable object files
9287@cindex @file{.o} files, reading symbols from
9288Although @var{filename} is typically a shared library file, an
9289executable file, or some other object file which has been fully
9290relocated for loading into a process, you can also load symbolic
9291information from relocatable @file{.o} files, as long as:
9292
9293@itemize @bullet
9294@item
9295the file's symbolic information refers only to linker symbols defined in
9296that file, not to symbols defined by other object files,
9297@item
9298every section the file's symbolic information refers to has actually
9299been loaded into the inferior, as it appears in the file, and
9300@item
9301you can determine the address at which every section was loaded, and
9302provide these to the @code{add-symbol-file} command.
9303@end itemize
9304
9305@noindent
9306Some embedded operating systems, like Sun Chorus and VxWorks, can load
9307relocatable files into an already running program; such systems
9308typically make the requirements above easy to meet. However, it's
9309important to recognize that many native systems use complex link
9310procedures (@code{.linkonce} section factoring and C++ constructor table
9311assembly, for example) that make the requirements difficult to meet. In
9312general, one cannot assume that using @code{add-symbol-file} to read a
9313relocatable object file's symbolic information will have the same effect
9314as linking the relocatable object file into the program in the normal
9315way.
9316
c906108c
SS
9317@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
9318
9319You can use the @samp{-mapped} and @samp{-readnow} options just as with
9320the @code{symbol-file} command, to change how @value{GDBN} manages the symbol
9321table information for @var{filename}.
9322
9323@kindex add-shared-symbol-file
9324@item add-shared-symbol-file
9325The @code{add-shared-symbol-file} command can be used only under Harris' CXUX
5d161b24
DB
9326operating system for the Motorola 88k. @value{GDBN} automatically looks for
9327shared libraries, however if @value{GDBN} does not find yours, you can run
c906108c 9328@code{add-shared-symbol-file}. It takes no arguments.
c906108c 9329
c906108c
SS
9330@kindex section
9331@item section
5d161b24
DB
9332The @code{section} command changes the base address of section SECTION of
9333the exec file to ADDR. This can be used if the exec file does not contain
9334section addresses, (such as in the a.out format), or when the addresses
9335specified in the file itself are wrong. Each section must be changed
d4f3574e
SS
9336separately. The @code{info files} command, described below, lists all
9337the sections and their addresses.
c906108c
SS
9338
9339@kindex info files
9340@kindex info target
9341@item info files
9342@itemx info target
7a292a7a
SS
9343@code{info files} and @code{info target} are synonymous; both print the
9344current target (@pxref{Targets, ,Specifying a Debugging Target}),
9345including the names of the executable and core dump files currently in
9346use by @value{GDBN}, and the files from which symbols were loaded. The
9347command @code{help target} lists all possible targets rather than
9348current ones.
9349
c906108c
SS
9350@end table
9351
9352All file-specifying commands allow both absolute and relative file names
9353as arguments. @value{GDBN} always converts the file name to an absolute file
9354name and remembers it that way.
9355
c906108c 9356@cindex shared libraries
c906108c
SS
9357@value{GDBN} supports HP-UX, SunOS, SVr4, Irix 5, and IBM RS/6000 shared
9358libraries.
53a5351d 9359
c906108c
SS
9360@value{GDBN} automatically loads symbol definitions from shared libraries
9361when you use the @code{run} command, or when you examine a core file.
9362(Before you issue the @code{run} command, @value{GDBN} does not understand
9363references to a function in a shared library, however---unless you are
9364debugging a core file).
53a5351d
JM
9365
9366On HP-UX, if the program loads a library explicitly, @value{GDBN}
9367automatically loads the symbols at the time of the @code{shl_load} call.
9368
c906108c
SS
9369@c FIXME: some @value{GDBN} release may permit some refs to undef
9370@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
9371@c FIXME...lib; check this from time to time when updating manual
9372
b7209cb4
FF
9373There are times, however, when you may wish to not automatically load
9374symbol definitions from shared libraries, such as when they are
9375particularly large or there are many of them.
9376
9377To control the automatic loading of shared library symbols, use the
9378commands:
9379
9380@table @code
9381@kindex set auto-solib-add
9382@item set auto-solib-add @var{mode}
9383If @var{mode} is @code{on}, symbols from all shared object libraries
9384will be loaded automatically when the inferior begins execution, you
9385attach to an independently started inferior, or when the dynamic linker
9386informs @value{GDBN} that a new library has been loaded. If @var{mode}
9387is @code{off}, symbols must be loaded manually, using the
9388@code{sharedlibrary} command. The default value is @code{on}.
9389
9390@kindex show auto-solib-add
9391@item show auto-solib-add
9392Display the current autoloading mode.
9393@end table
9394
9395To explicitly load shared library symbols, use the @code{sharedlibrary}
9396command:
9397
c906108c
SS
9398@table @code
9399@kindex info sharedlibrary
9400@kindex info share
9401@item info share
9402@itemx info sharedlibrary
9403Print the names of the shared libraries which are currently loaded.
9404
9405@kindex sharedlibrary
9406@kindex share
9407@item sharedlibrary @var{regex}
9408@itemx share @var{regex}
c906108c
SS
9409Load shared object library symbols for files matching a
9410Unix regular expression.
9411As with files loaded automatically, it only loads shared libraries
9412required by your program for a core file or after typing @code{run}. If
9413@var{regex} is omitted all shared libraries required by your program are
9414loaded.
9415@end table
9416
b7209cb4
FF
9417On some systems, such as HP-UX systems, @value{GDBN} supports
9418autoloading shared library symbols until a limiting threshold size is
9419reached. This provides the benefit of allowing autoloading to remain on
9420by default, but avoids autoloading excessively large shared libraries,
9421up to a threshold that is initially set, but which you can modify if you
9422wish.
c906108c
SS
9423
9424Beyond that threshold, symbols from shared libraries must be explicitly
d4f3574e
SS
9425loaded. To load these symbols, use the command @code{sharedlibrary
9426@var{filename}}. The base address of the shared library is determined
c906108c
SS
9427automatically by @value{GDBN} and need not be specified.
9428
9429To display or set the threshold, use the commands:
9430
9431@table @code
b7209cb4
FF
9432@kindex set auto-solib-limit
9433@item set auto-solib-limit @var{threshold}
9434Set the autoloading size threshold, in an integral number of megabytes.
9435If @var{threshold} is nonzero and shared library autoloading is enabled,
9436symbols from all shared object libraries will be loaded until the total
9437size of the loaded shared library symbols exceeds this threshold.
c906108c 9438Otherwise, symbols must be loaded manually, using the
b7209cb4
FF
9439@code{sharedlibrary} command. The default threshold is 100 (i.e. 100
9440Mb).
c906108c 9441
b7209cb4
FF
9442@kindex show auto-solib-limit
9443@item show auto-solib-limit
c906108c
SS
9444Display the current autoloading size threshold, in megabytes.
9445@end table
c906108c 9446
6d2ebf8b 9447@node Symbol Errors
c906108c
SS
9448@section Errors reading symbol files
9449
9450While reading a symbol file, @value{GDBN} occasionally encounters problems,
9451such as symbol types it does not recognize, or known bugs in compiler
9452output. By default, @value{GDBN} does not notify you of such problems, since
9453they are relatively common and primarily of interest to people
9454debugging compilers. If you are interested in seeing information
9455about ill-constructed symbol tables, you can either ask @value{GDBN} to print
9456only one message about each such type of problem, no matter how many
9457times the problem occurs; or you can ask @value{GDBN} to print more messages,
9458to see how many times the problems occur, with the @code{set
9459complaints} command (@pxref{Messages/Warnings, ,Optional warnings and
9460messages}).
9461
9462The messages currently printed, and their meanings, include:
9463
9464@table @code
9465@item inner block not inside outer block in @var{symbol}
9466
9467The symbol information shows where symbol scopes begin and end
9468(such as at the start of a function or a block of statements). This
9469error indicates that an inner scope block is not fully contained
9470in its outer scope blocks.
9471
9472@value{GDBN} circumvents the problem by treating the inner block as if it had
9473the same scope as the outer block. In the error message, @var{symbol}
9474may be shown as ``@code{(don't know)}'' if the outer block is not a
9475function.
9476
9477@item block at @var{address} out of order
9478
9479The symbol information for symbol scope blocks should occur in
9480order of increasing addresses. This error indicates that it does not
9481do so.
9482
9483@value{GDBN} does not circumvent this problem, and has trouble
9484locating symbols in the source file whose symbols it is reading. (You
9485can often determine what source file is affected by specifying
9486@code{set verbose on}. @xref{Messages/Warnings, ,Optional warnings and
9487messages}.)
9488
9489@item bad block start address patched
9490
9491The symbol information for a symbol scope block has a start address
9492smaller than the address of the preceding source line. This is known
9493to occur in the SunOS 4.1.1 (and earlier) C compiler.
9494
9495@value{GDBN} circumvents the problem by treating the symbol scope block as
9496starting on the previous source line.
9497
9498@item bad string table offset in symbol @var{n}
9499
9500@cindex foo
9501Symbol number @var{n} contains a pointer into the string table which is
9502larger than the size of the string table.
9503
9504@value{GDBN} circumvents the problem by considering the symbol to have the
9505name @code{foo}, which may cause other problems if many symbols end up
9506with this name.
9507
9508@item unknown symbol type @code{0x@var{nn}}
9509
7a292a7a
SS
9510The symbol information contains new data types that @value{GDBN} does
9511not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 9512uncomprehended information, in hexadecimal.
c906108c 9513
7a292a7a
SS
9514@value{GDBN} circumvents the error by ignoring this symbol information.
9515This usually allows you to debug your program, though certain symbols
c906108c 9516are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
9517debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
9518on @code{complain}, then go up to the function @code{read_dbx_symtab}
9519and examine @code{*bufp} to see the symbol.
c906108c
SS
9520
9521@item stub type has NULL name
c906108c 9522
7a292a7a 9523@value{GDBN} could not find the full definition for a struct or class.
c906108c 9524
7a292a7a 9525@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 9526The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
9527information that recent versions of the compiler should have output for
9528it.
c906108c
SS
9529
9530@item info mismatch between compiler and debugger
9531
9532@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 9533
c906108c
SS
9534@end table
9535
6d2ebf8b 9536@node Targets
c906108c 9537@chapter Specifying a Debugging Target
7a292a7a 9538
c906108c
SS
9539@cindex debugging target
9540@kindex target
9541
9542A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
9543
9544Often, @value{GDBN} runs in the same host environment as your program;
9545in that case, the debugging target is specified as a side effect when
9546you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
9547flexibility---for example, running @value{GDBN} on a physically separate
9548host, or controlling a standalone system over a serial port or a
53a5351d
JM
9549realtime system over a TCP/IP connection---you can use the @code{target}
9550command to specify one of the target types configured for @value{GDBN}
9551(@pxref{Target Commands, ,Commands for managing targets}).
c906108c
SS
9552
9553@menu
9554* Active Targets:: Active targets
9555* Target Commands:: Commands for managing targets
c906108c
SS
9556* Byte Order:: Choosing target byte order
9557* Remote:: Remote debugging
96baa820 9558* KOD:: Kernel Object Display
c906108c
SS
9559
9560@end menu
9561
6d2ebf8b 9562@node Active Targets
c906108c 9563@section Active targets
7a292a7a 9564
c906108c
SS
9565@cindex stacking targets
9566@cindex active targets
9567@cindex multiple targets
9568
c906108c 9569There are three classes of targets: processes, core files, and
7a292a7a
SS
9570executable files. @value{GDBN} can work concurrently on up to three
9571active targets, one in each class. This allows you to (for example)
9572start a process and inspect its activity without abandoning your work on
9573a core file.
c906108c
SS
9574
9575For example, if you execute @samp{gdb a.out}, then the executable file
9576@code{a.out} is the only active target. If you designate a core file as
9577well---presumably from a prior run that crashed and coredumped---then
9578@value{GDBN} has two active targets and uses them in tandem, looking
9579first in the corefile target, then in the executable file, to satisfy
9580requests for memory addresses. (Typically, these two classes of target
9581are complementary, since core files contain only a program's
9582read-write memory---variables and so on---plus machine status, while
9583executable files contain only the program text and initialized data.)
c906108c
SS
9584
9585When you type @code{run}, your executable file becomes an active process
7a292a7a
SS
9586target as well. When a process target is active, all @value{GDBN}
9587commands requesting memory addresses refer to that target; addresses in
9588an active core file or executable file target are obscured while the
9589process target is active.
c906108c 9590
7a292a7a
SS
9591Use the @code{core-file} and @code{exec-file} commands to select a new
9592core file or executable target (@pxref{Files, ,Commands to specify
c906108c 9593files}). To specify as a target a process that is already running, use
7a292a7a
SS
9594the @code{attach} command (@pxref{Attach, ,Debugging an already-running
9595process}).
c906108c 9596
6d2ebf8b 9597@node Target Commands
c906108c
SS
9598@section Commands for managing targets
9599
9600@table @code
9601@item target @var{type} @var{parameters}
7a292a7a
SS
9602Connects the @value{GDBN} host environment to a target machine or
9603process. A target is typically a protocol for talking to debugging
9604facilities. You use the argument @var{type} to specify the type or
9605protocol of the target machine.
c906108c
SS
9606
9607Further @var{parameters} are interpreted by the target protocol, but
9608typically include things like device names or host names to connect
9609with, process numbers, and baud rates.
c906108c
SS
9610
9611The @code{target} command does not repeat if you press @key{RET} again
9612after executing the command.
9613
9614@kindex help target
9615@item help target
9616Displays the names of all targets available. To display targets
9617currently selected, use either @code{info target} or @code{info files}
9618(@pxref{Files, ,Commands to specify files}).
9619
9620@item help target @var{name}
9621Describe a particular target, including any parameters necessary to
9622select it.
9623
9624@kindex set gnutarget
9625@item set gnutarget @var{args}
5d161b24 9626@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 9627knows whether it is reading an @dfn{executable},
5d161b24
DB
9628a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
9629with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
9630with @code{gnutarget} the @code{target} refers to a program, not a machine.
9631
d4f3574e 9632@quotation
c906108c
SS
9633@emph{Warning:} To specify a file format with @code{set gnutarget},
9634you must know the actual BFD name.
d4f3574e 9635@end quotation
c906108c 9636
d4f3574e
SS
9637@noindent
9638@xref{Files, , Commands to specify files}.
c906108c 9639
5d161b24 9640@kindex show gnutarget
c906108c
SS
9641@item show gnutarget
9642Use the @code{show gnutarget} command to display what file format
9643@code{gnutarget} is set to read. If you have not set @code{gnutarget},
9644@value{GDBN} will determine the file format for each file automatically,
9645and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
9646@end table
9647
c906108c
SS
9648Here are some common targets (available, or not, depending on the GDB
9649configuration):
c906108c
SS
9650
9651@table @code
9652@kindex target exec
9653@item target exec @var{program}
9654An executable file. @samp{target exec @var{program}} is the same as
9655@samp{exec-file @var{program}}.
9656
c906108c
SS
9657@kindex target core
9658@item target core @var{filename}
9659A core dump file. @samp{target core @var{filename}} is the same as
9660@samp{core-file @var{filename}}.
c906108c
SS
9661
9662@kindex target remote
9663@item target remote @var{dev}
9664Remote serial target in GDB-specific protocol. The argument @var{dev}
9665specifies what serial device to use for the connection (e.g.
9666@file{/dev/ttya}). @xref{Remote, ,Remote debugging}. @code{target remote}
d4f3574e 9667supports the @code{load} command. This is only useful if you have
c906108c
SS
9668some other way of getting the stub to the target system, and you can put
9669it somewhere in memory where it won't get clobbered by the download.
9670
c906108c
SS
9671@kindex target sim
9672@item target sim
2df3850c 9673Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213
JM
9674In general,
9675@example
9676 target sim
9677 load
9678 run
9679@end example
d4f3574e 9680@noindent
104c1213 9681works; however, you cannot assume that a specific memory map, device
d4f3574e 9682drivers, or even basic I/O is available, although some simulators do
104c1213
JM
9683provide these. For info about any processor-specific simulator details,
9684see the appropriate section in @ref{Embedded Processors, ,Embedded
9685Processors}.
9686
c906108c
SS
9687@end table
9688
104c1213 9689Some configurations may include these targets as well:
c906108c
SS
9690
9691@table @code
9692
c906108c
SS
9693@kindex target nrom
9694@item target nrom @var{dev}
9695NetROM ROM emulator. This target only supports downloading.
9696
c906108c
SS
9697@end table
9698
5d161b24 9699Different targets are available on different configurations of @value{GDBN};
c906108c 9700your configuration may have more or fewer targets.
c906108c
SS
9701
9702Many remote targets require you to download the executable's code
9703once you've successfully established a connection.
9704
9705@table @code
9706
9707@kindex load @var{filename}
9708@item load @var{filename}
c906108c
SS
9709Depending on what remote debugging facilities are configured into
9710@value{GDBN}, the @code{load} command may be available. Where it exists, it
9711is meant to make @var{filename} (an executable) available for debugging
9712on the remote system---by downloading, or dynamic linking, for example.
9713@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
9714the @code{add-symbol-file} command.
9715
9716If your @value{GDBN} does not have a @code{load} command, attempting to
9717execute it gets the error message ``@code{You can't do that when your
9718target is @dots{}}''
c906108c
SS
9719
9720The file is loaded at whatever address is specified in the executable.
9721For some object file formats, you can specify the load address when you
9722link the program; for other formats, like a.out, the object file format
9723specifies a fixed address.
9724@c FIXME! This would be a good place for an xref to the GNU linker doc.
9725
c906108c
SS
9726@code{load} does not repeat if you press @key{RET} again after using it.
9727@end table
9728
6d2ebf8b 9729@node Byte Order
c906108c 9730@section Choosing target byte order
7a292a7a 9731
c906108c
SS
9732@cindex choosing target byte order
9733@cindex target byte order
c906108c
SS
9734
9735Some types of processors, such as the MIPS, PowerPC, and Hitachi SH,
9736offer the ability to run either big-endian or little-endian byte
9737orders. Usually the executable or symbol will include a bit to
9738designate the endian-ness, and you will not need to worry about
9739which to use. However, you may still find it useful to adjust
d4f3574e 9740@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
9741
9742@table @code
9743@kindex set endian big
9744@item set endian big
9745Instruct @value{GDBN} to assume the target is big-endian.
9746
9747@kindex set endian little
9748@item set endian little
9749Instruct @value{GDBN} to assume the target is little-endian.
9750
9751@kindex set endian auto
9752@item set endian auto
9753Instruct @value{GDBN} to use the byte order associated with the
9754executable.
9755
9756@item show endian
9757Display @value{GDBN}'s current idea of the target byte order.
9758
9759@end table
9760
9761Note that these commands merely adjust interpretation of symbolic
9762data on the host, and that they have absolutely no effect on the
9763target system.
9764
6d2ebf8b 9765@node Remote
c906108c
SS
9766@section Remote debugging
9767@cindex remote debugging
9768
9769If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
9770@value{GDBN} in the usual way, it is often useful to use remote debugging.
9771For example, you might use remote debugging on an operating system kernel,
c906108c
SS
9772or on a small system which does not have a general purpose operating system
9773powerful enough to run a full-featured debugger.
9774
9775Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
9776to make this work with particular debugging targets. In addition,
5d161b24 9777@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
9778but not specific to any particular target system) which you can use if you
9779write the remote stubs---the code that runs on the remote system to
9780communicate with @value{GDBN}.
9781
9782Other remote targets may be available in your
9783configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 9784
c906108c 9785@menu
c906108c 9786* Remote Serial:: @value{GDBN} remote serial protocol
c906108c
SS
9787@end menu
9788
6d2ebf8b 9789@node Remote Serial
104c1213 9790@subsection The @value{GDBN} remote serial protocol
7a292a7a 9791
104c1213
JM
9792@cindex remote serial debugging, overview
9793To debug a program running on another machine (the debugging
9794@dfn{target} machine), you must first arrange for all the usual
9795prerequisites for the program to run by itself. For example, for a C
9796program, you need:
c906108c 9797
104c1213
JM
9798@enumerate
9799@item
9800A startup routine to set up the C runtime environment; these usually
9801have a name like @file{crt0}. The startup routine may be supplied by
9802your hardware supplier, or you may have to write your own.
96baa820 9803
5d161b24 9804@item
d4f3574e 9805A C subroutine library to support your program's
104c1213 9806subroutine calls, notably managing input and output.
96baa820 9807
104c1213
JM
9808@item
9809A way of getting your program to the other machine---for example, a
9810download program. These are often supplied by the hardware
9811manufacturer, but you may have to write your own from hardware
9812documentation.
9813@end enumerate
96baa820 9814
104c1213
JM
9815The next step is to arrange for your program to use a serial port to
9816communicate with the machine where @value{GDBN} is running (the @dfn{host}
9817machine). In general terms, the scheme looks like this:
96baa820 9818
104c1213
JM
9819@table @emph
9820@item On the host,
9821@value{GDBN} already understands how to use this protocol; when everything
9822else is set up, you can simply use the @samp{target remote} command
9823(@pxref{Targets,,Specifying a Debugging Target}).
9824
9825@item On the target,
9826you must link with your program a few special-purpose subroutines that
9827implement the @value{GDBN} remote serial protocol. The file containing these
9828subroutines is called a @dfn{debugging stub}.
9829
9830On certain remote targets, you can use an auxiliary program
9831@code{gdbserver} instead of linking a stub into your program.
9832@xref{Server,,Using the @code{gdbserver} program}, for details.
9833@end table
96baa820 9834
104c1213
JM
9835The debugging stub is specific to the architecture of the remote
9836machine; for example, use @file{sparc-stub.c} to debug programs on
9837@sc{sparc} boards.
96baa820 9838
104c1213
JM
9839@cindex remote serial stub list
9840These working remote stubs are distributed with @value{GDBN}:
96baa820 9841
104c1213
JM
9842@table @code
9843
9844@item i386-stub.c
41afff9a 9845@cindex @file{i386-stub.c}
104c1213
JM
9846@cindex Intel
9847@cindex i386
9848For Intel 386 and compatible architectures.
9849
9850@item m68k-stub.c
41afff9a 9851@cindex @file{m68k-stub.c}
104c1213
JM
9852@cindex Motorola 680x0
9853@cindex m680x0
9854For Motorola 680x0 architectures.
9855
9856@item sh-stub.c
41afff9a 9857@cindex @file{sh-stub.c}
104c1213
JM
9858@cindex Hitachi
9859@cindex SH
9860For Hitachi SH architectures.
9861
9862@item sparc-stub.c
41afff9a 9863@cindex @file{sparc-stub.c}
104c1213
JM
9864@cindex Sparc
9865For @sc{sparc} architectures.
9866
9867@item sparcl-stub.c
41afff9a 9868@cindex @file{sparcl-stub.c}
104c1213
JM
9869@cindex Fujitsu
9870@cindex SparcLite
9871For Fujitsu @sc{sparclite} architectures.
9872
9873@end table
9874
9875The @file{README} file in the @value{GDBN} distribution may list other
9876recently added stubs.
9877
9878@menu
9879* Stub Contents:: What the stub can do for you
9880* Bootstrapping:: What you must do for the stub
9881* Debug Session:: Putting it all together
9882* Protocol:: Definition of the communication protocol
9883* Server:: Using the `gdbserver' program
9884* NetWare:: Using the `gdbserve.nlm' program
9885@end menu
9886
6d2ebf8b 9887@node Stub Contents
104c1213
JM
9888@subsubsection What the stub can do for you
9889
9890@cindex remote serial stub
9891The debugging stub for your architecture supplies these three
9892subroutines:
9893
9894@table @code
9895@item set_debug_traps
9896@kindex set_debug_traps
9897@cindex remote serial stub, initialization
9898This routine arranges for @code{handle_exception} to run when your
9899program stops. You must call this subroutine explicitly near the
9900beginning of your program.
9901
9902@item handle_exception
9903@kindex handle_exception
9904@cindex remote serial stub, main routine
9905This is the central workhorse, but your program never calls it
9906explicitly---the setup code arranges for @code{handle_exception} to
9907run when a trap is triggered.
9908
9909@code{handle_exception} takes control when your program stops during
9910execution (for example, on a breakpoint), and mediates communications
9911with @value{GDBN} on the host machine. This is where the communications
9912protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 9913representative on the target machine. It begins by sending summary
104c1213
JM
9914information on the state of your program, then continues to execute,
9915retrieving and transmitting any information @value{GDBN} needs, until you
9916execute a @value{GDBN} command that makes your program resume; at that point,
9917@code{handle_exception} returns control to your own code on the target
5d161b24 9918machine.
104c1213
JM
9919
9920@item breakpoint
9921@cindex @code{breakpoint} subroutine, remote
9922Use this auxiliary subroutine to make your program contain a
9923breakpoint. Depending on the particular situation, this may be the only
9924way for @value{GDBN} to get control. For instance, if your target
9925machine has some sort of interrupt button, you won't need to call this;
9926pressing the interrupt button transfers control to
9927@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
9928simply receiving characters on the serial port may also trigger a trap;
9929again, in that situation, you don't need to call @code{breakpoint} from
9930your own program---simply running @samp{target remote} from the host
5d161b24 9931@value{GDBN} session gets control.
104c1213
JM
9932
9933Call @code{breakpoint} if none of these is true, or if you simply want
9934to make certain your program stops at a predetermined point for the
9935start of your debugging session.
9936@end table
9937
6d2ebf8b 9938@node Bootstrapping
104c1213
JM
9939@subsubsection What you must do for the stub
9940
9941@cindex remote stub, support routines
9942The debugging stubs that come with @value{GDBN} are set up for a particular
9943chip architecture, but they have no information about the rest of your
9944debugging target machine.
9945
9946First of all you need to tell the stub how to communicate with the
9947serial port.
9948
9949@table @code
9950@item int getDebugChar()
9951@kindex getDebugChar
9952Write this subroutine to read a single character from the serial port.
9953It may be identical to @code{getchar} for your target system; a
9954different name is used to allow you to distinguish the two if you wish.
9955
9956@item void putDebugChar(int)
9957@kindex putDebugChar
9958Write this subroutine to write a single character to the serial port.
5d161b24 9959It may be identical to @code{putchar} for your target system; a
104c1213
JM
9960different name is used to allow you to distinguish the two if you wish.
9961@end table
9962
9963@cindex control C, and remote debugging
9964@cindex interrupting remote targets
9965If you want @value{GDBN} to be able to stop your program while it is
9966running, you need to use an interrupt-driven serial driver, and arrange
9967for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
9968character). That is the character which @value{GDBN} uses to tell the
9969remote system to stop.
9970
9971Getting the debugging target to return the proper status to @value{GDBN}
9972probably requires changes to the standard stub; one quick and dirty way
9973is to just execute a breakpoint instruction (the ``dirty'' part is that
9974@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
9975
9976Other routines you need to supply are:
9977
9978@table @code
9979@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
9980@kindex exceptionHandler
9981Write this function to install @var{exception_address} in the exception
9982handling tables. You need to do this because the stub does not have any
9983way of knowing what the exception handling tables on your target system
9984are like (for example, the processor's table might be in @sc{rom},
9985containing entries which point to a table in @sc{ram}).
9986@var{exception_number} is the exception number which should be changed;
9987its meaning is architecture-dependent (for example, different numbers
9988might represent divide by zero, misaligned access, etc). When this
9989exception occurs, control should be transferred directly to
9990@var{exception_address}, and the processor state (stack, registers,
9991and so on) should be just as it is when a processor exception occurs. So if
9992you want to use a jump instruction to reach @var{exception_address}, it
9993should be a simple jump, not a jump to subroutine.
9994
9995For the 386, @var{exception_address} should be installed as an interrupt
9996gate so that interrupts are masked while the handler runs. The gate
9997should be at privilege level 0 (the most privileged level). The
9998@sc{sparc} and 68k stubs are able to mask interrupts themselves without
9999help from @code{exceptionHandler}.
10000
10001@item void flush_i_cache()
10002@kindex flush_i_cache
d4f3574e 10003On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
10004instruction cache, if any, on your target machine. If there is no
10005instruction cache, this subroutine may be a no-op.
10006
10007On target machines that have instruction caches, @value{GDBN} requires this
10008function to make certain that the state of your program is stable.
10009@end table
10010
10011@noindent
10012You must also make sure this library routine is available:
10013
10014@table @code
10015@item void *memset(void *, int, int)
10016@kindex memset
10017This is the standard library function @code{memset} that sets an area of
10018memory to a known value. If you have one of the free versions of
10019@code{libc.a}, @code{memset} can be found there; otherwise, you must
10020either obtain it from your hardware manufacturer, or write your own.
10021@end table
10022
10023If you do not use the GNU C compiler, you may need other standard
10024library subroutines as well; this varies from one stub to another,
10025but in general the stubs are likely to use any of the common library
d4f3574e 10026subroutines which @code{@value{GCC}} generates as inline code.
104c1213
JM
10027
10028
6d2ebf8b 10029@node Debug Session
104c1213
JM
10030@subsubsection Putting it all together
10031
10032@cindex remote serial debugging summary
10033In summary, when your program is ready to debug, you must follow these
10034steps.
10035
10036@enumerate
10037@item
6d2ebf8b 10038Make sure you have defined the supporting low-level routines
104c1213
JM
10039(@pxref{Bootstrapping,,What you must do for the stub}):
10040@display
10041@code{getDebugChar}, @code{putDebugChar},
10042@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
10043@end display
10044
10045@item
10046Insert these lines near the top of your program:
10047
10048@example
10049set_debug_traps();
10050breakpoint();
10051@end example
10052
10053@item
10054For the 680x0 stub only, you need to provide a variable called
10055@code{exceptionHook}. Normally you just use:
10056
10057@example
10058void (*exceptionHook)() = 0;
10059@end example
10060
d4f3574e 10061@noindent
104c1213 10062but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 10063function in your program, that function is called when
104c1213
JM
10064@code{@value{GDBN}} continues after stopping on a trap (for example, bus
10065error). The function indicated by @code{exceptionHook} is called with
10066one parameter: an @code{int} which is the exception number.
10067
10068@item
10069Compile and link together: your program, the @value{GDBN} debugging stub for
10070your target architecture, and the supporting subroutines.
10071
10072@item
10073Make sure you have a serial connection between your target machine and
10074the @value{GDBN} host, and identify the serial port on the host.
10075
10076@item
10077@c The "remote" target now provides a `load' command, so we should
10078@c document that. FIXME.
10079Download your program to your target machine (or get it there by
10080whatever means the manufacturer provides), and start it.
10081
10082@item
10083To start remote debugging, run @value{GDBN} on the host machine, and specify
10084as an executable file the program that is running in the remote machine.
10085This tells @value{GDBN} how to find your program's symbols and the contents
10086of its pure text.
10087
d4f3574e 10088@item
104c1213 10089@cindex serial line, @code{target remote}
d4f3574e 10090Establish communication using the @code{target remote} command.
104c1213
JM
10091Its argument specifies how to communicate with the target
10092machine---either via a devicename attached to a direct serial line, or a
10093TCP port (usually to a terminal server which in turn has a serial line
10094to the target). For example, to use a serial line connected to the
10095device named @file{/dev/ttyb}:
10096
10097@example
10098target remote /dev/ttyb
10099@end example
10100
10101@cindex TCP port, @code{target remote}
10102To use a TCP connection, use an argument of the form
10103@code{@var{host}:port}. For example, to connect to port 2828 on a
10104terminal server named @code{manyfarms}:
10105
10106@example
10107target remote manyfarms:2828
10108@end example
a2bea4c3
CV
10109
10110If your remote target is actually running on the same machine as
10111your debugger session (e.g.@: a simulator of your target running on
10112the same host), you can omit the hostname. For example, to connect
10113to port 1234 on your local machine:
10114
10115@example
10116target remote :1234
10117@end example
10118@noindent
10119
10120Note that the colon is still required here.
104c1213
JM
10121@end enumerate
10122
10123Now you can use all the usual commands to examine and change data and to
10124step and continue the remote program.
10125
10126To resume the remote program and stop debugging it, use the @code{detach}
10127command.
10128
10129@cindex interrupting remote programs
10130@cindex remote programs, interrupting
10131Whenever @value{GDBN} is waiting for the remote program, if you type the
10132interrupt character (often @key{C-C}), @value{GDBN} attempts to stop the
10133program. This may or may not succeed, depending in part on the hardware
10134and the serial drivers the remote system uses. If you type the
10135interrupt character once again, @value{GDBN} displays this prompt:
10136
10137@example
10138Interrupted while waiting for the program.
10139Give up (and stop debugging it)? (y or n)
10140@end example
10141
10142If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
10143(If you decide you want to try again later, you can use @samp{target
10144remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
10145goes back to waiting.
10146
6d2ebf8b 10147@node Protocol
104c1213
JM
10148@subsubsection Communication protocol
10149
10150@cindex debugging stub, example
10151@cindex remote stub, example
10152@cindex stub example, remote debugging
10153The stub files provided with @value{GDBN} implement the target side of the
10154communication protocol, and the @value{GDBN} side is implemented in the
10155@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
10156these subroutines to communicate, and ignore the details. (If you're
10157implementing your own stub file, you can still ignore the details: start
10158with one of the existing stub files. @file{sparc-stub.c} is the best
10159organized, and therefore the easiest to read.)
10160
10161However, there may be occasions when you need to know something about
10162the protocol---for example, if there is only one serial port to your
10163target machine, you might want your program to do something special if
10164it recognizes a packet meant for @value{GDBN}.
10165
10166In the examples below, @samp{<-} and @samp{->} are used to indicate
10167transmitted and received data respectfully.
10168
10169@cindex protocol, @value{GDBN} remote serial
10170@cindex serial protocol, @value{GDBN} remote
10171@cindex remote serial protocol
6cf7e474
AC
10172All @value{GDBN} commands and responses (other than acknowledgments) are
10173sent as a @var{packet}. A @var{packet} is introduced with the character
10174@samp{$}, the actual @var{packet-data}, and the terminating character
10175@samp{#} followed by a two-digit @var{checksum}:
104c1213
JM
10176
10177@example
10178@code{$}@var{packet-data}@code{#}@var{checksum}
10179@end example
10180@noindent
104c1213
JM
10181
10182@cindex checksum, for @value{GDBN} remote
10183@noindent
10184The two-digit @var{checksum} is computed as the modulo 256 sum of all
6cf7e474
AC
10185characters between the leading @samp{$} and the trailing @samp{#} (an
10186eight bit unsigned checksum).
10187
10188Implementors should note that prior to @value{GDBN} 5.0 the protocol
10189specification also included an optional two-digit @var{sequence-id}:
10190
10191@example
10192@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
10193@end example
104c1213
JM
10194
10195@cindex sequence-id, for @value{GDBN} remote
10196@noindent
6cf7e474
AC
10197That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
10198has never output @var{sequence-id}s. Stubs that handle packets added
10199since @value{GDBN} 5.0 must not accept @var{sequence-id}.
104c1213 10200
6cf7e474 10201@cindex acknowledgment, for @value{GDBN} remote
104c1213
JM
10202When either the host or the target machine receives a packet, the first
10203response expected is an acknowledgment: either @samp{+} (to indicate
10204the package was received correctly) or @samp{-} (to request
10205retransmission):
10206
10207@example
10208<- @code{$}@var{packet-data}@code{#}@var{checksum}
10209-> @code{+}
10210@end example
10211@noindent
104c1213
JM
10212
10213The host (@value{GDBN}) sends @var{command}s, and the target (the
10214debugging stub incorporated in your program) sends a @var{response}. In
10215the case of step and continue @var{command}s, the response is only sent
10216when the operation has completed (the target has again stopped).
10217
10218@var{packet-data} consists of a sequence of characters with the
6cf7e474
AC
10219exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
10220exceptions).
10221
10222Fields within the packet should be separated using @samp{,} @samp{;} or
10223@samp{:}. Except where otherwise noted all numbers are represented in
10224HEX with leading zeros suppressed.
10225
10226Implementors should note that prior to @value{GDBN} 5.0, the character
10227@samp{:} could not appear as the third character in a packet (as it
10228would potentially conflict with the @var{sequence-id}).
104c1213
JM
10229
10230Response @var{data} can be run-length encoded to save space. A @samp{*}
c3f6f71d 10231means that the next character is an @sc{ascii} encoding giving a repeat count
104c1213
JM
10232which stands for that many repetitions of the character preceding the
10233@samp{*}. The encoding is @code{n+29}, yielding a printable character
d4f3574e
SS
10234where @code{n >=3} (which is where rle starts to win). The printable
10235characters @samp{$}, @samp{#}, @samp{+} and @samp{-} or with a numeric
10236value greater than 126 should not be used.
10237
10238Some remote systems have used a different run-length encoding mechanism
10239loosely refered to as the cisco encoding. Following the @samp{*}
10240character are two hex digits that indicate the size of the packet.
104c1213
JM
10241
10242So:
10243@example
10244"@code{0* }"
10245@end example
10246@noindent
10247means the same as "0000".
10248
598ca718 10249The error response returned for some packets includes a two character
104c1213
JM
10250error number. That number is not well defined.
10251
10252For any @var{command} not supported by the stub, an empty response
10253(@samp{$#00}) should be returned. That way it is possible to extend the
10254protocol. A newer @value{GDBN} can tell if a packet is supported based
d4f3574e 10255on that response.
104c1213 10256
f1251bdd
C
10257A stub is required to support the @samp{g}, @samp{G}, @samp{m}, @samp{M},
10258@samp{c}, and @samp{s} @var{command}s. All other @var{command}s are
10259optional.
10260
104c1213
JM
10261Below is a complete list of all currently defined @var{command}s and
10262their corresponding response @var{data}:
598ca718 10263@page
104c1213
JM
10264@multitable @columnfractions .30 .30 .40
10265@item Packet
10266@tab Request
10267@tab Description
10268
df2396a1 10269@item extended mode
104c1213
JM
10270@tab @code{!}
10271@tab
df2396a1 10272Enable extended mode. In extended mode, the remote server is made
656db9b0 10273persistent. The @samp{R} packet is used to restart the program being
df2396a1 10274debugged.
104c1213 10275@item
df2396a1 10276@tab reply @samp{OK}
104c1213 10277@tab
df2396a1 10278The remote target both supports and has enabled extended mode.
104c1213
JM
10279
10280@item last signal
10281@tab @code{?}
10282@tab
d4f3574e
SS
10283Indicate the reason the target halted. The reply is the same as for step
10284and continue.
10285@item
10286@tab reply
10287@tab see below
10288
104c1213
JM
10289
10290@item reserved
10291@tab @code{a}
5d161b24 10292@tab Reserved for future use
104c1213 10293
f1251bdd 10294@item set program arguments @strong{(reserved)}
104c1213
JM
10295@tab @code{A}@var{arglen}@code{,}@var{argnum}@code{,}@var{arg}@code{,...}
10296@tab
598ca718
EZ
10297@item
10298@tab
10299@tab
104c1213
JM
10300Initialized @samp{argv[]} array passed into program. @var{arglen}
10301specifies the number of bytes in the hex encoded byte stream @var{arg}.
d4f3574e 10302See @file{gdbserver} for more details.
104c1213
JM
10303@item
10304@tab reply @code{OK}
10305@item
10306@tab reply @code{E}@var{NN}
10307
10308@item set baud @strong{(deprecated)}
10309@tab @code{b}@var{baud}
10310@tab
10311Change the serial line speed to @var{baud}. JTC: @emph{When does the
10312transport layer state change? When it's received, or after the ACK is
10313transmitted. In either case, there are problems if the command or the
10314acknowledgment packet is dropped.} Stan: @emph{If people really wanted
10315to add something like this, and get it working for the first time, they
10316ought to modify ser-unix.c to send some kind of out-of-band message to a
10317specially-setup stub and have the switch happen "in between" packets, so
10318that from remote protocol's point of view, nothing actually
10319happened.}
10320
10321@item set breakpoint @strong{(deprecated)}
10322@tab @code{B}@var{addr},@var{mode}
10323@tab
10324Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
10325breakpoint at @var{addr}. @emph{This has been replaced by the @samp{Z} and
10326@samp{z} packets.}
10327
10328@item continue
10329@tab @code{c}@var{addr}
10330@tab
10331@var{addr} is address to resume. If @var{addr} is omitted, resume at
10332current address.
10333@item
10334@tab reply
10335@tab see below
10336
f1251bdd 10337@item continue with signal
104c1213
JM
10338@tab @code{C}@var{sig}@code{;}@var{addr}
10339@tab
10340Continue with signal @var{sig} (hex signal number). If
10341@code{;}@var{addr} is omitted, resume at same address.
10342@item
10343@tab reply
10344@tab see below
10345
598ca718 10346@item toggle debug @strong{(deprecated)}
104c1213
JM
10347@tab @code{d}
10348@tab
d4f3574e 10349toggle debug flag.
104c1213 10350
f1251bdd 10351@item detach
104c1213 10352@tab @code{D}
d4f3574e 10353@tab
2df3850c
JM
10354Detach @value{GDBN} from the remote system. Sent to the remote target before
10355@value{GDBN} disconnects.
d4f3574e
SS
10356@item
10357@tab reply @emph{no response}
10358@tab
598ca718 10359@value{GDBN} does not check for any response after sending this packet.
104c1213
JM
10360
10361@item reserved
10362@tab @code{e}
5d161b24 10363@tab Reserved for future use
104c1213
JM
10364
10365@item reserved
10366@tab @code{E}
5d161b24 10367@tab Reserved for future use
104c1213
JM
10368
10369@item reserved
10370@tab @code{f}
5d161b24 10371@tab Reserved for future use
104c1213
JM
10372
10373@item reserved
10374@tab @code{F}
5d161b24 10375@tab Reserved for future use
104c1213
JM
10376
10377@item read registers
10378@tab @code{g}
10379@tab Read general registers.
10380@item
10381@tab reply @var{XX...}
10382@tab
10383Each byte of register data is described by two hex digits. The bytes
10384with the register are transmitted in target byte order. The size of
d4f3574e 10385each register and their position within the @samp{g} @var{packet} are
2df3850c 10386determined by the @value{GDBN} internal macros @var{REGISTER_RAW_SIZE} and
d4f3574e
SS
10387@var{REGISTER_NAME} macros. The specification of several standard
10388@code{g} packets is specified below.
104c1213
JM
10389@item
10390@tab @code{E}@var{NN}
10391@tab for an error.
10392
10393@item write regs
10394@tab @code{G}@var{XX...}
10395@tab
10396See @samp{g} for a description of the @var{XX...} data.
10397@item
10398@tab reply @code{OK}
10399@tab for success
10400@item
10401@tab reply @code{E}@var{NN}
10402@tab for an error
10403
10404@item reserved
10405@tab @code{h}
5d161b24 10406@tab Reserved for future use
104c1213 10407
f1251bdd 10408@item set thread
104c1213
JM
10409@tab @code{H}@var{c}@var{t...}
10410@tab
d4f3574e
SS
10411Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
10412@samp{G}, et.al.). @var{c} = @samp{c} for thread used in step and
10413continue; @var{t...} can be -1 for all threads. @var{c} = @samp{g} for
10414thread used in other operations. If zero, pick a thread, any thread.
104c1213
JM
10415@item
10416@tab reply @code{OK}
10417@tab for success
10418@item
10419@tab reply @code{E}@var{NN}
10420@tab for an error
10421
d4f3574e
SS
10422@c FIXME: JTC:
10423@c 'H': How restrictive (or permissive) is the thread model. If a
5d161b24 10424@c thread is selected and stopped, are other threads allowed
d4f3574e
SS
10425@c to continue to execute? As I mentioned above, I think the
10426@c semantics of each command when a thread is selected must be
10427@c described. For example:
10428@c
10429@c 'g': If the stub supports threads and a specific thread is
10430@c selected, returns the register block from that thread;
10431@c otherwise returns current registers.
10432@c
10433@c 'G' If the stub supports threads and a specific thread is
10434@c selected, sets the registers of the register block of
10435@c that thread; otherwise sets current registers.
10436
f1251bdd 10437@item cycle step @strong{(draft)}
104c1213
JM
10438@tab @code{i}@var{addr}@code{,}@var{nnn}
10439@tab
10440Step the remote target by a single clock cycle. If @code{,}@var{nnn} is
10441present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
10442step starting at that address.
10443
f1251bdd 10444@item signal then cycle step @strong{(reserved)}
104c1213
JM
10445@tab @code{I}
10446@tab
10447See @samp{i} and @samp{S} for likely syntax and semantics.
10448
10449@item reserved
10450@tab @code{j}
10451@tab Reserved for future use
10452
10453@item reserved
10454@tab @code{J}
5d161b24 10455@tab Reserved for future use
104c1213 10456
f1251bdd 10457@item kill request
104c1213
JM
10458@tab @code{k}
10459@tab
d4f3574e
SS
10460FIXME: @emph{There is no description of how operate when a specific
10461thread context has been selected (ie. does 'k' kill only that thread?)}.
104c1213
JM
10462
10463@item reserved
10464@tab @code{l}
5d161b24 10465@tab Reserved for future use
104c1213
JM
10466
10467@item reserved
10468@tab @code{L}
5d161b24 10469@tab Reserved for future use
104c1213
JM
10470
10471@item read memory
10472@tab @code{m}@var{addr}@code{,}@var{length}
10473@tab
10474Read @var{length} bytes of memory starting at address @var{addr}.
2df3850c 10475Neither @value{GDBN} nor the stub assume that sized memory transfers are assumed
d4f3574e
SS
10476using word alligned accesses. FIXME: @emph{A word aligned memory
10477transfer mechanism is needed.}
104c1213
JM
10478@item
10479@tab reply @var{XX...}
10480@tab
d4f3574e 10481@var{XX...} is mem contents. Can be fewer bytes than requested if able
2df3850c 10482to read only part of the data. Neither @value{GDBN} nor the stub assume that
d4f3574e
SS
10483sized memory transfers are assumed using word alligned accesses. FIXME:
10484@emph{A word aligned memory transfer mechanism is needed.}
104c1213
JM
10485@item
10486@tab reply @code{E}@var{NN}
10487@tab @var{NN} is errno
10488
10489@item write mem
10490@tab @code{M}@var{addr},@var{length}@code{:}@var{XX...}
10491@tab
10492Write @var{length} bytes of memory starting at address @var{addr}.
10493@var{XX...} is the data.
10494@item
10495@tab reply @code{OK}
10496@tab for success
10497@item
10498@tab reply @code{E}@var{NN}
10499@tab
10500for an error (this includes the case where only part of the data was
10501written).
10502
10503@item reserved
10504@tab @code{n}
5d161b24 10505@tab Reserved for future use
104c1213
JM
10506
10507@item reserved
10508@tab @code{N}
5d161b24 10509@tab Reserved for future use
104c1213
JM
10510
10511@item reserved
10512@tab @code{o}
5d161b24 10513@tab Reserved for future use
104c1213
JM
10514
10515@item reserved
10516@tab @code{O}
5d161b24 10517@tab Reserved for future use
104c1213
JM
10518
10519@item read reg @strong{(reserved)}
10520@tab @code{p}@var{n...}
10521@tab
10522See write register.
10523@item
10524@tab return @var{r....}
10525@tab The hex encoded value of the register in target byte order.
10526
f1251bdd 10527@item write reg
104c1213
JM
10528@tab @code{P}@var{n...}@code{=}@var{r...}
10529@tab
10530Write register @var{n...} with value @var{r...}, which contains two hex
10531digits for each byte in the register (target byte order).
10532@item
10533@tab reply @code{OK}
10534@tab for success
10535@item
10536@tab reply @code{E}@var{NN}
10537@tab for an error
10538
f1251bdd 10539@item general query
104c1213
JM
10540@tab @code{q}@var{query}
10541@tab
598ca718 10542Request info about @var{query}. In general @value{GDBN} queries
104c1213 10543have a leading upper case letter. Custom vendor queries should use a
d4f3574e
SS
10544company prefix (in lower case) ex: @samp{qfsf.var}. @var{query} may
10545optionally be followed by a @samp{,} or @samp{;} separated list. Stubs
10546must ensure that they match the full @var{query} name.
104c1213
JM
10547@item
10548@tab reply @code{XX...}
d4f3574e 10549@tab Hex encoded data from query. The reply can not be empty.
104c1213
JM
10550@item
10551@tab reply @code{E}@var{NN}
10552@tab error reply
10553@item
10554@tab reply @samp{}
10555@tab Indicating an unrecognized @var{query}.
10556
f1251bdd 10557@item general set
104c1213
JM
10558@tab @code{Q}@var{var}@code{=}@var{val}
10559@tab
10560Set value of @var{var} to @var{val}. See @samp{q} for a discussing of
10561naming conventions.
10562
598ca718 10563@item reset @strong{(deprecated)}
d4f3574e
SS
10564@tab @code{r}
10565@tab
10566Reset the entire system.
104c1213 10567
f1251bdd 10568@item remote restart
104c1213
JM
10569@tab @code{R}@var{XX}
10570@tab
df2396a1
AC
10571Restart the program being debugged. @var{XX}, while needed, is ignored.
10572This packet is only available in extended mode.
10573@item
10574@tab
10575no reply
10576@tab
10577The @samp{R} packet has no reply.
104c1213 10578
f1251bdd 10579@item step
104c1213
JM
10580@tab @code{s}@var{addr}
10581@tab
10582@var{addr} is address to resume. If @var{addr} is omitted, resume at
10583same address.
10584@item
10585@tab reply
10586@tab see below
10587
f1251bdd 10588@item step with signal
104c1213
JM
10589@tab @code{S}@var{sig}@code{;}@var{addr}
10590@tab
10591Like @samp{C} but step not continue.
10592@item
10593@tab reply
10594@tab see below
10595
f1251bdd 10596@item search
104c1213
JM
10597@tab @code{t}@var{addr}@code{:}@var{PP}@code{,}@var{MM}
10598@tab
10599Search backwards starting at address @var{addr} for a match with pattern
10600@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4
d4f3574e 10601bytes. @var{addr} must be at least 3 digits.
104c1213 10602
f1251bdd 10603@item thread alive
104c1213
JM
10604@tab @code{T}@var{XX}
10605@tab Find out if the thread XX is alive.
10606@item
10607@tab reply @code{OK}
10608@tab thread is still alive
10609@item
10610@tab reply @code{E}@var{NN}
10611@tab thread is dead
5d161b24 10612
104c1213
JM
10613@item reserved
10614@tab @code{u}
5d161b24 10615@tab Reserved for future use
104c1213
JM
10616
10617@item reserved
10618@tab @code{U}
5d161b24 10619@tab Reserved for future use
104c1213
JM
10620
10621@item reserved
10622@tab @code{v}
5d161b24 10623@tab Reserved for future use
104c1213
JM
10624
10625@item reserved
10626@tab @code{V}
5d161b24 10627@tab Reserved for future use
104c1213
JM
10628
10629@item reserved
10630@tab @code{w}
5d161b24 10631@tab Reserved for future use
104c1213
JM
10632
10633@item reserved
10634@tab @code{W}
5d161b24 10635@tab Reserved for future use
104c1213
JM
10636
10637@item reserved
10638@tab @code{x}
5d161b24 10639@tab Reserved for future use
104c1213 10640
f1251bdd 10641@item write mem (binary)
104c1213
JM
10642@tab @code{X}@var{addr}@code{,}@var{length}@var{:}@var{XX...}
10643@tab
10644@var{addr} is address, @var{length} is number of bytes, @var{XX...} is
d4f3574e
SS
10645binary data. The characters @code{$}, @code{#}, and @code{0x7d} are
10646escaped using @code{0x7d}.
104c1213
JM
10647@item
10648@tab reply @code{OK}
10649@tab for success
10650@item
10651@tab reply @code{E}@var{NN}
10652@tab for an error
10653
10654@item reserved
10655@tab @code{y}
5d161b24 10656@tab Reserved for future use
104c1213
JM
10657
10658@item reserved
10659@tab @code{Y}
5d161b24 10660@tab Reserved for future use
104c1213 10661
f1251bdd 10662@item remove break or watchpoint @strong{(draft)}
104c1213
JM
10663@tab @code{z}@var{t}@code{,}@var{addr}@code{,}@var{length}
10664@tab
10665See @samp{Z}.
10666
f1251bdd 10667@item insert break or watchpoint @strong{(draft)}
104c1213
JM
10668@tab @code{Z}@var{t}@code{,}@var{addr}@code{,}@var{length}
10669@tab
10670@var{t} is type: @samp{0} - software breakpoint, @samp{1} - hardware
10671breakpoint, @samp{2} - write watchpoint, @samp{3} - read watchpoint,
10672@samp{4} - access watchpoint; @var{addr} is address; @var{length} is in
10673bytes. For a software breakpoint, @var{length} specifies the size of
10674the instruction to be patched. For hardware breakpoints and watchpoints
d4f3574e
SS
10675@var{length} specifies the memory region to be monitored. To avoid
10676potential problems with duplicate packets, the operations should be
6d2ebf8b 10677implemented in an idempotent way.
104c1213
JM
10678@item
10679@tab reply @code{E}@var{NN}
10680@tab for an error
10681@item
10682@tab reply @code{OK}
10683@tab for success
10684@item
10685@tab @samp{}
10686@tab If not supported.
10687
10688@item reserved
10689@tab <other>
5d161b24 10690@tab Reserved for future use
104c1213
JM
10691
10692@end multitable
10693
d4f3574e
SS
10694The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
10695receive any of the below as a reply. In the case of the @samp{C},
10696@samp{c}, @samp{S} and @samp{s} packets, that reply is only returned
10697when the target halts. In the below the exact meaning of @samp{signal
10698number} is poorly defined. In general one of the UNIX signal numbering
10699conventions is used.
104c1213
JM
10700
10701@multitable @columnfractions .4 .6
10702
10703@item @code{S}@var{AA}
10704@tab @var{AA} is the signal number
10705
10706@item @code{T}@var{AA}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}
10707@tab
10708@var{AA} = two hex digit signal number; @var{n...} = register number
10709(hex), @var{r...} = target byte ordered register contents, size defined
10710by @code{REGISTER_RAW_SIZE}; @var{n...} = @samp{thread}, @var{r...} =
10711thread process ID, this is a hex integer; @var{n...} = other string not
d4f3574e 10712starting with valid hex digit. @value{GDBN} should ignore this
104c1213
JM
10713@var{n...}, @var{r...} pair and go on to the next. This way we can
10714extend the protocol.
10715
10716@item @code{W}@var{AA}
10717@tab
10718The process exited, and @var{AA} is the exit status. This is only
10719applicable for certains sorts of targets.
10720
10721@item @code{X}@var{AA}
10722@tab
10723The process terminated with signal @var{AA}.
10724
6d2ebf8b 10725@item @code{N}@var{AA}@code{;}@var{t...}@code{;}@var{d...}@code{;}@var{b...} @strong{(obsolete)}
104c1213 10726@tab
6d2ebf8b
SS
10727@var{AA} = signal number; @var{t...} = address of symbol "_start";
10728@var{d...} = base of data section; @var{b...} = base of bss section.
10729@emph{Note: only used by Cisco Systems targets. The difference between
10730this reply and the "qOffsets" query is that the 'N' packet may arrive
10731spontaneously whereas the 'qOffsets' is a query initiated by the host
10732debugger.}
104c1213
JM
10733
10734@item @code{O}@var{XX...}
10735@tab
c3f6f71d 10736@var{XX...} is hex encoding of @sc{ascii} data. This can happen at any time
104c1213
JM
10737while the program is running and the debugger should continue to wait
10738for 'W', 'T', etc.
10739
10740@end multitable
10741
d4f3574e
SS
10742The following set and query packets have already been defined.
10743
10744@multitable @columnfractions .2 .2 .6
10745
10746@item current thread
10747@tab @code{q}@code{C}
10748@tab Return the current thread id.
10749@item
10750@tab reply @code{QC}@var{pid}
10751@tab
10752Where @var{pid} is a HEX encoded 16 bit process id.
10753@item
10754@tab reply *
10755@tab Any other reply implies the old pid.
10756
bba2971c
MS
10757@item all thread ids
10758@tab @code{q}@code{fThreadInfo}
10759@item
10760@tab @code{q}@code{sThreadInfo}
d4f3574e 10761@tab
bba2971c
MS
10762Obtain a list of active thread ids from the target (OS). Since there
10763may be too many active threads to fit into one reply packet, this query
10764works iteratively: it may require more than one query/reply sequence to
10765obtain the entire list of threads. The first query of the sequence will
5d161b24 10766be the @code{qf}@code{ThreadInfo} query; subsequent queries in the
bba2971c 10767sequence will be the @code{qs}@code{ThreadInfo} query.
d4f3574e 10768@item
bba2971c
MS
10769@tab
10770@tab NOTE: replaces the @code{qL} query (see below).
d4f3574e 10771@item
5d161b24 10772@tab reply @code{m}@var{<id>}
bba2971c
MS
10773@tab A single thread id
10774@item
00e4a2e4 10775@tab reply @code{m}@var{<id>},@var{<id>...}
bba2971c
MS
10776@tab a comma-separated list of thread ids
10777@item
10778@tab reply @code{l}
10779@tab (lower case 'el') denotes end of list.
10780@item
10781@tab
10782@tab
10783In response to each query, the target will reply with a list of one
10784or more thread ids, in big-endian hex, separated by commas. GDB will
10785respond to each reply with a request for more thread ids (using the
10786@code{qs} form of the query), until the target responds with @code{l}
10787(lower-case el, for @code{'last'}).
10788
10789@item extra thread info
480ff1fb 10790@tab @code{q}@code{ThreadExtraInfo}@code{,}@var{id}
bba2971c
MS
10791@tab
10792@item
10793@tab
10794@tab
10795Where @var{<id>} is a thread-id in big-endian hex.
10796Obtain a printable string description of a thread's attributes from
10797the target OS. This string may contain anything that the target OS
10798thinks is interesting for @value{GDBN} to tell the user about the thread.
10799The string is displayed in @value{GDBN}'s @samp{info threads} display.
5d161b24 10800Some examples of possible thread extra info strings are "Runnable", or
bba2971c
MS
10801"Blocked on Mutex".
10802@item
10803@tab reply @var{XX...}
10804@tab
10805Where @var{XX...} is a hex encoding of @sc{ascii} data, comprising the
10806printable string containing the extra information about the thread's
10807attributes.
d4f3574e
SS
10808
10809@item query @var{LIST} or @var{threadLIST} @strong{(deprecated)}
10810@tab @code{q}@code{L}@var{startflag}@var{threadcount}@var{nextthread}
10811@tab
2b628194
MS
10812@item
10813@tab
10814@tab
d4f3574e
SS
10815Obtain thread information from RTOS. Where: @var{startflag} (one hex
10816digit) is one to indicate the first query and zero to indicate a
10817subsequent query; @var{threadcount} (two hex digits) is the maximum
10818number of threads the response packet can contain; and @var{nextthread}
10819(eight hex digits), for subsequent queries (@var{startflag} is zero), is
10820returned in the response as @var{argthread}.
10821@item
bba2971c
MS
10822@tab
10823@tab NOTE: this query is replaced by the @code{q}@code{fThreadInfo}
10824query (see above).
10825@item
d4f3574e
SS
10826@tab reply @code{q}@code{M}@var{count}@var{done}@var{argthread}@var{thread...}
10827@tab
2b628194
MS
10828@item
10829@tab
10830@tab
d4f3574e
SS
10831Where: @var{count} (two hex digits) is the number of threads being
10832returned; @var{done} (one hex digit) is zero to indicate more threads
10833and one indicates no further threads; @var{argthreadid} (eight hex
10834digits) is @var{nextthread} from the request packet; @var{thread...} is
10835a sequence of thread IDs from the target. @var{threadid} (eight hex
10836digits). See @code{remote.c:parse_threadlist_response()}.
10837
bba2971c
MS
10838@item compute CRC of memory block
10839@tab @code{q}@code{CRC:}@var{addr}@code{,}@var{length}
10840@tab
10841@item
10842@tab reply @code{E}@var{NN}
10843@tab An error (such as memory fault)
10844@item
10845@tab reply @code{C}@var{CRC32}
10846@tab A 32 bit cyclic redundancy check of the specified memory region.
10847
d4f3574e
SS
10848@item query sect offs
10849@tab @code{q}@code{Offsets}
917317f4
JM
10850@tab
10851Get section offsets that the target used when re-locating the downloaded
10852image. @emph{Note: while a @code{Bss} offset is included in the
10853response, @value{GDBN} ignores this and instead applies the @code{Data}
10854offset to the @code{Bss} section.}
d4f3574e
SS
10855@item
10856@tab reply @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
10857
10858@item thread info request
10859@tab @code{q}@code{P}@var{mode}@var{threadid}
10860@tab
598ca718
EZ
10861@item
10862@tab
10863@tab
d4f3574e
SS
10864Returns information on @var{threadid}. Where: @var{mode} is a hex
10865encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
10866@item
10867@tab reply *
10868@tab
10869See @code{remote.c:remote_unpack_thread_info_response()}.
10870
10871@item remote command
10872@tab @code{q}@code{Rcmd,}@var{COMMAND}
10873@tab
598ca718
EZ
10874@item
10875@tab
10876@tab
d4f3574e
SS
10877@var{COMMAND} (hex encoded) is passed to the local interpreter for
10878execution. Invalid commands should be reported using the output string.
10879Before the final result packet, the target may also respond with a
10880number of intermediate @code{O}@var{OUTPUT} console output
10881packets. @emph{Implementors should note that providing access to a
10882stubs's interpreter may have security implications}.
10883@item
10884@tab reply @code{OK}
10885@tab
10886A command response with no output.
10887@item
10888@tab reply @var{OUTPUT}
10889@tab
10890A command response with the hex encoded output string @var{OUTPUT}.
10891@item
10892@tab reply @code{E}@var{NN}
10893@tab
10894Indicate a badly formed request.
10895
10896@item
10897@tab reply @samp{}
10898@tab
10899When @samp{q}@samp{Rcmd} is not recognized.
10900
0f1f2b0a
MS
10901@item symbol lookup
10902@tab @code{qSymbol::}
10903@tab
10904Notify the target that @value{GDBN} is prepared to serve symbol lookup
10905requests. Accept requests from the target for the values of symbols.
10906@item
10907@tab
10908@tab
10909@item
10910@tab reply @code{OK}
10911@tab
10912The target does not need to look up any (more) symbols.
10913@item
10914@tab reply @code{qSymbol:}@var{sym_name}
10915@tab
10916The target requests the value of symbol @var{sym_name} (hex encoded).
10917@value{GDBN} may provide the value by using the
10918@code{qSymbol:}@var{sym_value}:@var{sym_name}
10919message, described below.
10920
10921@item symbol value
10922@tab @code{qSymbol:}@var{sym_value}:@var{sym_name}
10923@tab
10924Set the value of SYM_NAME to SYM_VALUE.
10925@item
10926@tab
10927@tab
10928@var{sym_name} (hex encoded) is the name of a symbol whose value
10929the target has previously requested.
10930@item
10931@tab
10932@tab
10933@var{sym_value} (hex) is the value for symbol @var{sym_name}.
10934If @value{GDBN} cannot supply a value for @var{sym_name}, then this
10935field will be empty.
10936@item
10937@tab reply @code{OK}
10938@tab
10939The target does not need to look up any (more) symbols.
10940@item
10941@tab reply @code{qSymbol:}@var{sym_name}
10942@tab
10943The target requests the value of a new symbol @var{sym_name} (hex encoded).
10944@value{GDBN} will continue to supply the values of symbols (if available),
10945until the target ceases to request them.
10946
d4f3574e
SS
10947@end multitable
10948
10949The following @samp{g}/@samp{G} packets have previously been defined.
10950In the below, some thirty-two bit registers are transferred as sixty-four
10951bits. Those registers should be zero/sign extended (which?) to fill the
10952space allocated. Register bytes are transfered in target byte order.
10953The two nibbles within a register byte are transfered most-significant -
10954least-significant.
10955
10956@multitable @columnfractions .5 .5
10957
10958@item MIPS32
10959@tab
10960All registers are transfered as thirty-two bit quantities in the order:
1096132 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
10962registers; fsr; fir; fp.
10963
10964@item MIPS64
10965@tab
10966All registers are transfered as sixty-four bit quantities (including
10967thirty-two bit registers such as @code{sr}). The ordering is the same
10968as @code{MIPS32}.
10969
10970@end multitable
10971
104c1213
JM
10972Example sequence of a target being re-started. Notice how the restart
10973does not get any direct output:
10974
10975@example
10976<- @code{R00}
10977-> @code{+}
10978@emph{target restarts}
10979<- @code{?}
10980-> @code{+}
10981-> @code{T001:1234123412341234}
10982<- @code{+}
10983@end example
10984
10985Example sequence of a target being stepped by a single instruction:
10986
10987@example
10988<- @code{G1445...}
10989-> @code{+}
10990<- @code{s}
10991-> @code{+}
10992@emph{time passes}
10993-> @code{T001:1234123412341234}
10994<- @code{+}
10995<- @code{g}
10996-> @code{+}
10997-> @code{1455...}
10998<- @code{+}
10999@end example
11000
6d2ebf8b 11001@node Server
104c1213
JM
11002@subsubsection Using the @code{gdbserver} program
11003
11004@kindex gdbserver
11005@cindex remote connection without stubs
11006@code{gdbserver} is a control program for Unix-like systems, which
11007allows you to connect your program with a remote @value{GDBN} via
11008@code{target remote}---but without linking in the usual debugging stub.
11009
11010@code{gdbserver} is not a complete replacement for the debugging stubs,
11011because it requires essentially the same operating-system facilities
11012that @value{GDBN} itself does. In fact, a system that can run
11013@code{gdbserver} to connect to a remote @value{GDBN} could also run
11014@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
11015because it is a much smaller program than @value{GDBN} itself. It is
11016also easier to port than all of @value{GDBN}, so you may be able to get
11017started more quickly on a new system by using @code{gdbserver}.
11018Finally, if you develop code for real-time systems, you may find that
11019the tradeoffs involved in real-time operation make it more convenient to
11020do as much development work as possible on another system, for example
11021by cross-compiling. You can use @code{gdbserver} to make a similar
11022choice for debugging.
11023
11024@value{GDBN} and @code{gdbserver} communicate via either a serial line
11025or a TCP connection, using the standard @value{GDBN} remote serial
11026protocol.
11027
11028@table @emph
11029@item On the target machine,
11030you need to have a copy of the program you want to debug.
11031@code{gdbserver} does not need your program's symbol table, so you can
11032strip the program if necessary to save space. @value{GDBN} on the host
11033system does all the symbol handling.
11034
11035To use the server, you must tell it how to communicate with @value{GDBN};
11036the name of your program; and the arguments for your program. The
11037syntax is:
11038
11039@smallexample
11040target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
11041@end smallexample
11042
11043@var{comm} is either a device name (to use a serial line) or a TCP
11044hostname and portnumber. For example, to debug Emacs with the argument
11045@samp{foo.txt} and communicate with @value{GDBN} over the serial port
11046@file{/dev/com1}:
11047
11048@smallexample
11049target> gdbserver /dev/com1 emacs foo.txt
11050@end smallexample
11051
11052@code{gdbserver} waits passively for the host @value{GDBN} to communicate
11053with it.
11054
11055To use a TCP connection instead of a serial line:
11056
11057@smallexample
11058target> gdbserver host:2345 emacs foo.txt
11059@end smallexample
11060
11061The only difference from the previous example is the first argument,
11062specifying that you are communicating with the host @value{GDBN} via
11063TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
11064expect a TCP connection from machine @samp{host} to local TCP port 2345.
11065(Currently, the @samp{host} part is ignored.) You can choose any number
11066you want for the port number as long as it does not conflict with any
11067TCP ports already in use on the target system (for example, @code{23} is
11068reserved for @code{telnet}).@footnote{If you choose a port number that
11069conflicts with another service, @code{gdbserver} prints an error message
d4f3574e 11070and exits.} You must use the same port number with the host @value{GDBN}
104c1213
JM
11071@code{target remote} command.
11072
11073@item On the @value{GDBN} host machine,
11074you need an unstripped copy of your program, since @value{GDBN} needs
11075symbols and debugging information. Start up @value{GDBN} as usual,
11076using the name of the local copy of your program as the first argument.
11077(You may also need the @w{@samp{--baud}} option if the serial line is
d4f3574e 11078running at anything other than 9600@dmn{bps}.) After that, use @code{target
104c1213
JM
11079remote} to establish communications with @code{gdbserver}. Its argument
11080is either a device name (usually a serial device, like
11081@file{/dev/ttyb}), or a TCP port descriptor in the form
11082@code{@var{host}:@var{PORT}}. For example:
11083
11084@smallexample
11085(@value{GDBP}) target remote /dev/ttyb
11086@end smallexample
11087
11088@noindent
11089communicates with the server via serial line @file{/dev/ttyb}, and
11090
11091@smallexample
11092(@value{GDBP}) target remote the-target:2345
11093@end smallexample
11094
11095@noindent
11096communicates via a TCP connection to port 2345 on host @w{@file{the-target}}.
11097For TCP connections, you must start up @code{gdbserver} prior to using
11098the @code{target remote} command. Otherwise you may get an error whose
11099text depends on the host system, but which usually looks something like
11100@samp{Connection refused}.
11101@end table
11102
6d2ebf8b 11103@node NetWare
104c1213
JM
11104@subsubsection Using the @code{gdbserve.nlm} program
11105
11106@kindex gdbserve.nlm
11107@code{gdbserve.nlm} is a control program for NetWare systems, which
11108allows you to connect your program with a remote @value{GDBN} via
11109@code{target remote}.
11110
11111@value{GDBN} and @code{gdbserve.nlm} communicate via a serial line,
11112using the standard @value{GDBN} remote serial protocol.
11113
11114@table @emph
11115@item On the target machine,
11116you need to have a copy of the program you want to debug.
11117@code{gdbserve.nlm} does not need your program's symbol table, so you
11118can strip the program if necessary to save space. @value{GDBN} on the
11119host system does all the symbol handling.
11120
11121To use the server, you must tell it how to communicate with
11122@value{GDBN}; the name of your program; and the arguments for your
11123program. The syntax is:
11124
5d161b24 11125@smallexample
104c1213
JM
11126load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
11127 [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
11128@end smallexample
11129
11130@var{board} and @var{port} specify the serial line; @var{baud} specifies
11131the baud rate used by the connection. @var{port} and @var{node} default
d4f3574e 11132to 0, @var{baud} defaults to 9600@dmn{bps}.
104c1213
JM
11133
11134For example, to debug Emacs with the argument @samp{foo.txt}and
5d161b24 11135communicate with @value{GDBN} over serial port number 2 or board 1
d4f3574e 11136using a 19200@dmn{bps} connection:
104c1213
JM
11137
11138@smallexample
11139load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
11140@end smallexample
11141
11142@item On the @value{GDBN} host machine,
11143you need an unstripped copy of your program, since @value{GDBN} needs
11144symbols and debugging information. Start up @value{GDBN} as usual,
11145using the name of the local copy of your program as the first argument.
11146(You may also need the @w{@samp{--baud}} option if the serial line is
d4f3574e 11147running at anything other than 9600@dmn{bps}. After that, use @code{target
104c1213
JM
11148remote} to establish communications with @code{gdbserve.nlm}. Its
11149argument is a device name (usually a serial device, like
11150@file{/dev/ttyb}). For example:
11151
11152@smallexample
11153(@value{GDBP}) target remote /dev/ttyb
11154@end smallexample
11155
11156@noindent
11157communications with the server via serial line @file{/dev/ttyb}.
11158@end table
11159
6d2ebf8b 11160@node KOD
104c1213
JM
11161@section Kernel Object Display
11162
11163@cindex kernel object display
11164@cindex kernel object
11165@cindex KOD
11166
11167Some targets support kernel object display. Using this facility,
11168@value{GDBN} communicates specially with the underlying operating system
11169and can display information about operating system-level objects such as
11170mutexes and other synchronization objects. Exactly which objects can be
11171displayed is determined on a per-OS basis.
11172
11173Use the @code{set os} command to set the operating system. This tells
11174@value{GDBN} which kernel object display module to initialize:
11175
11176@example
2df3850c 11177(@value{GDBP}) set os cisco
104c1213
JM
11178@end example
11179
11180If @code{set os} succeeds, @value{GDBN} will display some information
11181about the operating system, and will create a new @code{info} command
11182which can be used to query the target. The @code{info} command is named
11183after the operating system:
11184
11185@example
2df3850c 11186(@value{GDBP}) info cisco
104c1213
JM
11187List of Cisco Kernel Objects
11188Object Description
11189any Any and all objects
11190@end example
11191
11192Further subcommands can be used to query about particular objects known
11193by the kernel.
11194
11195There is currently no way to determine whether a given operating system
96baa820
JM
11196is supported other than to try it.
11197
11198
6d2ebf8b 11199@node Configurations
104c1213
JM
11200@chapter Configuration-Specific Information
11201
11202While nearly all @value{GDBN} commands are available for all native and
11203cross versions of the debugger, there are some exceptions. This chapter
11204describes things that are only available in certain configurations.
11205
11206There are three major categories of configurations: native
11207configurations, where the host and target are the same, embedded
11208operating system configurations, which are usually the same for several
11209different processor architectures, and bare embedded processors, which
11210are quite different from each other.
11211
11212@menu
11213* Native::
11214* Embedded OS::
11215* Embedded Processors::
11216* Architectures::
11217@end menu
11218
6d2ebf8b 11219@node Native
104c1213
JM
11220@section Native
11221
11222This section describes details specific to particular native
11223configurations.
11224
11225@menu
11226* HP-UX:: HP-UX
11227* SVR4 Process Information:: SVR4 process information
9f20bf26 11228* DJGPP Native:: Features specific to the DJGPP port
104c1213
JM
11229@end menu
11230
6d2ebf8b 11231@node HP-UX
104c1213
JM
11232@subsection HP-UX
11233
11234On HP-UX systems, if you refer to a function or variable name that
11235begins with a dollar sign, @value{GDBN} searches for a user or system
11236name first, before it searches for a convenience variable.
11237
6d2ebf8b 11238@node SVR4 Process Information
104c1213
JM
11239@subsection SVR4 process information
11240
11241@kindex /proc
11242@cindex process image
11243
11244Many versions of SVR4 provide a facility called @samp{/proc} that can be
11245used to examine the image of a running process using file-system
11246subroutines. If @value{GDBN} is configured for an operating system with
11247this facility, the command @code{info proc} is available to report on
11248several kinds of information about the process running your program.
11249@code{info proc} works only on SVR4 systems that include the
11250@code{procfs} code. This includes OSF/1 (Digital Unix), Solaris, Irix,
11251and Unixware, but not HP-UX or Linux, for example.
11252
11253@table @code
11254@kindex info proc
11255@item info proc
11256Summarize available information about the process.
11257
11258@kindex info proc mappings
11259@item info proc mappings
11260Report on the address ranges accessible in the program, with information
11261on whether your program may read, write, or execute each range.
11262
11263@kindex info proc times
11264@item info proc times
11265Starting time, user CPU time, and system CPU time for your program and
11266its children.
11267
11268@kindex info proc id
11269@item info proc id
11270Report on the process IDs related to your program: its own process ID,
11271the ID of its parent, the process group ID, and the session ID.
11272
11273@kindex info proc status
11274@item info proc status
11275General information on the state of the process. If the process is
11276stopped, this report includes the reason for stopping, and any signal
11277received.
11278
11279@item info proc all
11280Show all the above information about the process.
11281@end table
11282
9f20bf26
EZ
11283@node DJGPP Native
11284@subsection Features for Debugging @sc{djgpp} Programs
11285@cindex @sc{djgpp} debugging
11286@cindex native @sc{djgpp} debugging
11287@cindex MS-DOS-specific commands
11288
11289@sc{djgpp} is the port of @sc{gnu} development tools to MS-DOS and
11290MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
11291that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
11292top of real-mode DOS systems and their emulations.
11293
11294@value{GDBN} supports native debugging of @sc{djgpp} programs, and
11295defines a few commands specific to the @sc{djgpp} port. This
11296subsection describes those commands.
11297
11298@table @code
11299@kindex info dos
11300@item info dos
11301This is a prefix of @sc{djgpp}-specific commands which print
11302information about the target system and important OS structures.
11303
11304@kindex sysinfo
11305@cindex MS-DOS system info
11306@cindex free memory information (MS-DOS)
11307@item info dos sysinfo
11308This command displays assorted information about the underlying
11309platform: the CPU type and features, the OS version and flavor, the
11310DPMI version, and the available conventional and DPMI memory.
11311
11312@cindex GDT
11313@cindex LDT
11314@cindex IDT
11315@cindex segment descriptor tables
11316@cindex descriptor tables display
11317@item info dos gdt
11318@itemx info dos ldt
11319@itemx info dos idt
11320These 3 commands display entries from, respectively, Global, Local,
11321and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
11322tables are data structures which store a descriptor for each segment
11323that is currently in use. The segment's selector is an index into a
11324descriptor table; the table entry for that index holds the
11325descriptor's base address and limit, and its attributes and access
11326rights.
11327
11328A typical @sc{djgpp} program uses 3 segments: a code segment, a data
11329segment (used for both data and the stack), and a DOS segment (which
11330allows access to DOS/BIOS data structures and absolute addresses in
11331conventional memory). However, the DPMI host will usually define
11332additional segments in order to support the DPMI environment.
11333
11334@cindex garbled pointers
11335These commands allow to display entries from the descriptor tables.
11336Without an argument, all entries from the specified table are
11337displayed. An argument, which should be an integer expression, means
11338display a single entry whose index is given by the argument. For
11339example, here's a convenient way to display information about the
11340debugged program's data segment:
11341
11342@smallexample
11343(@value{GDBP}) info dos ldt $ds
113440x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)
11345@end smallexample
11346
11347@noindent
11348This comes in handy when you want to see whether a pointer is outside
11349the data segment's limit (i.e.@: @dfn{garbled}).
11350
11351@cindex page tables display (MS-DOS)
11352@item info dos pde
11353@itemx info dos pte
11354These two commands display entries from, respectively, the Page
11355Directory and the Page Tables. Page Directories and Page Tables are
11356data structures which control how virtual memory addresses are mapped
11357into physical addresses. A Page Table includes an entry for every
11358page of memory that is mapped into the program's address space; there
11359may be several Page Tables, each one holding up to 4096 entries. A
11360Page Directory has up to 4096 entries, one each for every Page Table
11361that is currently in use.
11362
11363Without an argument, @kbd{info dos pde} displays the entire Page
11364Directory, and @kbd{info dos pte} displays all the entries in all of
11365the Page Tables. An argument, an integer expression, given to the
11366@kbd{info dos pde} command means display only that entry from the Page
11367Directory table. An argument given to the @kbd{info dos pte} command
11368means display entries from a single Page Table, the one pointed to by
11369the specified entry in the Page Directory.
11370
11371These commands are useful when your program uses @dfn{DMA} (Direct
11372Memory Access), which needs physical addresses to program the DMA
11373controller.
11374
11375These commands are supported only with some DPMI servers.
11376
11377@cindex physical address from linear address
11378@item info dos address-pte
11379This command displays the Page Table entry for a specified linear
11380address. The argument linear address should already have the
11381appropriate segment's base address added to it, because this command
11382accepts addresses which may belong to @emph{any} segment. For
11383example, here's how to display the Page Table entry for the page where
11384the variable @code{i} is stored:
11385
11386@smallexample
11387(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i
11388Page Table entry for address 0x11a00d30:
11389Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30
11390@end smallexample
11391
11392@noindent
11393This says that @code{i} is stored at offset @code{0xd30} from the page
11394whose physical base address is @code{0x02698000}, and prints all the
11395attributes of that page.
11396
11397Note that you must cast the addresses of variables to a @code{char *},
11398since otherwise the value of @code{__djgpp_base_address}, the base
11399address of all variables and functions in a @sc{djgpp} program, will
11400be added using the rules of C pointer arithmetics: if @code{i} is
11401declared an @code{int}, @value{GDBN} will add 4 times the value of
11402@code{__djgpp_base_address} to the address of @code{i}.
11403
11404Here's another example, it displays the Page Table entry for the
11405transfer buffer:
11406
11407@smallexample
11408(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)
11409Page Table entry for address 0x29110:
11410Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110
11411@end smallexample
11412
11413@noindent
11414(The @code{+ 3} offset is because the transfer buffer's address is the
114153rd member of the @code{_go32_info_block} structure.) The output of
11416this command clearly shows that addresses in conventional memory are
11417mapped 1:1, i.e.@: the physical and linear addresses are identical.
11418
11419This command is supported only with some DPMI servers.
11420@end table
11421
6d2ebf8b 11422@node Embedded OS
104c1213
JM
11423@section Embedded Operating Systems
11424
11425This section describes configurations involving the debugging of
11426embedded operating systems that are available for several different
11427architectures.
11428
11429@menu
11430* VxWorks:: Using @value{GDBN} with VxWorks
11431@end menu
11432
11433@value{GDBN} includes the ability to debug programs running on
11434various real-time operating systems.
11435
6d2ebf8b 11436@node VxWorks
104c1213
JM
11437@subsection Using @value{GDBN} with VxWorks
11438
11439@cindex VxWorks
11440
11441@table @code
11442
11443@kindex target vxworks
11444@item target vxworks @var{machinename}
11445A VxWorks system, attached via TCP/IP. The argument @var{machinename}
11446is the target system's machine name or IP address.
11447
11448@end table
11449
11450On VxWorks, @code{load} links @var{filename} dynamically on the
11451current target system as well as adding its symbols in @value{GDBN}.
11452
11453@value{GDBN} enables developers to spawn and debug tasks running on networked
11454VxWorks targets from a Unix host. Already-running tasks spawned from
11455the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
11456both the Unix host and on the VxWorks target. The program
d4f3574e 11457@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
104c1213 11458installed with the name @code{vxgdb}, to distinguish it from a
96a2c332 11459@value{GDBN} for debugging programs on the host itself.)
104c1213
JM
11460
11461@table @code
11462@item VxWorks-timeout @var{args}
11463@kindex vxworks-timeout
5d161b24
DB
11464All VxWorks-based targets now support the option @code{vxworks-timeout}.
11465This option is set by the user, and @var{args} represents the number of
11466seconds @value{GDBN} waits for responses to rpc's. You might use this if
11467your VxWorks target is a slow software simulator or is on the far side
104c1213
JM
11468of a thin network line.
11469@end table
11470
11471The following information on connecting to VxWorks was current when
11472this manual was produced; newer releases of VxWorks may use revised
11473procedures.
11474
11475@kindex INCLUDE_RDB
11476To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
11477to include the remote debugging interface routines in the VxWorks
11478library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
11479VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
11480kernel. The resulting kernel contains @file{rdb.a}, and spawns the
11481source debugging task @code{tRdbTask} when VxWorks is booted. For more
11482information on configuring and remaking VxWorks, see the manufacturer's
11483manual.
11484@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
11485
11486Once you have included @file{rdb.a} in your VxWorks system image and set
11487your Unix execution search path to find @value{GDBN}, you are ready to
96a2c332
SS
11488run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
11489@code{vxgdb}, depending on your installation).
104c1213
JM
11490
11491@value{GDBN} comes up showing the prompt:
11492
11493@example
11494(vxgdb)
11495@end example
11496
11497@menu
11498* VxWorks Connection:: Connecting to VxWorks
11499* VxWorks Download:: VxWorks download
11500* VxWorks Attach:: Running tasks
11501@end menu
11502
6d2ebf8b 11503@node VxWorks Connection
104c1213
JM
11504@subsubsection Connecting to VxWorks
11505
11506The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
11507network. To connect to a target whose host name is ``@code{tt}'', type:
11508
11509@example
11510(vxgdb) target vxworks tt
11511@end example
11512
11513@need 750
11514@value{GDBN} displays messages like these:
11515
11516@smallexample
5d161b24 11517Attaching remote machine across net...
104c1213
JM
11518Connected to tt.
11519@end smallexample
11520
11521@need 1000
11522@value{GDBN} then attempts to read the symbol tables of any object modules
11523loaded into the VxWorks target since it was last booted. @value{GDBN} locates
11524these files by searching the directories listed in the command search
11525path (@pxref{Environment, ,Your program's environment}); if it fails
11526to find an object file, it displays a message such as:
11527
11528@example
11529prog.o: No such file or directory.
11530@end example
11531
11532When this happens, add the appropriate directory to the search path with
11533the @value{GDBN} command @code{path}, and execute the @code{target}
11534command again.
11535
6d2ebf8b 11536@node VxWorks Download
104c1213
JM
11537@subsubsection VxWorks download
11538
11539@cindex download to VxWorks
11540If you have connected to the VxWorks target and you want to debug an
11541object that has not yet been loaded, you can use the @value{GDBN}
11542@code{load} command to download a file from Unix to VxWorks
11543incrementally. The object file given as an argument to the @code{load}
11544command is actually opened twice: first by the VxWorks target in order
11545to download the code, then by @value{GDBN} in order to read the symbol
11546table. This can lead to problems if the current working directories on
11547the two systems differ. If both systems have NFS mounted the same
11548filesystems, you can avoid these problems by using absolute paths.
11549Otherwise, it is simplest to set the working directory on both systems
11550to the directory in which the object file resides, and then to reference
11551the file by its name, without any path. For instance, a program
11552@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
11553and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
11554program, type this on VxWorks:
11555
11556@example
11557-> cd "@var{vxpath}/vw/demo/rdb"
11558@end example
d4f3574e
SS
11559
11560@noindent
104c1213
JM
11561Then, in @value{GDBN}, type:
11562
11563@example
5d161b24 11564(vxgdb) cd @var{hostpath}/vw/demo/rdb
104c1213
JM
11565(vxgdb) load prog.o
11566@end example
11567
11568@value{GDBN} displays a response similar to this:
11569
11570@smallexample
11571Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
11572@end smallexample
11573
11574You can also use the @code{load} command to reload an object module
11575after editing and recompiling the corresponding source file. Note that
11576this makes @value{GDBN} delete all currently-defined breakpoints,
11577auto-displays, and convenience variables, and to clear the value
11578history. (This is necessary in order to preserve the integrity of
d4f3574e 11579debugger's data structures that reference the target system's symbol
104c1213
JM
11580table.)
11581
6d2ebf8b 11582@node VxWorks Attach
104c1213
JM
11583@subsubsection Running tasks
11584
11585@cindex running VxWorks tasks
11586You can also attach to an existing task using the @code{attach} command as
11587follows:
11588
11589@example
11590(vxgdb) attach @var{task}
11591@end example
11592
11593@noindent
11594where @var{task} is the VxWorks hexadecimal task ID. The task can be running
11595or suspended when you attach to it. Running tasks are suspended at
11596the time of attachment.
11597
6d2ebf8b 11598@node Embedded Processors
104c1213
JM
11599@section Embedded Processors
11600
11601This section goes into details specific to particular embedded
11602configurations.
11603
11604@menu
11605* A29K Embedded:: AMD A29K Embedded
11606* ARM:: ARM
11607* H8/300:: Hitachi H8/300
11608* H8/500:: Hitachi H8/500
11609* i960:: Intel i960
11610* M32R/D:: Mitsubishi M32R/D
11611* M68K:: Motorola M68K
11612* M88K:: Motorola M88K
11613* MIPS Embedded:: MIPS Embedded
11614* PA:: HP PA Embedded
11615* PowerPC: PowerPC
11616* SH:: Hitachi SH
11617* Sparclet:: Tsqware Sparclet
11618* Sparclite:: Fujitsu Sparclite
11619* ST2000:: Tandem ST2000
11620* Z8000:: Zilog Z8000
11621@end menu
11622
6d2ebf8b 11623@node A29K Embedded
104c1213
JM
11624@subsection AMD A29K Embedded
11625
11626@menu
11627* A29K UDI::
11628* A29K EB29K::
11629* Comms (EB29K):: Communications setup
11630* gdb-EB29K:: EB29K cross-debugging
11631* Remote Log:: Remote log
11632@end menu
11633
11634@table @code
11635
11636@kindex target adapt
11637@item target adapt @var{dev}
11638Adapt monitor for A29K.
11639
11640@kindex target amd-eb
11641@item target amd-eb @var{dev} @var{speed} @var{PROG}
11642@cindex AMD EB29K
11643Remote PC-resident AMD EB29K board, attached over serial lines.
11644@var{dev} is the serial device, as for @code{target remote};
11645@var{speed} allows you to specify the linespeed; and @var{PROG} is the
11646name of the program to be debugged, as it appears to DOS on the PC.
11647@xref{A29K EB29K, ,EBMON protocol for AMD29K}.
11648
11649@end table
11650
6d2ebf8b 11651@node A29K UDI
104c1213
JM
11652@subsubsection A29K UDI
11653
11654@cindex UDI
11655@cindex AMD29K via UDI
11656
11657@value{GDBN} supports AMD's UDI (``Universal Debugger Interface'')
11658protocol for debugging the a29k processor family. To use this
11659configuration with AMD targets running the MiniMON monitor, you need the
11660program @code{MONTIP}, available from AMD at no charge. You can also
11661use @value{GDBN} with the UDI-conformant a29k simulator program
11662@code{ISSTIP}, also available from AMD.
11663
11664@table @code
11665@item target udi @var{keyword}
11666@kindex udi
11667Select the UDI interface to a remote a29k board or simulator, where
11668@var{keyword} is an entry in the AMD configuration file @file{udi_soc}.
11669This file contains keyword entries which specify parameters used to
11670connect to a29k targets. If the @file{udi_soc} file is not in your
11671working directory, you must set the environment variable @samp{UDICONF}
11672to its pathname.
11673@end table
11674
6d2ebf8b 11675@node A29K EB29K
104c1213
JM
11676@subsubsection EBMON protocol for AMD29K
11677
11678@cindex EB29K board
11679@cindex running 29K programs
11680
11681AMD distributes a 29K development board meant to fit in a PC, together
11682with a DOS-hosted monitor program called @code{EBMON}. As a shorthand
11683term, this development system is called the ``EB29K''. To use
11684@value{GDBN} from a Unix system to run programs on the EB29K board, you
11685must first connect a serial cable between the PC (which hosts the EB29K
11686board) and a serial port on the Unix system. In the following, we
11687assume you've hooked the cable between the PC's @file{COM1} port and
11688@file{/dev/ttya} on the Unix system.
11689
6d2ebf8b 11690@node Comms (EB29K)
104c1213
JM
11691@subsubsection Communications setup
11692
11693The next step is to set up the PC's port, by doing something like this
11694in DOS on the PC:
11695
11696@example
11697C:\> MODE com1:9600,n,8,1,none
11698@end example
11699
11700@noindent
11701This example---run on an MS DOS 4.0 system---sets the PC port to 9600
11702bps, no parity, eight data bits, one stop bit, and no ``retry'' action;
11703you must match the communications parameters when establishing the Unix
11704end of the connection as well.
11705@c FIXME: Who knows what this "no retry action" crud from the DOS manual may
5d161b24 11706@c mean? It's optional; leave it out? ---doc@cygnus.com, 25feb91
d4f3574e
SS
11707@c
11708@c It's optional, but it's unwise to omit it: who knows what is the
11709@c default value set when the DOS machines boots? "No retry" means that
11710@c the DOS serial device driver won't retry the operation if it fails;
11711@c I understand that this is needed because the GDB serial protocol
11712@c handles any errors and retransmissions itself. ---Eli Zaretskii, 3sep99
104c1213
JM
11713
11714To give control of the PC to the Unix side of the serial line, type
11715the following at the DOS console:
11716
11717@example
11718C:\> CTTY com1
11719@end example
11720
11721@noindent
11722(Later, if you wish to return control to the DOS console, you can use
11723the command @code{CTTY con}---but you must send it over the device that
96a2c332 11724had control, in our example over the @file{COM1} serial line.)
104c1213
JM
11725
11726From the Unix host, use a communications program such as @code{tip} or
11727@code{cu} to communicate with the PC; for example,
11728
11729@example
11730cu -s 9600 -l /dev/ttya
11731@end example
11732
11733@noindent
11734The @code{cu} options shown specify, respectively, the linespeed and the
11735serial port to use. If you use @code{tip} instead, your command line
11736may look something like the following:
11737
11738@example
11739tip -9600 /dev/ttya
11740@end example
11741
11742@noindent
11743Your system may require a different name where we show
11744@file{/dev/ttya} as the argument to @code{tip}. The communications
11745parameters, including which port to use, are associated with the
11746@code{tip} argument in the ``remote'' descriptions file---normally the
11747system table @file{/etc/remote}.
11748@c FIXME: What if anything needs doing to match the "n,8,1,none" part of
11749@c the DOS side's comms setup? cu can support -o (odd
11750@c parity), -e (even parity)---apparently no settings for no parity or
11751@c for character size. Taken from stty maybe...? John points out tip
11752@c can set these as internal variables, eg ~s parity=none; man stty
11753@c suggests that it *might* work to stty these options with stdin or
11754@c stdout redirected... ---doc@cygnus.com, 25feb91
d4f3574e
SS
11755@c
11756@c There's nothing to be done for the "none" part of the DOS MODE
11757@c command. The rest of the parameters should be matched by the
11758@c baudrate, bits, and parity used by the Unix side. ---Eli Zaretskii, 3Sep99
104c1213
JM
11759
11760@kindex EBMON
11761Using the @code{tip} or @code{cu} connection, change the DOS working
11762directory to the directory containing a copy of your 29K program, then
11763start the PC program @code{EBMON} (an EB29K control program supplied
11764with your board by AMD). You should see an initial display from
11765@code{EBMON} similar to the one that follows, ending with the
11766@code{EBMON} prompt @samp{#}---
11767
11768@example
11769C:\> G:
11770
11771G:\> CD \usr\joe\work29k
11772
11773G:\USR\JOE\WORK29K> EBMON
11774Am29000 PC Coprocessor Board Monitor, version 3.0-18
11775Copyright 1990 Advanced Micro Devices, Inc.
11776Written by Gibbons and Associates, Inc.
11777
11778Enter '?' or 'H' for help
11779
11780PC Coprocessor Type = EB29K
11781I/O Base = 0x208
11782Memory Base = 0xd0000
11783
11784Data Memory Size = 2048KB
11785Available I-RAM Range = 0x8000 to 0x1fffff
11786Available D-RAM Range = 0x80002000 to 0x801fffff
11787
11788PageSize = 0x400
11789Register Stack Size = 0x800
11790Memory Stack Size = 0x1800
11791
11792CPU PRL = 0x3
11793Am29027 Available = No
11794Byte Write Available = Yes
11795
11796# ~.
11797@end example
11798
11799Then exit the @code{cu} or @code{tip} program (done in the example by
11800typing @code{~.} at the @code{EBMON} prompt). @code{EBMON} keeps
11801running, ready for @value{GDBN} to take over.
11802
11803For this example, we've assumed what is probably the most convenient
11804way to make sure the same 29K program is on both the PC and the Unix
d4f3574e 11805system: a PC/NFS connection that establishes ``drive @file{G:}'' on the
104c1213
JM
11806PC as a file system on the Unix host. If you do not have PC/NFS or
11807something similar connecting the two systems, you must arrange some
11808other way---perhaps floppy-disk transfer---of getting the 29K program
11809from the Unix system to the PC; @value{GDBN} does @emph{not} download it over the
11810serial line.
11811
6d2ebf8b 11812@node gdb-EB29K
104c1213
JM
11813@subsubsection EB29K cross-debugging
11814
11815Finally, @code{cd} to the directory containing an image of your 29K
11816program on the Unix system, and start @value{GDBN}---specifying as argument the
11817name of your 29K program:
11818
11819@example
11820cd /usr/joe/work29k
11821@value{GDBP} myfoo
11822@end example
11823
11824@need 500
11825Now you can use the @code{target} command:
11826
11827@example
11828target amd-eb /dev/ttya 9600 MYFOO
11829@c FIXME: test above 'target amd-eb' as spelled, with caps! caps are meant to
11830@c emphasize that this is the name as seen by DOS (since I think DOS is
11831@c single-minded about case of letters). ---doc@cygnus.com, 25feb91
11832@end example
11833
11834@noindent
11835In this example, we've assumed your program is in a file called
11836@file{myfoo}. Note that the filename given as the last argument to
11837@code{target amd-eb} should be the name of the program as it appears to DOS.
11838In our example this is simply @code{MYFOO}, but in general it can include
11839a DOS path, and depending on your transfer mechanism may not resemble
11840the name on the Unix side.
11841
11842At this point, you can set any breakpoints you wish; when you are ready
11843to see your program run on the 29K board, use the @value{GDBN} command
11844@code{run}.
11845
11846To stop debugging the remote program, use the @value{GDBN} @code{detach}
11847command.
11848
11849To return control of the PC to its console, use @code{tip} or @code{cu}
11850once again, after your @value{GDBN} session has concluded, to attach to
11851@code{EBMON}. You can then type the command @code{q} to shut down
11852@code{EBMON}, returning control to the DOS command-line interpreter.
d4f3574e 11853Type @kbd{CTTY con} to return command input to the main DOS console,
104c1213
JM
11854and type @kbd{~.} to leave @code{tip} or @code{cu}.
11855
6d2ebf8b 11856@node Remote Log
104c1213 11857@subsubsection Remote log
41afff9a 11858@cindex @file{eb.log}, a log file for EB29K
104c1213
JM
11859@cindex log file for EB29K
11860
11861The @code{target amd-eb} command creates a file @file{eb.log} in the
11862current working directory, to help debug problems with the connection.
11863@file{eb.log} records all the output from @code{EBMON}, including echoes
11864of the commands sent to it. Running @samp{tail -f} on this file in
11865another window often helps to understand trouble with @code{EBMON}, or
11866unexpected events on the PC side of the connection.
11867
6d2ebf8b 11868@node ARM
104c1213
JM
11869@subsection ARM
11870
11871@table @code
11872
11873@kindex target rdi
11874@item target rdi @var{dev}
11875ARM Angel monitor, via RDI library interface to ADP protocol. You may
11876use this target to communicate with both boards running the Angel
11877monitor, or with the EmbeddedICE JTAG debug device.
5d161b24 11878
104c1213
JM
11879@kindex target rdp
11880@item target rdp @var{dev}
11881ARM Demon monitor.
11882
11883@end table
11884
6d2ebf8b 11885@node H8/300
104c1213
JM
11886@subsection Hitachi H8/300
11887
11888@table @code
11889
d4f3574e 11890@kindex target hms@r{, with H8/300}
104c1213
JM
11891@item target hms @var{dev}
11892A Hitachi SH, H8/300, or H8/500 board, attached via serial line to your host.
11893Use special commands @code{device} and @code{speed} to control the serial
11894line and the communications speed used.
11895
d4f3574e 11896@kindex target e7000@r{, with H8/300}
104c1213
JM
11897@item target e7000 @var{dev}
11898E7000 emulator for Hitachi H8 and SH.
11899
d4f3574e
SS
11900@kindex target sh3@r{, with H8/300}
11901@kindex target sh3e@r{, with H8/300}
104c1213 11902@item target sh3 @var{dev}
96a2c332 11903@itemx target sh3e @var{dev}
104c1213
JM
11904Hitachi SH-3 and SH-3E target systems.
11905
11906@end table
11907
11908@cindex download to H8/300 or H8/500
11909@cindex H8/300 or H8/500 download
11910@cindex download to Hitachi SH
11911@cindex Hitachi SH download
11912When you select remote debugging to a Hitachi SH, H8/300, or H8/500
11913board, the @code{load} command downloads your program to the Hitachi
11914board and also opens it as the current executable target for
11915@value{GDBN} on your host (like the @code{file} command).
11916
11917@value{GDBN} needs to know these things to talk to your
5d161b24 11918Hitachi SH, H8/300, or H8/500:
104c1213
JM
11919
11920@enumerate
11921@item
11922that you want to use @samp{target hms}, the remote debugging interface
11923for Hitachi microprocessors, or @samp{target e7000}, the in-circuit
11924emulator for the Hitachi SH and the Hitachi 300H. (@samp{target hms} is
2df3850c 11925the default when @value{GDBN} is configured specifically for the Hitachi SH,
104c1213
JM
11926H8/300, or H8/500.)
11927
11928@item
11929what serial device connects your host to your Hitachi board (the first
11930serial device available on your host is the default).
11931
11932@item
11933what speed to use over the serial device.
11934@end enumerate
11935
11936@menu
11937* Hitachi Boards:: Connecting to Hitachi boards.
11938* Hitachi ICE:: Using the E7000 In-Circuit Emulator.
11939* Hitachi Special:: Special @value{GDBN} commands for Hitachi micros.
11940@end menu
11941
6d2ebf8b 11942@node Hitachi Boards
104c1213
JM
11943@subsubsection Connecting to Hitachi boards
11944
11945@c only for Unix hosts
11946@kindex device
11947@cindex serial device, Hitachi micros
96a2c332 11948Use the special @code{@value{GDBN}} command @samp{device @var{port}} if you
104c1213
JM
11949need to explicitly set the serial device. The default @var{port} is the
11950first available port on your host. This is only necessary on Unix
11951hosts, where it is typically something like @file{/dev/ttya}.
11952
11953@kindex speed
11954@cindex serial line speed, Hitachi micros
96a2c332 11955@code{@value{GDBN}} has another special command to set the communications
104c1213 11956speed: @samp{speed @var{bps}}. This command also is only used from Unix
2df3850c 11957hosts; on DOS hosts, set the line speed as usual from outside @value{GDBN} with
d4f3574e
SS
11958the DOS @code{mode} command (for instance,
11959@w{@kbd{mode com2:9600,n,8,1,p}} for a 9600@dmn{bps} connection).
104c1213
JM
11960
11961The @samp{device} and @samp{speed} commands are available only when you
11962use a Unix host to debug your Hitachi microprocessor programs. If you
11963use a DOS host,
11964@value{GDBN} depends on an auxiliary terminate-and-stay-resident program
11965called @code{asynctsr} to communicate with the development board
11966through a PC serial port. You must also use the DOS @code{mode} command
11967to set up the serial port on the DOS side.
11968
11969The following sample session illustrates the steps needed to start a
11970program under @value{GDBN} control on an H8/300. The example uses a
11971sample H8/300 program called @file{t.x}. The procedure is the same for
11972the Hitachi SH and the H8/500.
11973
11974First hook up your development board. In this example, we use a
11975board attached to serial port @code{COM2}; if you use a different serial
11976port, substitute its name in the argument of the @code{mode} command.
11977When you call @code{asynctsr}, the auxiliary comms program used by the
d4f3574e 11978debugger, you give it just the numeric part of the serial port's name;
104c1213
JM
11979for example, @samp{asyncstr 2} below runs @code{asyncstr} on
11980@code{COM2}.
11981
11982@example
11983C:\H8300\TEST> asynctsr 2
11984C:\H8300\TEST> mode com2:9600,n,8,1,p
11985
11986Resident portion of MODE loaded
11987
11988COM2: 9600, n, 8, 1, p
11989
11990@end example
11991
11992@quotation
11993@emph{Warning:} We have noticed a bug in PC-NFS that conflicts with
11994@code{asynctsr}. If you also run PC-NFS on your DOS host, you may need to
11995disable it, or even boot without it, to use @code{asynctsr} to control
11996your development board.
11997@end quotation
11998
d4f3574e 11999@kindex target hms@r{, and serial protocol}
104c1213
JM
12000Now that serial communications are set up, and the development board is
12001connected, you can start up @value{GDBN}. Call @code{@value{GDBP}} with
96a2c332 12002the name of your program as the argument. @code{@value{GDBN}} prompts
104c1213
JM
12003you, as usual, with the prompt @samp{(@value{GDBP})}. Use two special
12004commands to begin your debugging session: @samp{target hms} to specify
12005cross-debugging to the Hitachi board, and the @code{load} command to
12006download your program to the board. @code{load} displays the names of
12007the program's sections, and a @samp{*} for each 2K of data downloaded.
12008(If you want to refresh @value{GDBN} data on symbols or on the
12009executable file without downloading, use the @value{GDBN} commands
12010@code{file} or @code{symbol-file}. These commands, and @code{load}
12011itself, are described in @ref{Files,,Commands to specify files}.)
12012
12013@smallexample
12014(eg-C:\H8300\TEST) @value{GDBP} t.x
2df3850c 12015@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 12016 of it under certain conditions; type "show copying" to see
104c1213 12017 the conditions.
5d161b24 12018There is absolutely no warranty for @value{GDBN}; type "show warranty"
104c1213 12019for details.
2df3850c
JM
12020@value{GDBN} @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
12021(@value{GDBP}) target hms
104c1213 12022Connected to remote H8/300 HMS system.
2df3850c 12023(@value{GDBP}) load t.x
104c1213
JM
12024.text : 0x8000 .. 0xabde ***********
12025.data : 0xabde .. 0xad30 *
12026.stack : 0xf000 .. 0xf014 *
12027@end smallexample
12028
12029At this point, you're ready to run or debug your program. From here on,
12030you can use all the usual @value{GDBN} commands. The @code{break} command
12031sets breakpoints; the @code{run} command starts your program;
12032@code{print} or @code{x} display data; the @code{continue} command
12033resumes execution after stopping at a breakpoint. You can use the
12034@code{help} command at any time to find out more about @value{GDBN} commands.
12035
12036Remember, however, that @emph{operating system} facilities aren't
12037available on your development board; for example, if your program hangs,
12038you can't send an interrupt---but you can press the @sc{reset} switch!
12039
12040Use the @sc{reset} button on the development board
12041@itemize @bullet
12042@item
12043to interrupt your program (don't use @kbd{ctl-C} on the DOS host---it has
12044no way to pass an interrupt signal to the development board); and
12045
12046@item
12047to return to the @value{GDBN} command prompt after your program finishes
12048normally. The communications protocol provides no other way for @value{GDBN}
12049to detect program completion.
12050@end itemize
12051
12052In either case, @value{GDBN} sees the effect of a @sc{reset} on the
12053development board as a ``normal exit'' of your program.
12054
6d2ebf8b 12055@node Hitachi ICE
104c1213
JM
12056@subsubsection Using the E7000 in-circuit emulator
12057
d4f3574e 12058@kindex target e7000@r{, with Hitachi ICE}
104c1213
JM
12059You can use the E7000 in-circuit emulator to develop code for either the
12060Hitachi SH or the H8/300H. Use one of these forms of the @samp{target
12061e7000} command to connect @value{GDBN} to your E7000:
12062
12063@table @code
12064@item target e7000 @var{port} @var{speed}
12065Use this form if your E7000 is connected to a serial port. The
12066@var{port} argument identifies what serial port to use (for example,
12067@samp{com2}). The third argument is the line speed in bits per second
12068(for example, @samp{9600}).
12069
12070@item target e7000 @var{hostname}
12071If your E7000 is installed as a host on a TCP/IP network, you can just
12072specify its hostname; @value{GDBN} uses @code{telnet} to connect.
12073@end table
12074
6d2ebf8b 12075@node Hitachi Special
104c1213
JM
12076@subsubsection Special @value{GDBN} commands for Hitachi micros
12077
12078Some @value{GDBN} commands are available only for the H8/300:
12079
12080@table @code
12081
12082@kindex set machine
12083@kindex show machine
12084@item set machine h8300
12085@itemx set machine h8300h
12086Condition @value{GDBN} for one of the two variants of the H8/300
12087architecture with @samp{set machine}. You can use @samp{show machine}
12088to check which variant is currently in effect.
12089
12090@end table
12091
6d2ebf8b 12092@node H8/500
104c1213
JM
12093@subsection H8/500
12094
12095@table @code
12096
12097@kindex set memory @var{mod}
12098@cindex memory models, H8/500
12099@item set memory @var{mod}
12100@itemx show memory
12101Specify which H8/500 memory model (@var{mod}) you are using with
12102@samp{set memory}; check which memory model is in effect with @samp{show
12103memory}. The accepted values for @var{mod} are @code{small},
12104@code{big}, @code{medium}, and @code{compact}.
12105
12106@end table
12107
6d2ebf8b 12108@node i960
104c1213
JM
12109@subsection Intel i960
12110
12111@table @code
12112
12113@kindex target mon960
12114@item target mon960 @var{dev}
12115MON960 monitor for Intel i960.
12116
f0ca3dce 12117@kindex target nindy
104c1213
JM
12118@item target nindy @var{devicename}
12119An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
12120the name of the serial device to use for the connection, e.g.
12121@file{/dev/ttya}.
12122
12123@end table
12124
12125@cindex Nindy
12126@cindex i960
12127@dfn{Nindy} is a ROM Monitor program for Intel 960 target systems. When
12128@value{GDBN} is configured to control a remote Intel 960 using Nindy, you can
12129tell @value{GDBN} how to connect to the 960 in several ways:
12130
12131@itemize @bullet
12132@item
12133Through command line options specifying serial port, version of the
12134Nindy protocol, and communications speed;
12135
12136@item
12137By responding to a prompt on startup;
12138
12139@item
12140By using the @code{target} command at any point during your @value{GDBN}
12141session. @xref{Target Commands, ,Commands for managing targets}.
12142
104c1213
JM
12143@end itemize
12144
12145@cindex download to Nindy-960
12146With the Nindy interface to an Intel 960 board, @code{load}
12147downloads @var{filename} to the 960 as well as adding its symbols in
12148@value{GDBN}.
12149
12150@menu
12151* Nindy Startup:: Startup with Nindy
12152* Nindy Options:: Options for Nindy
12153* Nindy Reset:: Nindy reset command
12154@end menu
12155
6d2ebf8b 12156@node Nindy Startup
104c1213
JM
12157@subsubsection Startup with Nindy
12158
12159If you simply start @code{@value{GDBP}} without using any command-line
12160options, you are prompted for what serial port to use, @emph{before} you
12161reach the ordinary @value{GDBN} prompt:
12162
12163@example
5d161b24 12164Attach /dev/ttyNN -- specify NN, or "quit" to quit:
104c1213
JM
12165@end example
12166
12167@noindent
12168Respond to the prompt with whatever suffix (after @samp{/dev/tty})
12169identifies the serial port you want to use. You can, if you choose,
12170simply start up with no Nindy connection by responding to the prompt
12171with an empty line. If you do this and later wish to attach to Nindy,
12172use @code{target} (@pxref{Target Commands, ,Commands for managing targets}).
12173
6d2ebf8b 12174@node Nindy Options
104c1213
JM
12175@subsubsection Options for Nindy
12176
12177These are the startup options for beginning your @value{GDBN} session with a
12178Nindy-960 board attached:
12179
12180@table @code
12181@item -r @var{port}
12182Specify the serial port name of a serial interface to be used to connect
12183to the target system. This option is only available when @value{GDBN} is
12184configured for the Intel 960 target architecture. You may specify
12185@var{port} as any of: a full pathname (e.g. @samp{-r /dev/ttya}), a
12186device name in @file{/dev} (e.g. @samp{-r ttya}), or simply the unique
12187suffix for a specific @code{tty} (e.g. @samp{-r a}).
12188
12189@item -O
12190(An uppercase letter ``O'', not a zero.) Specify that @value{GDBN} should use
12191the ``old'' Nindy monitor protocol to connect to the target system.
12192This option is only available when @value{GDBN} is configured for the Intel 960
12193target architecture.
12194
12195@quotation
12196@emph{Warning:} if you specify @samp{-O}, but are actually trying to
12197connect to a target system that expects the newer protocol, the connection
12198fails, appearing to be a speed mismatch. @value{GDBN} repeatedly
12199attempts to reconnect at several different line speeds. You can abort
12200this process with an interrupt.
12201@end quotation
12202
12203@item -brk
12204Specify that @value{GDBN} should first send a @code{BREAK} signal to the target
12205system, in an attempt to reset it, before connecting to a Nindy target.
12206
12207@quotation
12208@emph{Warning:} Many target systems do not have the hardware that this
12209requires; it only works with a few boards.
12210@end quotation
12211@end table
12212
12213The standard @samp{-b} option controls the line speed used on the serial
12214port.
12215
12216@c @group
6d2ebf8b 12217@node Nindy Reset
104c1213
JM
12218@subsubsection Nindy reset command
12219
12220@table @code
12221@item reset
12222@kindex reset
12223For a Nindy target, this command sends a ``break'' to the remote target
12224system; this is only useful if the target has been equipped with a
12225circuit to perform a hard reset (or some other interesting action) when
12226a break is detected.
12227@end table
12228@c @end group
12229
6d2ebf8b 12230@node M32R/D
104c1213
JM
12231@subsection Mitsubishi M32R/D
12232
12233@table @code
12234
12235@kindex target m32r
12236@item target m32r @var{dev}
12237Mitsubishi M32R/D ROM monitor.
12238
12239@end table
12240
6d2ebf8b 12241@node M68K
104c1213
JM
12242@subsection M68k
12243
12244The Motorola m68k configuration includes ColdFire support, and
12245target command for the following ROM monitors.
12246
12247@table @code
12248
12249@kindex target abug
12250@item target abug @var{dev}
12251ABug ROM monitor for M68K.
12252
12253@kindex target cpu32bug
12254@item target cpu32bug @var{dev}
12255CPU32BUG monitor, running on a CPU32 (M68K) board.
12256
12257@kindex target dbug
12258@item target dbug @var{dev}
12259dBUG ROM monitor for Motorola ColdFire.
12260
12261@kindex target est
12262@item target est @var{dev}
12263EST-300 ICE monitor, running on a CPU32 (M68K) board.
12264
12265@kindex target rom68k
12266@item target rom68k @var{dev}
12267ROM 68K monitor, running on an M68K IDP board.
12268
12269@end table
12270
12271If @value{GDBN} is configured with @code{m68*-ericsson-*}, it will
12272instead have only a single special target command:
12273
12274@table @code
12275
12276@kindex target es1800
12277@item target es1800 @var{dev}
12278ES-1800 emulator for M68K.
12279
12280@end table
12281
12282[context?]
12283
12284@table @code
12285
12286@kindex target rombug
12287@item target rombug @var{dev}
12288ROMBUG ROM monitor for OS/9000.
12289
12290@end table
12291
6d2ebf8b 12292@node M88K
104c1213
JM
12293@subsection M88K
12294
12295@table @code
12296
12297@kindex target bug
12298@item target bug @var{dev}
12299BUG monitor, running on a MVME187 (m88k) board.
12300
12301@end table
12302
6d2ebf8b 12303@node MIPS Embedded
104c1213
JM
12304@subsection MIPS Embedded
12305
12306@cindex MIPS boards
12307@value{GDBN} can use the MIPS remote debugging protocol to talk to a
12308MIPS board attached to a serial line. This is available when
12309you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
12310
12311@need 1000
12312Use these @value{GDBN} commands to specify the connection to your target board:
12313
12314@table @code
12315@item target mips @var{port}
12316@kindex target mips @var{port}
12317To run a program on the board, start up @code{@value{GDBP}} with the
12318name of your program as the argument. To connect to the board, use the
12319command @samp{target mips @var{port}}, where @var{port} is the name of
12320the serial port connected to the board. If the program has not already
12321been downloaded to the board, you may use the @code{load} command to
12322download it. You can then use all the usual @value{GDBN} commands.
12323
12324For example, this sequence connects to the target board through a serial
12325port, and loads and runs a program called @var{prog} through the
12326debugger:
12327
12328@example
12329host$ @value{GDBP} @var{prog}
2df3850c
JM
12330@value{GDBN} is free software and @dots{}
12331(@value{GDBP}) target mips /dev/ttyb
12332(@value{GDBP}) load @var{prog}
12333(@value{GDBP}) run
104c1213
JM
12334@end example
12335
12336@item target mips @var{hostname}:@var{portnumber}
12337On some @value{GDBN} host configurations, you can specify a TCP
12338connection (for instance, to a serial line managed by a terminal
12339concentrator) instead of a serial port, using the syntax
12340@samp{@var{hostname}:@var{portnumber}}.
12341
12342@item target pmon @var{port}
12343@kindex target pmon @var{port}
12344PMON ROM monitor.
12345
12346@item target ddb @var{port}
12347@kindex target ddb @var{port}
12348NEC's DDB variant of PMON for Vr4300.
12349
12350@item target lsi @var{port}
12351@kindex target lsi @var{port}
12352LSI variant of PMON.
12353
12354@kindex target r3900
12355@item target r3900 @var{dev}
12356Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
12357
12358@kindex target array
12359@item target array @var{dev}
12360Array Tech LSI33K RAID controller board.
12361
12362@end table
12363
12364
12365@noindent
12366@value{GDBN} also supports these special commands for MIPS targets:
12367
12368@table @code
12369@item set processor @var{args}
12370@itemx show processor
12371@kindex set processor @var{args}
12372@kindex show processor
12373Use the @code{set processor} command to set the type of MIPS
12374processor when you want to access processor-type-specific registers.
5d161b24 12375For example, @code{set processor @var{r3041}} tells @value{GDBN}
96c405b3 12376to use the CPU registers appropriate for the 3041 chip.
5d161b24 12377Use the @code{show processor} command to see what MIPS processor @value{GDBN}
104c1213 12378is using. Use the @code{info reg} command to see what registers
5d161b24 12379@value{GDBN} is using.
104c1213
JM
12380
12381@item set mipsfpu double
12382@itemx set mipsfpu single
12383@itemx set mipsfpu none
12384@itemx show mipsfpu
12385@kindex set mipsfpu
12386@kindex show mipsfpu
12387@cindex MIPS remote floating point
12388@cindex floating point, MIPS remote
12389If your target board does not support the MIPS floating point
12390coprocessor, you should use the command @samp{set mipsfpu none} (if you
96a2c332 12391need this, you may wish to put the command in your @value{GDBN} init
104c1213
JM
12392file). This tells @value{GDBN} how to find the return value of
12393functions which return floating point values. It also allows
12394@value{GDBN} to avoid saving the floating point registers when calling
12395functions on the board. If you are using a floating point coprocessor
12396with only single precision floating point support, as on the @sc{r4650}
12397processor, use the command @samp{set mipsfpu single}. The default
12398double precision floating point coprocessor may be selected using
12399@samp{set mipsfpu double}.
12400
12401In previous versions the only choices were double precision or no
12402floating point, so @samp{set mipsfpu on} will select double precision
12403and @samp{set mipsfpu off} will select no floating point.
12404
12405As usual, you can inquire about the @code{mipsfpu} variable with
12406@samp{show mipsfpu}.
12407
12408@item set remotedebug @var{n}
12409@itemx show remotedebug
d4f3574e
SS
12410@kindex set remotedebug@r{, MIPS protocol}
12411@kindex show remotedebug@r{, MIPS protocol}
104c1213
JM
12412@cindex @code{remotedebug}, MIPS protocol
12413@cindex MIPS @code{remotedebug} protocol
12414@c FIXME! For this to be useful, you must know something about the MIPS
12415@c FIXME...protocol. Where is it described?
12416You can see some debugging information about communications with the board
12417by setting the @code{remotedebug} variable. If you set it to @code{1} using
12418@samp{set remotedebug 1}, every packet is displayed. If you set it
12419to @code{2}, every character is displayed. You can check the current value
12420at any time with the command @samp{show remotedebug}.
12421
12422@item set timeout @var{seconds}
12423@itemx set retransmit-timeout @var{seconds}
12424@itemx show timeout
12425@itemx show retransmit-timeout
12426@cindex @code{timeout}, MIPS protocol
12427@cindex @code{retransmit-timeout}, MIPS protocol
12428@kindex set timeout
12429@kindex show timeout
12430@kindex set retransmit-timeout
12431@kindex show retransmit-timeout
12432You can control the timeout used while waiting for a packet, in the MIPS
12433remote protocol, with the @code{set timeout @var{seconds}} command. The
12434default is 5 seconds. Similarly, you can control the timeout used while
12435waiting for an acknowledgement of a packet with the @code{set
12436retransmit-timeout @var{seconds}} command. The default is 3 seconds.
12437You can inspect both values with @code{show timeout} and @code{show
12438retransmit-timeout}. (These commands are @emph{only} available when
12439@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
12440
12441The timeout set by @code{set timeout} does not apply when @value{GDBN}
12442is waiting for your program to stop. In that case, @value{GDBN} waits
12443forever because it has no way of knowing how long the program is going
12444to run before stopping.
12445@end table
12446
6d2ebf8b 12447@node PowerPC
104c1213
JM
12448@subsection PowerPC
12449
12450@table @code
12451
12452@kindex target dink32
12453@item target dink32 @var{dev}
12454DINK32 ROM monitor.
12455
12456@kindex target ppcbug
12457@item target ppcbug @var{dev}
12458@kindex target ppcbug1
12459@item target ppcbug1 @var{dev}
12460PPCBUG ROM monitor for PowerPC.
12461
12462@kindex target sds
12463@item target sds @var{dev}
12464SDS monitor, running on a PowerPC board (such as Motorola's ADS).
12465
12466@end table
12467
6d2ebf8b 12468@node PA
104c1213
JM
12469@subsection HP PA Embedded
12470
12471@table @code
12472
12473@kindex target op50n
12474@item target op50n @var{dev}
12475OP50N monitor, running on an OKI HPPA board.
12476
12477@kindex target w89k
12478@item target w89k @var{dev}
12479W89K monitor, running on a Winbond HPPA board.
12480
12481@end table
12482
6d2ebf8b 12483@node SH
104c1213
JM
12484@subsection Hitachi SH
12485
12486@table @code
12487
d4f3574e 12488@kindex target hms@r{, with Hitachi SH}
104c1213
JM
12489@item target hms @var{dev}
12490A Hitachi SH board attached via serial line to your host. Use special
12491commands @code{device} and @code{speed} to control the serial line and
12492the communications speed used.
12493
d4f3574e 12494@kindex target e7000@r{, with Hitachi SH}
104c1213
JM
12495@item target e7000 @var{dev}
12496E7000 emulator for Hitachi SH.
12497
d4f3574e
SS
12498@kindex target sh3@r{, with SH}
12499@kindex target sh3e@r{, with SH}
104c1213
JM
12500@item target sh3 @var{dev}
12501@item target sh3e @var{dev}
12502Hitachi SH-3 and SH-3E target systems.
12503
12504@end table
12505
6d2ebf8b 12506@node Sparclet
104c1213
JM
12507@subsection Tsqware Sparclet
12508
12509@cindex Sparclet
12510
5d161b24
DB
12511@value{GDBN} enables developers to debug tasks running on
12512Sparclet targets from a Unix host.
104c1213
JM
12513@value{GDBN} uses code that runs on
12514both the Unix host and on the Sparclet target. The program
5d161b24 12515@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213
JM
12516
12517@table @code
f0ca3dce 12518@item remotetimeout @var{args}
104c1213 12519@kindex remotetimeout
5d161b24
DB
12520@value{GDBN} supports the option @code{remotetimeout}.
12521This option is set by the user, and @var{args} represents the number of
12522seconds @value{GDBN} waits for responses.
104c1213
JM
12523@end table
12524
41afff9a 12525@cindex compiling, on Sparclet
5d161b24 12526When compiling for debugging, include the options @samp{-g} to get debug
d4f3574e 12527information and @samp{-Ttext} to relocate the program to where you wish to
5d161b24 12528load it on the target. You may also want to add the options @samp{-n} or
d4f3574e 12529@samp{-N} in order to reduce the size of the sections. Example:
104c1213
JM
12530
12531@example
12532sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
12533@end example
12534
d4f3574e 12535You can use @code{objdump} to verify that the addresses are what you intended:
104c1213
JM
12536
12537@example
12538sparclet-aout-objdump --headers --syms prog
12539@end example
12540
41afff9a 12541@cindex running, on Sparclet
104c1213
JM
12542Once you have set
12543your Unix execution search path to find @value{GDBN}, you are ready to
5d161b24 12544run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
104c1213
JM
12545(or @code{sparclet-aout-gdb}, depending on your installation).
12546
12547@value{GDBN} comes up showing the prompt:
12548
12549@example
12550(gdbslet)
12551@end example
12552
12553@menu
12554* Sparclet File:: Setting the file to debug
12555* Sparclet Connection:: Connecting to Sparclet
12556* Sparclet Download:: Sparclet download
5d161b24 12557* Sparclet Execution:: Running and debugging
104c1213
JM
12558@end menu
12559
6d2ebf8b 12560@node Sparclet File
104c1213
JM
12561@subsubsection Setting file to debug
12562
12563The @value{GDBN} command @code{file} lets you choose with program to debug.
12564
12565@example
12566(gdbslet) file prog
12567@end example
12568
12569@need 1000
12570@value{GDBN} then attempts to read the symbol table of @file{prog}.
12571@value{GDBN} locates
12572the file by searching the directories listed in the command search
12573path.
12574If the file was compiled with debug information (option "-g"), source
12575files will be searched as well.
12576@value{GDBN} locates
12577the source files by searching the directories listed in the directory search
12578path (@pxref{Environment, ,Your program's environment}).
12579If it fails
12580to find a file, it displays a message such as:
12581
12582@example
12583prog: No such file or directory.
12584@end example
12585
12586When this happens, add the appropriate directories to the search paths with
5d161b24 12587the @value{GDBN} commands @code{path} and @code{dir}, and execute the
104c1213
JM
12588@code{target} command again.
12589
6d2ebf8b 12590@node Sparclet Connection
104c1213
JM
12591@subsubsection Connecting to Sparclet
12592
12593The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
12594To connect to a target on serial port ``@code{ttya}'', type:
12595
12596@example
12597(gdbslet) target sparclet /dev/ttya
12598Remote target sparclet connected to /dev/ttya
5d161b24 12599main () at ../prog.c:3
104c1213
JM
12600@end example
12601
12602@need 750
12603@value{GDBN} displays messages like these:
12604
d4f3574e 12605@example
104c1213 12606Connected to ttya.
d4f3574e 12607@end example
104c1213 12608
6d2ebf8b 12609@node Sparclet Download
104c1213
JM
12610@subsubsection Sparclet download
12611
12612@cindex download to Sparclet
5d161b24 12613Once connected to the Sparclet target,
104c1213
JM
12614you can use the @value{GDBN}
12615@code{load} command to download the file from the host to the target.
12616The file name and load offset should be given as arguments to the @code{load}
12617command.
5d161b24 12618Since the file format is aout, the program must be loaded to the starting
d4f3574e 12619address. You can use @code{objdump} to find out what this value is. The load
104c1213
JM
12620offset is an offset which is added to the VMA (virtual memory address)
12621of each of the file's sections.
12622For instance, if the program
12623@file{prog} was linked to text address 0x1201000, with data at 0x12010160
12624and bss at 0x12010170, in @value{GDBN}, type:
12625
12626@example
12627(gdbslet) load prog 0x12010000
12628Loading section .text, size 0xdb0 vma 0x12010000
12629@end example
12630
5d161b24
DB
12631If the code is loaded at a different address then what the program was linked
12632to, you may need to use the @code{section} and @code{add-symbol-file} commands
104c1213
JM
12633to tell @value{GDBN} where to map the symbol table.
12634
6d2ebf8b 12635@node Sparclet Execution
104c1213
JM
12636@subsubsection Running and debugging
12637
12638@cindex running and debugging Sparclet programs
12639You can now begin debugging the task using @value{GDBN}'s execution control
5d161b24 12640commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
104c1213
JM
12641manual for the list of commands.
12642
12643@example
12644(gdbslet) b main
12645Breakpoint 1 at 0x12010000: file prog.c, line 3.
5d161b24 12646(gdbslet) run
104c1213
JM
12647Starting program: prog
12648Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
126493 char *symarg = 0;
12650(gdbslet) step
126514 char *execarg = "hello!";
5d161b24 12652(gdbslet)
104c1213
JM
12653@end example
12654
6d2ebf8b 12655@node Sparclite
104c1213
JM
12656@subsection Fujitsu Sparclite
12657
12658@table @code
12659
12660@kindex target sparclite
12661@item target sparclite @var{dev}
5d161b24
DB
12662Fujitsu sparclite boards, used only for the purpose of loading.
12663You must use an additional command to debug the program.
12664For example: target remote @var{dev} using @value{GDBN} standard
104c1213
JM
12665remote protocol.
12666
12667@end table
12668
6d2ebf8b 12669@node ST2000
104c1213
JM
12670@subsection Tandem ST2000
12671
2df3850c 12672@value{GDBN} may be used with a Tandem ST2000 phone switch, running Tandem's
104c1213
JM
12673STDBUG protocol.
12674
12675To connect your ST2000 to the host system, see the manufacturer's
12676manual. Once the ST2000 is physically attached, you can run:
12677
12678@example
12679target st2000 @var{dev} @var{speed}
12680@end example
12681
12682@noindent
12683to establish it as your debugging environment. @var{dev} is normally
12684the name of a serial device, such as @file{/dev/ttya}, connected to the
12685ST2000 via a serial line. You can instead specify @var{dev} as a TCP
12686connection (for example, to a serial line attached via a terminal
12687concentrator) using the syntax @code{@var{hostname}:@var{portnumber}}.
12688
12689The @code{load} and @code{attach} commands are @emph{not} defined for
12690this target; you must load your program into the ST2000 as you normally
12691would for standalone operation. @value{GDBN} reads debugging information
12692(such as symbols) from a separate, debugging version of the program
12693available on your host computer.
12694@c FIXME!! This is terribly vague; what little content is here is
12695@c basically hearsay.
12696
12697@cindex ST2000 auxiliary commands
12698These auxiliary @value{GDBN} commands are available to help you with the ST2000
12699environment:
12700
12701@table @code
12702@item st2000 @var{command}
12703@kindex st2000 @var{cmd}
12704@cindex STDBUG commands (ST2000)
12705@cindex commands to STDBUG (ST2000)
12706Send a @var{command} to the STDBUG monitor. See the manufacturer's
12707manual for available commands.
12708
12709@item connect
12710@cindex connect (to STDBUG)
12711Connect the controlling terminal to the STDBUG command monitor. When
12712you are done interacting with STDBUG, typing either of two character
12713sequences gets you back to the @value{GDBN} command prompt:
12714@kbd{@key{RET}~.} (Return, followed by tilde and period) or
12715@kbd{@key{RET}~@key{C-d}} (Return, followed by tilde and control-D).
12716@end table
12717
6d2ebf8b 12718@node Z8000
104c1213
JM
12719@subsection Zilog Z8000
12720
12721@cindex Z8000
12722@cindex simulator, Z8000
12723@cindex Zilog Z8000 simulator
12724
12725When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
12726a Z8000 simulator.
12727
12728For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
12729unsegmented variant of the Z8000 architecture) or the Z8001 (the
12730segmented variant). The simulator recognizes which architecture is
12731appropriate by inspecting the object code.
12732
12733@table @code
12734@item target sim @var{args}
12735@kindex sim
d4f3574e 12736@kindex target sim@r{, with Z8000}
104c1213
JM
12737Debug programs on a simulated CPU. If the simulator supports setup
12738options, specify them via @var{args}.
12739@end table
12740
12741@noindent
12742After specifying this target, you can debug programs for the simulated
12743CPU in the same style as programs for your host computer; use the
12744@code{file} command to load a new program image, the @code{run} command
12745to run your program, and so on.
12746
d4f3574e
SS
12747As well as making available all the usual machine registers
12748(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
12749additional items of information as specially named registers:
104c1213
JM
12750
12751@table @code
12752
12753@item cycles
12754Counts clock-ticks in the simulator.
12755
12756@item insts
12757Counts instructions run in the simulator.
12758
12759@item time
12760Execution time in 60ths of a second.
12761
12762@end table
12763
12764You can refer to these values in @value{GDBN} expressions with the usual
12765conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
12766conditional breakpoint that suspends only after at least 5000
12767simulated clock ticks.
12768
6d2ebf8b 12769@node Architectures
104c1213
JM
12770@section Architectures
12771
12772This section describes characteristics of architectures that affect
2df3850c 12773all uses of @value{GDBN} with the architecture, both native and cross.
104c1213
JM
12774
12775@menu
12776* A29K::
12777* Alpha::
12778* MIPS::
12779@end menu
12780
6d2ebf8b 12781@node A29K
104c1213
JM
12782@subsection A29K
12783
12784@table @code
12785
12786@kindex set rstack_high_address
12787@cindex AMD 29K register stack
12788@cindex register stack, AMD29K
12789@item set rstack_high_address @var{address}
12790On AMD 29000 family processors, registers are saved in a separate
d4f3574e 12791@dfn{register stack}. There is no way for @value{GDBN} to determine the
104c1213
JM
12792extent of this stack. Normally, @value{GDBN} just assumes that the
12793stack is ``large enough''. This may result in @value{GDBN} referencing
12794memory locations that do not exist. If necessary, you can get around
12795this problem by specifying the ending address of the register stack with
12796the @code{set rstack_high_address} command. The argument should be an
12797address, which you probably want to precede with @samp{0x} to specify in
12798hexadecimal.
12799
12800@kindex show rstack_high_address
12801@item show rstack_high_address
12802Display the current limit of the register stack, on AMD 29000 family
12803processors.
12804
12805@end table
12806
6d2ebf8b 12807@node Alpha
104c1213
JM
12808@subsection Alpha
12809
12810See the following section.
12811
6d2ebf8b 12812@node MIPS
104c1213
JM
12813@subsection MIPS
12814
12815@cindex stack on Alpha
12816@cindex stack on MIPS
12817@cindex Alpha stack
12818@cindex MIPS stack
12819Alpha- and MIPS-based computers use an unusual stack frame, which
12820sometimes requires @value{GDBN} to search backward in the object code to
12821find the beginning of a function.
12822
12823@cindex response time, MIPS debugging
12824To improve response time (especially for embedded applications, where
12825@value{GDBN} may be restricted to a slow serial line for this search)
12826you may want to limit the size of this search, using one of these
12827commands:
12828
12829@table @code
00e4a2e4 12830@cindex @code{heuristic-fence-post} (Alpha, MIPS)
104c1213
JM
12831@item set heuristic-fence-post @var{limit}
12832Restrict @value{GDBN} to examining at most @var{limit} bytes in its
12833search for the beginning of a function. A value of @var{0} (the
12834default) means there is no limit. However, except for @var{0}, the
12835larger the limit the more bytes @code{heuristic-fence-post} must search
12836and therefore the longer it takes to run.
12837
12838@item show heuristic-fence-post
12839Display the current limit.
12840@end table
12841
12842@noindent
12843These commands are available @emph{only} when @value{GDBN} is configured
12844for debugging programs on Alpha or MIPS processors.
12845
12846
6d2ebf8b 12847@node Controlling GDB
c906108c
SS
12848@chapter Controlling @value{GDBN}
12849
53a5351d
JM
12850You can alter the way @value{GDBN} interacts with you by using the
12851@code{set} command. For commands controlling how @value{GDBN} displays
d4f3574e 12852data, see @ref{Print Settings, ,Print settings}. Other settings are
53a5351d 12853described here.
c906108c
SS
12854
12855@menu
12856* Prompt:: Prompt
12857* Editing:: Command editing
12858* History:: Command history
12859* Screen Size:: Screen size
12860* Numbers:: Numbers
12861* Messages/Warnings:: Optional warnings and messages
5d161b24 12862* Debugging Output:: Optional messages about internal happenings
c906108c
SS
12863@end menu
12864
6d2ebf8b 12865@node Prompt
c906108c
SS
12866@section Prompt
12867
12868@cindex prompt
12869
12870@value{GDBN} indicates its readiness to read a command by printing a string
12871called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
12872can change the prompt string with the @code{set prompt} command. For
12873instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
5d161b24 12874the prompt in one of the @value{GDBN} sessions so that you can always tell
c906108c
SS
12875which one you are talking to.
12876
d4f3574e 12877@emph{Note:} @code{set prompt} does not add a space for you after the
c906108c
SS
12878prompt you set. This allows you to set a prompt which ends in a space
12879or a prompt that does not.
12880
12881@table @code
12882@kindex set prompt
12883@item set prompt @var{newprompt}
12884Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
12885
12886@kindex show prompt
12887@item show prompt
12888Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
12889@end table
12890
6d2ebf8b 12891@node Editing
c906108c
SS
12892@section Command editing
12893@cindex readline
12894@cindex command line editing
12895
12896@value{GDBN} reads its input commands via the @dfn{readline} interface. This
12897@sc{gnu} library provides consistent behavior for programs which provide a
12898command line interface to the user. Advantages are @sc{gnu} Emacs-style
12899or @dfn{vi}-style inline editing of commands, @code{csh}-like history
12900substitution, and a storage and recall of command history across
12901debugging sessions.
12902
12903You may control the behavior of command line editing in @value{GDBN} with the
12904command @code{set}.
12905
12906@table @code
12907@kindex set editing
12908@cindex editing
12909@item set editing
12910@itemx set editing on
12911Enable command line editing (enabled by default).
12912
12913@item set editing off
12914Disable command line editing.
12915
12916@kindex show editing
12917@item show editing
12918Show whether command line editing is enabled.
12919@end table
12920
6d2ebf8b 12921@node History
c906108c
SS
12922@section Command history
12923
12924@value{GDBN} can keep track of the commands you type during your
12925debugging sessions, so that you can be certain of precisely what
12926happened. Use these commands to manage the @value{GDBN} command
12927history facility.
12928
12929@table @code
12930@cindex history substitution
12931@cindex history file
12932@kindex set history filename
12933@kindex GDBHISTFILE
12934@item set history filename @var{fname}
12935Set the name of the @value{GDBN} command history file to @var{fname}.
12936This is the file where @value{GDBN} reads an initial command history
12937list, and where it writes the command history from this session when it
12938exits. You can access this list through history expansion or through
12939the history command editing characters listed below. This file defaults
12940to the value of the environment variable @code{GDBHISTFILE}, or to
d4f3574e
SS
12941@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
12942is not set.
c906108c
SS
12943
12944@cindex history save
12945@kindex set history save
12946@item set history save
12947@itemx set history save on
12948Record command history in a file, whose name may be specified with the
12949@code{set history filename} command. By default, this option is disabled.
12950
12951@item set history save off
12952Stop recording command history in a file.
12953
12954@cindex history size
12955@kindex set history size
12956@item set history size @var{size}
12957Set the number of commands which @value{GDBN} keeps in its history list.
12958This defaults to the value of the environment variable
12959@code{HISTSIZE}, or to 256 if this variable is not set.
12960@end table
12961
12962@cindex history expansion
12963History expansion assigns special meaning to the character @kbd{!}.
12964@ifset have-readline-appendices
12965@xref{Event Designators}.
12966@end ifset
12967
12968Since @kbd{!} is also the logical not operator in C, history expansion
12969is off by default. If you decide to enable history expansion with the
12970@code{set history expansion on} command, you may sometimes need to
12971follow @kbd{!} (when it is used as logical not, in an expression) with
12972a space or a tab to prevent it from being expanded. The readline
12973history facilities do not attempt substitution on the strings
12974@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
12975
12976The commands to control history expansion are:
12977
12978@table @code
12979@kindex set history expansion
12980@item set history expansion on
12981@itemx set history expansion
12982Enable history expansion. History expansion is off by default.
12983
12984@item set history expansion off
12985Disable history expansion.
12986
12987The readline code comes with more complete documentation of
12988editing and history expansion features. Users unfamiliar with @sc{gnu} Emacs
12989or @code{vi} may wish to read it.
12990@ifset have-readline-appendices
12991@xref{Command Line Editing}.
12992@end ifset
12993
12994@c @group
12995@kindex show history
12996@item show history
12997@itemx show history filename
12998@itemx show history save
12999@itemx show history size
13000@itemx show history expansion
13001These commands display the state of the @value{GDBN} history parameters.
13002@code{show history} by itself displays all four states.
13003@c @end group
13004@end table
13005
13006@table @code
41afff9a 13007@kindex shows
c906108c
SS
13008@item show commands
13009Display the last ten commands in the command history.
13010
13011@item show commands @var{n}
13012Print ten commands centered on command number @var{n}.
13013
13014@item show commands +
13015Print ten commands just after the commands last printed.
13016@end table
13017
6d2ebf8b 13018@node Screen Size
c906108c
SS
13019@section Screen size
13020@cindex size of screen
13021@cindex pauses in output
13022
13023Certain commands to @value{GDBN} may produce large amounts of
13024information output to the screen. To help you read all of it,
13025@value{GDBN} pauses and asks you for input at the end of each page of
13026output. Type @key{RET} when you want to continue the output, or @kbd{q}
13027to discard the remaining output. Also, the screen width setting
13028determines when to wrap lines of output. Depending on what is being
13029printed, @value{GDBN} tries to break the line at a readable place,
13030rather than simply letting it overflow onto the following line.
13031
d4f3574e
SS
13032Normally @value{GDBN} knows the size of the screen from the terminal
13033driver software. For example, on Unix @value{GDBN} uses the termcap data base
c906108c 13034together with the value of the @code{TERM} environment variable and the
d4f3574e 13035@code{stty rows} and @code{stty cols} settings. If this is not correct,
c906108c
SS
13036you can override it with the @code{set height} and @code{set
13037width} commands:
13038
13039@table @code
13040@kindex set height
13041@kindex set width
13042@kindex show width
13043@kindex show height
13044@item set height @var{lpp}
13045@itemx show height
13046@itemx set width @var{cpl}
13047@itemx show width
13048These @code{set} commands specify a screen height of @var{lpp} lines and
13049a screen width of @var{cpl} characters. The associated @code{show}
13050commands display the current settings.
13051
5d161b24
DB
13052If you specify a height of zero lines, @value{GDBN} does not pause during
13053output no matter how long the output is. This is useful if output is to a
c906108c
SS
13054file or to an editor buffer.
13055
13056Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
13057from wrapping its output.
13058@end table
13059
6d2ebf8b 13060@node Numbers
c906108c
SS
13061@section Numbers
13062@cindex number representation
13063@cindex entering numbers
13064
2df3850c
JM
13065You can always enter numbers in octal, decimal, or hexadecimal in
13066@value{GDBN} by the usual conventions: octal numbers begin with
13067@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
13068begin with @samp{0x}. Numbers that begin with none of these are, by
13069default, entered in base 10; likewise, the default display for
13070numbers---when no particular format is specified---is base 10. You can
13071change the default base for both input and output with the @code{set
13072radix} command.
c906108c
SS
13073
13074@table @code
13075@kindex set input-radix
13076@item set input-radix @var{base}
13077Set the default base for numeric input. Supported choices
13078for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
13079specified either unambiguously or using the current default radix; for
13080example, any of
13081
13082@smallexample
13083set radix 012
13084set radix 10.
13085set radix 0xa
13086@end smallexample
13087
13088@noindent
13089sets the base to decimal. On the other hand, @samp{set radix 10}
13090leaves the radix unchanged no matter what it was.
13091
13092@kindex set output-radix
13093@item set output-radix @var{base}
13094Set the default base for numeric display. Supported choices
13095for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
13096specified either unambiguously or using the current default radix.
13097
13098@kindex show input-radix
13099@item show input-radix
13100Display the current default base for numeric input.
13101
13102@kindex show output-radix
13103@item show output-radix
13104Display the current default base for numeric display.
13105@end table
13106
6d2ebf8b 13107@node Messages/Warnings
c906108c
SS
13108@section Optional warnings and messages
13109
2df3850c
JM
13110By default, @value{GDBN} is silent about its inner workings. If you are
13111running on a slow machine, you may want to use the @code{set verbose}
13112command. This makes @value{GDBN} tell you when it does a lengthy
13113internal operation, so you will not think it has crashed.
c906108c
SS
13114
13115Currently, the messages controlled by @code{set verbose} are those
13116which announce that the symbol table for a source file is being read;
13117see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
13118
13119@table @code
13120@kindex set verbose
13121@item set verbose on
13122Enables @value{GDBN} output of certain informational messages.
13123
13124@item set verbose off
13125Disables @value{GDBN} output of certain informational messages.
13126
13127@kindex show verbose
13128@item show verbose
13129Displays whether @code{set verbose} is on or off.
13130@end table
13131
2df3850c
JM
13132By default, if @value{GDBN} encounters bugs in the symbol table of an
13133object file, it is silent; but if you are debugging a compiler, you may
13134find this information useful (@pxref{Symbol Errors, ,Errors reading
13135symbol files}).
c906108c
SS
13136
13137@table @code
2df3850c 13138
c906108c
SS
13139@kindex set complaints
13140@item set complaints @var{limit}
2df3850c
JM
13141Permits @value{GDBN} to output @var{limit} complaints about each type of
13142unusual symbols before becoming silent about the problem. Set
13143@var{limit} to zero to suppress all complaints; set it to a large number
13144to prevent complaints from being suppressed.
c906108c
SS
13145
13146@kindex show complaints
13147@item show complaints
13148Displays how many symbol complaints @value{GDBN} is permitted to produce.
2df3850c 13149
c906108c
SS
13150@end table
13151
13152By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
13153lot of stupid questions to confirm certain commands. For example, if
13154you try to run a program which is already running:
13155
13156@example
13157(@value{GDBP}) run
13158The program being debugged has been started already.
13159Start it from the beginning? (y or n)
13160@end example
13161
13162If you are willing to unflinchingly face the consequences of your own
13163commands, you can disable this ``feature'':
13164
13165@table @code
2df3850c 13166
c906108c
SS
13167@kindex set confirm
13168@cindex flinching
13169@cindex confirmation
13170@cindex stupid questions
13171@item set confirm off
13172Disables confirmation requests.
13173
13174@item set confirm on
13175Enables confirmation requests (the default).
13176
13177@kindex show confirm
13178@item show confirm
13179Displays state of confirmation requests.
2df3850c 13180
c906108c
SS
13181@end table
13182
6d2ebf8b 13183@node Debugging Output
5d161b24
DB
13184@section Optional messages about internal happenings
13185@table @code
13186@kindex set debug arch
13187@item set debug arch
13188Turns on or off display of gdbarch debugging info. The default is off
13189@kindex show debug arch
13190@item show debug arch
13191Displays the current state of displaying gdbarch debugging info.
13192@kindex set debug event
13193@item set debug event
13194Turns on or off display of @value{GDBN} event debugging info. The
13195default is off.
13196@kindex show debug event
13197@item show debug event
13198Displays the current state of displaying @value{GDBN} event debugging
13199info.
13200@kindex set debug expression
13201@item set debug expression
13202Turns on or off display of @value{GDBN} expression debugging info. The
13203default is off.
13204@kindex show debug expression
13205@item show debug expression
13206Displays the current state of displaying @value{GDBN} expression
13207debugging info.
13208@kindex set debug overload
13209@item set debug overload
b37052ae 13210Turns on or off display of @value{GDBN} C@t{++} overload debugging
5d161b24
DB
13211info. This includes info such as ranking of functions, etc. The default
13212is off.
13213@kindex show debug overload
13214@item show debug overload
b37052ae 13215Displays the current state of displaying @value{GDBN} C@t{++} overload
5d161b24
DB
13216debugging info.
13217@kindex set debug remote
13218@cindex packets, reporting on stdout
13219@cindex serial connections, debugging
13220@item set debug remote
13221Turns on or off display of reports on all packets sent back and forth across
13222the serial line to the remote machine. The info is printed on the
13223@value{GDBN} standard output stream. The default is off.
13224@kindex show debug remote
13225@item show debug remote
13226Displays the state of display of remote packets.
13227@kindex set debug serial
13228@item set debug serial
13229Turns on or off display of @value{GDBN} serial debugging info. The
13230default is off.
13231@kindex show debug serial
13232@item show debug serial
13233Displays the current state of displaying @value{GDBN} serial debugging
13234info.
13235@kindex set debug target
13236@item set debug target
13237Turns on or off display of @value{GDBN} target debugging info. This info
13238includes what is going on at the target level of GDB, as it happens. The
13239default is off.
13240@kindex show debug target
13241@item show debug target
13242Displays the current state of displaying @value{GDBN} target debugging
13243info.
13244@kindex set debug varobj
13245@item set debug varobj
13246Turns on or off display of @value{GDBN} variable object debugging
13247info. The default is off.
13248@kindex show debug varobj
13249@item show debug varobj
13250Displays the current state of displaying @value{GDBN} variable object
13251debugging info.
13252@end table
13253
6d2ebf8b 13254@node Sequences
c906108c
SS
13255@chapter Canned Sequences of Commands
13256
13257Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
2df3850c
JM
13258command lists}), @value{GDBN} provides two ways to store sequences of
13259commands for execution as a unit: user-defined commands and command
13260files.
c906108c
SS
13261
13262@menu
13263* Define:: User-defined commands
13264* Hooks:: User-defined command hooks
13265* Command Files:: Command files
13266* Output:: Commands for controlled output
13267@end menu
13268
6d2ebf8b 13269@node Define
c906108c
SS
13270@section User-defined commands
13271
13272@cindex user-defined command
2df3850c
JM
13273A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
13274which you assign a new name as a command. This is done with the
13275@code{define} command. User commands may accept up to 10 arguments
13276separated by whitespace. Arguments are accessed within the user command
13277via @var{$arg0@dots{}$arg9}. A trivial example:
c906108c
SS
13278
13279@smallexample
13280define adder
13281 print $arg0 + $arg1 + $arg2
13282@end smallexample
13283
d4f3574e
SS
13284@noindent
13285To execute the command use:
c906108c
SS
13286
13287@smallexample
13288adder 1 2 3
13289@end smallexample
13290
d4f3574e
SS
13291@noindent
13292This defines the command @code{adder}, which prints the sum of
5d161b24 13293its three arguments. Note the arguments are text substitutions, so they may
c906108c
SS
13294reference variables, use complex expressions, or even perform inferior
13295functions calls.
13296
13297@table @code
2df3850c 13298
c906108c
SS
13299@kindex define
13300@item define @var{commandname}
13301Define a command named @var{commandname}. If there is already a command
13302by that name, you are asked to confirm that you want to redefine it.
13303
13304The definition of the command is made up of other @value{GDBN} command lines,
13305which are given following the @code{define} command. The end of these
13306commands is marked by a line containing @code{end}.
13307
13308@kindex if
13309@kindex else
13310@item if
13311Takes a single argument, which is an expression to evaluate.
13312It is followed by a series of commands that are executed
13313only if the expression is true (nonzero).
13314There can then optionally be a line @code{else}, followed
13315by a series of commands that are only executed if the expression
13316was false. The end of the list is marked by a line containing @code{end}.
13317
13318@kindex while
13319@item while
13320The syntax is similar to @code{if}: the command takes a single argument,
13321which is an expression to evaluate, and must be followed by the commands to
13322execute, one per line, terminated by an @code{end}.
13323The commands are executed repeatedly as long as the expression
13324evaluates to true.
13325
13326@kindex document
13327@item document @var{commandname}
13328Document the user-defined command @var{commandname}, so that it can be
5d161b24
DB
13329accessed by @code{help}. The command @var{commandname} must already be
13330defined. This command reads lines of documentation just as @code{define}
13331reads the lines of the command definition, ending with @code{end}.
13332After the @code{document} command is finished, @code{help} on command
c906108c
SS
13333@var{commandname} displays the documentation you have written.
13334
13335You may use the @code{document} command again to change the
13336documentation of a command. Redefining the command with @code{define}
13337does not change the documentation.
13338
13339@kindex help user-defined
13340@item help user-defined
13341List all user-defined commands, with the first line of the documentation
13342(if any) for each.
13343
13344@kindex show user
13345@item show user
13346@itemx show user @var{commandname}
2df3850c
JM
13347Display the @value{GDBN} commands used to define @var{commandname} (but
13348not its documentation). If no @var{commandname} is given, display the
c906108c 13349definitions for all user-defined commands.
2df3850c 13350
c906108c
SS
13351@end table
13352
13353When user-defined commands are executed, the
13354commands of the definition are not printed. An error in any command
13355stops execution of the user-defined command.
13356
13357If used interactively, commands that would ask for confirmation proceed
5d161b24
DB
13358without asking when used inside a user-defined command. Many @value{GDBN}
13359commands that normally print messages to say what they are doing omit the
c906108c
SS
13360messages when used in a user-defined command.
13361
6d2ebf8b 13362@node Hooks
c906108c 13363@section User-defined command hooks
d4f3574e
SS
13364@cindex command hooks
13365@cindex hooks, for commands
c78b4128 13366@cindex hooks, pre-command
c906108c 13367
c78b4128
EZ
13368@kindex hook
13369@kindex hook-
13370You may define @dfn{hooks}, which are a special kind of user-defined
c906108c
SS
13371command. Whenever you run the command @samp{foo}, if the user-defined
13372command @samp{hook-foo} exists, it is executed (with no arguments)
13373before that command.
13374
c78b4128
EZ
13375@cindex hooks, post-command
13376@kindex hookpost
13377@kindex hookpost-
13378A hook may also be defined which is run after the command you executed.
13379Whenever you run the command @samp{foo}, if the user-defined command
13380@samp{hookpost-foo} exists, it is executed (with no arguments) after
13381that command. Post-execution hooks may exist simultaneously with
13382pre-execution hooks, for the same command.
13383
13384It is valid for a hook to call the command which it hooks. If this
13385occurs, the hook is not re-executed, thereby avoiding infinte recursion.
13386
13387@c It would be nice if hookpost could be passed a parameter indicating
13388@c if the command it hooks executed properly or not. FIXME!
13389
d4f3574e 13390@kindex stop@r{, a pseudo-command}
c906108c
SS
13391In addition, a pseudo-command, @samp{stop} exists. Defining
13392(@samp{hook-stop}) makes the associated commands execute every time
13393execution stops in your program: before breakpoint commands are run,
13394displays are printed, or the stack frame is printed.
13395
c906108c
SS
13396For example, to ignore @code{SIGALRM} signals while
13397single-stepping, but treat them normally during normal execution,
13398you could define:
13399
13400@example
13401define hook-stop
13402handle SIGALRM nopass
13403end
13404
13405define hook-run
13406handle SIGALRM pass
13407end
13408
13409define hook-continue
13410handle SIGLARM pass
13411end
13412@end example
c906108c 13413
c78b4128
EZ
13414As a further example, to hook at the begining and end of the @code{echo}
13415command, and to add extra text to the beginning and end of the message,
13416you could define:
13417
13418@example
13419define hook-echo
13420echo <<<---
13421end
13422
13423define hookpost-echo
13424echo --->>>\n
13425end
13426
13427(@value{GDBP}) echo Hello World
13428<<<---Hello World--->>>
13429(@value{GDBP})
13430
13431@end example
13432
c906108c
SS
13433You can define a hook for any single-word command in @value{GDBN}, but
13434not for command aliases; you should define a hook for the basic command
13435name, e.g. @code{backtrace} rather than @code{bt}.
13436@c FIXME! So how does Joe User discover whether a command is an alias
13437@c or not?
13438If an error occurs during the execution of your hook, execution of
13439@value{GDBN} commands stops and @value{GDBN} issues a prompt
13440(before the command that you actually typed had a chance to run).
13441
13442If you try to define a hook which does not match any known command, you
13443get a warning from the @code{define} command.
13444
6d2ebf8b 13445@node Command Files
c906108c
SS
13446@section Command files
13447
13448@cindex command files
5d161b24
DB
13449A command file for @value{GDBN} is a file of lines that are @value{GDBN}
13450commands. Comments (lines starting with @kbd{#}) may also be included.
13451An empty line in a command file does nothing; it does not mean to repeat
c906108c
SS
13452the last command, as it would from the terminal.
13453
13454@cindex init file
13455@cindex @file{.gdbinit}
d4f3574e 13456@cindex @file{gdb.ini}
c906108c 13457When you start @value{GDBN}, it automatically executes commands from its
96565e91
CF
13458@dfn{init files}, normally called @file{.gdbinit}@footnote{The DJGPP
13459port of @value{GDBN} uses the name @file{gdb.ini} instead, due to the
13460limitations of file names imposed by DOS filesystems.}.
13461During startup, @value{GDBN} does the following:
bf0184be
ND
13462
13463@enumerate
13464@item
13465Reads the init file (if any) in your home directory@footnote{On
13466DOS/Windows systems, the home directory is the one pointed to by the
13467@code{HOME} environment variable.}.
13468
13469@item
13470Processes command line options and operands.
13471
13472@item
13473Reads the init file (if any) in the current working directory.
13474
13475@item
13476Reads command files specified by the @samp{-x} option.
13477@end enumerate
13478
13479The init file in your home directory can set options (such as @samp{set
13480complaints}) that affect subsequent processing of command line options
13481and operands. Init files are not executed if you use the @samp{-nx}
13482option (@pxref{Mode Options, ,Choosing modes}).
c906108c 13483
c906108c
SS
13484@cindex init file name
13485On some configurations of @value{GDBN}, the init file is known by a
13486different name (these are typically environments where a specialized
13487form of @value{GDBN} may need to coexist with other forms, hence a
13488different name for the specialized version's init file). These are the
13489environments with special init file names:
13490
00e4a2e4 13491@cindex @file{.vxgdbinit}
c906108c
SS
13492@itemize @bullet
13493@item
00e4a2e4 13494VxWorks (Wind River Systems real-time OS): @file{.vxgdbinit}
c906108c 13495
00e4a2e4 13496@cindex @file{.os68gdbinit}
c906108c 13497@item
00e4a2e4 13498OS68K (Enea Data Systems real-time OS): @file{.os68gdbinit}
c906108c 13499
00e4a2e4 13500@cindex @file{.esgdbinit}
c906108c 13501@item
00e4a2e4 13502ES-1800 (Ericsson Telecom AB M68000 emulator): @file{.esgdbinit}
c906108c 13503@end itemize
c906108c
SS
13504
13505You can also request the execution of a command file with the
13506@code{source} command:
13507
13508@table @code
13509@kindex source
13510@item source @var{filename}
13511Execute the command file @var{filename}.
13512@end table
13513
13514The lines in a command file are executed sequentially. They are not
13515printed as they are executed. An error in any command terminates execution
13516of the command file.
13517
13518Commands that would ask for confirmation if used interactively proceed
13519without asking when used in a command file. Many @value{GDBN} commands that
13520normally print messages to say what they are doing omit the messages
13521when called from command files.
13522
b433d00b
DH
13523@value{GDBN} also accepts command input from standard input. In this
13524mode, normal output goes to standard output and error output goes to
13525standard error. Errors in a command file supplied on standard input do
13526not terminate execution of the command file --- execution continues with
13527the next command.
13528
13529@example
13530gdb < cmds > log 2>&1
13531@end example
13532
13533(The syntax above will vary depending on the shell used.) This example
13534will execute commands from the file @file{cmds}. All output and errors
13535would be directed to @file{log}.
13536
6d2ebf8b 13537@node Output
c906108c
SS
13538@section Commands for controlled output
13539
13540During the execution of a command file or a user-defined command, normal
13541@value{GDBN} output is suppressed; the only output that appears is what is
13542explicitly printed by the commands in the definition. This section
13543describes three commands useful for generating exactly the output you
13544want.
13545
13546@table @code
13547@kindex echo
13548@item echo @var{text}
13549@c I do not consider backslash-space a standard C escape sequence
13550@c because it is not in ANSI.
13551Print @var{text}. Nonprinting characters can be included in
13552@var{text} using C escape sequences, such as @samp{\n} to print a
13553newline. @strong{No newline is printed unless you specify one.}
13554In addition to the standard C escape sequences, a backslash followed
13555by a space stands for a space. This is useful for displaying a
13556string with spaces at the beginning or the end, since leading and
5d161b24 13557trailing spaces are otherwise trimmed from all arguments.
c906108c
SS
13558To print @samp{@w{ }and foo =@w{ }}, use the command
13559@samp{echo \@w{ }and foo = \@w{ }}.
13560
13561A backslash at the end of @var{text} can be used, as in C, to continue
13562the command onto subsequent lines. For example,
13563
13564@example
13565echo This is some text\n\
13566which is continued\n\
13567onto several lines.\n
13568@end example
13569
13570produces the same output as
13571
13572@example
13573echo This is some text\n
13574echo which is continued\n
13575echo onto several lines.\n
13576@end example
13577
13578@kindex output
13579@item output @var{expression}
13580Print the value of @var{expression} and nothing but that value: no
13581newlines, no @samp{$@var{nn} = }. The value is not entered in the
5d161b24 13582value history either. @xref{Expressions, ,Expressions}, for more information
c906108c
SS
13583on expressions.
13584
13585@item output/@var{fmt} @var{expression}
13586Print the value of @var{expression} in format @var{fmt}. You can use
13587the same formats as for @code{print}. @xref{Output Formats,,Output
13588formats}, for more information.
13589
13590@kindex printf
13591@item printf @var{string}, @var{expressions}@dots{}
13592Print the values of the @var{expressions} under the control of
13593@var{string}. The @var{expressions} are separated by commas and may be
13594either numbers or pointers. Their values are printed as specified by
13595@var{string}, exactly as if your program were to execute the C
13596subroutine
d4f3574e
SS
13597@c FIXME: the above implies that at least all ANSI C formats are
13598@c supported, but it isn't true: %E and %G don't work (or so it seems).
13599@c Either this is a bug, or the manual should document what formats are
13600@c supported.
c906108c
SS
13601
13602@example
13603printf (@var{string}, @var{expressions}@dots{});
13604@end example
13605
13606For example, you can print two values in hex like this:
13607
13608@smallexample
13609printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
13610@end smallexample
13611
13612The only backslash-escape sequences that you can use in the format
13613string are the simple ones that consist of backslash followed by a
13614letter.
13615@end table
13616
c4555f82
SC
13617@node TUI
13618@chapter @value{GDBN} Text User Interface
13619@cindex TUI
13620
13621@menu
13622* TUI Overview:: TUI overview
13623* TUI Keys:: TUI key bindings
13624* TUI Commands:: TUI specific commands
13625* TUI Configuration:: TUI configuration variables
13626@end menu
13627
13628The @value{GDBN} Text User Interface, TUI in short,
13629is a terminal interface which uses the @code{curses} library
13630to show the source file, the assembly output, the program registers
13631and @value{GDBN} commands in separate text windows.
13632The TUI is available only when @value{GDBN} is configured
13633with the @code{--enable-tui} configure option (@pxref{Configure Options}).
13634
13635@node TUI Overview
13636@section TUI overview
13637
13638The TUI has two display modes that can be switched while
13639@value{GDBN} runs:
13640
13641@itemize @bullet
13642@item
13643A curses (or TUI) mode in which it displays several text
13644windows on the terminal.
13645
13646@item
13647A standard mode which corresponds to the @value{GDBN} configured without
13648the TUI.
13649@end itemize
13650
13651In the TUI mode, @value{GDBN} can display several text window
13652on the terminal:
13653
13654@table @emph
13655@item command
13656This window is the @value{GDBN} command window with the @value{GDBN}
13657prompt and the @value{GDBN} outputs. The @value{GDBN} input is still
13658managed using readline but through the TUI. The @emph{command}
13659window is always visible.
13660
13661@item source
13662The source window shows the source file of the program. The current
13663line as well as active breakpoints are displayed in this window.
13664The current program position is shown with the @samp{>} marker and
13665active breakpoints are shown with @samp{*} markers.
13666
13667@item assembly
13668The assembly window shows the disassembly output of the program.
13669
13670@item register
13671This window shows the processor registers. It detects when
13672a register is changed and when this is the case, registers that have
13673changed are highlighted.
13674
13675@end table
13676
13677The source, assembly and register windows are attached to the thread
13678and the frame position. They are updated when the current thread
13679changes, when the frame changes or when the program counter changes.
13680These three windows are arranged by the TUI according to several
13681layouts. The layout defines which of these three windows are visible.
13682The following layouts are available:
13683
13684@itemize @bullet
13685@item
13686source
13687
13688@item
13689assembly
13690
13691@item
13692source and assembly
13693
13694@item
13695source and registers
13696
13697@item
13698assembly and registers
13699
13700@end itemize
13701
13702@node TUI Keys
13703@section TUI Key Bindings
13704@cindex TUI key bindings
13705
13706The TUI installs several key bindings in the readline keymaps
13707(@pxref{Command Line Editing}).
13708They allow to leave or enter in the TUI mode or they operate
13709directly on the TUI layout and windows. The following key bindings
13710are installed for both TUI mode and the @value{GDBN} standard mode.
13711
13712@table @kbd
13713@kindex C-x C-a
13714@item C-x C-a
13715@kindex C-x a
13716@itemx C-x a
13717@kindex C-x A
13718@itemx C-x A
13719Enter or leave the TUI mode. When the TUI mode is left,
13720the curses window management is left and @value{GDBN} operates using
13721its standard mode writing on the terminal directly. When the TUI
13722mode is entered, the control is given back to the curses windows.
13723The screen is then refreshed.
13724
13725@kindex C-x 1
13726@item C-x 1
13727Use a TUI layout with only one window. The layout will
13728either be @samp{source} or @samp{assembly}. When the TUI mode
13729is not active, it will switch to the TUI mode.
13730
13731Think of this key binding as the Emacs @kbd{C-x 1} binding.
13732
13733@kindex C-x 2
13734@item C-x 2
13735Use a TUI layout with at least two windows. When the current
13736layout shows already two windows, a next layout with two windows is used.
13737When a new layout is chosen, one window will always be common to the
13738previous layout and the new one.
13739
13740Think of it as the Emacs @kbd{C-x 2} binding.
13741
13742@end table
13743
13744The following key bindings are handled only by the TUI mode:
13745
13746@table @key
13747@kindex PgUp
13748@item PgUp
13749Scroll the active window one page up.
13750
13751@kindex PgDn
13752@item PgDn
13753Scroll the active window one page down.
13754
13755@kindex Up
13756@item Up
13757Scroll the active window one line up.
13758
13759@kindex Down
13760@item Down
13761Scroll the active window one line down.
13762
13763@kindex Left
13764@item Left
13765Scroll the active window one column left.
13766
13767@kindex Right
13768@item Right
13769Scroll the active window one column right.
13770
13771@kindex C-L
13772@item C-L
13773Refresh the screen.
13774
13775@end table
13776
13777In the TUI mode, the arrow keys are used by the active window
13778for scrolling. This means they are not available for readline. It is
13779necessary to use other readline key bindings such as @key{C-p}, @key{C-n},
13780@key{C-b} and @key{C-f}.
13781
13782@node TUI Commands
13783@section TUI specific commands
13784@cindex TUI commands
13785
13786The TUI has specific commands to control the text windows.
13787These commands are always available, that is they do not depend on
13788the current terminal mode in which @value{GDBN} runs. When @value{GDBN}
13789is in the standard mode, using these commands will automatically switch
13790in the TUI mode.
13791
13792@table @code
13793@item layout next
13794@kindex layout next
13795Display the next layout.
13796
13797@item layout prev
13798@kindex layout prev
13799Display the previous layout.
13800
13801@item layout src
13802@kindex layout src
13803Display the source window only.
13804
13805@item layout asm
13806@kindex layout asm
13807Display the assembly window only.
13808
13809@item layout split
13810@kindex layout split
13811Display the source and assembly window.
13812
13813@item layout regs
13814@kindex layout regs
13815Display the register window together with the source or assembly window.
13816
13817@item focus next | prev | src | asm | regs | split
13818@kindex focus
13819Set the focus to the named window.
13820This command allows to change the active window so that scrolling keys
13821can be affected to another window.
13822
13823@item refresh
13824@kindex refresh
13825Refresh the screen. This is similar to using @key{C-L} key.
13826
13827@item update
13828@kindex update
13829Update the source window and the current execution point.
13830
13831@item winheight @var{name} +@var{count}
13832@itemx winheight @var{name} -@var{count}
13833@kindex winheight
13834Change the height of the window @var{name} by @var{count}
13835lines. Positive counts increase the height, while negative counts
13836decrease it.
13837
13838@end table
13839
13840@node TUI Configuration
13841@section TUI configuration variables
13842@cindex TUI configuration variables
13843
13844The TUI has several configuration variables that control the
13845appearance of windows on the terminal.
13846
13847@table @code
732b3002
SC
13848@item set tui border-kind @var{kind}
13849@kindex set tui border-kind
c4555f82
SC
13850Select the border appearance for the source, assembly and register windows.
13851The possible values are the following:
13852@table @code
13853@item space
13854Use a space character to draw the border.
13855
13856@item ascii
13857Use ascii characters + - and | to draw the border.
13858
13859@item acs
13860Use the Alternate Character Set to draw the border. The border is
13861drawn using character line graphics if the terminal supports them.
13862
13863@end table
13864
732b3002
SC
13865@item set tui active-border-mode @var{mode}
13866@kindex set tui active-border-mode
c4555f82
SC
13867Select the attributes to display the border of the active window.
13868The possible values are @code{normal}, @code{standout}, @code{reverse},
13869@code{half}, @code{half-standout}, @code{bold} and @code{bold-standout}.
13870
732b3002
SC
13871@item set tui border-mode @var{mode}
13872@kindex set tui border-mode
c4555f82
SC
13873Select the attributes to display the border of other windows.
13874The @var{mode} can be one of the following:
13875@table @code
13876@item normal
13877Use normal attributes to display the border.
13878
13879@item standout
13880Use standout mode.
13881
13882@item reverse
13883Use reverse video mode.
13884
13885@item half
13886Use half bright mode.
13887
13888@item half-standout
13889Use half bright and standout mode.
13890
13891@item bold
13892Use extra bright or bold mode.
13893
13894@item bold-standout
13895Use extra bright or bold and standout mode.
13896
13897@end table
13898
13899@end table
13900
6d2ebf8b 13901@node Emacs
c906108c
SS
13902@chapter Using @value{GDBN} under @sc{gnu} Emacs
13903
13904@cindex Emacs
13905@cindex @sc{gnu} Emacs
13906A special interface allows you to use @sc{gnu} Emacs to view (and
13907edit) the source files for the program you are debugging with
13908@value{GDBN}.
13909
13910To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
13911executable file you want to debug as an argument. This command starts
13912@value{GDBN} as a subprocess of Emacs, with input and output through a newly
13913created Emacs buffer.
53a5351d 13914@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c
SS
13915
13916Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
13917things:
13918
13919@itemize @bullet
13920@item
13921All ``terminal'' input and output goes through the Emacs buffer.
13922@end itemize
13923
13924This applies both to @value{GDBN} commands and their output, and to the input
13925and output done by the program you are debugging.
13926
13927This is useful because it means that you can copy the text of previous
13928commands and input them again; you can even use parts of the output
13929in this way.
13930
13931All the facilities of Emacs' Shell mode are available for interacting
13932with your program. In particular, you can send signals the usual
13933way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
13934stop.
13935
13936@itemize @bullet
13937@item
13938@value{GDBN} displays source code through Emacs.
13939@end itemize
13940
13941Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
13942source file for that frame and puts an arrow (@samp{=>}) at the
13943left margin of the current line. Emacs uses a separate buffer for
13944source display, and splits the screen to show both your @value{GDBN} session
13945and the source.
13946
13947Explicit @value{GDBN} @code{list} or search commands still produce output as
13948usual, but you probably have no reason to use them from Emacs.
13949
13950@quotation
13951@emph{Warning:} If the directory where your program resides is not your
13952current directory, it can be easy to confuse Emacs about the location of
13953the source files, in which case the auxiliary display buffer does not
13954appear to show your source. @value{GDBN} can find programs by searching your
13955environment's @code{PATH} variable, so the @value{GDBN} input and output
13956session proceeds normally; but Emacs does not get enough information
13957back from @value{GDBN} to locate the source files in this situation. To
13958avoid this problem, either start @value{GDBN} mode from the directory where
13959your program resides, or specify an absolute file name when prompted for the
13960@kbd{M-x gdb} argument.
13961
13962A similar confusion can result if you use the @value{GDBN} @code{file} command to
13963switch to debugging a program in some other location, from an existing
13964@value{GDBN} buffer in Emacs.
13965@end quotation
13966
13967By default, @kbd{M-x gdb} calls the program called @file{gdb}. If
13968you need to call @value{GDBN} by a different name (for example, if you keep
13969several configurations around, with different names) you can set the
13970Emacs variable @code{gdb-command-name}; for example,
13971
13972@example
13973(setq gdb-command-name "mygdb")
13974@end example
13975
13976@noindent
d4f3574e 13977(preceded by @kbd{M-:} or @kbd{ESC :}, or typed in the @code{*scratch*} buffer, or
c906108c
SS
13978in your @file{.emacs} file) makes Emacs call the program named
13979``@code{mygdb}'' instead.
13980
13981In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
13982addition to the standard Shell mode commands:
13983
13984@table @kbd
13985@item C-h m
13986Describe the features of Emacs' @value{GDBN} Mode.
13987
13988@item M-s
13989Execute to another source line, like the @value{GDBN} @code{step} command; also
13990update the display window to show the current file and location.
13991
13992@item M-n
13993Execute to next source line in this function, skipping all function
13994calls, like the @value{GDBN} @code{next} command. Then update the display window
13995to show the current file and location.
13996
13997@item M-i
13998Execute one instruction, like the @value{GDBN} @code{stepi} command; update
13999display window accordingly.
14000
14001@item M-x gdb-nexti
14002Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
14003display window accordingly.
14004
14005@item C-c C-f
14006Execute until exit from the selected stack frame, like the @value{GDBN}
14007@code{finish} command.
14008
14009@item M-c
14010Continue execution of your program, like the @value{GDBN} @code{continue}
14011command.
14012
14013@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
14014
14015@item M-u
14016Go up the number of frames indicated by the numeric argument
14017(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
14018like the @value{GDBN} @code{up} command.
14019
14020@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
14021
14022@item M-d
14023Go down the number of frames indicated by the numeric argument, like the
14024@value{GDBN} @code{down} command.
14025
14026@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
14027
14028@item C-x &
14029Read the number where the cursor is positioned, and insert it at the end
14030of the @value{GDBN} I/O buffer. For example, if you wish to disassemble code
14031around an address that was displayed earlier, type @kbd{disassemble};
14032then move the cursor to the address display, and pick up the
14033argument for @code{disassemble} by typing @kbd{C-x &}.
14034
14035You can customize this further by defining elements of the list
14036@code{gdb-print-command}; once it is defined, you can format or
14037otherwise process numbers picked up by @kbd{C-x &} before they are
14038inserted. A numeric argument to @kbd{C-x &} indicates that you
14039wish special formatting, and also acts as an index to pick an element of the
14040list. If the list element is a string, the number to be inserted is
14041formatted using the Emacs function @code{format}; otherwise the number
14042is passed as an argument to the corresponding list element.
14043@end table
14044
14045In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
14046tells @value{GDBN} to set a breakpoint on the source line point is on.
14047
14048If you accidentally delete the source-display buffer, an easy way to get
14049it back is to type the command @code{f} in the @value{GDBN} buffer, to
14050request a frame display; when you run under Emacs, this recreates
14051the source buffer if necessary to show you the context of the current
14052frame.
14053
14054The source files displayed in Emacs are in ordinary Emacs buffers
14055which are visiting the source files in the usual way. You can edit
14056the files with these buffers if you wish; but keep in mind that @value{GDBN}
14057communicates with Emacs in terms of line numbers. If you add or
14058delete lines from the text, the line numbers that @value{GDBN} knows cease
14059to correspond properly with the code.
14060
14061@c The following dropped because Epoch is nonstandard. Reactivate
14062@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
14063@ignore
14064@kindex Emacs Epoch environment
14065@kindex Epoch
14066@kindex inspect
14067
5d161b24 14068Version 18 of @sc{gnu} Emacs has a built-in window system
c906108c
SS
14069called the @code{epoch}
14070environment. Users of this environment can use a new command,
14071@code{inspect} which performs identically to @code{print} except that
14072each value is printed in its own window.
14073@end ignore
c906108c 14074
d700128c 14075@include annotate.texi
7162c0ca 14076@include gdbmi.texinfo
d700128c 14077
6d2ebf8b 14078@node GDB Bugs
c906108c
SS
14079@chapter Reporting Bugs in @value{GDBN}
14080@cindex bugs in @value{GDBN}
14081@cindex reporting bugs in @value{GDBN}
14082
14083Your bug reports play an essential role in making @value{GDBN} reliable.
14084
14085Reporting a bug may help you by bringing a solution to your problem, or it
14086may not. But in any case the principal function of a bug report is to help
14087the entire community by making the next version of @value{GDBN} work better. Bug
14088reports are your contribution to the maintenance of @value{GDBN}.
14089
14090In order for a bug report to serve its purpose, you must include the
14091information that enables us to fix the bug.
14092
14093@menu
14094* Bug Criteria:: Have you found a bug?
14095* Bug Reporting:: How to report bugs
14096@end menu
14097
6d2ebf8b 14098@node Bug Criteria
c906108c
SS
14099@section Have you found a bug?
14100@cindex bug criteria
14101
14102If you are not sure whether you have found a bug, here are some guidelines:
14103
14104@itemize @bullet
14105@cindex fatal signal
14106@cindex debugger crash
14107@cindex crash of debugger
14108@item
14109If the debugger gets a fatal signal, for any input whatever, that is a
14110@value{GDBN} bug. Reliable debuggers never crash.
14111
14112@cindex error on valid input
14113@item
14114If @value{GDBN} produces an error message for valid input, that is a
14115bug. (Note that if you're cross debugging, the problem may also be
14116somewhere in the connection to the target.)
14117
14118@cindex invalid input
14119@item
14120If @value{GDBN} does not produce an error message for invalid input,
14121that is a bug. However, you should note that your idea of
14122``invalid input'' might be our idea of ``an extension'' or ``support
14123for traditional practice''.
14124
14125@item
14126If you are an experienced user of debugging tools, your suggestions
14127for improvement of @value{GDBN} are welcome in any case.
14128@end itemize
14129
6d2ebf8b 14130@node Bug Reporting
c906108c
SS
14131@section How to report bugs
14132@cindex bug reports
14133@cindex @value{GDBN} bugs, reporting
14134
c906108c
SS
14135A number of companies and individuals offer support for @sc{gnu} products.
14136If you obtained @value{GDBN} from a support organization, we recommend you
14137contact that organization first.
14138
14139You can find contact information for many support companies and
14140individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
14141distribution.
14142@c should add a web page ref...
14143
14144In any event, we also recommend that you send bug reports for
14145@value{GDBN} to this addresses:
14146
14147@example
d4f3574e 14148bug-gdb@@gnu.org
c906108c
SS
14149@end example
14150
14151@strong{Do not send bug reports to @samp{info-gdb}, or to
d4f3574e 14152@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
c906108c
SS
14153not want to receive bug reports. Those that do have arranged to receive
14154@samp{bug-gdb}.
14155
14156The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
14157serves as a repeater. The mailing list and the newsgroup carry exactly
14158the same messages. Often people think of posting bug reports to the
14159newsgroup instead of mailing them. This appears to work, but it has one
14160problem which can be crucial: a newsgroup posting often lacks a mail
14161path back to the sender. Thus, if we need to ask for more information,
14162we may be unable to reach you. For this reason, it is better to send
14163bug reports to the mailing list.
14164
14165As a last resort, send bug reports on paper to:
14166
14167@example
14168@sc{gnu} Debugger Bugs
14169Free Software Foundation Inc.
1417059 Temple Place - Suite 330
14171Boston, MA 02111-1307
14172USA
14173@end example
c906108c
SS
14174
14175The fundamental principle of reporting bugs usefully is this:
14176@strong{report all the facts}. If you are not sure whether to state a
14177fact or leave it out, state it!
14178
14179Often people omit facts because they think they know what causes the
14180problem and assume that some details do not matter. Thus, you might
14181assume that the name of the variable you use in an example does not matter.
14182Well, probably it does not, but one cannot be sure. Perhaps the bug is a
14183stray memory reference which happens to fetch from the location where that
14184name is stored in memory; perhaps, if the name were different, the contents
14185of that location would fool the debugger into doing the right thing despite
14186the bug. Play it safe and give a specific, complete example. That is the
14187easiest thing for you to do, and the most helpful.
14188
14189Keep in mind that the purpose of a bug report is to enable us to fix the
14190bug. It may be that the bug has been reported previously, but neither
14191you nor we can know that unless your bug report is complete and
14192self-contained.
14193
14194Sometimes people give a few sketchy facts and ask, ``Does this ring a
14195bell?'' Those bug reports are useless, and we urge everyone to
14196@emph{refuse to respond to them} except to chide the sender to report
14197bugs properly.
14198
14199To enable us to fix the bug, you should include all these things:
14200
14201@itemize @bullet
14202@item
14203The version of @value{GDBN}. @value{GDBN} announces it if you start
14204with no arguments; you can also print it at any time using @code{show
14205version}.
14206
14207Without this, we will not know whether there is any point in looking for
14208the bug in the current version of @value{GDBN}.
14209
14210@item
14211The type of machine you are using, and the operating system name and
14212version number.
14213
c906108c
SS
14214@item
14215What compiler (and its version) was used to compile @value{GDBN}---e.g.
14216``@value{GCC}--2.8.1''.
c906108c
SS
14217
14218@item
14219What compiler (and its version) was used to compile the program you are
14220debugging---e.g. ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
14221C Compiler''. For GCC, you can say @code{gcc --version} to get this
14222information; for other compilers, see the documentation for those
14223compilers.
14224
14225@item
14226The command arguments you gave the compiler to compile your example and
14227observe the bug. For example, did you use @samp{-O}? To guarantee
14228you will not omit something important, list them all. A copy of the
14229Makefile (or the output from make) is sufficient.
14230
14231If we were to try to guess the arguments, we would probably guess wrong
14232and then we might not encounter the bug.
14233
14234@item
14235A complete input script, and all necessary source files, that will
14236reproduce the bug.
14237
14238@item
14239A description of what behavior you observe that you believe is
14240incorrect. For example, ``It gets a fatal signal.''
14241
14242Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
14243will certainly notice it. But if the bug is incorrect output, we might
14244not notice unless it is glaringly wrong. You might as well not give us
14245a chance to make a mistake.
14246
14247Even if the problem you experience is a fatal signal, you should still
14248say so explicitly. Suppose something strange is going on, such as, your
14249copy of @value{GDBN} is out of synch, or you have encountered a bug in
14250the C library on your system. (This has happened!) Your copy might
14251crash and ours would not. If you told us to expect a crash, then when
14252ours fails to crash, we would know that the bug was not happening for
14253us. If you had not told us to expect a crash, then we would not be able
14254to draw any conclusion from our observations.
14255
c906108c
SS
14256@item
14257If you wish to suggest changes to the @value{GDBN} source, send us context
14258diffs. If you even discuss something in the @value{GDBN} source, refer to
14259it by context, not by line number.
14260
14261The line numbers in our development sources will not match those in your
14262sources. Your line numbers would convey no useful information to us.
53a5351d 14263
c906108c
SS
14264@end itemize
14265
14266Here are some things that are not necessary:
14267
14268@itemize @bullet
14269@item
14270A description of the envelope of the bug.
14271
14272Often people who encounter a bug spend a lot of time investigating
14273which changes to the input file will make the bug go away and which
14274changes will not affect it.
14275
14276This is often time consuming and not very useful, because the way we
14277will find the bug is by running a single example under the debugger
14278with breakpoints, not by pure deduction from a series of examples.
14279We recommend that you save your time for something else.
14280
14281Of course, if you can find a simpler example to report @emph{instead}
14282of the original one, that is a convenience for us. Errors in the
14283output will be easier to spot, running under the debugger will take
14284less time, and so on.
14285
14286However, simplification is not vital; if you do not want to do this,
14287report the bug anyway and send us the entire test case you used.
14288
14289@item
14290A patch for the bug.
14291
14292A patch for the bug does help us if it is a good one. But do not omit
14293the necessary information, such as the test case, on the assumption that
14294a patch is all we need. We might see problems with your patch and decide
14295to fix the problem another way, or we might not understand it at all.
14296
14297Sometimes with a program as complicated as @value{GDBN} it is very hard to
14298construct an example that will make the program follow a certain path
14299through the code. If you do not send us the example, we will not be able
14300to construct one, so we will not be able to verify that the bug is fixed.
14301
14302And if we cannot understand what bug you are trying to fix, or why your
14303patch should be an improvement, we will not install it. A test case will
14304help us to understand.
14305
14306@item
14307A guess about what the bug is or what it depends on.
14308
14309Such guesses are usually wrong. Even we cannot guess right about such
14310things without first using the debugger to find the facts.
14311@end itemize
14312
5d161b24 14313@c The readline documentation is distributed with the readline code
c906108c
SS
14314@c and consists of the two following files:
14315@c rluser.texinfo
7be570e7 14316@c inc-hist.texinfo
c906108c
SS
14317@c Use -I with makeinfo to point to the appropriate directory,
14318@c environment var TEXINPUTS with TeX.
14319@include rluser.texinfo
7be570e7 14320@include inc-hist.texinfo
c906108c
SS
14321
14322
6d2ebf8b 14323@node Formatting Documentation
c906108c
SS
14324@appendix Formatting Documentation
14325
14326@cindex @value{GDBN} reference card
14327@cindex reference card
14328The @value{GDBN} 4 release includes an already-formatted reference card, ready
14329for printing with PostScript or Ghostscript, in the @file{gdb}
14330subdirectory of the main source directory@footnote{In
14331@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
14332release.}. If you can use PostScript or Ghostscript with your printer,
14333you can print the reference card immediately with @file{refcard.ps}.
14334
14335The release also includes the source for the reference card. You
14336can format it, using @TeX{}, by typing:
14337
14338@example
14339make refcard.dvi
14340@end example
14341
5d161b24
DB
14342The @value{GDBN} reference card is designed to print in @dfn{landscape}
14343mode on US ``letter'' size paper;
c906108c
SS
14344that is, on a sheet 11 inches wide by 8.5 inches
14345high. You will need to specify this form of printing as an option to
14346your @sc{dvi} output program.
14347
14348@cindex documentation
14349
14350All the documentation for @value{GDBN} comes as part of the machine-readable
14351distribution. The documentation is written in Texinfo format, which is
14352a documentation system that uses a single source file to produce both
14353on-line information and a printed manual. You can use one of the Info
14354formatting commands to create the on-line version of the documentation
14355and @TeX{} (or @code{texi2roff}) to typeset the printed version.
14356
14357@value{GDBN} includes an already formatted copy of the on-line Info
14358version of this manual in the @file{gdb} subdirectory. The main Info
14359file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
14360subordinate files matching @samp{gdb.info*} in the same directory. If
14361necessary, you can print out these files, or read them with any editor;
14362but they are easier to read using the @code{info} subsystem in @sc{gnu}
14363Emacs or the standalone @code{info} program, available as part of the
14364@sc{gnu} Texinfo distribution.
14365
14366If you want to format these Info files yourself, you need one of the
14367Info formatting programs, such as @code{texinfo-format-buffer} or
14368@code{makeinfo}.
14369
14370If you have @code{makeinfo} installed, and are in the top level
14371@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
14372version @value{GDBVN}), you can make the Info file by typing:
14373
14374@example
14375cd gdb
14376make gdb.info
14377@end example
14378
14379If you want to typeset and print copies of this manual, you need @TeX{},
14380a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
14381Texinfo definitions file.
14382
14383@TeX{} is a typesetting program; it does not print files directly, but
14384produces output files called @sc{dvi} files. To print a typeset
14385document, you need a program to print @sc{dvi} files. If your system
14386has @TeX{} installed, chances are it has such a program. The precise
14387command to use depends on your system; @kbd{lpr -d} is common; another
14388(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
14389require a file name without any extension or a @samp{.dvi} extension.
14390
14391@TeX{} also requires a macro definitions file called
14392@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
14393written in Texinfo format. On its own, @TeX{} cannot either read or
14394typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
14395and is located in the @file{gdb-@var{version-number}/texinfo}
14396directory.
14397
14398If you have @TeX{} and a @sc{dvi} printer program installed, you can
14399typeset and print this manual. First switch to the the @file{gdb}
14400subdirectory of the main source directory (for example, to
14401@file{gdb-@value{GDBVN}/gdb}) and type:
14402
14403@example
14404make gdb.dvi
14405@end example
14406
14407Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c906108c 14408
6d2ebf8b 14409@node Installing GDB
c906108c
SS
14410@appendix Installing @value{GDBN}
14411@cindex configuring @value{GDBN}
14412@cindex installation
14413
c906108c
SS
14414@value{GDBN} comes with a @code{configure} script that automates the process
14415of preparing @value{GDBN} for installation; you can then use @code{make} to
14416build the @code{gdb} program.
14417@iftex
14418@c irrelevant in info file; it's as current as the code it lives with.
14419@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
14420look at the @file{README} file in the sources; we may have improved the
14421installation procedures since publishing this manual.}
14422@end iftex
14423
5d161b24
DB
14424The @value{GDBN} distribution includes all the source code you need for
14425@value{GDBN} in a single directory, whose name is usually composed by
c906108c
SS
14426appending the version number to @samp{gdb}.
14427
14428For example, the @value{GDBN} version @value{GDBVN} distribution is in the
14429@file{gdb-@value{GDBVN}} directory. That directory contains:
14430
14431@table @code
14432@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
14433script for configuring @value{GDBN} and all its supporting libraries
14434
14435@item gdb-@value{GDBVN}/gdb
14436the source specific to @value{GDBN} itself
14437
14438@item gdb-@value{GDBVN}/bfd
14439source for the Binary File Descriptor library
14440
14441@item gdb-@value{GDBVN}/include
14442@sc{gnu} include files
14443
14444@item gdb-@value{GDBVN}/libiberty
14445source for the @samp{-liberty} free software library
14446
14447@item gdb-@value{GDBVN}/opcodes
14448source for the library of opcode tables and disassemblers
14449
14450@item gdb-@value{GDBVN}/readline
14451source for the @sc{gnu} command-line interface
14452
14453@item gdb-@value{GDBVN}/glob
14454source for the @sc{gnu} filename pattern-matching subroutine
14455
14456@item gdb-@value{GDBVN}/mmalloc
14457source for the @sc{gnu} memory-mapped malloc package
14458@end table
14459
14460The simplest way to configure and build @value{GDBN} is to run @code{configure}
14461from the @file{gdb-@var{version-number}} source directory, which in
14462this example is the @file{gdb-@value{GDBVN}} directory.
14463
14464First switch to the @file{gdb-@var{version-number}} source directory
14465if you are not already in it; then run @code{configure}. Pass the
14466identifier for the platform on which @value{GDBN} will run as an
14467argument.
14468
14469For example:
14470
14471@example
14472cd gdb-@value{GDBVN}
14473./configure @var{host}
14474make
14475@end example
14476
14477@noindent
14478where @var{host} is an identifier such as @samp{sun4} or
14479@samp{decstation}, that identifies the platform where @value{GDBN} will run.
14480(You can often leave off @var{host}; @code{configure} tries to guess the
14481correct value by examining your system.)
14482
14483Running @samp{configure @var{host}} and then running @code{make} builds the
14484@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
14485libraries, then @code{gdb} itself. The configured source files, and the
14486binaries, are left in the corresponding source directories.
14487
14488@need 750
14489@code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
14490system does not recognize this automatically when you run a different
14491shell, you may need to run @code{sh} on it explicitly:
14492
14493@example
14494sh configure @var{host}
14495@end example
14496
14497If you run @code{configure} from a directory that contains source
14498directories for multiple libraries or programs, such as the
14499@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
14500creates configuration files for every directory level underneath (unless
14501you tell it not to, with the @samp{--norecursion} option).
14502
14503You can run the @code{configure} script from any of the
14504subordinate directories in the @value{GDBN} distribution if you only want to
14505configure that subdirectory, but be sure to specify a path to it.
14506
14507For example, with version @value{GDBVN}, type the following to configure only
14508the @code{bfd} subdirectory:
14509
14510@example
14511@group
14512cd gdb-@value{GDBVN}/bfd
14513../configure @var{host}
14514@end group
14515@end example
14516
14517You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
14518However, you should make sure that the shell on your path (named by
14519the @samp{SHELL} environment variable) is publicly readable. Remember
14520that @value{GDBN} uses the shell to start your program---some systems refuse to
14521let @value{GDBN} debug child processes whose programs are not readable.
14522
14523@menu
14524* Separate Objdir:: Compiling @value{GDBN} in another directory
14525* Config Names:: Specifying names for hosts and targets
14526* Configure Options:: Summary of options for configure
14527@end menu
14528
6d2ebf8b 14529@node Separate Objdir
c906108c
SS
14530@section Compiling @value{GDBN} in another directory
14531
14532If you want to run @value{GDBN} versions for several host or target machines,
14533you need a different @code{gdb} compiled for each combination of
14534host and target. @code{configure} is designed to make this easy by
14535allowing you to generate each configuration in a separate subdirectory,
14536rather than in the source directory. If your @code{make} program
14537handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
14538@code{make} in each of these directories builds the @code{gdb}
14539program specified there.
14540
14541To build @code{gdb} in a separate directory, run @code{configure}
14542with the @samp{--srcdir} option to specify where to find the source.
14543(You also need to specify a path to find @code{configure}
14544itself from your working directory. If the path to @code{configure}
14545would be the same as the argument to @samp{--srcdir}, you can leave out
14546the @samp{--srcdir} option; it is assumed.)
14547
5d161b24 14548For example, with version @value{GDBVN}, you can build @value{GDBN} in a
c906108c
SS
14549separate directory for a Sun 4 like this:
14550
14551@example
14552@group
14553cd gdb-@value{GDBVN}
14554mkdir ../gdb-sun4
14555cd ../gdb-sun4
14556../gdb-@value{GDBVN}/configure sun4
14557make
14558@end group
14559@end example
14560
14561When @code{configure} builds a configuration using a remote source
14562directory, it creates a tree for the binaries with the same structure
14563(and using the same names) as the tree under the source directory. In
14564the example, you'd find the Sun 4 library @file{libiberty.a} in the
14565directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
14566@file{gdb-sun4/gdb}.
14567
14568One popular reason to build several @value{GDBN} configurations in separate
5d161b24
DB
14569directories is to configure @value{GDBN} for cross-compiling (where
14570@value{GDBN} runs on one machine---the @dfn{host}---while debugging
14571programs that run on another machine---the @dfn{target}).
c906108c
SS
14572You specify a cross-debugging target by
14573giving the @samp{--target=@var{target}} option to @code{configure}.
14574
14575When you run @code{make} to build a program or library, you must run
14576it in a configured directory---whatever directory you were in when you
14577called @code{configure} (or one of its subdirectories).
14578
14579The @code{Makefile} that @code{configure} generates in each source
14580directory also runs recursively. If you type @code{make} in a source
14581directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
14582directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
14583will build all the required libraries, and then build GDB.
14584
14585When you have multiple hosts or targets configured in separate
14586directories, you can run @code{make} on them in parallel (for example,
14587if they are NFS-mounted on each of the hosts); they will not interfere
14588with each other.
14589
6d2ebf8b 14590@node Config Names
c906108c
SS
14591@section Specifying names for hosts and targets
14592
14593The specifications used for hosts and targets in the @code{configure}
14594script are based on a three-part naming scheme, but some short predefined
14595aliases are also supported. The full naming scheme encodes three pieces
14596of information in the following pattern:
14597
14598@example
14599@var{architecture}-@var{vendor}-@var{os}
14600@end example
14601
14602For example, you can use the alias @code{sun4} as a @var{host} argument,
14603or as the value for @var{target} in a @code{--target=@var{target}}
14604option. The equivalent full name is @samp{sparc-sun-sunos4}.
14605
14606The @code{configure} script accompanying @value{GDBN} does not provide
14607any query facility to list all supported host and target names or
14608aliases. @code{configure} calls the Bourne shell script
14609@code{config.sub} to map abbreviations to full names; you can read the
14610script, if you wish, or you can use it to test your guesses on
14611abbreviations---for example:
14612
14613@smallexample
14614% sh config.sub i386-linux
14615i386-pc-linux-gnu
14616% sh config.sub alpha-linux
14617alpha-unknown-linux-gnu
14618% sh config.sub hp9k700
14619hppa1.1-hp-hpux
14620% sh config.sub sun4
14621sparc-sun-sunos4.1.1
14622% sh config.sub sun3
14623m68k-sun-sunos4.1.1
14624% sh config.sub i986v
14625Invalid configuration `i986v': machine `i986v' not recognized
14626@end smallexample
14627
14628@noindent
14629@code{config.sub} is also distributed in the @value{GDBN} source
14630directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
14631
6d2ebf8b 14632@node Configure Options
c906108c
SS
14633@section @code{configure} options
14634
14635Here is a summary of the @code{configure} options and arguments that
14636are most often useful for building @value{GDBN}. @code{configure} also has
14637several other options not listed here. @inforef{What Configure
14638Does,,configure.info}, for a full explanation of @code{configure}.
14639
14640@example
14641configure @r{[}--help@r{]}
14642 @r{[}--prefix=@var{dir}@r{]}
14643 @r{[}--exec-prefix=@var{dir}@r{]}
14644 @r{[}--srcdir=@var{dirname}@r{]}
14645 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
14646 @r{[}--target=@var{target}@r{]}
14647 @var{host}
14648@end example
14649
14650@noindent
14651You may introduce options with a single @samp{-} rather than
14652@samp{--} if you prefer; but you may abbreviate option names if you use
14653@samp{--}.
14654
14655@table @code
14656@item --help
14657Display a quick summary of how to invoke @code{configure}.
14658
14659@item --prefix=@var{dir}
14660Configure the source to install programs and files under directory
14661@file{@var{dir}}.
14662
14663@item --exec-prefix=@var{dir}
14664Configure the source to install programs under directory
14665@file{@var{dir}}.
14666
14667@c avoid splitting the warning from the explanation:
14668@need 2000
14669@item --srcdir=@var{dirname}
14670@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
14671@code{make} that implements the @code{VPATH} feature.}@*
14672Use this option to make configurations in directories separate from the
14673@value{GDBN} source directories. Among other things, you can use this to
14674build (or maintain) several configurations simultaneously, in separate
14675directories. @code{configure} writes configuration specific files in
14676the current directory, but arranges for them to use the source in the
14677directory @var{dirname}. @code{configure} creates directories under
14678the working directory in parallel to the source directories below
14679@var{dirname}.
14680
14681@item --norecursion
14682Configure only the directory level where @code{configure} is executed; do not
14683propagate configuration to subdirectories.
14684
14685@item --target=@var{target}
14686Configure @value{GDBN} for cross-debugging programs running on the specified
14687@var{target}. Without this option, @value{GDBN} is configured to debug
14688programs that run on the same machine (@var{host}) as @value{GDBN} itself.
14689
14690There is no convenient way to generate a list of all available targets.
14691
14692@item @var{host} @dots{}
14693Configure @value{GDBN} to run on the specified @var{host}.
14694
14695There is no convenient way to generate a list of all available hosts.
14696@end table
14697
14698There are many other options available as well, but they are generally
14699needed for special purposes only.
5d161b24 14700
6d2ebf8b 14701@node Index
c906108c
SS
14702@unnumbered Index
14703
14704@printindex cp
14705
14706@tex
14707% I think something like @colophon should be in texinfo. In the
14708% meantime:
14709\long\def\colophon{\hbox to0pt{}\vfill
14710\centerline{The body of this manual is set in}
14711\centerline{\fontname\tenrm,}
14712\centerline{with headings in {\bf\fontname\tenbf}}
14713\centerline{and examples in {\tt\fontname\tentt}.}
14714\centerline{{\it\fontname\tenit\/},}
14715\centerline{{\bf\fontname\tenbf}, and}
14716\centerline{{\sl\fontname\tensl\/}}
14717\centerline{are used for emphasis.}\vfill}
14718\page\colophon
14719% Blame: doc@cygnus.com, 1991.
14720@end tex
14721
449f3b6c
AC
14722@c TeX can handle the contents at the start but makeinfo 3.12 can not
14723@ifinfo
c906108c 14724@contents
449f3b6c
AC
14725@end ifinfo
14726@ifhtml
14727@contents
14728@end ifhtml
14729
c906108c 14730@bye
This page took 0.940225 seconds and 4 git commands to generate.