]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/doc/gdb.texinfo
* elflink.h (elf_bfd_final_link): Check if dynobj is not NULL
[thirdparty/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
2a6585f0
EZ
59Invariant Sections being just ``Free Software'', with the Front-Cover
60Texts being ``A GNU Manual,'' and with the Back-Cover Texts as in (a)
61below.
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
2a6585f0
EZ
96Invariant Sections being just ``Free Software'', with the Front-Cover
97Texts being ``A GNU Manual,'' and with the Back-Cover Texts as in (a)
98below.
e9c75b65
EZ
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
fe95c787
MS
9350@kindex maint info sections
9351@item maint info sections
9352Another command that can give you extra information about program sections
9353is @code{maint info sections}. In addition to the section information
9354displayed by @code{info files}, this command displays the flags and file
9355offset of each section in the executable and core dump files. In addition,
9356@code{maint info sections} provides the following command options (which
9357may be arbitrarily combined):
9358
9359@table @code
9360@item ALLOBJ
9361Display sections for all loaded object files, including shared libraries.
9362@item @var{sections}
6600abed 9363Display info only for named @var{sections}.
fe95c787
MS
9364@item @var{section-flags}
9365Display info only for sections for which @var{section-flags} are true.
9366The section flags that @value{GDBN} currently knows about are:
9367@table @code
9368@item ALLOC
9369Section will have space allocated in the process when loaded.
9370Set for all sections except those containing debug information.
9371@item LOAD
9372Section will be loaded from the file into the child process memory.
9373Set for pre-initialized code and data, clear for @code{.bss} sections.
9374@item RELOC
9375Section needs to be relocated before loading.
9376@item READONLY
9377Section cannot be modified by the child process.
9378@item CODE
9379Section contains executable code only.
6600abed 9380@item DATA
fe95c787
MS
9381Section contains data only (no executable code).
9382@item ROM
9383Section will reside in ROM.
9384@item CONSTRUCTOR
9385Section contains data for constructor/destructor lists.
9386@item HAS_CONTENTS
9387Section is not empty.
9388@item NEVER_LOAD
9389An instruction to the linker to not output the section.
9390@item COFF_SHARED_LIBRARY
9391A notification to the linker that the section contains
9392COFF shared library information.
9393@item IS_COMMON
9394Section contains common symbols.
9395@end table
9396@end table
c906108c
SS
9397@end table
9398
9399All file-specifying commands allow both absolute and relative file names
9400as arguments. @value{GDBN} always converts the file name to an absolute file
9401name and remembers it that way.
9402
c906108c 9403@cindex shared libraries
c906108c
SS
9404@value{GDBN} supports HP-UX, SunOS, SVr4, Irix 5, and IBM RS/6000 shared
9405libraries.
53a5351d 9406
c906108c
SS
9407@value{GDBN} automatically loads symbol definitions from shared libraries
9408when you use the @code{run} command, or when you examine a core file.
9409(Before you issue the @code{run} command, @value{GDBN} does not understand
9410references to a function in a shared library, however---unless you are
9411debugging a core file).
53a5351d
JM
9412
9413On HP-UX, if the program loads a library explicitly, @value{GDBN}
9414automatically loads the symbols at the time of the @code{shl_load} call.
9415
c906108c
SS
9416@c FIXME: some @value{GDBN} release may permit some refs to undef
9417@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
9418@c FIXME...lib; check this from time to time when updating manual
9419
b7209cb4
FF
9420There are times, however, when you may wish to not automatically load
9421symbol definitions from shared libraries, such as when they are
9422particularly large or there are many of them.
9423
9424To control the automatic loading of shared library symbols, use the
9425commands:
9426
9427@table @code
9428@kindex set auto-solib-add
9429@item set auto-solib-add @var{mode}
9430If @var{mode} is @code{on}, symbols from all shared object libraries
9431will be loaded automatically when the inferior begins execution, you
9432attach to an independently started inferior, or when the dynamic linker
9433informs @value{GDBN} that a new library has been loaded. If @var{mode}
9434is @code{off}, symbols must be loaded manually, using the
9435@code{sharedlibrary} command. The default value is @code{on}.
9436
9437@kindex show auto-solib-add
9438@item show auto-solib-add
9439Display the current autoloading mode.
9440@end table
9441
9442To explicitly load shared library symbols, use the @code{sharedlibrary}
9443command:
9444
c906108c
SS
9445@table @code
9446@kindex info sharedlibrary
9447@kindex info share
9448@item info share
9449@itemx info sharedlibrary
9450Print the names of the shared libraries which are currently loaded.
9451
9452@kindex sharedlibrary
9453@kindex share
9454@item sharedlibrary @var{regex}
9455@itemx share @var{regex}
c906108c
SS
9456Load shared object library symbols for files matching a
9457Unix regular expression.
9458As with files loaded automatically, it only loads shared libraries
9459required by your program for a core file or after typing @code{run}. If
9460@var{regex} is omitted all shared libraries required by your program are
9461loaded.
9462@end table
9463
b7209cb4
FF
9464On some systems, such as HP-UX systems, @value{GDBN} supports
9465autoloading shared library symbols until a limiting threshold size is
9466reached. This provides the benefit of allowing autoloading to remain on
9467by default, but avoids autoloading excessively large shared libraries,
9468up to a threshold that is initially set, but which you can modify if you
9469wish.
c906108c
SS
9470
9471Beyond that threshold, symbols from shared libraries must be explicitly
d4f3574e
SS
9472loaded. To load these symbols, use the command @code{sharedlibrary
9473@var{filename}}. The base address of the shared library is determined
c906108c
SS
9474automatically by @value{GDBN} and need not be specified.
9475
9476To display or set the threshold, use the commands:
9477
9478@table @code
b7209cb4
FF
9479@kindex set auto-solib-limit
9480@item set auto-solib-limit @var{threshold}
9481Set the autoloading size threshold, in an integral number of megabytes.
9482If @var{threshold} is nonzero and shared library autoloading is enabled,
9483symbols from all shared object libraries will be loaded until the total
9484size of the loaded shared library symbols exceeds this threshold.
c906108c 9485Otherwise, symbols must be loaded manually, using the
b7209cb4
FF
9486@code{sharedlibrary} command. The default threshold is 100 (i.e. 100
9487Mb).
c906108c 9488
b7209cb4
FF
9489@kindex show auto-solib-limit
9490@item show auto-solib-limit
c906108c
SS
9491Display the current autoloading size threshold, in megabytes.
9492@end table
c906108c 9493
6d2ebf8b 9494@node Symbol Errors
c906108c
SS
9495@section Errors reading symbol files
9496
9497While reading a symbol file, @value{GDBN} occasionally encounters problems,
9498such as symbol types it does not recognize, or known bugs in compiler
9499output. By default, @value{GDBN} does not notify you of such problems, since
9500they are relatively common and primarily of interest to people
9501debugging compilers. If you are interested in seeing information
9502about ill-constructed symbol tables, you can either ask @value{GDBN} to print
9503only one message about each such type of problem, no matter how many
9504times the problem occurs; or you can ask @value{GDBN} to print more messages,
9505to see how many times the problems occur, with the @code{set
9506complaints} command (@pxref{Messages/Warnings, ,Optional warnings and
9507messages}).
9508
9509The messages currently printed, and their meanings, include:
9510
9511@table @code
9512@item inner block not inside outer block in @var{symbol}
9513
9514The symbol information shows where symbol scopes begin and end
9515(such as at the start of a function or a block of statements). This
9516error indicates that an inner scope block is not fully contained
9517in its outer scope blocks.
9518
9519@value{GDBN} circumvents the problem by treating the inner block as if it had
9520the same scope as the outer block. In the error message, @var{symbol}
9521may be shown as ``@code{(don't know)}'' if the outer block is not a
9522function.
9523
9524@item block at @var{address} out of order
9525
9526The symbol information for symbol scope blocks should occur in
9527order of increasing addresses. This error indicates that it does not
9528do so.
9529
9530@value{GDBN} does not circumvent this problem, and has trouble
9531locating symbols in the source file whose symbols it is reading. (You
9532can often determine what source file is affected by specifying
9533@code{set verbose on}. @xref{Messages/Warnings, ,Optional warnings and
9534messages}.)
9535
9536@item bad block start address patched
9537
9538The symbol information for a symbol scope block has a start address
9539smaller than the address of the preceding source line. This is known
9540to occur in the SunOS 4.1.1 (and earlier) C compiler.
9541
9542@value{GDBN} circumvents the problem by treating the symbol scope block as
9543starting on the previous source line.
9544
9545@item bad string table offset in symbol @var{n}
9546
9547@cindex foo
9548Symbol number @var{n} contains a pointer into the string table which is
9549larger than the size of the string table.
9550
9551@value{GDBN} circumvents the problem by considering the symbol to have the
9552name @code{foo}, which may cause other problems if many symbols end up
9553with this name.
9554
9555@item unknown symbol type @code{0x@var{nn}}
9556
7a292a7a
SS
9557The symbol information contains new data types that @value{GDBN} does
9558not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 9559uncomprehended information, in hexadecimal.
c906108c 9560
7a292a7a
SS
9561@value{GDBN} circumvents the error by ignoring this symbol information.
9562This usually allows you to debug your program, though certain symbols
c906108c 9563are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
9564debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
9565on @code{complain}, then go up to the function @code{read_dbx_symtab}
9566and examine @code{*bufp} to see the symbol.
c906108c
SS
9567
9568@item stub type has NULL name
c906108c 9569
7a292a7a 9570@value{GDBN} could not find the full definition for a struct or class.
c906108c 9571
7a292a7a 9572@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 9573The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
9574information that recent versions of the compiler should have output for
9575it.
c906108c
SS
9576
9577@item info mismatch between compiler and debugger
9578
9579@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 9580
c906108c
SS
9581@end table
9582
6d2ebf8b 9583@node Targets
c906108c 9584@chapter Specifying a Debugging Target
7a292a7a 9585
c906108c
SS
9586@cindex debugging target
9587@kindex target
9588
9589A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
9590
9591Often, @value{GDBN} runs in the same host environment as your program;
9592in that case, the debugging target is specified as a side effect when
9593you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
9594flexibility---for example, running @value{GDBN} on a physically separate
9595host, or controlling a standalone system over a serial port or a
53a5351d
JM
9596realtime system over a TCP/IP connection---you can use the @code{target}
9597command to specify one of the target types configured for @value{GDBN}
9598(@pxref{Target Commands, ,Commands for managing targets}).
c906108c
SS
9599
9600@menu
9601* Active Targets:: Active targets
9602* Target Commands:: Commands for managing targets
c906108c
SS
9603* Byte Order:: Choosing target byte order
9604* Remote:: Remote debugging
96baa820 9605* KOD:: Kernel Object Display
c906108c
SS
9606
9607@end menu
9608
6d2ebf8b 9609@node Active Targets
c906108c 9610@section Active targets
7a292a7a 9611
c906108c
SS
9612@cindex stacking targets
9613@cindex active targets
9614@cindex multiple targets
9615
c906108c 9616There are three classes of targets: processes, core files, and
7a292a7a
SS
9617executable files. @value{GDBN} can work concurrently on up to three
9618active targets, one in each class. This allows you to (for example)
9619start a process and inspect its activity without abandoning your work on
9620a core file.
c906108c
SS
9621
9622For example, if you execute @samp{gdb a.out}, then the executable file
9623@code{a.out} is the only active target. If you designate a core file as
9624well---presumably from a prior run that crashed and coredumped---then
9625@value{GDBN} has two active targets and uses them in tandem, looking
9626first in the corefile target, then in the executable file, to satisfy
9627requests for memory addresses. (Typically, these two classes of target
9628are complementary, since core files contain only a program's
9629read-write memory---variables and so on---plus machine status, while
9630executable files contain only the program text and initialized data.)
c906108c
SS
9631
9632When you type @code{run}, your executable file becomes an active process
7a292a7a
SS
9633target as well. When a process target is active, all @value{GDBN}
9634commands requesting memory addresses refer to that target; addresses in
9635an active core file or executable file target are obscured while the
9636process target is active.
c906108c 9637
7a292a7a
SS
9638Use the @code{core-file} and @code{exec-file} commands to select a new
9639core file or executable target (@pxref{Files, ,Commands to specify
c906108c 9640files}). To specify as a target a process that is already running, use
7a292a7a
SS
9641the @code{attach} command (@pxref{Attach, ,Debugging an already-running
9642process}).
c906108c 9643
6d2ebf8b 9644@node Target Commands
c906108c
SS
9645@section Commands for managing targets
9646
9647@table @code
9648@item target @var{type} @var{parameters}
7a292a7a
SS
9649Connects the @value{GDBN} host environment to a target machine or
9650process. A target is typically a protocol for talking to debugging
9651facilities. You use the argument @var{type} to specify the type or
9652protocol of the target machine.
c906108c
SS
9653
9654Further @var{parameters} are interpreted by the target protocol, but
9655typically include things like device names or host names to connect
9656with, process numbers, and baud rates.
c906108c
SS
9657
9658The @code{target} command does not repeat if you press @key{RET} again
9659after executing the command.
9660
9661@kindex help target
9662@item help target
9663Displays the names of all targets available. To display targets
9664currently selected, use either @code{info target} or @code{info files}
9665(@pxref{Files, ,Commands to specify files}).
9666
9667@item help target @var{name}
9668Describe a particular target, including any parameters necessary to
9669select it.
9670
9671@kindex set gnutarget
9672@item set gnutarget @var{args}
5d161b24 9673@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 9674knows whether it is reading an @dfn{executable},
5d161b24
DB
9675a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
9676with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
9677with @code{gnutarget} the @code{target} refers to a program, not a machine.
9678
d4f3574e 9679@quotation
c906108c
SS
9680@emph{Warning:} To specify a file format with @code{set gnutarget},
9681you must know the actual BFD name.
d4f3574e 9682@end quotation
c906108c 9683
d4f3574e
SS
9684@noindent
9685@xref{Files, , Commands to specify files}.
c906108c 9686
5d161b24 9687@kindex show gnutarget
c906108c
SS
9688@item show gnutarget
9689Use the @code{show gnutarget} command to display what file format
9690@code{gnutarget} is set to read. If you have not set @code{gnutarget},
9691@value{GDBN} will determine the file format for each file automatically,
9692and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
9693@end table
9694
c906108c
SS
9695Here are some common targets (available, or not, depending on the GDB
9696configuration):
c906108c
SS
9697
9698@table @code
9699@kindex target exec
9700@item target exec @var{program}
9701An executable file. @samp{target exec @var{program}} is the same as
9702@samp{exec-file @var{program}}.
9703
c906108c
SS
9704@kindex target core
9705@item target core @var{filename}
9706A core dump file. @samp{target core @var{filename}} is the same as
9707@samp{core-file @var{filename}}.
c906108c
SS
9708
9709@kindex target remote
9710@item target remote @var{dev}
9711Remote serial target in GDB-specific protocol. The argument @var{dev}
9712specifies what serial device to use for the connection (e.g.
9713@file{/dev/ttya}). @xref{Remote, ,Remote debugging}. @code{target remote}
d4f3574e 9714supports the @code{load} command. This is only useful if you have
c906108c
SS
9715some other way of getting the stub to the target system, and you can put
9716it somewhere in memory where it won't get clobbered by the download.
9717
c906108c
SS
9718@kindex target sim
9719@item target sim
2df3850c 9720Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213
JM
9721In general,
9722@example
9723 target sim
9724 load
9725 run
9726@end example
d4f3574e 9727@noindent
104c1213 9728works; however, you cannot assume that a specific memory map, device
d4f3574e 9729drivers, or even basic I/O is available, although some simulators do
104c1213
JM
9730provide these. For info about any processor-specific simulator details,
9731see the appropriate section in @ref{Embedded Processors, ,Embedded
9732Processors}.
9733
c906108c
SS
9734@end table
9735
104c1213 9736Some configurations may include these targets as well:
c906108c
SS
9737
9738@table @code
9739
c906108c
SS
9740@kindex target nrom
9741@item target nrom @var{dev}
9742NetROM ROM emulator. This target only supports downloading.
9743
c906108c
SS
9744@end table
9745
5d161b24 9746Different targets are available on different configurations of @value{GDBN};
c906108c 9747your configuration may have more or fewer targets.
c906108c
SS
9748
9749Many remote targets require you to download the executable's code
9750once you've successfully established a connection.
9751
9752@table @code
9753
9754@kindex load @var{filename}
9755@item load @var{filename}
c906108c
SS
9756Depending on what remote debugging facilities are configured into
9757@value{GDBN}, the @code{load} command may be available. Where it exists, it
9758is meant to make @var{filename} (an executable) available for debugging
9759on the remote system---by downloading, or dynamic linking, for example.
9760@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
9761the @code{add-symbol-file} command.
9762
9763If your @value{GDBN} does not have a @code{load} command, attempting to
9764execute it gets the error message ``@code{You can't do that when your
9765target is @dots{}}''
c906108c
SS
9766
9767The file is loaded at whatever address is specified in the executable.
9768For some object file formats, you can specify the load address when you
9769link the program; for other formats, like a.out, the object file format
9770specifies a fixed address.
9771@c FIXME! This would be a good place for an xref to the GNU linker doc.
9772
c906108c
SS
9773@code{load} does not repeat if you press @key{RET} again after using it.
9774@end table
9775
6d2ebf8b 9776@node Byte Order
c906108c 9777@section Choosing target byte order
7a292a7a 9778
c906108c
SS
9779@cindex choosing target byte order
9780@cindex target byte order
c906108c
SS
9781
9782Some types of processors, such as the MIPS, PowerPC, and Hitachi SH,
9783offer the ability to run either big-endian or little-endian byte
9784orders. Usually the executable or symbol will include a bit to
9785designate the endian-ness, and you will not need to worry about
9786which to use. However, you may still find it useful to adjust
d4f3574e 9787@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
9788
9789@table @code
9790@kindex set endian big
9791@item set endian big
9792Instruct @value{GDBN} to assume the target is big-endian.
9793
9794@kindex set endian little
9795@item set endian little
9796Instruct @value{GDBN} to assume the target is little-endian.
9797
9798@kindex set endian auto
9799@item set endian auto
9800Instruct @value{GDBN} to use the byte order associated with the
9801executable.
9802
9803@item show endian
9804Display @value{GDBN}'s current idea of the target byte order.
9805
9806@end table
9807
9808Note that these commands merely adjust interpretation of symbolic
9809data on the host, and that they have absolutely no effect on the
9810target system.
9811
6d2ebf8b 9812@node Remote
c906108c
SS
9813@section Remote debugging
9814@cindex remote debugging
9815
9816If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
9817@value{GDBN} in the usual way, it is often useful to use remote debugging.
9818For example, you might use remote debugging on an operating system kernel,
c906108c
SS
9819or on a small system which does not have a general purpose operating system
9820powerful enough to run a full-featured debugger.
9821
9822Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
9823to make this work with particular debugging targets. In addition,
5d161b24 9824@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
9825but not specific to any particular target system) which you can use if you
9826write the remote stubs---the code that runs on the remote system to
9827communicate with @value{GDBN}.
9828
9829Other remote targets may be available in your
9830configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 9831
c906108c 9832@menu
c906108c 9833* Remote Serial:: @value{GDBN} remote serial protocol
c906108c
SS
9834@end menu
9835
6d2ebf8b 9836@node Remote Serial
104c1213 9837@subsection The @value{GDBN} remote serial protocol
7a292a7a 9838
104c1213
JM
9839@cindex remote serial debugging, overview
9840To debug a program running on another machine (the debugging
9841@dfn{target} machine), you must first arrange for all the usual
9842prerequisites for the program to run by itself. For example, for a C
9843program, you need:
c906108c 9844
104c1213
JM
9845@enumerate
9846@item
9847A startup routine to set up the C runtime environment; these usually
9848have a name like @file{crt0}. The startup routine may be supplied by
9849your hardware supplier, or you may have to write your own.
96baa820 9850
5d161b24 9851@item
d4f3574e 9852A C subroutine library to support your program's
104c1213 9853subroutine calls, notably managing input and output.
96baa820 9854
104c1213
JM
9855@item
9856A way of getting your program to the other machine---for example, a
9857download program. These are often supplied by the hardware
9858manufacturer, but you may have to write your own from hardware
9859documentation.
9860@end enumerate
96baa820 9861
104c1213
JM
9862The next step is to arrange for your program to use a serial port to
9863communicate with the machine where @value{GDBN} is running (the @dfn{host}
9864machine). In general terms, the scheme looks like this:
96baa820 9865
104c1213
JM
9866@table @emph
9867@item On the host,
9868@value{GDBN} already understands how to use this protocol; when everything
9869else is set up, you can simply use the @samp{target remote} command
9870(@pxref{Targets,,Specifying a Debugging Target}).
9871
9872@item On the target,
9873you must link with your program a few special-purpose subroutines that
9874implement the @value{GDBN} remote serial protocol. The file containing these
9875subroutines is called a @dfn{debugging stub}.
9876
9877On certain remote targets, you can use an auxiliary program
9878@code{gdbserver} instead of linking a stub into your program.
9879@xref{Server,,Using the @code{gdbserver} program}, for details.
9880@end table
96baa820 9881
104c1213
JM
9882The debugging stub is specific to the architecture of the remote
9883machine; for example, use @file{sparc-stub.c} to debug programs on
9884@sc{sparc} boards.
96baa820 9885
104c1213
JM
9886@cindex remote serial stub list
9887These working remote stubs are distributed with @value{GDBN}:
96baa820 9888
104c1213
JM
9889@table @code
9890
9891@item i386-stub.c
41afff9a 9892@cindex @file{i386-stub.c}
104c1213
JM
9893@cindex Intel
9894@cindex i386
9895For Intel 386 and compatible architectures.
9896
9897@item m68k-stub.c
41afff9a 9898@cindex @file{m68k-stub.c}
104c1213
JM
9899@cindex Motorola 680x0
9900@cindex m680x0
9901For Motorola 680x0 architectures.
9902
9903@item sh-stub.c
41afff9a 9904@cindex @file{sh-stub.c}
104c1213
JM
9905@cindex Hitachi
9906@cindex SH
9907For Hitachi SH architectures.
9908
9909@item sparc-stub.c
41afff9a 9910@cindex @file{sparc-stub.c}
104c1213
JM
9911@cindex Sparc
9912For @sc{sparc} architectures.
9913
9914@item sparcl-stub.c
41afff9a 9915@cindex @file{sparcl-stub.c}
104c1213
JM
9916@cindex Fujitsu
9917@cindex SparcLite
9918For Fujitsu @sc{sparclite} architectures.
9919
9920@end table
9921
9922The @file{README} file in the @value{GDBN} distribution may list other
9923recently added stubs.
9924
9925@menu
9926* Stub Contents:: What the stub can do for you
9927* Bootstrapping:: What you must do for the stub
9928* Debug Session:: Putting it all together
9929* Protocol:: Definition of the communication protocol
9930* Server:: Using the `gdbserver' program
9931* NetWare:: Using the `gdbserve.nlm' program
9932@end menu
9933
6d2ebf8b 9934@node Stub Contents
104c1213
JM
9935@subsubsection What the stub can do for you
9936
9937@cindex remote serial stub
9938The debugging stub for your architecture supplies these three
9939subroutines:
9940
9941@table @code
9942@item set_debug_traps
9943@kindex set_debug_traps
9944@cindex remote serial stub, initialization
9945This routine arranges for @code{handle_exception} to run when your
9946program stops. You must call this subroutine explicitly near the
9947beginning of your program.
9948
9949@item handle_exception
9950@kindex handle_exception
9951@cindex remote serial stub, main routine
9952This is the central workhorse, but your program never calls it
9953explicitly---the setup code arranges for @code{handle_exception} to
9954run when a trap is triggered.
9955
9956@code{handle_exception} takes control when your program stops during
9957execution (for example, on a breakpoint), and mediates communications
9958with @value{GDBN} on the host machine. This is where the communications
9959protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 9960representative on the target machine. It begins by sending summary
104c1213
JM
9961information on the state of your program, then continues to execute,
9962retrieving and transmitting any information @value{GDBN} needs, until you
9963execute a @value{GDBN} command that makes your program resume; at that point,
9964@code{handle_exception} returns control to your own code on the target
5d161b24 9965machine.
104c1213
JM
9966
9967@item breakpoint
9968@cindex @code{breakpoint} subroutine, remote
9969Use this auxiliary subroutine to make your program contain a
9970breakpoint. Depending on the particular situation, this may be the only
9971way for @value{GDBN} to get control. For instance, if your target
9972machine has some sort of interrupt button, you won't need to call this;
9973pressing the interrupt button transfers control to
9974@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
9975simply receiving characters on the serial port may also trigger a trap;
9976again, in that situation, you don't need to call @code{breakpoint} from
9977your own program---simply running @samp{target remote} from the host
5d161b24 9978@value{GDBN} session gets control.
104c1213
JM
9979
9980Call @code{breakpoint} if none of these is true, or if you simply want
9981to make certain your program stops at a predetermined point for the
9982start of your debugging session.
9983@end table
9984
6d2ebf8b 9985@node Bootstrapping
104c1213
JM
9986@subsubsection What you must do for the stub
9987
9988@cindex remote stub, support routines
9989The debugging stubs that come with @value{GDBN} are set up for a particular
9990chip architecture, but they have no information about the rest of your
9991debugging target machine.
9992
9993First of all you need to tell the stub how to communicate with the
9994serial port.
9995
9996@table @code
9997@item int getDebugChar()
9998@kindex getDebugChar
9999Write this subroutine to read a single character from the serial port.
10000It may be identical to @code{getchar} for your target system; a
10001different name is used to allow you to distinguish the two if you wish.
10002
10003@item void putDebugChar(int)
10004@kindex putDebugChar
10005Write this subroutine to write a single character to the serial port.
5d161b24 10006It may be identical to @code{putchar} for your target system; a
104c1213
JM
10007different name is used to allow you to distinguish the two if you wish.
10008@end table
10009
10010@cindex control C, and remote debugging
10011@cindex interrupting remote targets
10012If you want @value{GDBN} to be able to stop your program while it is
10013running, you need to use an interrupt-driven serial driver, and arrange
10014for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
10015character). That is the character which @value{GDBN} uses to tell the
10016remote system to stop.
10017
10018Getting the debugging target to return the proper status to @value{GDBN}
10019probably requires changes to the standard stub; one quick and dirty way
10020is to just execute a breakpoint instruction (the ``dirty'' part is that
10021@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
10022
10023Other routines you need to supply are:
10024
10025@table @code
10026@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
10027@kindex exceptionHandler
10028Write this function to install @var{exception_address} in the exception
10029handling tables. You need to do this because the stub does not have any
10030way of knowing what the exception handling tables on your target system
10031are like (for example, the processor's table might be in @sc{rom},
10032containing entries which point to a table in @sc{ram}).
10033@var{exception_number} is the exception number which should be changed;
10034its meaning is architecture-dependent (for example, different numbers
10035might represent divide by zero, misaligned access, etc). When this
10036exception occurs, control should be transferred directly to
10037@var{exception_address}, and the processor state (stack, registers,
10038and so on) should be just as it is when a processor exception occurs. So if
10039you want to use a jump instruction to reach @var{exception_address}, it
10040should be a simple jump, not a jump to subroutine.
10041
10042For the 386, @var{exception_address} should be installed as an interrupt
10043gate so that interrupts are masked while the handler runs. The gate
10044should be at privilege level 0 (the most privileged level). The
10045@sc{sparc} and 68k stubs are able to mask interrupts themselves without
10046help from @code{exceptionHandler}.
10047
10048@item void flush_i_cache()
10049@kindex flush_i_cache
d4f3574e 10050On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
10051instruction cache, if any, on your target machine. If there is no
10052instruction cache, this subroutine may be a no-op.
10053
10054On target machines that have instruction caches, @value{GDBN} requires this
10055function to make certain that the state of your program is stable.
10056@end table
10057
10058@noindent
10059You must also make sure this library routine is available:
10060
10061@table @code
10062@item void *memset(void *, int, int)
10063@kindex memset
10064This is the standard library function @code{memset} that sets an area of
10065memory to a known value. If you have one of the free versions of
10066@code{libc.a}, @code{memset} can be found there; otherwise, you must
10067either obtain it from your hardware manufacturer, or write your own.
10068@end table
10069
10070If you do not use the GNU C compiler, you may need other standard
10071library subroutines as well; this varies from one stub to another,
10072but in general the stubs are likely to use any of the common library
d4f3574e 10073subroutines which @code{@value{GCC}} generates as inline code.
104c1213
JM
10074
10075
6d2ebf8b 10076@node Debug Session
104c1213
JM
10077@subsubsection Putting it all together
10078
10079@cindex remote serial debugging summary
10080In summary, when your program is ready to debug, you must follow these
10081steps.
10082
10083@enumerate
10084@item
6d2ebf8b 10085Make sure you have defined the supporting low-level routines
104c1213
JM
10086(@pxref{Bootstrapping,,What you must do for the stub}):
10087@display
10088@code{getDebugChar}, @code{putDebugChar},
10089@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
10090@end display
10091
10092@item
10093Insert these lines near the top of your program:
10094
10095@example
10096set_debug_traps();
10097breakpoint();
10098@end example
10099
10100@item
10101For the 680x0 stub only, you need to provide a variable called
10102@code{exceptionHook}. Normally you just use:
10103
10104@example
10105void (*exceptionHook)() = 0;
10106@end example
10107
d4f3574e 10108@noindent
104c1213 10109but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 10110function in your program, that function is called when
104c1213
JM
10111@code{@value{GDBN}} continues after stopping on a trap (for example, bus
10112error). The function indicated by @code{exceptionHook} is called with
10113one parameter: an @code{int} which is the exception number.
10114
10115@item
10116Compile and link together: your program, the @value{GDBN} debugging stub for
10117your target architecture, and the supporting subroutines.
10118
10119@item
10120Make sure you have a serial connection between your target machine and
10121the @value{GDBN} host, and identify the serial port on the host.
10122
10123@item
10124@c The "remote" target now provides a `load' command, so we should
10125@c document that. FIXME.
10126Download your program to your target machine (or get it there by
10127whatever means the manufacturer provides), and start it.
10128
10129@item
10130To start remote debugging, run @value{GDBN} on the host machine, and specify
10131as an executable file the program that is running in the remote machine.
10132This tells @value{GDBN} how to find your program's symbols and the contents
10133of its pure text.
10134
d4f3574e 10135@item
104c1213 10136@cindex serial line, @code{target remote}
d4f3574e 10137Establish communication using the @code{target remote} command.
104c1213
JM
10138Its argument specifies how to communicate with the target
10139machine---either via a devicename attached to a direct serial line, or a
10140TCP port (usually to a terminal server which in turn has a serial line
10141to the target). For example, to use a serial line connected to the
10142device named @file{/dev/ttyb}:
10143
10144@example
10145target remote /dev/ttyb
10146@end example
10147
10148@cindex TCP port, @code{target remote}
10149To use a TCP connection, use an argument of the form
10150@code{@var{host}:port}. For example, to connect to port 2828 on a
10151terminal server named @code{manyfarms}:
10152
10153@example
10154target remote manyfarms:2828
10155@end example
a2bea4c3
CV
10156
10157If your remote target is actually running on the same machine as
10158your debugger session (e.g.@: a simulator of your target running on
10159the same host), you can omit the hostname. For example, to connect
10160to port 1234 on your local machine:
10161
10162@example
10163target remote :1234
10164@end example
10165@noindent
10166
10167Note that the colon is still required here.
104c1213
JM
10168@end enumerate
10169
10170Now you can use all the usual commands to examine and change data and to
10171step and continue the remote program.
10172
10173To resume the remote program and stop debugging it, use the @code{detach}
10174command.
10175
10176@cindex interrupting remote programs
10177@cindex remote programs, interrupting
10178Whenever @value{GDBN} is waiting for the remote program, if you type the
10179interrupt character (often @key{C-C}), @value{GDBN} attempts to stop the
10180program. This may or may not succeed, depending in part on the hardware
10181and the serial drivers the remote system uses. If you type the
10182interrupt character once again, @value{GDBN} displays this prompt:
10183
10184@example
10185Interrupted while waiting for the program.
10186Give up (and stop debugging it)? (y or n)
10187@end example
10188
10189If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
10190(If you decide you want to try again later, you can use @samp{target
10191remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
10192goes back to waiting.
10193
6d2ebf8b 10194@node Protocol
104c1213
JM
10195@subsubsection Communication protocol
10196
10197@cindex debugging stub, example
10198@cindex remote stub, example
10199@cindex stub example, remote debugging
10200The stub files provided with @value{GDBN} implement the target side of the
10201communication protocol, and the @value{GDBN} side is implemented in the
10202@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
10203these subroutines to communicate, and ignore the details. (If you're
10204implementing your own stub file, you can still ignore the details: start
10205with one of the existing stub files. @file{sparc-stub.c} is the best
10206organized, and therefore the easiest to read.)
10207
10208However, there may be occasions when you need to know something about
10209the protocol---for example, if there is only one serial port to your
10210target machine, you might want your program to do something special if
10211it recognizes a packet meant for @value{GDBN}.
10212
10213In the examples below, @samp{<-} and @samp{->} are used to indicate
10214transmitted and received data respectfully.
10215
10216@cindex protocol, @value{GDBN} remote serial
10217@cindex serial protocol, @value{GDBN} remote
10218@cindex remote serial protocol
6cf7e474
AC
10219All @value{GDBN} commands and responses (other than acknowledgments) are
10220sent as a @var{packet}. A @var{packet} is introduced with the character
10221@samp{$}, the actual @var{packet-data}, and the terminating character
10222@samp{#} followed by a two-digit @var{checksum}:
104c1213
JM
10223
10224@example
10225@code{$}@var{packet-data}@code{#}@var{checksum}
10226@end example
10227@noindent
104c1213
JM
10228
10229@cindex checksum, for @value{GDBN} remote
10230@noindent
10231The two-digit @var{checksum} is computed as the modulo 256 sum of all
6cf7e474
AC
10232characters between the leading @samp{$} and the trailing @samp{#} (an
10233eight bit unsigned checksum).
10234
10235Implementors should note that prior to @value{GDBN} 5.0 the protocol
10236specification also included an optional two-digit @var{sequence-id}:
10237
10238@example
10239@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
10240@end example
104c1213
JM
10241
10242@cindex sequence-id, for @value{GDBN} remote
10243@noindent
6cf7e474
AC
10244That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
10245has never output @var{sequence-id}s. Stubs that handle packets added
10246since @value{GDBN} 5.0 must not accept @var{sequence-id}.
104c1213 10247
6cf7e474 10248@cindex acknowledgment, for @value{GDBN} remote
104c1213
JM
10249When either the host or the target machine receives a packet, the first
10250response expected is an acknowledgment: either @samp{+} (to indicate
10251the package was received correctly) or @samp{-} (to request
10252retransmission):
10253
10254@example
10255<- @code{$}@var{packet-data}@code{#}@var{checksum}
10256-> @code{+}
10257@end example
10258@noindent
104c1213
JM
10259
10260The host (@value{GDBN}) sends @var{command}s, and the target (the
10261debugging stub incorporated in your program) sends a @var{response}. In
10262the case of step and continue @var{command}s, the response is only sent
10263when the operation has completed (the target has again stopped).
10264
10265@var{packet-data} consists of a sequence of characters with the
6cf7e474
AC
10266exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
10267exceptions).
10268
10269Fields within the packet should be separated using @samp{,} @samp{;} or
10270@samp{:}. Except where otherwise noted all numbers are represented in
10271HEX with leading zeros suppressed.
10272
10273Implementors should note that prior to @value{GDBN} 5.0, the character
10274@samp{:} could not appear as the third character in a packet (as it
10275would potentially conflict with the @var{sequence-id}).
104c1213
JM
10276
10277Response @var{data} can be run-length encoded to save space. A @samp{*}
c3f6f71d 10278means that the next character is an @sc{ascii} encoding giving a repeat count
104c1213
JM
10279which stands for that many repetitions of the character preceding the
10280@samp{*}. The encoding is @code{n+29}, yielding a printable character
d4f3574e
SS
10281where @code{n >=3} (which is where rle starts to win). The printable
10282characters @samp{$}, @samp{#}, @samp{+} and @samp{-} or with a numeric
10283value greater than 126 should not be used.
10284
10285Some remote systems have used a different run-length encoding mechanism
10286loosely refered to as the cisco encoding. Following the @samp{*}
10287character are two hex digits that indicate the size of the packet.
104c1213
JM
10288
10289So:
10290@example
10291"@code{0* }"
10292@end example
10293@noindent
10294means the same as "0000".
10295
598ca718 10296The error response returned for some packets includes a two character
104c1213
JM
10297error number. That number is not well defined.
10298
10299For any @var{command} not supported by the stub, an empty response
10300(@samp{$#00}) should be returned. That way it is possible to extend the
10301protocol. A newer @value{GDBN} can tell if a packet is supported based
d4f3574e 10302on that response.
104c1213 10303
f1251bdd
C
10304A stub is required to support the @samp{g}, @samp{G}, @samp{m}, @samp{M},
10305@samp{c}, and @samp{s} @var{command}s. All other @var{command}s are
10306optional.
10307
104c1213
JM
10308Below is a complete list of all currently defined @var{command}s and
10309their corresponding response @var{data}:
598ca718 10310@page
104c1213
JM
10311@multitable @columnfractions .30 .30 .40
10312@item Packet
10313@tab Request
10314@tab Description
10315
df2396a1 10316@item extended mode
104c1213
JM
10317@tab @code{!}
10318@tab
df2396a1 10319Enable extended mode. In extended mode, the remote server is made
656db9b0 10320persistent. The @samp{R} packet is used to restart the program being
df2396a1 10321debugged.
104c1213 10322@item
df2396a1 10323@tab reply @samp{OK}
104c1213 10324@tab
df2396a1 10325The remote target both supports and has enabled extended mode.
104c1213
JM
10326
10327@item last signal
10328@tab @code{?}
10329@tab
d4f3574e
SS
10330Indicate the reason the target halted. The reply is the same as for step
10331and continue.
10332@item
10333@tab reply
10334@tab see below
10335
104c1213
JM
10336
10337@item reserved
10338@tab @code{a}
5d161b24 10339@tab Reserved for future use
104c1213 10340
f1251bdd 10341@item set program arguments @strong{(reserved)}
104c1213
JM
10342@tab @code{A}@var{arglen}@code{,}@var{argnum}@code{,}@var{arg}@code{,...}
10343@tab
598ca718
EZ
10344@item
10345@tab
10346@tab
104c1213
JM
10347Initialized @samp{argv[]} array passed into program. @var{arglen}
10348specifies the number of bytes in the hex encoded byte stream @var{arg}.
d4f3574e 10349See @file{gdbserver} for more details.
104c1213
JM
10350@item
10351@tab reply @code{OK}
10352@item
10353@tab reply @code{E}@var{NN}
10354
10355@item set baud @strong{(deprecated)}
10356@tab @code{b}@var{baud}
10357@tab
10358Change the serial line speed to @var{baud}. JTC: @emph{When does the
10359transport layer state change? When it's received, or after the ACK is
10360transmitted. In either case, there are problems if the command or the
10361acknowledgment packet is dropped.} Stan: @emph{If people really wanted
10362to add something like this, and get it working for the first time, they
10363ought to modify ser-unix.c to send some kind of out-of-band message to a
10364specially-setup stub and have the switch happen "in between" packets, so
10365that from remote protocol's point of view, nothing actually
10366happened.}
10367
10368@item set breakpoint @strong{(deprecated)}
10369@tab @code{B}@var{addr},@var{mode}
10370@tab
10371Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
10372breakpoint at @var{addr}. @emph{This has been replaced by the @samp{Z} and
10373@samp{z} packets.}
10374
10375@item continue
10376@tab @code{c}@var{addr}
10377@tab
10378@var{addr} is address to resume. If @var{addr} is omitted, resume at
10379current address.
10380@item
10381@tab reply
10382@tab see below
10383
f1251bdd 10384@item continue with signal
104c1213
JM
10385@tab @code{C}@var{sig}@code{;}@var{addr}
10386@tab
10387Continue with signal @var{sig} (hex signal number). If
10388@code{;}@var{addr} is omitted, resume at same address.
10389@item
10390@tab reply
10391@tab see below
10392
598ca718 10393@item toggle debug @strong{(deprecated)}
104c1213
JM
10394@tab @code{d}
10395@tab
d4f3574e 10396toggle debug flag.
104c1213 10397
f1251bdd 10398@item detach
104c1213 10399@tab @code{D}
d4f3574e 10400@tab
2df3850c
JM
10401Detach @value{GDBN} from the remote system. Sent to the remote target before
10402@value{GDBN} disconnects.
d4f3574e
SS
10403@item
10404@tab reply @emph{no response}
10405@tab
598ca718 10406@value{GDBN} does not check for any response after sending this packet.
104c1213
JM
10407
10408@item reserved
10409@tab @code{e}
5d161b24 10410@tab Reserved for future use
104c1213
JM
10411
10412@item reserved
10413@tab @code{E}
5d161b24 10414@tab Reserved for future use
104c1213
JM
10415
10416@item reserved
10417@tab @code{f}
5d161b24 10418@tab Reserved for future use
104c1213
JM
10419
10420@item reserved
10421@tab @code{F}
5d161b24 10422@tab Reserved for future use
104c1213
JM
10423
10424@item read registers
10425@tab @code{g}
10426@tab Read general registers.
10427@item
10428@tab reply @var{XX...}
10429@tab
10430Each byte of register data is described by two hex digits. The bytes
10431with the register are transmitted in target byte order. The size of
d4f3574e 10432each register and their position within the @samp{g} @var{packet} are
2df3850c 10433determined by the @value{GDBN} internal macros @var{REGISTER_RAW_SIZE} and
d4f3574e
SS
10434@var{REGISTER_NAME} macros. The specification of several standard
10435@code{g} packets is specified below.
104c1213
JM
10436@item
10437@tab @code{E}@var{NN}
10438@tab for an error.
10439
10440@item write regs
10441@tab @code{G}@var{XX...}
10442@tab
10443See @samp{g} for a description of the @var{XX...} data.
10444@item
10445@tab reply @code{OK}
10446@tab for success
10447@item
10448@tab reply @code{E}@var{NN}
10449@tab for an error
10450
10451@item reserved
10452@tab @code{h}
5d161b24 10453@tab Reserved for future use
104c1213 10454
f1251bdd 10455@item set thread
104c1213
JM
10456@tab @code{H}@var{c}@var{t...}
10457@tab
d4f3574e
SS
10458Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
10459@samp{G}, et.al.). @var{c} = @samp{c} for thread used in step and
10460continue; @var{t...} can be -1 for all threads. @var{c} = @samp{g} for
10461thread used in other operations. If zero, pick a thread, any thread.
104c1213
JM
10462@item
10463@tab reply @code{OK}
10464@tab for success
10465@item
10466@tab reply @code{E}@var{NN}
10467@tab for an error
10468
d4f3574e
SS
10469@c FIXME: JTC:
10470@c 'H': How restrictive (or permissive) is the thread model. If a
5d161b24 10471@c thread is selected and stopped, are other threads allowed
d4f3574e
SS
10472@c to continue to execute? As I mentioned above, I think the
10473@c semantics of each command when a thread is selected must be
10474@c described. For example:
10475@c
10476@c 'g': If the stub supports threads and a specific thread is
10477@c selected, returns the register block from that thread;
10478@c otherwise returns current registers.
10479@c
10480@c 'G' If the stub supports threads and a specific thread is
10481@c selected, sets the registers of the register block of
10482@c that thread; otherwise sets current registers.
10483
f1251bdd 10484@item cycle step @strong{(draft)}
104c1213
JM
10485@tab @code{i}@var{addr}@code{,}@var{nnn}
10486@tab
10487Step the remote target by a single clock cycle. If @code{,}@var{nnn} is
10488present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
10489step starting at that address.
10490
f1251bdd 10491@item signal then cycle step @strong{(reserved)}
104c1213
JM
10492@tab @code{I}
10493@tab
10494See @samp{i} and @samp{S} for likely syntax and semantics.
10495
10496@item reserved
10497@tab @code{j}
10498@tab Reserved for future use
10499
10500@item reserved
10501@tab @code{J}
5d161b24 10502@tab Reserved for future use
104c1213 10503
f1251bdd 10504@item kill request
104c1213
JM
10505@tab @code{k}
10506@tab
d4f3574e
SS
10507FIXME: @emph{There is no description of how operate when a specific
10508thread context has been selected (ie. does 'k' kill only that thread?)}.
104c1213
JM
10509
10510@item reserved
10511@tab @code{l}
5d161b24 10512@tab Reserved for future use
104c1213
JM
10513
10514@item reserved
10515@tab @code{L}
5d161b24 10516@tab Reserved for future use
104c1213
JM
10517
10518@item read memory
10519@tab @code{m}@var{addr}@code{,}@var{length}
10520@tab
10521Read @var{length} bytes of memory starting at address @var{addr}.
2df3850c 10522Neither @value{GDBN} nor the stub assume that sized memory transfers are assumed
d4f3574e
SS
10523using word alligned accesses. FIXME: @emph{A word aligned memory
10524transfer mechanism is needed.}
104c1213
JM
10525@item
10526@tab reply @var{XX...}
10527@tab
d4f3574e 10528@var{XX...} is mem contents. Can be fewer bytes than requested if able
2df3850c 10529to read only part of the data. Neither @value{GDBN} nor the stub assume that
d4f3574e
SS
10530sized memory transfers are assumed using word alligned accesses. FIXME:
10531@emph{A word aligned memory transfer mechanism is needed.}
104c1213
JM
10532@item
10533@tab reply @code{E}@var{NN}
10534@tab @var{NN} is errno
10535
10536@item write mem
10537@tab @code{M}@var{addr},@var{length}@code{:}@var{XX...}
10538@tab
10539Write @var{length} bytes of memory starting at address @var{addr}.
10540@var{XX...} is the data.
10541@item
10542@tab reply @code{OK}
10543@tab for success
10544@item
10545@tab reply @code{E}@var{NN}
10546@tab
10547for an error (this includes the case where only part of the data was
10548written).
10549
10550@item reserved
10551@tab @code{n}
5d161b24 10552@tab Reserved for future use
104c1213
JM
10553
10554@item reserved
10555@tab @code{N}
5d161b24 10556@tab Reserved for future use
104c1213
JM
10557
10558@item reserved
10559@tab @code{o}
5d161b24 10560@tab Reserved for future use
104c1213
JM
10561
10562@item reserved
10563@tab @code{O}
5d161b24 10564@tab Reserved for future use
104c1213
JM
10565
10566@item read reg @strong{(reserved)}
10567@tab @code{p}@var{n...}
10568@tab
10569See write register.
10570@item
10571@tab return @var{r....}
10572@tab The hex encoded value of the register in target byte order.
10573
f1251bdd 10574@item write reg
104c1213
JM
10575@tab @code{P}@var{n...}@code{=}@var{r...}
10576@tab
10577Write register @var{n...} with value @var{r...}, which contains two hex
10578digits for each byte in the register (target byte order).
10579@item
10580@tab reply @code{OK}
10581@tab for success
10582@item
10583@tab reply @code{E}@var{NN}
10584@tab for an error
10585
f1251bdd 10586@item general query
104c1213
JM
10587@tab @code{q}@var{query}
10588@tab
598ca718 10589Request info about @var{query}. In general @value{GDBN} queries
104c1213 10590have a leading upper case letter. Custom vendor queries should use a
d4f3574e
SS
10591company prefix (in lower case) ex: @samp{qfsf.var}. @var{query} may
10592optionally be followed by a @samp{,} or @samp{;} separated list. Stubs
10593must ensure that they match the full @var{query} name.
104c1213
JM
10594@item
10595@tab reply @code{XX...}
d4f3574e 10596@tab Hex encoded data from query. The reply can not be empty.
104c1213
JM
10597@item
10598@tab reply @code{E}@var{NN}
10599@tab error reply
10600@item
10601@tab reply @samp{}
10602@tab Indicating an unrecognized @var{query}.
10603
f1251bdd 10604@item general set
104c1213
JM
10605@tab @code{Q}@var{var}@code{=}@var{val}
10606@tab
10607Set value of @var{var} to @var{val}. See @samp{q} for a discussing of
10608naming conventions.
10609
598ca718 10610@item reset @strong{(deprecated)}
d4f3574e
SS
10611@tab @code{r}
10612@tab
10613Reset the entire system.
104c1213 10614
f1251bdd 10615@item remote restart
104c1213
JM
10616@tab @code{R}@var{XX}
10617@tab
df2396a1
AC
10618Restart the program being debugged. @var{XX}, while needed, is ignored.
10619This packet is only available in extended mode.
10620@item
10621@tab
10622no reply
10623@tab
10624The @samp{R} packet has no reply.
104c1213 10625
f1251bdd 10626@item step
104c1213
JM
10627@tab @code{s}@var{addr}
10628@tab
10629@var{addr} is address to resume. If @var{addr} is omitted, resume at
10630same address.
10631@item
10632@tab reply
10633@tab see below
10634
f1251bdd 10635@item step with signal
104c1213
JM
10636@tab @code{S}@var{sig}@code{;}@var{addr}
10637@tab
10638Like @samp{C} but step not continue.
10639@item
10640@tab reply
10641@tab see below
10642
f1251bdd 10643@item search
104c1213
JM
10644@tab @code{t}@var{addr}@code{:}@var{PP}@code{,}@var{MM}
10645@tab
10646Search backwards starting at address @var{addr} for a match with pattern
10647@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4
d4f3574e 10648bytes. @var{addr} must be at least 3 digits.
104c1213 10649
f1251bdd 10650@item thread alive
104c1213
JM
10651@tab @code{T}@var{XX}
10652@tab Find out if the thread XX is alive.
10653@item
10654@tab reply @code{OK}
10655@tab thread is still alive
10656@item
10657@tab reply @code{E}@var{NN}
10658@tab thread is dead
5d161b24 10659
104c1213
JM
10660@item reserved
10661@tab @code{u}
5d161b24 10662@tab Reserved for future use
104c1213
JM
10663
10664@item reserved
10665@tab @code{U}
5d161b24 10666@tab Reserved for future use
104c1213
JM
10667
10668@item reserved
10669@tab @code{v}
5d161b24 10670@tab Reserved for future use
104c1213
JM
10671
10672@item reserved
10673@tab @code{V}
5d161b24 10674@tab Reserved for future use
104c1213
JM
10675
10676@item reserved
10677@tab @code{w}
5d161b24 10678@tab Reserved for future use
104c1213
JM
10679
10680@item reserved
10681@tab @code{W}
5d161b24 10682@tab Reserved for future use
104c1213
JM
10683
10684@item reserved
10685@tab @code{x}
5d161b24 10686@tab Reserved for future use
104c1213 10687
f1251bdd 10688@item write mem (binary)
104c1213
JM
10689@tab @code{X}@var{addr}@code{,}@var{length}@var{:}@var{XX...}
10690@tab
10691@var{addr} is address, @var{length} is number of bytes, @var{XX...} is
d4f3574e
SS
10692binary data. The characters @code{$}, @code{#}, and @code{0x7d} are
10693escaped using @code{0x7d}.
104c1213
JM
10694@item
10695@tab reply @code{OK}
10696@tab for success
10697@item
10698@tab reply @code{E}@var{NN}
10699@tab for an error
10700
10701@item reserved
10702@tab @code{y}
5d161b24 10703@tab Reserved for future use
104c1213
JM
10704
10705@item reserved
10706@tab @code{Y}
5d161b24 10707@tab Reserved for future use
104c1213 10708
f1251bdd 10709@item remove break or watchpoint @strong{(draft)}
104c1213
JM
10710@tab @code{z}@var{t}@code{,}@var{addr}@code{,}@var{length}
10711@tab
10712See @samp{Z}.
10713
f1251bdd 10714@item insert break or watchpoint @strong{(draft)}
104c1213
JM
10715@tab @code{Z}@var{t}@code{,}@var{addr}@code{,}@var{length}
10716@tab
10717@var{t} is type: @samp{0} - software breakpoint, @samp{1} - hardware
10718breakpoint, @samp{2} - write watchpoint, @samp{3} - read watchpoint,
10719@samp{4} - access watchpoint; @var{addr} is address; @var{length} is in
10720bytes. For a software breakpoint, @var{length} specifies the size of
10721the instruction to be patched. For hardware breakpoints and watchpoints
d4f3574e
SS
10722@var{length} specifies the memory region to be monitored. To avoid
10723potential problems with duplicate packets, the operations should be
6d2ebf8b 10724implemented in an idempotent way.
104c1213
JM
10725@item
10726@tab reply @code{E}@var{NN}
10727@tab for an error
10728@item
10729@tab reply @code{OK}
10730@tab for success
10731@item
10732@tab @samp{}
10733@tab If not supported.
10734
10735@item reserved
10736@tab <other>
5d161b24 10737@tab Reserved for future use
104c1213
JM
10738
10739@end multitable
10740
d4f3574e
SS
10741The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
10742receive any of the below as a reply. In the case of the @samp{C},
10743@samp{c}, @samp{S} and @samp{s} packets, that reply is only returned
10744when the target halts. In the below the exact meaning of @samp{signal
10745number} is poorly defined. In general one of the UNIX signal numbering
10746conventions is used.
104c1213
JM
10747
10748@multitable @columnfractions .4 .6
10749
10750@item @code{S}@var{AA}
10751@tab @var{AA} is the signal number
10752
10753@item @code{T}@var{AA}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}
10754@tab
10755@var{AA} = two hex digit signal number; @var{n...} = register number
10756(hex), @var{r...} = target byte ordered register contents, size defined
10757by @code{REGISTER_RAW_SIZE}; @var{n...} = @samp{thread}, @var{r...} =
10758thread process ID, this is a hex integer; @var{n...} = other string not
d4f3574e 10759starting with valid hex digit. @value{GDBN} should ignore this
104c1213
JM
10760@var{n...}, @var{r...} pair and go on to the next. This way we can
10761extend the protocol.
10762
10763@item @code{W}@var{AA}
10764@tab
10765The process exited, and @var{AA} is the exit status. This is only
10766applicable for certains sorts of targets.
10767
10768@item @code{X}@var{AA}
10769@tab
10770The process terminated with signal @var{AA}.
10771
6d2ebf8b 10772@item @code{N}@var{AA}@code{;}@var{t...}@code{;}@var{d...}@code{;}@var{b...} @strong{(obsolete)}
104c1213 10773@tab
6d2ebf8b
SS
10774@var{AA} = signal number; @var{t...} = address of symbol "_start";
10775@var{d...} = base of data section; @var{b...} = base of bss section.
10776@emph{Note: only used by Cisco Systems targets. The difference between
10777this reply and the "qOffsets" query is that the 'N' packet may arrive
10778spontaneously whereas the 'qOffsets' is a query initiated by the host
10779debugger.}
104c1213
JM
10780
10781@item @code{O}@var{XX...}
10782@tab
c3f6f71d 10783@var{XX...} is hex encoding of @sc{ascii} data. This can happen at any time
104c1213
JM
10784while the program is running and the debugger should continue to wait
10785for 'W', 'T', etc.
10786
10787@end multitable
10788
d4f3574e
SS
10789The following set and query packets have already been defined.
10790
10791@multitable @columnfractions .2 .2 .6
10792
10793@item current thread
10794@tab @code{q}@code{C}
10795@tab Return the current thread id.
10796@item
10797@tab reply @code{QC}@var{pid}
10798@tab
10799Where @var{pid} is a HEX encoded 16 bit process id.
10800@item
10801@tab reply *
10802@tab Any other reply implies the old pid.
10803
bba2971c
MS
10804@item all thread ids
10805@tab @code{q}@code{fThreadInfo}
10806@item
10807@tab @code{q}@code{sThreadInfo}
d4f3574e 10808@tab
bba2971c
MS
10809Obtain a list of active thread ids from the target (OS). Since there
10810may be too many active threads to fit into one reply packet, this query
10811works iteratively: it may require more than one query/reply sequence to
10812obtain the entire list of threads. The first query of the sequence will
5d161b24 10813be the @code{qf}@code{ThreadInfo} query; subsequent queries in the
bba2971c 10814sequence will be the @code{qs}@code{ThreadInfo} query.
d4f3574e 10815@item
bba2971c
MS
10816@tab
10817@tab NOTE: replaces the @code{qL} query (see below).
d4f3574e 10818@item
5d161b24 10819@tab reply @code{m}@var{<id>}
bba2971c
MS
10820@tab A single thread id
10821@item
00e4a2e4 10822@tab reply @code{m}@var{<id>},@var{<id>...}
bba2971c
MS
10823@tab a comma-separated list of thread ids
10824@item
10825@tab reply @code{l}
10826@tab (lower case 'el') denotes end of list.
10827@item
10828@tab
10829@tab
10830In response to each query, the target will reply with a list of one
10831or more thread ids, in big-endian hex, separated by commas. GDB will
10832respond to each reply with a request for more thread ids (using the
10833@code{qs} form of the query), until the target responds with @code{l}
10834(lower-case el, for @code{'last'}).
10835
10836@item extra thread info
480ff1fb 10837@tab @code{q}@code{ThreadExtraInfo}@code{,}@var{id}
bba2971c
MS
10838@tab
10839@item
10840@tab
10841@tab
10842Where @var{<id>} is a thread-id in big-endian hex.
10843Obtain a printable string description of a thread's attributes from
10844the target OS. This string may contain anything that the target OS
10845thinks is interesting for @value{GDBN} to tell the user about the thread.
10846The string is displayed in @value{GDBN}'s @samp{info threads} display.
5d161b24 10847Some examples of possible thread extra info strings are "Runnable", or
bba2971c
MS
10848"Blocked on Mutex".
10849@item
10850@tab reply @var{XX...}
10851@tab
10852Where @var{XX...} is a hex encoding of @sc{ascii} data, comprising the
10853printable string containing the extra information about the thread's
10854attributes.
d4f3574e
SS
10855
10856@item query @var{LIST} or @var{threadLIST} @strong{(deprecated)}
10857@tab @code{q}@code{L}@var{startflag}@var{threadcount}@var{nextthread}
10858@tab
2b628194
MS
10859@item
10860@tab
10861@tab
d4f3574e
SS
10862Obtain thread information from RTOS. Where: @var{startflag} (one hex
10863digit) is one to indicate the first query and zero to indicate a
10864subsequent query; @var{threadcount} (two hex digits) is the maximum
10865number of threads the response packet can contain; and @var{nextthread}
10866(eight hex digits), for subsequent queries (@var{startflag} is zero), is
10867returned in the response as @var{argthread}.
10868@item
bba2971c
MS
10869@tab
10870@tab NOTE: this query is replaced by the @code{q}@code{fThreadInfo}
10871query (see above).
10872@item
d4f3574e
SS
10873@tab reply @code{q}@code{M}@var{count}@var{done}@var{argthread}@var{thread...}
10874@tab
2b628194
MS
10875@item
10876@tab
10877@tab
d4f3574e
SS
10878Where: @var{count} (two hex digits) is the number of threads being
10879returned; @var{done} (one hex digit) is zero to indicate more threads
10880and one indicates no further threads; @var{argthreadid} (eight hex
10881digits) is @var{nextthread} from the request packet; @var{thread...} is
10882a sequence of thread IDs from the target. @var{threadid} (eight hex
10883digits). See @code{remote.c:parse_threadlist_response()}.
10884
bba2971c
MS
10885@item compute CRC of memory block
10886@tab @code{q}@code{CRC:}@var{addr}@code{,}@var{length}
10887@tab
10888@item
10889@tab reply @code{E}@var{NN}
10890@tab An error (such as memory fault)
10891@item
10892@tab reply @code{C}@var{CRC32}
10893@tab A 32 bit cyclic redundancy check of the specified memory region.
10894
d4f3574e
SS
10895@item query sect offs
10896@tab @code{q}@code{Offsets}
917317f4
JM
10897@tab
10898Get section offsets that the target used when re-locating the downloaded
10899image. @emph{Note: while a @code{Bss} offset is included in the
10900response, @value{GDBN} ignores this and instead applies the @code{Data}
10901offset to the @code{Bss} section.}
d4f3574e
SS
10902@item
10903@tab reply @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
10904
10905@item thread info request
10906@tab @code{q}@code{P}@var{mode}@var{threadid}
10907@tab
598ca718
EZ
10908@item
10909@tab
10910@tab
d4f3574e
SS
10911Returns information on @var{threadid}. Where: @var{mode} is a hex
10912encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
10913@item
10914@tab reply *
10915@tab
10916See @code{remote.c:remote_unpack_thread_info_response()}.
10917
10918@item remote command
10919@tab @code{q}@code{Rcmd,}@var{COMMAND}
10920@tab
598ca718
EZ
10921@item
10922@tab
10923@tab
d4f3574e
SS
10924@var{COMMAND} (hex encoded) is passed to the local interpreter for
10925execution. Invalid commands should be reported using the output string.
10926Before the final result packet, the target may also respond with a
10927number of intermediate @code{O}@var{OUTPUT} console output
10928packets. @emph{Implementors should note that providing access to a
10929stubs's interpreter may have security implications}.
10930@item
10931@tab reply @code{OK}
10932@tab
10933A command response with no output.
10934@item
10935@tab reply @var{OUTPUT}
10936@tab
10937A command response with the hex encoded output string @var{OUTPUT}.
10938@item
10939@tab reply @code{E}@var{NN}
10940@tab
10941Indicate a badly formed request.
10942
10943@item
10944@tab reply @samp{}
10945@tab
10946When @samp{q}@samp{Rcmd} is not recognized.
10947
0f1f2b0a
MS
10948@item symbol lookup
10949@tab @code{qSymbol::}
10950@tab
10951Notify the target that @value{GDBN} is prepared to serve symbol lookup
10952requests. Accept requests from the target for the values of symbols.
10953@item
10954@tab
10955@tab
10956@item
10957@tab reply @code{OK}
10958@tab
10959The target does not need to look up any (more) symbols.
10960@item
10961@tab reply @code{qSymbol:}@var{sym_name}
10962@tab
10963The target requests the value of symbol @var{sym_name} (hex encoded).
10964@value{GDBN} may provide the value by using the
10965@code{qSymbol:}@var{sym_value}:@var{sym_name}
10966message, described below.
10967
10968@item symbol value
10969@tab @code{qSymbol:}@var{sym_value}:@var{sym_name}
10970@tab
10971Set the value of SYM_NAME to SYM_VALUE.
10972@item
10973@tab
10974@tab
10975@var{sym_name} (hex encoded) is the name of a symbol whose value
10976the target has previously requested.
10977@item
10978@tab
10979@tab
10980@var{sym_value} (hex) is the value for symbol @var{sym_name}.
10981If @value{GDBN} cannot supply a value for @var{sym_name}, then this
10982field will be empty.
10983@item
10984@tab reply @code{OK}
10985@tab
10986The target does not need to look up any (more) symbols.
10987@item
10988@tab reply @code{qSymbol:}@var{sym_name}
10989@tab
10990The target requests the value of a new symbol @var{sym_name} (hex encoded).
10991@value{GDBN} will continue to supply the values of symbols (if available),
10992until the target ceases to request them.
10993
d4f3574e
SS
10994@end multitable
10995
10996The following @samp{g}/@samp{G} packets have previously been defined.
10997In the below, some thirty-two bit registers are transferred as sixty-four
10998bits. Those registers should be zero/sign extended (which?) to fill the
10999space allocated. Register bytes are transfered in target byte order.
11000The two nibbles within a register byte are transfered most-significant -
11001least-significant.
11002
11003@multitable @columnfractions .5 .5
11004
11005@item MIPS32
11006@tab
11007All registers are transfered as thirty-two bit quantities in the order:
1100832 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
11009registers; fsr; fir; fp.
11010
11011@item MIPS64
11012@tab
11013All registers are transfered as sixty-four bit quantities (including
11014thirty-two bit registers such as @code{sr}). The ordering is the same
11015as @code{MIPS32}.
11016
11017@end multitable
11018
104c1213
JM
11019Example sequence of a target being re-started. Notice how the restart
11020does not get any direct output:
11021
11022@example
11023<- @code{R00}
11024-> @code{+}
11025@emph{target restarts}
11026<- @code{?}
11027-> @code{+}
11028-> @code{T001:1234123412341234}
11029<- @code{+}
11030@end example
11031
11032Example sequence of a target being stepped by a single instruction:
11033
11034@example
11035<- @code{G1445...}
11036-> @code{+}
11037<- @code{s}
11038-> @code{+}
11039@emph{time passes}
11040-> @code{T001:1234123412341234}
11041<- @code{+}
11042<- @code{g}
11043-> @code{+}
11044-> @code{1455...}
11045<- @code{+}
11046@end example
11047
6d2ebf8b 11048@node Server
104c1213
JM
11049@subsubsection Using the @code{gdbserver} program
11050
11051@kindex gdbserver
11052@cindex remote connection without stubs
11053@code{gdbserver} is a control program for Unix-like systems, which
11054allows you to connect your program with a remote @value{GDBN} via
11055@code{target remote}---but without linking in the usual debugging stub.
11056
11057@code{gdbserver} is not a complete replacement for the debugging stubs,
11058because it requires essentially the same operating-system facilities
11059that @value{GDBN} itself does. In fact, a system that can run
11060@code{gdbserver} to connect to a remote @value{GDBN} could also run
11061@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
11062because it is a much smaller program than @value{GDBN} itself. It is
11063also easier to port than all of @value{GDBN}, so you may be able to get
11064started more quickly on a new system by using @code{gdbserver}.
11065Finally, if you develop code for real-time systems, you may find that
11066the tradeoffs involved in real-time operation make it more convenient to
11067do as much development work as possible on another system, for example
11068by cross-compiling. You can use @code{gdbserver} to make a similar
11069choice for debugging.
11070
11071@value{GDBN} and @code{gdbserver} communicate via either a serial line
11072or a TCP connection, using the standard @value{GDBN} remote serial
11073protocol.
11074
11075@table @emph
11076@item On the target machine,
11077you need to have a copy of the program you want to debug.
11078@code{gdbserver} does not need your program's symbol table, so you can
11079strip the program if necessary to save space. @value{GDBN} on the host
11080system does all the symbol handling.
11081
11082To use the server, you must tell it how to communicate with @value{GDBN};
11083the name of your program; and the arguments for your program. The
11084syntax is:
11085
11086@smallexample
11087target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
11088@end smallexample
11089
11090@var{comm} is either a device name (to use a serial line) or a TCP
11091hostname and portnumber. For example, to debug Emacs with the argument
11092@samp{foo.txt} and communicate with @value{GDBN} over the serial port
11093@file{/dev/com1}:
11094
11095@smallexample
11096target> gdbserver /dev/com1 emacs foo.txt
11097@end smallexample
11098
11099@code{gdbserver} waits passively for the host @value{GDBN} to communicate
11100with it.
11101
11102To use a TCP connection instead of a serial line:
11103
11104@smallexample
11105target> gdbserver host:2345 emacs foo.txt
11106@end smallexample
11107
11108The only difference from the previous example is the first argument,
11109specifying that you are communicating with the host @value{GDBN} via
11110TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
11111expect a TCP connection from machine @samp{host} to local TCP port 2345.
11112(Currently, the @samp{host} part is ignored.) You can choose any number
11113you want for the port number as long as it does not conflict with any
11114TCP ports already in use on the target system (for example, @code{23} is
11115reserved for @code{telnet}).@footnote{If you choose a port number that
11116conflicts with another service, @code{gdbserver} prints an error message
d4f3574e 11117and exits.} You must use the same port number with the host @value{GDBN}
104c1213
JM
11118@code{target remote} command.
11119
11120@item On the @value{GDBN} host machine,
11121you need an unstripped copy of your program, since @value{GDBN} needs
11122symbols and debugging information. Start up @value{GDBN} as usual,
11123using the name of the local copy of your program as the first argument.
11124(You may also need the @w{@samp{--baud}} option if the serial line is
d4f3574e 11125running at anything other than 9600@dmn{bps}.) After that, use @code{target
104c1213
JM
11126remote} to establish communications with @code{gdbserver}. Its argument
11127is either a device name (usually a serial device, like
11128@file{/dev/ttyb}), or a TCP port descriptor in the form
11129@code{@var{host}:@var{PORT}}. For example:
11130
11131@smallexample
11132(@value{GDBP}) target remote /dev/ttyb
11133@end smallexample
11134
11135@noindent
11136communicates with the server via serial line @file{/dev/ttyb}, and
11137
11138@smallexample
11139(@value{GDBP}) target remote the-target:2345
11140@end smallexample
11141
11142@noindent
11143communicates via a TCP connection to port 2345 on host @w{@file{the-target}}.
11144For TCP connections, you must start up @code{gdbserver} prior to using
11145the @code{target remote} command. Otherwise you may get an error whose
11146text depends on the host system, but which usually looks something like
11147@samp{Connection refused}.
11148@end table
11149
6d2ebf8b 11150@node NetWare
104c1213
JM
11151@subsubsection Using the @code{gdbserve.nlm} program
11152
11153@kindex gdbserve.nlm
11154@code{gdbserve.nlm} is a control program for NetWare systems, which
11155allows you to connect your program with a remote @value{GDBN} via
11156@code{target remote}.
11157
11158@value{GDBN} and @code{gdbserve.nlm} communicate via a serial line,
11159using the standard @value{GDBN} remote serial protocol.
11160
11161@table @emph
11162@item On the target machine,
11163you need to have a copy of the program you want to debug.
11164@code{gdbserve.nlm} does not need your program's symbol table, so you
11165can strip the program if necessary to save space. @value{GDBN} on the
11166host system does all the symbol handling.
11167
11168To use the server, you must tell it how to communicate with
11169@value{GDBN}; the name of your program; and the arguments for your
11170program. The syntax is:
11171
5d161b24 11172@smallexample
104c1213
JM
11173load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
11174 [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
11175@end smallexample
11176
11177@var{board} and @var{port} specify the serial line; @var{baud} specifies
11178the baud rate used by the connection. @var{port} and @var{node} default
d4f3574e 11179to 0, @var{baud} defaults to 9600@dmn{bps}.
104c1213
JM
11180
11181For example, to debug Emacs with the argument @samp{foo.txt}and
5d161b24 11182communicate with @value{GDBN} over serial port number 2 or board 1
d4f3574e 11183using a 19200@dmn{bps} connection:
104c1213
JM
11184
11185@smallexample
11186load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
11187@end smallexample
11188
11189@item On the @value{GDBN} host machine,
11190you need an unstripped copy of your program, since @value{GDBN} needs
11191symbols and debugging information. Start up @value{GDBN} as usual,
11192using the name of the local copy of your program as the first argument.
11193(You may also need the @w{@samp{--baud}} option if the serial line is
d4f3574e 11194running at anything other than 9600@dmn{bps}. After that, use @code{target
104c1213
JM
11195remote} to establish communications with @code{gdbserve.nlm}. Its
11196argument is a device name (usually a serial device, like
11197@file{/dev/ttyb}). For example:
11198
11199@smallexample
11200(@value{GDBP}) target remote /dev/ttyb
11201@end smallexample
11202
11203@noindent
11204communications with the server via serial line @file{/dev/ttyb}.
11205@end table
11206
6d2ebf8b 11207@node KOD
104c1213
JM
11208@section Kernel Object Display
11209
11210@cindex kernel object display
11211@cindex kernel object
11212@cindex KOD
11213
11214Some targets support kernel object display. Using this facility,
11215@value{GDBN} communicates specially with the underlying operating system
11216and can display information about operating system-level objects such as
11217mutexes and other synchronization objects. Exactly which objects can be
11218displayed is determined on a per-OS basis.
11219
11220Use the @code{set os} command to set the operating system. This tells
11221@value{GDBN} which kernel object display module to initialize:
11222
11223@example
2df3850c 11224(@value{GDBP}) set os cisco
104c1213
JM
11225@end example
11226
11227If @code{set os} succeeds, @value{GDBN} will display some information
11228about the operating system, and will create a new @code{info} command
11229which can be used to query the target. The @code{info} command is named
11230after the operating system:
11231
11232@example
2df3850c 11233(@value{GDBP}) info cisco
104c1213
JM
11234List of Cisco Kernel Objects
11235Object Description
11236any Any and all objects
11237@end example
11238
11239Further subcommands can be used to query about particular objects known
11240by the kernel.
11241
11242There is currently no way to determine whether a given operating system
96baa820
JM
11243is supported other than to try it.
11244
11245
6d2ebf8b 11246@node Configurations
104c1213
JM
11247@chapter Configuration-Specific Information
11248
11249While nearly all @value{GDBN} commands are available for all native and
11250cross versions of the debugger, there are some exceptions. This chapter
11251describes things that are only available in certain configurations.
11252
11253There are three major categories of configurations: native
11254configurations, where the host and target are the same, embedded
11255operating system configurations, which are usually the same for several
11256different processor architectures, and bare embedded processors, which
11257are quite different from each other.
11258
11259@menu
11260* Native::
11261* Embedded OS::
11262* Embedded Processors::
11263* Architectures::
11264@end menu
11265
6d2ebf8b 11266@node Native
104c1213
JM
11267@section Native
11268
11269This section describes details specific to particular native
11270configurations.
11271
11272@menu
11273* HP-UX:: HP-UX
11274* SVR4 Process Information:: SVR4 process information
9f20bf26 11275* DJGPP Native:: Features specific to the DJGPP port
104c1213
JM
11276@end menu
11277
6d2ebf8b 11278@node HP-UX
104c1213
JM
11279@subsection HP-UX
11280
11281On HP-UX systems, if you refer to a function or variable name that
11282begins with a dollar sign, @value{GDBN} searches for a user or system
11283name first, before it searches for a convenience variable.
11284
6d2ebf8b 11285@node SVR4 Process Information
104c1213
JM
11286@subsection SVR4 process information
11287
11288@kindex /proc
11289@cindex process image
11290
11291Many versions of SVR4 provide a facility called @samp{/proc} that can be
11292used to examine the image of a running process using file-system
11293subroutines. If @value{GDBN} is configured for an operating system with
11294this facility, the command @code{info proc} is available to report on
11295several kinds of information about the process running your program.
11296@code{info proc} works only on SVR4 systems that include the
11297@code{procfs} code. This includes OSF/1 (Digital Unix), Solaris, Irix,
11298and Unixware, but not HP-UX or Linux, for example.
11299
11300@table @code
11301@kindex info proc
11302@item info proc
11303Summarize available information about the process.
11304
11305@kindex info proc mappings
11306@item info proc mappings
11307Report on the address ranges accessible in the program, with information
11308on whether your program may read, write, or execute each range.
f6680716
MS
11309@ignore
11310@comment These sub-options of 'info proc' were not included when
11311@comment procfs.c was re-written. Keep their descriptions around
11312@comment against the day when someone finds the time to put them back in.
104c1213
JM
11313@kindex info proc times
11314@item info proc times
11315Starting time, user CPU time, and system CPU time for your program and
11316its children.
11317
11318@kindex info proc id
11319@item info proc id
11320Report on the process IDs related to your program: its own process ID,
11321the ID of its parent, the process group ID, and the session ID.
11322
11323@kindex info proc status
11324@item info proc status
11325General information on the state of the process. If the process is
11326stopped, this report includes the reason for stopping, and any signal
11327received.
11328
11329@item info proc all
11330Show all the above information about the process.
f6680716 11331@end ignore
104c1213
JM
11332@end table
11333
9f20bf26
EZ
11334@node DJGPP Native
11335@subsection Features for Debugging @sc{djgpp} Programs
11336@cindex @sc{djgpp} debugging
11337@cindex native @sc{djgpp} debugging
11338@cindex MS-DOS-specific commands
11339
11340@sc{djgpp} is the port of @sc{gnu} development tools to MS-DOS and
11341MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
11342that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
11343top of real-mode DOS systems and their emulations.
11344
11345@value{GDBN} supports native debugging of @sc{djgpp} programs, and
11346defines a few commands specific to the @sc{djgpp} port. This
11347subsection describes those commands.
11348
11349@table @code
11350@kindex info dos
11351@item info dos
11352This is a prefix of @sc{djgpp}-specific commands which print
11353information about the target system and important OS structures.
11354
11355@kindex sysinfo
11356@cindex MS-DOS system info
11357@cindex free memory information (MS-DOS)
11358@item info dos sysinfo
11359This command displays assorted information about the underlying
11360platform: the CPU type and features, the OS version and flavor, the
11361DPMI version, and the available conventional and DPMI memory.
11362
11363@cindex GDT
11364@cindex LDT
11365@cindex IDT
11366@cindex segment descriptor tables
11367@cindex descriptor tables display
11368@item info dos gdt
11369@itemx info dos ldt
11370@itemx info dos idt
11371These 3 commands display entries from, respectively, Global, Local,
11372and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
11373tables are data structures which store a descriptor for each segment
11374that is currently in use. The segment's selector is an index into a
11375descriptor table; the table entry for that index holds the
11376descriptor's base address and limit, and its attributes and access
11377rights.
11378
11379A typical @sc{djgpp} program uses 3 segments: a code segment, a data
11380segment (used for both data and the stack), and a DOS segment (which
11381allows access to DOS/BIOS data structures and absolute addresses in
11382conventional memory). However, the DPMI host will usually define
11383additional segments in order to support the DPMI environment.
11384
11385@cindex garbled pointers
11386These commands allow to display entries from the descriptor tables.
11387Without an argument, all entries from the specified table are
11388displayed. An argument, which should be an integer expression, means
11389display a single entry whose index is given by the argument. For
11390example, here's a convenient way to display information about the
11391debugged program's data segment:
11392
11393@smallexample
11394(@value{GDBP}) info dos ldt $ds
113950x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)
11396@end smallexample
11397
11398@noindent
11399This comes in handy when you want to see whether a pointer is outside
11400the data segment's limit (i.e.@: @dfn{garbled}).
11401
11402@cindex page tables display (MS-DOS)
11403@item info dos pde
11404@itemx info dos pte
11405These two commands display entries from, respectively, the Page
11406Directory and the Page Tables. Page Directories and Page Tables are
11407data structures which control how virtual memory addresses are mapped
11408into physical addresses. A Page Table includes an entry for every
11409page of memory that is mapped into the program's address space; there
11410may be several Page Tables, each one holding up to 4096 entries. A
11411Page Directory has up to 4096 entries, one each for every Page Table
11412that is currently in use.
11413
11414Without an argument, @kbd{info dos pde} displays the entire Page
11415Directory, and @kbd{info dos pte} displays all the entries in all of
11416the Page Tables. An argument, an integer expression, given to the
11417@kbd{info dos pde} command means display only that entry from the Page
11418Directory table. An argument given to the @kbd{info dos pte} command
11419means display entries from a single Page Table, the one pointed to by
11420the specified entry in the Page Directory.
11421
11422These commands are useful when your program uses @dfn{DMA} (Direct
11423Memory Access), which needs physical addresses to program the DMA
11424controller.
11425
11426These commands are supported only with some DPMI servers.
11427
11428@cindex physical address from linear address
11429@item info dos address-pte
11430This command displays the Page Table entry for a specified linear
11431address. The argument linear address should already have the
11432appropriate segment's base address added to it, because this command
11433accepts addresses which may belong to @emph{any} segment. For
11434example, here's how to display the Page Table entry for the page where
11435the variable @code{i} is stored:
11436
11437@smallexample
11438(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i
11439Page Table entry for address 0x11a00d30:
11440Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30
11441@end smallexample
11442
11443@noindent
11444This says that @code{i} is stored at offset @code{0xd30} from the page
11445whose physical base address is @code{0x02698000}, and prints all the
11446attributes of that page.
11447
11448Note that you must cast the addresses of variables to a @code{char *},
11449since otherwise the value of @code{__djgpp_base_address}, the base
11450address of all variables and functions in a @sc{djgpp} program, will
11451be added using the rules of C pointer arithmetics: if @code{i} is
11452declared an @code{int}, @value{GDBN} will add 4 times the value of
11453@code{__djgpp_base_address} to the address of @code{i}.
11454
11455Here's another example, it displays the Page Table entry for the
11456transfer buffer:
11457
11458@smallexample
11459(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)
11460Page Table entry for address 0x29110:
11461Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110
11462@end smallexample
11463
11464@noindent
11465(The @code{+ 3} offset is because the transfer buffer's address is the
114663rd member of the @code{_go32_info_block} structure.) The output of
11467this command clearly shows that addresses in conventional memory are
11468mapped 1:1, i.e.@: the physical and linear addresses are identical.
11469
11470This command is supported only with some DPMI servers.
11471@end table
11472
6d2ebf8b 11473@node Embedded OS
104c1213
JM
11474@section Embedded Operating Systems
11475
11476This section describes configurations involving the debugging of
11477embedded operating systems that are available for several different
11478architectures.
11479
11480@menu
11481* VxWorks:: Using @value{GDBN} with VxWorks
11482@end menu
11483
11484@value{GDBN} includes the ability to debug programs running on
11485various real-time operating systems.
11486
6d2ebf8b 11487@node VxWorks
104c1213
JM
11488@subsection Using @value{GDBN} with VxWorks
11489
11490@cindex VxWorks
11491
11492@table @code
11493
11494@kindex target vxworks
11495@item target vxworks @var{machinename}
11496A VxWorks system, attached via TCP/IP. The argument @var{machinename}
11497is the target system's machine name or IP address.
11498
11499@end table
11500
11501On VxWorks, @code{load} links @var{filename} dynamically on the
11502current target system as well as adding its symbols in @value{GDBN}.
11503
11504@value{GDBN} enables developers to spawn and debug tasks running on networked
11505VxWorks targets from a Unix host. Already-running tasks spawned from
11506the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
11507both the Unix host and on the VxWorks target. The program
d4f3574e 11508@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
104c1213 11509installed with the name @code{vxgdb}, to distinguish it from a
96a2c332 11510@value{GDBN} for debugging programs on the host itself.)
104c1213
JM
11511
11512@table @code
11513@item VxWorks-timeout @var{args}
11514@kindex vxworks-timeout
5d161b24
DB
11515All VxWorks-based targets now support the option @code{vxworks-timeout}.
11516This option is set by the user, and @var{args} represents the number of
11517seconds @value{GDBN} waits for responses to rpc's. You might use this if
11518your VxWorks target is a slow software simulator or is on the far side
104c1213
JM
11519of a thin network line.
11520@end table
11521
11522The following information on connecting to VxWorks was current when
11523this manual was produced; newer releases of VxWorks may use revised
11524procedures.
11525
11526@kindex INCLUDE_RDB
11527To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
11528to include the remote debugging interface routines in the VxWorks
11529library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
11530VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
11531kernel. The resulting kernel contains @file{rdb.a}, and spawns the
11532source debugging task @code{tRdbTask} when VxWorks is booted. For more
11533information on configuring and remaking VxWorks, see the manufacturer's
11534manual.
11535@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
11536
11537Once you have included @file{rdb.a} in your VxWorks system image and set
11538your Unix execution search path to find @value{GDBN}, you are ready to
96a2c332
SS
11539run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
11540@code{vxgdb}, depending on your installation).
104c1213
JM
11541
11542@value{GDBN} comes up showing the prompt:
11543
11544@example
11545(vxgdb)
11546@end example
11547
11548@menu
11549* VxWorks Connection:: Connecting to VxWorks
11550* VxWorks Download:: VxWorks download
11551* VxWorks Attach:: Running tasks
11552@end menu
11553
6d2ebf8b 11554@node VxWorks Connection
104c1213
JM
11555@subsubsection Connecting to VxWorks
11556
11557The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
11558network. To connect to a target whose host name is ``@code{tt}'', type:
11559
11560@example
11561(vxgdb) target vxworks tt
11562@end example
11563
11564@need 750
11565@value{GDBN} displays messages like these:
11566
11567@smallexample
5d161b24 11568Attaching remote machine across net...
104c1213
JM
11569Connected to tt.
11570@end smallexample
11571
11572@need 1000
11573@value{GDBN} then attempts to read the symbol tables of any object modules
11574loaded into the VxWorks target since it was last booted. @value{GDBN} locates
11575these files by searching the directories listed in the command search
11576path (@pxref{Environment, ,Your program's environment}); if it fails
11577to find an object file, it displays a message such as:
11578
11579@example
11580prog.o: No such file or directory.
11581@end example
11582
11583When this happens, add the appropriate directory to the search path with
11584the @value{GDBN} command @code{path}, and execute the @code{target}
11585command again.
11586
6d2ebf8b 11587@node VxWorks Download
104c1213
JM
11588@subsubsection VxWorks download
11589
11590@cindex download to VxWorks
11591If you have connected to the VxWorks target and you want to debug an
11592object that has not yet been loaded, you can use the @value{GDBN}
11593@code{load} command to download a file from Unix to VxWorks
11594incrementally. The object file given as an argument to the @code{load}
11595command is actually opened twice: first by the VxWorks target in order
11596to download the code, then by @value{GDBN} in order to read the symbol
11597table. This can lead to problems if the current working directories on
11598the two systems differ. If both systems have NFS mounted the same
11599filesystems, you can avoid these problems by using absolute paths.
11600Otherwise, it is simplest to set the working directory on both systems
11601to the directory in which the object file resides, and then to reference
11602the file by its name, without any path. For instance, a program
11603@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
11604and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
11605program, type this on VxWorks:
11606
11607@example
11608-> cd "@var{vxpath}/vw/demo/rdb"
11609@end example
d4f3574e
SS
11610
11611@noindent
104c1213
JM
11612Then, in @value{GDBN}, type:
11613
11614@example
5d161b24 11615(vxgdb) cd @var{hostpath}/vw/demo/rdb
104c1213
JM
11616(vxgdb) load prog.o
11617@end example
11618
11619@value{GDBN} displays a response similar to this:
11620
11621@smallexample
11622Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
11623@end smallexample
11624
11625You can also use the @code{load} command to reload an object module
11626after editing and recompiling the corresponding source file. Note that
11627this makes @value{GDBN} delete all currently-defined breakpoints,
11628auto-displays, and convenience variables, and to clear the value
11629history. (This is necessary in order to preserve the integrity of
d4f3574e 11630debugger's data structures that reference the target system's symbol
104c1213
JM
11631table.)
11632
6d2ebf8b 11633@node VxWorks Attach
104c1213
JM
11634@subsubsection Running tasks
11635
11636@cindex running VxWorks tasks
11637You can also attach to an existing task using the @code{attach} command as
11638follows:
11639
11640@example
11641(vxgdb) attach @var{task}
11642@end example
11643
11644@noindent
11645where @var{task} is the VxWorks hexadecimal task ID. The task can be running
11646or suspended when you attach to it. Running tasks are suspended at
11647the time of attachment.
11648
6d2ebf8b 11649@node Embedded Processors
104c1213
JM
11650@section Embedded Processors
11651
11652This section goes into details specific to particular embedded
11653configurations.
11654
11655@menu
11656* A29K Embedded:: AMD A29K Embedded
11657* ARM:: ARM
11658* H8/300:: Hitachi H8/300
11659* H8/500:: Hitachi H8/500
11660* i960:: Intel i960
11661* M32R/D:: Mitsubishi M32R/D
11662* M68K:: Motorola M68K
11663* M88K:: Motorola M88K
11664* MIPS Embedded:: MIPS Embedded
11665* PA:: HP PA Embedded
11666* PowerPC: PowerPC
11667* SH:: Hitachi SH
11668* Sparclet:: Tsqware Sparclet
11669* Sparclite:: Fujitsu Sparclite
11670* ST2000:: Tandem ST2000
11671* Z8000:: Zilog Z8000
11672@end menu
11673
6d2ebf8b 11674@node A29K Embedded
104c1213
JM
11675@subsection AMD A29K Embedded
11676
11677@menu
11678* A29K UDI::
11679* A29K EB29K::
11680* Comms (EB29K):: Communications setup
11681* gdb-EB29K:: EB29K cross-debugging
11682* Remote Log:: Remote log
11683@end menu
11684
11685@table @code
11686
11687@kindex target adapt
11688@item target adapt @var{dev}
11689Adapt monitor for A29K.
11690
11691@kindex target amd-eb
11692@item target amd-eb @var{dev} @var{speed} @var{PROG}
11693@cindex AMD EB29K
11694Remote PC-resident AMD EB29K board, attached over serial lines.
11695@var{dev} is the serial device, as for @code{target remote};
11696@var{speed} allows you to specify the linespeed; and @var{PROG} is the
11697name of the program to be debugged, as it appears to DOS on the PC.
11698@xref{A29K EB29K, ,EBMON protocol for AMD29K}.
11699
11700@end table
11701
6d2ebf8b 11702@node A29K UDI
104c1213
JM
11703@subsubsection A29K UDI
11704
11705@cindex UDI
11706@cindex AMD29K via UDI
11707
11708@value{GDBN} supports AMD's UDI (``Universal Debugger Interface'')
11709protocol for debugging the a29k processor family. To use this
11710configuration with AMD targets running the MiniMON monitor, you need the
11711program @code{MONTIP}, available from AMD at no charge. You can also
11712use @value{GDBN} with the UDI-conformant a29k simulator program
11713@code{ISSTIP}, also available from AMD.
11714
11715@table @code
11716@item target udi @var{keyword}
11717@kindex udi
11718Select the UDI interface to a remote a29k board or simulator, where
11719@var{keyword} is an entry in the AMD configuration file @file{udi_soc}.
11720This file contains keyword entries which specify parameters used to
11721connect to a29k targets. If the @file{udi_soc} file is not in your
11722working directory, you must set the environment variable @samp{UDICONF}
11723to its pathname.
11724@end table
11725
6d2ebf8b 11726@node A29K EB29K
104c1213
JM
11727@subsubsection EBMON protocol for AMD29K
11728
11729@cindex EB29K board
11730@cindex running 29K programs
11731
11732AMD distributes a 29K development board meant to fit in a PC, together
11733with a DOS-hosted monitor program called @code{EBMON}. As a shorthand
11734term, this development system is called the ``EB29K''. To use
11735@value{GDBN} from a Unix system to run programs on the EB29K board, you
11736must first connect a serial cable between the PC (which hosts the EB29K
11737board) and a serial port on the Unix system. In the following, we
11738assume you've hooked the cable between the PC's @file{COM1} port and
11739@file{/dev/ttya} on the Unix system.
11740
6d2ebf8b 11741@node Comms (EB29K)
104c1213
JM
11742@subsubsection Communications setup
11743
11744The next step is to set up the PC's port, by doing something like this
11745in DOS on the PC:
11746
11747@example
11748C:\> MODE com1:9600,n,8,1,none
11749@end example
11750
11751@noindent
11752This example---run on an MS DOS 4.0 system---sets the PC port to 9600
11753bps, no parity, eight data bits, one stop bit, and no ``retry'' action;
11754you must match the communications parameters when establishing the Unix
11755end of the connection as well.
11756@c FIXME: Who knows what this "no retry action" crud from the DOS manual may
5d161b24 11757@c mean? It's optional; leave it out? ---doc@cygnus.com, 25feb91
d4f3574e
SS
11758@c
11759@c It's optional, but it's unwise to omit it: who knows what is the
11760@c default value set when the DOS machines boots? "No retry" means that
11761@c the DOS serial device driver won't retry the operation if it fails;
11762@c I understand that this is needed because the GDB serial protocol
11763@c handles any errors and retransmissions itself. ---Eli Zaretskii, 3sep99
104c1213
JM
11764
11765To give control of the PC to the Unix side of the serial line, type
11766the following at the DOS console:
11767
11768@example
11769C:\> CTTY com1
11770@end example
11771
11772@noindent
11773(Later, if you wish to return control to the DOS console, you can use
11774the command @code{CTTY con}---but you must send it over the device that
96a2c332 11775had control, in our example over the @file{COM1} serial line.)
104c1213
JM
11776
11777From the Unix host, use a communications program such as @code{tip} or
11778@code{cu} to communicate with the PC; for example,
11779
11780@example
11781cu -s 9600 -l /dev/ttya
11782@end example
11783
11784@noindent
11785The @code{cu} options shown specify, respectively, the linespeed and the
11786serial port to use. If you use @code{tip} instead, your command line
11787may look something like the following:
11788
11789@example
11790tip -9600 /dev/ttya
11791@end example
11792
11793@noindent
11794Your system may require a different name where we show
11795@file{/dev/ttya} as the argument to @code{tip}. The communications
11796parameters, including which port to use, are associated with the
11797@code{tip} argument in the ``remote'' descriptions file---normally the
11798system table @file{/etc/remote}.
11799@c FIXME: What if anything needs doing to match the "n,8,1,none" part of
11800@c the DOS side's comms setup? cu can support -o (odd
11801@c parity), -e (even parity)---apparently no settings for no parity or
11802@c for character size. Taken from stty maybe...? John points out tip
11803@c can set these as internal variables, eg ~s parity=none; man stty
11804@c suggests that it *might* work to stty these options with stdin or
11805@c stdout redirected... ---doc@cygnus.com, 25feb91
d4f3574e
SS
11806@c
11807@c There's nothing to be done for the "none" part of the DOS MODE
11808@c command. The rest of the parameters should be matched by the
11809@c baudrate, bits, and parity used by the Unix side. ---Eli Zaretskii, 3Sep99
104c1213
JM
11810
11811@kindex EBMON
11812Using the @code{tip} or @code{cu} connection, change the DOS working
11813directory to the directory containing a copy of your 29K program, then
11814start the PC program @code{EBMON} (an EB29K control program supplied
11815with your board by AMD). You should see an initial display from
11816@code{EBMON} similar to the one that follows, ending with the
11817@code{EBMON} prompt @samp{#}---
11818
11819@example
11820C:\> G:
11821
11822G:\> CD \usr\joe\work29k
11823
11824G:\USR\JOE\WORK29K> EBMON
11825Am29000 PC Coprocessor Board Monitor, version 3.0-18
11826Copyright 1990 Advanced Micro Devices, Inc.
11827Written by Gibbons and Associates, Inc.
11828
11829Enter '?' or 'H' for help
11830
11831PC Coprocessor Type = EB29K
11832I/O Base = 0x208
11833Memory Base = 0xd0000
11834
11835Data Memory Size = 2048KB
11836Available I-RAM Range = 0x8000 to 0x1fffff
11837Available D-RAM Range = 0x80002000 to 0x801fffff
11838
11839PageSize = 0x400
11840Register Stack Size = 0x800
11841Memory Stack Size = 0x1800
11842
11843CPU PRL = 0x3
11844Am29027 Available = No
11845Byte Write Available = Yes
11846
11847# ~.
11848@end example
11849
11850Then exit the @code{cu} or @code{tip} program (done in the example by
11851typing @code{~.} at the @code{EBMON} prompt). @code{EBMON} keeps
11852running, ready for @value{GDBN} to take over.
11853
11854For this example, we've assumed what is probably the most convenient
11855way to make sure the same 29K program is on both the PC and the Unix
d4f3574e 11856system: a PC/NFS connection that establishes ``drive @file{G:}'' on the
104c1213
JM
11857PC as a file system on the Unix host. If you do not have PC/NFS or
11858something similar connecting the two systems, you must arrange some
11859other way---perhaps floppy-disk transfer---of getting the 29K program
11860from the Unix system to the PC; @value{GDBN} does @emph{not} download it over the
11861serial line.
11862
6d2ebf8b 11863@node gdb-EB29K
104c1213
JM
11864@subsubsection EB29K cross-debugging
11865
11866Finally, @code{cd} to the directory containing an image of your 29K
11867program on the Unix system, and start @value{GDBN}---specifying as argument the
11868name of your 29K program:
11869
11870@example
11871cd /usr/joe/work29k
11872@value{GDBP} myfoo
11873@end example
11874
11875@need 500
11876Now you can use the @code{target} command:
11877
11878@example
11879target amd-eb /dev/ttya 9600 MYFOO
11880@c FIXME: test above 'target amd-eb' as spelled, with caps! caps are meant to
11881@c emphasize that this is the name as seen by DOS (since I think DOS is
11882@c single-minded about case of letters). ---doc@cygnus.com, 25feb91
11883@end example
11884
11885@noindent
11886In this example, we've assumed your program is in a file called
11887@file{myfoo}. Note that the filename given as the last argument to
11888@code{target amd-eb} should be the name of the program as it appears to DOS.
11889In our example this is simply @code{MYFOO}, but in general it can include
11890a DOS path, and depending on your transfer mechanism may not resemble
11891the name on the Unix side.
11892
11893At this point, you can set any breakpoints you wish; when you are ready
11894to see your program run on the 29K board, use the @value{GDBN} command
11895@code{run}.
11896
11897To stop debugging the remote program, use the @value{GDBN} @code{detach}
11898command.
11899
11900To return control of the PC to its console, use @code{tip} or @code{cu}
11901once again, after your @value{GDBN} session has concluded, to attach to
11902@code{EBMON}. You can then type the command @code{q} to shut down
11903@code{EBMON}, returning control to the DOS command-line interpreter.
d4f3574e 11904Type @kbd{CTTY con} to return command input to the main DOS console,
104c1213
JM
11905and type @kbd{~.} to leave @code{tip} or @code{cu}.
11906
6d2ebf8b 11907@node Remote Log
104c1213 11908@subsubsection Remote log
41afff9a 11909@cindex @file{eb.log}, a log file for EB29K
104c1213
JM
11910@cindex log file for EB29K
11911
11912The @code{target amd-eb} command creates a file @file{eb.log} in the
11913current working directory, to help debug problems with the connection.
11914@file{eb.log} records all the output from @code{EBMON}, including echoes
11915of the commands sent to it. Running @samp{tail -f} on this file in
11916another window often helps to understand trouble with @code{EBMON}, or
11917unexpected events on the PC side of the connection.
11918
6d2ebf8b 11919@node ARM
104c1213
JM
11920@subsection ARM
11921
11922@table @code
11923
11924@kindex target rdi
11925@item target rdi @var{dev}
11926ARM Angel monitor, via RDI library interface to ADP protocol. You may
11927use this target to communicate with both boards running the Angel
11928monitor, or with the EmbeddedICE JTAG debug device.
5d161b24 11929
104c1213
JM
11930@kindex target rdp
11931@item target rdp @var{dev}
11932ARM Demon monitor.
11933
11934@end table
11935
6d2ebf8b 11936@node H8/300
104c1213
JM
11937@subsection Hitachi H8/300
11938
11939@table @code
11940
d4f3574e 11941@kindex target hms@r{, with H8/300}
104c1213
JM
11942@item target hms @var{dev}
11943A Hitachi SH, H8/300, or H8/500 board, attached via serial line to your host.
11944Use special commands @code{device} and @code{speed} to control the serial
11945line and the communications speed used.
11946
d4f3574e 11947@kindex target e7000@r{, with H8/300}
104c1213
JM
11948@item target e7000 @var{dev}
11949E7000 emulator for Hitachi H8 and SH.
11950
d4f3574e
SS
11951@kindex target sh3@r{, with H8/300}
11952@kindex target sh3e@r{, with H8/300}
104c1213 11953@item target sh3 @var{dev}
96a2c332 11954@itemx target sh3e @var{dev}
104c1213
JM
11955Hitachi SH-3 and SH-3E target systems.
11956
11957@end table
11958
11959@cindex download to H8/300 or H8/500
11960@cindex H8/300 or H8/500 download
11961@cindex download to Hitachi SH
11962@cindex Hitachi SH download
11963When you select remote debugging to a Hitachi SH, H8/300, or H8/500
11964board, the @code{load} command downloads your program to the Hitachi
11965board and also opens it as the current executable target for
11966@value{GDBN} on your host (like the @code{file} command).
11967
11968@value{GDBN} needs to know these things to talk to your
5d161b24 11969Hitachi SH, H8/300, or H8/500:
104c1213
JM
11970
11971@enumerate
11972@item
11973that you want to use @samp{target hms}, the remote debugging interface
11974for Hitachi microprocessors, or @samp{target e7000}, the in-circuit
11975emulator for the Hitachi SH and the Hitachi 300H. (@samp{target hms} is
2df3850c 11976the default when @value{GDBN} is configured specifically for the Hitachi SH,
104c1213
JM
11977H8/300, or H8/500.)
11978
11979@item
11980what serial device connects your host to your Hitachi board (the first
11981serial device available on your host is the default).
11982
11983@item
11984what speed to use over the serial device.
11985@end enumerate
11986
11987@menu
11988* Hitachi Boards:: Connecting to Hitachi boards.
11989* Hitachi ICE:: Using the E7000 In-Circuit Emulator.
11990* Hitachi Special:: Special @value{GDBN} commands for Hitachi micros.
11991@end menu
11992
6d2ebf8b 11993@node Hitachi Boards
104c1213
JM
11994@subsubsection Connecting to Hitachi boards
11995
11996@c only for Unix hosts
11997@kindex device
11998@cindex serial device, Hitachi micros
96a2c332 11999Use the special @code{@value{GDBN}} command @samp{device @var{port}} if you
104c1213
JM
12000need to explicitly set the serial device. The default @var{port} is the
12001first available port on your host. This is only necessary on Unix
12002hosts, where it is typically something like @file{/dev/ttya}.
12003
12004@kindex speed
12005@cindex serial line speed, Hitachi micros
96a2c332 12006@code{@value{GDBN}} has another special command to set the communications
104c1213 12007speed: @samp{speed @var{bps}}. This command also is only used from Unix
2df3850c 12008hosts; on DOS hosts, set the line speed as usual from outside @value{GDBN} with
d4f3574e
SS
12009the DOS @code{mode} command (for instance,
12010@w{@kbd{mode com2:9600,n,8,1,p}} for a 9600@dmn{bps} connection).
104c1213
JM
12011
12012The @samp{device} and @samp{speed} commands are available only when you
12013use a Unix host to debug your Hitachi microprocessor programs. If you
12014use a DOS host,
12015@value{GDBN} depends on an auxiliary terminate-and-stay-resident program
12016called @code{asynctsr} to communicate with the development board
12017through a PC serial port. You must also use the DOS @code{mode} command
12018to set up the serial port on the DOS side.
12019
12020The following sample session illustrates the steps needed to start a
12021program under @value{GDBN} control on an H8/300. The example uses a
12022sample H8/300 program called @file{t.x}. The procedure is the same for
12023the Hitachi SH and the H8/500.
12024
12025First hook up your development board. In this example, we use a
12026board attached to serial port @code{COM2}; if you use a different serial
12027port, substitute its name in the argument of the @code{mode} command.
12028When you call @code{asynctsr}, the auxiliary comms program used by the
d4f3574e 12029debugger, you give it just the numeric part of the serial port's name;
104c1213
JM
12030for example, @samp{asyncstr 2} below runs @code{asyncstr} on
12031@code{COM2}.
12032
12033@example
12034C:\H8300\TEST> asynctsr 2
12035C:\H8300\TEST> mode com2:9600,n,8,1,p
12036
12037Resident portion of MODE loaded
12038
12039COM2: 9600, n, 8, 1, p
12040
12041@end example
12042
12043@quotation
12044@emph{Warning:} We have noticed a bug in PC-NFS that conflicts with
12045@code{asynctsr}. If you also run PC-NFS on your DOS host, you may need to
12046disable it, or even boot without it, to use @code{asynctsr} to control
12047your development board.
12048@end quotation
12049
d4f3574e 12050@kindex target hms@r{, and serial protocol}
104c1213
JM
12051Now that serial communications are set up, and the development board is
12052connected, you can start up @value{GDBN}. Call @code{@value{GDBP}} with
96a2c332 12053the name of your program as the argument. @code{@value{GDBN}} prompts
104c1213
JM
12054you, as usual, with the prompt @samp{(@value{GDBP})}. Use two special
12055commands to begin your debugging session: @samp{target hms} to specify
12056cross-debugging to the Hitachi board, and the @code{load} command to
12057download your program to the board. @code{load} displays the names of
12058the program's sections, and a @samp{*} for each 2K of data downloaded.
12059(If you want to refresh @value{GDBN} data on symbols or on the
12060executable file without downloading, use the @value{GDBN} commands
12061@code{file} or @code{symbol-file}. These commands, and @code{load}
12062itself, are described in @ref{Files,,Commands to specify files}.)
12063
12064@smallexample
12065(eg-C:\H8300\TEST) @value{GDBP} t.x
2df3850c 12066@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 12067 of it under certain conditions; type "show copying" to see
104c1213 12068 the conditions.
5d161b24 12069There is absolutely no warranty for @value{GDBN}; type "show warranty"
104c1213 12070for details.
2df3850c
JM
12071@value{GDBN} @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
12072(@value{GDBP}) target hms
104c1213 12073Connected to remote H8/300 HMS system.
2df3850c 12074(@value{GDBP}) load t.x
104c1213
JM
12075.text : 0x8000 .. 0xabde ***********
12076.data : 0xabde .. 0xad30 *
12077.stack : 0xf000 .. 0xf014 *
12078@end smallexample
12079
12080At this point, you're ready to run or debug your program. From here on,
12081you can use all the usual @value{GDBN} commands. The @code{break} command
12082sets breakpoints; the @code{run} command starts your program;
12083@code{print} or @code{x} display data; the @code{continue} command
12084resumes execution after stopping at a breakpoint. You can use the
12085@code{help} command at any time to find out more about @value{GDBN} commands.
12086
12087Remember, however, that @emph{operating system} facilities aren't
12088available on your development board; for example, if your program hangs,
12089you can't send an interrupt---but you can press the @sc{reset} switch!
12090
12091Use the @sc{reset} button on the development board
12092@itemize @bullet
12093@item
12094to interrupt your program (don't use @kbd{ctl-C} on the DOS host---it has
12095no way to pass an interrupt signal to the development board); and
12096
12097@item
12098to return to the @value{GDBN} command prompt after your program finishes
12099normally. The communications protocol provides no other way for @value{GDBN}
12100to detect program completion.
12101@end itemize
12102
12103In either case, @value{GDBN} sees the effect of a @sc{reset} on the
12104development board as a ``normal exit'' of your program.
12105
6d2ebf8b 12106@node Hitachi ICE
104c1213
JM
12107@subsubsection Using the E7000 in-circuit emulator
12108
d4f3574e 12109@kindex target e7000@r{, with Hitachi ICE}
104c1213
JM
12110You can use the E7000 in-circuit emulator to develop code for either the
12111Hitachi SH or the H8/300H. Use one of these forms of the @samp{target
12112e7000} command to connect @value{GDBN} to your E7000:
12113
12114@table @code
12115@item target e7000 @var{port} @var{speed}
12116Use this form if your E7000 is connected to a serial port. The
12117@var{port} argument identifies what serial port to use (for example,
12118@samp{com2}). The third argument is the line speed in bits per second
12119(for example, @samp{9600}).
12120
12121@item target e7000 @var{hostname}
12122If your E7000 is installed as a host on a TCP/IP network, you can just
12123specify its hostname; @value{GDBN} uses @code{telnet} to connect.
12124@end table
12125
6d2ebf8b 12126@node Hitachi Special
104c1213
JM
12127@subsubsection Special @value{GDBN} commands for Hitachi micros
12128
12129Some @value{GDBN} commands are available only for the H8/300:
12130
12131@table @code
12132
12133@kindex set machine
12134@kindex show machine
12135@item set machine h8300
12136@itemx set machine h8300h
12137Condition @value{GDBN} for one of the two variants of the H8/300
12138architecture with @samp{set machine}. You can use @samp{show machine}
12139to check which variant is currently in effect.
12140
12141@end table
12142
6d2ebf8b 12143@node H8/500
104c1213
JM
12144@subsection H8/500
12145
12146@table @code
12147
12148@kindex set memory @var{mod}
12149@cindex memory models, H8/500
12150@item set memory @var{mod}
12151@itemx show memory
12152Specify which H8/500 memory model (@var{mod}) you are using with
12153@samp{set memory}; check which memory model is in effect with @samp{show
12154memory}. The accepted values for @var{mod} are @code{small},
12155@code{big}, @code{medium}, and @code{compact}.
12156
12157@end table
12158
6d2ebf8b 12159@node i960
104c1213
JM
12160@subsection Intel i960
12161
12162@table @code
12163
12164@kindex target mon960
12165@item target mon960 @var{dev}
12166MON960 monitor for Intel i960.
12167
f0ca3dce 12168@kindex target nindy
104c1213
JM
12169@item target nindy @var{devicename}
12170An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
12171the name of the serial device to use for the connection, e.g.
12172@file{/dev/ttya}.
12173
12174@end table
12175
12176@cindex Nindy
12177@cindex i960
12178@dfn{Nindy} is a ROM Monitor program for Intel 960 target systems. When
12179@value{GDBN} is configured to control a remote Intel 960 using Nindy, you can
12180tell @value{GDBN} how to connect to the 960 in several ways:
12181
12182@itemize @bullet
12183@item
12184Through command line options specifying serial port, version of the
12185Nindy protocol, and communications speed;
12186
12187@item
12188By responding to a prompt on startup;
12189
12190@item
12191By using the @code{target} command at any point during your @value{GDBN}
12192session. @xref{Target Commands, ,Commands for managing targets}.
12193
104c1213
JM
12194@end itemize
12195
12196@cindex download to Nindy-960
12197With the Nindy interface to an Intel 960 board, @code{load}
12198downloads @var{filename} to the 960 as well as adding its symbols in
12199@value{GDBN}.
12200
12201@menu
12202* Nindy Startup:: Startup with Nindy
12203* Nindy Options:: Options for Nindy
12204* Nindy Reset:: Nindy reset command
12205@end menu
12206
6d2ebf8b 12207@node Nindy Startup
104c1213
JM
12208@subsubsection Startup with Nindy
12209
12210If you simply start @code{@value{GDBP}} without using any command-line
12211options, you are prompted for what serial port to use, @emph{before} you
12212reach the ordinary @value{GDBN} prompt:
12213
12214@example
5d161b24 12215Attach /dev/ttyNN -- specify NN, or "quit" to quit:
104c1213
JM
12216@end example
12217
12218@noindent
12219Respond to the prompt with whatever suffix (after @samp{/dev/tty})
12220identifies the serial port you want to use. You can, if you choose,
12221simply start up with no Nindy connection by responding to the prompt
12222with an empty line. If you do this and later wish to attach to Nindy,
12223use @code{target} (@pxref{Target Commands, ,Commands for managing targets}).
12224
6d2ebf8b 12225@node Nindy Options
104c1213
JM
12226@subsubsection Options for Nindy
12227
12228These are the startup options for beginning your @value{GDBN} session with a
12229Nindy-960 board attached:
12230
12231@table @code
12232@item -r @var{port}
12233Specify the serial port name of a serial interface to be used to connect
12234to the target system. This option is only available when @value{GDBN} is
12235configured for the Intel 960 target architecture. You may specify
12236@var{port} as any of: a full pathname (e.g. @samp{-r /dev/ttya}), a
12237device name in @file{/dev} (e.g. @samp{-r ttya}), or simply the unique
12238suffix for a specific @code{tty} (e.g. @samp{-r a}).
12239
12240@item -O
12241(An uppercase letter ``O'', not a zero.) Specify that @value{GDBN} should use
12242the ``old'' Nindy monitor protocol to connect to the target system.
12243This option is only available when @value{GDBN} is configured for the Intel 960
12244target architecture.
12245
12246@quotation
12247@emph{Warning:} if you specify @samp{-O}, but are actually trying to
12248connect to a target system that expects the newer protocol, the connection
12249fails, appearing to be a speed mismatch. @value{GDBN} repeatedly
12250attempts to reconnect at several different line speeds. You can abort
12251this process with an interrupt.
12252@end quotation
12253
12254@item -brk
12255Specify that @value{GDBN} should first send a @code{BREAK} signal to the target
12256system, in an attempt to reset it, before connecting to a Nindy target.
12257
12258@quotation
12259@emph{Warning:} Many target systems do not have the hardware that this
12260requires; it only works with a few boards.
12261@end quotation
12262@end table
12263
12264The standard @samp{-b} option controls the line speed used on the serial
12265port.
12266
12267@c @group
6d2ebf8b 12268@node Nindy Reset
104c1213
JM
12269@subsubsection Nindy reset command
12270
12271@table @code
12272@item reset
12273@kindex reset
12274For a Nindy target, this command sends a ``break'' to the remote target
12275system; this is only useful if the target has been equipped with a
12276circuit to perform a hard reset (or some other interesting action) when
12277a break is detected.
12278@end table
12279@c @end group
12280
6d2ebf8b 12281@node M32R/D
104c1213
JM
12282@subsection Mitsubishi M32R/D
12283
12284@table @code
12285
12286@kindex target m32r
12287@item target m32r @var{dev}
12288Mitsubishi M32R/D ROM monitor.
12289
12290@end table
12291
6d2ebf8b 12292@node M68K
104c1213
JM
12293@subsection M68k
12294
12295The Motorola m68k configuration includes ColdFire support, and
12296target command for the following ROM monitors.
12297
12298@table @code
12299
12300@kindex target abug
12301@item target abug @var{dev}
12302ABug ROM monitor for M68K.
12303
12304@kindex target cpu32bug
12305@item target cpu32bug @var{dev}
12306CPU32BUG monitor, running on a CPU32 (M68K) board.
12307
12308@kindex target dbug
12309@item target dbug @var{dev}
12310dBUG ROM monitor for Motorola ColdFire.
12311
12312@kindex target est
12313@item target est @var{dev}
12314EST-300 ICE monitor, running on a CPU32 (M68K) board.
12315
12316@kindex target rom68k
12317@item target rom68k @var{dev}
12318ROM 68K monitor, running on an M68K IDP board.
12319
12320@end table
12321
12322If @value{GDBN} is configured with @code{m68*-ericsson-*}, it will
12323instead have only a single special target command:
12324
12325@table @code
12326
12327@kindex target es1800
12328@item target es1800 @var{dev}
12329ES-1800 emulator for M68K.
12330
12331@end table
12332
12333[context?]
12334
12335@table @code
12336
12337@kindex target rombug
12338@item target rombug @var{dev}
12339ROMBUG ROM monitor for OS/9000.
12340
12341@end table
12342
6d2ebf8b 12343@node M88K
104c1213
JM
12344@subsection M88K
12345
12346@table @code
12347
12348@kindex target bug
12349@item target bug @var{dev}
12350BUG monitor, running on a MVME187 (m88k) board.
12351
12352@end table
12353
6d2ebf8b 12354@node MIPS Embedded
104c1213
JM
12355@subsection MIPS Embedded
12356
12357@cindex MIPS boards
12358@value{GDBN} can use the MIPS remote debugging protocol to talk to a
12359MIPS board attached to a serial line. This is available when
12360you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
12361
12362@need 1000
12363Use these @value{GDBN} commands to specify the connection to your target board:
12364
12365@table @code
12366@item target mips @var{port}
12367@kindex target mips @var{port}
12368To run a program on the board, start up @code{@value{GDBP}} with the
12369name of your program as the argument. To connect to the board, use the
12370command @samp{target mips @var{port}}, where @var{port} is the name of
12371the serial port connected to the board. If the program has not already
12372been downloaded to the board, you may use the @code{load} command to
12373download it. You can then use all the usual @value{GDBN} commands.
12374
12375For example, this sequence connects to the target board through a serial
12376port, and loads and runs a program called @var{prog} through the
12377debugger:
12378
12379@example
12380host$ @value{GDBP} @var{prog}
2df3850c
JM
12381@value{GDBN} is free software and @dots{}
12382(@value{GDBP}) target mips /dev/ttyb
12383(@value{GDBP}) load @var{prog}
12384(@value{GDBP}) run
104c1213
JM
12385@end example
12386
12387@item target mips @var{hostname}:@var{portnumber}
12388On some @value{GDBN} host configurations, you can specify a TCP
12389connection (for instance, to a serial line managed by a terminal
12390concentrator) instead of a serial port, using the syntax
12391@samp{@var{hostname}:@var{portnumber}}.
12392
12393@item target pmon @var{port}
12394@kindex target pmon @var{port}
12395PMON ROM monitor.
12396
12397@item target ddb @var{port}
12398@kindex target ddb @var{port}
12399NEC's DDB variant of PMON for Vr4300.
12400
12401@item target lsi @var{port}
12402@kindex target lsi @var{port}
12403LSI variant of PMON.
12404
12405@kindex target r3900
12406@item target r3900 @var{dev}
12407Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
12408
12409@kindex target array
12410@item target array @var{dev}
12411Array Tech LSI33K RAID controller board.
12412
12413@end table
12414
12415
12416@noindent
12417@value{GDBN} also supports these special commands for MIPS targets:
12418
12419@table @code
12420@item set processor @var{args}
12421@itemx show processor
12422@kindex set processor @var{args}
12423@kindex show processor
12424Use the @code{set processor} command to set the type of MIPS
12425processor when you want to access processor-type-specific registers.
5d161b24 12426For example, @code{set processor @var{r3041}} tells @value{GDBN}
96c405b3 12427to use the CPU registers appropriate for the 3041 chip.
5d161b24 12428Use the @code{show processor} command to see what MIPS processor @value{GDBN}
104c1213 12429is using. Use the @code{info reg} command to see what registers
5d161b24 12430@value{GDBN} is using.
104c1213
JM
12431
12432@item set mipsfpu double
12433@itemx set mipsfpu single
12434@itemx set mipsfpu none
12435@itemx show mipsfpu
12436@kindex set mipsfpu
12437@kindex show mipsfpu
12438@cindex MIPS remote floating point
12439@cindex floating point, MIPS remote
12440If your target board does not support the MIPS floating point
12441coprocessor, you should use the command @samp{set mipsfpu none} (if you
96a2c332 12442need this, you may wish to put the command in your @value{GDBN} init
104c1213
JM
12443file). This tells @value{GDBN} how to find the return value of
12444functions which return floating point values. It also allows
12445@value{GDBN} to avoid saving the floating point registers when calling
12446functions on the board. If you are using a floating point coprocessor
12447with only single precision floating point support, as on the @sc{r4650}
12448processor, use the command @samp{set mipsfpu single}. The default
12449double precision floating point coprocessor may be selected using
12450@samp{set mipsfpu double}.
12451
12452In previous versions the only choices were double precision or no
12453floating point, so @samp{set mipsfpu on} will select double precision
12454and @samp{set mipsfpu off} will select no floating point.
12455
12456As usual, you can inquire about the @code{mipsfpu} variable with
12457@samp{show mipsfpu}.
12458
12459@item set remotedebug @var{n}
12460@itemx show remotedebug
d4f3574e
SS
12461@kindex set remotedebug@r{, MIPS protocol}
12462@kindex show remotedebug@r{, MIPS protocol}
104c1213
JM
12463@cindex @code{remotedebug}, MIPS protocol
12464@cindex MIPS @code{remotedebug} protocol
12465@c FIXME! For this to be useful, you must know something about the MIPS
12466@c FIXME...protocol. Where is it described?
12467You can see some debugging information about communications with the board
12468by setting the @code{remotedebug} variable. If you set it to @code{1} using
12469@samp{set remotedebug 1}, every packet is displayed. If you set it
12470to @code{2}, every character is displayed. You can check the current value
12471at any time with the command @samp{show remotedebug}.
12472
12473@item set timeout @var{seconds}
12474@itemx set retransmit-timeout @var{seconds}
12475@itemx show timeout
12476@itemx show retransmit-timeout
12477@cindex @code{timeout}, MIPS protocol
12478@cindex @code{retransmit-timeout}, MIPS protocol
12479@kindex set timeout
12480@kindex show timeout
12481@kindex set retransmit-timeout
12482@kindex show retransmit-timeout
12483You can control the timeout used while waiting for a packet, in the MIPS
12484remote protocol, with the @code{set timeout @var{seconds}} command. The
12485default is 5 seconds. Similarly, you can control the timeout used while
12486waiting for an acknowledgement of a packet with the @code{set
12487retransmit-timeout @var{seconds}} command. The default is 3 seconds.
12488You can inspect both values with @code{show timeout} and @code{show
12489retransmit-timeout}. (These commands are @emph{only} available when
12490@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
12491
12492The timeout set by @code{set timeout} does not apply when @value{GDBN}
12493is waiting for your program to stop. In that case, @value{GDBN} waits
12494forever because it has no way of knowing how long the program is going
12495to run before stopping.
12496@end table
12497
6d2ebf8b 12498@node PowerPC
104c1213
JM
12499@subsection PowerPC
12500
12501@table @code
12502
12503@kindex target dink32
12504@item target dink32 @var{dev}
12505DINK32 ROM monitor.
12506
12507@kindex target ppcbug
12508@item target ppcbug @var{dev}
12509@kindex target ppcbug1
12510@item target ppcbug1 @var{dev}
12511PPCBUG ROM monitor for PowerPC.
12512
12513@kindex target sds
12514@item target sds @var{dev}
12515SDS monitor, running on a PowerPC board (such as Motorola's ADS).
12516
12517@end table
12518
6d2ebf8b 12519@node PA
104c1213
JM
12520@subsection HP PA Embedded
12521
12522@table @code
12523
12524@kindex target op50n
12525@item target op50n @var{dev}
12526OP50N monitor, running on an OKI HPPA board.
12527
12528@kindex target w89k
12529@item target w89k @var{dev}
12530W89K monitor, running on a Winbond HPPA board.
12531
12532@end table
12533
6d2ebf8b 12534@node SH
104c1213
JM
12535@subsection Hitachi SH
12536
12537@table @code
12538
d4f3574e 12539@kindex target hms@r{, with Hitachi SH}
104c1213
JM
12540@item target hms @var{dev}
12541A Hitachi SH board attached via serial line to your host. Use special
12542commands @code{device} and @code{speed} to control the serial line and
12543the communications speed used.
12544
d4f3574e 12545@kindex target e7000@r{, with Hitachi SH}
104c1213
JM
12546@item target e7000 @var{dev}
12547E7000 emulator for Hitachi SH.
12548
d4f3574e
SS
12549@kindex target sh3@r{, with SH}
12550@kindex target sh3e@r{, with SH}
104c1213
JM
12551@item target sh3 @var{dev}
12552@item target sh3e @var{dev}
12553Hitachi SH-3 and SH-3E target systems.
12554
12555@end table
12556
6d2ebf8b 12557@node Sparclet
104c1213
JM
12558@subsection Tsqware Sparclet
12559
12560@cindex Sparclet
12561
5d161b24
DB
12562@value{GDBN} enables developers to debug tasks running on
12563Sparclet targets from a Unix host.
104c1213
JM
12564@value{GDBN} uses code that runs on
12565both the Unix host and on the Sparclet target. The program
5d161b24 12566@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213
JM
12567
12568@table @code
f0ca3dce 12569@item remotetimeout @var{args}
104c1213 12570@kindex remotetimeout
5d161b24
DB
12571@value{GDBN} supports the option @code{remotetimeout}.
12572This option is set by the user, and @var{args} represents the number of
12573seconds @value{GDBN} waits for responses.
104c1213
JM
12574@end table
12575
41afff9a 12576@cindex compiling, on Sparclet
5d161b24 12577When compiling for debugging, include the options @samp{-g} to get debug
d4f3574e 12578information and @samp{-Ttext} to relocate the program to where you wish to
5d161b24 12579load it on the target. You may also want to add the options @samp{-n} or
d4f3574e 12580@samp{-N} in order to reduce the size of the sections. Example:
104c1213
JM
12581
12582@example
12583sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
12584@end example
12585
d4f3574e 12586You can use @code{objdump} to verify that the addresses are what you intended:
104c1213
JM
12587
12588@example
12589sparclet-aout-objdump --headers --syms prog
12590@end example
12591
41afff9a 12592@cindex running, on Sparclet
104c1213
JM
12593Once you have set
12594your Unix execution search path to find @value{GDBN}, you are ready to
5d161b24 12595run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
104c1213
JM
12596(or @code{sparclet-aout-gdb}, depending on your installation).
12597
12598@value{GDBN} comes up showing the prompt:
12599
12600@example
12601(gdbslet)
12602@end example
12603
12604@menu
12605* Sparclet File:: Setting the file to debug
12606* Sparclet Connection:: Connecting to Sparclet
12607* Sparclet Download:: Sparclet download
5d161b24 12608* Sparclet Execution:: Running and debugging
104c1213
JM
12609@end menu
12610
6d2ebf8b 12611@node Sparclet File
104c1213
JM
12612@subsubsection Setting file to debug
12613
12614The @value{GDBN} command @code{file} lets you choose with program to debug.
12615
12616@example
12617(gdbslet) file prog
12618@end example
12619
12620@need 1000
12621@value{GDBN} then attempts to read the symbol table of @file{prog}.
12622@value{GDBN} locates
12623the file by searching the directories listed in the command search
12624path.
12625If the file was compiled with debug information (option "-g"), source
12626files will be searched as well.
12627@value{GDBN} locates
12628the source files by searching the directories listed in the directory search
12629path (@pxref{Environment, ,Your program's environment}).
12630If it fails
12631to find a file, it displays a message such as:
12632
12633@example
12634prog: No such file or directory.
12635@end example
12636
12637When this happens, add the appropriate directories to the search paths with
5d161b24 12638the @value{GDBN} commands @code{path} and @code{dir}, and execute the
104c1213
JM
12639@code{target} command again.
12640
6d2ebf8b 12641@node Sparclet Connection
104c1213
JM
12642@subsubsection Connecting to Sparclet
12643
12644The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
12645To connect to a target on serial port ``@code{ttya}'', type:
12646
12647@example
12648(gdbslet) target sparclet /dev/ttya
12649Remote target sparclet connected to /dev/ttya
5d161b24 12650main () at ../prog.c:3
104c1213
JM
12651@end example
12652
12653@need 750
12654@value{GDBN} displays messages like these:
12655
d4f3574e 12656@example
104c1213 12657Connected to ttya.
d4f3574e 12658@end example
104c1213 12659
6d2ebf8b 12660@node Sparclet Download
104c1213
JM
12661@subsubsection Sparclet download
12662
12663@cindex download to Sparclet
5d161b24 12664Once connected to the Sparclet target,
104c1213
JM
12665you can use the @value{GDBN}
12666@code{load} command to download the file from the host to the target.
12667The file name and load offset should be given as arguments to the @code{load}
12668command.
5d161b24 12669Since the file format is aout, the program must be loaded to the starting
d4f3574e 12670address. You can use @code{objdump} to find out what this value is. The load
104c1213
JM
12671offset is an offset which is added to the VMA (virtual memory address)
12672of each of the file's sections.
12673For instance, if the program
12674@file{prog} was linked to text address 0x1201000, with data at 0x12010160
12675and bss at 0x12010170, in @value{GDBN}, type:
12676
12677@example
12678(gdbslet) load prog 0x12010000
12679Loading section .text, size 0xdb0 vma 0x12010000
12680@end example
12681
5d161b24
DB
12682If the code is loaded at a different address then what the program was linked
12683to, you may need to use the @code{section} and @code{add-symbol-file} commands
104c1213
JM
12684to tell @value{GDBN} where to map the symbol table.
12685
6d2ebf8b 12686@node Sparclet Execution
104c1213
JM
12687@subsubsection Running and debugging
12688
12689@cindex running and debugging Sparclet programs
12690You can now begin debugging the task using @value{GDBN}'s execution control
5d161b24 12691commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
104c1213
JM
12692manual for the list of commands.
12693
12694@example
12695(gdbslet) b main
12696Breakpoint 1 at 0x12010000: file prog.c, line 3.
5d161b24 12697(gdbslet) run
104c1213
JM
12698Starting program: prog
12699Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
127003 char *symarg = 0;
12701(gdbslet) step
127024 char *execarg = "hello!";
5d161b24 12703(gdbslet)
104c1213
JM
12704@end example
12705
6d2ebf8b 12706@node Sparclite
104c1213
JM
12707@subsection Fujitsu Sparclite
12708
12709@table @code
12710
12711@kindex target sparclite
12712@item target sparclite @var{dev}
5d161b24
DB
12713Fujitsu sparclite boards, used only for the purpose of loading.
12714You must use an additional command to debug the program.
12715For example: target remote @var{dev} using @value{GDBN} standard
104c1213
JM
12716remote protocol.
12717
12718@end table
12719
6d2ebf8b 12720@node ST2000
104c1213
JM
12721@subsection Tandem ST2000
12722
2df3850c 12723@value{GDBN} may be used with a Tandem ST2000 phone switch, running Tandem's
104c1213
JM
12724STDBUG protocol.
12725
12726To connect your ST2000 to the host system, see the manufacturer's
12727manual. Once the ST2000 is physically attached, you can run:
12728
12729@example
12730target st2000 @var{dev} @var{speed}
12731@end example
12732
12733@noindent
12734to establish it as your debugging environment. @var{dev} is normally
12735the name of a serial device, such as @file{/dev/ttya}, connected to the
12736ST2000 via a serial line. You can instead specify @var{dev} as a TCP
12737connection (for example, to a serial line attached via a terminal
12738concentrator) using the syntax @code{@var{hostname}:@var{portnumber}}.
12739
12740The @code{load} and @code{attach} commands are @emph{not} defined for
12741this target; you must load your program into the ST2000 as you normally
12742would for standalone operation. @value{GDBN} reads debugging information
12743(such as symbols) from a separate, debugging version of the program
12744available on your host computer.
12745@c FIXME!! This is terribly vague; what little content is here is
12746@c basically hearsay.
12747
12748@cindex ST2000 auxiliary commands
12749These auxiliary @value{GDBN} commands are available to help you with the ST2000
12750environment:
12751
12752@table @code
12753@item st2000 @var{command}
12754@kindex st2000 @var{cmd}
12755@cindex STDBUG commands (ST2000)
12756@cindex commands to STDBUG (ST2000)
12757Send a @var{command} to the STDBUG monitor. See the manufacturer's
12758manual for available commands.
12759
12760@item connect
12761@cindex connect (to STDBUG)
12762Connect the controlling terminal to the STDBUG command monitor. When
12763you are done interacting with STDBUG, typing either of two character
12764sequences gets you back to the @value{GDBN} command prompt:
12765@kbd{@key{RET}~.} (Return, followed by tilde and period) or
12766@kbd{@key{RET}~@key{C-d}} (Return, followed by tilde and control-D).
12767@end table
12768
6d2ebf8b 12769@node Z8000
104c1213
JM
12770@subsection Zilog Z8000
12771
12772@cindex Z8000
12773@cindex simulator, Z8000
12774@cindex Zilog Z8000 simulator
12775
12776When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
12777a Z8000 simulator.
12778
12779For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
12780unsegmented variant of the Z8000 architecture) or the Z8001 (the
12781segmented variant). The simulator recognizes which architecture is
12782appropriate by inspecting the object code.
12783
12784@table @code
12785@item target sim @var{args}
12786@kindex sim
d4f3574e 12787@kindex target sim@r{, with Z8000}
104c1213
JM
12788Debug programs on a simulated CPU. If the simulator supports setup
12789options, specify them via @var{args}.
12790@end table
12791
12792@noindent
12793After specifying this target, you can debug programs for the simulated
12794CPU in the same style as programs for your host computer; use the
12795@code{file} command to load a new program image, the @code{run} command
12796to run your program, and so on.
12797
d4f3574e
SS
12798As well as making available all the usual machine registers
12799(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
12800additional items of information as specially named registers:
104c1213
JM
12801
12802@table @code
12803
12804@item cycles
12805Counts clock-ticks in the simulator.
12806
12807@item insts
12808Counts instructions run in the simulator.
12809
12810@item time
12811Execution time in 60ths of a second.
12812
12813@end table
12814
12815You can refer to these values in @value{GDBN} expressions with the usual
12816conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
12817conditional breakpoint that suspends only after at least 5000
12818simulated clock ticks.
12819
6d2ebf8b 12820@node Architectures
104c1213
JM
12821@section Architectures
12822
12823This section describes characteristics of architectures that affect
2df3850c 12824all uses of @value{GDBN} with the architecture, both native and cross.
104c1213
JM
12825
12826@menu
12827* A29K::
12828* Alpha::
12829* MIPS::
12830@end menu
12831
6d2ebf8b 12832@node A29K
104c1213
JM
12833@subsection A29K
12834
12835@table @code
12836
12837@kindex set rstack_high_address
12838@cindex AMD 29K register stack
12839@cindex register stack, AMD29K
12840@item set rstack_high_address @var{address}
12841On AMD 29000 family processors, registers are saved in a separate
d4f3574e 12842@dfn{register stack}. There is no way for @value{GDBN} to determine the
104c1213
JM
12843extent of this stack. Normally, @value{GDBN} just assumes that the
12844stack is ``large enough''. This may result in @value{GDBN} referencing
12845memory locations that do not exist. If necessary, you can get around
12846this problem by specifying the ending address of the register stack with
12847the @code{set rstack_high_address} command. The argument should be an
12848address, which you probably want to precede with @samp{0x} to specify in
12849hexadecimal.
12850
12851@kindex show rstack_high_address
12852@item show rstack_high_address
12853Display the current limit of the register stack, on AMD 29000 family
12854processors.
12855
12856@end table
12857
6d2ebf8b 12858@node Alpha
104c1213
JM
12859@subsection Alpha
12860
12861See the following section.
12862
6d2ebf8b 12863@node MIPS
104c1213
JM
12864@subsection MIPS
12865
12866@cindex stack on Alpha
12867@cindex stack on MIPS
12868@cindex Alpha stack
12869@cindex MIPS stack
12870Alpha- and MIPS-based computers use an unusual stack frame, which
12871sometimes requires @value{GDBN} to search backward in the object code to
12872find the beginning of a function.
12873
12874@cindex response time, MIPS debugging
12875To improve response time (especially for embedded applications, where
12876@value{GDBN} may be restricted to a slow serial line for this search)
12877you may want to limit the size of this search, using one of these
12878commands:
12879
12880@table @code
00e4a2e4 12881@cindex @code{heuristic-fence-post} (Alpha, MIPS)
104c1213
JM
12882@item set heuristic-fence-post @var{limit}
12883Restrict @value{GDBN} to examining at most @var{limit} bytes in its
12884search for the beginning of a function. A value of @var{0} (the
12885default) means there is no limit. However, except for @var{0}, the
12886larger the limit the more bytes @code{heuristic-fence-post} must search
12887and therefore the longer it takes to run.
12888
12889@item show heuristic-fence-post
12890Display the current limit.
12891@end table
12892
12893@noindent
12894These commands are available @emph{only} when @value{GDBN} is configured
12895for debugging programs on Alpha or MIPS processors.
12896
12897
6d2ebf8b 12898@node Controlling GDB
c906108c
SS
12899@chapter Controlling @value{GDBN}
12900
53a5351d
JM
12901You can alter the way @value{GDBN} interacts with you by using the
12902@code{set} command. For commands controlling how @value{GDBN} displays
d4f3574e 12903data, see @ref{Print Settings, ,Print settings}. Other settings are
53a5351d 12904described here.
c906108c
SS
12905
12906@menu
12907* Prompt:: Prompt
12908* Editing:: Command editing
12909* History:: Command history
12910* Screen Size:: Screen size
12911* Numbers:: Numbers
12912* Messages/Warnings:: Optional warnings and messages
5d161b24 12913* Debugging Output:: Optional messages about internal happenings
c906108c
SS
12914@end menu
12915
6d2ebf8b 12916@node Prompt
c906108c
SS
12917@section Prompt
12918
12919@cindex prompt
12920
12921@value{GDBN} indicates its readiness to read a command by printing a string
12922called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
12923can change the prompt string with the @code{set prompt} command. For
12924instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
5d161b24 12925the prompt in one of the @value{GDBN} sessions so that you can always tell
c906108c
SS
12926which one you are talking to.
12927
d4f3574e 12928@emph{Note:} @code{set prompt} does not add a space for you after the
c906108c
SS
12929prompt you set. This allows you to set a prompt which ends in a space
12930or a prompt that does not.
12931
12932@table @code
12933@kindex set prompt
12934@item set prompt @var{newprompt}
12935Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
12936
12937@kindex show prompt
12938@item show prompt
12939Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
12940@end table
12941
6d2ebf8b 12942@node Editing
c906108c
SS
12943@section Command editing
12944@cindex readline
12945@cindex command line editing
12946
12947@value{GDBN} reads its input commands via the @dfn{readline} interface. This
12948@sc{gnu} library provides consistent behavior for programs which provide a
12949command line interface to the user. Advantages are @sc{gnu} Emacs-style
12950or @dfn{vi}-style inline editing of commands, @code{csh}-like history
12951substitution, and a storage and recall of command history across
12952debugging sessions.
12953
12954You may control the behavior of command line editing in @value{GDBN} with the
12955command @code{set}.
12956
12957@table @code
12958@kindex set editing
12959@cindex editing
12960@item set editing
12961@itemx set editing on
12962Enable command line editing (enabled by default).
12963
12964@item set editing off
12965Disable command line editing.
12966
12967@kindex show editing
12968@item show editing
12969Show whether command line editing is enabled.
12970@end table
12971
6d2ebf8b 12972@node History
c906108c
SS
12973@section Command history
12974
12975@value{GDBN} can keep track of the commands you type during your
12976debugging sessions, so that you can be certain of precisely what
12977happened. Use these commands to manage the @value{GDBN} command
12978history facility.
12979
12980@table @code
12981@cindex history substitution
12982@cindex history file
12983@kindex set history filename
12984@kindex GDBHISTFILE
12985@item set history filename @var{fname}
12986Set the name of the @value{GDBN} command history file to @var{fname}.
12987This is the file where @value{GDBN} reads an initial command history
12988list, and where it writes the command history from this session when it
12989exits. You can access this list through history expansion or through
12990the history command editing characters listed below. This file defaults
12991to the value of the environment variable @code{GDBHISTFILE}, or to
d4f3574e
SS
12992@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
12993is not set.
c906108c
SS
12994
12995@cindex history save
12996@kindex set history save
12997@item set history save
12998@itemx set history save on
12999Record command history in a file, whose name may be specified with the
13000@code{set history filename} command. By default, this option is disabled.
13001
13002@item set history save off
13003Stop recording command history in a file.
13004
13005@cindex history size
13006@kindex set history size
13007@item set history size @var{size}
13008Set the number of commands which @value{GDBN} keeps in its history list.
13009This defaults to the value of the environment variable
13010@code{HISTSIZE}, or to 256 if this variable is not set.
13011@end table
13012
13013@cindex history expansion
13014History expansion assigns special meaning to the character @kbd{!}.
13015@ifset have-readline-appendices
13016@xref{Event Designators}.
13017@end ifset
13018
13019Since @kbd{!} is also the logical not operator in C, history expansion
13020is off by default. If you decide to enable history expansion with the
13021@code{set history expansion on} command, you may sometimes need to
13022follow @kbd{!} (when it is used as logical not, in an expression) with
13023a space or a tab to prevent it from being expanded. The readline
13024history facilities do not attempt substitution on the strings
13025@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
13026
13027The commands to control history expansion are:
13028
13029@table @code
13030@kindex set history expansion
13031@item set history expansion on
13032@itemx set history expansion
13033Enable history expansion. History expansion is off by default.
13034
13035@item set history expansion off
13036Disable history expansion.
13037
13038The readline code comes with more complete documentation of
13039editing and history expansion features. Users unfamiliar with @sc{gnu} Emacs
13040or @code{vi} may wish to read it.
13041@ifset have-readline-appendices
13042@xref{Command Line Editing}.
13043@end ifset
13044
13045@c @group
13046@kindex show history
13047@item show history
13048@itemx show history filename
13049@itemx show history save
13050@itemx show history size
13051@itemx show history expansion
13052These commands display the state of the @value{GDBN} history parameters.
13053@code{show history} by itself displays all four states.
13054@c @end group
13055@end table
13056
13057@table @code
41afff9a 13058@kindex shows
c906108c
SS
13059@item show commands
13060Display the last ten commands in the command history.
13061
13062@item show commands @var{n}
13063Print ten commands centered on command number @var{n}.
13064
13065@item show commands +
13066Print ten commands just after the commands last printed.
13067@end table
13068
6d2ebf8b 13069@node Screen Size
c906108c
SS
13070@section Screen size
13071@cindex size of screen
13072@cindex pauses in output
13073
13074Certain commands to @value{GDBN} may produce large amounts of
13075information output to the screen. To help you read all of it,
13076@value{GDBN} pauses and asks you for input at the end of each page of
13077output. Type @key{RET} when you want to continue the output, or @kbd{q}
13078to discard the remaining output. Also, the screen width setting
13079determines when to wrap lines of output. Depending on what is being
13080printed, @value{GDBN} tries to break the line at a readable place,
13081rather than simply letting it overflow onto the following line.
13082
d4f3574e
SS
13083Normally @value{GDBN} knows the size of the screen from the terminal
13084driver software. For example, on Unix @value{GDBN} uses the termcap data base
c906108c 13085together with the value of the @code{TERM} environment variable and the
d4f3574e 13086@code{stty rows} and @code{stty cols} settings. If this is not correct,
c906108c
SS
13087you can override it with the @code{set height} and @code{set
13088width} commands:
13089
13090@table @code
13091@kindex set height
13092@kindex set width
13093@kindex show width
13094@kindex show height
13095@item set height @var{lpp}
13096@itemx show height
13097@itemx set width @var{cpl}
13098@itemx show width
13099These @code{set} commands specify a screen height of @var{lpp} lines and
13100a screen width of @var{cpl} characters. The associated @code{show}
13101commands display the current settings.
13102
5d161b24
DB
13103If you specify a height of zero lines, @value{GDBN} does not pause during
13104output no matter how long the output is. This is useful if output is to a
c906108c
SS
13105file or to an editor buffer.
13106
13107Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
13108from wrapping its output.
13109@end table
13110
6d2ebf8b 13111@node Numbers
c906108c
SS
13112@section Numbers
13113@cindex number representation
13114@cindex entering numbers
13115
2df3850c
JM
13116You can always enter numbers in octal, decimal, or hexadecimal in
13117@value{GDBN} by the usual conventions: octal numbers begin with
13118@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
13119begin with @samp{0x}. Numbers that begin with none of these are, by
13120default, entered in base 10; likewise, the default display for
13121numbers---when no particular format is specified---is base 10. You can
13122change the default base for both input and output with the @code{set
13123radix} command.
c906108c
SS
13124
13125@table @code
13126@kindex set input-radix
13127@item set input-radix @var{base}
13128Set the default base for numeric input. Supported choices
13129for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
13130specified either unambiguously or using the current default radix; for
13131example, any of
13132
13133@smallexample
13134set radix 012
13135set radix 10.
13136set radix 0xa
13137@end smallexample
13138
13139@noindent
13140sets the base to decimal. On the other hand, @samp{set radix 10}
13141leaves the radix unchanged no matter what it was.
13142
13143@kindex set output-radix
13144@item set output-radix @var{base}
13145Set the default base for numeric display. Supported choices
13146for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
13147specified either unambiguously or using the current default radix.
13148
13149@kindex show input-radix
13150@item show input-radix
13151Display the current default base for numeric input.
13152
13153@kindex show output-radix
13154@item show output-radix
13155Display the current default base for numeric display.
13156@end table
13157
6d2ebf8b 13158@node Messages/Warnings
c906108c
SS
13159@section Optional warnings and messages
13160
2df3850c
JM
13161By default, @value{GDBN} is silent about its inner workings. If you are
13162running on a slow machine, you may want to use the @code{set verbose}
13163command. This makes @value{GDBN} tell you when it does a lengthy
13164internal operation, so you will not think it has crashed.
c906108c
SS
13165
13166Currently, the messages controlled by @code{set verbose} are those
13167which announce that the symbol table for a source file is being read;
13168see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
13169
13170@table @code
13171@kindex set verbose
13172@item set verbose on
13173Enables @value{GDBN} output of certain informational messages.
13174
13175@item set verbose off
13176Disables @value{GDBN} output of certain informational messages.
13177
13178@kindex show verbose
13179@item show verbose
13180Displays whether @code{set verbose} is on or off.
13181@end table
13182
2df3850c
JM
13183By default, if @value{GDBN} encounters bugs in the symbol table of an
13184object file, it is silent; but if you are debugging a compiler, you may
13185find this information useful (@pxref{Symbol Errors, ,Errors reading
13186symbol files}).
c906108c
SS
13187
13188@table @code
2df3850c 13189
c906108c
SS
13190@kindex set complaints
13191@item set complaints @var{limit}
2df3850c
JM
13192Permits @value{GDBN} to output @var{limit} complaints about each type of
13193unusual symbols before becoming silent about the problem. Set
13194@var{limit} to zero to suppress all complaints; set it to a large number
13195to prevent complaints from being suppressed.
c906108c
SS
13196
13197@kindex show complaints
13198@item show complaints
13199Displays how many symbol complaints @value{GDBN} is permitted to produce.
2df3850c 13200
c906108c
SS
13201@end table
13202
13203By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
13204lot of stupid questions to confirm certain commands. For example, if
13205you try to run a program which is already running:
13206
13207@example
13208(@value{GDBP}) run
13209The program being debugged has been started already.
13210Start it from the beginning? (y or n)
13211@end example
13212
13213If you are willing to unflinchingly face the consequences of your own
13214commands, you can disable this ``feature'':
13215
13216@table @code
2df3850c 13217
c906108c
SS
13218@kindex set confirm
13219@cindex flinching
13220@cindex confirmation
13221@cindex stupid questions
13222@item set confirm off
13223Disables confirmation requests.
13224
13225@item set confirm on
13226Enables confirmation requests (the default).
13227
13228@kindex show confirm
13229@item show confirm
13230Displays state of confirmation requests.
2df3850c 13231
c906108c
SS
13232@end table
13233
6d2ebf8b 13234@node Debugging Output
5d161b24
DB
13235@section Optional messages about internal happenings
13236@table @code
13237@kindex set debug arch
13238@item set debug arch
13239Turns on or off display of gdbarch debugging info. The default is off
13240@kindex show debug arch
13241@item show debug arch
13242Displays the current state of displaying gdbarch debugging info.
13243@kindex set debug event
13244@item set debug event
13245Turns on or off display of @value{GDBN} event debugging info. The
13246default is off.
13247@kindex show debug event
13248@item show debug event
13249Displays the current state of displaying @value{GDBN} event debugging
13250info.
13251@kindex set debug expression
13252@item set debug expression
13253Turns on or off display of @value{GDBN} expression debugging info. The
13254default is off.
13255@kindex show debug expression
13256@item show debug expression
13257Displays the current state of displaying @value{GDBN} expression
13258debugging info.
13259@kindex set debug overload
13260@item set debug overload
b37052ae 13261Turns on or off display of @value{GDBN} C@t{++} overload debugging
5d161b24
DB
13262info. This includes info such as ranking of functions, etc. The default
13263is off.
13264@kindex show debug overload
13265@item show debug overload
b37052ae 13266Displays the current state of displaying @value{GDBN} C@t{++} overload
5d161b24
DB
13267debugging info.
13268@kindex set debug remote
13269@cindex packets, reporting on stdout
13270@cindex serial connections, debugging
13271@item set debug remote
13272Turns on or off display of reports on all packets sent back and forth across
13273the serial line to the remote machine. The info is printed on the
13274@value{GDBN} standard output stream. The default is off.
13275@kindex show debug remote
13276@item show debug remote
13277Displays the state of display of remote packets.
13278@kindex set debug serial
13279@item set debug serial
13280Turns on or off display of @value{GDBN} serial debugging info. The
13281default is off.
13282@kindex show debug serial
13283@item show debug serial
13284Displays the current state of displaying @value{GDBN} serial debugging
13285info.
13286@kindex set debug target
13287@item set debug target
13288Turns on or off display of @value{GDBN} target debugging info. This info
13289includes what is going on at the target level of GDB, as it happens. The
13290default is off.
13291@kindex show debug target
13292@item show debug target
13293Displays the current state of displaying @value{GDBN} target debugging
13294info.
13295@kindex set debug varobj
13296@item set debug varobj
13297Turns on or off display of @value{GDBN} variable object debugging
13298info. The default is off.
13299@kindex show debug varobj
13300@item show debug varobj
13301Displays the current state of displaying @value{GDBN} variable object
13302debugging info.
13303@end table
13304
6d2ebf8b 13305@node Sequences
c906108c
SS
13306@chapter Canned Sequences of Commands
13307
13308Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
2df3850c
JM
13309command lists}), @value{GDBN} provides two ways to store sequences of
13310commands for execution as a unit: user-defined commands and command
13311files.
c906108c
SS
13312
13313@menu
13314* Define:: User-defined commands
13315* Hooks:: User-defined command hooks
13316* Command Files:: Command files
13317* Output:: Commands for controlled output
13318@end menu
13319
6d2ebf8b 13320@node Define
c906108c
SS
13321@section User-defined commands
13322
13323@cindex user-defined command
2df3850c
JM
13324A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
13325which you assign a new name as a command. This is done with the
13326@code{define} command. User commands may accept up to 10 arguments
13327separated by whitespace. Arguments are accessed within the user command
13328via @var{$arg0@dots{}$arg9}. A trivial example:
c906108c
SS
13329
13330@smallexample
13331define adder
13332 print $arg0 + $arg1 + $arg2
13333@end smallexample
13334
d4f3574e
SS
13335@noindent
13336To execute the command use:
c906108c
SS
13337
13338@smallexample
13339adder 1 2 3
13340@end smallexample
13341
d4f3574e
SS
13342@noindent
13343This defines the command @code{adder}, which prints the sum of
5d161b24 13344its three arguments. Note the arguments are text substitutions, so they may
c906108c
SS
13345reference variables, use complex expressions, or even perform inferior
13346functions calls.
13347
13348@table @code
2df3850c 13349
c906108c
SS
13350@kindex define
13351@item define @var{commandname}
13352Define a command named @var{commandname}. If there is already a command
13353by that name, you are asked to confirm that you want to redefine it.
13354
13355The definition of the command is made up of other @value{GDBN} command lines,
13356which are given following the @code{define} command. The end of these
13357commands is marked by a line containing @code{end}.
13358
13359@kindex if
13360@kindex else
13361@item if
13362Takes a single argument, which is an expression to evaluate.
13363It is followed by a series of commands that are executed
13364only if the expression is true (nonzero).
13365There can then optionally be a line @code{else}, followed
13366by a series of commands that are only executed if the expression
13367was false. The end of the list is marked by a line containing @code{end}.
13368
13369@kindex while
13370@item while
13371The syntax is similar to @code{if}: the command takes a single argument,
13372which is an expression to evaluate, and must be followed by the commands to
13373execute, one per line, terminated by an @code{end}.
13374The commands are executed repeatedly as long as the expression
13375evaluates to true.
13376
13377@kindex document
13378@item document @var{commandname}
13379Document the user-defined command @var{commandname}, so that it can be
5d161b24
DB
13380accessed by @code{help}. The command @var{commandname} must already be
13381defined. This command reads lines of documentation just as @code{define}
13382reads the lines of the command definition, ending with @code{end}.
13383After the @code{document} command is finished, @code{help} on command
c906108c
SS
13384@var{commandname} displays the documentation you have written.
13385
13386You may use the @code{document} command again to change the
13387documentation of a command. Redefining the command with @code{define}
13388does not change the documentation.
13389
13390@kindex help user-defined
13391@item help user-defined
13392List all user-defined commands, with the first line of the documentation
13393(if any) for each.
13394
13395@kindex show user
13396@item show user
13397@itemx show user @var{commandname}
2df3850c
JM
13398Display the @value{GDBN} commands used to define @var{commandname} (but
13399not its documentation). If no @var{commandname} is given, display the
c906108c 13400definitions for all user-defined commands.
2df3850c 13401
c906108c
SS
13402@end table
13403
13404When user-defined commands are executed, the
13405commands of the definition are not printed. An error in any command
13406stops execution of the user-defined command.
13407
13408If used interactively, commands that would ask for confirmation proceed
5d161b24
DB
13409without asking when used inside a user-defined command. Many @value{GDBN}
13410commands that normally print messages to say what they are doing omit the
c906108c
SS
13411messages when used in a user-defined command.
13412
6d2ebf8b 13413@node Hooks
c906108c 13414@section User-defined command hooks
d4f3574e
SS
13415@cindex command hooks
13416@cindex hooks, for commands
c78b4128 13417@cindex hooks, pre-command
c906108c 13418
c78b4128
EZ
13419@kindex hook
13420@kindex hook-
13421You may define @dfn{hooks}, which are a special kind of user-defined
c906108c
SS
13422command. Whenever you run the command @samp{foo}, if the user-defined
13423command @samp{hook-foo} exists, it is executed (with no arguments)
13424before that command.
13425
c78b4128
EZ
13426@cindex hooks, post-command
13427@kindex hookpost
13428@kindex hookpost-
13429A hook may also be defined which is run after the command you executed.
13430Whenever you run the command @samp{foo}, if the user-defined command
13431@samp{hookpost-foo} exists, it is executed (with no arguments) after
13432that command. Post-execution hooks may exist simultaneously with
13433pre-execution hooks, for the same command.
13434
13435It is valid for a hook to call the command which it hooks. If this
13436occurs, the hook is not re-executed, thereby avoiding infinte recursion.
13437
13438@c It would be nice if hookpost could be passed a parameter indicating
13439@c if the command it hooks executed properly or not. FIXME!
13440
d4f3574e 13441@kindex stop@r{, a pseudo-command}
c906108c
SS
13442In addition, a pseudo-command, @samp{stop} exists. Defining
13443(@samp{hook-stop}) makes the associated commands execute every time
13444execution stops in your program: before breakpoint commands are run,
13445displays are printed, or the stack frame is printed.
13446
c906108c
SS
13447For example, to ignore @code{SIGALRM} signals while
13448single-stepping, but treat them normally during normal execution,
13449you could define:
13450
13451@example
13452define hook-stop
13453handle SIGALRM nopass
13454end
13455
13456define hook-run
13457handle SIGALRM pass
13458end
13459
13460define hook-continue
13461handle SIGLARM pass
13462end
13463@end example
c906108c 13464
c78b4128
EZ
13465As a further example, to hook at the begining and end of the @code{echo}
13466command, and to add extra text to the beginning and end of the message,
13467you could define:
13468
13469@example
13470define hook-echo
13471echo <<<---
13472end
13473
13474define hookpost-echo
13475echo --->>>\n
13476end
13477
13478(@value{GDBP}) echo Hello World
13479<<<---Hello World--->>>
13480(@value{GDBP})
13481
13482@end example
13483
c906108c
SS
13484You can define a hook for any single-word command in @value{GDBN}, but
13485not for command aliases; you should define a hook for the basic command
13486name, e.g. @code{backtrace} rather than @code{bt}.
13487@c FIXME! So how does Joe User discover whether a command is an alias
13488@c or not?
13489If an error occurs during the execution of your hook, execution of
13490@value{GDBN} commands stops and @value{GDBN} issues a prompt
13491(before the command that you actually typed had a chance to run).
13492
13493If you try to define a hook which does not match any known command, you
13494get a warning from the @code{define} command.
13495
6d2ebf8b 13496@node Command Files
c906108c
SS
13497@section Command files
13498
13499@cindex command files
5d161b24
DB
13500A command file for @value{GDBN} is a file of lines that are @value{GDBN}
13501commands. Comments (lines starting with @kbd{#}) may also be included.
13502An empty line in a command file does nothing; it does not mean to repeat
c906108c
SS
13503the last command, as it would from the terminal.
13504
13505@cindex init file
13506@cindex @file{.gdbinit}
d4f3574e 13507@cindex @file{gdb.ini}
c906108c 13508When you start @value{GDBN}, it automatically executes commands from its
96565e91
CF
13509@dfn{init files}, normally called @file{.gdbinit}@footnote{The DJGPP
13510port of @value{GDBN} uses the name @file{gdb.ini} instead, due to the
13511limitations of file names imposed by DOS filesystems.}.
13512During startup, @value{GDBN} does the following:
bf0184be
ND
13513
13514@enumerate
13515@item
13516Reads the init file (if any) in your home directory@footnote{On
13517DOS/Windows systems, the home directory is the one pointed to by the
13518@code{HOME} environment variable.}.
13519
13520@item
13521Processes command line options and operands.
13522
13523@item
13524Reads the init file (if any) in the current working directory.
13525
13526@item
13527Reads command files specified by the @samp{-x} option.
13528@end enumerate
13529
13530The init file in your home directory can set options (such as @samp{set
13531complaints}) that affect subsequent processing of command line options
13532and operands. Init files are not executed if you use the @samp{-nx}
13533option (@pxref{Mode Options, ,Choosing modes}).
c906108c 13534
c906108c
SS
13535@cindex init file name
13536On some configurations of @value{GDBN}, the init file is known by a
13537different name (these are typically environments where a specialized
13538form of @value{GDBN} may need to coexist with other forms, hence a
13539different name for the specialized version's init file). These are the
13540environments with special init file names:
13541
00e4a2e4 13542@cindex @file{.vxgdbinit}
c906108c
SS
13543@itemize @bullet
13544@item
00e4a2e4 13545VxWorks (Wind River Systems real-time OS): @file{.vxgdbinit}
c906108c 13546
00e4a2e4 13547@cindex @file{.os68gdbinit}
c906108c 13548@item
00e4a2e4 13549OS68K (Enea Data Systems real-time OS): @file{.os68gdbinit}
c906108c 13550
00e4a2e4 13551@cindex @file{.esgdbinit}
c906108c 13552@item
00e4a2e4 13553ES-1800 (Ericsson Telecom AB M68000 emulator): @file{.esgdbinit}
c906108c 13554@end itemize
c906108c
SS
13555
13556You can also request the execution of a command file with the
13557@code{source} command:
13558
13559@table @code
13560@kindex source
13561@item source @var{filename}
13562Execute the command file @var{filename}.
13563@end table
13564
13565The lines in a command file are executed sequentially. They are not
13566printed as they are executed. An error in any command terminates execution
13567of the command file.
13568
13569Commands that would ask for confirmation if used interactively proceed
13570without asking when used in a command file. Many @value{GDBN} commands that
13571normally print messages to say what they are doing omit the messages
13572when called from command files.
13573
b433d00b
DH
13574@value{GDBN} also accepts command input from standard input. In this
13575mode, normal output goes to standard output and error output goes to
13576standard error. Errors in a command file supplied on standard input do
13577not terminate execution of the command file --- execution continues with
13578the next command.
13579
13580@example
13581gdb < cmds > log 2>&1
13582@end example
13583
13584(The syntax above will vary depending on the shell used.) This example
13585will execute commands from the file @file{cmds}. All output and errors
13586would be directed to @file{log}.
13587
6d2ebf8b 13588@node Output
c906108c
SS
13589@section Commands for controlled output
13590
13591During the execution of a command file or a user-defined command, normal
13592@value{GDBN} output is suppressed; the only output that appears is what is
13593explicitly printed by the commands in the definition. This section
13594describes three commands useful for generating exactly the output you
13595want.
13596
13597@table @code
13598@kindex echo
13599@item echo @var{text}
13600@c I do not consider backslash-space a standard C escape sequence
13601@c because it is not in ANSI.
13602Print @var{text}. Nonprinting characters can be included in
13603@var{text} using C escape sequences, such as @samp{\n} to print a
13604newline. @strong{No newline is printed unless you specify one.}
13605In addition to the standard C escape sequences, a backslash followed
13606by a space stands for a space. This is useful for displaying a
13607string with spaces at the beginning or the end, since leading and
5d161b24 13608trailing spaces are otherwise trimmed from all arguments.
c906108c
SS
13609To print @samp{@w{ }and foo =@w{ }}, use the command
13610@samp{echo \@w{ }and foo = \@w{ }}.
13611
13612A backslash at the end of @var{text} can be used, as in C, to continue
13613the command onto subsequent lines. For example,
13614
13615@example
13616echo This is some text\n\
13617which is continued\n\
13618onto several lines.\n
13619@end example
13620
13621produces the same output as
13622
13623@example
13624echo This is some text\n
13625echo which is continued\n
13626echo onto several lines.\n
13627@end example
13628
13629@kindex output
13630@item output @var{expression}
13631Print the value of @var{expression} and nothing but that value: no
13632newlines, no @samp{$@var{nn} = }. The value is not entered in the
5d161b24 13633value history either. @xref{Expressions, ,Expressions}, for more information
c906108c
SS
13634on expressions.
13635
13636@item output/@var{fmt} @var{expression}
13637Print the value of @var{expression} in format @var{fmt}. You can use
13638the same formats as for @code{print}. @xref{Output Formats,,Output
13639formats}, for more information.
13640
13641@kindex printf
13642@item printf @var{string}, @var{expressions}@dots{}
13643Print the values of the @var{expressions} under the control of
13644@var{string}. The @var{expressions} are separated by commas and may be
13645either numbers or pointers. Their values are printed as specified by
13646@var{string}, exactly as if your program were to execute the C
13647subroutine
d4f3574e
SS
13648@c FIXME: the above implies that at least all ANSI C formats are
13649@c supported, but it isn't true: %E and %G don't work (or so it seems).
13650@c Either this is a bug, or the manual should document what formats are
13651@c supported.
c906108c
SS
13652
13653@example
13654printf (@var{string}, @var{expressions}@dots{});
13655@end example
13656
13657For example, you can print two values in hex like this:
13658
13659@smallexample
13660printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
13661@end smallexample
13662
13663The only backslash-escape sequences that you can use in the format
13664string are the simple ones that consist of backslash followed by a
13665letter.
13666@end table
13667
c4555f82
SC
13668@node TUI
13669@chapter @value{GDBN} Text User Interface
13670@cindex TUI
13671
13672@menu
13673* TUI Overview:: TUI overview
13674* TUI Keys:: TUI key bindings
13675* TUI Commands:: TUI specific commands
13676* TUI Configuration:: TUI configuration variables
13677@end menu
13678
13679The @value{GDBN} Text User Interface, TUI in short,
13680is a terminal interface which uses the @code{curses} library
13681to show the source file, the assembly output, the program registers
13682and @value{GDBN} commands in separate text windows.
13683The TUI is available only when @value{GDBN} is configured
13684with the @code{--enable-tui} configure option (@pxref{Configure Options}).
13685
13686@node TUI Overview
13687@section TUI overview
13688
13689The TUI has two display modes that can be switched while
13690@value{GDBN} runs:
13691
13692@itemize @bullet
13693@item
13694A curses (or TUI) mode in which it displays several text
13695windows on the terminal.
13696
13697@item
13698A standard mode which corresponds to the @value{GDBN} configured without
13699the TUI.
13700@end itemize
13701
13702In the TUI mode, @value{GDBN} can display several text window
13703on the terminal:
13704
13705@table @emph
13706@item command
13707This window is the @value{GDBN} command window with the @value{GDBN}
13708prompt and the @value{GDBN} outputs. The @value{GDBN} input is still
13709managed using readline but through the TUI. The @emph{command}
13710window is always visible.
13711
13712@item source
13713The source window shows the source file of the program. The current
13714line as well as active breakpoints are displayed in this window.
13715The current program position is shown with the @samp{>} marker and
13716active breakpoints are shown with @samp{*} markers.
13717
13718@item assembly
13719The assembly window shows the disassembly output of the program.
13720
13721@item register
13722This window shows the processor registers. It detects when
13723a register is changed and when this is the case, registers that have
13724changed are highlighted.
13725
13726@end table
13727
13728The source, assembly and register windows are attached to the thread
13729and the frame position. They are updated when the current thread
13730changes, when the frame changes or when the program counter changes.
13731These three windows are arranged by the TUI according to several
13732layouts. The layout defines which of these three windows are visible.
13733The following layouts are available:
13734
13735@itemize @bullet
13736@item
13737source
13738
13739@item
13740assembly
13741
13742@item
13743source and assembly
13744
13745@item
13746source and registers
13747
13748@item
13749assembly and registers
13750
13751@end itemize
13752
13753@node TUI Keys
13754@section TUI Key Bindings
13755@cindex TUI key bindings
13756
13757The TUI installs several key bindings in the readline keymaps
13758(@pxref{Command Line Editing}).
13759They allow to leave or enter in the TUI mode or they operate
13760directly on the TUI layout and windows. The following key bindings
13761are installed for both TUI mode and the @value{GDBN} standard mode.
13762
13763@table @kbd
13764@kindex C-x C-a
13765@item C-x C-a
13766@kindex C-x a
13767@itemx C-x a
13768@kindex C-x A
13769@itemx C-x A
13770Enter or leave the TUI mode. When the TUI mode is left,
13771the curses window management is left and @value{GDBN} operates using
13772its standard mode writing on the terminal directly. When the TUI
13773mode is entered, the control is given back to the curses windows.
13774The screen is then refreshed.
13775
13776@kindex C-x 1
13777@item C-x 1
13778Use a TUI layout with only one window. The layout will
13779either be @samp{source} or @samp{assembly}. When the TUI mode
13780is not active, it will switch to the TUI mode.
13781
13782Think of this key binding as the Emacs @kbd{C-x 1} binding.
13783
13784@kindex C-x 2
13785@item C-x 2
13786Use a TUI layout with at least two windows. When the current
13787layout shows already two windows, a next layout with two windows is used.
13788When a new layout is chosen, one window will always be common to the
13789previous layout and the new one.
13790
13791Think of it as the Emacs @kbd{C-x 2} binding.
13792
13793@end table
13794
13795The following key bindings are handled only by the TUI mode:
13796
13797@table @key
13798@kindex PgUp
13799@item PgUp
13800Scroll the active window one page up.
13801
13802@kindex PgDn
13803@item PgDn
13804Scroll the active window one page down.
13805
13806@kindex Up
13807@item Up
13808Scroll the active window one line up.
13809
13810@kindex Down
13811@item Down
13812Scroll the active window one line down.
13813
13814@kindex Left
13815@item Left
13816Scroll the active window one column left.
13817
13818@kindex Right
13819@item Right
13820Scroll the active window one column right.
13821
13822@kindex C-L
13823@item C-L
13824Refresh the screen.
13825
13826@end table
13827
13828In the TUI mode, the arrow keys are used by the active window
13829for scrolling. This means they are not available for readline. It is
13830necessary to use other readline key bindings such as @key{C-p}, @key{C-n},
13831@key{C-b} and @key{C-f}.
13832
13833@node TUI Commands
13834@section TUI specific commands
13835@cindex TUI commands
13836
13837The TUI has specific commands to control the text windows.
13838These commands are always available, that is they do not depend on
13839the current terminal mode in which @value{GDBN} runs. When @value{GDBN}
13840is in the standard mode, using these commands will automatically switch
13841in the TUI mode.
13842
13843@table @code
13844@item layout next
13845@kindex layout next
13846Display the next layout.
13847
13848@item layout prev
13849@kindex layout prev
13850Display the previous layout.
13851
13852@item layout src
13853@kindex layout src
13854Display the source window only.
13855
13856@item layout asm
13857@kindex layout asm
13858Display the assembly window only.
13859
13860@item layout split
13861@kindex layout split
13862Display the source and assembly window.
13863
13864@item layout regs
13865@kindex layout regs
13866Display the register window together with the source or assembly window.
13867
13868@item focus next | prev | src | asm | regs | split
13869@kindex focus
13870Set the focus to the named window.
13871This command allows to change the active window so that scrolling keys
13872can be affected to another window.
13873
13874@item refresh
13875@kindex refresh
13876Refresh the screen. This is similar to using @key{C-L} key.
13877
13878@item update
13879@kindex update
13880Update the source window and the current execution point.
13881
13882@item winheight @var{name} +@var{count}
13883@itemx winheight @var{name} -@var{count}
13884@kindex winheight
13885Change the height of the window @var{name} by @var{count}
13886lines. Positive counts increase the height, while negative counts
13887decrease it.
13888
13889@end table
13890
13891@node TUI Configuration
13892@section TUI configuration variables
13893@cindex TUI configuration variables
13894
13895The TUI has several configuration variables that control the
13896appearance of windows on the terminal.
13897
13898@table @code
732b3002
SC
13899@item set tui border-kind @var{kind}
13900@kindex set tui border-kind
c4555f82
SC
13901Select the border appearance for the source, assembly and register windows.
13902The possible values are the following:
13903@table @code
13904@item space
13905Use a space character to draw the border.
13906
13907@item ascii
13908Use ascii characters + - and | to draw the border.
13909
13910@item acs
13911Use the Alternate Character Set to draw the border. The border is
13912drawn using character line graphics if the terminal supports them.
13913
13914@end table
13915
732b3002
SC
13916@item set tui active-border-mode @var{mode}
13917@kindex set tui active-border-mode
c4555f82
SC
13918Select the attributes to display the border of the active window.
13919The possible values are @code{normal}, @code{standout}, @code{reverse},
13920@code{half}, @code{half-standout}, @code{bold} and @code{bold-standout}.
13921
732b3002
SC
13922@item set tui border-mode @var{mode}
13923@kindex set tui border-mode
c4555f82
SC
13924Select the attributes to display the border of other windows.
13925The @var{mode} can be one of the following:
13926@table @code
13927@item normal
13928Use normal attributes to display the border.
13929
13930@item standout
13931Use standout mode.
13932
13933@item reverse
13934Use reverse video mode.
13935
13936@item half
13937Use half bright mode.
13938
13939@item half-standout
13940Use half bright and standout mode.
13941
13942@item bold
13943Use extra bright or bold mode.
13944
13945@item bold-standout
13946Use extra bright or bold and standout mode.
13947
13948@end table
13949
13950@end table
13951
6d2ebf8b 13952@node Emacs
c906108c
SS
13953@chapter Using @value{GDBN} under @sc{gnu} Emacs
13954
13955@cindex Emacs
13956@cindex @sc{gnu} Emacs
13957A special interface allows you to use @sc{gnu} Emacs to view (and
13958edit) the source files for the program you are debugging with
13959@value{GDBN}.
13960
13961To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
13962executable file you want to debug as an argument. This command starts
13963@value{GDBN} as a subprocess of Emacs, with input and output through a newly
13964created Emacs buffer.
53a5351d 13965@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c
SS
13966
13967Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
13968things:
13969
13970@itemize @bullet
13971@item
13972All ``terminal'' input and output goes through the Emacs buffer.
13973@end itemize
13974
13975This applies both to @value{GDBN} commands and their output, and to the input
13976and output done by the program you are debugging.
13977
13978This is useful because it means that you can copy the text of previous
13979commands and input them again; you can even use parts of the output
13980in this way.
13981
13982All the facilities of Emacs' Shell mode are available for interacting
13983with your program. In particular, you can send signals the usual
13984way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
13985stop.
13986
13987@itemize @bullet
13988@item
13989@value{GDBN} displays source code through Emacs.
13990@end itemize
13991
13992Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
13993source file for that frame and puts an arrow (@samp{=>}) at the
13994left margin of the current line. Emacs uses a separate buffer for
13995source display, and splits the screen to show both your @value{GDBN} session
13996and the source.
13997
13998Explicit @value{GDBN} @code{list} or search commands still produce output as
13999usual, but you probably have no reason to use them from Emacs.
14000
14001@quotation
14002@emph{Warning:} If the directory where your program resides is not your
14003current directory, it can be easy to confuse Emacs about the location of
14004the source files, in which case the auxiliary display buffer does not
14005appear to show your source. @value{GDBN} can find programs by searching your
14006environment's @code{PATH} variable, so the @value{GDBN} input and output
14007session proceeds normally; but Emacs does not get enough information
14008back from @value{GDBN} to locate the source files in this situation. To
14009avoid this problem, either start @value{GDBN} mode from the directory where
14010your program resides, or specify an absolute file name when prompted for the
14011@kbd{M-x gdb} argument.
14012
14013A similar confusion can result if you use the @value{GDBN} @code{file} command to
14014switch to debugging a program in some other location, from an existing
14015@value{GDBN} buffer in Emacs.
14016@end quotation
14017
14018By default, @kbd{M-x gdb} calls the program called @file{gdb}. If
14019you need to call @value{GDBN} by a different name (for example, if you keep
14020several configurations around, with different names) you can set the
14021Emacs variable @code{gdb-command-name}; for example,
14022
14023@example
14024(setq gdb-command-name "mygdb")
14025@end example
14026
14027@noindent
d4f3574e 14028(preceded by @kbd{M-:} or @kbd{ESC :}, or typed in the @code{*scratch*} buffer, or
c906108c
SS
14029in your @file{.emacs} file) makes Emacs call the program named
14030``@code{mygdb}'' instead.
14031
14032In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
14033addition to the standard Shell mode commands:
14034
14035@table @kbd
14036@item C-h m
14037Describe the features of Emacs' @value{GDBN} Mode.
14038
14039@item M-s
14040Execute to another source line, like the @value{GDBN} @code{step} command; also
14041update the display window to show the current file and location.
14042
14043@item M-n
14044Execute to next source line in this function, skipping all function
14045calls, like the @value{GDBN} @code{next} command. Then update the display window
14046to show the current file and location.
14047
14048@item M-i
14049Execute one instruction, like the @value{GDBN} @code{stepi} command; update
14050display window accordingly.
14051
14052@item M-x gdb-nexti
14053Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
14054display window accordingly.
14055
14056@item C-c C-f
14057Execute until exit from the selected stack frame, like the @value{GDBN}
14058@code{finish} command.
14059
14060@item M-c
14061Continue execution of your program, like the @value{GDBN} @code{continue}
14062command.
14063
14064@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
14065
14066@item M-u
14067Go up the number of frames indicated by the numeric argument
14068(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
14069like the @value{GDBN} @code{up} command.
14070
14071@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
14072
14073@item M-d
14074Go down the number of frames indicated by the numeric argument, like the
14075@value{GDBN} @code{down} command.
14076
14077@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
14078
14079@item C-x &
14080Read the number where the cursor is positioned, and insert it at the end
14081of the @value{GDBN} I/O buffer. For example, if you wish to disassemble code
14082around an address that was displayed earlier, type @kbd{disassemble};
14083then move the cursor to the address display, and pick up the
14084argument for @code{disassemble} by typing @kbd{C-x &}.
14085
14086You can customize this further by defining elements of the list
14087@code{gdb-print-command}; once it is defined, you can format or
14088otherwise process numbers picked up by @kbd{C-x &} before they are
14089inserted. A numeric argument to @kbd{C-x &} indicates that you
14090wish special formatting, and also acts as an index to pick an element of the
14091list. If the list element is a string, the number to be inserted is
14092formatted using the Emacs function @code{format}; otherwise the number
14093is passed as an argument to the corresponding list element.
14094@end table
14095
14096In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
14097tells @value{GDBN} to set a breakpoint on the source line point is on.
14098
14099If you accidentally delete the source-display buffer, an easy way to get
14100it back is to type the command @code{f} in the @value{GDBN} buffer, to
14101request a frame display; when you run under Emacs, this recreates
14102the source buffer if necessary to show you the context of the current
14103frame.
14104
14105The source files displayed in Emacs are in ordinary Emacs buffers
14106which are visiting the source files in the usual way. You can edit
14107the files with these buffers if you wish; but keep in mind that @value{GDBN}
14108communicates with Emacs in terms of line numbers. If you add or
14109delete lines from the text, the line numbers that @value{GDBN} knows cease
14110to correspond properly with the code.
14111
14112@c The following dropped because Epoch is nonstandard. Reactivate
14113@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
14114@ignore
14115@kindex Emacs Epoch environment
14116@kindex Epoch
14117@kindex inspect
14118
5d161b24 14119Version 18 of @sc{gnu} Emacs has a built-in window system
c906108c
SS
14120called the @code{epoch}
14121environment. Users of this environment can use a new command,
14122@code{inspect} which performs identically to @code{print} except that
14123each value is printed in its own window.
14124@end ignore
c906108c 14125
d700128c 14126@include annotate.texi
7162c0ca 14127@include gdbmi.texinfo
d700128c 14128
6d2ebf8b 14129@node GDB Bugs
c906108c
SS
14130@chapter Reporting Bugs in @value{GDBN}
14131@cindex bugs in @value{GDBN}
14132@cindex reporting bugs in @value{GDBN}
14133
14134Your bug reports play an essential role in making @value{GDBN} reliable.
14135
14136Reporting a bug may help you by bringing a solution to your problem, or it
14137may not. But in any case the principal function of a bug report is to help
14138the entire community by making the next version of @value{GDBN} work better. Bug
14139reports are your contribution to the maintenance of @value{GDBN}.
14140
14141In order for a bug report to serve its purpose, you must include the
14142information that enables us to fix the bug.
14143
14144@menu
14145* Bug Criteria:: Have you found a bug?
14146* Bug Reporting:: How to report bugs
14147@end menu
14148
6d2ebf8b 14149@node Bug Criteria
c906108c
SS
14150@section Have you found a bug?
14151@cindex bug criteria
14152
14153If you are not sure whether you have found a bug, here are some guidelines:
14154
14155@itemize @bullet
14156@cindex fatal signal
14157@cindex debugger crash
14158@cindex crash of debugger
14159@item
14160If the debugger gets a fatal signal, for any input whatever, that is a
14161@value{GDBN} bug. Reliable debuggers never crash.
14162
14163@cindex error on valid input
14164@item
14165If @value{GDBN} produces an error message for valid input, that is a
14166bug. (Note that if you're cross debugging, the problem may also be
14167somewhere in the connection to the target.)
14168
14169@cindex invalid input
14170@item
14171If @value{GDBN} does not produce an error message for invalid input,
14172that is a bug. However, you should note that your idea of
14173``invalid input'' might be our idea of ``an extension'' or ``support
14174for traditional practice''.
14175
14176@item
14177If you are an experienced user of debugging tools, your suggestions
14178for improvement of @value{GDBN} are welcome in any case.
14179@end itemize
14180
6d2ebf8b 14181@node Bug Reporting
c906108c
SS
14182@section How to report bugs
14183@cindex bug reports
14184@cindex @value{GDBN} bugs, reporting
14185
c906108c
SS
14186A number of companies and individuals offer support for @sc{gnu} products.
14187If you obtained @value{GDBN} from a support organization, we recommend you
14188contact that organization first.
14189
14190You can find contact information for many support companies and
14191individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
14192distribution.
14193@c should add a web page ref...
14194
14195In any event, we also recommend that you send bug reports for
14196@value{GDBN} to this addresses:
14197
14198@example
d4f3574e 14199bug-gdb@@gnu.org
c906108c
SS
14200@end example
14201
14202@strong{Do not send bug reports to @samp{info-gdb}, or to
d4f3574e 14203@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
c906108c
SS
14204not want to receive bug reports. Those that do have arranged to receive
14205@samp{bug-gdb}.
14206
14207The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
14208serves as a repeater. The mailing list and the newsgroup carry exactly
14209the same messages. Often people think of posting bug reports to the
14210newsgroup instead of mailing them. This appears to work, but it has one
14211problem which can be crucial: a newsgroup posting often lacks a mail
14212path back to the sender. Thus, if we need to ask for more information,
14213we may be unable to reach you. For this reason, it is better to send
14214bug reports to the mailing list.
14215
14216As a last resort, send bug reports on paper to:
14217
14218@example
14219@sc{gnu} Debugger Bugs
14220Free Software Foundation Inc.
1422159 Temple Place - Suite 330
14222Boston, MA 02111-1307
14223USA
14224@end example
c906108c
SS
14225
14226The fundamental principle of reporting bugs usefully is this:
14227@strong{report all the facts}. If you are not sure whether to state a
14228fact or leave it out, state it!
14229
14230Often people omit facts because they think they know what causes the
14231problem and assume that some details do not matter. Thus, you might
14232assume that the name of the variable you use in an example does not matter.
14233Well, probably it does not, but one cannot be sure. Perhaps the bug is a
14234stray memory reference which happens to fetch from the location where that
14235name is stored in memory; perhaps, if the name were different, the contents
14236of that location would fool the debugger into doing the right thing despite
14237the bug. Play it safe and give a specific, complete example. That is the
14238easiest thing for you to do, and the most helpful.
14239
14240Keep in mind that the purpose of a bug report is to enable us to fix the
14241bug. It may be that the bug has been reported previously, but neither
14242you nor we can know that unless your bug report is complete and
14243self-contained.
14244
14245Sometimes people give a few sketchy facts and ask, ``Does this ring a
14246bell?'' Those bug reports are useless, and we urge everyone to
14247@emph{refuse to respond to them} except to chide the sender to report
14248bugs properly.
14249
14250To enable us to fix the bug, you should include all these things:
14251
14252@itemize @bullet
14253@item
14254The version of @value{GDBN}. @value{GDBN} announces it if you start
14255with no arguments; you can also print it at any time using @code{show
14256version}.
14257
14258Without this, we will not know whether there is any point in looking for
14259the bug in the current version of @value{GDBN}.
14260
14261@item
14262The type of machine you are using, and the operating system name and
14263version number.
14264
c906108c
SS
14265@item
14266What compiler (and its version) was used to compile @value{GDBN}---e.g.
14267``@value{GCC}--2.8.1''.
c906108c
SS
14268
14269@item
14270What compiler (and its version) was used to compile the program you are
14271debugging---e.g. ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
14272C Compiler''. For GCC, you can say @code{gcc --version} to get this
14273information; for other compilers, see the documentation for those
14274compilers.
14275
14276@item
14277The command arguments you gave the compiler to compile your example and
14278observe the bug. For example, did you use @samp{-O}? To guarantee
14279you will not omit something important, list them all. A copy of the
14280Makefile (or the output from make) is sufficient.
14281
14282If we were to try to guess the arguments, we would probably guess wrong
14283and then we might not encounter the bug.
14284
14285@item
14286A complete input script, and all necessary source files, that will
14287reproduce the bug.
14288
14289@item
14290A description of what behavior you observe that you believe is
14291incorrect. For example, ``It gets a fatal signal.''
14292
14293Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
14294will certainly notice it. But if the bug is incorrect output, we might
14295not notice unless it is glaringly wrong. You might as well not give us
14296a chance to make a mistake.
14297
14298Even if the problem you experience is a fatal signal, you should still
14299say so explicitly. Suppose something strange is going on, such as, your
14300copy of @value{GDBN} is out of synch, or you have encountered a bug in
14301the C library on your system. (This has happened!) Your copy might
14302crash and ours would not. If you told us to expect a crash, then when
14303ours fails to crash, we would know that the bug was not happening for
14304us. If you had not told us to expect a crash, then we would not be able
14305to draw any conclusion from our observations.
14306
c906108c
SS
14307@item
14308If you wish to suggest changes to the @value{GDBN} source, send us context
14309diffs. If you even discuss something in the @value{GDBN} source, refer to
14310it by context, not by line number.
14311
14312The line numbers in our development sources will not match those in your
14313sources. Your line numbers would convey no useful information to us.
53a5351d 14314
c906108c
SS
14315@end itemize
14316
14317Here are some things that are not necessary:
14318
14319@itemize @bullet
14320@item
14321A description of the envelope of the bug.
14322
14323Often people who encounter a bug spend a lot of time investigating
14324which changes to the input file will make the bug go away and which
14325changes will not affect it.
14326
14327This is often time consuming and not very useful, because the way we
14328will find the bug is by running a single example under the debugger
14329with breakpoints, not by pure deduction from a series of examples.
14330We recommend that you save your time for something else.
14331
14332Of course, if you can find a simpler example to report @emph{instead}
14333of the original one, that is a convenience for us. Errors in the
14334output will be easier to spot, running under the debugger will take
14335less time, and so on.
14336
14337However, simplification is not vital; if you do not want to do this,
14338report the bug anyway and send us the entire test case you used.
14339
14340@item
14341A patch for the bug.
14342
14343A patch for the bug does help us if it is a good one. But do not omit
14344the necessary information, such as the test case, on the assumption that
14345a patch is all we need. We might see problems with your patch and decide
14346to fix the problem another way, or we might not understand it at all.
14347
14348Sometimes with a program as complicated as @value{GDBN} it is very hard to
14349construct an example that will make the program follow a certain path
14350through the code. If you do not send us the example, we will not be able
14351to construct one, so we will not be able to verify that the bug is fixed.
14352
14353And if we cannot understand what bug you are trying to fix, or why your
14354patch should be an improvement, we will not install it. A test case will
14355help us to understand.
14356
14357@item
14358A guess about what the bug is or what it depends on.
14359
14360Such guesses are usually wrong. Even we cannot guess right about such
14361things without first using the debugger to find the facts.
14362@end itemize
14363
5d161b24 14364@c The readline documentation is distributed with the readline code
c906108c
SS
14365@c and consists of the two following files:
14366@c rluser.texinfo
7be570e7 14367@c inc-hist.texinfo
c906108c
SS
14368@c Use -I with makeinfo to point to the appropriate directory,
14369@c environment var TEXINPUTS with TeX.
14370@include rluser.texinfo
7be570e7 14371@include inc-hist.texinfo
c906108c
SS
14372
14373
6d2ebf8b 14374@node Formatting Documentation
c906108c
SS
14375@appendix Formatting Documentation
14376
14377@cindex @value{GDBN} reference card
14378@cindex reference card
14379The @value{GDBN} 4 release includes an already-formatted reference card, ready
14380for printing with PostScript or Ghostscript, in the @file{gdb}
14381subdirectory of the main source directory@footnote{In
14382@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
14383release.}. If you can use PostScript or Ghostscript with your printer,
14384you can print the reference card immediately with @file{refcard.ps}.
14385
14386The release also includes the source for the reference card. You
14387can format it, using @TeX{}, by typing:
14388
14389@example
14390make refcard.dvi
14391@end example
14392
5d161b24
DB
14393The @value{GDBN} reference card is designed to print in @dfn{landscape}
14394mode on US ``letter'' size paper;
c906108c
SS
14395that is, on a sheet 11 inches wide by 8.5 inches
14396high. You will need to specify this form of printing as an option to
14397your @sc{dvi} output program.
14398
14399@cindex documentation
14400
14401All the documentation for @value{GDBN} comes as part of the machine-readable
14402distribution. The documentation is written in Texinfo format, which is
14403a documentation system that uses a single source file to produce both
14404on-line information and a printed manual. You can use one of the Info
14405formatting commands to create the on-line version of the documentation
14406and @TeX{} (or @code{texi2roff}) to typeset the printed version.
14407
14408@value{GDBN} includes an already formatted copy of the on-line Info
14409version of this manual in the @file{gdb} subdirectory. The main Info
14410file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
14411subordinate files matching @samp{gdb.info*} in the same directory. If
14412necessary, you can print out these files, or read them with any editor;
14413but they are easier to read using the @code{info} subsystem in @sc{gnu}
14414Emacs or the standalone @code{info} program, available as part of the
14415@sc{gnu} Texinfo distribution.
14416
14417If you want to format these Info files yourself, you need one of the
14418Info formatting programs, such as @code{texinfo-format-buffer} or
14419@code{makeinfo}.
14420
14421If you have @code{makeinfo} installed, and are in the top level
14422@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
14423version @value{GDBVN}), you can make the Info file by typing:
14424
14425@example
14426cd gdb
14427make gdb.info
14428@end example
14429
14430If you want to typeset and print copies of this manual, you need @TeX{},
14431a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
14432Texinfo definitions file.
14433
14434@TeX{} is a typesetting program; it does not print files directly, but
14435produces output files called @sc{dvi} files. To print a typeset
14436document, you need a program to print @sc{dvi} files. If your system
14437has @TeX{} installed, chances are it has such a program. The precise
14438command to use depends on your system; @kbd{lpr -d} is common; another
14439(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
14440require a file name without any extension or a @samp{.dvi} extension.
14441
14442@TeX{} also requires a macro definitions file called
14443@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
14444written in Texinfo format. On its own, @TeX{} cannot either read or
14445typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
14446and is located in the @file{gdb-@var{version-number}/texinfo}
14447directory.
14448
14449If you have @TeX{} and a @sc{dvi} printer program installed, you can
14450typeset and print this manual. First switch to the the @file{gdb}
14451subdirectory of the main source directory (for example, to
14452@file{gdb-@value{GDBVN}/gdb}) and type:
14453
14454@example
14455make gdb.dvi
14456@end example
14457
14458Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c906108c 14459
6d2ebf8b 14460@node Installing GDB
c906108c
SS
14461@appendix Installing @value{GDBN}
14462@cindex configuring @value{GDBN}
14463@cindex installation
14464
c906108c
SS
14465@value{GDBN} comes with a @code{configure} script that automates the process
14466of preparing @value{GDBN} for installation; you can then use @code{make} to
14467build the @code{gdb} program.
14468@iftex
14469@c irrelevant in info file; it's as current as the code it lives with.
14470@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
14471look at the @file{README} file in the sources; we may have improved the
14472installation procedures since publishing this manual.}
14473@end iftex
14474
5d161b24
DB
14475The @value{GDBN} distribution includes all the source code you need for
14476@value{GDBN} in a single directory, whose name is usually composed by
c906108c
SS
14477appending the version number to @samp{gdb}.
14478
14479For example, the @value{GDBN} version @value{GDBVN} distribution is in the
14480@file{gdb-@value{GDBVN}} directory. That directory contains:
14481
14482@table @code
14483@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
14484script for configuring @value{GDBN} and all its supporting libraries
14485
14486@item gdb-@value{GDBVN}/gdb
14487the source specific to @value{GDBN} itself
14488
14489@item gdb-@value{GDBVN}/bfd
14490source for the Binary File Descriptor library
14491
14492@item gdb-@value{GDBVN}/include
14493@sc{gnu} include files
14494
14495@item gdb-@value{GDBVN}/libiberty
14496source for the @samp{-liberty} free software library
14497
14498@item gdb-@value{GDBVN}/opcodes
14499source for the library of opcode tables and disassemblers
14500
14501@item gdb-@value{GDBVN}/readline
14502source for the @sc{gnu} command-line interface
14503
14504@item gdb-@value{GDBVN}/glob
14505source for the @sc{gnu} filename pattern-matching subroutine
14506
14507@item gdb-@value{GDBVN}/mmalloc
14508source for the @sc{gnu} memory-mapped malloc package
14509@end table
14510
14511The simplest way to configure and build @value{GDBN} is to run @code{configure}
14512from the @file{gdb-@var{version-number}} source directory, which in
14513this example is the @file{gdb-@value{GDBVN}} directory.
14514
14515First switch to the @file{gdb-@var{version-number}} source directory
14516if you are not already in it; then run @code{configure}. Pass the
14517identifier for the platform on which @value{GDBN} will run as an
14518argument.
14519
14520For example:
14521
14522@example
14523cd gdb-@value{GDBVN}
14524./configure @var{host}
14525make
14526@end example
14527
14528@noindent
14529where @var{host} is an identifier such as @samp{sun4} or
14530@samp{decstation}, that identifies the platform where @value{GDBN} will run.
14531(You can often leave off @var{host}; @code{configure} tries to guess the
14532correct value by examining your system.)
14533
14534Running @samp{configure @var{host}} and then running @code{make} builds the
14535@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
14536libraries, then @code{gdb} itself. The configured source files, and the
14537binaries, are left in the corresponding source directories.
14538
14539@need 750
14540@code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
14541system does not recognize this automatically when you run a different
14542shell, you may need to run @code{sh} on it explicitly:
14543
14544@example
14545sh configure @var{host}
14546@end example
14547
14548If you run @code{configure} from a directory that contains source
14549directories for multiple libraries or programs, such as the
14550@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
14551creates configuration files for every directory level underneath (unless
14552you tell it not to, with the @samp{--norecursion} option).
14553
14554You can run the @code{configure} script from any of the
14555subordinate directories in the @value{GDBN} distribution if you only want to
14556configure that subdirectory, but be sure to specify a path to it.
14557
14558For example, with version @value{GDBVN}, type the following to configure only
14559the @code{bfd} subdirectory:
14560
14561@example
14562@group
14563cd gdb-@value{GDBVN}/bfd
14564../configure @var{host}
14565@end group
14566@end example
14567
14568You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
14569However, you should make sure that the shell on your path (named by
14570the @samp{SHELL} environment variable) is publicly readable. Remember
14571that @value{GDBN} uses the shell to start your program---some systems refuse to
14572let @value{GDBN} debug child processes whose programs are not readable.
14573
14574@menu
14575* Separate Objdir:: Compiling @value{GDBN} in another directory
14576* Config Names:: Specifying names for hosts and targets
14577* Configure Options:: Summary of options for configure
14578@end menu
14579
6d2ebf8b 14580@node Separate Objdir
c906108c
SS
14581@section Compiling @value{GDBN} in another directory
14582
14583If you want to run @value{GDBN} versions for several host or target machines,
14584you need a different @code{gdb} compiled for each combination of
14585host and target. @code{configure} is designed to make this easy by
14586allowing you to generate each configuration in a separate subdirectory,
14587rather than in the source directory. If your @code{make} program
14588handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
14589@code{make} in each of these directories builds the @code{gdb}
14590program specified there.
14591
14592To build @code{gdb} in a separate directory, run @code{configure}
14593with the @samp{--srcdir} option to specify where to find the source.
14594(You also need to specify a path to find @code{configure}
14595itself from your working directory. If the path to @code{configure}
14596would be the same as the argument to @samp{--srcdir}, you can leave out
14597the @samp{--srcdir} option; it is assumed.)
14598
5d161b24 14599For example, with version @value{GDBVN}, you can build @value{GDBN} in a
c906108c
SS
14600separate directory for a Sun 4 like this:
14601
14602@example
14603@group
14604cd gdb-@value{GDBVN}
14605mkdir ../gdb-sun4
14606cd ../gdb-sun4
14607../gdb-@value{GDBVN}/configure sun4
14608make
14609@end group
14610@end example
14611
14612When @code{configure} builds a configuration using a remote source
14613directory, it creates a tree for the binaries with the same structure
14614(and using the same names) as the tree under the source directory. In
14615the example, you'd find the Sun 4 library @file{libiberty.a} in the
14616directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
14617@file{gdb-sun4/gdb}.
14618
14619One popular reason to build several @value{GDBN} configurations in separate
5d161b24
DB
14620directories is to configure @value{GDBN} for cross-compiling (where
14621@value{GDBN} runs on one machine---the @dfn{host}---while debugging
14622programs that run on another machine---the @dfn{target}).
c906108c
SS
14623You specify a cross-debugging target by
14624giving the @samp{--target=@var{target}} option to @code{configure}.
14625
14626When you run @code{make} to build a program or library, you must run
14627it in a configured directory---whatever directory you were in when you
14628called @code{configure} (or one of its subdirectories).
14629
14630The @code{Makefile} that @code{configure} generates in each source
14631directory also runs recursively. If you type @code{make} in a source
14632directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
14633directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
14634will build all the required libraries, and then build GDB.
14635
14636When you have multiple hosts or targets configured in separate
14637directories, you can run @code{make} on them in parallel (for example,
14638if they are NFS-mounted on each of the hosts); they will not interfere
14639with each other.
14640
6d2ebf8b 14641@node Config Names
c906108c
SS
14642@section Specifying names for hosts and targets
14643
14644The specifications used for hosts and targets in the @code{configure}
14645script are based on a three-part naming scheme, but some short predefined
14646aliases are also supported. The full naming scheme encodes three pieces
14647of information in the following pattern:
14648
14649@example
14650@var{architecture}-@var{vendor}-@var{os}
14651@end example
14652
14653For example, you can use the alias @code{sun4} as a @var{host} argument,
14654or as the value for @var{target} in a @code{--target=@var{target}}
14655option. The equivalent full name is @samp{sparc-sun-sunos4}.
14656
14657The @code{configure} script accompanying @value{GDBN} does not provide
14658any query facility to list all supported host and target names or
14659aliases. @code{configure} calls the Bourne shell script
14660@code{config.sub} to map abbreviations to full names; you can read the
14661script, if you wish, or you can use it to test your guesses on
14662abbreviations---for example:
14663
14664@smallexample
14665% sh config.sub i386-linux
14666i386-pc-linux-gnu
14667% sh config.sub alpha-linux
14668alpha-unknown-linux-gnu
14669% sh config.sub hp9k700
14670hppa1.1-hp-hpux
14671% sh config.sub sun4
14672sparc-sun-sunos4.1.1
14673% sh config.sub sun3
14674m68k-sun-sunos4.1.1
14675% sh config.sub i986v
14676Invalid configuration `i986v': machine `i986v' not recognized
14677@end smallexample
14678
14679@noindent
14680@code{config.sub} is also distributed in the @value{GDBN} source
14681directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
14682
6d2ebf8b 14683@node Configure Options
c906108c
SS
14684@section @code{configure} options
14685
14686Here is a summary of the @code{configure} options and arguments that
14687are most often useful for building @value{GDBN}. @code{configure} also has
14688several other options not listed here. @inforef{What Configure
14689Does,,configure.info}, for a full explanation of @code{configure}.
14690
14691@example
14692configure @r{[}--help@r{]}
14693 @r{[}--prefix=@var{dir}@r{]}
14694 @r{[}--exec-prefix=@var{dir}@r{]}
14695 @r{[}--srcdir=@var{dirname}@r{]}
14696 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
14697 @r{[}--target=@var{target}@r{]}
14698 @var{host}
14699@end example
14700
14701@noindent
14702You may introduce options with a single @samp{-} rather than
14703@samp{--} if you prefer; but you may abbreviate option names if you use
14704@samp{--}.
14705
14706@table @code
14707@item --help
14708Display a quick summary of how to invoke @code{configure}.
14709
14710@item --prefix=@var{dir}
14711Configure the source to install programs and files under directory
14712@file{@var{dir}}.
14713
14714@item --exec-prefix=@var{dir}
14715Configure the source to install programs under directory
14716@file{@var{dir}}.
14717
14718@c avoid splitting the warning from the explanation:
14719@need 2000
14720@item --srcdir=@var{dirname}
14721@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
14722@code{make} that implements the @code{VPATH} feature.}@*
14723Use this option to make configurations in directories separate from the
14724@value{GDBN} source directories. Among other things, you can use this to
14725build (or maintain) several configurations simultaneously, in separate
14726directories. @code{configure} writes configuration specific files in
14727the current directory, but arranges for them to use the source in the
14728directory @var{dirname}. @code{configure} creates directories under
14729the working directory in parallel to the source directories below
14730@var{dirname}.
14731
14732@item --norecursion
14733Configure only the directory level where @code{configure} is executed; do not
14734propagate configuration to subdirectories.
14735
14736@item --target=@var{target}
14737Configure @value{GDBN} for cross-debugging programs running on the specified
14738@var{target}. Without this option, @value{GDBN} is configured to debug
14739programs that run on the same machine (@var{host}) as @value{GDBN} itself.
14740
14741There is no convenient way to generate a list of all available targets.
14742
14743@item @var{host} @dots{}
14744Configure @value{GDBN} to run on the specified @var{host}.
14745
14746There is no convenient way to generate a list of all available hosts.
14747@end table
14748
14749There are many other options available as well, but they are generally
14750needed for special purposes only.
5d161b24 14751
6d2ebf8b 14752@node Index
c906108c
SS
14753@unnumbered Index
14754
14755@printindex cp
14756
14757@tex
14758% I think something like @colophon should be in texinfo. In the
14759% meantime:
14760\long\def\colophon{\hbox to0pt{}\vfill
14761\centerline{The body of this manual is set in}
14762\centerline{\fontname\tenrm,}
14763\centerline{with headings in {\bf\fontname\tenbf}}
14764\centerline{and examples in {\tt\fontname\tentt}.}
14765\centerline{{\it\fontname\tenit\/},}
14766\centerline{{\bf\fontname\tenbf}, and}
14767\centerline{{\sl\fontname\tensl\/}}
14768\centerline{are used for emphasis.}\vfill}
14769\page\colophon
14770% Blame: doc@cygnus.com, 1991.
14771@end tex
14772
449f3b6c
AC
14773@c TeX can handle the contents at the start but makeinfo 3.12 can not
14774@ifinfo
c906108c 14775@contents
449f3b6c
AC
14776@end ifinfo
14777@ifhtml
14778@contents
14779@end ifhtml
14780
c906108c 14781@bye