]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/doc/gdb.texinfo
2000-03-23 Michael Snyder <msnyder@cleaver.cygnus.com>
[thirdparty/binutils-gdb.git] / gdb / doc / gdb.texinfo
CommitLineData
c906108c
SS
1\input texinfo @c -*-texinfo-*-
2@c Copyright 1988-1999
3@c Free Software Foundation, Inc.
4@c
5@c %**start of header
6@c makeinfo ignores cmds prev to setfilename, so its arg cannot make use
7@c of @set vars. However, you can override filename with makeinfo -o.
8@setfilename gdb.info
9@c
10@include gdb-cfg.texi
11@c
c906108c 12@settitle Debugging with @value{GDBN}
c906108c
SS
13@setchapternewpage odd
14@c %**end of header
15
16@iftex
17@c @smallbook
18@c @cropmarks
19@end iftex
20
21@finalout
22@syncodeindex ky cp
23
24@c readline appendices use @vindex
25@syncodeindex vr cp
26
27@c !!set GDB manual's edition---not the same as GDB version!
28@set EDITION Seventh
29
30@c !!set GDB manual's revision date
31@set DATE February 1999
32
33@c THIS MANUAL REQUIRES TEXINFO-2 macros and info-makers to format properly.
34
c906108c
SS
35@c This is a dir.info fragment to support semi-automated addition of
36@c manuals to an info tree. zoo@cygnus.com is developing this facility.
96a2c332
SS
37@dircategory Programming & development tools.
38@direntry
c906108c 39* Gdb: (gdb). The @sc{gnu} debugger.
96a2c332
SS
40@end direntry
41
c906108c
SS
42@ifinfo
43This file documents the @sc{gnu} debugger @value{GDBN}.
44
45
46This is the @value{EDITION} Edition, @value{DATE},
47of @cite{Debugging with @value{GDBN}: the @sc{gnu} Source-Level Debugger}
48for @value{GDBN} Version @value{GDBVN}.
49
50Copyright (C) 1988-1999 Free Software Foundation, Inc.
51
52Permission is granted to make and distribute verbatim copies of
53this manual provided the copyright notice and this permission notice
54are preserved on all copies.
55
56@ignore
57Permission is granted to process this file through TeX and print the
58results, provided the printed document carries copying permission
59notice identical to this one except for the removal of this paragraph
60(this paragraph not being relevant to the printed manual).
61
62@end ignore
63Permission is granted to copy and distribute modified versions of this
64manual under the conditions for verbatim copying, provided also that the
65entire resulting derived work is distributed under the terms of a
66permission notice identical to this one.
67
68Permission is granted to copy and distribute translations of this manual
69into another language, under the above conditions for modified versions.
70@end ifinfo
71
72@titlepage
73@title Debugging with @value{GDBN}
74@subtitle The @sc{gnu} Source-Level Debugger
c906108c 75@sp 1
c906108c
SS
76@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
77@subtitle @value{DATE}
78@author Richard M. Stallman and Roland H. Pesch
c906108c 79@page
c906108c
SS
80@tex
81{\parskip=0pt
53a5351d 82\hfill (Send bugs and comments on @value{GDBN} to bug-gdb\@gnu.org.)\par
c906108c
SS
83\hfill {\it Debugging with @value{GDBN}}\par
84\hfill \TeX{}info \texinfoversion\par
85}
86@end tex
53a5351d
JM
87
88@c ISBN seems to be wrong...
c906108c
SS
89
90@vskip 0pt plus 1filll
91Copyright @copyright{} 1988-1999 Free Software Foundation, Inc.
92@sp 2
c906108c
SS
93Published by the Free Software Foundation @*
9459 Temple Place - Suite 330, @*
95Boston, MA 02111-1307 USA @*
96Printed copies are available for $20 each. @*
97ISBN 1-882114-11-6 @*
c906108c
SS
98
99Permission is granted to make and distribute verbatim copies of
100this manual provided the copyright notice and this permission notice
101are preserved on all copies.
102
103Permission is granted to copy and distribute modified versions of this
104manual under the conditions for verbatim copying, provided also that the
105entire resulting derived work is distributed under the terms of a
106permission notice identical to this one.
107
108Permission is granted to copy and distribute translations of this manual
109into another language, under the above conditions for modified versions.
110@end titlepage
111@page
112
96a2c332 113@ifnottex
53a5351d 114@node Top
c906108c
SS
115@top Debugging with @value{GDBN}
116
117This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
118
119This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
120@value{GDBVN}.
121
122Copyright (C) 1988-1999 Free Software Foundation, Inc.
123@menu
124* Summary:: Summary of @value{GDBN}
c906108c 125* Sample Session:: A sample @value{GDBN} session
c906108c
SS
126
127* Invocation:: Getting in and out of @value{GDBN}
128* Commands:: @value{GDBN} commands
129* Running:: Running programs under @value{GDBN}
130* Stopping:: Stopping and continuing
131* Stack:: Examining the stack
132* Source:: Examining source files
133* Data:: Examining data
c906108c 134
7a292a7a 135* Languages:: Using @value{GDBN} with different languages
c906108c
SS
136
137* Symbols:: Examining the symbol table
138* Altering:: Altering execution
139* GDB Files:: @value{GDBN} files
140* Targets:: Specifying a debugging target
104c1213 141* Configurations:: Configuration-specific information
c906108c
SS
142* Controlling GDB:: Controlling @value{GDBN}
143* Sequences:: Canned sequences of commands
c906108c 144* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
d700128c 145* Annotations:: @value{GDBN}'s annotations interface.
c906108c
SS
146
147* GDB Bugs:: Reporting bugs in @value{GDBN}
c906108c 148* Formatting Documentation:: How to format and print @value{GDBN} documentation
c906108c
SS
149
150* Command Line Editing:: Command Line Editing
151* Using History Interactively:: Using History Interactively
152* Installing GDB:: Installing GDB
153* Index:: Index
c906108c
SS
154@end menu
155
96a2c332 156@end ifnottex
c906108c 157
53a5351d 158@node Summary
c906108c
SS
159@unnumbered Summary of @value{GDBN}
160
161The purpose of a debugger such as @value{GDBN} is to allow you to see what is
162going on ``inside'' another program while it executes---or what another
163program was doing at the moment it crashed.
164
165@value{GDBN} can do four main kinds of things (plus other things in support of
166these) to help you catch bugs in the act:
167
168@itemize @bullet
169@item
170Start your program, specifying anything that might affect its behavior.
171
172@item
173Make your program stop on specified conditions.
174
175@item
176Examine what has happened, when your program has stopped.
177
178@item
179Change things in your program, so you can experiment with correcting the
180effects of one bug and go on to learn about another.
181@end itemize
182
cce74817 183You can use @value{GDBN} to debug programs written in C and C++.
c906108c 184For more information, see @ref{Support,,Supported languages}.
c906108c
SS
185For more information, see @ref{C,,C and C++}.
186
cce74817
JM
187@cindex Chill
188@cindex Modula-2
c906108c 189Support for Modula-2 and Chill is partial. For information on Modula-2,
cce74817 190see @ref{Modula-2,,Modula-2}. For information on Chill, see @ref{Chill}.
c906108c 191
cce74817
JM
192@cindex Pascal
193Debugging Pascal programs which use sets, subranges, file variables, or
194nested functions does not currently work. @value{GDBN} does not support
195entering expressions, printing values, or similar features using Pascal
196syntax.
c906108c 197
c906108c
SS
198@cindex Fortran
199@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 200it may be necessary to refer to some variables with a trailing
cce74817 201underscore.
c906108c 202
c906108c
SS
203@menu
204* Free Software:: Freely redistributable software
205* Contributors:: Contributors to GDB
206@end menu
207
53a5351d 208@node Free Software
c906108c
SS
209@unnumberedsec Free software
210
211@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
212General Public License
213(GPL). The GPL gives you the freedom to copy or adapt a licensed
214program---but every person getting a copy also gets with it the
215freedom to modify that copy (which means that they must get access to
216the source code), and the freedom to distribute further copies.
217Typical software companies use copyrights to limit your freedoms; the
218Free Software Foundation uses the GPL to preserve these freedoms.
219
220Fundamentally, the General Public License is a license which says that
221you have these freedoms and that you cannot take these freedoms away
222from anyone else.
223
53a5351d 224@node Contributors
96a2c332
SS
225@unnumberedsec Contributors to @value{GDBN}
226
227Richard Stallman was the original author of @value{GDBN}, and of many
228other @sc{gnu} programs. Many others have contributed to its
229development. This section attempts to credit major contributors. One
230of the virtues of free software is that everyone is free to contribute
231to it; with regret, we cannot actually acknowledge everyone here. The
232file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
233blow-by-blow account.
234
235Changes much prior to version 2.0 are lost in the mists of time.
236
237@quotation
238@emph{Plea:} Additions to this section are particularly welcome. If you
239or your friends (or enemies, to be evenhanded) have been unfairly
240omitted from this list, we would like to add your names!
241@end quotation
242
243So that they may not regard their many labors as thankless, we
244particularly thank those who shepherded @value{GDBN} through major
245releases:
246Jim Blandy (release 4.18);
247Jason Molenda (release 4.17);
248Stan Shebs (release 4.14);
249Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
250Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
251John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
252Jim Kingdon (releases 3.5, 3.4, and 3.3);
253and Randy Smith (releases 3.2, 3.1, and 3.0).
254
255Richard Stallman, assisted at various times by Peter TerMaat, Chris
256Hanson, and Richard Mlynarik, handled releases through 2.8.
257
96a2c332
SS
258Michael Tiemann is the author of most of the @sc{gnu} C++ support in
259@value{GDBN}, with significant additional contributions from Per
260Bothner. James Clark wrote the @sc{gnu} C++ demangler. Early work on
261C++ was by Peter TerMaat (who also did much general update work leading
262to release 3.0).
c906108c
SS
263
264@value{GDBN} 4 uses the BFD subroutine library to examine multiple
265object-file formats; BFD was a joint project of David V.
266Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
267
268David Johnson wrote the original COFF support; Pace Willison did
269the original support for encapsulated COFF.
270
271Brent Benson of Harris Computer Systems contributed DWARF 2 support.
272
273Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
274Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
275support.
276Jean-Daniel Fekete contributed Sun 386i support.
277Chris Hanson improved the HP9000 support.
278Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
279David Johnson contributed Encore Umax support.
280Jyrki Kuoppala contributed Altos 3068 support.
281Jeff Law contributed HP PA and SOM support.
282Keith Packard contributed NS32K support.
283Doug Rabson contributed Acorn Risc Machine support.
284Bob Rusk contributed Harris Nighthawk CX-UX support.
285Chris Smith contributed Convex support (and Fortran debugging).
286Jonathan Stone contributed Pyramid support.
287Michael Tiemann contributed SPARC support.
288Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
289Pace Willison contributed Intel 386 support.
290Jay Vosburgh contributed Symmetry support.
291
292Andreas Schwab contributed M68K Linux support.
293
294Rich Schaefer and Peter Schauer helped with support of SunOS shared
295libraries.
296
297Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
298about several machine instruction sets.
299
300Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
301remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
302contributed remote debugging modules for the i960, VxWorks, A29K UDI,
303and RDI targets, respectively.
304
305Brian Fox is the author of the readline libraries providing
306command-line editing and command history.
307
7a292a7a
SS
308Andrew Beers of SUNY Buffalo wrote the language-switching code, the
309Modula-2 support, and contributed the Languages chapter of this manual.
c906108c
SS
310
311Fred Fish wrote most of the support for Unix System Vr4.
c906108c
SS
312He also enhanced the command-completion support to cover C++ overloaded
313symbols.
c906108c
SS
314
315Hitachi America, Ltd. sponsored the support for H8/300, H8/500, and
316Super-H processors.
317
318NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
319
320Mitsubishi sponsored the support for D10V, D30V, and M32R/D processors.
321
322Toshiba sponsored the support for the TX39 Mips processor.
323
324Matsushita sponsored the support for the MN10200 and MN10300 processors.
325
96a2c332 326Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
327
328Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
329watchpoints.
330
331Michael Snyder added support for tracepoints.
332
333Stu Grossman wrote gdbserver.
334
335Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 336nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
337
338The following people at the Hewlett-Packard Company contributed
339support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
340(narrow mode), HP's implementation of kernel threads, HP's aC++
341compiler, and the terminal user interface: Ben Krepp, Richard Title,
342John Bishop, Susan Macchia, Kathy Mann, Satish Pai, India Paul, Steve
343Rehrauer, and Elena Zannoni. Kim Haase provided HP-specific
344information in this manual.
345
96a2c332
SS
346Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
347development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
348fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
349Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
350Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
351Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
352Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
353addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
354JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
355Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
356Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
357Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
358Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
359Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
360Zuhn have made contributions both large and small.
c906108c
SS
361
362
53a5351d 363@node Sample Session
c906108c
SS
364@chapter A Sample @value{GDBN} Session
365
366You can use this manual at your leisure to read all about @value{GDBN}.
367However, a handful of commands are enough to get started using the
368debugger. This chapter illustrates those commands.
369
370@iftex
371In this sample session, we emphasize user input like this: @b{input},
372to make it easier to pick out from the surrounding output.
373@end iftex
374
375@c FIXME: this example may not be appropriate for some configs, where
376@c FIXME...primary interest is in remote use.
377
378One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
379processor) exhibits the following bug: sometimes, when we change its
380quote strings from the default, the commands used to capture one macro
381definition within another stop working. In the following short @code{m4}
382session, we define a macro @code{foo} which expands to @code{0000}; we
383then use the @code{m4} built-in @code{defn} to define @code{bar} as the
384same thing. However, when we change the open quote string to
385@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
386procedure fails to define a new synonym @code{baz}:
387
388@smallexample
389$ @b{cd gnu/m4}
390$ @b{./m4}
391@b{define(foo,0000)}
392
393@b{foo}
3940000
395@b{define(bar,defn(`foo'))}
396
397@b{bar}
3980000
399@b{changequote(<QUOTE>,<UNQUOTE>)}
400
401@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
402@b{baz}
403@b{C-d}
404m4: End of input: 0: fatal error: EOF in string
405@end smallexample
406
407@noindent
408Let us use @value{GDBN} to try to see what is going on.
409
c906108c
SS
410@smallexample
411$ @b{@value{GDBP} m4}
412@c FIXME: this falsifies the exact text played out, to permit smallbook
413@c FIXME... format to come out better.
414@value{GDBN} is free software and you are welcome to distribute copies
415 of it under certain conditions; type "show copying" to see
416 the conditions.
417There is absolutely no warranty for @value{GDBN}; type "show warranty"
418 for details.
419
420@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
421(@value{GDBP})
422@end smallexample
c906108c
SS
423
424@noindent
425@value{GDBN} reads only enough symbol data to know where to find the
426rest when needed; as a result, the first prompt comes up very quickly.
427We now tell @value{GDBN} to use a narrower display width than usual, so
428that examples fit in this manual.
429
430@smallexample
431(@value{GDBP}) @b{set width 70}
432@end smallexample
433
434@noindent
435We need to see how the @code{m4} built-in @code{changequote} works.
436Having looked at the source, we know the relevant subroutine is
437@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
438@code{break} command.
439
440@smallexample
441(@value{GDBP}) @b{break m4_changequote}
442Breakpoint 1 at 0x62f4: file builtin.c, line 879.
443@end smallexample
444
445@noindent
446Using the @code{run} command, we start @code{m4} running under @value{GDBN}
447control; as long as control does not reach the @code{m4_changequote}
448subroutine, the program runs as usual:
449
450@smallexample
451(@value{GDBP}) @b{run}
452Starting program: /work/Editorial/gdb/gnu/m4/m4
453@b{define(foo,0000)}
454
455@b{foo}
4560000
457@end smallexample
458
459@noindent
460To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
461suspends execution of @code{m4}, displaying information about the
462context where it stops.
463
464@smallexample
465@b{changequote(<QUOTE>,<UNQUOTE>)}
466
467Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
468 at builtin.c:879
469879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
470@end smallexample
471
472@noindent
473Now we use the command @code{n} (@code{next}) to advance execution to
474the next line of the current function.
475
476@smallexample
477(@value{GDBP}) @b{n}
478882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
479 : nil,
480@end smallexample
481
482@noindent
483@code{set_quotes} looks like a promising subroutine. We can go into it
484by using the command @code{s} (@code{step}) instead of @code{next}.
485@code{step} goes to the next line to be executed in @emph{any}
486subroutine, so it steps into @code{set_quotes}.
487
488@smallexample
489(@value{GDBP}) @b{s}
490set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
491 at input.c:530
492530 if (lquote != def_lquote)
493@end smallexample
494
495@noindent
496The display that shows the subroutine where @code{m4} is now
497suspended (and its arguments) is called a stack frame display. It
498shows a summary of the stack. We can use the @code{backtrace}
499command (which can also be spelled @code{bt}), to see where we are
500in the stack as a whole: the @code{backtrace} command displays a
501stack frame for each active subroutine.
502
503@smallexample
504(@value{GDBP}) @b{bt}
505#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
506 at input.c:530
507#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
508 at builtin.c:882
509#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
510#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
511 at macro.c:71
512#4 0x79dc in expand_input () at macro.c:40
513#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
514@end smallexample
515
516@noindent
517We step through a few more lines to see what happens. The first two
518times, we can use @samp{s}; the next two times we use @code{n} to avoid
519falling into the @code{xstrdup} subroutine.
520
521@smallexample
522(@value{GDBP}) @b{s}
5230x3b5c 532 if (rquote != def_rquote)
524(@value{GDBP}) @b{s}
5250x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
526def_lquote : xstrdup(lq);
527(@value{GDBP}) @b{n}
528536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
529 : xstrdup(rq);
530(@value{GDBP}) @b{n}
531538 len_lquote = strlen(rquote);
532@end smallexample
533
534@noindent
535The last line displayed looks a little odd; we can examine the variables
536@code{lquote} and @code{rquote} to see if they are in fact the new left
537and right quotes we specified. We use the command @code{p}
538(@code{print}) to see their values.
539
540@smallexample
541(@value{GDBP}) @b{p lquote}
542$1 = 0x35d40 "<QUOTE>"
543(@value{GDBP}) @b{p rquote}
544$2 = 0x35d50 "<UNQUOTE>"
545@end smallexample
546
547@noindent
548@code{lquote} and @code{rquote} are indeed the new left and right quotes.
549To look at some context, we can display ten lines of source
550surrounding the current line with the @code{l} (@code{list}) command.
551
552@smallexample
553(@value{GDBP}) @b{l}
554533 xfree(rquote);
555534
556535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
557 : xstrdup (lq);
558536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
559 : xstrdup (rq);
560537
561538 len_lquote = strlen(rquote);
562539 len_rquote = strlen(lquote);
563540 @}
564541
565542 void
566@end smallexample
567
568@noindent
569Let us step past the two lines that set @code{len_lquote} and
570@code{len_rquote}, and then examine the values of those variables.
571
572@smallexample
573(@value{GDBP}) @b{n}
574539 len_rquote = strlen(lquote);
575(@value{GDBP}) @b{n}
576540 @}
577(@value{GDBP}) @b{p len_lquote}
578$3 = 9
579(@value{GDBP}) @b{p len_rquote}
580$4 = 7
581@end smallexample
582
583@noindent
584That certainly looks wrong, assuming @code{len_lquote} and
585@code{len_rquote} are meant to be the lengths of @code{lquote} and
586@code{rquote} respectively. We can set them to better values using
587the @code{p} command, since it can print the value of
588any expression---and that expression can include subroutine calls and
589assignments.
590
591@smallexample
592(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
593$5 = 7
594(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
595$6 = 9
596@end smallexample
597
598@noindent
599Is that enough to fix the problem of using the new quotes with the
600@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
601executing with the @code{c} (@code{continue}) command, and then try the
602example that caused trouble initially:
603
604@smallexample
605(@value{GDBP}) @b{c}
606Continuing.
607
608@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
609
610baz
6110000
612@end smallexample
613
614@noindent
615Success! The new quotes now work just as well as the default ones. The
616problem seems to have been just the two typos defining the wrong
617lengths. We allow @code{m4} exit by giving it an EOF as input:
618
619@smallexample
620@b{C-d}
621Program exited normally.
622@end smallexample
623
624@noindent
625The message @samp{Program exited normally.} is from @value{GDBN}; it
626indicates @code{m4} has finished executing. We can end our @value{GDBN}
627session with the @value{GDBN} @code{quit} command.
628
629@smallexample
630(@value{GDBP}) @b{quit}
631@end smallexample
c906108c 632
53a5351d 633@node Invocation
c906108c
SS
634@chapter Getting In and Out of @value{GDBN}
635
636This chapter discusses how to start @value{GDBN}, and how to get out of it.
637The essentials are:
638@itemize @bullet
639@item
53a5351d 640type @samp{@value{GDBP}} to start @value{GDBN}.
c906108c
SS
641@item
642type @kbd{quit} or @kbd{C-d} to exit.
643@end itemize
644
645@menu
646* Invoking GDB:: How to start @value{GDBN}
647* Quitting GDB:: How to quit @value{GDBN}
648* Shell Commands:: How to use shell commands inside @value{GDBN}
649@end menu
650
53a5351d 651@node Invoking GDB
c906108c
SS
652@section Invoking @value{GDBN}
653
c906108c
SS
654Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
655@value{GDBN} reads commands from the terminal until you tell it to exit.
656
657You can also run @code{@value{GDBP}} with a variety of arguments and options,
658to specify more of your debugging environment at the outset.
659
c906108c
SS
660The command-line options described here are designed
661to cover a variety of situations; in some environments, some of these
662options may effectively be unavailable.
c906108c
SS
663
664The most usual way to start @value{GDBN} is with one argument,
665specifying an executable program:
666
667@example
668@value{GDBP} @var{program}
669@end example
670
c906108c
SS
671@noindent
672You can also start with both an executable program and a core file
673specified:
674
675@example
676@value{GDBP} @var{program} @var{core}
677@end example
678
679You can, instead, specify a process ID as a second argument, if you want
680to debug a running process:
681
682@example
683@value{GDBP} @var{program} 1234
684@end example
685
686@noindent
687would attach @value{GDBN} to process @code{1234} (unless you also have a file
688named @file{1234}; @value{GDBN} does check for a core file first).
689
c906108c 690Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
691complete operating system; when you use @value{GDBN} as a remote
692debugger attached to a bare board, there may not be any notion of
693``process'', and there is often no way to get a core dump. @value{GDBN}
694will warn you if it is unable to attach or to read core dumps.
c906108c 695
96a2c332 696You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
697@value{GDBN}'s non-warranty, by specifying @code{-silent}:
698
699@smallexample
700@value{GDBP} -silent
701@end smallexample
702
703@noindent
704You can further control how @value{GDBN} starts up by using command-line
705options. @value{GDBN} itself can remind you of the options available.
706
707@noindent
708Type
709
710@example
711@value{GDBP} -help
712@end example
713
714@noindent
715to display all available options and briefly describe their use
716(@samp{@value{GDBP} -h} is a shorter equivalent).
717
718All options and command line arguments you give are processed
719in sequential order. The order makes a difference when the
720@samp{-x} option is used.
721
722
723@menu
c906108c
SS
724* File Options:: Choosing files
725* Mode Options:: Choosing modes
726@end menu
727
c906108c
SS
728@node File Options
729@subsection Choosing files
730
2df3850c 731When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
732specifying an executable file and core file (or process ID). This is
733the same as if the arguments were specified by the @samp{-se} and
734@samp{-c} options respectively. (@value{GDBN} reads the first argument
735that does not have an associated option flag as equivalent to the
736@samp{-se} option followed by that argument; and the second argument
737that does not have an associated option flag, if any, as equivalent to
738the @samp{-c} option followed by that argument.)
7a292a7a
SS
739
740If @value{GDBN} has not been configured to included core file support,
741such as for most embedded targets, then it will complain about a second
742argument and ignore it.
c906108c
SS
743
744Many options have both long and short forms; both are shown in the
745following list. @value{GDBN} also recognizes the long forms if you truncate
746them, so long as enough of the option is present to be unambiguous.
747(If you prefer, you can flag option arguments with @samp{--} rather
748than @samp{-}, though we illustrate the more usual convention.)
749
d700128c
EZ
750@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
751@c way, both those who look for -foo and --foo in the index, will find
752@c it.
753
c906108c
SS
754@table @code
755@item -symbols @var{file}
756@itemx -s @var{file}
d700128c
EZ
757@cindex @code{--symbols}
758@cindex @code{-s}
c906108c
SS
759Read symbol table from file @var{file}.
760
761@item -exec @var{file}
762@itemx -e @var{file}
d700128c
EZ
763@cindex @code{--exec}
764@cindex @code{-e}
7a292a7a
SS
765Use file @var{file} as the executable file to execute when appropriate,
766and for examining pure data in conjunction with a core dump.
c906108c
SS
767
768@item -se @var{file}
d700128c 769@cindex @code{--se}
c906108c
SS
770Read symbol table from file @var{file} and use it as the executable
771file.
772
c906108c
SS
773@item -core @var{file}
774@itemx -c @var{file}
d700128c
EZ
775@cindex @code{--core}
776@cindex @code{-c}
c906108c
SS
777Use file @var{file} as a core dump to examine.
778
779@item -c @var{number}
780Connect to process ID @var{number}, as with the @code{attach} command
781(unless there is a file in core-dump format named @var{number}, in which
782case @samp{-c} specifies that file as a core dump to read).
c906108c
SS
783
784@item -command @var{file}
785@itemx -x @var{file}
d700128c
EZ
786@cindex @code{--command}
787@cindex @code{-x}
c906108c
SS
788Execute @value{GDBN} commands from file @var{file}. @xref{Command
789Files,, Command files}.
790
791@item -directory @var{directory}
792@itemx -d @var{directory}
d700128c
EZ
793@cindex @code{--directory}
794@cindex @code{-d}
c906108c
SS
795Add @var{directory} to the path to search for source files.
796
c906108c
SS
797@item -m
798@itemx -mapped
d700128c
EZ
799@cindex @code{--mapped}
800@cindex @code{-m}
c906108c
SS
801@emph{Warning: this option depends on operating system facilities that are not
802supported on all systems.}@*
803If memory-mapped files are available on your system through the @code{mmap}
804system call, you can use this option
805to have @value{GDBN} write the symbols from your
806program into a reusable file in the current directory. If the program you are debugging is
96a2c332 807called @file{/tmp/fred}, the mapped symbol file is @file{/tmp/fred.syms}.
c906108c
SS
808Future @value{GDBN} debugging sessions notice the presence of this file,
809and can quickly map in symbol information from it, rather than reading
810the symbol table from the executable program.
811
812The @file{.syms} file is specific to the host machine where @value{GDBN}
813is run. It holds an exact image of the internal @value{GDBN} symbol
814table. It cannot be shared across multiple host platforms.
c906108c 815
c906108c
SS
816@item -r
817@itemx -readnow
d700128c
EZ
818@cindex @code{--readnow}
819@cindex @code{-r}
c906108c
SS
820Read each symbol file's entire symbol table immediately, rather than
821the default, which is to read it incrementally as it is needed.
822This makes startup slower, but makes future operations faster.
53a5351d 823
c906108c
SS
824@end table
825
2df3850c 826You typically combine the @code{-mapped} and @code{-readnow} options in
c906108c 827order to build a @file{.syms} file that contains complete symbol
2df3850c
JM
828information. (@xref{Files,,Commands to specify files}, for information
829on @file{.syms} files.) A simple @value{GDBN} invocation to do nothing
830but build a @file{.syms} file for future use is:
c906108c
SS
831
832@example
2df3850c 833gdb -batch -nx -mapped -readnow programname
c906108c 834@end example
c906108c 835
53a5351d 836@node Mode Options
c906108c
SS
837@subsection Choosing modes
838
839You can run @value{GDBN} in various alternative modes---for example, in
840batch mode or quiet mode.
841
842@table @code
843@item -nx
844@itemx -n
d700128c
EZ
845@cindex @code{--nx}
846@cindex @code{-n}
2df3850c
JM
847Do not execute commands found in any initialization files (normally
848called @file{.gdbinit}, or @file{gdb.ini} on PCs). Normally,
849@value{GDBN} executes the commands in these files after all the command
850options and arguments have been processed. @xref{Command Files,,Command
851files}.
c906108c
SS
852
853@item -quiet
d700128c 854@itemx -silent
c906108c 855@itemx -q
d700128c
EZ
856@cindex @code{--quiet}
857@cindex @code{--silent}
858@cindex @code{-q}
c906108c
SS
859``Quiet''. Do not print the introductory and copyright messages. These
860messages are also suppressed in batch mode.
861
862@item -batch
d700128c 863@cindex @code{--batch}
c906108c
SS
864Run in batch mode. Exit with status @code{0} after processing all the
865command files specified with @samp{-x} (and all commands from
866initialization files, if not inhibited with @samp{-n}). Exit with
867nonzero status if an error occurs in executing the @value{GDBN} commands
868in the command files.
869
2df3850c
JM
870Batch mode may be useful for running @value{GDBN} as a filter, for
871example to download and run a program on another computer; in order to
872make this more useful, the message
c906108c
SS
873
874@example
875Program exited normally.
876@end example
877
878@noindent
2df3850c
JM
879(which is ordinarily issued whenever a program running under
880@value{GDBN} control terminates) is not issued when running in batch
881mode.
882
883@item -nowindows
884@itemx -nw
d700128c
EZ
885@cindex @code{--nowindows}
886@cindex @code{-nw}
2df3850c 887``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 888(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
889interface. If no GUI is available, this option has no effect.
890
891@item -windows
892@itemx -w
d700128c
EZ
893@cindex @code{--windows}
894@cindex @code{-w}
2df3850c
JM
895If @value{GDBN} includes a GUI, then this option requires it to be
896used if possible.
c906108c
SS
897
898@item -cd @var{directory}
d700128c 899@cindex @code{--cd}
c906108c
SS
900Run @value{GDBN} using @var{directory} as its working directory,
901instead of the current directory.
902
c906108c
SS
903@item -fullname
904@itemx -f
d700128c
EZ
905@cindex @code{--fullname}
906@cindex @code{-f}
7a292a7a
SS
907@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
908subprocess. It tells @value{GDBN} to output the full file name and line
909number in a standard, recognizable fashion each time a stack frame is
910displayed (which includes each time your program stops). This
911recognizable format looks like two @samp{\032} characters, followed by
912the file name, line number and character position separated by colons,
913and a newline. The Emacs-to-@value{GDBN} interface program uses the two
914@samp{\032} characters as a signal to display the source code for the
915frame.
c906108c 916
d700128c
EZ
917@item -epoch
918@cindex @code{--epoch}
919The Epoch Emacs-@value{GDBN} interface sets this option when it runs
920@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
921routines so as to allow Epoch to display values of expressions in a
922separate window.
923
924@item -annotate @var{level}
925@cindex @code{--annotate}
926This option sets the @dfn{annotation level} inside @value{GDBN}. Its
927effect is identical to using @samp{set annotate @var{level}}
928(@pxref{Annotations}).
929Annotation level controls how much information does @value{GDBN} print
930together with its prompt, values of expressions, source lines, and other
931types of output. Level 0 is the normal, level 1 is for use when
932@value{GDBN} is run as a subprocess of @sc{gnu} Emacs, level 2 is the
933maximum annotation suitable for programs that control @value{GDBN}.
934
935@item -async
936@cindex @code{--async}
937Use the asynchronous event loop for the command-line interface.
938@value{GDBN} processes all events, such as user keyboard input, via a
939special event loop. This allows @value{GDBN} to accept and process user
940commands in parallel with the debugged process being
941run@footnote{@value{GDBN} built with @sc{djgpp} tools for
942MS-DOS/MS-Windows supports this mode of operation, but the event loop is
943suspended when the debuggee runs.}, so you don't need to wait for
944control to return to @value{GDBN} before you type the next command.
945(@emph{Note:} as of version 5.0, the target side of the asynchronous
946operation is not yet in place, so @samp{-async} does not work fully
947yet.)
948@c FIXME: when the target side of the event loop is done, the above NOTE
949@c should be removed.
950
951When the standard input is connected to a terminal device, @value{GDBN}
952uses the asynchronous event loop by default, unless disabled by the
953@samp{-noasync} option.
954
955@item -noasync
956@cindex @code{--noasync}
957Disable the asynchronous event loop for the command-line interface.
958
2df3850c
JM
959@item -baud @var{bps}
960@itemx -b @var{bps}
d700128c
EZ
961@cindex @code{--baud}
962@cindex @code{-b}
c906108c
SS
963Set the line speed (baud rate or bits per second) of any serial
964interface used by @value{GDBN} for remote debugging.
c906108c
SS
965
966@item -tty @var{device}
d700128c
EZ
967@itemx -t @var{device}
968@cindex @code{--tty}
969@cindex @code{-t}
c906108c
SS
970Run using @var{device} for your program's standard input and output.
971@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 972
53a5351d
JM
973@c resolve the situation of these eventually
974@c @item -tui
d700128c 975@c @cindex @code{--tui}
53a5351d
JM
976@c Use a Terminal User Interface. For information, use your Web browser to
977@c read the file @file{TUI.html}, which is usually installed in the
978@c directory @code{/opt/langtools/wdb/doc} on HP-UX systems. Do not use
979@c this option if you run @value{GDBN} from Emacs (see @pxref{Emacs, ,Using
980@c @value{GDBN} under @sc{gnu} Emacs}).
981
982@c @item -xdb
d700128c 983@c @cindex @code{--xdb}
53a5351d
JM
984@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
985@c For information, see the file @file{xdb_trans.html}, which is usually
986@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
987@c systems.
988
d700128c
EZ
989@item -interpreter @var{interp}
990@cindex @code{--interpreter}
991Use the interpreter @var{interp} for interface with the controlling
992program or device. This option is meant to be set by programs which
993communicate with @value{GDBN} using it as a back end. For example,
994@samp{--interpreter=mi} causes @value{GDBN} to use the @dfn{gdbmi
995interface}.
996@c FIXME: There should be an @xref here to the GDB/MI docs, but
997@c gdbmi.texi doesn't have a single node to reference!
998
999@item -write
1000@cindex @code{--write}
1001Open the executable and core files for both reading and writing. This
1002is equivalent to the @samp{set write on} command inside @value{GDBN}
1003(@pxref{Patching}).
1004
1005@item -statistics
1006@cindex @code{--statistics}
1007This option causes @value{GDBN} to print statistics about time and
1008memory usage after it completes each command and returns to the prompt.
1009
1010@item -version
1011@cindex @code{--version}
1012This option causes @value{GDBN} to print its version number and
1013no-warranty blurb, and exit.
1014
c906108c
SS
1015@end table
1016
53a5351d 1017@node Quitting GDB
c906108c
SS
1018@section Quitting @value{GDBN}
1019@cindex exiting @value{GDBN}
1020@cindex leaving @value{GDBN}
1021
1022@table @code
1023@kindex quit @r{[}@var{expression}@r{]}
1024@kindex q
96a2c332
SS
1025@item quit @r{[}@var{expression}@r{]}
1026@itemx q
1027To exit @value{GDBN}, use the @code{quit} command (abbreviated
1028@code{q}), or type an end-of-file character (usually @kbd{C-d}). If you
1029do not supply @var{expression}, @value{GDBN} will terminate normally;
1030otherwise it will terminate using the result of @var{expression} as the
1031error code.
c906108c
SS
1032@end table
1033
1034@cindex interrupt
1035An interrupt (often @kbd{C-c}) does not exit from @value{GDBN}, but rather
1036terminates the action of any @value{GDBN} command that is in progress and
1037returns to @value{GDBN} command level. It is safe to type the interrupt
1038character at any time because @value{GDBN} does not allow it to take effect
1039until a time when it is safe.
1040
c906108c
SS
1041If you have been using @value{GDBN} to control an attached process or
1042device, you can release it with the @code{detach} command
1043(@pxref{Attach, ,Debugging an already-running process}).
c906108c 1044
53a5351d 1045@node Shell Commands
c906108c
SS
1046@section Shell commands
1047
1048If you need to execute occasional shell commands during your
1049debugging session, there is no need to leave or suspend @value{GDBN}; you can
1050just use the @code{shell} command.
1051
1052@table @code
1053@kindex shell
1054@cindex shell escape
1055@item shell @var{command string}
1056Invoke a standard shell to execute @var{command string}.
c906108c 1057If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1058shell to run. Otherwise @value{GDBN} uses the default shell
1059(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1060@end table
1061
1062The utility @code{make} is often needed in development environments.
1063You do not have to use the @code{shell} command for this purpose in
1064@value{GDBN}:
1065
1066@table @code
1067@kindex make
1068@cindex calling make
1069@item make @var{make-args}
1070Execute the @code{make} program with the specified
1071arguments. This is equivalent to @samp{shell make @var{make-args}}.
1072@end table
1073
53a5351d 1074@node Commands
c906108c
SS
1075@chapter @value{GDBN} Commands
1076
1077You can abbreviate a @value{GDBN} command to the first few letters of the command
1078name, if that abbreviation is unambiguous; and you can repeat certain
1079@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1080key to get @value{GDBN} to fill out the rest of a word in a command (or to
1081show you the alternatives available, if there is more than one possibility).
1082
1083@menu
1084* Command Syntax:: How to give commands to @value{GDBN}
1085* Completion:: Command completion
1086* Help:: How to ask @value{GDBN} for help
1087@end menu
1088
53a5351d 1089@node Command Syntax
c906108c
SS
1090@section Command syntax
1091
1092A @value{GDBN} command is a single line of input. There is no limit on
1093how long it can be. It starts with a command name, which is followed by
1094arguments whose meaning depends on the command name. For example, the
1095command @code{step} accepts an argument which is the number of times to
1096step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1097with no arguments. Some commands do not allow any arguments.
c906108c
SS
1098
1099@cindex abbreviation
1100@value{GDBN} command names may always be truncated if that abbreviation is
1101unambiguous. Other possible command abbreviations are listed in the
1102documentation for individual commands. In some cases, even ambiguous
1103abbreviations are allowed; for example, @code{s} is specially defined as
1104equivalent to @code{step} even though there are other commands whose
1105names start with @code{s}. You can test abbreviations by using them as
1106arguments to the @code{help} command.
1107
1108@cindex repeating commands
1109@kindex RET
1110A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1111repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1112will not repeat this way; these are commands whose unintentional
1113repetition might cause trouble and which you are unlikely to want to
1114repeat.
1115
1116The @code{list} and @code{x} commands, when you repeat them with
1117@key{RET}, construct new arguments rather than repeating
1118exactly as typed. This permits easy scanning of source or memory.
1119
1120@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1121output, in a way similar to the common utility @code{more}
1122(@pxref{Screen Size,,Screen size}). Since it is easy to press one
1123@key{RET} too many in this situation, @value{GDBN} disables command
1124repetition after any command that generates this sort of display.
1125
1126@kindex #
1127@cindex comment
1128Any text from a @kbd{#} to the end of the line is a comment; it does
1129nothing. This is useful mainly in command files (@pxref{Command
1130Files,,Command files}).
1131
53a5351d 1132@node Completion
c906108c
SS
1133@section Command completion
1134
1135@cindex completion
1136@cindex word completion
1137@value{GDBN} can fill in the rest of a word in a command for you, if there is
1138only one possibility; it can also show you what the valid possibilities
1139are for the next word in a command, at any time. This works for @value{GDBN}
1140commands, @value{GDBN} subcommands, and the names of symbols in your program.
1141
1142Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1143of a word. If there is only one possibility, @value{GDBN} fills in the
1144word, and waits for you to finish the command (or press @key{RET} to
1145enter it). For example, if you type
1146
1147@c FIXME "@key" does not distinguish its argument sufficiently to permit
1148@c complete accuracy in these examples; space introduced for clarity.
1149@c If texinfo enhancements make it unnecessary, it would be nice to
1150@c replace " @key" by "@key" in the following...
1151@example
1152(@value{GDBP}) info bre @key{TAB}
1153@end example
1154
1155@noindent
1156@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1157the only @code{info} subcommand beginning with @samp{bre}:
1158
1159@example
1160(@value{GDBP}) info breakpoints
1161@end example
1162
1163@noindent
1164You can either press @key{RET} at this point, to run the @code{info
1165breakpoints} command, or backspace and enter something else, if
1166@samp{breakpoints} does not look like the command you expected. (If you
1167were sure you wanted @code{info breakpoints} in the first place, you
1168might as well just type @key{RET} immediately after @samp{info bre},
1169to exploit command abbreviations rather than command completion).
1170
1171If there is more than one possibility for the next word when you press
1172@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1173characters and try again, or just press @key{TAB} a second time;
1174@value{GDBN} displays all the possible completions for that word. For
1175example, you might want to set a breakpoint on a subroutine whose name
1176begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1177just sounds the bell. Typing @key{TAB} again displays all the
1178function names in your program that begin with those characters, for
1179example:
1180
1181@example
1182(@value{GDBP}) b make_ @key{TAB}
1183@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
1184make_a_section_from_file make_environ
1185make_abs_section make_function_type
1186make_blockvector make_pointer_type
1187make_cleanup make_reference_type
1188make_command make_symbol_completion_list
1189(@value{GDBP}) b make_
1190@end example
1191
1192@noindent
1193After displaying the available possibilities, @value{GDBN} copies your
1194partial input (@samp{b make_} in the example) so you can finish the
1195command.
1196
1197If you just want to see the list of alternatives in the first place, you
1198can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1199means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1200key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1201one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1202
1203@cindex quotes in commands
1204@cindex completion of quoted strings
1205Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1206parentheses or other characters that @value{GDBN} normally excludes from
1207its notion of a word. To permit word completion to work in this
1208situation, you may enclose words in @code{'} (single quote marks) in
1209@value{GDBN} commands.
c906108c 1210
c906108c
SS
1211The most likely situation where you might need this is in typing the
1212name of a C++ function. This is because C++ allows function overloading
1213(multiple definitions of the same function, distinguished by argument
1214type). For example, when you want to set a breakpoint you may need to
1215distinguish whether you mean the version of @code{name} that takes an
1216@code{int} parameter, @code{name(int)}, or the version that takes a
1217@code{float} parameter, @code{name(float)}. To use the word-completion
1218facilities in this situation, type a single quote @code{'} at the
1219beginning of the function name. This alerts @value{GDBN} that it may need to
1220consider more information than usual when you press @key{TAB} or
1221@kbd{M-?} to request word completion:
1222
1223@example
96a2c332 1224(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1225bubble(double,double) bubble(int,int)
1226(@value{GDBP}) b 'bubble(
1227@end example
1228
1229In some cases, @value{GDBN} can tell that completing a name requires using
1230quotes. When this happens, @value{GDBN} inserts the quote for you (while
1231completing as much as it can) if you do not type the quote in the first
1232place:
1233
1234@example
1235(@value{GDBP}) b bub @key{TAB}
1236@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1237(@value{GDBP}) b 'bubble(
1238@end example
1239
1240@noindent
1241In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1242you have not yet started typing the argument list when you ask for
1243completion on an overloaded symbol.
1244
d4f3574e 1245For more information about overloaded functions, see @ref{C plus plus
c906108c
SS
1246expressions, ,C++ expressions}. You can use the command @code{set
1247overload-resolution off} to disable overload resolution;
d4f3574e 1248see @ref{Debugging C plus plus, ,@value{GDBN} features for C++}.
c906108c
SS
1249
1250
53a5351d 1251@node Help
c906108c
SS
1252@section Getting help
1253@cindex online documentation
1254@kindex help
1255
1256You can always ask @value{GDBN} itself for information on its commands,
1257using the command @code{help}.
1258
1259@table @code
1260@kindex h
1261@item help
1262@itemx h
1263You can use @code{help} (abbreviated @code{h}) with no arguments to
1264display a short list of named classes of commands:
1265
1266@smallexample
1267(@value{GDBP}) help
1268List of classes of commands:
1269
2df3850c 1270aliases -- Aliases of other commands
c906108c 1271breakpoints -- Making program stop at certain points
2df3850c 1272data -- Examining data
c906108c 1273files -- Specifying and examining files
2df3850c
JM
1274internals -- Maintenance commands
1275obscure -- Obscure features
1276running -- Running the program
1277stack -- Examining the stack
c906108c
SS
1278status -- Status inquiries
1279support -- Support facilities
96a2c332
SS
1280tracepoints -- Tracing of program execution without@*
1281 stopping the program
c906108c 1282user-defined -- User-defined commands
c906108c
SS
1283
1284Type "help" followed by a class name for a list of
1285commands in that class.
1286Type "help" followed by command name for full
1287documentation.
1288Command name abbreviations are allowed if unambiguous.
1289(@value{GDBP})
1290@end smallexample
96a2c332 1291@c the above line break eliminates huge line overfull...
c906108c
SS
1292
1293@item help @var{class}
1294Using one of the general help classes as an argument, you can get a
1295list of the individual commands in that class. For example, here is the
1296help display for the class @code{status}:
1297
1298@smallexample
1299(@value{GDBP}) help status
1300Status inquiries.
1301
1302List of commands:
1303
1304@c Line break in "show" line falsifies real output, but needed
1305@c to fit in smallbook page size.
2df3850c
JM
1306info -- Generic command for showing things
1307 about the program being debugged
1308show -- Generic command for showing things
1309 about the debugger
c906108c
SS
1310
1311Type "help" followed by command name for full
1312documentation.
1313Command name abbreviations are allowed if unambiguous.
1314(@value{GDBP})
1315@end smallexample
1316
1317@item help @var{command}
1318With a command name as @code{help} argument, @value{GDBN} displays a
1319short paragraph on how to use that command.
1320
1321@kindex complete
1322@item complete @var{args}
1323The @code{complete @var{args}} command lists all the possible completions
1324for the beginning of a command. Use @var{args} to specify the beginning of the
1325command you want completed. For example:
1326
1327@smallexample
1328complete i
1329@end smallexample
1330
1331@noindent results in:
1332
1333@smallexample
1334@group
2df3850c
JM
1335if
1336ignore
c906108c
SS
1337info
1338inspect
c906108c
SS
1339@end group
1340@end smallexample
1341
1342@noindent This is intended for use by @sc{gnu} Emacs.
1343@end table
1344
1345In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1346and @code{show} to inquire about the state of your program, or the state
1347of @value{GDBN} itself. Each command supports many topics of inquiry; this
1348manual introduces each of them in the appropriate context. The listings
1349under @code{info} and under @code{show} in the Index point to
1350all the sub-commands. @xref{Index}.
1351
1352@c @group
1353@table @code
1354@kindex info
1355@kindex i
1356@item info
1357This command (abbreviated @code{i}) is for describing the state of your
1358program. For example, you can list the arguments given to your program
1359with @code{info args}, list the registers currently in use with @code{info
1360registers}, or list the breakpoints you have set with @code{info breakpoints}.
1361You can get a complete list of the @code{info} sub-commands with
1362@w{@code{help info}}.
1363
1364@kindex set
1365@item set
1366You can assign the result of an expression to an environment variable with
1367@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1368@code{set prompt $}.
1369
1370@kindex show
1371@item show
1372In contrast to @code{info}, @code{show} is for describing the state of
1373@value{GDBN} itself.
1374You can change most of the things you can @code{show}, by using the
1375related command @code{set}; for example, you can control what number
1376system is used for displays with @code{set radix}, or simply inquire
1377which is currently in use with @code{show radix}.
1378
1379@kindex info set
1380To display all the settable parameters and their current
1381values, you can use @code{show} with no arguments; you may also use
1382@code{info set}. Both commands produce the same display.
1383@c FIXME: "info set" violates the rule that "info" is for state of
1384@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1385@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1386@end table
1387@c @end group
1388
1389Here are three miscellaneous @code{show} subcommands, all of which are
1390exceptional in lacking corresponding @code{set} commands:
1391
1392@table @code
1393@kindex show version
1394@cindex version number
1395@item show version
1396Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1397information in @value{GDBN} bug-reports. If multiple versions of
1398@value{GDBN} are in use at your site, you may need to determine which
1399version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1400commands are introduced, and old ones may wither away. Also, many
1401system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1402variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1403The version number is the same as the one announced when you start
1404@value{GDBN}.
c906108c
SS
1405
1406@kindex show copying
1407@item show copying
1408Display information about permission for copying @value{GDBN}.
1409
1410@kindex show warranty
1411@item show warranty
2df3850c 1412Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1413if your version of @value{GDBN} comes with one.
2df3850c 1414
c906108c
SS
1415@end table
1416
53a5351d 1417@node Running
c906108c
SS
1418@chapter Running Programs Under @value{GDBN}
1419
1420When you run a program under @value{GDBN}, you must first generate
1421debugging information when you compile it.
7a292a7a
SS
1422
1423You may start @value{GDBN} with its arguments, if any, in an environment
1424of your choice. If you are doing native debugging, you may redirect
1425your program's input and output, debug an already running process, or
1426kill a child process.
c906108c
SS
1427
1428@menu
1429* Compilation:: Compiling for debugging
1430* Starting:: Starting your program
c906108c
SS
1431* Arguments:: Your program's arguments
1432* Environment:: Your program's environment
c906108c
SS
1433
1434* Working Directory:: Your program's working directory
1435* Input/Output:: Your program's input and output
1436* Attach:: Debugging an already-running process
1437* Kill Process:: Killing the child process
c906108c
SS
1438
1439* Threads:: Debugging programs with multiple threads
1440* Processes:: Debugging programs with multiple processes
1441@end menu
1442
53a5351d 1443@node Compilation
c906108c
SS
1444@section Compiling for debugging
1445
1446In order to debug a program effectively, you need to generate
1447debugging information when you compile it. This debugging information
1448is stored in the object file; it describes the data type of each
1449variable or function and the correspondence between source line numbers
1450and addresses in the executable code.
1451
1452To request debugging information, specify the @samp{-g} option when you run
1453the compiler.
1454
1455Many C compilers are unable to handle the @samp{-g} and @samp{-O}
1456options together. Using those compilers, you cannot generate optimized
1457executables containing debugging information.
1458
53a5351d
JM
1459@value{NGCC}, the @sc{gnu} C compiler, supports @samp{-g} with or
1460without @samp{-O}, making it possible to debug optimized code. We
1461recommend that you @emph{always} use @samp{-g} whenever you compile a
1462program. You may think your program is correct, but there is no sense
1463in pushing your luck.
c906108c
SS
1464
1465@cindex optimized code, debugging
1466@cindex debugging optimized code
1467When you debug a program compiled with @samp{-g -O}, remember that the
1468optimizer is rearranging your code; the debugger shows you what is
1469really there. Do not be too surprised when the execution path does not
1470exactly match your source file! An extreme example: if you define a
1471variable, but never use it, @value{GDBN} never sees that
1472variable---because the compiler optimizes it out of existence.
1473
1474Some things do not work as well with @samp{-g -O} as with just
1475@samp{-g}, particularly on machines with instruction scheduling. If in
1476doubt, recompile with @samp{-g} alone, and if this fixes the problem,
1477please report it to us as a bug (including a test case!).
1478
1479Older versions of the @sc{gnu} C compiler permitted a variant option
1480@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1481format; if your @sc{gnu} C compiler has this option, do not use it.
1482
1483@need 2000
53a5351d 1484@node Starting
c906108c
SS
1485@section Starting your program
1486@cindex starting
1487@cindex running
1488
1489@table @code
1490@kindex run
1491@item run
1492@itemx r
7a292a7a
SS
1493Use the @code{run} command to start your program under @value{GDBN}.
1494You must first specify the program name (except on VxWorks) with an
1495argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1496@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
1497(@pxref{Files, ,Commands to specify files}).
c906108c
SS
1498
1499@end table
1500
c906108c
SS
1501If you are running your program in an execution environment that
1502supports processes, @code{run} creates an inferior process and makes
1503that process run your program. (In environments without processes,
1504@code{run} jumps to the start of your program.)
1505
1506The execution of a program is affected by certain information it
1507receives from its superior. @value{GDBN} provides ways to specify this
1508information, which you must do @emph{before} starting your program. (You
1509can change it after starting your program, but such changes only affect
1510your program the next time you start it.) This information may be
1511divided into four categories:
1512
1513@table @asis
1514@item The @emph{arguments.}
1515Specify the arguments to give your program as the arguments of the
1516@code{run} command. If a shell is available on your target, the shell
1517is used to pass the arguments, so that you may use normal conventions
1518(such as wildcard expansion or variable substitution) in describing
1519the arguments.
1520In Unix systems, you can control which shell is used with the
1521@code{SHELL} environment variable.
1522@xref{Arguments, ,Your program's arguments}.
1523
1524@item The @emph{environment.}
1525Your program normally inherits its environment from @value{GDBN}, but you can
1526use the @value{GDBN} commands @code{set environment} and @code{unset
1527environment} to change parts of the environment that affect
1528your program. @xref{Environment, ,Your program's environment}.
1529
1530@item The @emph{working directory.}
1531Your program inherits its working directory from @value{GDBN}. You can set
1532the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
1533@xref{Working Directory, ,Your program's working directory}.
1534
1535@item The @emph{standard input and output.}
1536Your program normally uses the same device for standard input and
1537standard output as @value{GDBN} is using. You can redirect input and output
1538in the @code{run} command line, or you can use the @code{tty} command to
1539set a different device for your program.
1540@xref{Input/Output, ,Your program's input and output}.
1541
1542@cindex pipes
1543@emph{Warning:} While input and output redirection work, you cannot use
1544pipes to pass the output of the program you are debugging to another
1545program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1546wrong program.
1547@end table
c906108c
SS
1548
1549When you issue the @code{run} command, your program begins to execute
1550immediately. @xref{Stopping, ,Stopping and continuing}, for discussion
1551of how to arrange for your program to stop. Once your program has
1552stopped, you may call functions in your program, using the @code{print}
1553or @code{call} commands. @xref{Data, ,Examining Data}.
1554
1555If the modification time of your symbol file has changed since the last
1556time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1557table, and reads it again. When it does this, @value{GDBN} tries to retain
1558your current breakpoints.
1559
53a5351d 1560@node Arguments
c906108c
SS
1561@section Your program's arguments
1562
1563@cindex arguments (to your program)
1564The arguments to your program can be specified by the arguments of the
1565@code{run} command.
1566They are passed to a shell, which expands wildcard characters and
1567performs redirection of I/O, and thence to your program. Your
1568@code{SHELL} environment variable (if it exists) specifies what shell
1569@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
1570the default shell (@file{/bin/sh} on Unix).
1571
1572On non-Unix systems, the program is usually invoked directly by
1573@value{GDBN}, which emulates I/O redirection via the appropriate system
1574calls, and the wildcard characters are expanded by the startup code of
1575the program, not by the shell.
c906108c
SS
1576
1577@code{run} with no arguments uses the same arguments used by the previous
1578@code{run}, or those set by the @code{set args} command.
1579
1580@kindex set args
1581@table @code
1582@item set args
1583Specify the arguments to be used the next time your program is run. If
1584@code{set args} has no arguments, @code{run} executes your program
1585with no arguments. Once you have run your program with arguments,
1586using @code{set args} before the next @code{run} is the only way to run
1587it again without arguments.
1588
1589@kindex show args
1590@item show args
1591Show the arguments to give your program when it is started.
1592@end table
1593
53a5351d 1594@node Environment
c906108c
SS
1595@section Your program's environment
1596
1597@cindex environment (of your program)
1598The @dfn{environment} consists of a set of environment variables and
1599their values. Environment variables conventionally record such things as
1600your user name, your home directory, your terminal type, and your search
1601path for programs to run. Usually you set up environment variables with
1602the shell and they are inherited by all the other programs you run. When
1603debugging, it can be useful to try running your program with a modified
1604environment without having to start @value{GDBN} over again.
1605
1606@table @code
1607@kindex path
1608@item path @var{directory}
1609Add @var{directory} to the front of the @code{PATH} environment variable
1610(the search path for executables), for both @value{GDBN} and your program.
d4f3574e
SS
1611You may specify several directory names, separated by whitespace or by a
1612system-dependent separator character (@samp{:} on Unix, @samp{;} on
1613MS-DOS and MS-Windows). If @var{directory} is already in the path, it
1614is moved to the front, so it is searched sooner.
c906108c
SS
1615
1616You can use the string @samp{$cwd} to refer to whatever is the current
1617working directory at the time @value{GDBN} searches the path. If you
1618use @samp{.} instead, it refers to the directory where you executed the
1619@code{path} command. @value{GDBN} replaces @samp{.} in the
1620@var{directory} argument (with the current path) before adding
1621@var{directory} to the search path.
1622@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
1623@c document that, since repeating it would be a no-op.
1624
1625@kindex show paths
1626@item show paths
1627Display the list of search paths for executables (the @code{PATH}
1628environment variable).
1629
1630@kindex show environment
1631@item show environment @r{[}@var{varname}@r{]}
1632Print the value of environment variable @var{varname} to be given to
1633your program when it starts. If you do not supply @var{varname},
1634print the names and values of all environment variables to be given to
1635your program. You can abbreviate @code{environment} as @code{env}.
1636
1637@kindex set environment
53a5351d 1638@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
1639Set environment variable @var{varname} to @var{value}. The value
1640changes for your program only, not for @value{GDBN} itself. @var{value} may
1641be any string; the values of environment variables are just strings, and
1642any interpretation is supplied by your program itself. The @var{value}
1643parameter is optional; if it is eliminated, the variable is set to a
1644null value.
1645@c "any string" here does not include leading, trailing
1646@c blanks. Gnu asks: does anyone care?
1647
1648For example, this command:
1649
1650@example
1651set env USER = foo
1652@end example
1653
1654@noindent
d4f3574e 1655tells the debugged program, when subsequently run, that its user is named
c906108c
SS
1656@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
1657are not actually required.)
1658
1659@kindex unset environment
1660@item unset environment @var{varname}
1661Remove variable @var{varname} from the environment to be passed to your
1662program. This is different from @samp{set env @var{varname} =};
1663@code{unset environment} removes the variable from the environment,
1664rather than assigning it an empty value.
1665@end table
1666
d4f3574e
SS
1667@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
1668the shell indicated
c906108c
SS
1669by your @code{SHELL} environment variable if it exists (or
1670@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
1671that runs an initialization file---such as @file{.cshrc} for C-shell, or
1672@file{.bashrc} for BASH---any variables you set in that file affect
1673your program. You may wish to move setting of environment variables to
1674files that are only run when you sign on, such as @file{.login} or
1675@file{.profile}.
1676
53a5351d 1677@node Working Directory
c906108c
SS
1678@section Your program's working directory
1679
1680@cindex working directory (of your program)
1681Each time you start your program with @code{run}, it inherits its
1682working directory from the current working directory of @value{GDBN}.
1683The @value{GDBN} working directory is initially whatever it inherited
1684from its parent process (typically the shell), but you can specify a new
1685working directory in @value{GDBN} with the @code{cd} command.
1686
1687The @value{GDBN} working directory also serves as a default for the commands
1688that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
1689specify files}.
1690
1691@table @code
1692@kindex cd
1693@item cd @var{directory}
1694Set the @value{GDBN} working directory to @var{directory}.
1695
1696@kindex pwd
1697@item pwd
1698Print the @value{GDBN} working directory.
1699@end table
1700
53a5351d 1701@node Input/Output
c906108c
SS
1702@section Your program's input and output
1703
1704@cindex redirection
1705@cindex i/o
1706@cindex terminal
1707By default, the program you run under @value{GDBN} does input and output to
1708the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
1709to its own terminal modes to interact with you, but it records the terminal
1710modes your program was using and switches back to them when you continue
1711running your program.
1712
1713@table @code
1714@kindex info terminal
1715@item info terminal
1716Displays information recorded by @value{GDBN} about the terminal modes your
1717program is using.
1718@end table
1719
1720You can redirect your program's input and/or output using shell
1721redirection with the @code{run} command. For example,
1722
1723@example
1724run > outfile
1725@end example
1726
1727@noindent
1728starts your program, diverting its output to the file @file{outfile}.
1729
1730@kindex tty
1731@cindex controlling terminal
1732Another way to specify where your program should do input and output is
1733with the @code{tty} command. This command accepts a file name as
1734argument, and causes this file to be the default for future @code{run}
1735commands. It also resets the controlling terminal for the child
1736process, for future @code{run} commands. For example,
1737
1738@example
1739tty /dev/ttyb
1740@end example
1741
1742@noindent
1743directs that processes started with subsequent @code{run} commands
1744default to do input and output on the terminal @file{/dev/ttyb} and have
1745that as their controlling terminal.
1746
1747An explicit redirection in @code{run} overrides the @code{tty} command's
1748effect on the input/output device, but not its effect on the controlling
1749terminal.
1750
1751When you use the @code{tty} command or redirect input in the @code{run}
1752command, only the input @emph{for your program} is affected. The input
1753for @value{GDBN} still comes from your terminal.
1754
53a5351d 1755@node Attach
c906108c
SS
1756@section Debugging an already-running process
1757@kindex attach
1758@cindex attach
1759
1760@table @code
1761@item attach @var{process-id}
1762This command attaches to a running process---one that was started
1763outside @value{GDBN}. (@code{info files} shows your active
1764targets.) The command takes as argument a process ID. The usual way to
1765find out the process-id of a Unix process is with the @code{ps} utility,
1766or with the @samp{jobs -l} shell command.
1767
1768@code{attach} does not repeat if you press @key{RET} a second time after
1769executing the command.
1770@end table
1771
1772To use @code{attach}, your program must be running in an environment
1773which supports processes; for example, @code{attach} does not work for
1774programs on bare-board targets that lack an operating system. You must
1775also have permission to send the process a signal.
1776
1777When you use @code{attach}, the debugger finds the program running in
1778the process first by looking in the current working directory, then (if
1779the program is not found) by using the source file search path
1780(@pxref{Source Path, ,Specifying source directories}). You can also use
1781the @code{file} command to load the program. @xref{Files, ,Commands to
1782Specify Files}.
1783
1784The first thing @value{GDBN} does after arranging to debug the specified
1785process is to stop it. You can examine and modify an attached process
53a5351d
JM
1786with all the @value{GDBN} commands that are ordinarily available when
1787you start processes with @code{run}. You can insert breakpoints; you
1788can step and continue; you can modify storage. If you would rather the
1789process continue running, you may use the @code{continue} command after
c906108c
SS
1790attaching @value{GDBN} to the process.
1791
1792@table @code
1793@kindex detach
1794@item detach
1795When you have finished debugging the attached process, you can use the
1796@code{detach} command to release it from @value{GDBN} control. Detaching
1797the process continues its execution. After the @code{detach} command,
1798that process and @value{GDBN} become completely independent once more, and you
1799are ready to @code{attach} another process or start one with @code{run}.
1800@code{detach} does not repeat if you press @key{RET} again after
1801executing the command.
1802@end table
1803
1804If you exit @value{GDBN} or use the @code{run} command while you have an
1805attached process, you kill that process. By default, @value{GDBN} asks
1806for confirmation if you try to do either of these things; you can
1807control whether or not you need to confirm by using the @code{set
1808confirm} command (@pxref{Messages/Warnings, ,Optional warnings and
1809messages}).
1810
53a5351d 1811@node Kill Process
c906108c 1812@section Killing the child process
c906108c
SS
1813
1814@table @code
1815@kindex kill
1816@item kill
1817Kill the child process in which your program is running under @value{GDBN}.
1818@end table
1819
1820This command is useful if you wish to debug a core dump instead of a
1821running process. @value{GDBN} ignores any core dump file while your program
1822is running.
1823
1824On some operating systems, a program cannot be executed outside @value{GDBN}
1825while you have breakpoints set on it inside @value{GDBN}. You can use the
1826@code{kill} command in this situation to permit running your program
1827outside the debugger.
1828
1829The @code{kill} command is also useful if you wish to recompile and
1830relink your program, since on many systems it is impossible to modify an
1831executable file while it is running in a process. In this case, when you
1832next type @code{run}, @value{GDBN} notices that the file has changed, and
1833reads the symbol table again (while trying to preserve your current
1834breakpoint settings).
1835
53a5351d 1836@node Threads
c906108c 1837@section Debugging programs with multiple threads
c906108c
SS
1838
1839@cindex threads of execution
1840@cindex multiple threads
1841@cindex switching threads
1842In some operating systems, such as HP-UX and Solaris, a single program
1843may have more than one @dfn{thread} of execution. The precise semantics
1844of threads differ from one operating system to another, but in general
1845the threads of a single program are akin to multiple processes---except
1846that they share one address space (that is, they can all examine and
1847modify the same variables). On the other hand, each thread has its own
1848registers and execution stack, and perhaps private memory.
1849
1850@value{GDBN} provides these facilities for debugging multi-thread
1851programs:
1852
1853@itemize @bullet
1854@item automatic notification of new threads
1855@item @samp{thread @var{threadno}}, a command to switch among threads
1856@item @samp{info threads}, a command to inquire about existing threads
1857@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
1858a command to apply a command to a list of threads
1859@item thread-specific breakpoints
1860@end itemize
1861
c906108c
SS
1862@quotation
1863@emph{Warning:} These facilities are not yet available on every
1864@value{GDBN} configuration where the operating system supports threads.
1865If your @value{GDBN} does not support threads, these commands have no
1866effect. For example, a system without thread support shows no output
1867from @samp{info threads}, and always rejects the @code{thread} command,
1868like this:
1869
1870@smallexample
1871(@value{GDBP}) info threads
1872(@value{GDBP}) thread 1
1873Thread ID 1 not known. Use the "info threads" command to
1874see the IDs of currently known threads.
1875@end smallexample
1876@c FIXME to implementors: how hard would it be to say "sorry, this GDB
1877@c doesn't support threads"?
1878@end quotation
c906108c
SS
1879
1880@cindex focus of debugging
1881@cindex current thread
1882The @value{GDBN} thread debugging facility allows you to observe all
1883threads while your program runs---but whenever @value{GDBN} takes
1884control, one thread in particular is always the focus of debugging.
1885This thread is called the @dfn{current thread}. Debugging commands show
1886program information from the perspective of the current thread.
1887
c906108c
SS
1888@kindex New @var{systag}
1889@cindex thread identifier (system)
1890@c FIXME-implementors!! It would be more helpful if the [New...] message
1891@c included GDB's numeric thread handle, so you could just go to that
1892@c thread without first checking `info threads'.
1893Whenever @value{GDBN} detects a new thread in your program, it displays
1894the target system's identification for the thread with a message in the
1895form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
1896whose form varies depending on the particular system. For example, on
1897LynxOS, you might see
1898
1899@example
1900[New process 35 thread 27]
1901@end example
1902
1903@noindent
1904when @value{GDBN} notices a new thread. In contrast, on an SGI system,
1905the @var{systag} is simply something like @samp{process 368}, with no
1906further qualifier.
1907
1908@c FIXME!! (1) Does the [New...] message appear even for the very first
1909@c thread of a program, or does it only appear for the
1910@c second---i.e., when it becomes obvious we have a multithread
1911@c program?
1912@c (2) *Is* there necessarily a first thread always? Or do some
1913@c multithread systems permit starting a program with multiple
1914@c threads ab initio?
1915
1916@cindex thread number
1917@cindex thread identifier (GDB)
1918For debugging purposes, @value{GDBN} associates its own thread
1919number---always a single integer---with each thread in your program.
1920
1921@table @code
1922@kindex info threads
1923@item info threads
1924Display a summary of all threads currently in your
1925program. @value{GDBN} displays for each thread (in this order):
1926
1927@enumerate
1928@item the thread number assigned by @value{GDBN}
1929
1930@item the target system's thread identifier (@var{systag})
1931
1932@item the current stack frame summary for that thread
1933@end enumerate
1934
1935@noindent
1936An asterisk @samp{*} to the left of the @value{GDBN} thread number
1937indicates the current thread.
1938
1939For example,
1940@end table
1941@c end table here to get a little more width for example
1942
1943@smallexample
1944(@value{GDBP}) info threads
1945 3 process 35 thread 27 0x34e5 in sigpause ()
1946 2 process 35 thread 23 0x34e5 in sigpause ()
1947* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
1948 at threadtest.c:68
1949@end smallexample
53a5351d
JM
1950
1951On HP-UX systems:
c906108c
SS
1952
1953@cindex thread number
1954@cindex thread identifier (GDB)
1955For debugging purposes, @value{GDBN} associates its own thread
1956number---a small integer assigned in thread-creation order---with each
1957thread in your program.
1958
1959@kindex New @var{systag}
1960@cindex thread identifier (system)
1961@c FIXME-implementors!! It would be more helpful if the [New...] message
1962@c included GDB's numeric thread handle, so you could just go to that
1963@c thread without first checking `info threads'.
1964Whenever @value{GDBN} detects a new thread in your program, it displays
1965both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
1966form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
1967whose form varies depending on the particular system. For example, on
1968HP-UX, you see
1969
1970@example
1971[New thread 2 (system thread 26594)]
1972@end example
1973
1974@noindent
1975when @value{GDBN} notices a new thread.
1976
1977@table @code
1978@kindex info threads
1979@item info threads
1980Display a summary of all threads currently in your
1981program. @value{GDBN} displays for each thread (in this order):
1982
1983@enumerate
1984@item the thread number assigned by @value{GDBN}
1985
1986@item the target system's thread identifier (@var{systag})
1987
1988@item the current stack frame summary for that thread
1989@end enumerate
1990
1991@noindent
1992An asterisk @samp{*} to the left of the @value{GDBN} thread number
1993indicates the current thread.
1994
1995For example,
1996@end table
1997@c end table here to get a little more width for example
1998
1999@example
2000(@value{GDBP}) info threads
2001 * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") at quicksort.c:137
2002 2 system thread 26606 0x7b0030d8 in __ksleep () from /usr/lib/libc.2
2003 1 system thread 27905 0x7b003498 in _brk () from /usr/lib/libc.2
2004@end example
c906108c
SS
2005
2006@table @code
2007@kindex thread @var{threadno}
2008@item thread @var{threadno}
2009Make thread number @var{threadno} the current thread. The command
2010argument @var{threadno} is the internal @value{GDBN} thread number, as
2011shown in the first field of the @samp{info threads} display.
2012@value{GDBN} responds by displaying the system identifier of the thread
2013you selected, and its current stack frame summary:
2014
2015@smallexample
2016@c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one
2017(@value{GDBP}) thread 2
c906108c 2018[Switching to process 35 thread 23]
c906108c
SS
20190x34e5 in sigpause ()
2020@end smallexample
2021
2022@noindent
2023As with the @samp{[New @dots{}]} message, the form of the text after
2024@samp{Switching to} depends on your system's conventions for identifying
2025threads.
2026
2027@kindex thread apply
2028@item thread apply [@var{threadno}] [@var{all}] @var{args}
2029The @code{thread apply} command allows you to apply a command to one or
2030more threads. Specify the numbers of the threads that you want affected
2031with the command argument @var{threadno}. @var{threadno} is the internal
2032@value{GDBN} thread number, as shown in the first field of the @samp{info
2033threads} display. To apply a command to all threads, use
2034@code{thread apply all} @var{args}.
2035@end table
2036
2037@cindex automatic thread selection
2038@cindex switching threads automatically
2039@cindex threads, automatic switching
2040Whenever @value{GDBN} stops your program, due to a breakpoint or a
2041signal, it automatically selects the thread where that breakpoint or
2042signal happened. @value{GDBN} alerts you to the context switch with a
2043message of the form @samp{[Switching to @var{systag}]} to identify the
2044thread.
2045
2046@xref{Thread Stops,,Stopping and starting multi-thread programs}, for
2047more information about how @value{GDBN} behaves when you stop and start
2048programs with multiple threads.
2049
2050@xref{Set Watchpoints,,Setting watchpoints}, for information about
2051watchpoints in programs with multiple threads.
c906108c 2052
53a5351d 2053@node Processes
c906108c
SS
2054@section Debugging programs with multiple processes
2055
2056@cindex fork, debugging programs which call
2057@cindex multiple processes
2058@cindex processes, multiple
53a5351d
JM
2059On most systems, @value{GDBN} has no special support for debugging
2060programs which create additional processes using the @code{fork}
2061function. When a program forks, @value{GDBN} will continue to debug the
2062parent process and the child process will run unimpeded. If you have
2063set a breakpoint in any code which the child then executes, the child
2064will get a @code{SIGTRAP} signal which (unless it catches the signal)
2065will cause it to terminate.
c906108c
SS
2066
2067However, if you want to debug the child process there is a workaround
2068which isn't too painful. Put a call to @code{sleep} in the code which
2069the child process executes after the fork. It may be useful to sleep
2070only if a certain environment variable is set, or a certain file exists,
2071so that the delay need not occur when you don't want to run @value{GDBN}
2072on the child. While the child is sleeping, use the @code{ps} program to
2073get its process ID. Then tell @value{GDBN} (a new invocation of
2074@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 2075the child process (@pxref{Attach}). From that point on you can debug
c906108c 2076the child process just like any other process which you attached to.
c906108c 2077
53a5351d
JM
2078On HP-UX (11.x and later only?), @value{GDBN} provides support for
2079debugging programs that create additional processes using the
2080@code{fork} or @code{vfork} function.
c906108c
SS
2081
2082By default, when a program forks, @value{GDBN} will continue to debug
2083the parent process and the child process will run unimpeded.
2084
2085If you want to follow the child process instead of the parent process,
2086use the command @w{@code{set follow-fork-mode}}.
2087
2088@table @code
2089@kindex set follow-fork-mode
2090@item set follow-fork-mode @var{mode}
2091Set the debugger response to a program call of @code{fork} or
2092@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
2093process. The @var{mode} can be:
2094
2095@table @code
2096@item parent
2097The original process is debugged after a fork. The child process runs
2df3850c 2098unimpeded. This is the default.
c906108c
SS
2099
2100@item child
2101The new process is debugged after a fork. The parent process runs
2102unimpeded.
2103
2104@item ask
2105The debugger will ask for one of the above choices.
2106@end table
2107
2108@item show follow-fork-mode
2df3850c 2109Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
2110@end table
2111
2112If you ask to debug a child process and a @code{vfork} is followed by an
2113@code{exec}, @value{GDBN} executes the new target up to the first
2114breakpoint in the new target. If you have a breakpoint set on
2115@code{main} in your original program, the breakpoint will also be set on
2116the child process's @code{main}.
2117
2118When a child process is spawned by @code{vfork}, you cannot debug the
2119child or parent until an @code{exec} call completes.
2120
2121If you issue a @code{run} command to @value{GDBN} after an @code{exec}
2122call executes, the new target restarts. To restart the parent process,
2123use the @code{file} command with the parent executable name as its
2124argument.
2125
2126You can use the @code{catch} command to make @value{GDBN} stop whenever
2127a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
2128Catchpoints, ,Setting catchpoints}.
c906108c 2129
53a5351d 2130@node Stopping
c906108c
SS
2131@chapter Stopping and Continuing
2132
2133The principal purposes of using a debugger are so that you can stop your
2134program before it terminates; or so that, if your program runs into
2135trouble, you can investigate and find out why.
2136
7a292a7a
SS
2137Inside @value{GDBN}, your program may stop for any of several reasons,
2138such as a signal, a breakpoint, or reaching a new line after a
2139@value{GDBN} command such as @code{step}. You may then examine and
2140change variables, set new breakpoints or remove old ones, and then
2141continue execution. Usually, the messages shown by @value{GDBN} provide
2142ample explanation of the status of your program---but you can also
2143explicitly request this information at any time.
c906108c
SS
2144
2145@table @code
2146@kindex info program
2147@item info program
2148Display information about the status of your program: whether it is
7a292a7a 2149running or not, what process it is, and why it stopped.
c906108c
SS
2150@end table
2151
2152@menu
2153* Breakpoints:: Breakpoints, watchpoints, and catchpoints
2154* Continuing and Stepping:: Resuming execution
c906108c 2155* Signals:: Signals
c906108c 2156* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
2157@end menu
2158
53a5351d 2159@node Breakpoints
c906108c
SS
2160@section Breakpoints, watchpoints, and catchpoints
2161
2162@cindex breakpoints
2163A @dfn{breakpoint} makes your program stop whenever a certain point in
2164the program is reached. For each breakpoint, you can add conditions to
2165control in finer detail whether your program stops. You can set
2166breakpoints with the @code{break} command and its variants (@pxref{Set
2167Breaks, ,Setting breakpoints}), to specify the place where your program
2168should stop by line number, function name or exact address in the
2169program.
2170
2171In HP-UX, SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can set
2172breakpoints in shared libraries before the executable is run. There is
2173a minor limitation on HP-UX systems: you must wait until the executable
2174is run in order to set breakpoints in shared library routines that are
2175not called directly by the program (for example, routines that are
2176arguments in a @code{pthread_create} call).
2177
2178@cindex watchpoints
2179@cindex memory tracing
2180@cindex breakpoint on memory address
2181@cindex breakpoint on variable modification
2182A @dfn{watchpoint} is a special breakpoint that stops your program
2183when the value of an expression changes. You must use a different
2184command to set watchpoints (@pxref{Set Watchpoints, ,Setting
2185watchpoints}), but aside from that, you can manage a watchpoint like
2186any other breakpoint: you enable, disable, and delete both breakpoints
2187and watchpoints using the same commands.
2188
2189You can arrange to have values from your program displayed automatically
2190whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
2191Automatic display}.
2192
2193@cindex catchpoints
2194@cindex breakpoint on events
2195A @dfn{catchpoint} is another special breakpoint that stops your program
2196when a certain kind of event occurs, such as the throwing of a C++
2197exception or the loading of a library. As with watchpoints, you use a
2198different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
2199catchpoints}), but aside from that, you can manage a catchpoint like any
2200other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 2201@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
2202
2203@cindex breakpoint numbers
2204@cindex numbers for breakpoints
2205@value{GDBN} assigns a number to each breakpoint, watchpoint, or
2206catchpoint when you create it; these numbers are successive integers
2207starting with one. In many of the commands for controlling various
2208features of breakpoints you use the breakpoint number to say which
2209breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
2210@dfn{disabled}; if disabled, it has no effect on your program until you
2211enable it again.
2212
c5394b80
JM
2213@cindex breakpoint ranges
2214@cindex ranges of breakpoints
2215Some @value{GDBN} commands accept a range of breakpoints on which to
2216operate. A breakpoint range is either a single breakpoint number, like
2217@samp{5}, or two such numbers, in increasing order, separated by a
2218hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
2219all breakpoint in that range are operated on.
2220
c906108c
SS
2221@menu
2222* Set Breaks:: Setting breakpoints
2223* Set Watchpoints:: Setting watchpoints
2224* Set Catchpoints:: Setting catchpoints
2225* Delete Breaks:: Deleting breakpoints
2226* Disabling:: Disabling breakpoints
2227* Conditions:: Break conditions
2228* Break Commands:: Breakpoint command lists
c906108c 2229* Breakpoint Menus:: Breakpoint menus
d4f3574e 2230* Error in Breakpoints:: ``Cannot insert breakpoints''
c906108c
SS
2231@end menu
2232
53a5351d 2233@node Set Breaks
c906108c
SS
2234@subsection Setting breakpoints
2235
2236@c FIXME LMB what does GDB do if no code on line of breakpt?
2237@c consider in particular declaration with/without initialization.
2238@c
2239@c FIXME 2 is there stuff on this already? break at fun start, already init?
2240
2241@kindex break
2242@kindex b
2243@kindex $bpnum
2244@cindex latest breakpoint
2245Breakpoints are set with the @code{break} command (abbreviated
2246@code{b}). The debugger convenience variable @samp{$bpnum} records the
2247number of the breakpoints you've set most recently; see @ref{Convenience
2248Vars,, Convenience variables}, for a discussion of what you can do with
2249convenience variables.
2250
2251You have several ways to say where the breakpoint should go.
2252
2253@table @code
2254@item break @var{function}
2255Set a breakpoint at entry to function @var{function}.
c906108c
SS
2256When using source languages that permit overloading of symbols, such as
2257C++, @var{function} may refer to more than one possible place to break.
2258@xref{Breakpoint Menus,,Breakpoint menus}, for a discussion of that situation.
c906108c
SS
2259
2260@item break +@var{offset}
2261@itemx break -@var{offset}
2262Set a breakpoint some number of lines forward or back from the position
d4f3574e 2263at which execution stopped in the currently selected @dfn{stack frame}.
2df3850c 2264(@xref{Frames, ,Frames}, for a description of stack frames.)
c906108c
SS
2265
2266@item break @var{linenum}
2267Set a breakpoint at line @var{linenum} in the current source file.
d4f3574e
SS
2268The current source file is the last file whose source text was printed.
2269The breakpoint will stop your program just before it executes any of the
c906108c
SS
2270code on that line.
2271
2272@item break @var{filename}:@var{linenum}
2273Set a breakpoint at line @var{linenum} in source file @var{filename}.
2274
2275@item break @var{filename}:@var{function}
2276Set a breakpoint at entry to function @var{function} found in file
2277@var{filename}. Specifying a file name as well as a function name is
2278superfluous except when multiple files contain similarly named
2279functions.
2280
2281@item break *@var{address}
2282Set a breakpoint at address @var{address}. You can use this to set
2283breakpoints in parts of your program which do not have debugging
2284information or source files.
2285
2286@item break
2287When called without any arguments, @code{break} sets a breakpoint at
2288the next instruction to be executed in the selected stack frame
2289(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
2290innermost, this makes your program stop as soon as control
2291returns to that frame. This is similar to the effect of a
2292@code{finish} command in the frame inside the selected frame---except
2293that @code{finish} does not leave an active breakpoint. If you use
2294@code{break} without an argument in the innermost frame, @value{GDBN} stops
2295the next time it reaches the current location; this may be useful
2296inside loops.
2297
2298@value{GDBN} normally ignores breakpoints when it resumes execution, until at
2299least one instruction has been executed. If it did not do this, you
2300would be unable to proceed past a breakpoint without first disabling the
2301breakpoint. This rule applies whether or not the breakpoint already
2302existed when your program stopped.
2303
2304@item break @dots{} if @var{cond}
2305Set a breakpoint with condition @var{cond}; evaluate the expression
2306@var{cond} each time the breakpoint is reached, and stop only if the
2307value is nonzero---that is, if @var{cond} evaluates as true.
2308@samp{@dots{}} stands for one of the possible arguments described
2309above (or no argument) specifying where to break. @xref{Conditions,
2310,Break conditions}, for more information on breakpoint conditions.
2311
2312@kindex tbreak
2313@item tbreak @var{args}
2314Set a breakpoint enabled only for one stop. @var{args} are the
2315same as for the @code{break} command, and the breakpoint is set in the same
2316way, but the breakpoint is automatically deleted after the first time your
2317program stops there. @xref{Disabling, ,Disabling breakpoints}.
2318
c906108c
SS
2319@kindex hbreak
2320@item hbreak @var{args}
d4f3574e
SS
2321Set a hardware-assisted breakpoint. @var{args} are the same as for the
2322@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
2323breakpoint requires hardware support and some target hardware may not
2324have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
2325debugging, so you can set a breakpoint at an instruction without
2326changing the instruction. This can be used with the new trap-generation
2327provided by SPARClite DSU and some x86-based targets. These targets
2328will generate traps when a program accesses some data or instruction
2329address that is assigned to the debug registers. However the hardware
2330breakpoint registers can take a limited number of breakpoints. For
2331example, on the DSU, only two data breakpoints can be set at a time, and
2332@value{GDBN} will reject this command if more than two are used. Delete
2333or disable unused hardware breakpoints before setting new ones
2334(@pxref{Disabling, ,Disabling}). @xref{Conditions, ,Break conditions}.
c906108c
SS
2335
2336@kindex thbreak
2337@item thbreak @var{args}
2338Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
2339are the same as for the @code{hbreak} command and the breakpoint is set in
2340the same way. However, like the @code{tbreak} command,
2341the breakpoint is automatically deleted after the
2342first time your program stops there. Also, like the @code{hbreak}
2343command, the breakpoint requires hardware support and some target hardware
2344may not have this support. @xref{Disabling, ,Disabling breakpoints}.
d4f3574e 2345See also @ref{Conditions, ,Break conditions}.
c906108c
SS
2346
2347@kindex rbreak
2348@cindex regular expression
2349@item rbreak @var{regex}
c906108c 2350Set breakpoints on all functions matching the regular expression
11cf8741
JM
2351@var{regex}. This command sets an unconditional breakpoint on all
2352matches, printing a list of all breakpoints it set. Once these
2353breakpoints are set, they are treated just like the breakpoints set with
2354the @code{break} command. You can delete them, disable them, or make
2355them conditional the same way as any other breakpoint.
2356
2357The syntax of the regular expression is the standard one used with tools
2358like @file{grep}. Note that this is different from the syntax used by
2359shells, so for instance @code{foo*} matches all functions that include
2360an @code{fo} followed by zero or more @code{o}s. There is an implicit
2361@code{.*} leading and trailing the regular expression you supply, so to
2362match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 2363
c906108c
SS
2364When debugging C++ programs, @code{rbreak} is useful for setting
2365breakpoints on overloaded functions that are not members of any special
2366classes.
c906108c
SS
2367
2368@kindex info breakpoints
2369@cindex @code{$_} and @code{info breakpoints}
2370@item info breakpoints @r{[}@var{n}@r{]}
2371@itemx info break @r{[}@var{n}@r{]}
2372@itemx info watchpoints @r{[}@var{n}@r{]}
2373Print a table of all breakpoints, watchpoints, and catchpoints set and
2374not deleted, with the following columns for each breakpoint:
2375
2376@table @emph
2377@item Breakpoint Numbers
2378@item Type
2379Breakpoint, watchpoint, or catchpoint.
2380@item Disposition
2381Whether the breakpoint is marked to be disabled or deleted when hit.
2382@item Enabled or Disabled
2383Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
2384that are not enabled.
2385@item Address
2df3850c 2386Where the breakpoint is in your program, as a memory address.
c906108c
SS
2387@item What
2388Where the breakpoint is in the source for your program, as a file and
2389line number.
2390@end table
2391
2392@noindent
2393If a breakpoint is conditional, @code{info break} shows the condition on
2394the line following the affected breakpoint; breakpoint commands, if any,
2395are listed after that.
2396
2397@noindent
2398@code{info break} with a breakpoint
2399number @var{n} as argument lists only that breakpoint. The
2400convenience variable @code{$_} and the default examining-address for
2401the @code{x} command are set to the address of the last breakpoint
2402listed (@pxref{Memory, ,Examining memory}).
2403
2404@noindent
2405@code{info break} displays a count of the number of times the breakpoint
2406has been hit. This is especially useful in conjunction with the
2407@code{ignore} command. You can ignore a large number of breakpoint
2408hits, look at the breakpoint info to see how many times the breakpoint
2409was hit, and then run again, ignoring one less than that number. This
2410will get you quickly to the last hit of that breakpoint.
2411@end table
2412
2413@value{GDBN} allows you to set any number of breakpoints at the same place in
2414your program. There is nothing silly or meaningless about this. When
2415the breakpoints are conditional, this is even useful
2416(@pxref{Conditions, ,Break conditions}).
2417
2418@cindex negative breakpoint numbers
2419@cindex internal @value{GDBN} breakpoints
2420@value{GDBN} itself sometimes sets breakpoints in your program for special
2421purposes, such as proper handling of @code{longjmp} (in C programs).
2422These internal breakpoints are assigned negative numbers, starting with
2423@code{-1}; @samp{info breakpoints} does not display them.
2424
2425You can see these breakpoints with the @value{GDBN} maintenance command
2426@samp{maint info breakpoints}.
2427
2428@table @code
2429@kindex maint info breakpoints
2430@item maint info breakpoints
2431Using the same format as @samp{info breakpoints}, display both the
2432breakpoints you've set explicitly, and those @value{GDBN} is using for
2433internal purposes. Internal breakpoints are shown with negative
2434breakpoint numbers. The type column identifies what kind of breakpoint
2435is shown:
2436
2437@table @code
2438@item breakpoint
2439Normal, explicitly set breakpoint.
2440
2441@item watchpoint
2442Normal, explicitly set watchpoint.
2443
2444@item longjmp
2445Internal breakpoint, used to handle correctly stepping through
2446@code{longjmp} calls.
2447
2448@item longjmp resume
2449Internal breakpoint at the target of a @code{longjmp}.
2450
2451@item until
2452Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
2453
2454@item finish
2455Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
2456
c906108c
SS
2457@item shlib events
2458Shared library events.
53a5351d 2459
c906108c 2460@end table
53a5351d 2461
c906108c
SS
2462@end table
2463
2464
53a5351d 2465@node Set Watchpoints
c906108c
SS
2466@subsection Setting watchpoints
2467
2468@cindex setting watchpoints
2469@cindex software watchpoints
2470@cindex hardware watchpoints
2471You can use a watchpoint to stop execution whenever the value of an
2472expression changes, without having to predict a particular place where
2473this may happen.
2474
2475Depending on your system, watchpoints may be implemented in software or
2df3850c 2476hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
2477program and testing the variable's value each time, which is hundreds of
2478times slower than normal execution. (But this may still be worth it, to
2479catch errors where you have no clue what part of your program is the
2480culprit.)
2481
d4f3574e 2482On some systems, such as HP-UX, Linux and some other x86-based targets,
2df3850c 2483@value{GDBN} includes support for
c906108c
SS
2484hardware watchpoints, which do not slow down the running of your
2485program.
2486
2487@table @code
2488@kindex watch
2489@item watch @var{expr}
2490Set a watchpoint for an expression. @value{GDBN} will break when @var{expr}
2491is written into by the program and its value changes.
2492
2493@kindex rwatch
2494@item rwatch @var{expr}
2495Set a watchpoint that will break when watch @var{expr} is read by the program.
c906108c
SS
2496
2497@kindex awatch
2498@item awatch @var{expr}
2df3850c 2499Set a watchpoint that will break when @var{expr} is either read or written into
7be570e7 2500by the program.
c906108c
SS
2501
2502@kindex info watchpoints
2503@item info watchpoints
2504This command prints a list of watchpoints, breakpoints, and catchpoints;
2505it is the same as @code{info break}.
2506@end table
2507
2508@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
2509watchpoints execute very quickly, and the debugger reports a change in
2510value at the exact instruction where the change occurs. If @value{GDBN}
2511cannot set a hardware watchpoint, it sets a software watchpoint, which
2512executes more slowly and reports the change in value at the next
2513statement, not the instruction, after the change occurs.
2514
2515When you issue the @code{watch} command, @value{GDBN} reports
2516
2517@example
2518Hardware watchpoint @var{num}: @var{expr}
2519@end example
2520
2521@noindent
2522if it was able to set a hardware watchpoint.
2523
7be570e7
JM
2524Currently, the @code{awatch} and @code{rwatch} commands can only set
2525hardware watchpoints, because accesses to data that don't change the
2526value of the watched expression cannot be detected without examining
2527every instruction as it is being executed, and @value{GDBN} does not do
2528that currently. If @value{GDBN} finds that it is unable to set a
2529hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
2530will print a message like this:
2531
2532@smallexample
2533Expression cannot be implemented with read/access watchpoint.
2534@end smallexample
2535
2536Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
2537data type of the watched expression is wider than what a hardware
2538watchpoint on the target machine can handle. For example, some systems
2539can only watch regions that are up to 4 bytes wide; on such systems you
2540cannot set hardware watchpoints for an expression that yields a
2541double-precision floating-point number (which is typically 8 bytes
2542wide). As a work-around, it might be possible to break the large region
2543into a series of smaller ones and watch them with separate watchpoints.
2544
2545If you set too many hardware watchpoints, @value{GDBN} might be unable
2546to insert all of them when you resume the execution of your program.
2547Since the precise number of active watchpoints is unknown until such
2548time as the program is about to be resumed, @value{GDBN} might not be
2549able to warn you about this when you set the watchpoints, and the
2550warning will be printed only when the program is resumed:
2551
2552@smallexample
2553Hardware watchpoint @var{num}: Could not insert watchpoint
2554@end smallexample
2555
2556@noindent
2557If this happens, delete or disable some of the watchpoints.
2558
2559The SPARClite DSU will generate traps when a program accesses some data
2560or instruction address that is assigned to the debug registers. For the
2561data addresses, DSU facilitates the @code{watch} command. However the
2562hardware breakpoint registers can only take two data watchpoints, and
2563both watchpoints must be the same kind. For example, you can set two
2564watchpoints with @code{watch} commands, two with @code{rwatch} commands,
2565@strong{or} two with @code{awatch} commands, but you cannot set one
2566watchpoint with one command and the other with a different command.
c906108c
SS
2567@value{GDBN} will reject the command if you try to mix watchpoints.
2568Delete or disable unused watchpoint commands before setting new ones.
2569
2570If you call a function interactively using @code{print} or @code{call},
2df3850c 2571any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
2572kind of breakpoint or the call completes.
2573
7be570e7
JM
2574@value{GDBN} automatically deletes watchpoints that watch local
2575(automatic) variables, or expressions that involve such variables, when
2576they go out of scope, that is, when the execution leaves the block in
2577which these variables were defined. In particular, when the program
2578being debugged terminates, @emph{all} local variables go out of scope,
2579and so only watchpoints that watch global variables remain set. If you
2580rerun the program, you will need to set all such watchpoints again. One
2581way of doing that would be to set a code breakpoint at the entry to the
2582@code{main} function and when it breaks, set all the watchpoints.
2583
c906108c
SS
2584@quotation
2585@cindex watchpoints and threads
2586@cindex threads and watchpoints
c906108c
SS
2587@emph{Warning:} In multi-thread programs, watchpoints have only limited
2588usefulness. With the current watchpoint implementation, @value{GDBN}
2589can only watch the value of an expression @emph{in a single thread}. If
2590you are confident that the expression can only change due to the current
2591thread's activity (and if you are also confident that no other thread
2592can become current), then you can use watchpoints as usual. However,
2593@value{GDBN} may not notice when a non-current thread's activity changes
2594the expression.
53a5351d 2595
d4f3574e 2596@c FIXME: this is almost identical to the previous paragraph.
53a5351d
JM
2597@emph{HP-UX Warning:} In multi-thread programs, software watchpoints
2598have only limited usefulness. If @value{GDBN} creates a software
2599watchpoint, it can only watch the value of an expression @emph{in a
2600single thread}. If you are confident that the expression can only
2601change due to the current thread's activity (and if you are also
2602confident that no other thread can become current), then you can use
2603software watchpoints as usual. However, @value{GDBN} may not notice
2604when a non-current thread's activity changes the expression. (Hardware
2605watchpoints, in contrast, watch an expression in all threads.)
c906108c 2606@end quotation
c906108c 2607
53a5351d 2608@node Set Catchpoints
c906108c 2609@subsection Setting catchpoints
d4f3574e 2610@cindex catchpoints, setting
c906108c
SS
2611@cindex exception handlers
2612@cindex event handling
2613
2614You can use @dfn{catchpoints} to cause the debugger to stop for certain
2615kinds of program events, such as C++ exceptions or the loading of a
2616shared library. Use the @code{catch} command to set a catchpoint.
2617
2618@table @code
2619@kindex catch
2620@item catch @var{event}
2621Stop when @var{event} occurs. @var{event} can be any of the following:
2622@table @code
2623@item throw
2624@kindex catch throw
2625The throwing of a C++ exception.
2626
2627@item catch
2628@kindex catch catch
2629The catching of a C++ exception.
2630
2631@item exec
2632@kindex catch exec
2633A call to @code{exec}. This is currently only available for HP-UX.
2634
2635@item fork
2636@kindex catch fork
2637A call to @code{fork}. This is currently only available for HP-UX.
2638
2639@item vfork
2640@kindex catch vfork
2641A call to @code{vfork}. This is currently only available for HP-UX.
2642
2643@item load
2644@itemx load @var{libname}
2645@kindex catch load
2646The dynamic loading of any shared library, or the loading of the library
2647@var{libname}. This is currently only available for HP-UX.
2648
2649@item unload
2650@itemx unload @var{libname}
2651@kindex catch unload
2652The unloading of any dynamically loaded shared library, or the unloading
2653of the library @var{libname}. This is currently only available for HP-UX.
2654@end table
2655
2656@item tcatch @var{event}
2657Set a catchpoint that is enabled only for one stop. The catchpoint is
2658automatically deleted after the first time the event is caught.
2659
2660@end table
2661
2662Use the @code{info break} command to list the current catchpoints.
2663
2664There are currently some limitations to C++ exception handling
2665(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
2666
2667@itemize @bullet
2668@item
2669If you call a function interactively, @value{GDBN} normally returns
2670control to you when the function has finished executing. If the call
2671raises an exception, however, the call may bypass the mechanism that
2672returns control to you and cause your program either to abort or to
2673simply continue running until it hits a breakpoint, catches a signal
2674that @value{GDBN} is listening for, or exits. This is the case even if
2675you set a catchpoint for the exception; catchpoints on exceptions are
2676disabled within interactive calls.
2677
2678@item
2679You cannot raise an exception interactively.
2680
2681@item
2682You cannot install an exception handler interactively.
2683@end itemize
2684
2685@cindex raise exceptions
2686Sometimes @code{catch} is not the best way to debug exception handling:
2687if you need to know exactly where an exception is raised, it is better to
2688stop @emph{before} the exception handler is called, since that way you
2689can see the stack before any unwinding takes place. If you set a
2690breakpoint in an exception handler instead, it may not be easy to find
2691out where the exception was raised.
2692
2693To stop just before an exception handler is called, you need some
2694knowledge of the implementation. In the case of @sc{gnu} C++, exceptions are
2695raised by calling a library function named @code{__raise_exception}
2696which has the following ANSI C interface:
2697
2698@example
2699 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
2700 @var{id} is the exception identifier. */
2701 void __raise_exception (void **addr, void *id);
c906108c
SS
2702@end example
2703
2704@noindent
2705To make the debugger catch all exceptions before any stack
2706unwinding takes place, set a breakpoint on @code{__raise_exception}
2707(@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions}).
2708
2709With a conditional breakpoint (@pxref{Conditions, ,Break conditions})
2710that depends on the value of @var{id}, you can stop your program when
2711a specific exception is raised. You can use multiple conditional
2712breakpoints to stop your program when any of a number of exceptions are
2713raised.
2714
2715
53a5351d 2716@node Delete Breaks
c906108c
SS
2717@subsection Deleting breakpoints
2718
2719@cindex clearing breakpoints, watchpoints, catchpoints
2720@cindex deleting breakpoints, watchpoints, catchpoints
2721It is often necessary to eliminate a breakpoint, watchpoint, or
2722catchpoint once it has done its job and you no longer want your program
2723to stop there. This is called @dfn{deleting} the breakpoint. A
2724breakpoint that has been deleted no longer exists; it is forgotten.
2725
2726With the @code{clear} command you can delete breakpoints according to
2727where they are in your program. With the @code{delete} command you can
2728delete individual breakpoints, watchpoints, or catchpoints by specifying
2729their breakpoint numbers.
2730
2731It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
2732automatically ignores breakpoints on the first instruction to be executed
2733when you continue execution without changing the execution address.
2734
2735@table @code
2736@kindex clear
2737@item clear
2738Delete any breakpoints at the next instruction to be executed in the
2739selected stack frame (@pxref{Selection, ,Selecting a frame}). When
2740the innermost frame is selected, this is a good way to delete a
2741breakpoint where your program just stopped.
2742
2743@item clear @var{function}
2744@itemx clear @var{filename}:@var{function}
2745Delete any breakpoints set at entry to the function @var{function}.
2746
2747@item clear @var{linenum}
2748@itemx clear @var{filename}:@var{linenum}
2749Delete any breakpoints set at or within the code of the specified line.
2750
2751@cindex delete breakpoints
2752@kindex delete
2753@kindex d
c5394b80
JM
2754@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2755Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
2756ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
2757breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
2758confirm off}). You can abbreviate this command as @code{d}.
2759@end table
2760
53a5351d 2761@node Disabling
c906108c
SS
2762@subsection Disabling breakpoints
2763
2764@kindex disable breakpoints
2765@kindex enable breakpoints
2766Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
2767prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
2768it had been deleted, but remembers the information on the breakpoint so
2769that you can @dfn{enable} it again later.
2770
2771You disable and enable breakpoints, watchpoints, and catchpoints with
2772the @code{enable} and @code{disable} commands, optionally specifying one
2773or more breakpoint numbers as arguments. Use @code{info break} or
2774@code{info watch} to print a list of breakpoints, watchpoints, and
2775catchpoints if you do not know which numbers to use.
2776
2777A breakpoint, watchpoint, or catchpoint can have any of four different
2778states of enablement:
2779
2780@itemize @bullet
2781@item
2782Enabled. The breakpoint stops your program. A breakpoint set
2783with the @code{break} command starts out in this state.
2784@item
2785Disabled. The breakpoint has no effect on your program.
2786@item
2787Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 2788disabled.
c906108c
SS
2789@item
2790Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
2791immediately after it does so it is deleted permanently. A breakpoint
2792set with the @code{tbreak} command starts out in this state.
c906108c
SS
2793@end itemize
2794
2795You can use the following commands to enable or disable breakpoints,
2796watchpoints, and catchpoints:
2797
2798@table @code
2799@kindex disable breakpoints
2800@kindex disable
2801@kindex dis
c5394b80 2802@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
2803Disable the specified breakpoints---or all breakpoints, if none are
2804listed. A disabled breakpoint has no effect but is not forgotten. All
2805options such as ignore-counts, conditions and commands are remembered in
2806case the breakpoint is enabled again later. You may abbreviate
2807@code{disable} as @code{dis}.
2808
2809@kindex enable breakpoints
2810@kindex enable
c5394b80 2811@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
2812Enable the specified breakpoints (or all defined breakpoints). They
2813become effective once again in stopping your program.
2814
c5394b80 2815@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
2816Enable the specified breakpoints temporarily. @value{GDBN} disables any
2817of these breakpoints immediately after stopping your program.
2818
c5394b80 2819@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
2820Enable the specified breakpoints to work once, then die. @value{GDBN}
2821deletes any of these breakpoints as soon as your program stops there.
2822@end table
2823
d4f3574e
SS
2824@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
2825@c confusing: tbreak is also initially enabled.
c906108c
SS
2826Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
2827,Setting breakpoints}), breakpoints that you set are initially enabled;
2828subsequently, they become disabled or enabled only when you use one of
2829the commands above. (The command @code{until} can set and delete a
2830breakpoint of its own, but it does not change the state of your other
2831breakpoints; see @ref{Continuing and Stepping, ,Continuing and
2832stepping}.)
2833
53a5351d 2834@node Conditions
c906108c
SS
2835@subsection Break conditions
2836@cindex conditional breakpoints
2837@cindex breakpoint conditions
2838
2839@c FIXME what is scope of break condition expr? Context where wanted?
2840@c in particular for a watchpoint?
2841The simplest sort of breakpoint breaks every time your program reaches a
2842specified place. You can also specify a @dfn{condition} for a
2843breakpoint. A condition is just a Boolean expression in your
2844programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
2845a condition evaluates the expression each time your program reaches it,
2846and your program stops only if the condition is @emph{true}.
2847
2848This is the converse of using assertions for program validation; in that
2849situation, you want to stop when the assertion is violated---that is,
2850when the condition is false. In C, if you want to test an assertion expressed
2851by the condition @var{assert}, you should set the condition
2852@samp{! @var{assert}} on the appropriate breakpoint.
2853
2854Conditions are also accepted for watchpoints; you may not need them,
2855since a watchpoint is inspecting the value of an expression anyhow---but
2856it might be simpler, say, to just set a watchpoint on a variable name,
2857and specify a condition that tests whether the new value is an interesting
2858one.
2859
2860Break conditions can have side effects, and may even call functions in
2861your program. This can be useful, for example, to activate functions
2862that log program progress, or to use your own print functions to
2863format special data structures. The effects are completely predictable
2864unless there is another enabled breakpoint at the same address. (In
2865that case, @value{GDBN} might see the other breakpoint first and stop your
2866program without checking the condition of this one.) Note that
d4f3574e
SS
2867breakpoint commands are usually more convenient and flexible than break
2868conditions for the
c906108c
SS
2869purpose of performing side effects when a breakpoint is reached
2870(@pxref{Break Commands, ,Breakpoint command lists}).
2871
2872Break conditions can be specified when a breakpoint is set, by using
2873@samp{if} in the arguments to the @code{break} command. @xref{Set
2874Breaks, ,Setting breakpoints}. They can also be changed at any time
2875with the @code{condition} command.
53a5351d 2876
c906108c
SS
2877You can also use the @code{if} keyword with the @code{watch} command.
2878The @code{catch} command does not recognize the @code{if} keyword;
2879@code{condition} is the only way to impose a further condition on a
2880catchpoint.
c906108c
SS
2881
2882@table @code
2883@kindex condition
2884@item condition @var{bnum} @var{expression}
2885Specify @var{expression} as the break condition for breakpoint,
2886watchpoint, or catchpoint number @var{bnum}. After you set a condition,
2887breakpoint @var{bnum} stops your program only if the value of
2888@var{expression} is true (nonzero, in C). When you use
2889@code{condition}, @value{GDBN} checks @var{expression} immediately for
2890syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
2891referents in the context of your breakpoint. If @var{expression} uses
2892symbols not referenced in the context of the breakpoint, @value{GDBN}
2893prints an error message:
2894
2895@example
2896No symbol "foo" in current context.
2897@end example
2898
2899@noindent
c906108c
SS
2900@value{GDBN} does
2901not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
2902command (or a command that sets a breakpoint with a condition, like
2903@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
2904
2905@item condition @var{bnum}
2906Remove the condition from breakpoint number @var{bnum}. It becomes
2907an ordinary unconditional breakpoint.
2908@end table
2909
2910@cindex ignore count (of breakpoint)
2911A special case of a breakpoint condition is to stop only when the
2912breakpoint has been reached a certain number of times. This is so
2913useful that there is a special way to do it, using the @dfn{ignore
2914count} of the breakpoint. Every breakpoint has an ignore count, which
2915is an integer. Most of the time, the ignore count is zero, and
2916therefore has no effect. But if your program reaches a breakpoint whose
2917ignore count is positive, then instead of stopping, it just decrements
2918the ignore count by one and continues. As a result, if the ignore count
2919value is @var{n}, the breakpoint does not stop the next @var{n} times
2920your program reaches it.
2921
2922@table @code
2923@kindex ignore
2924@item ignore @var{bnum} @var{count}
2925Set the ignore count of breakpoint number @var{bnum} to @var{count}.
2926The next @var{count} times the breakpoint is reached, your program's
2927execution does not stop; other than to decrement the ignore count, @value{GDBN}
2928takes no action.
2929
2930To make the breakpoint stop the next time it is reached, specify
2931a count of zero.
2932
2933When you use @code{continue} to resume execution of your program from a
2934breakpoint, you can specify an ignore count directly as an argument to
2935@code{continue}, rather than using @code{ignore}. @xref{Continuing and
2936Stepping,,Continuing and stepping}.
2937
2938If a breakpoint has a positive ignore count and a condition, the
2939condition is not checked. Once the ignore count reaches zero,
2940@value{GDBN} resumes checking the condition.
2941
2942You could achieve the effect of the ignore count with a condition such
2943as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
2944is decremented each time. @xref{Convenience Vars, ,Convenience
2945variables}.
2946@end table
2947
2948Ignore counts apply to breakpoints, watchpoints, and catchpoints.
2949
2950
53a5351d 2951@node Break Commands
c906108c
SS
2952@subsection Breakpoint command lists
2953
2954@cindex breakpoint commands
2955You can give any breakpoint (or watchpoint or catchpoint) a series of
2956commands to execute when your program stops due to that breakpoint. For
2957example, you might want to print the values of certain expressions, or
2958enable other breakpoints.
2959
2960@table @code
2961@kindex commands
2962@kindex end
2963@item commands @r{[}@var{bnum}@r{]}
2964@itemx @dots{} @var{command-list} @dots{}
2965@itemx end
2966Specify a list of commands for breakpoint number @var{bnum}. The commands
2967themselves appear on the following lines. Type a line containing just
2968@code{end} to terminate the commands.
2969
2970To remove all commands from a breakpoint, type @code{commands} and
2971follow it immediately with @code{end}; that is, give no commands.
2972
2973With no @var{bnum} argument, @code{commands} refers to the last
2974breakpoint, watchpoint, or catchpoint set (not to the breakpoint most
2975recently encountered).
2976@end table
2977
2978Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
2979disabled within a @var{command-list}.
2980
2981You can use breakpoint commands to start your program up again. Simply
2982use the @code{continue} command, or @code{step}, or any other command
2983that resumes execution.
2984
2985Any other commands in the command list, after a command that resumes
2986execution, are ignored. This is because any time you resume execution
2987(even with a simple @code{next} or @code{step}), you may encounter
2988another breakpoint---which could have its own command list, leading to
2989ambiguities about which list to execute.
2990
2991@kindex silent
2992If the first command you specify in a command list is @code{silent}, the
2993usual message about stopping at a breakpoint is not printed. This may
2994be desirable for breakpoints that are to print a specific message and
2995then continue. If none of the remaining commands print anything, you
2996see no sign that the breakpoint was reached. @code{silent} is
2997meaningful only at the beginning of a breakpoint command list.
2998
2999The commands @code{echo}, @code{output}, and @code{printf} allow you to
3000print precisely controlled output, and are often useful in silent
3001breakpoints. @xref{Output, ,Commands for controlled output}.
3002
3003For example, here is how you could use breakpoint commands to print the
3004value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
3005
3006@example
3007break foo if x>0
3008commands
3009silent
3010printf "x is %d\n",x
3011cont
3012end
3013@end example
3014
3015One application for breakpoint commands is to compensate for one bug so
3016you can test for another. Put a breakpoint just after the erroneous line
3017of code, give it a condition to detect the case in which something
3018erroneous has been done, and give it commands to assign correct values
3019to any variables that need them. End with the @code{continue} command
3020so that your program does not stop, and start with the @code{silent}
3021command so that no output is produced. Here is an example:
3022
3023@example
3024break 403
3025commands
3026silent
3027set x = y + 4
3028cont
3029end
3030@end example
3031
53a5351d 3032@node Breakpoint Menus
c906108c
SS
3033@subsection Breakpoint menus
3034@cindex overloading
3035@cindex symbol overloading
3036
3037Some programming languages (notably C++) permit a single function name
3038to be defined several times, for application in different contexts.
3039This is called @dfn{overloading}. When a function name is overloaded,
3040@samp{break @var{function}} is not enough to tell @value{GDBN} where you want
3041a breakpoint. If you realize this is a problem, you can use
3042something like @samp{break @var{function}(@var{types})} to specify which
3043particular version of the function you want. Otherwise, @value{GDBN} offers
3044you a menu of numbered choices for different possible breakpoints, and
3045waits for your selection with the prompt @samp{>}. The first two
3046options are always @samp{[0] cancel} and @samp{[1] all}. Typing @kbd{1}
3047sets a breakpoint at each definition of @var{function}, and typing
3048@kbd{0} aborts the @code{break} command without setting any new
3049breakpoints.
3050
3051For example, the following session excerpt shows an attempt to set a
3052breakpoint at the overloaded symbol @code{String::after}.
3053We choose three particular definitions of that function name:
3054
3055@c FIXME! This is likely to change to show arg type lists, at least
3056@smallexample
3057@group
3058(@value{GDBP}) b String::after
3059[0] cancel
3060[1] all
3061[2] file:String.cc; line number:867
3062[3] file:String.cc; line number:860
3063[4] file:String.cc; line number:875
3064[5] file:String.cc; line number:853
3065[6] file:String.cc; line number:846
3066[7] file:String.cc; line number:735
3067> 2 4 6
3068Breakpoint 1 at 0xb26c: file String.cc, line 867.
3069Breakpoint 2 at 0xb344: file String.cc, line 875.
3070Breakpoint 3 at 0xafcc: file String.cc, line 846.
3071Multiple breakpoints were set.
3072Use the "delete" command to delete unwanted
3073 breakpoints.
3074(@value{GDBP})
3075@end group
3076@end smallexample
c906108c
SS
3077
3078@c @ifclear BARETARGET
d4f3574e
SS
3079@node Error in Breakpoints
3080@subsection ``Cannot insert breakpoints''
c906108c
SS
3081@c
3082@c FIXME!! 14/6/95 Is there a real example of this? Let's use it.
3083@c
d4f3574e
SS
3084Under some operating systems, breakpoints cannot be used in a program if
3085any other process is running that program. In this situation,
3086attempting to run or continue a program with a breakpoint causes
3087@value{GDBN} to print an error message:
3088
3089@example
3090Cannot insert breakpoints.
3091The same program may be running in another process.
3092@end example
3093
3094When this happens, you have three ways to proceed:
3095
3096@enumerate
3097@item
3098Remove or disable the breakpoints, then continue.
3099
3100@item
3101Suspend @value{GDBN}, and copy the file containing your program to a new
3102name. Resume @value{GDBN} and use the @code{exec-file} command to specify
3103that @value{GDBN} should run your program under that name.
3104Then start your program again.
3105
3106@item
3107Relink your program so that the text segment is nonsharable, using the
3108linker option @samp{-N}. The operating system limitation may not apply
3109to nonsharable executables.
3110@end enumerate
c906108c
SS
3111@c @end ifclear
3112
d4f3574e
SS
3113A similar message can be printed if you request too many active
3114hardware-assisted breakpoints and watchpoints:
3115
3116@c FIXME: the precise wording of this message may change; the relevant
3117@c source change is not committed yet (Sep 3, 1999).
3118@smallexample
3119Stopped; cannot insert breakpoints.
3120You may have requested too many hardware breakpoints and watchpoints.
3121@end smallexample
3122
3123@noindent
3124This message is printed when you attempt to resume the program, since
3125only then @value{GDBN} knows exactly how many hardware breakpoints and
3126watchpoints it needs to insert.
3127
3128When this message is printed, you need to disable or remove some of the
3129hardware-assisted breakpoints and watchpoints, and then continue.
3130
3131
53a5351d 3132@node Continuing and Stepping
c906108c
SS
3133@section Continuing and stepping
3134
3135@cindex stepping
3136@cindex continuing
3137@cindex resuming execution
3138@dfn{Continuing} means resuming program execution until your program
3139completes normally. In contrast, @dfn{stepping} means executing just
3140one more ``step'' of your program, where ``step'' may mean either one
3141line of source code, or one machine instruction (depending on what
7a292a7a
SS
3142particular command you use). Either when continuing or when stepping,
3143your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
3144it stops due to a signal, you may want to use @code{handle}, or use
3145@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
3146
3147@table @code
3148@kindex continue
3149@kindex c
3150@kindex fg
3151@item continue @r{[}@var{ignore-count}@r{]}
3152@itemx c @r{[}@var{ignore-count}@r{]}
3153@itemx fg @r{[}@var{ignore-count}@r{]}
3154Resume program execution, at the address where your program last stopped;
3155any breakpoints set at that address are bypassed. The optional argument
3156@var{ignore-count} allows you to specify a further number of times to
3157ignore a breakpoint at this location; its effect is like that of
3158@code{ignore} (@pxref{Conditions, ,Break conditions}).
3159
3160The argument @var{ignore-count} is meaningful only when your program
3161stopped due to a breakpoint. At other times, the argument to
3162@code{continue} is ignored.
3163
d4f3574e
SS
3164The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
3165debugged program is deemed to be the foreground program) are provided
3166purely for convenience, and have exactly the same behavior as
3167@code{continue}.
c906108c
SS
3168@end table
3169
3170To resume execution at a different place, you can use @code{return}
3171(@pxref{Returning, ,Returning from a function}) to go back to the
3172calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
3173different address}) to go to an arbitrary location in your program.
3174
3175A typical technique for using stepping is to set a breakpoint
3176(@pxref{Breakpoints, ,Breakpoints; watchpoints; and catchpoints}) at the
3177beginning of the function or the section of your program where a problem
3178is believed to lie, run your program until it stops at that breakpoint,
3179and then step through the suspect area, examining the variables that are
3180interesting, until you see the problem happen.
3181
3182@table @code
3183@kindex step
3184@kindex s
3185@item step
3186Continue running your program until control reaches a different source
3187line, then stop it and return control to @value{GDBN}. This command is
3188abbreviated @code{s}.
3189
3190@quotation
3191@c "without debugging information" is imprecise; actually "without line
3192@c numbers in the debugging information". (gcc -g1 has debugging info but
3193@c not line numbers). But it seems complex to try to make that
3194@c distinction here.
3195@emph{Warning:} If you use the @code{step} command while control is
3196within a function that was compiled without debugging information,
3197execution proceeds until control reaches a function that does have
3198debugging information. Likewise, it will not step into a function which
3199is compiled without debugging information. To step through functions
3200without debugging information, use the @code{stepi} command, described
3201below.
3202@end quotation
3203
d4f3574e
SS
3204The @code{step} command only stops at the first instruction of a
3205source line. This prevents the multiple stops that could otherwise occur in
c906108c
SS
3206switch statements, for loops, etc. @code{step} continues to stop if a
3207function that has debugging information is called within the line.
d4f3574e
SS
3208In other words, @code{step} @emph{steps inside} any functions called
3209within the line.
c906108c 3210
d4f3574e
SS
3211Also, the @code{step} command only enters a function if there is line
3212number information for the function. Otherwise it acts like the
c906108c
SS
3213@code{next} command. This avoids problems when using @code{cc -gl}
3214on MIPS machines. Previously, @code{step} entered subroutines if there
3215was any debugging information about the routine.
3216
3217@item step @var{count}
3218Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
3219breakpoint is reached, or a signal not related to stepping occurs before
3220@var{count} steps, stepping stops right away.
c906108c
SS
3221
3222@kindex next
3223@kindex n
3224@item next @r{[}@var{count}@r{]}
3225Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
3226This is similar to @code{step}, but function calls that appear within
3227the line of code are executed without stopping. Execution stops when
3228control reaches a different line of code at the original stack level
3229that was executing when you gave the @code{next} command. This command
3230is abbreviated @code{n}.
c906108c
SS
3231
3232An argument @var{count} is a repeat count, as for @code{step}.
3233
3234
3235@c FIX ME!! Do we delete this, or is there a way it fits in with
3236@c the following paragraph? --- Vctoria
3237@c
3238@c @code{next} within a function that lacks debugging information acts like
3239@c @code{step}, but any function calls appearing within the code of the
3240@c function are executed without stopping.
3241
d4f3574e
SS
3242The @code{next} command only stops at the first instruction of a
3243source line. This prevents multiple stops that could otherwise occur in
c906108c
SS
3244switch statements, for loops, etc.
3245
3246@kindex finish
3247@item finish
3248Continue running until just after function in the selected stack frame
3249returns. Print the returned value (if any).
3250
3251Contrast this with the @code{return} command (@pxref{Returning,
3252,Returning from a function}).
3253
3254@kindex until
3255@kindex u
3256@item until
3257@itemx u
3258Continue running until a source line past the current line, in the
3259current stack frame, is reached. This command is used to avoid single
3260stepping through a loop more than once. It is like the @code{next}
3261command, except that when @code{until} encounters a jump, it
3262automatically continues execution until the program counter is greater
3263than the address of the jump.
3264
3265This means that when you reach the end of a loop after single stepping
3266though it, @code{until} makes your program continue execution until it
3267exits the loop. In contrast, a @code{next} command at the end of a loop
3268simply steps back to the beginning of the loop, which forces you to step
3269through the next iteration.
3270
3271@code{until} always stops your program if it attempts to exit the current
3272stack frame.
3273
3274@code{until} may produce somewhat counterintuitive results if the order
3275of machine code does not match the order of the source lines. For
3276example, in the following excerpt from a debugging session, the @code{f}
3277(@code{frame}) command shows that execution is stopped at line
3278@code{206}; yet when we use @code{until}, we get to line @code{195}:
3279
3280@example
3281(@value{GDBP}) f
3282#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
3283206 expand_input();
3284(@value{GDBP}) until
3285195 for ( ; argc > 0; NEXTARG) @{
3286@end example
3287
3288This happened because, for execution efficiency, the compiler had
3289generated code for the loop closure test at the end, rather than the
3290start, of the loop---even though the test in a C @code{for}-loop is
3291written before the body of the loop. The @code{until} command appeared
3292to step back to the beginning of the loop when it advanced to this
3293expression; however, it has not really gone to an earlier
3294statement---not in terms of the actual machine code.
3295
3296@code{until} with no argument works by means of single
3297instruction stepping, and hence is slower than @code{until} with an
3298argument.
3299
3300@item until @var{location}
3301@itemx u @var{location}
3302Continue running your program until either the specified location is
3303reached, or the current stack frame returns. @var{location} is any of
3304the forms of argument acceptable to @code{break} (@pxref{Set Breaks,
3305,Setting breakpoints}). This form of the command uses breakpoints,
3306and hence is quicker than @code{until} without an argument.
3307
3308@kindex stepi
3309@kindex si
3310@item stepi
96a2c332 3311@itemx stepi @var{arg}
c906108c
SS
3312@itemx si
3313Execute one machine instruction, then stop and return to the debugger.
3314
3315It is often useful to do @samp{display/i $pc} when stepping by machine
3316instructions. This makes @value{GDBN} automatically display the next
3317instruction to be executed, each time your program stops. @xref{Auto
3318Display,, Automatic display}.
3319
3320An argument is a repeat count, as in @code{step}.
3321
3322@need 750
3323@kindex nexti
3324@kindex ni
3325@item nexti
96a2c332 3326@itemx nexti @var{arg}
c906108c
SS
3327@itemx ni
3328Execute one machine instruction, but if it is a function call,
3329proceed until the function returns.
3330
3331An argument is a repeat count, as in @code{next}.
3332@end table
3333
53a5351d 3334@node Signals
c906108c
SS
3335@section Signals
3336@cindex signals
3337
3338A signal is an asynchronous event that can happen in a program. The
3339operating system defines the possible kinds of signals, and gives each
3340kind a name and a number. For example, in Unix @code{SIGINT} is the
d4f3574e 3341signal a program gets when you type an interrupt character (often @kbd{C-c});
c906108c
SS
3342@code{SIGSEGV} is the signal a program gets from referencing a place in
3343memory far away from all the areas in use; @code{SIGALRM} occurs when
3344the alarm clock timer goes off (which happens only if your program has
3345requested an alarm).
3346
3347@cindex fatal signals
3348Some signals, including @code{SIGALRM}, are a normal part of the
3349functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 3350errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
3351program has not specified in advance some other way to handle the signal.
3352@code{SIGINT} does not indicate an error in your program, but it is normally
3353fatal so it can carry out the purpose of the interrupt: to kill the program.
3354
3355@value{GDBN} has the ability to detect any occurrence of a signal in your
3356program. You can tell @value{GDBN} in advance what to do for each kind of
3357signal.
3358
3359@cindex handling signals
3360Normally, @value{GDBN} is set up to ignore non-erroneous signals like @code{SIGALRM}
3361(so as not to interfere with their role in the functioning of your program)
3362but to stop your program immediately whenever an error signal happens.
3363You can change these settings with the @code{handle} command.
3364
3365@table @code
3366@kindex info signals
3367@item info signals
96a2c332 3368@itemx info handle
c906108c
SS
3369Print a table of all the kinds of signals and how @value{GDBN} has been told to
3370handle each one. You can use this to see the signal numbers of all
3371the defined types of signals.
3372
d4f3574e 3373@code{info handle} is an alias for @code{info signals}.
c906108c
SS
3374
3375@kindex handle
3376@item handle @var{signal} @var{keywords}@dots{}
3377Change the way @value{GDBN} handles signal @var{signal}. @var{signal} can
3378be the number of a signal or its name (with or without the @samp{SIG} at the
3379beginning). The @var{keywords} say what change to make.
3380@end table
3381
3382@c @group
3383The keywords allowed by the @code{handle} command can be abbreviated.
3384Their full names are:
3385
3386@table @code
3387@item nostop
3388@value{GDBN} should not stop your program when this signal happens. It may
3389still print a message telling you that the signal has come in.
3390
3391@item stop
3392@value{GDBN} should stop your program when this signal happens. This implies
3393the @code{print} keyword as well.
3394
3395@item print
3396@value{GDBN} should print a message when this signal happens.
3397
3398@item noprint
3399@value{GDBN} should not mention the occurrence of the signal at all. This
3400implies the @code{nostop} keyword as well.
3401
3402@item pass
3403@value{GDBN} should allow your program to see this signal; your program
3404can handle the signal, or else it may terminate if the signal is fatal
3405and not handled.
3406
3407@item nopass
3408@value{GDBN} should not allow your program to see this signal.
3409@end table
3410@c @end group
3411
d4f3574e
SS
3412When a signal stops your program, the signal is not visible to the
3413program until you
c906108c
SS
3414continue. Your program sees the signal then, if @code{pass} is in
3415effect for the signal in question @emph{at that time}. In other words,
3416after @value{GDBN} reports a signal, you can use the @code{handle}
3417command with @code{pass} or @code{nopass} to control whether your
3418program sees that signal when you continue.
3419
3420You can also use the @code{signal} command to prevent your program from
3421seeing a signal, or cause it to see a signal it normally would not see,
3422or to give it any signal at any time. For example, if your program stopped
3423due to some sort of memory reference error, you might store correct
3424values into the erroneous variables and continue, hoping to see more
3425execution; but your program would probably terminate immediately as
3426a result of the fatal signal once it saw the signal. To prevent this,
3427you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
3428program a signal}.
c906108c 3429
53a5351d 3430@node Thread Stops
c906108c
SS
3431@section Stopping and starting multi-thread programs
3432
3433When your program has multiple threads (@pxref{Threads,, Debugging
3434programs with multiple threads}), you can choose whether to set
3435breakpoints on all threads, or on a particular thread.
3436
3437@table @code
3438@cindex breakpoints and threads
3439@cindex thread breakpoints
3440@kindex break @dots{} thread @var{threadno}
3441@item break @var{linespec} thread @var{threadno}
3442@itemx break @var{linespec} thread @var{threadno} if @dots{}
3443@var{linespec} specifies source lines; there are several ways of
3444writing them, but the effect is always to specify some source line.
3445
3446Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
3447to specify that you only want @value{GDBN} to stop the program when a
3448particular thread reaches this breakpoint. @var{threadno} is one of the
3449numeric thread identifiers assigned by @value{GDBN}, shown in the first
3450column of the @samp{info threads} display.
3451
3452If you do not specify @samp{thread @var{threadno}} when you set a
3453breakpoint, the breakpoint applies to @emph{all} threads of your
3454program.
3455
3456You can use the @code{thread} qualifier on conditional breakpoints as
3457well; in this case, place @samp{thread @var{threadno}} before the
3458breakpoint condition, like this:
3459
3460@smallexample
2df3850c 3461(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
3462@end smallexample
3463
3464@end table
3465
3466@cindex stopped threads
3467@cindex threads, stopped
3468Whenever your program stops under @value{GDBN} for any reason,
3469@emph{all} threads of execution stop, not just the current thread. This
3470allows you to examine the overall state of the program, including
3471switching between threads, without worrying that things may change
3472underfoot.
3473
3474@cindex continuing threads
3475@cindex threads, continuing
3476Conversely, whenever you restart the program, @emph{all} threads start
3477executing. @emph{This is true even when single-stepping} with commands
3478like @code{step} or @code{next}.
3479
3480In particular, @value{GDBN} cannot single-step all threads in lockstep.
3481Since thread scheduling is up to your debugging target's operating
3482system (not controlled by @value{GDBN}), other threads may
3483execute more than one statement while the current thread completes a
3484single step. Moreover, in general other threads stop in the middle of a
3485statement, rather than at a clean statement boundary, when the program
3486stops.
3487
3488You might even find your program stopped in another thread after
3489continuing or even single-stepping. This happens whenever some other
3490thread runs into a breakpoint, a signal, or an exception before the
3491first thread completes whatever you requested.
3492
3493On some OSes, you can lock the OS scheduler and thus allow only a single
3494thread to run.
3495
3496@table @code
3497@item set scheduler-locking @var{mode}
3498Set the scheduler locking mode. If it is @code{off}, then there is no
3499locking and any thread may run at any time. If @code{on}, then only the
3500current thread may run when the inferior is resumed. The @code{step}
3501mode optimizes for single-stepping. It stops other threads from
3502``seizing the prompt'' by preempting the current thread while you are
3503stepping. Other threads will only rarely (or never) get a chance to run
d4f3574e 3504when you step. They are more likely to run when you @samp{next} over a
c906108c 3505function call, and they are completely free to run when you use commands
d4f3574e 3506like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
c906108c 3507thread hits a breakpoint during its timeslice, they will never steal the
2df3850c 3508@value{GDBN} prompt away from the thread that you are debugging.
c906108c
SS
3509
3510@item show scheduler-locking
3511Display the current scheduler locking mode.
3512@end table
3513
c906108c 3514
53a5351d 3515@node Stack
c906108c
SS
3516@chapter Examining the Stack
3517
3518When your program has stopped, the first thing you need to know is where it
3519stopped and how it got there.
3520
3521@cindex call stack
3522Each time your program performs a function call, information about the call
3523is generated.
3524That information includes the location of the call in your program,
3525the arguments of the call,
3526and the local variables of the function being called.
3527The information is saved in a block of data called a @dfn{stack frame}.
3528The stack frames are allocated in a region of memory called the @dfn{call
3529stack}.
3530
3531When your program stops, the @value{GDBN} commands for examining the
3532stack allow you to see all of this information.
3533
3534@cindex selected frame
3535One of the stack frames is @dfn{selected} by @value{GDBN} and many
3536@value{GDBN} commands refer implicitly to the selected frame. In
3537particular, whenever you ask @value{GDBN} for the value of a variable in
3538your program, the value is found in the selected frame. There are
3539special @value{GDBN} commands to select whichever frame you are
3540interested in. @xref{Selection, ,Selecting a frame}.
3541
3542When your program stops, @value{GDBN} automatically selects the
3543currently executing frame and describes it briefly, similar to the
3544@code{frame} command (@pxref{Frame Info, ,Information about a frame}).
3545
3546@menu
3547* Frames:: Stack frames
3548* Backtrace:: Backtraces
3549* Selection:: Selecting a frame
3550* Frame Info:: Information on a frame
c906108c
SS
3551
3552@end menu
3553
53a5351d 3554@node Frames
c906108c
SS
3555@section Stack frames
3556
d4f3574e 3557@cindex frame, definition
c906108c
SS
3558@cindex stack frame
3559The call stack is divided up into contiguous pieces called @dfn{stack
3560frames}, or @dfn{frames} for short; each frame is the data associated
3561with one call to one function. The frame contains the arguments given
3562to the function, the function's local variables, and the address at
3563which the function is executing.
3564
3565@cindex initial frame
3566@cindex outermost frame
3567@cindex innermost frame
3568When your program is started, the stack has only one frame, that of the
3569function @code{main}. This is called the @dfn{initial} frame or the
3570@dfn{outermost} frame. Each time a function is called, a new frame is
3571made. Each time a function returns, the frame for that function invocation
3572is eliminated. If a function is recursive, there can be many frames for
3573the same function. The frame for the function in which execution is
3574actually occurring is called the @dfn{innermost} frame. This is the most
3575recently created of all the stack frames that still exist.
3576
3577@cindex frame pointer
3578Inside your program, stack frames are identified by their addresses. A
3579stack frame consists of many bytes, each of which has its own address; each
3580kind of computer has a convention for choosing one byte whose
3581address serves as the address of the frame. Usually this address is kept
3582in a register called the @dfn{frame pointer register} while execution is
3583going on in that frame.
3584
3585@cindex frame number
3586@value{GDBN} assigns numbers to all existing stack frames, starting with
3587zero for the innermost frame, one for the frame that called it,
3588and so on upward. These numbers do not really exist in your program;
3589they are assigned by @value{GDBN} to give you a way of designating stack
3590frames in @value{GDBN} commands.
3591
3592@c below produces an acceptable overful hbox. --mew 13aug1993
3593@cindex frameless execution
3594Some compilers provide a way to compile functions so that they operate
3595without stack frames. (For example, the @code{@value{GCC}} option
3596@samp{-fomit-frame-pointer} generates functions without a frame.)
3597This is occasionally done with heavily used library functions to save
3598the frame setup time. @value{GDBN} has limited facilities for dealing
3599with these function invocations. If the innermost function invocation
3600has no stack frame, @value{GDBN} nevertheless regards it as though
3601it had a separate frame, which is numbered zero as usual, allowing
3602correct tracing of the function call chain. However, @value{GDBN} has
3603no provision for frameless functions elsewhere in the stack.
3604
3605@table @code
d4f3574e 3606@kindex frame@r{, command}
c906108c
SS
3607@item frame @var{args}
3608The @code{frame} command allows you to move from one stack frame to another,
3609and to print the stack frame you select. @var{args} may be either the
3610address of the frame or the stack frame number. Without an argument,
3611@code{frame} prints the current stack frame.
3612
3613@kindex select-frame
3614@item select-frame
3615The @code{select-frame} command allows you to move from one stack frame
3616to another without printing the frame. This is the silent version of
3617@code{frame}.
3618@end table
3619
53a5351d 3620@node Backtrace
c906108c
SS
3621@section Backtraces
3622
3623@cindex backtraces
3624@cindex tracebacks
3625@cindex stack traces
3626A backtrace is a summary of how your program got where it is. It shows one
3627line per frame, for many frames, starting with the currently executing
3628frame (frame zero), followed by its caller (frame one), and on up the
3629stack.
3630
3631@table @code
3632@kindex backtrace
3633@kindex bt
3634@item backtrace
3635@itemx bt
3636Print a backtrace of the entire stack: one line per frame for all
3637frames in the stack.
3638
3639You can stop the backtrace at any time by typing the system interrupt
3640character, normally @kbd{C-c}.
3641
3642@item backtrace @var{n}
3643@itemx bt @var{n}
3644Similar, but print only the innermost @var{n} frames.
3645
3646@item backtrace -@var{n}
3647@itemx bt -@var{n}
3648Similar, but print only the outermost @var{n} frames.
3649@end table
3650
3651@kindex where
3652@kindex info stack
3653@kindex info s
3654The names @code{where} and @code{info stack} (abbreviated @code{info s})
3655are additional aliases for @code{backtrace}.
3656
3657Each line in the backtrace shows the frame number and the function name.
3658The program counter value is also shown---unless you use @code{set
3659print address off}. The backtrace also shows the source file name and
3660line number, as well as the arguments to the function. The program
3661counter value is omitted if it is at the beginning of the code for that
3662line number.
3663
3664Here is an example of a backtrace. It was made with the command
3665@samp{bt 3}, so it shows the innermost three frames.
3666
3667@smallexample
3668@group
3669#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
3670 at builtin.c:993
3671#1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
3672#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
3673 at macro.c:71
3674(More stack frames follow...)
3675@end group
3676@end smallexample
3677
3678@noindent
3679The display for frame zero does not begin with a program counter
3680value, indicating that your program has stopped at the beginning of the
3681code for line @code{993} of @code{builtin.c}.
3682
53a5351d 3683@node Selection
c906108c
SS
3684@section Selecting a frame
3685
3686Most commands for examining the stack and other data in your program work on
3687whichever stack frame is selected at the moment. Here are the commands for
3688selecting a stack frame; all of them finish by printing a brief description
3689of the stack frame just selected.
3690
3691@table @code
d4f3574e 3692@kindex frame@r{, selecting}
c906108c
SS
3693@kindex f
3694@item frame @var{n}
3695@itemx f @var{n}
3696Select frame number @var{n}. Recall that frame zero is the innermost
3697(currently executing) frame, frame one is the frame that called the
3698innermost one, and so on. The highest-numbered frame is the one for
3699@code{main}.
3700
3701@item frame @var{addr}
3702@itemx f @var{addr}
3703Select the frame at address @var{addr}. This is useful mainly if the
3704chaining of stack frames has been damaged by a bug, making it
3705impossible for @value{GDBN} to assign numbers properly to all frames. In
3706addition, this can be useful when your program has multiple stacks and
3707switches between them.
3708
c906108c
SS
3709On the SPARC architecture, @code{frame} needs two addresses to
3710select an arbitrary frame: a frame pointer and a stack pointer.
3711
3712On the MIPS and Alpha architecture, it needs two addresses: a stack
3713pointer and a program counter.
3714
3715On the 29k architecture, it needs three addresses: a register stack
3716pointer, a program counter, and a memory stack pointer.
3717@c note to future updaters: this is conditioned on a flag
3718@c SETUP_ARBITRARY_FRAME in the tm-*.h files. The above is up to date
3719@c as of 27 Jan 1994.
c906108c
SS
3720
3721@kindex up
3722@item up @var{n}
3723Move @var{n} frames up the stack. For positive numbers @var{n}, this
3724advances toward the outermost frame, to higher frame numbers, to frames
3725that have existed longer. @var{n} defaults to one.
3726
3727@kindex down
3728@kindex do
3729@item down @var{n}
3730Move @var{n} frames down the stack. For positive numbers @var{n}, this
3731advances toward the innermost frame, to lower frame numbers, to frames
3732that were created more recently. @var{n} defaults to one. You may
3733abbreviate @code{down} as @code{do}.
3734@end table
3735
3736All of these commands end by printing two lines of output describing the
3737frame. The first line shows the frame number, the function name, the
3738arguments, and the source file and line number of execution in that
3739frame. The second line shows the text of that source line.
3740
3741@need 1000
3742For example:
3743
3744@smallexample
3745@group
3746(@value{GDBP}) up
3747#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
3748 at env.c:10
374910 read_input_file (argv[i]);
3750@end group
3751@end smallexample
3752
3753After such a printout, the @code{list} command with no arguments
3754prints ten lines centered on the point of execution in the frame.
3755@xref{List, ,Printing source lines}.
3756
3757@table @code
3758@kindex down-silently
3759@kindex up-silently
3760@item up-silently @var{n}
3761@itemx down-silently @var{n}
3762These two commands are variants of @code{up} and @code{down},
3763respectively; they differ in that they do their work silently, without
3764causing display of the new frame. They are intended primarily for use
3765in @value{GDBN} command scripts, where the output might be unnecessary and
3766distracting.
3767@end table
3768
53a5351d 3769@node Frame Info
c906108c
SS
3770@section Information about a frame
3771
3772There are several other commands to print information about the selected
3773stack frame.
3774
3775@table @code
3776@item frame
3777@itemx f
3778When used without any argument, this command does not change which
3779frame is selected, but prints a brief description of the currently
3780selected stack frame. It can be abbreviated @code{f}. With an
3781argument, this command is used to select a stack frame.
3782@xref{Selection, ,Selecting a frame}.
3783
3784@kindex info frame
3785@kindex info f
3786@item info frame
3787@itemx info f
3788This command prints a verbose description of the selected stack frame,
3789including:
3790
3791@itemize @bullet
3792@item
3793the address of the frame
3794@item
3795the address of the next frame down (called by this frame)
3796@item
3797the address of the next frame up (caller of this frame)
3798@item
3799the language in which the source code corresponding to this frame is written
3800@item
3801the address of the frame's arguments
3802@item
d4f3574e
SS
3803the address of the frame's local variables
3804@item
c906108c
SS
3805the program counter saved in it (the address of execution in the caller frame)
3806@item
3807which registers were saved in the frame
3808@end itemize
3809
3810@noindent The verbose description is useful when
3811something has gone wrong that has made the stack format fail to fit
3812the usual conventions.
3813
3814@item info frame @var{addr}
3815@itemx info f @var{addr}
3816Print a verbose description of the frame at address @var{addr}, without
3817selecting that frame. The selected frame remains unchanged by this
3818command. This requires the same kind of address (more than one for some
3819architectures) that you specify in the @code{frame} command.
3820@xref{Selection, ,Selecting a frame}.
3821
3822@kindex info args
3823@item info args
3824Print the arguments of the selected frame, each on a separate line.
3825
3826@item info locals
3827@kindex info locals
3828Print the local variables of the selected frame, each on a separate
3829line. These are all variables (declared either static or automatic)
3830accessible at the point of execution of the selected frame.
3831
c906108c 3832@kindex info catch
d4f3574e
SS
3833@cindex catch exceptions, list active handlers
3834@cindex exception handlers, how to list
c906108c
SS
3835@item info catch
3836Print a list of all the exception handlers that are active in the
3837current stack frame at the current point of execution. To see other
3838exception handlers, visit the associated frame (using the @code{up},
3839@code{down}, or @code{frame} commands); then type @code{info catch}.
3840@xref{Set Catchpoints, , Setting catchpoints}.
53a5351d 3841
c906108c
SS
3842@end table
3843
c906108c 3844
53a5351d 3845@node Source
c906108c
SS
3846@chapter Examining Source Files
3847
3848@value{GDBN} can print parts of your program's source, since the debugging
3849information recorded in the program tells @value{GDBN} what source files were
3850used to build it. When your program stops, @value{GDBN} spontaneously prints
3851the line where it stopped. Likewise, when you select a stack frame
3852(@pxref{Selection, ,Selecting a frame}), @value{GDBN} prints the line where
3853execution in that frame has stopped. You can print other portions of
3854source files by explicit command.
3855
7a292a7a 3856If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 3857prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 3858@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
3859
3860@menu
3861* List:: Printing source lines
c906108c 3862* Search:: Searching source files
c906108c
SS
3863* Source Path:: Specifying source directories
3864* Machine Code:: Source and machine code
3865@end menu
3866
53a5351d 3867@node List
c906108c
SS
3868@section Printing source lines
3869
3870@kindex list
3871@kindex l
3872To print lines from a source file, use the @code{list} command
3873(abbreviated @code{l}). By default, ten lines are printed.
3874There are several ways to specify what part of the file you want to print.
3875
3876Here are the forms of the @code{list} command most commonly used:
3877
3878@table @code
3879@item list @var{linenum}
3880Print lines centered around line number @var{linenum} in the
3881current source file.
3882
3883@item list @var{function}
3884Print lines centered around the beginning of function
3885@var{function}.
3886
3887@item list
3888Print more lines. If the last lines printed were printed with a
3889@code{list} command, this prints lines following the last lines
3890printed; however, if the last line printed was a solitary line printed
3891as part of displaying a stack frame (@pxref{Stack, ,Examining the
3892Stack}), this prints lines centered around that line.
3893
3894@item list -
3895Print lines just before the lines last printed.
3896@end table
3897
3898By default, @value{GDBN} prints ten source lines with any of these forms of
3899the @code{list} command. You can change this using @code{set listsize}:
3900
3901@table @code
3902@kindex set listsize
3903@item set listsize @var{count}
3904Make the @code{list} command display @var{count} source lines (unless
3905the @code{list} argument explicitly specifies some other number).
3906
3907@kindex show listsize
3908@item show listsize
3909Display the number of lines that @code{list} prints.
3910@end table
3911
3912Repeating a @code{list} command with @key{RET} discards the argument,
3913so it is equivalent to typing just @code{list}. This is more useful
3914than listing the same lines again. An exception is made for an
3915argument of @samp{-}; that argument is preserved in repetition so that
3916each repetition moves up in the source file.
3917
3918@cindex linespec
3919In general, the @code{list} command expects you to supply zero, one or two
3920@dfn{linespecs}. Linespecs specify source lines; there are several ways
d4f3574e 3921of writing them, but the effect is always to specify some source line.
c906108c
SS
3922Here is a complete description of the possible arguments for @code{list}:
3923
3924@table @code
3925@item list @var{linespec}
3926Print lines centered around the line specified by @var{linespec}.
3927
3928@item list @var{first},@var{last}
3929Print lines from @var{first} to @var{last}. Both arguments are
3930linespecs.
3931
3932@item list ,@var{last}
3933Print lines ending with @var{last}.
3934
3935@item list @var{first},
3936Print lines starting with @var{first}.
3937
3938@item list +
3939Print lines just after the lines last printed.
3940
3941@item list -
3942Print lines just before the lines last printed.
3943
3944@item list
3945As described in the preceding table.
3946@end table
3947
3948Here are the ways of specifying a single source line---all the
3949kinds of linespec.
3950
3951@table @code
3952@item @var{number}
3953Specifies line @var{number} of the current source file.
3954When a @code{list} command has two linespecs, this refers to
3955the same source file as the first linespec.
3956
3957@item +@var{offset}
3958Specifies the line @var{offset} lines after the last line printed.
3959When used as the second linespec in a @code{list} command that has
3960two, this specifies the line @var{offset} lines down from the
3961first linespec.
3962
3963@item -@var{offset}
3964Specifies the line @var{offset} lines before the last line printed.
3965
3966@item @var{filename}:@var{number}
3967Specifies line @var{number} in the source file @var{filename}.
3968
3969@item @var{function}
3970Specifies the line that begins the body of the function @var{function}.
3971For example: in C, this is the line with the open brace.
3972
3973@item @var{filename}:@var{function}
3974Specifies the line of the open-brace that begins the body of the
3975function @var{function} in the file @var{filename}. You only need the
3976file name with a function name to avoid ambiguity when there are
3977identically named functions in different source files.
3978
3979@item *@var{address}
3980Specifies the line containing the program address @var{address}.
3981@var{address} may be any expression.
3982@end table
3983
53a5351d 3984@node Search
c906108c
SS
3985@section Searching source files
3986@cindex searching
3987@kindex reverse-search
3988
3989There are two commands for searching through the current source file for a
3990regular expression.
3991
3992@table @code
3993@kindex search
3994@kindex forward-search
3995@item forward-search @var{regexp}
3996@itemx search @var{regexp}
3997The command @samp{forward-search @var{regexp}} checks each line,
3998starting with the one following the last line listed, for a match for
3999@var{regexp}. It lists the line that is found. You can use the
4000synonym @samp{search @var{regexp}} or abbreviate the command name as
4001@code{fo}.
4002
4003@item reverse-search @var{regexp}
4004The command @samp{reverse-search @var{regexp}} checks each line, starting
4005with the one before the last line listed and going backward, for a match
4006for @var{regexp}. It lists the line that is found. You can abbreviate
4007this command as @code{rev}.
4008@end table
c906108c 4009
53a5351d 4010@node Source Path
c906108c
SS
4011@section Specifying source directories
4012
4013@cindex source path
4014@cindex directories for source files
4015Executable programs sometimes do not record the directories of the source
4016files from which they were compiled, just the names. Even when they do,
4017the directories could be moved between the compilation and your debugging
4018session. @value{GDBN} has a list of directories to search for source files;
4019this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
4020it tries all the directories in the list, in the order they are present
4021in the list, until it finds a file with the desired name. Note that
4022the executable search path is @emph{not} used for this purpose. Neither is
4023the current working directory, unless it happens to be in the source
4024path.
4025
4026If @value{GDBN} cannot find a source file in the source path, and the
4027object program records a directory, @value{GDBN} tries that directory
4028too. If the source path is empty, and there is no record of the
4029compilation directory, @value{GDBN} looks in the current directory as a
4030last resort.
4031
4032Whenever you reset or rearrange the source path, @value{GDBN} clears out
4033any information it has cached about where source files are found and where
4034each line is in the file.
4035
4036@kindex directory
4037@kindex dir
d4f3574e
SS
4038When you start @value{GDBN}, its source path includes only @samp{cdir}
4039and @samp{cwd}, in that order.
c906108c
SS
4040To add other directories, use the @code{directory} command.
4041
4042@table @code
4043@item directory @var{dirname} @dots{}
4044@item dir @var{dirname} @dots{}
4045Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
4046directory names may be given to this command, separated by @samp{:}
4047(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
4048part of absolute file names) or
c906108c
SS
4049whitespace. You may specify a directory that is already in the source
4050path; this moves it forward, so @value{GDBN} searches it sooner.
4051
4052@kindex cdir
4053@kindex cwd
4054@kindex $cdir
4055@kindex $cwd
4056@cindex compilation directory
4057@cindex current directory
4058@cindex working directory
4059@cindex directory, current
4060@cindex directory, compilation
4061You can use the string @samp{$cdir} to refer to the compilation
4062directory (if one is recorded), and @samp{$cwd} to refer to the current
4063working directory. @samp{$cwd} is not the same as @samp{.}---the former
4064tracks the current working directory as it changes during your @value{GDBN}
4065session, while the latter is immediately expanded to the current
4066directory at the time you add an entry to the source path.
4067
4068@item directory
4069Reset the source path to empty again. This requires confirmation.
4070
4071@c RET-repeat for @code{directory} is explicitly disabled, but since
4072@c repeating it would be a no-op we do not say that. (thanks to RMS)
4073
4074@item show directories
4075@kindex show directories
4076Print the source path: show which directories it contains.
4077@end table
4078
4079If your source path is cluttered with directories that are no longer of
4080interest, @value{GDBN} may sometimes cause confusion by finding the wrong
4081versions of source. You can correct the situation as follows:
4082
4083@enumerate
4084@item
4085Use @code{directory} with no argument to reset the source path to empty.
4086
4087@item
4088Use @code{directory} with suitable arguments to reinstall the
4089directories you want in the source path. You can add all the
4090directories in one command.
4091@end enumerate
4092
53a5351d 4093@node Machine Code
c906108c
SS
4094@section Source and machine code
4095
4096You can use the command @code{info line} to map source lines to program
4097addresses (and vice versa), and the command @code{disassemble} to display
4098a range of addresses as machine instructions. When run under @sc{gnu} Emacs
d4f3574e 4099mode, the @code{info line} command causes the arrow to point to the
c906108c
SS
4100line specified. Also, @code{info line} prints addresses in symbolic form as
4101well as hex.
4102
4103@table @code
4104@kindex info line
4105@item info line @var{linespec}
4106Print the starting and ending addresses of the compiled code for
4107source line @var{linespec}. You can specify source lines in any of
4108the ways understood by the @code{list} command (@pxref{List, ,Printing
4109source lines}).
4110@end table
4111
4112For example, we can use @code{info line} to discover the location of
4113the object code for the first line of function
4114@code{m4_changequote}:
4115
d4f3574e
SS
4116@c FIXME: I think this example should also show the addresses in
4117@c symbolic form, as they usually would be displayed.
c906108c 4118@smallexample
96a2c332 4119(@value{GDBP}) info line m4_changequote
c906108c
SS
4120Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
4121@end smallexample
4122
4123@noindent
4124We can also inquire (using @code{*@var{addr}} as the form for
4125@var{linespec}) what source line covers a particular address:
4126@smallexample
4127(@value{GDBP}) info line *0x63ff
4128Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
4129@end smallexample
4130
4131@cindex @code{$_} and @code{info line}
d4f3574e 4132@kindex x@r{, and }@code{info line}
c906108c
SS
4133After @code{info line}, the default address for the @code{x} command
4134is changed to the starting address of the line, so that @samp{x/i} is
4135sufficient to begin examining the machine code (@pxref{Memory,
4136,Examining memory}). Also, this address is saved as the value of the
4137convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
4138variables}).
4139
4140@table @code
4141@kindex disassemble
4142@cindex assembly instructions
4143@cindex instructions, assembly
4144@cindex machine instructions
4145@cindex listing machine instructions
4146@item disassemble
4147This specialized command dumps a range of memory as machine
4148instructions. The default memory range is the function surrounding the
4149program counter of the selected frame. A single argument to this
4150command is a program counter value; @value{GDBN} dumps the function
4151surrounding this value. Two arguments specify a range of addresses
4152(first inclusive, second exclusive) to dump.
4153@end table
4154
c906108c
SS
4155The following example shows the disassembly of a range of addresses of
4156HP PA-RISC 2.0 code:
4157
4158@smallexample
4159(@value{GDBP}) disas 0x32c4 0x32e4
4160Dump of assembler code from 0x32c4 to 0x32e4:
41610x32c4 <main+204>: addil 0,dp
41620x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
41630x32cc <main+212>: ldil 0x3000,r31
41640x32d0 <main+216>: ble 0x3f8(sr4,r31)
41650x32d4 <main+220>: ldo 0(r31),rp
41660x32d8 <main+224>: addil -0x800,dp
41670x32dc <main+228>: ldo 0x588(r1),r26
41680x32e0 <main+232>: ldil 0x3000,r31
4169End of assembler dump.
4170@end smallexample
c906108c
SS
4171
4172Some architectures have more than one commonly-used set of instruction
4173mnemonics or other syntax.
4174
4175@table @code
d4f3574e 4176@kindex set disassembly-flavor
c906108c
SS
4177@cindex assembly instructions
4178@cindex instructions, assembly
4179@cindex machine instructions
4180@cindex listing machine instructions
d4f3574e
SS
4181@cindex Intel disassembly flavor
4182@cindex AT&T disassembly flavor
4183@item set disassembly-flavor @var{instruction-set}
c906108c
SS
4184Select the instruction set to use when disassembling the
4185program via the @code{disassemble} or @code{x/i} commands.
4186
4187Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
4188can set @var{instruction-set} to either @code{intel} or @code{att}.
4189The default is @code{att}, the AT&T flavor used by default by Unix
4190assemblers for x86-based targets.
c906108c
SS
4191@end table
4192
4193
53a5351d 4194@node Data
c906108c
SS
4195@chapter Examining Data
4196
4197@cindex printing data
4198@cindex examining data
4199@kindex print
4200@kindex inspect
4201@c "inspect" is not quite a synonym if you are using Epoch, which we do not
4202@c document because it is nonstandard... Under Epoch it displays in a
4203@c different window or something like that.
4204The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
4205command (abbreviated @code{p}), or its synonym @code{inspect}. It
4206evaluates and prints the value of an expression of the language your
4207program is written in (@pxref{Languages, ,Using @value{GDBN} with
4208Different Languages}).
c906108c
SS
4209
4210@table @code
d4f3574e
SS
4211@item print @var{expr}
4212@itemx print /@var{f} @var{expr}
4213@var{expr} is an expression (in the source language). By default the
4214value of @var{expr} is printed in a format appropriate to its data type;
c906108c 4215you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 4216@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
c906108c
SS
4217formats}.
4218
4219@item print
4220@itemx print /@var{f}
d4f3574e 4221If you omit @var{expr}, @value{GDBN} displays the last value again (from the
c906108c
SS
4222@dfn{value history}; @pxref{Value History, ,Value history}). This allows you to
4223conveniently inspect the same value in an alternative format.
4224@end table
4225
4226A more low-level way of examining data is with the @code{x} command.
4227It examines data in memory at a specified address and prints it in a
4228specified format. @xref{Memory, ,Examining memory}.
4229
7a292a7a 4230If you are interested in information about types, or about how the
d4f3574e
SS
4231fields of a struct or a class are declared, use the @code{ptype @var{exp}}
4232command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 4233Table}.
c906108c
SS
4234
4235@menu
4236* Expressions:: Expressions
4237* Variables:: Program variables
4238* Arrays:: Artificial arrays
4239* Output Formats:: Output formats
4240* Memory:: Examining memory
4241* Auto Display:: Automatic display
4242* Print Settings:: Print settings
4243* Value History:: Value history
4244* Convenience Vars:: Convenience variables
4245* Registers:: Registers
c906108c 4246* Floating Point Hardware:: Floating point hardware
c906108c
SS
4247@end menu
4248
53a5351d 4249@node Expressions
c906108c
SS
4250@section Expressions
4251
4252@cindex expressions
4253@code{print} and many other @value{GDBN} commands accept an expression and
4254compute its value. Any kind of constant, variable or operator defined
4255by the programming language you are using is valid in an expression in
4256@value{GDBN}. This includes conditional expressions, function calls, casts
4257and string constants. It unfortunately does not include symbols defined
4258by preprocessor @code{#define} commands.
4259
d4f3574e
SS
4260@value{GDBN} supports array constants in expressions input by
4261the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
4262you can use the command @code{print @{1, 2, 3@}} to build up an array in
4263memory that is @code{malloc}ed in the target program.
c906108c 4264
c906108c
SS
4265Because C is so widespread, most of the expressions shown in examples in
4266this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
4267Languages}, for information on how to use expressions in other
4268languages.
4269
4270In this section, we discuss operators that you can use in @value{GDBN}
4271expressions regardless of your programming language.
4272
4273Casts are supported in all languages, not just in C, because it is so
4274useful to cast a number into a pointer in order to examine a structure
4275at that address in memory.
4276@c FIXME: casts supported---Mod2 true?
c906108c
SS
4277
4278@value{GDBN} supports these operators, in addition to those common
4279to programming languages:
4280
4281@table @code
4282@item @@
4283@samp{@@} is a binary operator for treating parts of memory as arrays.
4284@xref{Arrays, ,Artificial arrays}, for more information.
4285
4286@item ::
4287@samp{::} allows you to specify a variable in terms of the file or
4288function where it is defined. @xref{Variables, ,Program variables}.
4289
4290@cindex @{@var{type}@}
4291@cindex type casting memory
4292@cindex memory, viewing as typed object
4293@cindex casts, to view memory
4294@item @{@var{type}@} @var{addr}
4295Refers to an object of type @var{type} stored at address @var{addr} in
4296memory. @var{addr} may be any expression whose value is an integer or
4297pointer (but parentheses are required around binary operators, just as in
4298a cast). This construct is allowed regardless of what kind of data is
4299normally supposed to reside at @var{addr}.
4300@end table
4301
53a5351d 4302@node Variables
c906108c
SS
4303@section Program variables
4304
4305The most common kind of expression to use is the name of a variable
4306in your program.
4307
4308Variables in expressions are understood in the selected stack frame
4309(@pxref{Selection, ,Selecting a frame}); they must be either:
4310
4311@itemize @bullet
4312@item
4313global (or file-static)
4314@end itemize
4315
4316@noindent or
4317
4318@itemize @bullet
4319@item
4320visible according to the scope rules of the
4321programming language from the point of execution in that frame
4322@end itemize
4323
4324@noindent This means that in the function
4325
4326@example
4327foo (a)
4328 int a;
4329@{
4330 bar (a);
4331 @{
4332 int b = test ();
4333 bar (b);
4334 @}
4335@}
4336@end example
4337
4338@noindent
4339you can examine and use the variable @code{a} whenever your program is
4340executing within the function @code{foo}, but you can only use or
4341examine the variable @code{b} while your program is executing inside
4342the block where @code{b} is declared.
4343
4344@cindex variable name conflict
4345There is an exception: you can refer to a variable or function whose
4346scope is a single source file even if the current execution point is not
4347in this file. But it is possible to have more than one such variable or
4348function with the same name (in different source files). If that
4349happens, referring to that name has unpredictable effects. If you wish,
4350you can specify a static variable in a particular function or file,
4351using the colon-colon notation:
4352
d4f3574e 4353@cindex colon-colon, context for variables/functions
c906108c
SS
4354@iftex
4355@c info cannot cope with a :: index entry, but why deprive hard copy readers?
4356@kindex ::
4357@end iftex
4358@example
4359@var{file}::@var{variable}
4360@var{function}::@var{variable}
4361@end example
4362
4363@noindent
4364Here @var{file} or @var{function} is the name of the context for the
4365static @var{variable}. In the case of file names, you can use quotes to
4366make sure @value{GDBN} parses the file name as a single word---for example,
4367to print a global value of @code{x} defined in @file{f2.c}:
4368
4369@example
4370(@value{GDBP}) p 'f2.c'::x
4371@end example
4372
c906108c
SS
4373@cindex C++ scope resolution
4374This use of @samp{::} is very rarely in conflict with the very similar
4375use of the same notation in C++. @value{GDBN} also supports use of the C++
4376scope resolution operator in @value{GDBN} expressions.
4377@c FIXME: Um, so what happens in one of those rare cases where it's in
4378@c conflict?? --mew
c906108c
SS
4379
4380@cindex wrong values
4381@cindex variable values, wrong
4382@quotation
4383@emph{Warning:} Occasionally, a local variable may appear to have the
4384wrong value at certain points in a function---just after entry to a new
4385scope, and just before exit.
4386@end quotation
4387You may see this problem when you are stepping by machine instructions.
4388This is because, on most machines, it takes more than one instruction to
4389set up a stack frame (including local variable definitions); if you are
4390stepping by machine instructions, variables may appear to have the wrong
4391values until the stack frame is completely built. On exit, it usually
4392also takes more than one machine instruction to destroy a stack frame;
4393after you begin stepping through that group of instructions, local
4394variable definitions may be gone.
4395
4396This may also happen when the compiler does significant optimizations.
4397To be sure of always seeing accurate values, turn off all optimization
4398when compiling.
4399
d4f3574e
SS
4400@cindex ``No symbol "foo" in current context''
4401Another possible effect of compiler optimizations is to optimize
4402unused variables out of existence, or assign variables to registers (as
4403opposed to memory addresses). Depending on the support for such cases
4404offered by the debug info format used by the compiler, @value{GDBN}
4405might not be able to display values for such local variables. If that
4406happens, @value{GDBN} will print a message like this:
4407
4408@example
4409No symbol "foo" in current context.
4410@end example
4411
4412To solve such problems, either recompile without optimizations, or use a
4413different debug info format, if the compiler supports several such
4414formats. For example, @value{NGCC}, the @sc{gnu} C/C++ compiler usually
4415supports the @samp{-gstabs} option. @samp{-gstabs} produces debug info
4416in a format that is superior to formats such as COFF. You may be able
4417to use DWARF-2 (@samp{-gdwarf-2}), which is also an effective form for
4418debug info. See @ref{Debugging Options,,Options for Debugging Your
4419Program or @sc{gnu} CC, gcc.info, Using @sc{gnu} CC}, for more
4420information.
4421
4422
53a5351d 4423@node Arrays
c906108c
SS
4424@section Artificial arrays
4425
4426@cindex artificial array
4427@kindex @@
4428It is often useful to print out several successive objects of the
4429same type in memory; a section of an array, or an array of
4430dynamically determined size for which only a pointer exists in the
4431program.
4432
4433You can do this by referring to a contiguous span of memory as an
4434@dfn{artificial array}, using the binary operator @samp{@@}. The left
4435operand of @samp{@@} should be the first element of the desired array
4436and be an individual object. The right operand should be the desired length
4437of the array. The result is an array value whose elements are all of
4438the type of the left argument. The first element is actually the left
4439argument; the second element comes from bytes of memory immediately
4440following those that hold the first element, and so on. Here is an
4441example. If a program says
4442
4443@example
4444int *array = (int *) malloc (len * sizeof (int));
4445@end example
4446
4447@noindent
4448you can print the contents of @code{array} with
4449
4450@example
4451p *array@@len
4452@end example
4453
4454The left operand of @samp{@@} must reside in memory. Array values made
4455with @samp{@@} in this way behave just like other arrays in terms of
4456subscripting, and are coerced to pointers when used in expressions.
4457Artificial arrays most often appear in expressions via the value history
4458(@pxref{Value History, ,Value history}), after printing one out.
4459
4460Another way to create an artificial array is to use a cast.
4461This re-interprets a value as if it were an array.
4462The value need not be in memory:
4463@example
4464(@value{GDBP}) p/x (short[2])0x12345678
4465$1 = @{0x1234, 0x5678@}
4466@end example
4467
4468As a convenience, if you leave the array length out (as in
c3f6f71d 4469@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c
SS
4470the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
4471@example
4472(@value{GDBP}) p/x (short[])0x12345678
4473$2 = @{0x1234, 0x5678@}
4474@end example
4475
4476Sometimes the artificial array mechanism is not quite enough; in
4477moderately complex data structures, the elements of interest may not
4478actually be adjacent---for example, if you are interested in the values
4479of pointers in an array. One useful work-around in this situation is
4480to use a convenience variable (@pxref{Convenience Vars, ,Convenience
4481variables}) as a counter in an expression that prints the first
4482interesting value, and then repeat that expression via @key{RET}. For
4483instance, suppose you have an array @code{dtab} of pointers to
4484structures, and you are interested in the values of a field @code{fv}
4485in each structure. Here is an example of what you might type:
4486
4487@example
4488set $i = 0
4489p dtab[$i++]->fv
4490@key{RET}
4491@key{RET}
4492@dots{}
4493@end example
4494
53a5351d 4495@node Output Formats
c906108c
SS
4496@section Output formats
4497
4498@cindex formatted output
4499@cindex output formats
4500By default, @value{GDBN} prints a value according to its data type. Sometimes
4501this is not what you want. For example, you might want to print a number
4502in hex, or a pointer in decimal. Or you might want to view data in memory
4503at a certain address as a character string or as an instruction. To do
4504these things, specify an @dfn{output format} when you print a value.
4505
4506The simplest use of output formats is to say how to print a value
4507already computed. This is done by starting the arguments of the
4508@code{print} command with a slash and a format letter. The format
4509letters supported are:
4510
4511@table @code
4512@item x
4513Regard the bits of the value as an integer, and print the integer in
4514hexadecimal.
4515
4516@item d
4517Print as integer in signed decimal.
4518
4519@item u
4520Print as integer in unsigned decimal.
4521
4522@item o
4523Print as integer in octal.
4524
4525@item t
4526Print as integer in binary. The letter @samp{t} stands for ``two''.
4527@footnote{@samp{b} cannot be used because these format letters are also
4528used with the @code{x} command, where @samp{b} stands for ``byte'';
d4f3574e 4529see @ref{Memory,,Examining memory}.}
c906108c
SS
4530
4531@item a
4532@cindex unknown address, locating
4533Print as an address, both absolute in hexadecimal and as an offset from
4534the nearest preceding symbol. You can use this format used to discover
4535where (in what function) an unknown address is located:
4536
4537@example
4538(@value{GDBP}) p/a 0x54320
4539$3 = 0x54320 <_initialize_vx+396>
4540@end example
4541
4542@item c
4543Regard as an integer and print it as a character constant.
4544
4545@item f
4546Regard the bits of the value as a floating point number and print
4547using typical floating point syntax.
4548@end table
4549
4550For example, to print the program counter in hex (@pxref{Registers}), type
4551
4552@example
4553p/x $pc
4554@end example
4555
4556@noindent
4557Note that no space is required before the slash; this is because command
4558names in @value{GDBN} cannot contain a slash.
4559
4560To reprint the last value in the value history with a different format,
4561you can use the @code{print} command with just a format and no
4562expression. For example, @samp{p/x} reprints the last value in hex.
4563
53a5351d 4564@node Memory
c906108c
SS
4565@section Examining memory
4566
4567You can use the command @code{x} (for ``examine'') to examine memory in
4568any of several formats, independently of your program's data types.
4569
4570@cindex examining memory
4571@table @code
4572@kindex x
4573@item x/@var{nfu} @var{addr}
4574@itemx x @var{addr}
4575@itemx x
4576Use the @code{x} command to examine memory.
4577@end table
4578
4579@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
4580much memory to display and how to format it; @var{addr} is an
4581expression giving the address where you want to start displaying memory.
4582If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
4583Several commands set convenient defaults for @var{addr}.
4584
4585@table @r
4586@item @var{n}, the repeat count
4587The repeat count is a decimal integer; the default is 1. It specifies
4588how much memory (counting by units @var{u}) to display.
4589@c This really is **decimal**; unaffected by 'set radix' as of GDB
4590@c 4.1.2.
4591
4592@item @var{f}, the display format
4593The display format is one of the formats used by @code{print},
4594@samp{s} (null-terminated string), or @samp{i} (machine instruction).
4595The default is @samp{x} (hexadecimal) initially.
4596The default changes each time you use either @code{x} or @code{print}.
4597
4598@item @var{u}, the unit size
4599The unit size is any of
4600
4601@table @code
4602@item b
4603Bytes.
4604@item h
4605Halfwords (two bytes).
4606@item w
4607Words (four bytes). This is the initial default.
4608@item g
4609Giant words (eight bytes).
4610@end table
4611
4612Each time you specify a unit size with @code{x}, that size becomes the
4613default unit the next time you use @code{x}. (For the @samp{s} and
4614@samp{i} formats, the unit size is ignored and is normally not written.)
4615
4616@item @var{addr}, starting display address
4617@var{addr} is the address where you want @value{GDBN} to begin displaying
4618memory. The expression need not have a pointer value (though it may);
4619it is always interpreted as an integer address of a byte of memory.
4620@xref{Expressions, ,Expressions}, for more information on expressions. The default for
4621@var{addr} is usually just after the last address examined---but several
4622other commands also set the default address: @code{info breakpoints} (to
4623the address of the last breakpoint listed), @code{info line} (to the
4624starting address of a line), and @code{print} (if you use it to display
4625a value from memory).
4626@end table
4627
4628For example, @samp{x/3uh 0x54320} is a request to display three halfwords
4629(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
4630starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
4631words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 4632@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
4633
4634Since the letters indicating unit sizes are all distinct from the
4635letters specifying output formats, you do not have to remember whether
4636unit size or format comes first; either order works. The output
4637specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
4638(However, the count @var{n} must come first; @samp{wx4} does not work.)
4639
4640Even though the unit size @var{u} is ignored for the formats @samp{s}
4641and @samp{i}, you might still want to use a count @var{n}; for example,
4642@samp{3i} specifies that you want to see three machine instructions,
4643including any operands. The command @code{disassemble} gives an
d4f3574e 4644alternative way of inspecting machine instructions; see @ref{Machine
c906108c
SS
4645Code,,Source and machine code}.
4646
4647All the defaults for the arguments to @code{x} are designed to make it
4648easy to continue scanning memory with minimal specifications each time
4649you use @code{x}. For example, after you have inspected three machine
4650instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
4651with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
4652the repeat count @var{n} is used again; the other arguments default as
4653for successive uses of @code{x}.
4654
4655@cindex @code{$_}, @code{$__}, and value history
4656The addresses and contents printed by the @code{x} command are not saved
4657in the value history because there is often too much of them and they
4658would get in the way. Instead, @value{GDBN} makes these values available for
4659subsequent use in expressions as values of the convenience variables
4660@code{$_} and @code{$__}. After an @code{x} command, the last address
4661examined is available for use in expressions in the convenience variable
4662@code{$_}. The contents of that address, as examined, are available in
4663the convenience variable @code{$__}.
4664
4665If the @code{x} command has a repeat count, the address and contents saved
4666are from the last memory unit printed; this is not the same as the last
4667address printed if several units were printed on the last line of output.
4668
53a5351d 4669@node Auto Display
c906108c
SS
4670@section Automatic display
4671@cindex automatic display
4672@cindex display of expressions
4673
4674If you find that you want to print the value of an expression frequently
4675(to see how it changes), you might want to add it to the @dfn{automatic
4676display list} so that @value{GDBN} prints its value each time your program stops.
4677Each expression added to the list is given a number to identify it;
4678to remove an expression from the list, you specify that number.
4679The automatic display looks like this:
4680
4681@example
46822: foo = 38
46833: bar[5] = (struct hack *) 0x3804
4684@end example
4685
4686@noindent
4687This display shows item numbers, expressions and their current values. As with
4688displays you request manually using @code{x} or @code{print}, you can
4689specify the output format you prefer; in fact, @code{display} decides
4690whether to use @code{print} or @code{x} depending on how elaborate your
4691format specification is---it uses @code{x} if you specify a unit size,
4692or one of the two formats (@samp{i} and @samp{s}) that are only
4693supported by @code{x}; otherwise it uses @code{print}.
4694
4695@table @code
4696@kindex display
d4f3574e
SS
4697@item display @var{expr}
4698Add the expression @var{expr} to the list of expressions to display
c906108c
SS
4699each time your program stops. @xref{Expressions, ,Expressions}.
4700
4701@code{display} does not repeat if you press @key{RET} again after using it.
4702
d4f3574e 4703@item display/@var{fmt} @var{expr}
c906108c 4704For @var{fmt} specifying only a display format and not a size or
d4f3574e 4705count, add the expression @var{expr} to the auto-display list but
c906108c
SS
4706arrange to display it each time in the specified format @var{fmt}.
4707@xref{Output Formats,,Output formats}.
4708
4709@item display/@var{fmt} @var{addr}
4710For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
4711number of units, add the expression @var{addr} as a memory address to
4712be examined each time your program stops. Examining means in effect
4713doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining memory}.
4714@end table
4715
4716For example, @samp{display/i $pc} can be helpful, to see the machine
4717instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 4718is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
4719
4720@table @code
4721@kindex delete display
4722@kindex undisplay
4723@item undisplay @var{dnums}@dots{}
4724@itemx delete display @var{dnums}@dots{}
4725Remove item numbers @var{dnums} from the list of expressions to display.
4726
4727@code{undisplay} does not repeat if you press @key{RET} after using it.
4728(Otherwise you would just get the error @samp{No display number @dots{}}.)
4729
4730@kindex disable display
4731@item disable display @var{dnums}@dots{}
4732Disable the display of item numbers @var{dnums}. A disabled display
4733item is not printed automatically, but is not forgotten. It may be
4734enabled again later.
4735
4736@kindex enable display
4737@item enable display @var{dnums}@dots{}
4738Enable display of item numbers @var{dnums}. It becomes effective once
4739again in auto display of its expression, until you specify otherwise.
4740
4741@item display
4742Display the current values of the expressions on the list, just as is
4743done when your program stops.
4744
4745@kindex info display
4746@item info display
4747Print the list of expressions previously set up to display
4748automatically, each one with its item number, but without showing the
4749values. This includes disabled expressions, which are marked as such.
4750It also includes expressions which would not be displayed right now
4751because they refer to automatic variables not currently available.
4752@end table
4753
4754If a display expression refers to local variables, then it does not make
4755sense outside the lexical context for which it was set up. Such an
4756expression is disabled when execution enters a context where one of its
4757variables is not defined. For example, if you give the command
4758@code{display last_char} while inside a function with an argument
4759@code{last_char}, @value{GDBN} displays this argument while your program
4760continues to stop inside that function. When it stops elsewhere---where
4761there is no variable @code{last_char}---the display is disabled
4762automatically. The next time your program stops where @code{last_char}
4763is meaningful, you can enable the display expression once again.
4764
53a5351d 4765@node Print Settings
c906108c
SS
4766@section Print settings
4767
4768@cindex format options
4769@cindex print settings
4770@value{GDBN} provides the following ways to control how arrays, structures,
4771and symbols are printed.
4772
4773@noindent
4774These settings are useful for debugging programs in any language:
4775
4776@table @code
4777@kindex set print address
4778@item set print address
4779@itemx set print address on
4780@value{GDBN} prints memory addresses showing the location of stack
4781traces, structure values, pointer values, breakpoints, and so forth,
4782even when it also displays the contents of those addresses. The default
4783is @code{on}. For example, this is what a stack frame display looks like with
4784@code{set print address on}:
4785
4786@smallexample
4787@group
4788(@value{GDBP}) f
4789#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
4790 at input.c:530
4791530 if (lquote != def_lquote)
4792@end group
4793@end smallexample
4794
4795@item set print address off
4796Do not print addresses when displaying their contents. For example,
4797this is the same stack frame displayed with @code{set print address off}:
4798
4799@smallexample
4800@group
4801(@value{GDBP}) set print addr off
4802(@value{GDBP}) f
4803#0 set_quotes (lq="<<", rq=">>") at input.c:530
4804530 if (lquote != def_lquote)
4805@end group
4806@end smallexample
4807
4808You can use @samp{set print address off} to eliminate all machine
4809dependent displays from the @value{GDBN} interface. For example, with
4810@code{print address off}, you should get the same text for backtraces on
4811all machines---whether or not they involve pointer arguments.
4812
4813@kindex show print address
4814@item show print address
4815Show whether or not addresses are to be printed.
4816@end table
4817
4818When @value{GDBN} prints a symbolic address, it normally prints the
4819closest earlier symbol plus an offset. If that symbol does not uniquely
4820identify the address (for example, it is a name whose scope is a single
4821source file), you may need to clarify. One way to do this is with
4822@code{info line}, for example @samp{info line *0x4537}. Alternately,
4823you can set @value{GDBN} to print the source file and line number when
4824it prints a symbolic address:
4825
4826@table @code
4827@kindex set print symbol-filename
4828@item set print symbol-filename on
4829Tell @value{GDBN} to print the source file name and line number of a
4830symbol in the symbolic form of an address.
4831
4832@item set print symbol-filename off
4833Do not print source file name and line number of a symbol. This is the
4834default.
4835
4836@kindex show print symbol-filename
4837@item show print symbol-filename
4838Show whether or not @value{GDBN} will print the source file name and
4839line number of a symbol in the symbolic form of an address.
4840@end table
4841
4842Another situation where it is helpful to show symbol filenames and line
4843numbers is when disassembling code; @value{GDBN} shows you the line
4844number and source file that corresponds to each instruction.
4845
4846Also, you may wish to see the symbolic form only if the address being
4847printed is reasonably close to the closest earlier symbol:
4848
4849@table @code
4850@kindex set print max-symbolic-offset
4851@item set print max-symbolic-offset @var{max-offset}
4852Tell @value{GDBN} to only display the symbolic form of an address if the
4853offset between the closest earlier symbol and the address is less than
4854@var{max-offset}. The default is 0, which tells @value{GDBN}
4855to always print the symbolic form of an address if any symbol precedes it.
4856
4857@kindex show print max-symbolic-offset
4858@item show print max-symbolic-offset
4859Ask how large the maximum offset is that @value{GDBN} prints in a
4860symbolic address.
4861@end table
4862
4863@cindex wild pointer, interpreting
4864@cindex pointer, finding referent
4865If you have a pointer and you are not sure where it points, try
4866@samp{set print symbol-filename on}. Then you can determine the name
4867and source file location of the variable where it points, using
4868@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
4869For example, here @value{GDBN} shows that a variable @code{ptt} points
4870at another variable @code{t}, defined in @file{hi2.c}:
4871
4872@example
4873(@value{GDBP}) set print symbol-filename on
4874(@value{GDBP}) p/a ptt
4875$4 = 0xe008 <t in hi2.c>
4876@end example
4877
4878@quotation
4879@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
4880does not show the symbol name and filename of the referent, even with
4881the appropriate @code{set print} options turned on.
4882@end quotation
4883
4884Other settings control how different kinds of objects are printed:
4885
4886@table @code
4887@kindex set print array
4888@item set print array
4889@itemx set print array on
4890Pretty print arrays. This format is more convenient to read,
4891but uses more space. The default is off.
4892
4893@item set print array off
4894Return to compressed format for arrays.
4895
4896@kindex show print array
4897@item show print array
4898Show whether compressed or pretty format is selected for displaying
4899arrays.
4900
4901@kindex set print elements
4902@item set print elements @var{number-of-elements}
4903Set a limit on how many elements of an array @value{GDBN} will print.
4904If @value{GDBN} is printing a large array, it stops printing after it has
4905printed the number of elements set by the @code{set print elements} command.
4906This limit also applies to the display of strings.
d4f3574e 4907When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
4908Setting @var{number-of-elements} to zero means that the printing is unlimited.
4909
4910@kindex show print elements
4911@item show print elements
4912Display the number of elements of a large array that @value{GDBN} will print.
4913If the number is 0, then the printing is unlimited.
4914
4915@kindex set print null-stop
4916@item set print null-stop
4917Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 4918@sc{null} is encountered. This is useful when large arrays actually
c906108c 4919contain only short strings.
d4f3574e 4920The default is off.
c906108c
SS
4921
4922@kindex set print pretty
4923@item set print pretty on
4924Cause @value{GDBN} to print structures in an indented format with one member
4925per line, like this:
4926
4927@smallexample
4928@group
4929$1 = @{
4930 next = 0x0,
4931 flags = @{
4932 sweet = 1,
4933 sour = 1
4934 @},
4935 meat = 0x54 "Pork"
4936@}
4937@end group
4938@end smallexample
4939
4940@item set print pretty off
4941Cause @value{GDBN} to print structures in a compact format, like this:
4942
4943@smallexample
4944@group
4945$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
4946meat = 0x54 "Pork"@}
4947@end group
4948@end smallexample
4949
4950@noindent
4951This is the default format.
4952
4953@kindex show print pretty
4954@item show print pretty
4955Show which format @value{GDBN} is using to print structures.
4956
4957@kindex set print sevenbit-strings
4958@item set print sevenbit-strings on
4959Print using only seven-bit characters; if this option is set,
4960@value{GDBN} displays any eight-bit characters (in strings or
4961character values) using the notation @code{\}@var{nnn}. This setting is
4962best if you are working in English (@sc{ascii}) and you use the
4963high-order bit of characters as a marker or ``meta'' bit.
4964
4965@item set print sevenbit-strings off
4966Print full eight-bit characters. This allows the use of more
4967international character sets, and is the default.
4968
4969@kindex show print sevenbit-strings
4970@item show print sevenbit-strings
4971Show whether or not @value{GDBN} is printing only seven-bit characters.
4972
4973@kindex set print union
4974@item set print union on
4975Tell @value{GDBN} to print unions which are contained in structures. This
4976is the default setting.
4977
4978@item set print union off
4979Tell @value{GDBN} not to print unions which are contained in structures.
4980
4981@kindex show print union
4982@item show print union
4983Ask @value{GDBN} whether or not it will print unions which are contained in
4984structures.
4985
4986For example, given the declarations
4987
4988@smallexample
4989typedef enum @{Tree, Bug@} Species;
4990typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
4991typedef enum @{Caterpillar, Cocoon, Butterfly@}
4992 Bug_forms;
4993
4994struct thing @{
4995 Species it;
4996 union @{
4997 Tree_forms tree;
4998 Bug_forms bug;
4999 @} form;
5000@};
5001
5002struct thing foo = @{Tree, @{Acorn@}@};
5003@end smallexample
5004
5005@noindent
5006with @code{set print union on} in effect @samp{p foo} would print
5007
5008@smallexample
5009$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
5010@end smallexample
5011
5012@noindent
5013and with @code{set print union off} in effect it would print
5014
5015@smallexample
5016$1 = @{it = Tree, form = @{...@}@}
5017@end smallexample
5018@end table
5019
c906108c
SS
5020@need 1000
5021@noindent
5022These settings are of interest when debugging C++ programs:
5023
5024@table @code
5025@cindex demangling
5026@kindex set print demangle
5027@item set print demangle
5028@itemx set print demangle on
5029Print C++ names in their source form rather than in the encoded
5030(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 5031linkage. The default is on.
c906108c
SS
5032
5033@kindex show print demangle
5034@item show print demangle
5035Show whether C++ names are printed in mangled or demangled form.
5036
5037@kindex set print asm-demangle
5038@item set print asm-demangle
5039@itemx set print asm-demangle on
5040Print C++ names in their source form rather than their mangled form, even
5041in assembler code printouts such as instruction disassemblies.
5042The default is off.
5043
5044@kindex show print asm-demangle
5045@item show print asm-demangle
5046Show whether C++ names in assembly listings are printed in mangled
5047or demangled form.
5048
5049@kindex set demangle-style
5050@cindex C++ symbol decoding style
5051@cindex symbol decoding style, C++
5052@item set demangle-style @var{style}
5053Choose among several encoding schemes used by different compilers to
5054represent C++ names. The choices for @var{style} are currently:
5055
5056@table @code
5057@item auto
5058Allow @value{GDBN} to choose a decoding style by inspecting your program.
5059
5060@item gnu
5061Decode based on the @sc{gnu} C++ compiler (@code{g++}) encoding algorithm.
c906108c 5062This is the default.
c906108c
SS
5063
5064@item hp
5065Decode based on the HP ANSI C++ (@code{aCC}) encoding algorithm.
5066
5067@item lucid
5068Decode based on the Lucid C++ compiler (@code{lcc}) encoding algorithm.
5069
5070@item arm
5071Decode using the algorithm in the @cite{C++ Annotated Reference Manual}.
5072@strong{Warning:} this setting alone is not sufficient to allow
5073debugging @code{cfront}-generated executables. @value{GDBN} would
5074require further enhancement to permit that.
5075
5076@end table
5077If you omit @var{style}, you will see a list of possible formats.
5078
5079@kindex show demangle-style
5080@item show demangle-style
5081Display the encoding style currently in use for decoding C++ symbols.
5082
5083@kindex set print object
5084@item set print object
5085@itemx set print object on
5086When displaying a pointer to an object, identify the @emph{actual}
5087(derived) type of the object rather than the @emph{declared} type, using
5088the virtual function table.
5089
5090@item set print object off
5091Display only the declared type of objects, without reference to the
5092virtual function table. This is the default setting.
5093
5094@kindex show print object
5095@item show print object
5096Show whether actual, or declared, object types are displayed.
5097
5098@kindex set print static-members
5099@item set print static-members
5100@itemx set print static-members on
5101Print static members when displaying a C++ object. The default is on.
5102
5103@item set print static-members off
5104Do not print static members when displaying a C++ object.
5105
5106@kindex show print static-members
5107@item show print static-members
5108Show whether C++ static members are printed, or not.
5109
5110@c These don't work with HP ANSI C++ yet.
5111@kindex set print vtbl
5112@item set print vtbl
5113@itemx set print vtbl on
5114Pretty print C++ virtual function tables. The default is off.
c906108c
SS
5115(The @code{vtbl} commands do not work on programs compiled with the HP
5116ANSI C++ compiler (@code{aCC}).)
c906108c
SS
5117
5118@item set print vtbl off
5119Do not pretty print C++ virtual function tables.
5120
5121@kindex show print vtbl
5122@item show print vtbl
5123Show whether C++ virtual function tables are pretty printed, or not.
5124@end table
c906108c 5125
53a5351d 5126@node Value History
c906108c
SS
5127@section Value history
5128
5129@cindex value history
5130Values printed by the @code{print} command are saved in the @value{GDBN}
5131@dfn{value history}. This allows you to refer to them in other expressions.
5132Values are kept until the symbol table is re-read or discarded
5133(for example with the @code{file} or @code{symbol-file} commands).
5134When the symbol table changes, the value history is discarded,
5135since the values may contain pointers back to the types defined in the
5136symbol table.
5137
5138@cindex @code{$}
5139@cindex @code{$$}
5140@cindex history number
5141The values printed are given @dfn{history numbers} by which you can
5142refer to them. These are successive integers starting with one.
5143@code{print} shows you the history number assigned to a value by
5144printing @samp{$@var{num} = } before the value; here @var{num} is the
5145history number.
5146
5147To refer to any previous value, use @samp{$} followed by the value's
5148history number. The way @code{print} labels its output is designed to
5149remind you of this. Just @code{$} refers to the most recent value in
5150the history, and @code{$$} refers to the value before that.
5151@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
5152is the value just prior to @code{$$}, @code{$$1} is equivalent to
5153@code{$$}, and @code{$$0} is equivalent to @code{$}.
5154
5155For example, suppose you have just printed a pointer to a structure and
5156want to see the contents of the structure. It suffices to type
5157
5158@example
5159p *$
5160@end example
5161
5162If you have a chain of structures where the component @code{next} points
5163to the next one, you can print the contents of the next one with this:
5164
5165@example
5166p *$.next
5167@end example
5168
5169@noindent
5170You can print successive links in the chain by repeating this
5171command---which you can do by just typing @key{RET}.
5172
5173Note that the history records values, not expressions. If the value of
5174@code{x} is 4 and you type these commands:
5175
5176@example
5177print x
5178set x=5
5179@end example
5180
5181@noindent
5182then the value recorded in the value history by the @code{print} command
5183remains 4 even though the value of @code{x} has changed.
5184
5185@table @code
5186@kindex show values
5187@item show values
5188Print the last ten values in the value history, with their item numbers.
5189This is like @samp{p@ $$9} repeated ten times, except that @code{show
5190values} does not change the history.
5191
5192@item show values @var{n}
5193Print ten history values centered on history item number @var{n}.
5194
5195@item show values +
5196Print ten history values just after the values last printed. If no more
5197values are available, @code{show values +} produces no display.
5198@end table
5199
5200Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
5201same effect as @samp{show values +}.
5202
53a5351d 5203@node Convenience Vars
c906108c
SS
5204@section Convenience variables
5205
5206@cindex convenience variables
5207@value{GDBN} provides @dfn{convenience variables} that you can use within
5208@value{GDBN} to hold on to a value and refer to it later. These variables
5209exist entirely within @value{GDBN}; they are not part of your program, and
5210setting a convenience variable has no direct effect on further execution
5211of your program. That is why you can use them freely.
5212
5213Convenience variables are prefixed with @samp{$}. Any name preceded by
5214@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 5215the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c
SS
5216(Value history references, in contrast, are @emph{numbers} preceded
5217by @samp{$}. @xref{Value History, ,Value history}.)
5218
5219You can save a value in a convenience variable with an assignment
5220expression, just as you would set a variable in your program.
5221For example:
5222
5223@example
5224set $foo = *object_ptr
5225@end example
5226
5227@noindent
5228would save in @code{$foo} the value contained in the object pointed to by
5229@code{object_ptr}.
5230
5231Using a convenience variable for the first time creates it, but its
5232value is @code{void} until you assign a new value. You can alter the
5233value with another assignment at any time.
5234
5235Convenience variables have no fixed types. You can assign a convenience
5236variable any type of value, including structures and arrays, even if
5237that variable already has a value of a different type. The convenience
5238variable, when used as an expression, has the type of its current value.
5239
5240@table @code
5241@kindex show convenience
5242@item show convenience
5243Print a list of convenience variables used so far, and their values.
d4f3574e 5244Abbreviated @code{show conv}.
c906108c
SS
5245@end table
5246
5247One of the ways to use a convenience variable is as a counter to be
5248incremented or a pointer to be advanced. For example, to print
5249a field from successive elements of an array of structures:
5250
5251@example
5252set $i = 0
5253print bar[$i++]->contents
5254@end example
5255
d4f3574e
SS
5256@noindent
5257Repeat that command by typing @key{RET}.
c906108c
SS
5258
5259Some convenience variables are created automatically by @value{GDBN} and given
5260values likely to be useful.
5261
5262@table @code
5263@kindex $_
5264@item $_
5265The variable @code{$_} is automatically set by the @code{x} command to
5266the last address examined (@pxref{Memory, ,Examining memory}). Other
5267commands which provide a default address for @code{x} to examine also
5268set @code{$_} to that address; these commands include @code{info line}
5269and @code{info breakpoint}. The type of @code{$_} is @code{void *}
5270except when set by the @code{x} command, in which case it is a pointer
5271to the type of @code{$__}.
5272
5273@kindex $__
5274@item $__
5275The variable @code{$__} is automatically set by the @code{x} command
5276to the value found in the last address examined. Its type is chosen
5277to match the format in which the data was printed.
5278
5279@item $_exitcode
5280@kindex $_exitcode
5281The variable @code{$_exitcode} is automatically set to the exit code when
5282the program being debugged terminates.
5283@end table
5284
53a5351d
JM
5285On HP-UX systems, if you refer to a function or variable name that
5286begins with a dollar sign, @value{GDBN} searches for a user or system
5287name first, before it searches for a convenience variable.
c906108c 5288
53a5351d 5289@node Registers
c906108c
SS
5290@section Registers
5291
5292@cindex registers
5293You can refer to machine register contents, in expressions, as variables
5294with names starting with @samp{$}. The names of registers are different
5295for each machine; use @code{info registers} to see the names used on
5296your machine.
5297
5298@table @code
5299@kindex info registers
5300@item info registers
5301Print the names and values of all registers except floating-point
5302registers (in the selected stack frame).
5303
5304@kindex info all-registers
5305@cindex floating point registers
5306@item info all-registers
5307Print the names and values of all registers, including floating-point
5308registers.
5309
5310@item info registers @var{regname} @dots{}
5311Print the @dfn{relativized} value of each specified register @var{regname}.
5312As discussed in detail below, register values are normally relative to
5313the selected stack frame. @var{regname} may be any register name valid on
5314the machine you are using, with or without the initial @samp{$}.
5315@end table
5316
5317@value{GDBN} has four ``standard'' register names that are available (in
5318expressions) on most machines---whenever they do not conflict with an
5319architecture's canonical mnemonics for registers. The register names
5320@code{$pc} and @code{$sp} are used for the program counter register and
5321the stack pointer. @code{$fp} is used for a register that contains a
5322pointer to the current stack frame, and @code{$ps} is used for a
5323register that contains the processor status. For example,
5324you could print the program counter in hex with
5325
5326@example
5327p/x $pc
5328@end example
5329
5330@noindent
5331or print the instruction to be executed next with
5332
5333@example
5334x/i $pc
5335@end example
5336
5337@noindent
5338or add four to the stack pointer@footnote{This is a way of removing
5339one word from the stack, on machines where stacks grow downward in
5340memory (most machines, nowadays). This assumes that the innermost
5341stack frame is selected; setting @code{$sp} is not allowed when other
5342stack frames are selected. To pop entire frames off the stack,
5343regardless of machine architecture, use @code{return};
d4f3574e 5344see @ref{Returning, ,Returning from a function}.} with
c906108c
SS
5345
5346@example
5347set $sp += 4
5348@end example
5349
5350Whenever possible, these four standard register names are available on
5351your machine even though the machine has different canonical mnemonics,
5352so long as there is no conflict. The @code{info registers} command
5353shows the canonical names. For example, on the SPARC, @code{info
5354registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
5355can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
5356is an alias for the @sc{eflags} register.
c906108c
SS
5357
5358@value{GDBN} always considers the contents of an ordinary register as an
5359integer when the register is examined in this way. Some machines have
5360special registers which can hold nothing but floating point; these
5361registers are considered to have floating point values. There is no way
5362to refer to the contents of an ordinary register as floating point value
5363(although you can @emph{print} it as a floating point value with
5364@samp{print/f $@var{regname}}).
5365
5366Some registers have distinct ``raw'' and ``virtual'' data formats. This
5367means that the data format in which the register contents are saved by
5368the operating system is not the same one that your program normally
5369sees. For example, the registers of the 68881 floating point
5370coprocessor are always saved in ``extended'' (raw) format, but all C
5371programs expect to work with ``double'' (virtual) format. In such
5372cases, @value{GDBN} normally works with the virtual format only (the format
5373that makes sense for your program), but the @code{info registers} command
5374prints the data in both formats.
5375
5376Normally, register values are relative to the selected stack frame
5377(@pxref{Selection, ,Selecting a frame}). This means that you get the
5378value that the register would contain if all stack frames farther in
5379were exited and their saved registers restored. In order to see the
5380true contents of hardware registers, you must select the innermost
5381frame (with @samp{frame 0}).
5382
5383However, @value{GDBN} must deduce where registers are saved, from the machine
5384code generated by your compiler. If some registers are not saved, or if
5385@value{GDBN} is unable to locate the saved registers, the selected stack
5386frame makes no difference.
5387
53a5351d 5388@node Floating Point Hardware
c906108c
SS
5389@section Floating point hardware
5390@cindex floating point
5391
5392Depending on the configuration, @value{GDBN} may be able to give
5393you more information about the status of the floating point hardware.
5394
5395@table @code
5396@kindex info float
5397@item info float
5398Display hardware-dependent information about the floating
5399point unit. The exact contents and layout vary depending on the
5400floating point chip. Currently, @samp{info float} is supported on
5401the ARM and x86 machines.
5402@end table
c906108c 5403
53a5351d 5404@node Languages
c906108c
SS
5405@chapter Using @value{GDBN} with Different Languages
5406@cindex languages
5407
c906108c
SS
5408Although programming languages generally have common aspects, they are
5409rarely expressed in the same manner. For instance, in ANSI C,
5410dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
5411Modula-2, it is accomplished by @code{p^}. Values can also be
5412represented (and displayed) differently. Hex numbers in C appear as
5413@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
5414
5415@cindex working language
5416Language-specific information is built into @value{GDBN} for some languages,
5417allowing you to express operations like the above in your program's
5418native language, and allowing @value{GDBN} to output values in a manner
5419consistent with the syntax of your program's native language. The
5420language you use to build expressions is called the @dfn{working
5421language}.
5422
5423@menu
5424* Setting:: Switching between source languages
5425* Show:: Displaying the language
c906108c 5426* Checks:: Type and range checks
c906108c
SS
5427* Support:: Supported languages
5428@end menu
5429
53a5351d 5430@node Setting
c906108c
SS
5431@section Switching between source languages
5432
5433There are two ways to control the working language---either have @value{GDBN}
5434set it automatically, or select it manually yourself. You can use the
5435@code{set language} command for either purpose. On startup, @value{GDBN}
5436defaults to setting the language automatically. The working language is
5437used to determine how expressions you type are interpreted, how values
5438are printed, etc.
5439
5440In addition to the working language, every source file that
5441@value{GDBN} knows about has its own working language. For some object
5442file formats, the compiler might indicate which language a particular
5443source file is in. However, most of the time @value{GDBN} infers the
5444language from the name of the file. The language of a source file
5445controls whether C++ names are demangled---this way @code{backtrace} can
5446show each frame appropriately for its own language. There is no way to
d4f3574e
SS
5447set the language of a source file from within @value{GDBN}, but you can
5448set the language associated with a filename extension. @xref{Show, ,
5449Displaying the language}.
c906108c
SS
5450
5451This is most commonly a problem when you use a program, such
5452as @code{cfront} or @code{f2c}, that generates C but is written in
5453another language. In that case, make the
5454program use @code{#line} directives in its C output; that way
5455@value{GDBN} will know the correct language of the source code of the original
5456program, and will display that source code, not the generated C code.
5457
5458@menu
5459* Filenames:: Filename extensions and languages.
5460* Manually:: Setting the working language manually
5461* Automatically:: Having @value{GDBN} infer the source language
5462@end menu
5463
53a5351d 5464@node Filenames
c906108c
SS
5465@subsection List of filename extensions and languages
5466
5467If a source file name ends in one of the following extensions, then
5468@value{GDBN} infers that its language is the one indicated.
5469
5470@table @file
5471
5472@item .c
5473C source file
5474
5475@item .C
5476@itemx .cc
5477@itemx .cp
5478@itemx .cpp
5479@itemx .cxx
5480@itemx .c++
5481C++ source file
5482
5483@item .f
5484@itemx .F
5485Fortran source file
5486
c906108c
SS
5487@item .ch
5488@itemx .c186
5489@itemx .c286
96a2c332 5490CHILL source file
c906108c 5491
c906108c
SS
5492@item .mod
5493Modula-2 source file
c906108c
SS
5494
5495@item .s
5496@itemx .S
5497Assembler source file. This actually behaves almost like C, but
5498@value{GDBN} does not skip over function prologues when stepping.
5499@end table
5500
5501In addition, you may set the language associated with a filename
5502extension. @xref{Show, , Displaying the language}.
5503
53a5351d 5504@node Manually
c906108c
SS
5505@subsection Setting the working language
5506
5507If you allow @value{GDBN} to set the language automatically,
5508expressions are interpreted the same way in your debugging session and
5509your program.
5510
5511@kindex set language
5512If you wish, you may set the language manually. To do this, issue the
5513command @samp{set language @var{lang}}, where @var{lang} is the name of
5514a language, such as
c906108c 5515@code{c} or @code{modula-2}.
c906108c
SS
5516For a list of the supported languages, type @samp{set language}.
5517
c906108c
SS
5518Setting the language manually prevents @value{GDBN} from updating the working
5519language automatically. This can lead to confusion if you try
5520to debug a program when the working language is not the same as the
5521source language, when an expression is acceptable to both
5522languages---but means different things. For instance, if the current
5523source file were written in C, and @value{GDBN} was parsing Modula-2, a
5524command such as:
5525
5526@example
5527print a = b + c
5528@end example
5529
5530@noindent
5531might not have the effect you intended. In C, this means to add
5532@code{b} and @code{c} and place the result in @code{a}. The result
5533printed would be the value of @code{a}. In Modula-2, this means to compare
5534@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 5535
53a5351d 5536@node Automatically
c906108c
SS
5537@subsection Having @value{GDBN} infer the source language
5538
5539To have @value{GDBN} set the working language automatically, use
5540@samp{set language local} or @samp{set language auto}. @value{GDBN}
5541then infers the working language. That is, when your program stops in a
5542frame (usually by encountering a breakpoint), @value{GDBN} sets the
5543working language to the language recorded for the function in that
5544frame. If the language for a frame is unknown (that is, if the function
5545or block corresponding to the frame was defined in a source file that
5546does not have a recognized extension), the current working language is
5547not changed, and @value{GDBN} issues a warning.
5548
5549This may not seem necessary for most programs, which are written
5550entirely in one source language. However, program modules and libraries
5551written in one source language can be used by a main program written in
5552a different source language. Using @samp{set language auto} in this
5553case frees you from having to set the working language manually.
5554
53a5351d 5555@node Show
c906108c 5556@section Displaying the language
c906108c
SS
5557
5558The following commands help you find out which language is the
5559working language, and also what language source files were written in.
5560
5561@kindex show language
d4f3574e
SS
5562@kindex info frame@r{, show the source language}
5563@kindex info source@r{, show the source language}
c906108c
SS
5564@table @code
5565@item show language
5566Display the current working language. This is the
5567language you can use with commands such as @code{print} to
5568build and compute expressions that may involve variables in your program.
5569
5570@item info frame
5571Display the source language for this frame. This language becomes the
5572working language if you use an identifier from this frame.
5573@xref{Frame Info, ,Information about a frame}, to identify the other
5574information listed here.
5575
5576@item info source
5577Display the source language of this source file.
5578@xref{Symbols, ,Examining the Symbol Table}, to identify the other
5579information listed here.
5580@end table
5581
5582In unusual circumstances, you may have source files with extensions
5583not in the standard list. You can then set the extension associated
5584with a language explicitly:
5585
5586@kindex set extension-language
5587@kindex info extensions
5588@table @code
5589@item set extension-language @var{.ext} @var{language}
5590Set source files with extension @var{.ext} to be assumed to be in
5591the source language @var{language}.
5592
5593@item info extensions
5594List all the filename extensions and the associated languages.
5595@end table
5596
53a5351d 5597@node Checks
c906108c
SS
5598@section Type and range checking
5599
5600@quotation
5601@emph{Warning:} In this release, the @value{GDBN} commands for type and range
5602checking are included, but they do not yet have any effect. This
5603section documents the intended facilities.
5604@end quotation
5605@c FIXME remove warning when type/range code added
5606
5607Some languages are designed to guard you against making seemingly common
5608errors through a series of compile- and run-time checks. These include
5609checking the type of arguments to functions and operators, and making
5610sure mathematical overflows are caught at run time. Checks such as
5611these help to ensure a program's correctness once it has been compiled
5612by eliminating type mismatches, and providing active checks for range
5613errors when your program is running.
5614
5615@value{GDBN} can check for conditions like the above if you wish.
5616Although @value{GDBN} does not check the statements in your program, it
5617can check expressions entered directly into @value{GDBN} for evaluation via
5618the @code{print} command, for example. As with the working language,
5619@value{GDBN} can also decide whether or not to check automatically based on
5620your program's source language. @xref{Support, ,Supported languages},
5621for the default settings of supported languages.
5622
5623@menu
5624* Type Checking:: An overview of type checking
5625* Range Checking:: An overview of range checking
5626@end menu
5627
5628@cindex type checking
5629@cindex checks, type
53a5351d 5630@node Type Checking
c906108c
SS
5631@subsection An overview of type checking
5632
5633Some languages, such as Modula-2, are strongly typed, meaning that the
5634arguments to operators and functions have to be of the correct type,
5635otherwise an error occurs. These checks prevent type mismatch
5636errors from ever causing any run-time problems. For example,
5637
5638@smallexample
56391 + 2 @result{} 3
5640@exdent but
5641@error{} 1 + 2.3
5642@end smallexample
5643
5644The second example fails because the @code{CARDINAL} 1 is not
5645type-compatible with the @code{REAL} 2.3.
5646
5647For the expressions you use in @value{GDBN} commands, you can tell the
5648@value{GDBN} type checker to skip checking;
5649to treat any mismatches as errors and abandon the expression;
5650or to only issue warnings when type mismatches occur,
5651but evaluate the expression anyway. When you choose the last of
5652these, @value{GDBN} evaluates expressions like the second example above, but
5653also issues a warning.
5654
5655Even if you turn type checking off, there may be other reasons
5656related to type that prevent @value{GDBN} from evaluating an expression.
5657For instance, @value{GDBN} does not know how to add an @code{int} and
5658a @code{struct foo}. These particular type errors have nothing to do
5659with the language in use, and usually arise from expressions, such as
5660the one described above, which make little sense to evaluate anyway.
5661
5662Each language defines to what degree it is strict about type. For
5663instance, both Modula-2 and C require the arguments to arithmetical
5664operators to be numbers. In C, enumerated types and pointers can be
5665represented as numbers, so that they are valid arguments to mathematical
5666operators. @xref{Support, ,Supported languages}, for further
5667details on specific languages.
5668
5669@value{GDBN} provides some additional commands for controlling the type checker:
5670
d4f3574e 5671@kindex set check@r{, type}
c906108c
SS
5672@kindex set check type
5673@kindex show check type
5674@table @code
5675@item set check type auto
5676Set type checking on or off based on the current working language.
5677@xref{Support, ,Supported languages}, for the default settings for
5678each language.
5679
5680@item set check type on
5681@itemx set check type off
5682Set type checking on or off, overriding the default setting for the
5683current working language. Issue a warning if the setting does not
5684match the language default. If any type mismatches occur in
d4f3574e 5685evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
5686message and aborts evaluation of the expression.
5687
5688@item set check type warn
5689Cause the type checker to issue warnings, but to always attempt to
5690evaluate the expression. Evaluating the expression may still
5691be impossible for other reasons. For example, @value{GDBN} cannot add
5692numbers and structures.
5693
5694@item show type
5695Show the current setting of the type checker, and whether or not @value{GDBN}
5696is setting it automatically.
5697@end table
5698
5699@cindex range checking
5700@cindex checks, range
53a5351d 5701@node Range Checking
c906108c
SS
5702@subsection An overview of range checking
5703
5704In some languages (such as Modula-2), it is an error to exceed the
5705bounds of a type; this is enforced with run-time checks. Such range
5706checking is meant to ensure program correctness by making sure
5707computations do not overflow, or indices on an array element access do
5708not exceed the bounds of the array.
5709
5710For expressions you use in @value{GDBN} commands, you can tell
5711@value{GDBN} to treat range errors in one of three ways: ignore them,
5712always treat them as errors and abandon the expression, or issue
5713warnings but evaluate the expression anyway.
5714
5715A range error can result from numerical overflow, from exceeding an
5716array index bound, or when you type a constant that is not a member
5717of any type. Some languages, however, do not treat overflows as an
5718error. In many implementations of C, mathematical overflow causes the
5719result to ``wrap around'' to lower values---for example, if @var{m} is
5720the largest integer value, and @var{s} is the smallest, then
5721
5722@example
5723@var{m} + 1 @result{} @var{s}
5724@end example
5725
5726This, too, is specific to individual languages, and in some cases
5727specific to individual compilers or machines. @xref{Support, ,
5728Supported languages}, for further details on specific languages.
5729
5730@value{GDBN} provides some additional commands for controlling the range checker:
5731
d4f3574e 5732@kindex set check@r{, range}
c906108c
SS
5733@kindex set check range
5734@kindex show check range
5735@table @code
5736@item set check range auto
5737Set range checking on or off based on the current working language.
5738@xref{Support, ,Supported languages}, for the default settings for
5739each language.
5740
5741@item set check range on
5742@itemx set check range off
5743Set range checking on or off, overriding the default setting for the
5744current working language. A warning is issued if the setting does not
c3f6f71d
JM
5745match the language default. If a range error occurs and range checking is on,
5746then a message is printed and evaluation of the expression is aborted.
c906108c
SS
5747
5748@item set check range warn
5749Output messages when the @value{GDBN} range checker detects a range error,
5750but attempt to evaluate the expression anyway. Evaluating the
5751expression may still be impossible for other reasons, such as accessing
5752memory that the process does not own (a typical example from many Unix
5753systems).
5754
5755@item show range
5756Show the current setting of the range checker, and whether or not it is
5757being set automatically by @value{GDBN}.
5758@end table
c906108c 5759
53a5351d 5760@node Support
c906108c 5761@section Supported languages
c906108c 5762
cce74817
JM
5763@value{GDBN} supports C, C++, Fortran, Java, Chill, assembly, and Modula-2.
5764@c This is false ...
c906108c
SS
5765Some @value{GDBN} features may be used in expressions regardless of the
5766language you use: the @value{GDBN} @code{@@} and @code{::} operators,
5767and the @samp{@{type@}addr} construct (@pxref{Expressions,
5768,Expressions}) can be used with the constructs of any supported
5769language.
5770
5771The following sections detail to what degree each source language is
5772supported by @value{GDBN}. These sections are not meant to be language
5773tutorials or references, but serve only as a reference guide to what the
5774@value{GDBN} expression parser accepts, and what input and output
5775formats should look like for different languages. There are many good
5776books written on each of these languages; please look to these for a
5777language reference or tutorial.
5778
c906108c 5779@menu
7a292a7a 5780* C:: C and C++
cce74817 5781* Modula-2:: Modula-2
104c1213 5782* Chill:: Chill
c906108c
SS
5783@end menu
5784
53a5351d 5785@node C
c906108c 5786@subsection C and C++
7a292a7a 5787
c906108c
SS
5788@cindex C and C++
5789@cindex expressions in C or C++
c906108c
SS
5790
5791Since C and C++ are so closely related, many features of @value{GDBN} apply
5792to both languages. Whenever this is the case, we discuss those languages
5793together.
5794
c906108c
SS
5795@cindex C++
5796@kindex g++
5797@cindex @sc{gnu} C++
5798The C++ debugging facilities are jointly implemented by the C++
5799compiler and @value{GDBN}. Therefore, to debug your C++ code
5800effectively, you must compile your C++ programs with a supported
5801C++ compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C++
5802compiler (@code{aCC}).
5803
5804For best results when using @sc{gnu} C++, use the stabs debugging
5805format. You can select that format explicitly with the @code{g++}
5806command-line options @samp{-gstabs} or @samp{-gstabs+}. See
5807@ref{Debugging Options,,Options for Debugging Your Program or @sc{gnu}
5808CC, gcc.info, Using @sc{gnu} CC}, for more information.
c906108c 5809
c906108c
SS
5810@menu
5811* C Operators:: C and C++ operators
5812* C Constants:: C and C++ constants
7a292a7a 5813* C plus plus expressions:: C++ expressions
c906108c 5814* C Defaults:: Default settings for C and C++
c906108c 5815* C Checks:: C and C++ type and range checks
c906108c
SS
5816* Debugging C:: @value{GDBN} and C
5817* Debugging C plus plus:: @value{GDBN} features for C++
5818@end menu
c906108c 5819
53a5351d 5820@node C Operators
c906108c 5821@subsubsection C and C++ operators
7a292a7a
SS
5822
5823@cindex C and C++ operators
c906108c
SS
5824
5825Operators must be defined on values of specific types. For instance,
5826@code{+} is defined on numbers, but not on structures. Operators are
5827often defined on groups of types.
5828
c906108c 5829For the purposes of C and C++, the following definitions hold:
c906108c
SS
5830
5831@itemize @bullet
53a5351d 5832
c906108c 5833@item
c906108c
SS
5834@emph{Integral types} include @code{int} with any of its storage-class
5835specifiers; @code{char}; @code{enum}; and, for C++, @code{bool}.
c906108c
SS
5836
5837@item
d4f3574e
SS
5838@emph{Floating-point types} include @code{float}, @code{double}, and
5839@code{long double} (if supported by the target platform).
c906108c
SS
5840
5841@item
53a5351d 5842@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
5843
5844@item
5845@emph{Scalar types} include all of the above.
53a5351d 5846
c906108c
SS
5847@end itemize
5848
5849@noindent
5850The following operators are supported. They are listed here
5851in order of increasing precedence:
5852
5853@table @code
5854@item ,
5855The comma or sequencing operator. Expressions in a comma-separated list
5856are evaluated from left to right, with the result of the entire
5857expression being the last expression evaluated.
5858
5859@item =
5860Assignment. The value of an assignment expression is the value
5861assigned. Defined on scalar types.
5862
5863@item @var{op}=
5864Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
5865and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 5866@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
5867@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
5868@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
5869
5870@item ?:
5871The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
5872of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
5873integral type.
5874
5875@item ||
5876Logical @sc{or}. Defined on integral types.
5877
5878@item &&
5879Logical @sc{and}. Defined on integral types.
5880
5881@item |
5882Bitwise @sc{or}. Defined on integral types.
5883
5884@item ^
5885Bitwise exclusive-@sc{or}. Defined on integral types.
5886
5887@item &
5888Bitwise @sc{and}. Defined on integral types.
5889
5890@item ==@r{, }!=
5891Equality and inequality. Defined on scalar types. The value of these
5892expressions is 0 for false and non-zero for true.
5893
5894@item <@r{, }>@r{, }<=@r{, }>=
5895Less than, greater than, less than or equal, greater than or equal.
5896Defined on scalar types. The value of these expressions is 0 for false
5897and non-zero for true.
5898
5899@item <<@r{, }>>
5900left shift, and right shift. Defined on integral types.
5901
5902@item @@
5903The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
5904
5905@item +@r{, }-
5906Addition and subtraction. Defined on integral types, floating-point types and
5907pointer types.
5908
5909@item *@r{, }/@r{, }%
5910Multiplication, division, and modulus. Multiplication and division are
5911defined on integral and floating-point types. Modulus is defined on
5912integral types.
5913
5914@item ++@r{, }--
5915Increment and decrement. When appearing before a variable, the
5916operation is performed before the variable is used in an expression;
5917when appearing after it, the variable's value is used before the
5918operation takes place.
5919
5920@item *
5921Pointer dereferencing. Defined on pointer types. Same precedence as
5922@code{++}.
5923
5924@item &
5925Address operator. Defined on variables. Same precedence as @code{++}.
5926
c906108c
SS
5927For debugging C++, @value{GDBN} implements a use of @samp{&} beyond what is
5928allowed in the C++ language itself: you can use @samp{&(&@var{ref})}
5929(or, if you prefer, simply @samp{&&@var{ref}}) to examine the address
5930where a C++ reference variable (declared with @samp{&@var{ref}}) is
5931stored.
c906108c
SS
5932
5933@item -
5934Negative. Defined on integral and floating-point types. Same
5935precedence as @code{++}.
5936
5937@item !
5938Logical negation. Defined on integral types. Same precedence as
5939@code{++}.
5940
5941@item ~
5942Bitwise complement operator. Defined on integral types. Same precedence as
5943@code{++}.
5944
5945
5946@item .@r{, }->
5947Structure member, and pointer-to-structure member. For convenience,
5948@value{GDBN} regards the two as equivalent, choosing whether to dereference a
5949pointer based on the stored type information.
5950Defined on @code{struct} and @code{union} data.
5951
c906108c
SS
5952@item .*@r{, }->*
5953Dereferences of pointers to members.
c906108c
SS
5954
5955@item []
5956Array indexing. @code{@var{a}[@var{i}]} is defined as
5957@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
5958
5959@item ()
5960Function parameter list. Same precedence as @code{->}.
5961
c906108c 5962@item ::
7a292a7a
SS
5963C++ scope resolution operator. Defined on @code{struct}, @code{union},
5964and @code{class} types.
c906108c
SS
5965
5966@item ::
7a292a7a
SS
5967Doubled colons also represent the @value{GDBN} scope operator
5968(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
5969above.
c906108c
SS
5970@end table
5971
c906108c
SS
5972If an operator is redefined in the user code, @value{GDBN} usually
5973attempts to invoke the redefined version instead of using the operator's
5974predefined meaning.
c906108c 5975
c906108c
SS
5976@menu
5977* C Constants::
5978@end menu
5979
53a5351d 5980@node C Constants
c906108c 5981@subsubsection C and C++ constants
c906108c
SS
5982
5983@cindex C and C++ constants
c906108c 5984
7a292a7a 5985@value{GDBN} allows you to express the constants of C and C++ in the
c906108c 5986following ways:
c906108c
SS
5987
5988@itemize @bullet
5989@item
5990Integer constants are a sequence of digits. Octal constants are
5991specified by a leading @samp{0} (i.e. zero), and hexadecimal constants by
5992a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
5993@samp{l}, specifying that the constant should be treated as a
5994@code{long} value.
5995
5996@item
5997Floating point constants are a sequence of digits, followed by a decimal
5998point, followed by a sequence of digits, and optionally followed by an
5999exponent. An exponent is of the form:
6000@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
6001sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
6002A floating-point constant may also end with a letter @samp{f} or
6003@samp{F}, specifying that the constant should be treated as being of
6004the @code{float} (as opposed to the default @code{double}) type; or with
6005a letter @samp{l} or @samp{L}, which specifies a @code{long double}
6006constant.
c906108c
SS
6007
6008@item
6009Enumerated constants consist of enumerated identifiers, or their
6010integral equivalents.
6011
6012@item
6013Character constants are a single character surrounded by single quotes
6014(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 6015(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
6016be represented by a letter or by @dfn{escape sequences}, which are of
6017the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
6018of the character's ordinal value; or of the form @samp{\@var{x}}, where
6019@samp{@var{x}} is a predefined special character---for example,
6020@samp{\n} for newline.
6021
6022@item
96a2c332
SS
6023String constants are a sequence of character constants surrounded by
6024double quotes (@code{"}). Any valid character constant (as described
6025above) may appear. Double quotes within the string must be preceded by
6026a backslash, so for instance @samp{"a\"b'c"} is a string of five
6027characters.
c906108c
SS
6028
6029@item
6030Pointer constants are an integral value. You can also write pointers
6031to constants using the C operator @samp{&}.
6032
6033@item
6034Array constants are comma-separated lists surrounded by braces @samp{@{}
6035and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
6036integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
6037and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
6038@end itemize
6039
c906108c 6040@menu
7a292a7a 6041* C plus plus expressions::
c906108c 6042* C Defaults::
c906108c 6043* C Checks::
c906108c
SS
6044
6045* Debugging C::
6046@end menu
6047
53a5351d 6048@node C plus plus expressions
c906108c 6049@subsubsection C++ expressions
c906108c
SS
6050
6051@cindex expressions in C++
6052@value{GDBN} expression handling can interpret most C++ expressions.
6053
c906108c
SS
6054@cindex C++ support, not in @sc{coff}
6055@cindex @sc{coff} versus C++
6056@cindex C++ and object formats
6057@cindex object formats and C++
6058@cindex a.out and C++
6059@cindex @sc{ecoff} and C++
6060@cindex @sc{xcoff} and C++
6061@cindex @sc{elf}/stabs and C++
6062@cindex @sc{elf}/@sc{dwarf} and C++
6063@c FIXME!! GDB may eventually be able to debug C++ using DWARF; check
6064@c periodically whether this has happened...
6065@quotation
6066@emph{Warning:} @value{GDBN} can only debug C++ code if you use the
6067proper compiler. Typically, C++ debugging depends on the use of
6068additional debugging information in the symbol table, and thus requires
6069special support. In particular, if your compiler generates a.out, MIPS
6070@sc{ecoff}, RS/6000 @sc{xcoff}, or @sc{elf} with stabs extensions to the
6071symbol table, these facilities are all available. (With @sc{gnu} CC,
6072you can use the @samp{-gstabs} option to request stabs debugging
6073extensions explicitly.) Where the object code format is standard
6074@sc{coff} or @sc{dwarf} in @sc{elf}, on the other hand, most of the C++
6075support in @value{GDBN} does @emph{not} work.
6076@end quotation
c906108c
SS
6077
6078@enumerate
6079
6080@cindex member functions
6081@item
6082Member function calls are allowed; you can use expressions like
6083
6084@example
6085count = aml->GetOriginal(x, y)
6086@end example
6087
6088@kindex this
6089@cindex namespace in C++
6090@item
6091While a member function is active (in the selected stack frame), your
6092expressions have the same namespace available as the member function;
6093that is, @value{GDBN} allows implicit references to the class instance
6094pointer @code{this} following the same rules as C++.
6095
c906108c 6096@cindex call overloaded functions
d4f3574e 6097@cindex overloaded functions, calling
c906108c
SS
6098@cindex type conversions in C++
6099@item
6100You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 6101call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
6102perform overload resolution involving user-defined type conversions,
6103calls to constructors, or instantiations of templates that do not exist
6104in the program. It also cannot handle ellipsis argument lists or
6105default arguments.
6106
6107It does perform integral conversions and promotions, floating-point
6108promotions, arithmetic conversions, pointer conversions, conversions of
6109class objects to base classes, and standard conversions such as those of
6110functions or arrays to pointers; it requires an exact match on the
6111number of function arguments.
6112
6113Overload resolution is always performed, unless you have specified
6114@code{set overload-resolution off}. @xref{Debugging C plus plus,
6115,@value{GDBN} features for C++}.
6116
d4f3574e 6117You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
6118explicit function signature to call an overloaded function, as in
6119@smallexample
6120p 'foo(char,int)'('x', 13)
6121@end smallexample
d4f3574e 6122
c906108c 6123The @value{GDBN} command-completion facility can simplify this;
d4f3574e 6124see @ref{Completion, ,Command completion}.
c906108c 6125
c906108c
SS
6126@cindex reference declarations
6127@item
6128@value{GDBN} understands variables declared as C++ references; you can use
6129them in expressions just as you do in C++ source---they are automatically
6130dereferenced.
6131
6132In the parameter list shown when @value{GDBN} displays a frame, the values of
6133reference variables are not displayed (unlike other variables); this
6134avoids clutter, since references are often used for large structures.
6135The @emph{address} of a reference variable is always shown, unless
6136you have specified @samp{set print address off}.
6137
6138@item
6139@value{GDBN} supports the C++ name resolution operator @code{::}---your
6140expressions can use it just as expressions in your program do. Since
6141one scope may be defined in another, you can use @code{::} repeatedly if
6142necessary, for example in an expression like
6143@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
6144resolving name scope by reference to source files, in both C and C++
6145debugging (@pxref{Variables, ,Program variables}).
6146@end enumerate
6147
53a5351d
JM
6148In addition, when used with HP's C++ compiler, @value{GDBN} supports
6149calling virtual functions correctly, printing out virtual bases of
6150objects, calling functions in a base subobject, casting objects, and
6151invoking user-defined operators.
c906108c 6152
53a5351d 6153@node C Defaults
c906108c 6154@subsubsection C and C++ defaults
7a292a7a 6155
c906108c
SS
6156@cindex C and C++ defaults
6157
c906108c
SS
6158If you allow @value{GDBN} to set type and range checking automatically, they
6159both default to @code{off} whenever the working language changes to
6160C or C++. This happens regardless of whether you or @value{GDBN}
6161selects the working language.
c906108c
SS
6162
6163If you allow @value{GDBN} to set the language automatically, it
6164recognizes source files whose names end with @file{.c}, @file{.C}, or
6165@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
6166these files, it sets the working language to C or C++.
6167@xref{Automatically, ,Having @value{GDBN} infer the source language},
6168for further details.
6169
c906108c
SS
6170@c Type checking is (a) primarily motivated by Modula-2, and (b)
6171@c unimplemented. If (b) changes, it might make sense to let this node
6172@c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7a292a7a 6173
53a5351d 6174@node C Checks
c906108c 6175@subsubsection C and C++ type and range checks
7a292a7a 6176
c906108c
SS
6177@cindex C and C++ checks
6178
6179By default, when @value{GDBN} parses C or C++ expressions, type checking
6180is not used. However, if you turn type checking on, @value{GDBN}
6181considers two variables type equivalent if:
6182
6183@itemize @bullet
6184@item
6185The two variables are structured and have the same structure, union, or
6186enumerated tag.
6187
6188@item
6189The two variables have the same type name, or types that have been
6190declared equivalent through @code{typedef}.
6191
6192@ignore
6193@c leaving this out because neither J Gilmore nor R Pesch understand it.
6194@c FIXME--beers?
6195@item
6196The two @code{struct}, @code{union}, or @code{enum} variables are
6197declared in the same declaration. (Note: this may not be true for all C
6198compilers.)
6199@end ignore
6200@end itemize
6201
6202Range checking, if turned on, is done on mathematical operations. Array
6203indices are not checked, since they are often used to index a pointer
6204that is not itself an array.
c906108c 6205
53a5351d 6206@node Debugging C
c906108c 6207@subsubsection @value{GDBN} and C
c906108c
SS
6208
6209The @code{set print union} and @code{show print union} commands apply to
6210the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
6211inside a @code{struct} or @code{class} is also printed. Otherwise, it
6212appears as @samp{@{...@}}.
c906108c
SS
6213
6214The @code{@@} operator aids in the debugging of dynamic arrays, formed
6215with pointers and a memory allocation function. @xref{Expressions,
6216,Expressions}.
6217
c906108c
SS
6218@menu
6219* Debugging C plus plus::
6220@end menu
6221
53a5351d 6222@node Debugging C plus plus
c906108c 6223@subsubsection @value{GDBN} features for C++
c906108c
SS
6224
6225@cindex commands for C++
7a292a7a 6226
c906108c
SS
6227Some @value{GDBN} commands are particularly useful with C++, and some are
6228designed specifically for use with C++. Here is a summary:
6229
6230@table @code
6231@cindex break in overloaded functions
6232@item @r{breakpoint menus}
6233When you want a breakpoint in a function whose name is overloaded,
6234@value{GDBN} breakpoint menus help you specify which function definition
6235you want. @xref{Breakpoint Menus,,Breakpoint menus}.
6236
6237@cindex overloading in C++
6238@item rbreak @var{regex}
6239Setting breakpoints using regular expressions is helpful for setting
6240breakpoints on overloaded functions that are not members of any special
6241classes.
6242@xref{Set Breaks, ,Setting breakpoints}.
6243
6244@cindex C++ exception handling
6245@item catch throw
6246@itemx catch catch
6247Debug C++ exception handling using these commands. @xref{Set
6248Catchpoints, , Setting catchpoints}.
6249
6250@cindex inheritance
6251@item ptype @var{typename}
6252Print inheritance relationships as well as other information for type
6253@var{typename}.
6254@xref{Symbols, ,Examining the Symbol Table}.
6255
6256@cindex C++ symbol display
6257@item set print demangle
6258@itemx show print demangle
6259@itemx set print asm-demangle
6260@itemx show print asm-demangle
6261Control whether C++ symbols display in their source form, both when
6262displaying code as C++ source and when displaying disassemblies.
6263@xref{Print Settings, ,Print settings}.
6264
6265@item set print object
6266@itemx show print object
6267Choose whether to print derived (actual) or declared types of objects.
6268@xref{Print Settings, ,Print settings}.
6269
6270@item set print vtbl
6271@itemx show print vtbl
6272Control the format for printing virtual function tables.
6273@xref{Print Settings, ,Print settings}.
c906108c
SS
6274(The @code{vtbl} commands do not work on programs compiled with the HP
6275ANSI C++ compiler (@code{aCC}).)
6276
6277@kindex set overload-resolution
d4f3574e 6278@cindex overloaded functions, overload resolution
c906108c
SS
6279@item set overload-resolution on
6280Enable overload resolution for C++ expression evaluation. The default
6281is on. For overloaded functions, @value{GDBN} evaluates the arguments
6282and searches for a function whose signature matches the argument types,
d4f3574e
SS
6283using the standard C++ conversion rules (see @ref{C plus plus expressions, ,C++
6284expressions}, for details). If it cannot find a match, it emits a
c906108c
SS
6285message.
6286
6287@item set overload-resolution off
6288Disable overload resolution for C++ expression evaluation. For
6289overloaded functions that are not class member functions, @value{GDBN}
6290chooses the first function of the specified name that it finds in the
6291symbol table, whether or not its arguments are of the correct type. For
6292overloaded functions that are class member functions, @value{GDBN}
6293searches for a function whose signature @emph{exactly} matches the
6294argument types.
c906108c
SS
6295
6296@item @r{Overloaded symbol names}
6297You can specify a particular definition of an overloaded symbol, using
6298the same notation that is used to declare such symbols in C++: type
6299@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
6300also use the @value{GDBN} command-line word completion facilities to list the
6301available choices, or to finish the type list for you.
6302@xref{Completion,, Command completion}, for details on how to do this.
6303@end table
c906108c 6304
53a5351d 6305@node Modula-2
c906108c 6306@subsection Modula-2
7a292a7a 6307
d4f3574e 6308@cindex Modula-2, @value{GDBN} support
c906108c
SS
6309
6310The extensions made to @value{GDBN} to support Modula-2 only support
6311output from the @sc{gnu} Modula-2 compiler (which is currently being
6312developed). Other Modula-2 compilers are not currently supported, and
6313attempting to debug executables produced by them is most likely
6314to give an error as @value{GDBN} reads in the executable's symbol
6315table.
6316
6317@cindex expressions in Modula-2
6318@menu
6319* M2 Operators:: Built-in operators
6320* Built-In Func/Proc:: Built-in functions and procedures
6321* M2 Constants:: Modula-2 constants
6322* M2 Defaults:: Default settings for Modula-2
6323* Deviations:: Deviations from standard Modula-2
6324* M2 Checks:: Modula-2 type and range checks
6325* M2 Scope:: The scope operators @code{::} and @code{.}
6326* GDB/M2:: @value{GDBN} and Modula-2
6327@end menu
6328
53a5351d 6329@node M2 Operators
c906108c
SS
6330@subsubsection Operators
6331@cindex Modula-2 operators
6332
6333Operators must be defined on values of specific types. For instance,
6334@code{+} is defined on numbers, but not on structures. Operators are
6335often defined on groups of types. For the purposes of Modula-2, the
6336following definitions hold:
6337
6338@itemize @bullet
6339
6340@item
6341@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
6342their subranges.
6343
6344@item
6345@emph{Character types} consist of @code{CHAR} and its subranges.
6346
6347@item
6348@emph{Floating-point types} consist of @code{REAL}.
6349
6350@item
6351@emph{Pointer types} consist of anything declared as @code{POINTER TO
6352@var{type}}.
6353
6354@item
6355@emph{Scalar types} consist of all of the above.
6356
6357@item
6358@emph{Set types} consist of @code{SET} and @code{BITSET} types.
6359
6360@item
6361@emph{Boolean types} consist of @code{BOOLEAN}.
6362@end itemize
6363
6364@noindent
6365The following operators are supported, and appear in order of
6366increasing precedence:
6367
6368@table @code
6369@item ,
6370Function argument or array index separator.
6371
6372@item :=
6373Assignment. The value of @var{var} @code{:=} @var{value} is
6374@var{value}.
6375
6376@item <@r{, }>
6377Less than, greater than on integral, floating-point, or enumerated
6378types.
6379
6380@item <=@r{, }>=
96a2c332 6381Less than or equal to, greater than or equal to
c906108c
SS
6382on integral, floating-point and enumerated types, or set inclusion on
6383set types. Same precedence as @code{<}.
6384
6385@item =@r{, }<>@r{, }#
6386Equality and two ways of expressing inequality, valid on scalar types.
6387Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
6388available for inequality, since @code{#} conflicts with the script
6389comment character.
6390
6391@item IN
6392Set membership. Defined on set types and the types of their members.
6393Same precedence as @code{<}.
6394
6395@item OR
6396Boolean disjunction. Defined on boolean types.
6397
6398@item AND@r{, }&
d4f3574e 6399Boolean conjunction. Defined on boolean types.
c906108c
SS
6400
6401@item @@
6402The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
6403
6404@item +@r{, }-
6405Addition and subtraction on integral and floating-point types, or union
6406and difference on set types.
6407
6408@item *
6409Multiplication on integral and floating-point types, or set intersection
6410on set types.
6411
6412@item /
6413Division on floating-point types, or symmetric set difference on set
6414types. Same precedence as @code{*}.
6415
6416@item DIV@r{, }MOD
6417Integer division and remainder. Defined on integral types. Same
6418precedence as @code{*}.
6419
6420@item -
6421Negative. Defined on @code{INTEGER} and @code{REAL} data.
6422
6423@item ^
6424Pointer dereferencing. Defined on pointer types.
6425
6426@item NOT
6427Boolean negation. Defined on boolean types. Same precedence as
6428@code{^}.
6429
6430@item .
6431@code{RECORD} field selector. Defined on @code{RECORD} data. Same
6432precedence as @code{^}.
6433
6434@item []
6435Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
6436
6437@item ()
6438Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
6439as @code{^}.
6440
6441@item ::@r{, }.
6442@value{GDBN} and Modula-2 scope operators.
6443@end table
6444
6445@quotation
6446@emph{Warning:} Sets and their operations are not yet supported, so @value{GDBN}
6447treats the use of the operator @code{IN}, or the use of operators
6448@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
6449@code{<=}, and @code{>=} on sets as an error.
6450@end quotation
6451
6452@cindex Modula-2 built-ins
53a5351d 6453@node Built-In Func/Proc
c906108c
SS
6454@subsubsection Built-in functions and procedures
6455
6456Modula-2 also makes available several built-in procedures and functions.
6457In describing these, the following metavariables are used:
6458
6459@table @var
6460
6461@item a
6462represents an @code{ARRAY} variable.
6463
6464@item c
6465represents a @code{CHAR} constant or variable.
6466
6467@item i
6468represents a variable or constant of integral type.
6469
6470@item m
6471represents an identifier that belongs to a set. Generally used in the
6472same function with the metavariable @var{s}. The type of @var{s} should
6473be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
6474
6475@item n
6476represents a variable or constant of integral or floating-point type.
6477
6478@item r
6479represents a variable or constant of floating-point type.
6480
6481@item t
6482represents a type.
6483
6484@item v
6485represents a variable.
6486
6487@item x
6488represents a variable or constant of one of many types. See the
6489explanation of the function for details.
6490@end table
6491
6492All Modula-2 built-in procedures also return a result, described below.
6493
6494@table @code
6495@item ABS(@var{n})
6496Returns the absolute value of @var{n}.
6497
6498@item CAP(@var{c})
6499If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 6500equivalent, otherwise it returns its argument.
c906108c
SS
6501
6502@item CHR(@var{i})
6503Returns the character whose ordinal value is @var{i}.
6504
6505@item DEC(@var{v})
c3f6f71d 6506Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
6507
6508@item DEC(@var{v},@var{i})
6509Decrements the value in the variable @var{v} by @var{i}. Returns the
6510new value.
6511
6512@item EXCL(@var{m},@var{s})
6513Removes the element @var{m} from the set @var{s}. Returns the new
6514set.
6515
6516@item FLOAT(@var{i})
6517Returns the floating point equivalent of the integer @var{i}.
6518
6519@item HIGH(@var{a})
6520Returns the index of the last member of @var{a}.
6521
6522@item INC(@var{v})
c3f6f71d 6523Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
6524
6525@item INC(@var{v},@var{i})
6526Increments the value in the variable @var{v} by @var{i}. Returns the
6527new value.
6528
6529@item INCL(@var{m},@var{s})
6530Adds the element @var{m} to the set @var{s} if it is not already
6531there. Returns the new set.
6532
6533@item MAX(@var{t})
6534Returns the maximum value of the type @var{t}.
6535
6536@item MIN(@var{t})
6537Returns the minimum value of the type @var{t}.
6538
6539@item ODD(@var{i})
6540Returns boolean TRUE if @var{i} is an odd number.
6541
6542@item ORD(@var{x})
6543Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
6544value of a character is its @sc{ascii} value (on machines supporting the
6545@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
6546integral, character and enumerated types.
6547
6548@item SIZE(@var{x})
6549Returns the size of its argument. @var{x} can be a variable or a type.
6550
6551@item TRUNC(@var{r})
6552Returns the integral part of @var{r}.
6553
6554@item VAL(@var{t},@var{i})
6555Returns the member of the type @var{t} whose ordinal value is @var{i}.
6556@end table
6557
6558@quotation
6559@emph{Warning:} Sets and their operations are not yet supported, so
6560@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
6561an error.
6562@end quotation
6563
6564@cindex Modula-2 constants
53a5351d 6565@node M2 Constants
c906108c
SS
6566@subsubsection Constants
6567
6568@value{GDBN} allows you to express the constants of Modula-2 in the following
6569ways:
6570
6571@itemize @bullet
6572
6573@item
6574Integer constants are simply a sequence of digits. When used in an
6575expression, a constant is interpreted to be type-compatible with the
6576rest of the expression. Hexadecimal integers are specified by a
6577trailing @samp{H}, and octal integers by a trailing @samp{B}.
6578
6579@item
6580Floating point constants appear as a sequence of digits, followed by a
6581decimal point and another sequence of digits. An optional exponent can
6582then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
6583@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
6584digits of the floating point constant must be valid decimal (base 10)
6585digits.
6586
6587@item
6588Character constants consist of a single character enclosed by a pair of
6589like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 6590also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
6591followed by a @samp{C}.
6592
6593@item
6594String constants consist of a sequence of characters enclosed by a
6595pair of like quotes, either single (@code{'}) or double (@code{"}).
6596Escape sequences in the style of C are also allowed. @xref{C
6597Constants, ,C and C++ constants}, for a brief explanation of escape
6598sequences.
6599
6600@item
6601Enumerated constants consist of an enumerated identifier.
6602
6603@item
6604Boolean constants consist of the identifiers @code{TRUE} and
6605@code{FALSE}.
6606
6607@item
6608Pointer constants consist of integral values only.
6609
6610@item
6611Set constants are not yet supported.
6612@end itemize
6613
53a5351d 6614@node M2 Defaults
c906108c
SS
6615@subsubsection Modula-2 defaults
6616@cindex Modula-2 defaults
6617
6618If type and range checking are set automatically by @value{GDBN}, they
6619both default to @code{on} whenever the working language changes to
d4f3574e 6620Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
6621selected the working language.
6622
6623If you allow @value{GDBN} to set the language automatically, then entering
6624code compiled from a file whose name ends with @file{.mod} sets the
d4f3574e 6625working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} set
c906108c
SS
6626the language automatically}, for further details.
6627
53a5351d 6628@node Deviations
c906108c
SS
6629@subsubsection Deviations from standard Modula-2
6630@cindex Modula-2, deviations from
6631
6632A few changes have been made to make Modula-2 programs easier to debug.
6633This is done primarily via loosening its type strictness:
6634
6635@itemize @bullet
6636@item
6637Unlike in standard Modula-2, pointer constants can be formed by
6638integers. This allows you to modify pointer variables during
6639debugging. (In standard Modula-2, the actual address contained in a
6640pointer variable is hidden from you; it can only be modified
6641through direct assignment to another pointer variable or expression that
6642returned a pointer.)
6643
6644@item
6645C escape sequences can be used in strings and characters to represent
6646non-printable characters. @value{GDBN} prints out strings with these
6647escape sequences embedded. Single non-printable characters are
6648printed using the @samp{CHR(@var{nnn})} format.
6649
6650@item
6651The assignment operator (@code{:=}) returns the value of its right-hand
6652argument.
6653
6654@item
6655All built-in procedures both modify @emph{and} return their argument.
6656@end itemize
6657
53a5351d 6658@node M2 Checks
c906108c
SS
6659@subsubsection Modula-2 type and range checks
6660@cindex Modula-2 checks
6661
6662@quotation
6663@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
6664range checking.
6665@end quotation
6666@c FIXME remove warning when type/range checks added
6667
6668@value{GDBN} considers two Modula-2 variables type equivalent if:
6669
6670@itemize @bullet
6671@item
6672They are of types that have been declared equivalent via a @code{TYPE
6673@var{t1} = @var{t2}} statement
6674
6675@item
6676They have been declared on the same line. (Note: This is true of the
6677@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
6678@end itemize
6679
6680As long as type checking is enabled, any attempt to combine variables
6681whose types are not equivalent is an error.
6682
6683Range checking is done on all mathematical operations, assignment, array
6684index bounds, and all built-in functions and procedures.
6685
53a5351d 6686@node M2 Scope
c906108c
SS
6687@subsubsection The scope operators @code{::} and @code{.}
6688@cindex scope
6689@kindex .
6690@cindex colon, doubled as scope operator
6691@ifinfo
d4f3574e 6692@kindex colon-colon@r{, in Modula-2}
c906108c
SS
6693@c Info cannot handle :: but TeX can.
6694@end ifinfo
6695@iftex
6696@kindex ::
6697@end iftex
6698
6699There are a few subtle differences between the Modula-2 scope operator
6700(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
6701similar syntax:
6702
6703@example
6704
6705@var{module} . @var{id}
6706@var{scope} :: @var{id}
6707@end example
6708
6709@noindent
6710where @var{scope} is the name of a module or a procedure,
6711@var{module} the name of a module, and @var{id} is any declared
6712identifier within your program, except another module.
6713
6714Using the @code{::} operator makes @value{GDBN} search the scope
6715specified by @var{scope} for the identifier @var{id}. If it is not
6716found in the specified scope, then @value{GDBN} searches all scopes
6717enclosing the one specified by @var{scope}.
6718
6719Using the @code{.} operator makes @value{GDBN} search the current scope for
6720the identifier specified by @var{id} that was imported from the
6721definition module specified by @var{module}. With this operator, it is
6722an error if the identifier @var{id} was not imported from definition
6723module @var{module}, or if @var{id} is not an identifier in
6724@var{module}.
6725
53a5351d 6726@node GDB/M2
c906108c
SS
6727@subsubsection @value{GDBN} and Modula-2
6728
6729Some @value{GDBN} commands have little use when debugging Modula-2 programs.
6730Five subcommands of @code{set print} and @code{show print} apply
6731specifically to C and C++: @samp{vtbl}, @samp{demangle},
6732@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
6733apply to C++, and the last to the C @code{union} type, which has no direct
6734analogue in Modula-2.
6735
6736The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 6737with any language, is not useful with Modula-2. Its
c906108c
SS
6738intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
6739created in Modula-2 as they can in C or C++. However, because an
6740address can be specified by an integral constant, the construct
d4f3574e 6741@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
6742
6743@cindex @code{#} in Modula-2
6744In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
6745interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 6746
53a5351d 6747@node Chill
cce74817
JM
6748@subsection Chill
6749
6750The extensions made to @value{GDBN} to support Chill only support output
d4f3574e 6751from the @sc{gnu} Chill compiler. Other Chill compilers are not currently
cce74817
JM
6752supported, and attempting to debug executables produced by them is most
6753likely to give an error as @value{GDBN} reads in the executable's symbol
6754table.
6755
d4f3574e
SS
6756@c This used to say "... following Chill related topics ...", but since
6757@c menus are not shown in the printed manual, it would look awkward.
6758This section covers the Chill related topics and the features
cce74817
JM
6759of @value{GDBN} which support these topics.
6760
6761@menu
104c1213
JM
6762* How modes are displayed:: How modes are displayed
6763* Locations:: Locations and their accesses
cce74817 6764* Values and their Operations:: Values and their Operations
53a5351d
JM
6765* Chill type and range checks::
6766* Chill defaults::
cce74817
JM
6767@end menu
6768
6769@node How modes are displayed
6770@subsubsection How modes are displayed
6771
6772The Chill Datatype- (Mode) support of @value{GDBN} is directly related
d4f3574e 6773with the functionality of the @sc{gnu} Chill compiler, and therefore deviates
cce74817
JM
6774slightly from the standard specification of the Chill language. The
6775provided modes are:
d4f3574e
SS
6776
6777@c FIXME: this @table's contents effectively disable @code by using @r
6778@c on every @item. So why does it need @code?
cce74817
JM
6779@table @code
6780@item @r{@emph{Discrete modes:}}
6781@itemize @bullet
6782@item
6783@emph{Integer Modes} which are predefined by @code{BYTE, UBYTE, INT,
6784UINT, LONG, ULONG},
6785@item
6786@emph{Boolean Mode} which is predefined by @code{BOOL},
6787@item
6788@emph{Character Mode} which is predefined by @code{CHAR},
6789@item
6790@emph{Set Mode} which is displayed by the keyword @code{SET}.
6791@smallexample
6792(@value{GDBP}) ptype x
6793type = SET (karli = 10, susi = 20, fritzi = 100)
6794@end smallexample
6795If the type is an unnumbered set the set element values are omitted.
6796@item
6797@emph{Range Mode} which is displayed by @code{type = <basemode>
6798(<lower bound> : <upper bound>)}, where @code{<lower bound>, <upper
6799bound>} can be of any discrete literal expression (e.g. set element
6800names).
6801@end itemize
6802
6803@item @r{@emph{Powerset Mode:}}
6804A Powerset Mode is displayed by the keyword @code{POWERSET} followed by
d4f3574e 6805the member mode of the powerset. The member mode can be any discrete mode.
cce74817
JM
6806@smallexample
6807(@value{GDBP}) ptype x
6808type = POWERSET SET (egon, hugo, otto)
6809@end smallexample
6810
6811@item @r{@emph{Reference Modes:}}
6812@itemize @bullet
6813@item
d4f3574e 6814@emph{Bound Reference Mode} which is displayed by the keyword @code{REF}
cce74817
JM
6815followed by the mode name to which the reference is bound.
6816@item
6817@emph{Free Reference Mode} which is displayed by the keyword @code{PTR}.
6818@end itemize
6819
6820@item @r{@emph{Procedure mode}}
6821The procedure mode is displayed by @code{type = PROC(<parameter list>)
6822<return mode> EXCEPTIONS (<exception list>)}. The @code{<parameter
d4f3574e
SS
6823list>} is a list of the parameter modes. @code{<return mode>} indicates
6824the mode of the result of the procedure if any. The exceptionlist lists
cce74817
JM
6825all possible exceptions which can be raised by the procedure.
6826
6827@ignore
6828@item @r{@emph{Instance mode}}
6829The instance mode is represented by a structure, which has a static
6830type, and is therefore not really of interest.
6831@end ignore
6832
6833@item @r{@emph{Synchronization Modes:}}
6834@itemize @bullet
6835@item
6836@emph{Event Mode} which is displayed by @code{EVENT (<event length>)},
6837where @code{(<event length>)} is optional.
6838@item
6839@emph{Buffer Mode} which is displayed by @code{BUFFER (<buffer length>)
6840<buffer element mode>}, where @code{(<buffer length>)} is optional.
6841@end itemize
6842
6843@item @r{@emph{Timing Modes:}}
6844@itemize @bullet
6845@item
6846@emph{Duration Mode} which is predefined by @code{DURATION}
6847@item
6848@emph{Absolute Time Mode} which is predefined by @code{TIME}
6849@end itemize
6850
6851@item @r{@emph{Real Modes:}}
6852Real Modes are predefined with @code{REAL} and @code{LONG_REAL}.
6853
6854@item @r{@emph{String Modes:}}
6855@itemize @bullet
6856@item
6857@emph{Character String Mode} which is displayed by @code{CHARS(<string
6858length>)}, followed by the keyword @code{VARYING} if the String Mode is
6859a varying mode
6860@item
6861@emph{Bit String Mode} which is displayed by @code{BOOLS(<string
6862length>)}.
6863@end itemize
6864
6865@item @r{@emph{Array Mode:}}
6866The Array Mode is displayed by the keyword @code{ARRAY(<range>)}
6867followed by the element mode (which may in turn be an array mode).
6868@smallexample
6869(@value{GDBP}) ptype x
6870type = ARRAY (1:42)
6871 ARRAY (1:20)
6872 SET (karli = 10, susi = 20, fritzi = 100)
6873@end smallexample
6874
6875@item @r{@emph{Structure Mode}}
6876The Structure mode is displayed by the keyword @code{STRUCT(<field
d4f3574e
SS
6877list>)}. The @code{<field list>} consists of names and modes of fields
6878of the structure. Variant structures have the keyword @code{CASE <field>
6879OF <variant fields> ESAC} in their field list. Since the current version
cce74817
JM
6880of the GNU Chill compiler doesn't implement tag processing (no runtime
6881checks of variant fields, and therefore no debugging info), the output
6882always displays all variant fields.
6883@smallexample
6884(@value{GDBP}) ptype str
6885type = STRUCT (
6886 as x,
6887 bs x,
6888 CASE bs OF
6889 (karli):
6890 cs a
6891 (ott):
6892 ds x
6893 ESAC
6894)
6895@end smallexample
6896@end table
6897
6898@node Locations
6899@subsubsection Locations and their accesses
6900
6901A location in Chill is an object which can contain values.
6902
6903A value of a location is generally accessed by the (declared) name of
d4f3574e
SS
6904the location. The output conforms to the specification of values in
6905Chill programs. How values are specified
6906is the topic of the next section, @ref{Values and their Operations}.
cce74817
JM
6907
6908The pseudo-location @code{RESULT} (or @code{result}) can be used to
6909display or change the result of a currently-active procedure:
d4f3574e 6910
cce74817
JM
6911@smallexample
6912set result := EXPR
6913@end smallexample
d4f3574e
SS
6914
6915@noindent
6916This does the same as the Chill action @code{RESULT EXPR} (which
c3f6f71d 6917is not available in @value{GDBN}).
cce74817
JM
6918
6919Values of reference mode locations are printed by @code{PTR(<hex
6920value>)} in case of a free reference mode, and by @code{(REF <reference
d4f3574e 6921mode>) (<hex-value>)} in case of a bound reference. @code{<hex value>}
cce74817
JM
6922represents the address where the reference points to. To access the
6923value of the location referenced by the pointer, use the dereference
d4f3574e 6924operator @samp{->}.
cce74817
JM
6925
6926Values of procedure mode locations are displayed by @code{@{ PROC
6927(<argument modes> ) <return mode> @} <address> <name of procedure
d4f3574e 6928location>}. @code{<argument modes>} is a list of modes according to the
cce74817
JM
6929parameter specification of the procedure and @code{<address>} shows the
6930address of the entry point.
6931
6932@ignore
6933Locations of instance modes are displayed just like a structure with two
6934fields specifying the @emph{process type} and the @emph{copy number} of
6935the investigated instance location@footnote{This comes from the current
d4f3574e
SS
6936implementation of instances. They are implemented as a structure (no
6937na). The output should be something like @code{[<name of the process>;
6938<instance number>]}.}. The field names are @code{__proc_type} and
cce74817
JM
6939@code{__proc_copy}.
6940
6941Locations of synchronization modes are displayed like a structure with
6942the field name @code{__event_data} in case of a event mode location, and
6943like a structure with the field @code{__buffer_data} in case of a buffer
6944mode location (refer to previous paragraph).
6945
6946Structure Mode locations are printed by @code{[.<field name>: <value>,
d4f3574e 6947...]}. The @code{<field name>} corresponds to the structure mode
cce74817 6948definition and the layout of @code{<value>} varies depending of the mode
d4f3574e
SS
6949of the field. If the investigated structure mode location is of variant
6950structure mode, the variant parts of the structure are enclosed in curled
6951braces (@samp{@{@}}). Fields enclosed by @samp{@{,@}} are residing
cce74817 6952on the same memory location and represent the current values of the
d4f3574e 6953memory location in their specific modes. Since no tag processing is done
cce74817 6954all variants are displayed. A variant field is printed by
d4f3574e 6955@code{(<variant name>) = .<field name>: <value>}. (who implements the
cce74817
JM
6956stuff ???)
6957@smallexample
6958(@value{GDBP}) print str1 $4 = [.as: 0, .bs: karli, .<TAG>: { (karli) =
6959[.cs: []], (susi) = [.ds: susi]}]
6960@end smallexample
6961@end ignore
6962
6963Substructures of string mode-, array mode- or structure mode-values
6964(e.g. array slices, fields of structure locations) are accessed using
d4f3574e
SS
6965certain operations which are described in the next section, @ref{Values
6966and their Operations}.
cce74817
JM
6967
6968A location value may be interpreted as having a different mode using the
d4f3574e
SS
6969location conversion. This mode conversion is written as @code{<mode
6970name>(<location>)}. The user has to consider that the sizes of the modes
6971have to be equal otherwise an error occurs. Furthermore, no range
6972checking of the location against the destination mode is performed, and
cce74817 6973therefore the result can be quite confusing.
d4f3574e 6974
cce74817
JM
6975@smallexample
6976(@value{GDBP}) print int (s(3 up 4)) XXX TO be filled in !! XXX
6977@end smallexample
6978
6979@node Values and their Operations
6980@subsubsection Values and their Operations
6981
6982Values are used to alter locations, to investigate complex structures in
6983more detail or to filter relevant information out of a large amount of
d4f3574e
SS
6984data. There are several (mode dependent) operations defined which enable
6985such investigations. These operations are not only applicable to
cce74817 6986constant values but also to locations, which can become quite useful
d4f3574e 6987when debugging complex structures. During parsing the command line
cce74817
JM
6988(e.g. evaluating an expression) @value{GDBN} treats location names as
6989the values behind these locations.
6990
d4f3574e 6991This section describes how values have to be specified and which
cce74817
JM
6992operations are legal to be used with such values.
6993
6994@table @code
6995@item Literal Values
d4f3574e
SS
6996Literal values are specified in the same manner as in @sc{gnu} Chill programs.
6997For detailed specification refer to the @sc{gnu} Chill implementation Manual
cce74817 6998chapter 1.5.
d4f3574e
SS
6999@c FIXME: if the Chill Manual is a Texinfo documents, the above should
7000@c be converted to a @ref.
cce74817
JM
7001
7002@ignore
7003@itemize @bullet
7004@item
7005@emph{Integer Literals} are specified in the same manner as in Chill
d4f3574e 7006programs (refer to the Chill Standard z200/88 chpt 5.2.4.2)
cce74817
JM
7007@item
7008@emph{Boolean Literals} are defined by @code{TRUE} and @code{FALSE}.
7009@item
7010@emph{Character Literals} are defined by @code{'<character>'}. (e.g.
7011@code{'M'})
7012@item
7013@emph{Set Literals} are defined by a name which was specified in a set
d4f3574e
SS
7014mode. The value delivered by a Set Literal is the set value. This is
7015comparable to an enumeration in C/C++ language.
cce74817 7016@item
d4f3574e 7017@emph{Emptiness Literal} is predefined by @code{NULL}. The value of the
cce74817
JM
7018emptiness literal delivers either the empty reference value, the empty
7019procedure value or the empty instance value.
7020
7021@item
7022@emph{Character String Literals} are defined by a sequence of characters
d4f3574e 7023enclosed in single- or double quotes. If a single- or double quote has
cce74817
JM
7024to be part of the string literal it has to be stuffed (specified twice).
7025@item
7026@emph{Bitstring Literals} are specified in the same manner as in Chill
7027programs (refer z200/88 chpt 5.2.4.8).
7028@item
7029@emph{Floating point literals} are specified in the same manner as in
d4f3574e 7030(gnu-)Chill programs (refer @sc{gnu} Chill implementation Manual chapter 1.5).
cce74817
JM
7031@end itemize
7032@end ignore
7033
7034@item Tuple Values
7035A tuple is specified by @code{<mode name>[<tuple>]}, where @code{<mode
d4f3574e 7036name>} can be omitted if the mode of the tuple is unambiguous. This
cce74817
JM
7037unambiguity is derived from the context of a evaluated expression.
7038@code{<tuple>} can be one of the following:
d4f3574e 7039
cce74817
JM
7040@itemize @bullet
7041@item @emph{Powerset Tuple}
7042@item @emph{Array Tuple}
7043@item @emph{Structure Tuple}
7044Powerset tuples, array tuples and structure tuples are specified in the
d4f3574e 7045same manner as in Chill programs refer to z200/88 chpt 5.2.5.
cce74817
JM
7046@end itemize
7047
7048@item String Element Value
7049A string element value is specified by @code{<string value>(<index>)},
d4f3574e 7050where @code{<index>} is a integer expression. It delivers a character
cce74817
JM
7051value which is equivalent to the character indexed by @code{<index>} in
7052the string.
7053
7054@item String Slice Value
7055A string slice value is specified by @code{<string value>(<slice
7056spec>)}, where @code{<slice spec>} can be either a range of integer
7057expressions or specified by @code{<start expr> up <size>}.
7058@code{<size>} denotes the number of elements which the slice contains.
7059The delivered value is a string value, which is part of the specified
7060string.
7061
7062@item Array Element Values
7063An array element value is specified by @code{<array value>(<expr>)} and
7064delivers a array element value of the mode of the specified array.
7065
7066@item Array Slice Values
7067An array slice is specified by @code{<array value>(<slice spec>)}, where
7068@code{<slice spec>} can be either a range specified by expressions or by
d4f3574e
SS
7069@code{<start expr> up <size>}. @code{<size>} denotes the number of
7070arrayelements the slice contains. The delivered value is an array value
cce74817
JM
7071which is part of the specified array.
7072
7073@item Structure Field Values
7074A structure field value is derived by @code{<structure value>.<field
d4f3574e
SS
7075name>}, where @code{<field name>} indicates the name of a field specified
7076in the mode definition of the structure. The mode of the delivered value
cce74817
JM
7077corresponds to this mode definition in the structure definition.
7078
7079@item Procedure Call Value
7080The procedure call value is derived from the return value of the
7081procedure@footnote{If a procedure call is used for instance in an
7082expression, then this procedure is called with all its side
d4f3574e 7083effects. This can lead to confusing results if used carelessly.}.
cce74817 7084
d4f3574e 7085Values of duration mode locations are represented by @code{ULONG} literals.
cce74817 7086
d4f3574e 7087Values of time mode locations are represented by @code{TIME(<secs>:<nsecs>)}.
cce74817
JM
7088
7089@ignore
7090This is not implemented yet:
7091@item Built-in Value
7092@noindent
7093The following built in functions are provided:
d4f3574e 7094
cce74817
JM
7095@table @code
7096@item @code{ADDR()}
7097@item @code{NUM()}
7098@item @code{PRED()}
7099@item @code{SUCC()}
7100@item @code{ABS()}
7101@item @code{CARD()}
7102@item @code{MAX()}
7103@item @code{MIN()}
7104@item @code{SIZE()}
7105@item @code{UPPER()}
7106@item @code{LOWER()}
7107@item @code{LENGTH()}
7108@item @code{SIN()}
7109@item @code{COS()}
7110@item @code{TAN()}
7111@item @code{ARCSIN()}
7112@item @code{ARCCOS()}
7113@item @code{ARCTAN()}
7114@item @code{EXP()}
7115@item @code{LN()}
7116@item @code{LOG()}
7117@item @code{SQRT()}
7118@end table
7119
7120For a detailed description refer to the GNU Chill implementation manual
7121chapter 1.6.
7122@end ignore
7123
7124@item Zero-adic Operator Value
7125The zero-adic operator value is derived from the instance value for the
7126current active process.
7127
7128@item Expression Values
7129The value delivered by an expression is the result of the evaluation of
d4f3574e 7130the specified expression. If there are error conditions (mode
cce74817 7131incompatibility, etc.) the evaluation of expressions is aborted with a
d4f3574e 7132corresponding error message. Expressions may be parenthesised which
cce74817 7133causes the evaluation of this expression before any other expression
d4f3574e 7134which uses the result of the parenthesised expression. The following
cce74817 7135operators are supported by @value{GDBN}:
d4f3574e 7136
cce74817
JM
7137@table @code
7138@item @code{OR, ORIF, XOR}
d4f3574e
SS
7139@itemx @code{AND, ANDIF}
7140@itemx @code{NOT}
cce74817 7141Logical operators defined over operands of boolean mode.
d4f3574e 7142
cce74817
JM
7143@item @code{=, /=}
7144Equality and inequality operators defined over all modes.
d4f3574e 7145
cce74817 7146@item @code{>, >=}
d4f3574e 7147@itemx @code{<, <=}
cce74817 7148Relational operators defined over predefined modes.
d4f3574e 7149
cce74817 7150@item @code{+, -}
d4f3574e 7151@itemx @code{*, /, MOD, REM}
cce74817 7152Arithmetic operators defined over predefined modes.
d4f3574e 7153
cce74817
JM
7154@item @code{-}
7155Change sign operator.
d4f3574e 7156
cce74817
JM
7157@item @code{//}
7158String concatenation operator.
d4f3574e 7159
cce74817
JM
7160@item @code{()}
7161String repetition operator.
d4f3574e 7162
cce74817
JM
7163@item @code{->}
7164Referenced location operator which can be used either to take the
7165address of a location (@code{->loc}), or to dereference a reference
7166location (@code{loc->}).
d4f3574e 7167
cce74817 7168@item @code{OR, XOR}
d4f3574e
SS
7169@itemx @code{AND}
7170@itemx @code{NOT}
cce74817 7171Powerset and bitstring operators.
d4f3574e 7172
cce74817 7173@item @code{>, >=}
d4f3574e 7174@itemx @code{<, <=}
cce74817 7175Powerset inclusion operators.
d4f3574e 7176
cce74817
JM
7177@item @code{IN}
7178Membership operator.
7179@end table
7180@end table
7181
53a5351d 7182@node Chill type and range checks
cce74817
JM
7183@subsubsection Chill type and range checks
7184
7185@value{GDBN} considers two Chill variables mode equivalent if the sizes
d4f3574e 7186of the two modes are equal. This rule applies recursively to more
cce74817 7187complex datatypes which means that complex modes are treated
d4f3574e 7188equivalent if all element modes (which also can be complex modes like
cce74817
JM
7189structures, arrays, etc.) have the same size.
7190
7191Range checking is done on all mathematical operations, assignment, array
7192index bounds and all built in procedures.
7193
7194Strong type checks are forced using the @value{GDBN} command @code{set
d4f3574e 7195check strong}. This enforces strong type and range checks on all
cce74817
JM
7196operations where Chill constructs are used (expressions, built in
7197functions, etc.) in respect to the semantics as defined in the z.200
7198language specification.
7199
cce74817
JM
7200All checks can be disabled by the @value{GDBN} command @code{set check
7201off}.
7202
7203@ignore
53a5351d 7204@c Deviations from the Chill Standard Z200/88
cce74817
JM
7205see last paragraph ?
7206@end ignore
7207
53a5351d 7208@node Chill defaults
cce74817
JM
7209@subsubsection Chill defaults
7210
7211If type and range checking are set automatically by @value{GDBN}, they
7212both default to @code{on} whenever the working language changes to
d4f3574e 7213Chill. This happens regardless of whether you or @value{GDBN}
cce74817
JM
7214selected the working language.
7215
7216If you allow @value{GDBN} to set the language automatically, then entering
7217code compiled from a file whose name ends with @file{.ch} sets the
d4f3574e 7218working language to Chill. @xref{Automatically, ,Having @value{GDBN} set
cce74817
JM
7219the language automatically}, for further details.
7220
53a5351d 7221@node Symbols
c906108c
SS
7222@chapter Examining the Symbol Table
7223
d4f3574e 7224The commands described in this chapter allow you to inquire about the
c906108c
SS
7225symbols (names of variables, functions and types) defined in your
7226program. This information is inherent in the text of your program and
7227does not change as your program executes. @value{GDBN} finds it in your
7228program's symbol table, in the file indicated when you started @value{GDBN}
7229(@pxref{File Options, ,Choosing files}), or by one of the
7230file-management commands (@pxref{Files, ,Commands to specify files}).
7231
7232@cindex symbol names
7233@cindex names of symbols
7234@cindex quoting names
7235Occasionally, you may need to refer to symbols that contain unusual
7236characters, which @value{GDBN} ordinarily treats as word delimiters. The
7237most frequent case is in referring to static variables in other
7238source files (@pxref{Variables,,Program variables}). File names
7239are recorded in object files as debugging symbols, but @value{GDBN} would
7240ordinarily parse a typical file name, like @file{foo.c}, as the three words
7241@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
7242@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
7243
7244@example
7245p 'foo.c'::x
7246@end example
7247
7248@noindent
7249looks up the value of @code{x} in the scope of the file @file{foo.c}.
7250
7251@table @code
7252@kindex info address
7253@item info address @var{symbol}
7254Describe where the data for @var{symbol} is stored. For a register
7255variable, this says which register it is kept in. For a non-register
7256local variable, this prints the stack-frame offset at which the variable
7257is always stored.
7258
7259Note the contrast with @samp{print &@var{symbol}}, which does not work
7260at all for a register variable, and for a stack local variable prints
7261the exact address of the current instantiation of the variable.
7262
7263@kindex whatis
d4f3574e
SS
7264@item whatis @var{expr}
7265Print the data type of expression @var{expr}. @var{expr} is not
c906108c
SS
7266actually evaluated, and any side-effecting operations (such as
7267assignments or function calls) inside it do not take place.
7268@xref{Expressions, ,Expressions}.
7269
7270@item whatis
7271Print the data type of @code{$}, the last value in the value history.
7272
7273@kindex ptype
7274@item ptype @var{typename}
7275Print a description of data type @var{typename}. @var{typename} may be
7a292a7a
SS
7276the name of a type, or for C code it may have the form @samp{class
7277@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
7278@var{union-tag}} or @samp{enum @var{enum-tag}}.
c906108c 7279
d4f3574e 7280@item ptype @var{expr}
c906108c 7281@itemx ptype
d4f3574e 7282Print a description of the type of expression @var{expr}. @code{ptype}
c906108c
SS
7283differs from @code{whatis} by printing a detailed description, instead
7284of just the name of the type.
7285
7286For example, for this variable declaration:
7287
7288@example
7289struct complex @{double real; double imag;@} v;
7290@end example
7291
7292@noindent
7293the two commands give this output:
7294
7295@example
7296@group
7297(@value{GDBP}) whatis v
7298type = struct complex
7299(@value{GDBP}) ptype v
7300type = struct complex @{
7301 double real;
7302 double imag;
7303@}
7304@end group
7305@end example
7306
7307@noindent
7308As with @code{whatis}, using @code{ptype} without an argument refers to
7309the type of @code{$}, the last value in the value history.
7310
7311@kindex info types
7312@item info types @var{regexp}
7313@itemx info types
d4f3574e 7314Print a brief description of all types whose names match @var{regexp}
c906108c
SS
7315(or all types in your program, if you supply no argument). Each
7316complete typename is matched as though it were a complete line; thus,
7317@samp{i type value} gives information on all types in your program whose
d4f3574e 7318names include the string @code{value}, but @samp{i type ^value$} gives
c906108c
SS
7319information only on types whose complete name is @code{value}.
7320
7321This command differs from @code{ptype} in two ways: first, like
7322@code{whatis}, it does not print a detailed description; second, it
7323lists all source files where a type is defined.
7324
7325@kindex info source
7326@item info source
7327Show the name of the current source file---that is, the source file for
7328the function containing the current point of execution---and the language
7329it was written in.
7330
7331@kindex info sources
7332@item info sources
7333Print the names of all source files in your program for which there is
7334debugging information, organized into two lists: files whose symbols
7335have already been read, and files whose symbols will be read when needed.
7336
7337@kindex info functions
7338@item info functions
7339Print the names and data types of all defined functions.
7340
7341@item info functions @var{regexp}
7342Print the names and data types of all defined functions
7343whose names contain a match for regular expression @var{regexp}.
7344Thus, @samp{info fun step} finds all functions whose names
7345include @code{step}; @samp{info fun ^step} finds those whose names
7346start with @code{step}.
7347
7348@kindex info variables
7349@item info variables
7350Print the names and data types of all variables that are declared
7351outside of functions (i.e., excluding local variables).
7352
7353@item info variables @var{regexp}
7354Print the names and data types of all variables (except for local
7355variables) whose names contain a match for regular expression
7356@var{regexp}.
7357
7358@ignore
7359This was never implemented.
7360@kindex info methods
7361@item info methods
7362@itemx info methods @var{regexp}
7363The @code{info methods} command permits the user to examine all defined
7364methods within C++ program, or (with the @var{regexp} argument) a
7365specific set of methods found in the various C++ classes. Many
7366C++ classes provide a large number of methods. Thus, the output
7367from the @code{ptype} command can be overwhelming and hard to use. The
7368@code{info-methods} command filters the methods, printing only those
7369which match the regular-expression @var{regexp}.
7370@end ignore
7371
c906108c
SS
7372@cindex reloading symbols
7373Some systems allow individual object files that make up your program to
7a292a7a
SS
7374be replaced without stopping and restarting your program. For example,
7375in VxWorks you can simply recompile a defective object file and keep on
7376running. If you are running on one of these systems, you can allow
7377@value{GDBN} to reload the symbols for automatically relinked modules:
c906108c
SS
7378
7379@table @code
7380@kindex set symbol-reloading
7381@item set symbol-reloading on
7382Replace symbol definitions for the corresponding source file when an
7383object file with a particular name is seen again.
7384
7385@item set symbol-reloading off
7386Do not replace symbol definitions when re-encountering object files of
7387the same name. This is the default state; if you are not running on a
7388system that permits automatically relinking modules, you should leave
7389@code{symbol-reloading} off, since otherwise @value{GDBN} may discard symbols
7390when linking large programs, that may contain several modules (from
7391different directories or libraries) with the same name.
7392
7393@kindex show symbol-reloading
7394@item show symbol-reloading
7395Show the current @code{on} or @code{off} setting.
7396@end table
c906108c 7397
c906108c
SS
7398@kindex set opaque-type-resolution
7399@item set opaque-type-resolution on
7400Tell @value{GDBN} to resolve opaque types. An opaque type is a type
7401declared as a pointer to a @code{struct}, @code{class}, or
7402@code{union}---for example, @code{struct MyType *}---that is used in one
7403source file although the full declaration of @code{struct MyType} is in
7404another source file. The default is on.
7405
7406A change in the setting of this subcommand will not take effect until
7407the next time symbols for a file are loaded.
7408
7409@item set opaque-type-resolution off
7410Tell @value{GDBN} not to resolve opaque types. In this case, the type
7411is printed as follows:
7412@smallexample
7413@{<no data fields>@}
7414@end smallexample
7415
7416@kindex show opaque-type-resolution
7417@item show opaque-type-resolution
7418Show whether opaque types are resolved or not.
c906108c
SS
7419
7420@kindex maint print symbols
7421@cindex symbol dump
7422@kindex maint print psymbols
7423@cindex partial symbol dump
7424@item maint print symbols @var{filename}
7425@itemx maint print psymbols @var{filename}
7426@itemx maint print msymbols @var{filename}
7427Write a dump of debugging symbol data into the file @var{filename}.
7428These commands are used to debug the @value{GDBN} symbol-reading code. Only
7429symbols with debugging data are included. If you use @samp{maint print
7430symbols}, @value{GDBN} includes all the symbols for which it has already
7431collected full details: that is, @var{filename} reflects symbols for
7432only those files whose symbols @value{GDBN} has read. You can use the
7433command @code{info sources} to find out which files these are. If you
7434use @samp{maint print psymbols} instead, the dump shows information about
7435symbols that @value{GDBN} only knows partially---that is, symbols defined in
7436files that @value{GDBN} has skimmed, but not yet read completely. Finally,
7437@samp{maint print msymbols} dumps just the minimal symbol information
7438required for each object file from which @value{GDBN} has read some symbols.
7439@xref{Files, ,Commands to specify files}, for a discussion of how
7440@value{GDBN} reads symbols (in the description of @code{symbol-file}).
7441@end table
7442
53a5351d 7443@node Altering
c906108c
SS
7444@chapter Altering Execution
7445
7446Once you think you have found an error in your program, you might want to
7447find out for certain whether correcting the apparent error would lead to
7448correct results in the rest of the run. You can find the answer by
7449experiment, using the @value{GDBN} features for altering execution of the
7450program.
7451
7452For example, you can store new values into variables or memory
7a292a7a
SS
7453locations, give your program a signal, restart it at a different
7454address, or even return prematurely from a function.
c906108c
SS
7455
7456@menu
7457* Assignment:: Assignment to variables
7458* Jumping:: Continuing at a different address
c906108c 7459* Signaling:: Giving your program a signal
c906108c
SS
7460* Returning:: Returning from a function
7461* Calling:: Calling your program's functions
7462* Patching:: Patching your program
7463@end menu
7464
53a5351d 7465@node Assignment
c906108c
SS
7466@section Assignment to variables
7467
7468@cindex assignment
7469@cindex setting variables
7470To alter the value of a variable, evaluate an assignment expression.
7471@xref{Expressions, ,Expressions}. For example,
7472
7473@example
7474print x=4
7475@end example
7476
7477@noindent
7478stores the value 4 into the variable @code{x}, and then prints the
7479value of the assignment expression (which is 4).
c906108c
SS
7480@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
7481information on operators in supported languages.
c906108c
SS
7482
7483@kindex set variable
7484@cindex variables, setting
7485If you are not interested in seeing the value of the assignment, use the
7486@code{set} command instead of the @code{print} command. @code{set} is
7487really the same as @code{print} except that the expression's value is
7488not printed and is not put in the value history (@pxref{Value History,
7489,Value history}). The expression is evaluated only for its effects.
7490
c906108c
SS
7491If the beginning of the argument string of the @code{set} command
7492appears identical to a @code{set} subcommand, use the @code{set
7493variable} command instead of just @code{set}. This command is identical
7494to @code{set} except for its lack of subcommands. For example, if your
7495program has a variable @code{width}, you get an error if you try to set
7496a new value with just @samp{set width=13}, because @value{GDBN} has the
7497command @code{set width}:
7498
7499@example
7500(@value{GDBP}) whatis width
7501type = double
7502(@value{GDBP}) p width
7503$4 = 13
7504(@value{GDBP}) set width=47
7505Invalid syntax in expression.
7506@end example
7507
7508@noindent
7509The invalid expression, of course, is @samp{=47}. In
7510order to actually set the program's variable @code{width}, use
7511
7512@example
7513(@value{GDBP}) set var width=47
7514@end example
53a5351d 7515
c906108c
SS
7516Because the @code{set} command has many subcommands that can conflict
7517with the names of program variables, it is a good idea to use the
7518@code{set variable} command instead of just @code{set}. For example, if
7519your program has a variable @code{g}, you run into problems if you try
7520to set a new value with just @samp{set g=4}, because @value{GDBN} has
7521the command @code{set gnutarget}, abbreviated @code{set g}:
7522
7523@example
7524@group
7525(@value{GDBP}) whatis g
7526type = double
7527(@value{GDBP}) p g
7528$1 = 1
7529(@value{GDBP}) set g=4
2df3850c 7530(@value{GDBP}) p g
c906108c
SS
7531$2 = 1
7532(@value{GDBP}) r
7533The program being debugged has been started already.
7534Start it from the beginning? (y or n) y
7535Starting program: /home/smith/cc_progs/a.out
7536"/home/smith/cc_progs/a.out": can't open to read symbols: Invalid bfd target.
7537(@value{GDBP}) show g
7538The current BFD target is "=4".
7539@end group
7540@end example
7541
7542@noindent
7543The program variable @code{g} did not change, and you silently set the
7544@code{gnutarget} to an invalid value. In order to set the variable
7545@code{g}, use
7546
7547@example
7548(@value{GDBP}) set var g=4
7549@end example
c906108c
SS
7550
7551@value{GDBN} allows more implicit conversions in assignments than C; you can
7552freely store an integer value into a pointer variable or vice versa,
7553and you can convert any structure to any other structure that is the
7554same length or shorter.
7555@comment FIXME: how do structs align/pad in these conversions?
7556@comment /doc@cygnus.com 18dec1990
7557
7558To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
7559construct to generate a value of specified type at a specified address
7560(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
7561to memory location @code{0x83040} as an integer (which implies a certain size
7562and representation in memory), and
7563
7564@example
7565set @{int@}0x83040 = 4
7566@end example
7567
7568@noindent
7569stores the value 4 into that memory location.
7570
53a5351d 7571@node Jumping
c906108c
SS
7572@section Continuing at a different address
7573
7574Ordinarily, when you continue your program, you do so at the place where
7575it stopped, with the @code{continue} command. You can instead continue at
7576an address of your own choosing, with the following commands:
7577
7578@table @code
7579@kindex jump
7580@item jump @var{linespec}
7581Resume execution at line @var{linespec}. Execution stops again
7582immediately if there is a breakpoint there. @xref{List, ,Printing
7583source lines}, for a description of the different forms of
7584@var{linespec}. It is common practice to use the @code{tbreak} command
7585in conjunction with @code{jump}. @xref{Set Breaks, ,Setting
7586breakpoints}.
7587
7588The @code{jump} command does not change the current stack frame, or
7589the stack pointer, or the contents of any memory location or any
7590register other than the program counter. If line @var{linespec} is in
7591a different function from the one currently executing, the results may
7592be bizarre if the two functions expect different patterns of arguments or
7593of local variables. For this reason, the @code{jump} command requests
7594confirmation if the specified line is not in the function currently
7595executing. However, even bizarre results are predictable if you are
7596well acquainted with the machine-language code of your program.
7597
7598@item jump *@var{address}
7599Resume execution at the instruction at address @var{address}.
7600@end table
7601
c906108c 7602@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
7603On many systems, you can get much the same effect as the @code{jump}
7604command by storing a new value into the register @code{$pc}. The
7605difference is that this does not start your program running; it only
7606changes the address of where it @emph{will} run when you continue. For
7607example,
c906108c
SS
7608
7609@example
7610set $pc = 0x485
7611@end example
7612
7613@noindent
7614makes the next @code{continue} command or stepping command execute at
7615address @code{0x485}, rather than at the address where your program stopped.
7616@xref{Continuing and Stepping, ,Continuing and stepping}.
c906108c
SS
7617
7618The most common occasion to use the @code{jump} command is to back
7619up---perhaps with more breakpoints set---over a portion of a program
7620that has already executed, in order to examine its execution in more
7621detail.
7622
c906108c 7623@c @group
53a5351d 7624@node Signaling
c906108c
SS
7625@section Giving your program a signal
7626
7627@table @code
7628@kindex signal
7629@item signal @var{signal}
7630Resume execution where your program stopped, but immediately give it the
7631signal @var{signal}. @var{signal} can be the name or the number of a
7632signal. For example, on many systems @code{signal 2} and @code{signal
7633SIGINT} are both ways of sending an interrupt signal.
7634
7635Alternatively, if @var{signal} is zero, continue execution without
7636giving a signal. This is useful when your program stopped on account of
7637a signal and would ordinary see the signal when resumed with the
7638@code{continue} command; @samp{signal 0} causes it to resume without a
7639signal.
7640
7641@code{signal} does not repeat when you press @key{RET} a second time
7642after executing the command.
7643@end table
7644@c @end group
7645
7646Invoking the @code{signal} command is not the same as invoking the
7647@code{kill} utility from the shell. Sending a signal with @code{kill}
7648causes @value{GDBN} to decide what to do with the signal depending on
7649the signal handling tables (@pxref{Signals}). The @code{signal} command
7650passes the signal directly to your program.
7651
c906108c 7652
53a5351d 7653@node Returning
c906108c
SS
7654@section Returning from a function
7655
7656@table @code
7657@cindex returning from a function
7658@kindex return
7659@item return
7660@itemx return @var{expression}
7661You can cancel execution of a function call with the @code{return}
7662command. If you give an
7663@var{expression} argument, its value is used as the function's return
7664value.
7665@end table
7666
7667When you use @code{return}, @value{GDBN} discards the selected stack frame
7668(and all frames within it). You can think of this as making the
7669discarded frame return prematurely. If you wish to specify a value to
7670be returned, give that value as the argument to @code{return}.
7671
7672This pops the selected stack frame (@pxref{Selection, ,Selecting a
7673frame}), and any other frames inside of it, leaving its caller as the
7674innermost remaining frame. That frame becomes selected. The
7675specified value is stored in the registers used for returning values
7676of functions.
7677
7678The @code{return} command does not resume execution; it leaves the
7679program stopped in the state that would exist if the function had just
7680returned. In contrast, the @code{finish} command (@pxref{Continuing
7681and Stepping, ,Continuing and stepping}) resumes execution until the
7682selected stack frame returns naturally.
7683
53a5351d 7684@node Calling
c906108c
SS
7685@section Calling program functions
7686
7687@cindex calling functions
7688@kindex call
7689@table @code
7690@item call @var{expr}
7691Evaluate the expression @var{expr} without displaying @code{void}
7692returned values.
7693@end table
7694
7695You can use this variant of the @code{print} command if you want to
7696execute a function from your program, but without cluttering the output
7697with @code{void} returned values. If the result is not void, it
7698is printed and saved in the value history.
7699
c906108c
SS
7700For the A29K, a user-controlled variable @code{call_scratch_address},
7701specifies the location of a scratch area to be used when @value{GDBN}
7702calls a function in the target. This is necessary because the usual
7703method of putting the scratch area on the stack does not work in systems
7704that have separate instruction and data spaces.
c906108c 7705
53a5351d 7706@node Patching
c906108c 7707@section Patching programs
7a292a7a 7708
c906108c
SS
7709@cindex patching binaries
7710@cindex writing into executables
c906108c 7711@cindex writing into corefiles
c906108c 7712
7a292a7a
SS
7713By default, @value{GDBN} opens the file containing your program's
7714executable code (or the corefile) read-only. This prevents accidental
7715alterations to machine code; but it also prevents you from intentionally
7716patching your program's binary.
c906108c
SS
7717
7718If you'd like to be able to patch the binary, you can specify that
7719explicitly with the @code{set write} command. For example, you might
7720want to turn on internal debugging flags, or even to make emergency
7721repairs.
7722
7723@table @code
7724@kindex set write
7725@item set write on
7726@itemx set write off
7a292a7a
SS
7727If you specify @samp{set write on}, @value{GDBN} opens executable and
7728core files for both reading and writing; if you specify @samp{set write
c906108c
SS
7729off} (the default), @value{GDBN} opens them read-only.
7730
7731If you have already loaded a file, you must load it again (using the
7a292a7a
SS
7732@code{exec-file} or @code{core-file} command) after changing @code{set
7733write}, for your new setting to take effect.
c906108c
SS
7734
7735@item show write
7736@kindex show write
7a292a7a
SS
7737Display whether executable files and core files are opened for writing
7738as well as reading.
c906108c
SS
7739@end table
7740
53a5351d 7741@node GDB Files
c906108c
SS
7742@chapter @value{GDBN} Files
7743
7a292a7a
SS
7744@value{GDBN} needs to know the file name of the program to be debugged,
7745both in order to read its symbol table and in order to start your
7746program. To debug a core dump of a previous run, you must also tell
7747@value{GDBN} the name of the core dump file.
c906108c
SS
7748
7749@menu
7750* Files:: Commands to specify files
7751* Symbol Errors:: Errors reading symbol files
7752@end menu
7753
53a5351d 7754@node Files
c906108c 7755@section Commands to specify files
c906108c 7756
7a292a7a 7757@cindex symbol table
c906108c 7758@cindex core dump file
7a292a7a
SS
7759
7760You may want to specify executable and core dump file names. The usual
7761way to do this is at start-up time, using the arguments to
7762@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
7763Out of @value{GDBN}}).
c906108c
SS
7764
7765Occasionally it is necessary to change to a different file during a
7766@value{GDBN} session. Or you may run @value{GDBN} and forget to specify
7767a file you want to use. In these situations the @value{GDBN} commands
7768to specify new files are useful.
7769
7770@table @code
7771@cindex executable file
7772@kindex file
7773@item file @var{filename}
7774Use @var{filename} as the program to be debugged. It is read for its
7775symbols and for the contents of pure memory. It is also the program
7776executed when you use the @code{run} command. If you do not specify a
7777directory and the file is not found in the @value{GDBN} working directory,
7778@value{GDBN} uses the environment variable @code{PATH} as a list of
7779directories to search, just as the shell does when looking for a program
7780to run. You can change the value of this variable, for both @value{GDBN}
7781and your program, using the @code{path} command.
7782
c906108c
SS
7783On systems with memory-mapped files, an auxiliary file
7784@file{@var{filename}.syms} may hold symbol table information for
7785@var{filename}. If so, @value{GDBN} maps in the symbol table from
7786@file{@var{filename}.syms}, starting up more quickly. See the
7787descriptions of the file options @samp{-mapped} and @samp{-readnow}
7788(available on the command line, and with the commands @code{file},
7789@code{symbol-file}, or @code{add-symbol-file}, described below),
7790for more information.
c906108c
SS
7791
7792@item file
7793@code{file} with no argument makes @value{GDBN} discard any information it
7794has on both executable file and the symbol table.
7795
7796@kindex exec-file
7797@item exec-file @r{[} @var{filename} @r{]}
7798Specify that the program to be run (but not the symbol table) is found
7799in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
7800if necessary to locate your program. Omitting @var{filename} means to
7801discard information on the executable file.
7802
7803@kindex symbol-file
7804@item symbol-file @r{[} @var{filename} @r{]}
7805Read symbol table information from file @var{filename}. @code{PATH} is
7806searched when necessary. Use the @code{file} command to get both symbol
7807table and program to run from the same file.
7808
7809@code{symbol-file} with no argument clears out @value{GDBN} information on your
7810program's symbol table.
7811
7812The @code{symbol-file} command causes @value{GDBN} to forget the contents
7813of its convenience variables, the value history, and all breakpoints and
7814auto-display expressions. This is because they may contain pointers to
7815the internal data recording symbols and data types, which are part of
7816the old symbol table data being discarded inside @value{GDBN}.
7817
7818@code{symbol-file} does not repeat if you press @key{RET} again after
7819executing it once.
7820
7821When @value{GDBN} is configured for a particular environment, it
7822understands debugging information in whatever format is the standard
7823generated for that environment; you may use either a @sc{gnu} compiler, or
7824other compilers that adhere to the local conventions.
c906108c
SS
7825Best results are usually obtained from @sc{gnu} compilers; for example,
7826using @code{@value{GCC}} you can generate debugging information for
7827optimized code.
c906108c
SS
7828
7829For most kinds of object files, with the exception of old SVR3 systems
7830using COFF, the @code{symbol-file} command does not normally read the
7831symbol table in full right away. Instead, it scans the symbol table
7832quickly to find which source files and which symbols are present. The
7833details are read later, one source file at a time, as they are needed.
7834
7835The purpose of this two-stage reading strategy is to make @value{GDBN}
7836start up faster. For the most part, it is invisible except for
7837occasional pauses while the symbol table details for a particular source
7838file are being read. (The @code{set verbose} command can turn these
7839pauses into messages if desired. @xref{Messages/Warnings, ,Optional
7840warnings and messages}.)
7841
c906108c
SS
7842We have not implemented the two-stage strategy for COFF yet. When the
7843symbol table is stored in COFF format, @code{symbol-file} reads the
7844symbol table data in full right away. Note that ``stabs-in-COFF''
7845still does the two-stage strategy, since the debug info is actually
7846in stabs format.
7847
7848@kindex readnow
7849@cindex reading symbols immediately
7850@cindex symbols, reading immediately
7851@kindex mapped
7852@cindex memory-mapped symbol file
7853@cindex saving symbol table
7854@item symbol-file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
7855@itemx file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
7856You can override the @value{GDBN} two-stage strategy for reading symbol
7857tables by using the @samp{-readnow} option with any of the commands that
7858load symbol table information, if you want to be sure @value{GDBN} has the
7859entire symbol table available.
c906108c 7860
c906108c
SS
7861If memory-mapped files are available on your system through the
7862@code{mmap} system call, you can use another option, @samp{-mapped}, to
7863cause @value{GDBN} to write the symbols for your program into a reusable
7864file. Future @value{GDBN} debugging sessions map in symbol information
7865from this auxiliary symbol file (if the program has not changed), rather
7866than spending time reading the symbol table from the executable
7867program. Using the @samp{-mapped} option has the same effect as
7868starting @value{GDBN} with the @samp{-mapped} command-line option.
7869
7870You can use both options together, to make sure the auxiliary symbol
7871file has all the symbol information for your program.
7872
7873The auxiliary symbol file for a program called @var{myprog} is called
7874@samp{@var{myprog}.syms}. Once this file exists (so long as it is newer
7875than the corresponding executable), @value{GDBN} always attempts to use
7876it when you debug @var{myprog}; no special options or commands are
7877needed.
7878
7879The @file{.syms} file is specific to the host machine where you run
7880@value{GDBN}. It holds an exact image of the internal @value{GDBN}
7881symbol table. It cannot be shared across multiple host platforms.
c906108c
SS
7882
7883@c FIXME: for now no mention of directories, since this seems to be in
7884@c flux. 13mar1992 status is that in theory GDB would look either in
7885@c current dir or in same dir as myprog; but issues like competing
7886@c GDB's, or clutter in system dirs, mean that in practice right now
7887@c only current dir is used. FFish says maybe a special GDB hierarchy
7888@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
7889@c files.
7890
7891@kindex core
7892@kindex core-file
7893@item core-file @r{[} @var{filename} @r{]}
7894Specify the whereabouts of a core dump file to be used as the ``contents
7895of memory''. Traditionally, core files contain only some parts of the
7896address space of the process that generated them; @value{GDBN} can access the
7897executable file itself for other parts.
7898
7899@code{core-file} with no argument specifies that no core file is
7900to be used.
7901
7902Note that the core file is ignored when your program is actually running
7a292a7a
SS
7903under @value{GDBN}. So, if you have been running your program and you
7904wish to debug a core file instead, you must kill the subprocess in which
7905the program is running. To do this, use the @code{kill} command
c906108c 7906(@pxref{Kill Process, ,Killing the child process}).
c906108c 7907
c906108c
SS
7908@kindex add-symbol-file
7909@cindex dynamic linking
7910@item add-symbol-file @var{filename} @var{address}
7911@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
2acceee2
JM
7912@itemx add-symbol-file @var{filename} @var{address} @var{data_address} @var{bss_address}
7913@itemx add-symbol-file @var{filename} @r{-T}@var{section} @var{address}
96a2c332
SS
7914The @code{add-symbol-file} command reads additional symbol table
7915information from the file @var{filename}. You would use this command
7916when @var{filename} has been dynamically loaded (by some other means)
7917into the program that is running. @var{address} should be the memory
7918address at which the file has been loaded; @value{GDBN} cannot figure
7919this out for itself. You can specify up to three addresses, in which
7920case they are taken to be the addresses of the text, data, and bss
7921segments respectively. For complicated cases, you can specify an
7922arbitrary number of @samp{@r{-T}@var{section} @var{address}} pairs, to
7923give an explicit section name and base address for that section. You
7924can specify any @var{address} as an expression.
c906108c
SS
7925
7926The symbol table of the file @var{filename} is added to the symbol table
7927originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
7928@code{add-symbol-file} command any number of times; the new symbol data
7929thus read keeps adding to the old. To discard all old symbol data
7930instead, use the @code{symbol-file} command without any arguments.
c906108c
SS
7931
7932@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
7933
7934You can use the @samp{-mapped} and @samp{-readnow} options just as with
7935the @code{symbol-file} command, to change how @value{GDBN} manages the symbol
7936table information for @var{filename}.
7937
7938@kindex add-shared-symbol-file
7939@item add-shared-symbol-file
7940The @code{add-shared-symbol-file} command can be used only under Harris' CXUX
7941operating system for the Motorola 88k. @value{GDBN} automatically looks for
7942shared libraries, however if @value{GDBN} does not find yours, you can run
7943@code{add-shared-symbol-file}. It takes no arguments.
c906108c 7944
c906108c
SS
7945@kindex section
7946@item section
7947The @code{section} command changes the base address of section SECTION of
7948the exec file to ADDR. This can be used if the exec file does not contain
7949section addresses, (such as in the a.out format), or when the addresses
7950specified in the file itself are wrong. Each section must be changed
d4f3574e
SS
7951separately. The @code{info files} command, described below, lists all
7952the sections and their addresses.
c906108c
SS
7953
7954@kindex info files
7955@kindex info target
7956@item info files
7957@itemx info target
7a292a7a
SS
7958@code{info files} and @code{info target} are synonymous; both print the
7959current target (@pxref{Targets, ,Specifying a Debugging Target}),
7960including the names of the executable and core dump files currently in
7961use by @value{GDBN}, and the files from which symbols were loaded. The
7962command @code{help target} lists all possible targets rather than
7963current ones.
7964
c906108c
SS
7965@end table
7966
7967All file-specifying commands allow both absolute and relative file names
7968as arguments. @value{GDBN} always converts the file name to an absolute file
7969name and remembers it that way.
7970
c906108c 7971@cindex shared libraries
c906108c
SS
7972@value{GDBN} supports HP-UX, SunOS, SVr4, Irix 5, and IBM RS/6000 shared
7973libraries.
53a5351d 7974
c906108c
SS
7975@value{GDBN} automatically loads symbol definitions from shared libraries
7976when you use the @code{run} command, or when you examine a core file.
7977(Before you issue the @code{run} command, @value{GDBN} does not understand
7978references to a function in a shared library, however---unless you are
7979debugging a core file).
53a5351d
JM
7980
7981On HP-UX, if the program loads a library explicitly, @value{GDBN}
7982automatically loads the symbols at the time of the @code{shl_load} call.
7983
c906108c
SS
7984@c FIXME: some @value{GDBN} release may permit some refs to undef
7985@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
7986@c FIXME...lib; check this from time to time when updating manual
7987
7988@table @code
7989@kindex info sharedlibrary
7990@kindex info share
7991@item info share
7992@itemx info sharedlibrary
7993Print the names of the shared libraries which are currently loaded.
7994
7995@kindex sharedlibrary
7996@kindex share
7997@item sharedlibrary @var{regex}
7998@itemx share @var{regex}
c906108c
SS
7999Load shared object library symbols for files matching a
8000Unix regular expression.
8001As with files loaded automatically, it only loads shared libraries
8002required by your program for a core file or after typing @code{run}. If
8003@var{regex} is omitted all shared libraries required by your program are
8004loaded.
8005@end table
8006
53a5351d
JM
8007On HP-UX systems, @value{GDBN} detects the loading of a shared library
8008and automatically reads in symbols from the newly loaded library, up to
8009a threshold that is initially set but that you can modify if you wish.
c906108c
SS
8010
8011Beyond that threshold, symbols from shared libraries must be explicitly
d4f3574e
SS
8012loaded. To load these symbols, use the command @code{sharedlibrary
8013@var{filename}}. The base address of the shared library is determined
c906108c
SS
8014automatically by @value{GDBN} and need not be specified.
8015
8016To display or set the threshold, use the commands:
8017
8018@table @code
8019@kindex set auto-solib-add
8020@item set auto-solib-add @var{threshold}
8021Set the autoloading size threshold, in megabytes. If @var{threshold} is
8022nonzero, symbols from all shared object libraries will be loaded
8023automatically when the inferior begins execution or when the dynamic
8024linker informs @value{GDBN} that a new library has been loaded, until
8025the symbol table of the program and libraries exceeds this threshold.
8026Otherwise, symbols must be loaded manually, using the
8027@code{sharedlibrary} command. The default threshold is 100 megabytes.
8028
8029@kindex show auto-solib-add
8030@item show auto-solib-add
8031Display the current autoloading size threshold, in megabytes.
8032@end table
c906108c 8033
53a5351d 8034@node Symbol Errors
c906108c
SS
8035@section Errors reading symbol files
8036
8037While reading a symbol file, @value{GDBN} occasionally encounters problems,
8038such as symbol types it does not recognize, or known bugs in compiler
8039output. By default, @value{GDBN} does not notify you of such problems, since
8040they are relatively common and primarily of interest to people
8041debugging compilers. If you are interested in seeing information
8042about ill-constructed symbol tables, you can either ask @value{GDBN} to print
8043only one message about each such type of problem, no matter how many
8044times the problem occurs; or you can ask @value{GDBN} to print more messages,
8045to see how many times the problems occur, with the @code{set
8046complaints} command (@pxref{Messages/Warnings, ,Optional warnings and
8047messages}).
8048
8049The messages currently printed, and their meanings, include:
8050
8051@table @code
8052@item inner block not inside outer block in @var{symbol}
8053
8054The symbol information shows where symbol scopes begin and end
8055(such as at the start of a function or a block of statements). This
8056error indicates that an inner scope block is not fully contained
8057in its outer scope blocks.
8058
8059@value{GDBN} circumvents the problem by treating the inner block as if it had
8060the same scope as the outer block. In the error message, @var{symbol}
8061may be shown as ``@code{(don't know)}'' if the outer block is not a
8062function.
8063
8064@item block at @var{address} out of order
8065
8066The symbol information for symbol scope blocks should occur in
8067order of increasing addresses. This error indicates that it does not
8068do so.
8069
8070@value{GDBN} does not circumvent this problem, and has trouble
8071locating symbols in the source file whose symbols it is reading. (You
8072can often determine what source file is affected by specifying
8073@code{set verbose on}. @xref{Messages/Warnings, ,Optional warnings and
8074messages}.)
8075
8076@item bad block start address patched
8077
8078The symbol information for a symbol scope block has a start address
8079smaller than the address of the preceding source line. This is known
8080to occur in the SunOS 4.1.1 (and earlier) C compiler.
8081
8082@value{GDBN} circumvents the problem by treating the symbol scope block as
8083starting on the previous source line.
8084
8085@item bad string table offset in symbol @var{n}
8086
8087@cindex foo
8088Symbol number @var{n} contains a pointer into the string table which is
8089larger than the size of the string table.
8090
8091@value{GDBN} circumvents the problem by considering the symbol to have the
8092name @code{foo}, which may cause other problems if many symbols end up
8093with this name.
8094
8095@item unknown symbol type @code{0x@var{nn}}
8096
7a292a7a
SS
8097The symbol information contains new data types that @value{GDBN} does
8098not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 8099uncomprehended information, in hexadecimal.
c906108c 8100
7a292a7a
SS
8101@value{GDBN} circumvents the error by ignoring this symbol information.
8102This usually allows you to debug your program, though certain symbols
c906108c 8103are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
8104debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
8105on @code{complain}, then go up to the function @code{read_dbx_symtab}
8106and examine @code{*bufp} to see the symbol.
c906108c
SS
8107
8108@item stub type has NULL name
c906108c 8109
7a292a7a 8110@value{GDBN} could not find the full definition for a struct or class.
c906108c 8111
7a292a7a 8112@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
c906108c 8113The symbol information for a C++ member function is missing some
7a292a7a
SS
8114information that recent versions of the compiler should have output for
8115it.
c906108c
SS
8116
8117@item info mismatch between compiler and debugger
8118
8119@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 8120
c906108c
SS
8121@end table
8122
53a5351d 8123@node Targets
c906108c 8124@chapter Specifying a Debugging Target
7a292a7a 8125
c906108c
SS
8126@cindex debugging target
8127@kindex target
8128
8129A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
8130
8131Often, @value{GDBN} runs in the same host environment as your program;
8132in that case, the debugging target is specified as a side effect when
8133you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
8134flexibility---for example, running @value{GDBN} on a physically separate
8135host, or controlling a standalone system over a serial port or a
53a5351d
JM
8136realtime system over a TCP/IP connection---you can use the @code{target}
8137command to specify one of the target types configured for @value{GDBN}
8138(@pxref{Target Commands, ,Commands for managing targets}).
c906108c
SS
8139
8140@menu
8141* Active Targets:: Active targets
8142* Target Commands:: Commands for managing targets
c906108c
SS
8143* Byte Order:: Choosing target byte order
8144* Remote:: Remote debugging
96baa820 8145* KOD:: Kernel Object Display
c906108c
SS
8146
8147@end menu
8148
53a5351d 8149@node Active Targets
c906108c 8150@section Active targets
7a292a7a 8151
c906108c
SS
8152@cindex stacking targets
8153@cindex active targets
8154@cindex multiple targets
8155
c906108c 8156There are three classes of targets: processes, core files, and
7a292a7a
SS
8157executable files. @value{GDBN} can work concurrently on up to three
8158active targets, one in each class. This allows you to (for example)
8159start a process and inspect its activity without abandoning your work on
8160a core file.
c906108c
SS
8161
8162For example, if you execute @samp{gdb a.out}, then the executable file
8163@code{a.out} is the only active target. If you designate a core file as
8164well---presumably from a prior run that crashed and coredumped---then
8165@value{GDBN} has two active targets and uses them in tandem, looking
8166first in the corefile target, then in the executable file, to satisfy
8167requests for memory addresses. (Typically, these two classes of target
8168are complementary, since core files contain only a program's
8169read-write memory---variables and so on---plus machine status, while
8170executable files contain only the program text and initialized data.)
c906108c
SS
8171
8172When you type @code{run}, your executable file becomes an active process
7a292a7a
SS
8173target as well. When a process target is active, all @value{GDBN}
8174commands requesting memory addresses refer to that target; addresses in
8175an active core file or executable file target are obscured while the
8176process target is active.
c906108c 8177
7a292a7a
SS
8178Use the @code{core-file} and @code{exec-file} commands to select a new
8179core file or executable target (@pxref{Files, ,Commands to specify
c906108c 8180files}). To specify as a target a process that is already running, use
7a292a7a
SS
8181the @code{attach} command (@pxref{Attach, ,Debugging an already-running
8182process}).
c906108c 8183
53a5351d 8184@node Target Commands
c906108c
SS
8185@section Commands for managing targets
8186
8187@table @code
8188@item target @var{type} @var{parameters}
7a292a7a
SS
8189Connects the @value{GDBN} host environment to a target machine or
8190process. A target is typically a protocol for talking to debugging
8191facilities. You use the argument @var{type} to specify the type or
8192protocol of the target machine.
c906108c
SS
8193
8194Further @var{parameters} are interpreted by the target protocol, but
8195typically include things like device names or host names to connect
8196with, process numbers, and baud rates.
c906108c
SS
8197
8198The @code{target} command does not repeat if you press @key{RET} again
8199after executing the command.
8200
8201@kindex help target
8202@item help target
8203Displays the names of all targets available. To display targets
8204currently selected, use either @code{info target} or @code{info files}
8205(@pxref{Files, ,Commands to specify files}).
8206
8207@item help target @var{name}
8208Describe a particular target, including any parameters necessary to
8209select it.
8210
8211@kindex set gnutarget
8212@item set gnutarget @var{args}
8213@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
8214knows whether it is reading an @dfn{executable},
8215a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
8216with the @code{set gnutarget} command. Unlike most @code{target} commands,
8217with @code{gnutarget} the @code{target} refers to a program, not a machine.
8218
d4f3574e 8219@quotation
c906108c
SS
8220@emph{Warning:} To specify a file format with @code{set gnutarget},
8221you must know the actual BFD name.
d4f3574e 8222@end quotation
c906108c 8223
d4f3574e
SS
8224@noindent
8225@xref{Files, , Commands to specify files}.
c906108c
SS
8226
8227@kindex show gnutarget
8228@item show gnutarget
8229Use the @code{show gnutarget} command to display what file format
8230@code{gnutarget} is set to read. If you have not set @code{gnutarget},
8231@value{GDBN} will determine the file format for each file automatically,
8232and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
8233@end table
8234
c906108c
SS
8235Here are some common targets (available, or not, depending on the GDB
8236configuration):
c906108c
SS
8237
8238@table @code
8239@kindex target exec
8240@item target exec @var{program}
8241An executable file. @samp{target exec @var{program}} is the same as
8242@samp{exec-file @var{program}}.
8243
c906108c
SS
8244@kindex target core
8245@item target core @var{filename}
8246A core dump file. @samp{target core @var{filename}} is the same as
8247@samp{core-file @var{filename}}.
c906108c
SS
8248
8249@kindex target remote
8250@item target remote @var{dev}
8251Remote serial target in GDB-specific protocol. The argument @var{dev}
8252specifies what serial device to use for the connection (e.g.
8253@file{/dev/ttya}). @xref{Remote, ,Remote debugging}. @code{target remote}
d4f3574e 8254supports the @code{load} command. This is only useful if you have
c906108c
SS
8255some other way of getting the stub to the target system, and you can put
8256it somewhere in memory where it won't get clobbered by the download.
8257
c906108c
SS
8258@kindex target sim
8259@item target sim
2df3850c 8260Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213
JM
8261In general,
8262@example
8263 target sim
8264 load
8265 run
8266@end example
d4f3574e 8267@noindent
104c1213 8268works; however, you cannot assume that a specific memory map, device
d4f3574e 8269drivers, or even basic I/O is available, although some simulators do
104c1213
JM
8270provide these. For info about any processor-specific simulator details,
8271see the appropriate section in @ref{Embedded Processors, ,Embedded
8272Processors}.
8273
c906108c
SS
8274@end table
8275
104c1213 8276Some configurations may include these targets as well:
c906108c
SS
8277
8278@table @code
8279
c906108c
SS
8280@kindex target nrom
8281@item target nrom @var{dev}
8282NetROM ROM emulator. This target only supports downloading.
8283
c906108c
SS
8284@end table
8285
c906108c
SS
8286Different targets are available on different configurations of @value{GDBN};
8287your configuration may have more or fewer targets.
c906108c
SS
8288
8289Many remote targets require you to download the executable's code
8290once you've successfully established a connection.
8291
8292@table @code
8293
8294@kindex load @var{filename}
8295@item load @var{filename}
c906108c
SS
8296Depending on what remote debugging facilities are configured into
8297@value{GDBN}, the @code{load} command may be available. Where it exists, it
8298is meant to make @var{filename} (an executable) available for debugging
8299on the remote system---by downloading, or dynamic linking, for example.
8300@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
8301the @code{add-symbol-file} command.
8302
8303If your @value{GDBN} does not have a @code{load} command, attempting to
8304execute it gets the error message ``@code{You can't do that when your
8305target is @dots{}}''
c906108c
SS
8306
8307The file is loaded at whatever address is specified in the executable.
8308For some object file formats, you can specify the load address when you
8309link the program; for other formats, like a.out, the object file format
8310specifies a fixed address.
8311@c FIXME! This would be a good place for an xref to the GNU linker doc.
8312
c906108c
SS
8313@code{load} does not repeat if you press @key{RET} again after using it.
8314@end table
8315
53a5351d 8316@node Byte Order
c906108c 8317@section Choosing target byte order
7a292a7a 8318
c906108c
SS
8319@cindex choosing target byte order
8320@cindex target byte order
8321@kindex set endian big
8322@kindex set endian little
8323@kindex set endian auto
8324@kindex show endian
8325
8326Some types of processors, such as the MIPS, PowerPC, and Hitachi SH,
8327offer the ability to run either big-endian or little-endian byte
8328orders. Usually the executable or symbol will include a bit to
8329designate the endian-ness, and you will not need to worry about
8330which to use. However, you may still find it useful to adjust
d4f3574e 8331@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
8332
8333@table @code
8334@kindex set endian big
8335@item set endian big
8336Instruct @value{GDBN} to assume the target is big-endian.
8337
8338@kindex set endian little
8339@item set endian little
8340Instruct @value{GDBN} to assume the target is little-endian.
8341
8342@kindex set endian auto
8343@item set endian auto
8344Instruct @value{GDBN} to use the byte order associated with the
8345executable.
8346
8347@item show endian
8348Display @value{GDBN}'s current idea of the target byte order.
8349
8350@end table
8351
8352Note that these commands merely adjust interpretation of symbolic
8353data on the host, and that they have absolutely no effect on the
8354target system.
8355
53a5351d 8356@node Remote
c906108c
SS
8357@section Remote debugging
8358@cindex remote debugging
8359
8360If you are trying to debug a program running on a machine that cannot run
8361@value{GDBN} in the usual way, it is often useful to use remote debugging.
8362For example, you might use remote debugging on an operating system kernel,
8363or on a small system which does not have a general purpose operating system
8364powerful enough to run a full-featured debugger.
8365
8366Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
8367to make this work with particular debugging targets. In addition,
8368@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
8369but not specific to any particular target system) which you can use if you
8370write the remote stubs---the code that runs on the remote system to
8371communicate with @value{GDBN}.
8372
8373Other remote targets may be available in your
8374configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 8375
c906108c 8376@menu
c906108c 8377* Remote Serial:: @value{GDBN} remote serial protocol
c906108c
SS
8378@end menu
8379
104c1213
JM
8380@node Remote Serial
8381@subsection The @value{GDBN} remote serial protocol
7a292a7a 8382
104c1213
JM
8383@cindex remote serial debugging, overview
8384To debug a program running on another machine (the debugging
8385@dfn{target} machine), you must first arrange for all the usual
8386prerequisites for the program to run by itself. For example, for a C
8387program, you need:
c906108c 8388
104c1213
JM
8389@enumerate
8390@item
8391A startup routine to set up the C runtime environment; these usually
8392have a name like @file{crt0}. The startup routine may be supplied by
8393your hardware supplier, or you may have to write your own.
96baa820 8394
104c1213 8395@item
d4f3574e 8396A C subroutine library to support your program's
104c1213 8397subroutine calls, notably managing input and output.
96baa820 8398
104c1213
JM
8399@item
8400A way of getting your program to the other machine---for example, a
8401download program. These are often supplied by the hardware
8402manufacturer, but you may have to write your own from hardware
8403documentation.
8404@end enumerate
96baa820 8405
104c1213
JM
8406The next step is to arrange for your program to use a serial port to
8407communicate with the machine where @value{GDBN} is running (the @dfn{host}
8408machine). In general terms, the scheme looks like this:
96baa820 8409
104c1213
JM
8410@table @emph
8411@item On the host,
8412@value{GDBN} already understands how to use this protocol; when everything
8413else is set up, you can simply use the @samp{target remote} command
8414(@pxref{Targets,,Specifying a Debugging Target}).
8415
8416@item On the target,
8417you must link with your program a few special-purpose subroutines that
8418implement the @value{GDBN} remote serial protocol. The file containing these
8419subroutines is called a @dfn{debugging stub}.
8420
8421On certain remote targets, you can use an auxiliary program
8422@code{gdbserver} instead of linking a stub into your program.
8423@xref{Server,,Using the @code{gdbserver} program}, for details.
8424@end table
96baa820 8425
104c1213
JM
8426The debugging stub is specific to the architecture of the remote
8427machine; for example, use @file{sparc-stub.c} to debug programs on
8428@sc{sparc} boards.
96baa820 8429
104c1213
JM
8430@cindex remote serial stub list
8431These working remote stubs are distributed with @value{GDBN}:
96baa820 8432
104c1213
JM
8433@table @code
8434
8435@item i386-stub.c
8436@kindex i386-stub.c
8437@cindex Intel
8438@cindex i386
8439For Intel 386 and compatible architectures.
8440
8441@item m68k-stub.c
8442@kindex m68k-stub.c
8443@cindex Motorola 680x0
8444@cindex m680x0
8445For Motorola 680x0 architectures.
8446
8447@item sh-stub.c
8448@kindex sh-stub.c
8449@cindex Hitachi
8450@cindex SH
8451For Hitachi SH architectures.
8452
8453@item sparc-stub.c
8454@kindex sparc-stub.c
8455@cindex Sparc
8456For @sc{sparc} architectures.
8457
8458@item sparcl-stub.c
8459@kindex sparcl-stub.c
8460@cindex Fujitsu
8461@cindex SparcLite
8462For Fujitsu @sc{sparclite} architectures.
8463
8464@end table
8465
8466The @file{README} file in the @value{GDBN} distribution may list other
8467recently added stubs.
8468
8469@menu
8470* Stub Contents:: What the stub can do for you
8471* Bootstrapping:: What you must do for the stub
8472* Debug Session:: Putting it all together
8473* Protocol:: Definition of the communication protocol
8474* Server:: Using the `gdbserver' program
8475* NetWare:: Using the `gdbserve.nlm' program
8476@end menu
8477
8478@node Stub Contents
8479@subsubsection What the stub can do for you
8480
8481@cindex remote serial stub
8482The debugging stub for your architecture supplies these three
8483subroutines:
8484
8485@table @code
8486@item set_debug_traps
8487@kindex set_debug_traps
8488@cindex remote serial stub, initialization
8489This routine arranges for @code{handle_exception} to run when your
8490program stops. You must call this subroutine explicitly near the
8491beginning of your program.
8492
8493@item handle_exception
8494@kindex handle_exception
8495@cindex remote serial stub, main routine
8496This is the central workhorse, but your program never calls it
8497explicitly---the setup code arranges for @code{handle_exception} to
8498run when a trap is triggered.
8499
8500@code{handle_exception} takes control when your program stops during
8501execution (for example, on a breakpoint), and mediates communications
8502with @value{GDBN} on the host machine. This is where the communications
8503protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 8504representative on the target machine. It begins by sending summary
104c1213
JM
8505information on the state of your program, then continues to execute,
8506retrieving and transmitting any information @value{GDBN} needs, until you
8507execute a @value{GDBN} command that makes your program resume; at that point,
8508@code{handle_exception} returns control to your own code on the target
8509machine.
8510
8511@item breakpoint
8512@cindex @code{breakpoint} subroutine, remote
8513Use this auxiliary subroutine to make your program contain a
8514breakpoint. Depending on the particular situation, this may be the only
8515way for @value{GDBN} to get control. For instance, if your target
8516machine has some sort of interrupt button, you won't need to call this;
8517pressing the interrupt button transfers control to
8518@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
8519simply receiving characters on the serial port may also trigger a trap;
8520again, in that situation, you don't need to call @code{breakpoint} from
8521your own program---simply running @samp{target remote} from the host
8522@value{GDBN} session gets control.
8523
8524Call @code{breakpoint} if none of these is true, or if you simply want
8525to make certain your program stops at a predetermined point for the
8526start of your debugging session.
8527@end table
8528
8529@node Bootstrapping
8530@subsubsection What you must do for the stub
8531
8532@cindex remote stub, support routines
8533The debugging stubs that come with @value{GDBN} are set up for a particular
8534chip architecture, but they have no information about the rest of your
8535debugging target machine.
8536
8537First of all you need to tell the stub how to communicate with the
8538serial port.
8539
8540@table @code
8541@item int getDebugChar()
8542@kindex getDebugChar
8543Write this subroutine to read a single character from the serial port.
8544It may be identical to @code{getchar} for your target system; a
8545different name is used to allow you to distinguish the two if you wish.
8546
8547@item void putDebugChar(int)
8548@kindex putDebugChar
8549Write this subroutine to write a single character to the serial port.
8550It may be identical to @code{putchar} for your target system; a
8551different name is used to allow you to distinguish the two if you wish.
8552@end table
8553
8554@cindex control C, and remote debugging
8555@cindex interrupting remote targets
8556If you want @value{GDBN} to be able to stop your program while it is
8557running, you need to use an interrupt-driven serial driver, and arrange
8558for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
8559character). That is the character which @value{GDBN} uses to tell the
8560remote system to stop.
8561
8562Getting the debugging target to return the proper status to @value{GDBN}
8563probably requires changes to the standard stub; one quick and dirty way
8564is to just execute a breakpoint instruction (the ``dirty'' part is that
8565@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
8566
8567Other routines you need to supply are:
8568
8569@table @code
8570@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
8571@kindex exceptionHandler
8572Write this function to install @var{exception_address} in the exception
8573handling tables. You need to do this because the stub does not have any
8574way of knowing what the exception handling tables on your target system
8575are like (for example, the processor's table might be in @sc{rom},
8576containing entries which point to a table in @sc{ram}).
8577@var{exception_number} is the exception number which should be changed;
8578its meaning is architecture-dependent (for example, different numbers
8579might represent divide by zero, misaligned access, etc). When this
8580exception occurs, control should be transferred directly to
8581@var{exception_address}, and the processor state (stack, registers,
8582and so on) should be just as it is when a processor exception occurs. So if
8583you want to use a jump instruction to reach @var{exception_address}, it
8584should be a simple jump, not a jump to subroutine.
8585
8586For the 386, @var{exception_address} should be installed as an interrupt
8587gate so that interrupts are masked while the handler runs. The gate
8588should be at privilege level 0 (the most privileged level). The
8589@sc{sparc} and 68k stubs are able to mask interrupts themselves without
8590help from @code{exceptionHandler}.
8591
8592@item void flush_i_cache()
8593@kindex flush_i_cache
d4f3574e 8594On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
8595instruction cache, if any, on your target machine. If there is no
8596instruction cache, this subroutine may be a no-op.
8597
8598On target machines that have instruction caches, @value{GDBN} requires this
8599function to make certain that the state of your program is stable.
8600@end table
8601
8602@noindent
8603You must also make sure this library routine is available:
8604
8605@table @code
8606@item void *memset(void *, int, int)
8607@kindex memset
8608This is the standard library function @code{memset} that sets an area of
8609memory to a known value. If you have one of the free versions of
8610@code{libc.a}, @code{memset} can be found there; otherwise, you must
8611either obtain it from your hardware manufacturer, or write your own.
8612@end table
8613
8614If you do not use the GNU C compiler, you may need other standard
8615library subroutines as well; this varies from one stub to another,
8616but in general the stubs are likely to use any of the common library
d4f3574e 8617subroutines which @code{@value{GCC}} generates as inline code.
104c1213
JM
8618
8619
8620@node Debug Session
8621@subsubsection Putting it all together
8622
8623@cindex remote serial debugging summary
8624In summary, when your program is ready to debug, you must follow these
8625steps.
8626
8627@enumerate
8628@item
8629Make sure you have the supporting low-level routines
8630(@pxref{Bootstrapping,,What you must do for the stub}):
8631@display
8632@code{getDebugChar}, @code{putDebugChar},
8633@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
8634@end display
8635
8636@item
8637Insert these lines near the top of your program:
8638
8639@example
8640set_debug_traps();
8641breakpoint();
8642@end example
8643
8644@item
8645For the 680x0 stub only, you need to provide a variable called
8646@code{exceptionHook}. Normally you just use:
8647
8648@example
8649void (*exceptionHook)() = 0;
8650@end example
8651
d4f3574e 8652@noindent
104c1213 8653but if before calling @code{set_debug_traps}, you set it to point to a
d4f3574e 8654function in your program; that function is called when
104c1213
JM
8655@code{@value{GDBN}} continues after stopping on a trap (for example, bus
8656error). The function indicated by @code{exceptionHook} is called with
8657one parameter: an @code{int} which is the exception number.
8658
8659@item
8660Compile and link together: your program, the @value{GDBN} debugging stub for
8661your target architecture, and the supporting subroutines.
8662
8663@item
8664Make sure you have a serial connection between your target machine and
8665the @value{GDBN} host, and identify the serial port on the host.
8666
8667@item
8668@c The "remote" target now provides a `load' command, so we should
8669@c document that. FIXME.
8670Download your program to your target machine (or get it there by
8671whatever means the manufacturer provides), and start it.
8672
8673@item
8674To start remote debugging, run @value{GDBN} on the host machine, and specify
8675as an executable file the program that is running in the remote machine.
8676This tells @value{GDBN} how to find your program's symbols and the contents
8677of its pure text.
8678
d4f3574e 8679@item
104c1213 8680@cindex serial line, @code{target remote}
d4f3574e 8681Establish communication using the @code{target remote} command.
104c1213
JM
8682Its argument specifies how to communicate with the target
8683machine---either via a devicename attached to a direct serial line, or a
8684TCP port (usually to a terminal server which in turn has a serial line
8685to the target). For example, to use a serial line connected to the
8686device named @file{/dev/ttyb}:
8687
8688@example
8689target remote /dev/ttyb
8690@end example
8691
8692@cindex TCP port, @code{target remote}
8693To use a TCP connection, use an argument of the form
8694@code{@var{host}:port}. For example, to connect to port 2828 on a
8695terminal server named @code{manyfarms}:
8696
8697@example
8698target remote manyfarms:2828
8699@end example
8700@end enumerate
8701
8702Now you can use all the usual commands to examine and change data and to
8703step and continue the remote program.
8704
8705To resume the remote program and stop debugging it, use the @code{detach}
8706command.
8707
8708@cindex interrupting remote programs
8709@cindex remote programs, interrupting
8710Whenever @value{GDBN} is waiting for the remote program, if you type the
8711interrupt character (often @key{C-C}), @value{GDBN} attempts to stop the
8712program. This may or may not succeed, depending in part on the hardware
8713and the serial drivers the remote system uses. If you type the
8714interrupt character once again, @value{GDBN} displays this prompt:
8715
8716@example
8717Interrupted while waiting for the program.
8718Give up (and stop debugging it)? (y or n)
8719@end example
8720
8721If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
8722(If you decide you want to try again later, you can use @samp{target
8723remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
8724goes back to waiting.
8725
8726@node Protocol
8727@subsubsection Communication protocol
8728
8729@cindex debugging stub, example
8730@cindex remote stub, example
8731@cindex stub example, remote debugging
8732The stub files provided with @value{GDBN} implement the target side of the
8733communication protocol, and the @value{GDBN} side is implemented in the
8734@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
8735these subroutines to communicate, and ignore the details. (If you're
8736implementing your own stub file, you can still ignore the details: start
8737with one of the existing stub files. @file{sparc-stub.c} is the best
8738organized, and therefore the easiest to read.)
8739
8740However, there may be occasions when you need to know something about
8741the protocol---for example, if there is only one serial port to your
8742target machine, you might want your program to do something special if
8743it recognizes a packet meant for @value{GDBN}.
8744
8745In the examples below, @samp{<-} and @samp{->} are used to indicate
8746transmitted and received data respectfully.
8747
8748@cindex protocol, @value{GDBN} remote serial
8749@cindex serial protocol, @value{GDBN} remote
8750@cindex remote serial protocol
8751All @value{GDBN} commands and responses (other than acknowledgments)
8752are sent as a @var{packet}. A @var{packet} is introduced with the
8753character @samp{$}, this is followed by an optional two-digit
8754@var{sequence-id} and the character @samp{:}, the actual
8755@var{packet-data}, and the terminating character @samp{#} followed by a
8756two-digit @var{checksum}:
8757
8758@example
8759@code{$}@var{packet-data}@code{#}@var{checksum}
8760@end example
8761@noindent
8762or, with the optional @var{sequence-id}:
8763@example
8764@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
8765@end example
8766
8767@cindex checksum, for @value{GDBN} remote
8768@noindent
8769The two-digit @var{checksum} is computed as the modulo 256 sum of all
8770characters between the leading @samp{$} and the trailing @samp{#} (that
8771consisting of both the optional @var{sequence-id}@code{:} and the actual
d4f3574e 8772@var{packet-data}) (an eight bit unsigned checksum).
104c1213
JM
8773
8774@cindex sequence-id, for @value{GDBN} remote
8775@noindent
8776The two-digit @var{sequence-id}, when present, is returned with the
8777acknowledgment. Beyond that its meaning is poorly defined.
8778@value{GDBN} is not known to output @var{sequence-id}s.
8779
8780When either the host or the target machine receives a packet, the first
8781response expected is an acknowledgment: either @samp{+} (to indicate
8782the package was received correctly) or @samp{-} (to request
8783retransmission):
8784
8785@example
8786<- @code{$}@var{packet-data}@code{#}@var{checksum}
8787-> @code{+}
8788@end example
8789@noindent
8790If the received packet included a @var{sequence-id} than that is
8791appended to a positive acknowledgment:
8792
8793@example
8794<- @code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
8795-> @code{+}@var{sequence-id}
8796@end example
8797
8798The host (@value{GDBN}) sends @var{command}s, and the target (the
8799debugging stub incorporated in your program) sends a @var{response}. In
8800the case of step and continue @var{command}s, the response is only sent
8801when the operation has completed (the target has again stopped).
8802
8803@var{packet-data} consists of a sequence of characters with the
8804exception of @samp{#} and @samp{$} (see @samp{X} packet for an
8805exception). @samp{:} can not appear as the third character in a packet.
8806Fields within the packet should be separated using @samp{,} and @samp{;}
8807(unfortunately some packets chose to use @samp{:}). Except where
8808otherwise noted all numbers are represented in HEX with leading zeros
8809suppressed.
8810
8811Response @var{data} can be run-length encoded to save space. A @samp{*}
c3f6f71d 8812means that the next character is an @sc{ascii} encoding giving a repeat count
104c1213
JM
8813which stands for that many repetitions of the character preceding the
8814@samp{*}. The encoding is @code{n+29}, yielding a printable character
d4f3574e
SS
8815where @code{n >=3} (which is where rle starts to win). The printable
8816characters @samp{$}, @samp{#}, @samp{+} and @samp{-} or with a numeric
8817value greater than 126 should not be used.
8818
8819Some remote systems have used a different run-length encoding mechanism
8820loosely refered to as the cisco encoding. Following the @samp{*}
8821character are two hex digits that indicate the size of the packet.
104c1213
JM
8822
8823So:
8824@example
8825"@code{0* }"
8826@end example
8827@noindent
8828means the same as "0000".
8829
8830The error response, returned for some packets includes a two character
8831error number. That number is not well defined.
8832
8833For any @var{command} not supported by the stub, an empty response
8834(@samp{$#00}) should be returned. That way it is possible to extend the
8835protocol. A newer @value{GDBN} can tell if a packet is supported based
d4f3574e 8836on that response.
104c1213
JM
8837
8838Below is a complete list of all currently defined @var{command}s and
8839their corresponding response @var{data}:
8840
8841@multitable @columnfractions .30 .30 .40
8842@item Packet
8843@tab Request
8844@tab Description
8845
8846@item extended ops @emph{(optional)}
8847@tab @code{!}
8848@tab
d4f3574e 8849Use the extended remote protocol. Sticky---only needs to be set once.
104c1213
JM
8850The extended remote protocol support the @samp{R} packet.
8851@item
8852@tab reply @samp{}
8853@tab
8854Stubs that support the extended remote protocol return @samp{} which,
8855unfortunately, is identical to the response returned by stubs that do not
8856support protocol extensions.
8857
8858@item last signal
8859@tab @code{?}
8860@tab
d4f3574e
SS
8861Indicate the reason the target halted. The reply is the same as for step
8862and continue.
8863@item
8864@tab reply
8865@tab see below
8866
104c1213
JM
8867
8868@item reserved
8869@tab @code{a}
8870@tab Reserved for future use
8871
8872@item set program arguments @strong{(reserved)} @emph{(optional)}
8873@tab @code{A}@var{arglen}@code{,}@var{argnum}@code{,}@var{arg}@code{,...}
8874@tab
8875Initialized @samp{argv[]} array passed into program. @var{arglen}
8876specifies the number of bytes in the hex encoded byte stream @var{arg}.
d4f3574e 8877See @file{gdbserver} for more details.
104c1213
JM
8878@item
8879@tab reply @code{OK}
8880@item
8881@tab reply @code{E}@var{NN}
8882
8883@item set baud @strong{(deprecated)}
8884@tab @code{b}@var{baud}
8885@tab
8886Change the serial line speed to @var{baud}. JTC: @emph{When does the
8887transport layer state change? When it's received, or after the ACK is
8888transmitted. In either case, there are problems if the command or the
8889acknowledgment packet is dropped.} Stan: @emph{If people really wanted
8890to add something like this, and get it working for the first time, they
8891ought to modify ser-unix.c to send some kind of out-of-band message to a
8892specially-setup stub and have the switch happen "in between" packets, so
8893that from remote protocol's point of view, nothing actually
8894happened.}
8895
8896@item set breakpoint @strong{(deprecated)}
8897@tab @code{B}@var{addr},@var{mode}
8898@tab
8899Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
8900breakpoint at @var{addr}. @emph{This has been replaced by the @samp{Z} and
8901@samp{z} packets.}
8902
8903@item continue
8904@tab @code{c}@var{addr}
8905@tab
8906@var{addr} is address to resume. If @var{addr} is omitted, resume at
8907current address.
8908@item
8909@tab reply
8910@tab see below
8911
8912@item continue with signal @emph{(optional)}
8913@tab @code{C}@var{sig}@code{;}@var{addr}
8914@tab
8915Continue with signal @var{sig} (hex signal number). If
8916@code{;}@var{addr} is omitted, resume at same address.
8917@item
8918@tab reply
8919@tab see below
8920
d4f3574e 8921@item toggle debug @emph{(deprecated)}
104c1213
JM
8922@tab @code{d}
8923@tab
d4f3574e 8924toggle debug flag.
104c1213
JM
8925
8926@item detach @emph{(optional)}
8927@tab @code{D}
d4f3574e 8928@tab
2df3850c
JM
8929Detach @value{GDBN} from the remote system. Sent to the remote target before
8930@value{GDBN} disconnects.
d4f3574e
SS
8931@item
8932@tab reply @emph{no response}
8933@tab
2df3850c 8934@value{GDBN} does not check for any response after sending this packet
104c1213
JM
8935
8936@item reserved
8937@tab @code{e}
8938@tab Reserved for future use
8939
8940@item reserved
8941@tab @code{E}
8942@tab Reserved for future use
8943
8944@item reserved
8945@tab @code{f}
8946@tab Reserved for future use
8947
8948@item reserved
8949@tab @code{F}
8950@tab Reserved for future use
8951
8952@item read registers
8953@tab @code{g}
8954@tab Read general registers.
8955@item
8956@tab reply @var{XX...}
8957@tab
8958Each byte of register data is described by two hex digits. The bytes
8959with the register are transmitted in target byte order. The size of
d4f3574e 8960each register and their position within the @samp{g} @var{packet} are
2df3850c 8961determined by the @value{GDBN} internal macros @var{REGISTER_RAW_SIZE} and
d4f3574e
SS
8962@var{REGISTER_NAME} macros. The specification of several standard
8963@code{g} packets is specified below.
104c1213
JM
8964@item
8965@tab @code{E}@var{NN}
8966@tab for an error.
8967
8968@item write regs
8969@tab @code{G}@var{XX...}
8970@tab
8971See @samp{g} for a description of the @var{XX...} data.
8972@item
8973@tab reply @code{OK}
8974@tab for success
8975@item
8976@tab reply @code{E}@var{NN}
8977@tab for an error
8978
8979@item reserved
8980@tab @code{h}
8981@tab Reserved for future use
8982
8983@item set thread @emph{(optional)}
8984@tab @code{H}@var{c}@var{t...}
8985@tab
d4f3574e
SS
8986Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
8987@samp{G}, et.al.). @var{c} = @samp{c} for thread used in step and
8988continue; @var{t...} can be -1 for all threads. @var{c} = @samp{g} for
8989thread used in other operations. If zero, pick a thread, any thread.
104c1213
JM
8990@item
8991@tab reply @code{OK}
8992@tab for success
8993@item
8994@tab reply @code{E}@var{NN}
8995@tab for an error
8996
d4f3574e
SS
8997@c FIXME: JTC:
8998@c 'H': How restrictive (or permissive) is the thread model. If a
8999@c thread is selected and stopped, are other threads allowed
9000@c to continue to execute? As I mentioned above, I think the
9001@c semantics of each command when a thread is selected must be
9002@c described. For example:
9003@c
9004@c 'g': If the stub supports threads and a specific thread is
9005@c selected, returns the register block from that thread;
9006@c otherwise returns current registers.
9007@c
9008@c 'G' If the stub supports threads and a specific thread is
9009@c selected, sets the registers of the register block of
9010@c that thread; otherwise sets current registers.
9011
104c1213
JM
9012@item cycle step @strong{(draft)} @emph{(optional)}
9013@tab @code{i}@var{addr}@code{,}@var{nnn}
9014@tab
9015Step the remote target by a single clock cycle. If @code{,}@var{nnn} is
9016present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
9017step starting at that address.
9018
9019@item signal then cycle step @strong{(reserved)} @emph{(optional)}
9020@tab @code{I}
9021@tab
9022See @samp{i} and @samp{S} for likely syntax and semantics.
9023
9024@item reserved
9025@tab @code{j}
9026@tab Reserved for future use
9027
9028@item reserved
9029@tab @code{J}
9030@tab Reserved for future use
9031
9032@item kill request @emph{(optional)}
9033@tab @code{k}
9034@tab
d4f3574e
SS
9035FIXME: @emph{There is no description of how operate when a specific
9036thread context has been selected (ie. does 'k' kill only that thread?)}.
104c1213
JM
9037
9038@item reserved
9039@tab @code{l}
9040@tab Reserved for future use
9041
9042@item reserved
9043@tab @code{L}
9044@tab Reserved for future use
9045
9046@item read memory
9047@tab @code{m}@var{addr}@code{,}@var{length}
9048@tab
9049Read @var{length} bytes of memory starting at address @var{addr}.
2df3850c 9050Neither @value{GDBN} nor the stub assume that sized memory transfers are assumed
d4f3574e
SS
9051using word alligned accesses. FIXME: @emph{A word aligned memory
9052transfer mechanism is needed.}
104c1213
JM
9053@item
9054@tab reply @var{XX...}
9055@tab
d4f3574e 9056@var{XX...} is mem contents. Can be fewer bytes than requested if able
2df3850c 9057to read only part of the data. Neither @value{GDBN} nor the stub assume that
d4f3574e
SS
9058sized memory transfers are assumed using word alligned accesses. FIXME:
9059@emph{A word aligned memory transfer mechanism is needed.}
104c1213
JM
9060@item
9061@tab reply @code{E}@var{NN}
9062@tab @var{NN} is errno
9063
9064@item write mem
9065@tab @code{M}@var{addr},@var{length}@code{:}@var{XX...}
9066@tab
9067Write @var{length} bytes of memory starting at address @var{addr}.
9068@var{XX...} is the data.
9069@item
9070@tab reply @code{OK}
9071@tab for success
9072@item
9073@tab reply @code{E}@var{NN}
9074@tab
9075for an error (this includes the case where only part of the data was
9076written).
9077
9078@item reserved
9079@tab @code{n}
9080@tab Reserved for future use
9081
9082@item reserved
9083@tab @code{N}
9084@tab Reserved for future use
9085
9086@item reserved
9087@tab @code{o}
9088@tab Reserved for future use
9089
9090@item reserved
9091@tab @code{O}
9092@tab Reserved for future use
9093
9094@item read reg @strong{(reserved)}
9095@tab @code{p}@var{n...}
9096@tab
9097See write register.
9098@item
9099@tab return @var{r....}
9100@tab The hex encoded value of the register in target byte order.
9101
9102@item write reg @emph{(optional)}
9103@tab @code{P}@var{n...}@code{=}@var{r...}
9104@tab
9105Write register @var{n...} with value @var{r...}, which contains two hex
9106digits for each byte in the register (target byte order).
9107@item
9108@tab reply @code{OK}
9109@tab for success
9110@item
9111@tab reply @code{E}@var{NN}
9112@tab for an error
9113
9114@item general query @emph{(optional)}
9115@tab @code{q}@var{query}
9116@tab
d4f3574e 9117Request info about @var{query}. In general @value{GDBN} @var{query}'s
104c1213 9118have a leading upper case letter. Custom vendor queries should use a
d4f3574e
SS
9119company prefix (in lower case) ex: @samp{qfsf.var}. @var{query} may
9120optionally be followed by a @samp{,} or @samp{;} separated list. Stubs
9121must ensure that they match the full @var{query} name.
104c1213
JM
9122@item
9123@tab reply @code{XX...}
d4f3574e 9124@tab Hex encoded data from query. The reply can not be empty.
104c1213
JM
9125@item
9126@tab reply @code{E}@var{NN}
9127@tab error reply
9128@item
9129@tab reply @samp{}
9130@tab Indicating an unrecognized @var{query}.
9131
104c1213
JM
9132@item general set @emph{(optional)}
9133@tab @code{Q}@var{var}@code{=}@var{val}
9134@tab
9135Set value of @var{var} to @var{val}. See @samp{q} for a discussing of
9136naming conventions.
9137
d4f3574e
SS
9138@item reset @emph{(deprecated)}
9139@tab @code{r}
9140@tab
9141Reset the entire system.
104c1213
JM
9142
9143@item remote restart @emph{(optional)}
9144@tab @code{R}@var{XX}
9145@tab
d4f3574e
SS
9146Restart the remote server. @var{XX} while needed has no clear
9147definition. FIXME: @emph{An example interaction explaining how this
9148packet is used in extended-remote mode is needed}.
104c1213
JM
9149
9150@item step @emph{(optional)}
9151@tab @code{s}@var{addr}
9152@tab
9153@var{addr} is address to resume. If @var{addr} is omitted, resume at
9154same address.
9155@item
9156@tab reply
9157@tab see below
9158
9159@item step with signal @emph{(optional)}
9160@tab @code{S}@var{sig}@code{;}@var{addr}
9161@tab
9162Like @samp{C} but step not continue.
9163@item
9164@tab reply
9165@tab see below
9166
9167@item search @emph{(optional)}
9168@tab @code{t}@var{addr}@code{:}@var{PP}@code{,}@var{MM}
9169@tab
9170Search backwards starting at address @var{addr} for a match with pattern
9171@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4
d4f3574e 9172bytes. @var{addr} must be at least 3 digits.
104c1213
JM
9173
9174@item thread alive @emph{(optional)}
9175@tab @code{T}@var{XX}
9176@tab Find out if the thread XX is alive.
9177@item
9178@tab reply @code{OK}
9179@tab thread is still alive
9180@item
9181@tab reply @code{E}@var{NN}
9182@tab thread is dead
9183
9184@item reserved
9185@tab @code{u}
9186@tab Reserved for future use
9187
9188@item reserved
9189@tab @code{U}
9190@tab Reserved for future use
9191
9192@item reserved
9193@tab @code{v}
9194@tab Reserved for future use
9195
9196@item reserved
9197@tab @code{V}
9198@tab Reserved for future use
9199
9200@item reserved
9201@tab @code{w}
9202@tab Reserved for future use
9203
9204@item reserved
9205@tab @code{W}
9206@tab Reserved for future use
9207
9208@item reserved
9209@tab @code{x}
9210@tab Reserved for future use
9211
9212@item write mem (binary) @emph{(optional)}
9213@tab @code{X}@var{addr}@code{,}@var{length}@var{:}@var{XX...}
9214@tab
9215@var{addr} is address, @var{length} is number of bytes, @var{XX...} is
d4f3574e
SS
9216binary data. The characters @code{$}, @code{#}, and @code{0x7d} are
9217escaped using @code{0x7d}.
104c1213
JM
9218@item
9219@tab reply @code{OK}
9220@tab for success
9221@item
9222@tab reply @code{E}@var{NN}
9223@tab for an error
9224
9225@item reserved
9226@tab @code{y}
9227@tab Reserved for future use
9228
9229@item reserved
9230@tab @code{Y}
9231@tab Reserved for future use
9232
9233@item remove break or watchpoint @strong{(draft)} @emph{(optional)}
9234@tab @code{z}@var{t}@code{,}@var{addr}@code{,}@var{length}
9235@tab
9236See @samp{Z}.
9237
9238@item insert break or watchpoint @strong{(draft)} @emph{(optional)}
9239@tab @code{Z}@var{t}@code{,}@var{addr}@code{,}@var{length}
9240@tab
9241@var{t} is type: @samp{0} - software breakpoint, @samp{1} - hardware
9242breakpoint, @samp{2} - write watchpoint, @samp{3} - read watchpoint,
9243@samp{4} - access watchpoint; @var{addr} is address; @var{length} is in
9244bytes. For a software breakpoint, @var{length} specifies the size of
9245the instruction to be patched. For hardware breakpoints and watchpoints
d4f3574e
SS
9246@var{length} specifies the memory region to be monitored. To avoid
9247potential problems with duplicate packets, the operations should be
9248implemented in an ident-potentent way.
104c1213
JM
9249@item
9250@tab reply @code{E}@var{NN}
9251@tab for an error
9252@item
9253@tab reply @code{OK}
9254@tab for success
9255@item
9256@tab @samp{}
9257@tab If not supported.
9258
9259@item reserved
9260@tab <other>
9261@tab Reserved for future use
9262
9263@end multitable
9264
d4f3574e
SS
9265The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
9266receive any of the below as a reply. In the case of the @samp{C},
9267@samp{c}, @samp{S} and @samp{s} packets, that reply is only returned
9268when the target halts. In the below the exact meaning of @samp{signal
9269number} is poorly defined. In general one of the UNIX signal numbering
9270conventions is used.
104c1213
JM
9271
9272@multitable @columnfractions .4 .6
9273
9274@item @code{S}@var{AA}
9275@tab @var{AA} is the signal number
9276
9277@item @code{T}@var{AA}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}
9278@tab
9279@var{AA} = two hex digit signal number; @var{n...} = register number
9280(hex), @var{r...} = target byte ordered register contents, size defined
9281by @code{REGISTER_RAW_SIZE}; @var{n...} = @samp{thread}, @var{r...} =
9282thread process ID, this is a hex integer; @var{n...} = other string not
d4f3574e 9283starting with valid hex digit. @value{GDBN} should ignore this
104c1213
JM
9284@var{n...}, @var{r...} pair and go on to the next. This way we can
9285extend the protocol.
9286
9287@item @code{W}@var{AA}
9288@tab
9289The process exited, and @var{AA} is the exit status. This is only
9290applicable for certains sorts of targets.
9291
9292@item @code{X}@var{AA}
9293@tab
9294The process terminated with signal @var{AA}.
9295
9296@item @code{N}@var{AA}@code{;}@var{tttttttt}@code{;}@var{dddddddd}@code{;}@var{bbbbbbbb} @strong{(obsolete)}
9297@tab
9298@var{AA} = signal number; @var{tttttttt} = address of symbol "_start";
9299@var{dddddddd} = base of data section; @var{bbbbbbbb} = base of bss
d4f3574e 9300section. @emph{Note: only used by Cisco Systems targets. The difference
104c1213
JM
9301between this reply and the "qOffsets" query is that the 'N' packet may
9302arrive spontaneously whereas the 'qOffsets' is a query initiated by the
9303host debugger.}
9304
9305@item @code{O}@var{XX...}
9306@tab
c3f6f71d 9307@var{XX...} is hex encoding of @sc{ascii} data. This can happen at any time
104c1213
JM
9308while the program is running and the debugger should continue to wait
9309for 'W', 'T', etc.
9310
9311@end multitable
9312
d4f3574e
SS
9313The following set and query packets have already been defined.
9314
9315@multitable @columnfractions .2 .2 .6
9316
9317@item current thread
9318@tab @code{q}@code{C}
9319@tab Return the current thread id.
9320@item
9321@tab reply @code{QC}@var{pid}
9322@tab
9323Where @var{pid} is a HEX encoded 16 bit process id.
9324@item
9325@tab reply *
9326@tab Any other reply implies the old pid.
9327
9328@item compute CRC of memory block
9329@tab @code{q}@code{CRC:}@var{addr}@code{,}@var{length}
9330@tab
9331@item
9332@tab reply @code{E}@var{NN}
9333@tab An error (such as memory fault)
9334@item
9335@tab reply @code{C}@var{CRC32}
9336@tab A 32 bit cyclic redundancy check of the specified memory region.
9337
9338@item query @var{LIST} or @var{threadLIST} @strong{(deprecated)}
9339@tab @code{q}@code{L}@var{startflag}@var{threadcount}@var{nextthread}
9340@tab
2b628194
MS
9341@item
9342@tab
9343@tab
d4f3574e
SS
9344Obtain thread information from RTOS. Where: @var{startflag} (one hex
9345digit) is one to indicate the first query and zero to indicate a
9346subsequent query; @var{threadcount} (two hex digits) is the maximum
9347number of threads the response packet can contain; and @var{nextthread}
9348(eight hex digits), for subsequent queries (@var{startflag} is zero), is
9349returned in the response as @var{argthread}.
9350@item
9351@tab reply @code{q}@code{M}@var{count}@var{done}@var{argthread}@var{thread...}
9352@tab
2b628194
MS
9353@item
9354@tab
9355@tab
d4f3574e
SS
9356Where: @var{count} (two hex digits) is the number of threads being
9357returned; @var{done} (one hex digit) is zero to indicate more threads
9358and one indicates no further threads; @var{argthreadid} (eight hex
9359digits) is @var{nextthread} from the request packet; @var{thread...} is
9360a sequence of thread IDs from the target. @var{threadid} (eight hex
9361digits). See @code{remote.c:parse_threadlist_response()}.
9362
9363@item query sect offs
9364@tab @code{q}@code{Offsets}
917317f4
JM
9365@tab
9366Get section offsets that the target used when re-locating the downloaded
9367image. @emph{Note: while a @code{Bss} offset is included in the
9368response, @value{GDBN} ignores this and instead applies the @code{Data}
9369offset to the @code{Bss} section.}
d4f3574e
SS
9370@item
9371@tab reply @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
9372
9373@item thread info request
9374@tab @code{q}@code{P}@var{mode}@var{threadid}
9375@tab
9376Returns information on @var{threadid}. Where: @var{mode} is a hex
9377encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
9378@item
9379@tab reply *
9380@tab
9381See @code{remote.c:remote_unpack_thread_info_response()}.
9382
9383@item remote command
9384@tab @code{q}@code{Rcmd,}@var{COMMAND}
9385@tab
9386@var{COMMAND} (hex encoded) is passed to the local interpreter for
9387execution. Invalid commands should be reported using the output string.
9388Before the final result packet, the target may also respond with a
9389number of intermediate @code{O}@var{OUTPUT} console output
9390packets. @emph{Implementors should note that providing access to a
9391stubs's interpreter may have security implications}.
9392@item
9393@tab reply @code{OK}
9394@tab
9395A command response with no output.
9396@item
9397@tab reply @var{OUTPUT}
9398@tab
9399A command response with the hex encoded output string @var{OUTPUT}.
9400@item
9401@tab reply @code{E}@var{NN}
9402@tab
9403Indicate a badly formed request.
9404
9405@item
9406@tab reply @samp{}
9407@tab
9408When @samp{q}@samp{Rcmd} is not recognized.
9409
9410@end multitable
9411
9412The following @samp{g}/@samp{G} packets have previously been defined.
9413In the below, some thirty-two bit registers are transferred as sixty-four
9414bits. Those registers should be zero/sign extended (which?) to fill the
9415space allocated. Register bytes are transfered in target byte order.
9416The two nibbles within a register byte are transfered most-significant -
9417least-significant.
9418
9419@multitable @columnfractions .5 .5
9420
9421@item MIPS32
9422@tab
9423All registers are transfered as thirty-two bit quantities in the order:
942432 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
9425registers; fsr; fir; fp.
9426
9427@item MIPS64
9428@tab
9429All registers are transfered as sixty-four bit quantities (including
9430thirty-two bit registers such as @code{sr}). The ordering is the same
9431as @code{MIPS32}.
9432
9433@end multitable
9434
104c1213
JM
9435Example sequence of a target being re-started. Notice how the restart
9436does not get any direct output:
9437
9438@example
9439<- @code{R00}
9440-> @code{+}
9441@emph{target restarts}
9442<- @code{?}
9443-> @code{+}
9444-> @code{T001:1234123412341234}
9445<- @code{+}
9446@end example
9447
9448Example sequence of a target being stepped by a single instruction:
9449
9450@example
9451<- @code{G1445...}
9452-> @code{+}
9453<- @code{s}
9454-> @code{+}
9455@emph{time passes}
9456-> @code{T001:1234123412341234}
9457<- @code{+}
9458<- @code{g}
9459-> @code{+}
9460-> @code{1455...}
9461<- @code{+}
9462@end example
9463
d4f3574e
SS
9464@kindex set remotedebug@r{, serial protocol}
9465@kindex show remotedebug@r{, serial protocol}
104c1213
JM
9466@cindex packets, reporting on stdout
9467@cindex serial connections, debugging
9468If you have trouble with the serial connection, you can use the command
9469@code{set remotedebug}. This makes @value{GDBN} report on all packets sent
9470back and forth across the serial line to the remote machine. The
9471packet-debugging information is printed on the @value{GDBN} standard output
9472stream. @code{set remotedebug off} turns it off, and @code{show
9473remotedebug} shows you its current state.
9474
9475@node Server
9476@subsubsection Using the @code{gdbserver} program
9477
9478@kindex gdbserver
9479@cindex remote connection without stubs
9480@code{gdbserver} is a control program for Unix-like systems, which
9481allows you to connect your program with a remote @value{GDBN} via
9482@code{target remote}---but without linking in the usual debugging stub.
9483
9484@code{gdbserver} is not a complete replacement for the debugging stubs,
9485because it requires essentially the same operating-system facilities
9486that @value{GDBN} itself does. In fact, a system that can run
9487@code{gdbserver} to connect to a remote @value{GDBN} could also run
9488@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
9489because it is a much smaller program than @value{GDBN} itself. It is
9490also easier to port than all of @value{GDBN}, so you may be able to get
9491started more quickly on a new system by using @code{gdbserver}.
9492Finally, if you develop code for real-time systems, you may find that
9493the tradeoffs involved in real-time operation make it more convenient to
9494do as much development work as possible on another system, for example
9495by cross-compiling. You can use @code{gdbserver} to make a similar
9496choice for debugging.
9497
9498@value{GDBN} and @code{gdbserver} communicate via either a serial line
9499or a TCP connection, using the standard @value{GDBN} remote serial
9500protocol.
9501
9502@table @emph
9503@item On the target machine,
9504you need to have a copy of the program you want to debug.
9505@code{gdbserver} does not need your program's symbol table, so you can
9506strip the program if necessary to save space. @value{GDBN} on the host
9507system does all the symbol handling.
9508
9509To use the server, you must tell it how to communicate with @value{GDBN};
9510the name of your program; and the arguments for your program. The
9511syntax is:
9512
9513@smallexample
9514target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
9515@end smallexample
9516
9517@var{comm} is either a device name (to use a serial line) or a TCP
9518hostname and portnumber. For example, to debug Emacs with the argument
9519@samp{foo.txt} and communicate with @value{GDBN} over the serial port
9520@file{/dev/com1}:
9521
9522@smallexample
9523target> gdbserver /dev/com1 emacs foo.txt
9524@end smallexample
9525
9526@code{gdbserver} waits passively for the host @value{GDBN} to communicate
9527with it.
9528
9529To use a TCP connection instead of a serial line:
9530
9531@smallexample
9532target> gdbserver host:2345 emacs foo.txt
9533@end smallexample
9534
9535The only difference from the previous example is the first argument,
9536specifying that you are communicating with the host @value{GDBN} via
9537TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
9538expect a TCP connection from machine @samp{host} to local TCP port 2345.
9539(Currently, the @samp{host} part is ignored.) You can choose any number
9540you want for the port number as long as it does not conflict with any
9541TCP ports already in use on the target system (for example, @code{23} is
9542reserved for @code{telnet}).@footnote{If you choose a port number that
9543conflicts with another service, @code{gdbserver} prints an error message
d4f3574e 9544and exits.} You must use the same port number with the host @value{GDBN}
104c1213
JM
9545@code{target remote} command.
9546
9547@item On the @value{GDBN} host machine,
9548you need an unstripped copy of your program, since @value{GDBN} needs
9549symbols and debugging information. Start up @value{GDBN} as usual,
9550using the name of the local copy of your program as the first argument.
9551(You may also need the @w{@samp{--baud}} option if the serial line is
d4f3574e 9552running at anything other than 9600@dmn{bps}.) After that, use @code{target
104c1213
JM
9553remote} to establish communications with @code{gdbserver}. Its argument
9554is either a device name (usually a serial device, like
9555@file{/dev/ttyb}), or a TCP port descriptor in the form
9556@code{@var{host}:@var{PORT}}. For example:
9557
9558@smallexample
9559(@value{GDBP}) target remote /dev/ttyb
9560@end smallexample
9561
9562@noindent
9563communicates with the server via serial line @file{/dev/ttyb}, and
9564
9565@smallexample
9566(@value{GDBP}) target remote the-target:2345
9567@end smallexample
9568
9569@noindent
9570communicates via a TCP connection to port 2345 on host @w{@file{the-target}}.
9571For TCP connections, you must start up @code{gdbserver} prior to using
9572the @code{target remote} command. Otherwise you may get an error whose
9573text depends on the host system, but which usually looks something like
9574@samp{Connection refused}.
9575@end table
9576
9577@node NetWare
9578@subsubsection Using the @code{gdbserve.nlm} program
9579
9580@kindex gdbserve.nlm
9581@code{gdbserve.nlm} is a control program for NetWare systems, which
9582allows you to connect your program with a remote @value{GDBN} via
9583@code{target remote}.
9584
9585@value{GDBN} and @code{gdbserve.nlm} communicate via a serial line,
9586using the standard @value{GDBN} remote serial protocol.
9587
9588@table @emph
9589@item On the target machine,
9590you need to have a copy of the program you want to debug.
9591@code{gdbserve.nlm} does not need your program's symbol table, so you
9592can strip the program if necessary to save space. @value{GDBN} on the
9593host system does all the symbol handling.
9594
9595To use the server, you must tell it how to communicate with
9596@value{GDBN}; the name of your program; and the arguments for your
9597program. The syntax is:
9598
9599@smallexample
9600load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
9601 [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
9602@end smallexample
9603
9604@var{board} and @var{port} specify the serial line; @var{baud} specifies
9605the baud rate used by the connection. @var{port} and @var{node} default
d4f3574e 9606to 0, @var{baud} defaults to 9600@dmn{bps}.
104c1213
JM
9607
9608For example, to debug Emacs with the argument @samp{foo.txt}and
9609communicate with @value{GDBN} over serial port number 2 or board 1
d4f3574e 9610using a 19200@dmn{bps} connection:
104c1213
JM
9611
9612@smallexample
9613load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
9614@end smallexample
9615
9616@item On the @value{GDBN} host machine,
9617you need an unstripped copy of your program, since @value{GDBN} needs
9618symbols and debugging information. Start up @value{GDBN} as usual,
9619using the name of the local copy of your program as the first argument.
9620(You may also need the @w{@samp{--baud}} option if the serial line is
d4f3574e 9621running at anything other than 9600@dmn{bps}. After that, use @code{target
104c1213
JM
9622remote} to establish communications with @code{gdbserve.nlm}. Its
9623argument is a device name (usually a serial device, like
9624@file{/dev/ttyb}). For example:
9625
9626@smallexample
9627(@value{GDBP}) target remote /dev/ttyb
9628@end smallexample
9629
9630@noindent
9631communications with the server via serial line @file{/dev/ttyb}.
9632@end table
9633
9634@node KOD
9635@section Kernel Object Display
9636
9637@cindex kernel object display
9638@cindex kernel object
9639@cindex KOD
9640
9641Some targets support kernel object display. Using this facility,
9642@value{GDBN} communicates specially with the underlying operating system
9643and can display information about operating system-level objects such as
9644mutexes and other synchronization objects. Exactly which objects can be
9645displayed is determined on a per-OS basis.
9646
9647Use the @code{set os} command to set the operating system. This tells
9648@value{GDBN} which kernel object display module to initialize:
9649
9650@example
2df3850c 9651(@value{GDBP}) set os cisco
104c1213
JM
9652@end example
9653
9654If @code{set os} succeeds, @value{GDBN} will display some information
9655about the operating system, and will create a new @code{info} command
9656which can be used to query the target. The @code{info} command is named
9657after the operating system:
9658
9659@example
2df3850c 9660(@value{GDBP}) info cisco
104c1213
JM
9661List of Cisco Kernel Objects
9662Object Description
9663any Any and all objects
9664@end example
9665
9666Further subcommands can be used to query about particular objects known
9667by the kernel.
9668
9669There is currently no way to determine whether a given operating system
96baa820
JM
9670is supported other than to try it.
9671
9672
104c1213
JM
9673@node Configurations
9674@chapter Configuration-Specific Information
9675
9676While nearly all @value{GDBN} commands are available for all native and
9677cross versions of the debugger, there are some exceptions. This chapter
9678describes things that are only available in certain configurations.
9679
9680There are three major categories of configurations: native
9681configurations, where the host and target are the same, embedded
9682operating system configurations, which are usually the same for several
9683different processor architectures, and bare embedded processors, which
9684are quite different from each other.
9685
9686@menu
9687* Native::
9688* Embedded OS::
9689* Embedded Processors::
9690* Architectures::
9691@end menu
9692
9693@node Native
9694@section Native
9695
9696This section describes details specific to particular native
9697configurations.
9698
9699@menu
9700* HP-UX:: HP-UX
9701* SVR4 Process Information:: SVR4 process information
9702@end menu
9703
9704@node HP-UX
9705@subsection HP-UX
9706
9707On HP-UX systems, if you refer to a function or variable name that
9708begins with a dollar sign, @value{GDBN} searches for a user or system
9709name first, before it searches for a convenience variable.
9710
9711@node SVR4 Process Information
9712@subsection SVR4 process information
9713
9714@kindex /proc
9715@cindex process image
9716
9717Many versions of SVR4 provide a facility called @samp{/proc} that can be
9718used to examine the image of a running process using file-system
9719subroutines. If @value{GDBN} is configured for an operating system with
9720this facility, the command @code{info proc} is available to report on
9721several kinds of information about the process running your program.
9722@code{info proc} works only on SVR4 systems that include the
9723@code{procfs} code. This includes OSF/1 (Digital Unix), Solaris, Irix,
9724and Unixware, but not HP-UX or Linux, for example.
9725
9726@table @code
9727@kindex info proc
9728@item info proc
9729Summarize available information about the process.
9730
9731@kindex info proc mappings
9732@item info proc mappings
9733Report on the address ranges accessible in the program, with information
9734on whether your program may read, write, or execute each range.
9735
9736@kindex info proc times
9737@item info proc times
9738Starting time, user CPU time, and system CPU time for your program and
9739its children.
9740
9741@kindex info proc id
9742@item info proc id
9743Report on the process IDs related to your program: its own process ID,
9744the ID of its parent, the process group ID, and the session ID.
9745
9746@kindex info proc status
9747@item info proc status
9748General information on the state of the process. If the process is
9749stopped, this report includes the reason for stopping, and any signal
9750received.
9751
9752@item info proc all
9753Show all the above information about the process.
9754@end table
9755
9756@node Embedded OS
9757@section Embedded Operating Systems
9758
9759This section describes configurations involving the debugging of
9760embedded operating systems that are available for several different
9761architectures.
9762
9763@menu
9764* VxWorks:: Using @value{GDBN} with VxWorks
9765@end menu
9766
9767@value{GDBN} includes the ability to debug programs running on
9768various real-time operating systems.
9769
9770@node VxWorks
9771@subsection Using @value{GDBN} with VxWorks
9772
9773@cindex VxWorks
9774
9775@table @code
9776
9777@kindex target vxworks
9778@item target vxworks @var{machinename}
9779A VxWorks system, attached via TCP/IP. The argument @var{machinename}
9780is the target system's machine name or IP address.
9781
9782@end table
9783
9784On VxWorks, @code{load} links @var{filename} dynamically on the
9785current target system as well as adding its symbols in @value{GDBN}.
9786
9787@value{GDBN} enables developers to spawn and debug tasks running on networked
9788VxWorks targets from a Unix host. Already-running tasks spawned from
9789the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
9790both the Unix host and on the VxWorks target. The program
d4f3574e 9791@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
104c1213 9792installed with the name @code{vxgdb}, to distinguish it from a
96a2c332 9793@value{GDBN} for debugging programs on the host itself.)
104c1213
JM
9794
9795@table @code
9796@item VxWorks-timeout @var{args}
9797@kindex vxworks-timeout
9798All VxWorks-based targets now support the option @code{vxworks-timeout}.
9799This option is set by the user, and @var{args} represents the number of
9800seconds @value{GDBN} waits for responses to rpc's. You might use this if
9801your VxWorks target is a slow software simulator or is on the far side
9802of a thin network line.
9803@end table
9804
9805The following information on connecting to VxWorks was current when
9806this manual was produced; newer releases of VxWorks may use revised
9807procedures.
9808
9809@kindex INCLUDE_RDB
9810To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
9811to include the remote debugging interface routines in the VxWorks
9812library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
9813VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
9814kernel. The resulting kernel contains @file{rdb.a}, and spawns the
9815source debugging task @code{tRdbTask} when VxWorks is booted. For more
9816information on configuring and remaking VxWorks, see the manufacturer's
9817manual.
9818@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
9819
9820Once you have included @file{rdb.a} in your VxWorks system image and set
9821your Unix execution search path to find @value{GDBN}, you are ready to
96a2c332
SS
9822run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
9823@code{vxgdb}, depending on your installation).
104c1213
JM
9824
9825@value{GDBN} comes up showing the prompt:
9826
9827@example
9828(vxgdb)
9829@end example
9830
9831@menu
9832* VxWorks Connection:: Connecting to VxWorks
9833* VxWorks Download:: VxWorks download
9834* VxWorks Attach:: Running tasks
9835@end menu
9836
9837@node VxWorks Connection
9838@subsubsection Connecting to VxWorks
9839
9840The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
9841network. To connect to a target whose host name is ``@code{tt}'', type:
9842
9843@example
9844(vxgdb) target vxworks tt
9845@end example
9846
9847@need 750
9848@value{GDBN} displays messages like these:
9849
9850@smallexample
9851Attaching remote machine across net...
9852Connected to tt.
9853@end smallexample
9854
9855@need 1000
9856@value{GDBN} then attempts to read the symbol tables of any object modules
9857loaded into the VxWorks target since it was last booted. @value{GDBN} locates
9858these files by searching the directories listed in the command search
9859path (@pxref{Environment, ,Your program's environment}); if it fails
9860to find an object file, it displays a message such as:
9861
9862@example
9863prog.o: No such file or directory.
9864@end example
9865
9866When this happens, add the appropriate directory to the search path with
9867the @value{GDBN} command @code{path}, and execute the @code{target}
9868command again.
9869
9870@node VxWorks Download
9871@subsubsection VxWorks download
9872
9873@cindex download to VxWorks
9874If you have connected to the VxWorks target and you want to debug an
9875object that has not yet been loaded, you can use the @value{GDBN}
9876@code{load} command to download a file from Unix to VxWorks
9877incrementally. The object file given as an argument to the @code{load}
9878command is actually opened twice: first by the VxWorks target in order
9879to download the code, then by @value{GDBN} in order to read the symbol
9880table. This can lead to problems if the current working directories on
9881the two systems differ. If both systems have NFS mounted the same
9882filesystems, you can avoid these problems by using absolute paths.
9883Otherwise, it is simplest to set the working directory on both systems
9884to the directory in which the object file resides, and then to reference
9885the file by its name, without any path. For instance, a program
9886@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
9887and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
9888program, type this on VxWorks:
9889
9890@example
9891-> cd "@var{vxpath}/vw/demo/rdb"
9892@end example
d4f3574e
SS
9893
9894@noindent
104c1213
JM
9895Then, in @value{GDBN}, type:
9896
9897@example
9898(vxgdb) cd @var{hostpath}/vw/demo/rdb
9899(vxgdb) load prog.o
9900@end example
9901
9902@value{GDBN} displays a response similar to this:
9903
9904@smallexample
9905Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
9906@end smallexample
9907
9908You can also use the @code{load} command to reload an object module
9909after editing and recompiling the corresponding source file. Note that
9910this makes @value{GDBN} delete all currently-defined breakpoints,
9911auto-displays, and convenience variables, and to clear the value
9912history. (This is necessary in order to preserve the integrity of
d4f3574e 9913debugger's data structures that reference the target system's symbol
104c1213
JM
9914table.)
9915
9916@node VxWorks Attach
9917@subsubsection Running tasks
9918
9919@cindex running VxWorks tasks
9920You can also attach to an existing task using the @code{attach} command as
9921follows:
9922
9923@example
9924(vxgdb) attach @var{task}
9925@end example
9926
9927@noindent
9928where @var{task} is the VxWorks hexadecimal task ID. The task can be running
9929or suspended when you attach to it. Running tasks are suspended at
9930the time of attachment.
9931
9932@node Embedded Processors
9933@section Embedded Processors
9934
9935This section goes into details specific to particular embedded
9936configurations.
9937
9938@menu
9939* A29K Embedded:: AMD A29K Embedded
9940* ARM:: ARM
9941* H8/300:: Hitachi H8/300
9942* H8/500:: Hitachi H8/500
9943* i960:: Intel i960
9944* M32R/D:: Mitsubishi M32R/D
9945* M68K:: Motorola M68K
9946* M88K:: Motorola M88K
9947* MIPS Embedded:: MIPS Embedded
9948* PA:: HP PA Embedded
9949* PowerPC: PowerPC
9950* SH:: Hitachi SH
9951* Sparclet:: Tsqware Sparclet
9952* Sparclite:: Fujitsu Sparclite
9953* ST2000:: Tandem ST2000
9954* Z8000:: Zilog Z8000
9955@end menu
9956
9957@node A29K Embedded
9958@subsection AMD A29K Embedded
9959
9960@menu
9961* A29K UDI::
9962* A29K EB29K::
9963* Comms (EB29K):: Communications setup
9964* gdb-EB29K:: EB29K cross-debugging
9965* Remote Log:: Remote log
9966@end menu
9967
9968@table @code
9969
9970@kindex target adapt
9971@item target adapt @var{dev}
9972Adapt monitor for A29K.
9973
9974@kindex target amd-eb
9975@item target amd-eb @var{dev} @var{speed} @var{PROG}
9976@cindex AMD EB29K
9977Remote PC-resident AMD EB29K board, attached over serial lines.
9978@var{dev} is the serial device, as for @code{target remote};
9979@var{speed} allows you to specify the linespeed; and @var{PROG} is the
9980name of the program to be debugged, as it appears to DOS on the PC.
9981@xref{A29K EB29K, ,EBMON protocol for AMD29K}.
9982
9983@end table
9984
9985@node A29K UDI
9986@subsubsection A29K UDI
9987
9988@cindex UDI
9989@cindex AMD29K via UDI
9990
9991@value{GDBN} supports AMD's UDI (``Universal Debugger Interface'')
9992protocol for debugging the a29k processor family. To use this
9993configuration with AMD targets running the MiniMON monitor, you need the
9994program @code{MONTIP}, available from AMD at no charge. You can also
9995use @value{GDBN} with the UDI-conformant a29k simulator program
9996@code{ISSTIP}, also available from AMD.
9997
9998@table @code
9999@item target udi @var{keyword}
10000@kindex udi
10001Select the UDI interface to a remote a29k board or simulator, where
10002@var{keyword} is an entry in the AMD configuration file @file{udi_soc}.
10003This file contains keyword entries which specify parameters used to
10004connect to a29k targets. If the @file{udi_soc} file is not in your
10005working directory, you must set the environment variable @samp{UDICONF}
10006to its pathname.
10007@end table
10008
10009@node A29K EB29K
10010@subsubsection EBMON protocol for AMD29K
10011
10012@cindex EB29K board
10013@cindex running 29K programs
10014
10015AMD distributes a 29K development board meant to fit in a PC, together
10016with a DOS-hosted monitor program called @code{EBMON}. As a shorthand
10017term, this development system is called the ``EB29K''. To use
10018@value{GDBN} from a Unix system to run programs on the EB29K board, you
10019must first connect a serial cable between the PC (which hosts the EB29K
10020board) and a serial port on the Unix system. In the following, we
10021assume you've hooked the cable between the PC's @file{COM1} port and
10022@file{/dev/ttya} on the Unix system.
10023
10024@node Comms (EB29K)
10025@subsubsection Communications setup
10026
10027The next step is to set up the PC's port, by doing something like this
10028in DOS on the PC:
10029
10030@example
10031C:\> MODE com1:9600,n,8,1,none
10032@end example
10033
10034@noindent
10035This example---run on an MS DOS 4.0 system---sets the PC port to 9600
10036bps, no parity, eight data bits, one stop bit, and no ``retry'' action;
10037you must match the communications parameters when establishing the Unix
10038end of the connection as well.
10039@c FIXME: Who knows what this "no retry action" crud from the DOS manual may
10040@c mean? It's optional; leave it out? ---doc@cygnus.com, 25feb91
d4f3574e
SS
10041@c
10042@c It's optional, but it's unwise to omit it: who knows what is the
10043@c default value set when the DOS machines boots? "No retry" means that
10044@c the DOS serial device driver won't retry the operation if it fails;
10045@c I understand that this is needed because the GDB serial protocol
10046@c handles any errors and retransmissions itself. ---Eli Zaretskii, 3sep99
104c1213
JM
10047
10048To give control of the PC to the Unix side of the serial line, type
10049the following at the DOS console:
10050
10051@example
10052C:\> CTTY com1
10053@end example
10054
10055@noindent
10056(Later, if you wish to return control to the DOS console, you can use
10057the command @code{CTTY con}---but you must send it over the device that
96a2c332 10058had control, in our example over the @file{COM1} serial line.)
104c1213
JM
10059
10060From the Unix host, use a communications program such as @code{tip} or
10061@code{cu} to communicate with the PC; for example,
10062
10063@example
10064cu -s 9600 -l /dev/ttya
10065@end example
10066
10067@noindent
10068The @code{cu} options shown specify, respectively, the linespeed and the
10069serial port to use. If you use @code{tip} instead, your command line
10070may look something like the following:
10071
10072@example
10073tip -9600 /dev/ttya
10074@end example
10075
10076@noindent
10077Your system may require a different name where we show
10078@file{/dev/ttya} as the argument to @code{tip}. The communications
10079parameters, including which port to use, are associated with the
10080@code{tip} argument in the ``remote'' descriptions file---normally the
10081system table @file{/etc/remote}.
10082@c FIXME: What if anything needs doing to match the "n,8,1,none" part of
10083@c the DOS side's comms setup? cu can support -o (odd
10084@c parity), -e (even parity)---apparently no settings for no parity or
10085@c for character size. Taken from stty maybe...? John points out tip
10086@c can set these as internal variables, eg ~s parity=none; man stty
10087@c suggests that it *might* work to stty these options with stdin or
10088@c stdout redirected... ---doc@cygnus.com, 25feb91
d4f3574e
SS
10089@c
10090@c There's nothing to be done for the "none" part of the DOS MODE
10091@c command. The rest of the parameters should be matched by the
10092@c baudrate, bits, and parity used by the Unix side. ---Eli Zaretskii, 3Sep99
104c1213
JM
10093
10094@kindex EBMON
10095Using the @code{tip} or @code{cu} connection, change the DOS working
10096directory to the directory containing a copy of your 29K program, then
10097start the PC program @code{EBMON} (an EB29K control program supplied
10098with your board by AMD). You should see an initial display from
10099@code{EBMON} similar to the one that follows, ending with the
10100@code{EBMON} prompt @samp{#}---
10101
10102@example
10103C:\> G:
10104
10105G:\> CD \usr\joe\work29k
10106
10107G:\USR\JOE\WORK29K> EBMON
10108Am29000 PC Coprocessor Board Monitor, version 3.0-18
10109Copyright 1990 Advanced Micro Devices, Inc.
10110Written by Gibbons and Associates, Inc.
10111
10112Enter '?' or 'H' for help
10113
10114PC Coprocessor Type = EB29K
10115I/O Base = 0x208
10116Memory Base = 0xd0000
10117
10118Data Memory Size = 2048KB
10119Available I-RAM Range = 0x8000 to 0x1fffff
10120Available D-RAM Range = 0x80002000 to 0x801fffff
10121
10122PageSize = 0x400
10123Register Stack Size = 0x800
10124Memory Stack Size = 0x1800
10125
10126CPU PRL = 0x3
10127Am29027 Available = No
10128Byte Write Available = Yes
10129
10130# ~.
10131@end example
10132
10133Then exit the @code{cu} or @code{tip} program (done in the example by
10134typing @code{~.} at the @code{EBMON} prompt). @code{EBMON} keeps
10135running, ready for @value{GDBN} to take over.
10136
10137For this example, we've assumed what is probably the most convenient
10138way to make sure the same 29K program is on both the PC and the Unix
d4f3574e 10139system: a PC/NFS connection that establishes ``drive @file{G:}'' on the
104c1213
JM
10140PC as a file system on the Unix host. If you do not have PC/NFS or
10141something similar connecting the two systems, you must arrange some
10142other way---perhaps floppy-disk transfer---of getting the 29K program
10143from the Unix system to the PC; @value{GDBN} does @emph{not} download it over the
10144serial line.
10145
10146@node gdb-EB29K
10147@subsubsection EB29K cross-debugging
10148
10149Finally, @code{cd} to the directory containing an image of your 29K
10150program on the Unix system, and start @value{GDBN}---specifying as argument the
10151name of your 29K program:
10152
10153@example
10154cd /usr/joe/work29k
10155@value{GDBP} myfoo
10156@end example
10157
10158@need 500
10159Now you can use the @code{target} command:
10160
10161@example
10162target amd-eb /dev/ttya 9600 MYFOO
10163@c FIXME: test above 'target amd-eb' as spelled, with caps! caps are meant to
10164@c emphasize that this is the name as seen by DOS (since I think DOS is
10165@c single-minded about case of letters). ---doc@cygnus.com, 25feb91
10166@end example
10167
10168@noindent
10169In this example, we've assumed your program is in a file called
10170@file{myfoo}. Note that the filename given as the last argument to
10171@code{target amd-eb} should be the name of the program as it appears to DOS.
10172In our example this is simply @code{MYFOO}, but in general it can include
10173a DOS path, and depending on your transfer mechanism may not resemble
10174the name on the Unix side.
10175
10176At this point, you can set any breakpoints you wish; when you are ready
10177to see your program run on the 29K board, use the @value{GDBN} command
10178@code{run}.
10179
10180To stop debugging the remote program, use the @value{GDBN} @code{detach}
10181command.
10182
10183To return control of the PC to its console, use @code{tip} or @code{cu}
10184once again, after your @value{GDBN} session has concluded, to attach to
10185@code{EBMON}. You can then type the command @code{q} to shut down
10186@code{EBMON}, returning control to the DOS command-line interpreter.
d4f3574e 10187Type @kbd{CTTY con} to return command input to the main DOS console,
104c1213
JM
10188and type @kbd{~.} to leave @code{tip} or @code{cu}.
10189
10190@node Remote Log
10191@subsubsection Remote log
10192@kindex eb.log
10193@cindex log file for EB29K
10194
10195The @code{target amd-eb} command creates a file @file{eb.log} in the
10196current working directory, to help debug problems with the connection.
10197@file{eb.log} records all the output from @code{EBMON}, including echoes
10198of the commands sent to it. Running @samp{tail -f} on this file in
10199another window often helps to understand trouble with @code{EBMON}, or
10200unexpected events on the PC side of the connection.
10201
10202@node ARM
10203@subsection ARM
10204
10205@table @code
10206
10207@kindex target rdi
10208@item target rdi @var{dev}
10209ARM Angel monitor, via RDI library interface to ADP protocol. You may
10210use this target to communicate with both boards running the Angel
10211monitor, or with the EmbeddedICE JTAG debug device.
10212
10213@kindex target rdp
10214@item target rdp @var{dev}
10215ARM Demon monitor.
10216
10217@end table
10218
10219@node H8/300
10220@subsection Hitachi H8/300
10221
10222@table @code
10223
d4f3574e 10224@kindex target hms@r{, with H8/300}
104c1213
JM
10225@item target hms @var{dev}
10226A Hitachi SH, H8/300, or H8/500 board, attached via serial line to your host.
10227Use special commands @code{device} and @code{speed} to control the serial
10228line and the communications speed used.
10229
d4f3574e 10230@kindex target e7000@r{, with H8/300}
104c1213
JM
10231@item target e7000 @var{dev}
10232E7000 emulator for Hitachi H8 and SH.
10233
d4f3574e
SS
10234@kindex target sh3@r{, with H8/300}
10235@kindex target sh3e@r{, with H8/300}
104c1213 10236@item target sh3 @var{dev}
96a2c332 10237@itemx target sh3e @var{dev}
104c1213
JM
10238Hitachi SH-3 and SH-3E target systems.
10239
10240@end table
10241
10242@cindex download to H8/300 or H8/500
10243@cindex H8/300 or H8/500 download
10244@cindex download to Hitachi SH
10245@cindex Hitachi SH download
10246When you select remote debugging to a Hitachi SH, H8/300, or H8/500
10247board, the @code{load} command downloads your program to the Hitachi
10248board and also opens it as the current executable target for
10249@value{GDBN} on your host (like the @code{file} command).
10250
10251@value{GDBN} needs to know these things to talk to your
10252Hitachi SH, H8/300, or H8/500:
10253
10254@enumerate
10255@item
10256that you want to use @samp{target hms}, the remote debugging interface
10257for Hitachi microprocessors, or @samp{target e7000}, the in-circuit
10258emulator for the Hitachi SH and the Hitachi 300H. (@samp{target hms} is
2df3850c 10259the default when @value{GDBN} is configured specifically for the Hitachi SH,
104c1213
JM
10260H8/300, or H8/500.)
10261
10262@item
10263what serial device connects your host to your Hitachi board (the first
10264serial device available on your host is the default).
10265
10266@item
10267what speed to use over the serial device.
10268@end enumerate
10269
10270@menu
10271* Hitachi Boards:: Connecting to Hitachi boards.
10272* Hitachi ICE:: Using the E7000 In-Circuit Emulator.
10273* Hitachi Special:: Special @value{GDBN} commands for Hitachi micros.
10274@end menu
10275
10276@node Hitachi Boards
10277@subsubsection Connecting to Hitachi boards
10278
10279@c only for Unix hosts
10280@kindex device
10281@cindex serial device, Hitachi micros
96a2c332 10282Use the special @code{@value{GDBN}} command @samp{device @var{port}} if you
104c1213
JM
10283need to explicitly set the serial device. The default @var{port} is the
10284first available port on your host. This is only necessary on Unix
10285hosts, where it is typically something like @file{/dev/ttya}.
10286
10287@kindex speed
10288@cindex serial line speed, Hitachi micros
96a2c332 10289@code{@value{GDBN}} has another special command to set the communications
104c1213 10290speed: @samp{speed @var{bps}}. This command also is only used from Unix
2df3850c 10291hosts; on DOS hosts, set the line speed as usual from outside @value{GDBN} with
d4f3574e
SS
10292the DOS @code{mode} command (for instance,
10293@w{@kbd{mode com2:9600,n,8,1,p}} for a 9600@dmn{bps} connection).
104c1213
JM
10294
10295The @samp{device} and @samp{speed} commands are available only when you
10296use a Unix host to debug your Hitachi microprocessor programs. If you
10297use a DOS host,
10298@value{GDBN} depends on an auxiliary terminate-and-stay-resident program
10299called @code{asynctsr} to communicate with the development board
10300through a PC serial port. You must also use the DOS @code{mode} command
10301to set up the serial port on the DOS side.
10302
10303The following sample session illustrates the steps needed to start a
10304program under @value{GDBN} control on an H8/300. The example uses a
10305sample H8/300 program called @file{t.x}. The procedure is the same for
10306the Hitachi SH and the H8/500.
10307
10308First hook up your development board. In this example, we use a
10309board attached to serial port @code{COM2}; if you use a different serial
10310port, substitute its name in the argument of the @code{mode} command.
10311When you call @code{asynctsr}, the auxiliary comms program used by the
d4f3574e 10312debugger, you give it just the numeric part of the serial port's name;
104c1213
JM
10313for example, @samp{asyncstr 2} below runs @code{asyncstr} on
10314@code{COM2}.
10315
10316@example
10317C:\H8300\TEST> asynctsr 2
10318C:\H8300\TEST> mode com2:9600,n,8,1,p
10319
10320Resident portion of MODE loaded
10321
10322COM2: 9600, n, 8, 1, p
10323
10324@end example
10325
10326@quotation
10327@emph{Warning:} We have noticed a bug in PC-NFS that conflicts with
10328@code{asynctsr}. If you also run PC-NFS on your DOS host, you may need to
10329disable it, or even boot without it, to use @code{asynctsr} to control
10330your development board.
10331@end quotation
10332
d4f3574e 10333@kindex target hms@r{, and serial protocol}
104c1213
JM
10334Now that serial communications are set up, and the development board is
10335connected, you can start up @value{GDBN}. Call @code{@value{GDBP}} with
96a2c332 10336the name of your program as the argument. @code{@value{GDBN}} prompts
104c1213
JM
10337you, as usual, with the prompt @samp{(@value{GDBP})}. Use two special
10338commands to begin your debugging session: @samp{target hms} to specify
10339cross-debugging to the Hitachi board, and the @code{load} command to
10340download your program to the board. @code{load} displays the names of
10341the program's sections, and a @samp{*} for each 2K of data downloaded.
10342(If you want to refresh @value{GDBN} data on symbols or on the
10343executable file without downloading, use the @value{GDBN} commands
10344@code{file} or @code{symbol-file}. These commands, and @code{load}
10345itself, are described in @ref{Files,,Commands to specify files}.)
10346
10347@smallexample
10348(eg-C:\H8300\TEST) @value{GDBP} t.x
2df3850c 10349@value{GDBN} is free software and you are welcome to distribute copies
104c1213
JM
10350 of it under certain conditions; type "show copying" to see
10351 the conditions.
2df3850c 10352There is absolutely no warranty for @value{GDBN}; type "show warranty"
104c1213 10353for details.
2df3850c
JM
10354@value{GDBN} @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
10355(@value{GDBP}) target hms
104c1213 10356Connected to remote H8/300 HMS system.
2df3850c 10357(@value{GDBP}) load t.x
104c1213
JM
10358.text : 0x8000 .. 0xabde ***********
10359.data : 0xabde .. 0xad30 *
10360.stack : 0xf000 .. 0xf014 *
10361@end smallexample
10362
10363At this point, you're ready to run or debug your program. From here on,
10364you can use all the usual @value{GDBN} commands. The @code{break} command
10365sets breakpoints; the @code{run} command starts your program;
10366@code{print} or @code{x} display data; the @code{continue} command
10367resumes execution after stopping at a breakpoint. You can use the
10368@code{help} command at any time to find out more about @value{GDBN} commands.
10369
10370Remember, however, that @emph{operating system} facilities aren't
10371available on your development board; for example, if your program hangs,
10372you can't send an interrupt---but you can press the @sc{reset} switch!
10373
10374Use the @sc{reset} button on the development board
10375@itemize @bullet
10376@item
10377to interrupt your program (don't use @kbd{ctl-C} on the DOS host---it has
10378no way to pass an interrupt signal to the development board); and
10379
10380@item
10381to return to the @value{GDBN} command prompt after your program finishes
10382normally. The communications protocol provides no other way for @value{GDBN}
10383to detect program completion.
10384@end itemize
10385
10386In either case, @value{GDBN} sees the effect of a @sc{reset} on the
10387development board as a ``normal exit'' of your program.
10388
10389@node Hitachi ICE
10390@subsubsection Using the E7000 in-circuit emulator
10391
d4f3574e 10392@kindex target e7000@r{, with Hitachi ICE}
104c1213
JM
10393You can use the E7000 in-circuit emulator to develop code for either the
10394Hitachi SH or the H8/300H. Use one of these forms of the @samp{target
10395e7000} command to connect @value{GDBN} to your E7000:
10396
10397@table @code
10398@item target e7000 @var{port} @var{speed}
10399Use this form if your E7000 is connected to a serial port. The
10400@var{port} argument identifies what serial port to use (for example,
10401@samp{com2}). The third argument is the line speed in bits per second
10402(for example, @samp{9600}).
10403
10404@item target e7000 @var{hostname}
10405If your E7000 is installed as a host on a TCP/IP network, you can just
10406specify its hostname; @value{GDBN} uses @code{telnet} to connect.
10407@end table
10408
10409@node Hitachi Special
10410@subsubsection Special @value{GDBN} commands for Hitachi micros
10411
10412Some @value{GDBN} commands are available only for the H8/300:
10413
10414@table @code
10415
10416@kindex set machine
10417@kindex show machine
10418@item set machine h8300
10419@itemx set machine h8300h
10420Condition @value{GDBN} for one of the two variants of the H8/300
10421architecture with @samp{set machine}. You can use @samp{show machine}
10422to check which variant is currently in effect.
10423
10424@end table
10425
10426@node H8/500
10427@subsection H8/500
10428
10429@table @code
10430
10431@kindex set memory @var{mod}
10432@cindex memory models, H8/500
10433@item set memory @var{mod}
10434@itemx show memory
10435Specify which H8/500 memory model (@var{mod}) you are using with
10436@samp{set memory}; check which memory model is in effect with @samp{show
10437memory}. The accepted values for @var{mod} are @code{small},
10438@code{big}, @code{medium}, and @code{compact}.
10439
10440@end table
10441
10442@node i960
10443@subsection Intel i960
10444
10445@table @code
10446
10447@kindex target mon960
10448@item target mon960 @var{dev}
10449MON960 monitor for Intel i960.
10450
10451@item target nindy @var{devicename}
10452An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
10453the name of the serial device to use for the connection, e.g.
10454@file{/dev/ttya}.
10455
10456@end table
10457
10458@cindex Nindy
10459@cindex i960
10460@dfn{Nindy} is a ROM Monitor program for Intel 960 target systems. When
10461@value{GDBN} is configured to control a remote Intel 960 using Nindy, you can
10462tell @value{GDBN} how to connect to the 960 in several ways:
10463
10464@itemize @bullet
10465@item
10466Through command line options specifying serial port, version of the
10467Nindy protocol, and communications speed;
10468
10469@item
10470By responding to a prompt on startup;
10471
10472@item
10473By using the @code{target} command at any point during your @value{GDBN}
10474session. @xref{Target Commands, ,Commands for managing targets}.
10475
10476@kindex target nindy
10477@item target nindy @var{devicename}
10478An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
10479the name of the serial device to use for the connection, e.g.
10480@file{/dev/ttya}.
10481
10482@end itemize
10483
10484@cindex download to Nindy-960
10485With the Nindy interface to an Intel 960 board, @code{load}
10486downloads @var{filename} to the 960 as well as adding its symbols in
10487@value{GDBN}.
10488
10489@menu
10490* Nindy Startup:: Startup with Nindy
10491* Nindy Options:: Options for Nindy
10492* Nindy Reset:: Nindy reset command
10493@end menu
10494
10495@node Nindy Startup
10496@subsubsection Startup with Nindy
10497
10498If you simply start @code{@value{GDBP}} without using any command-line
10499options, you are prompted for what serial port to use, @emph{before} you
10500reach the ordinary @value{GDBN} prompt:
10501
10502@example
10503Attach /dev/ttyNN -- specify NN, or "quit" to quit:
10504@end example
10505
10506@noindent
10507Respond to the prompt with whatever suffix (after @samp{/dev/tty})
10508identifies the serial port you want to use. You can, if you choose,
10509simply start up with no Nindy connection by responding to the prompt
10510with an empty line. If you do this and later wish to attach to Nindy,
10511use @code{target} (@pxref{Target Commands, ,Commands for managing targets}).
10512
10513@node Nindy Options
10514@subsubsection Options for Nindy
10515
10516These are the startup options for beginning your @value{GDBN} session with a
10517Nindy-960 board attached:
10518
10519@table @code
10520@item -r @var{port}
10521Specify the serial port name of a serial interface to be used to connect
10522to the target system. This option is only available when @value{GDBN} is
10523configured for the Intel 960 target architecture. You may specify
10524@var{port} as any of: a full pathname (e.g. @samp{-r /dev/ttya}), a
10525device name in @file{/dev} (e.g. @samp{-r ttya}), or simply the unique
10526suffix for a specific @code{tty} (e.g. @samp{-r a}).
10527
10528@item -O
10529(An uppercase letter ``O'', not a zero.) Specify that @value{GDBN} should use
10530the ``old'' Nindy monitor protocol to connect to the target system.
10531This option is only available when @value{GDBN} is configured for the Intel 960
10532target architecture.
10533
10534@quotation
10535@emph{Warning:} if you specify @samp{-O}, but are actually trying to
10536connect to a target system that expects the newer protocol, the connection
10537fails, appearing to be a speed mismatch. @value{GDBN} repeatedly
10538attempts to reconnect at several different line speeds. You can abort
10539this process with an interrupt.
10540@end quotation
10541
10542@item -brk
10543Specify that @value{GDBN} should first send a @code{BREAK} signal to the target
10544system, in an attempt to reset it, before connecting to a Nindy target.
10545
10546@quotation
10547@emph{Warning:} Many target systems do not have the hardware that this
10548requires; it only works with a few boards.
10549@end quotation
10550@end table
10551
10552The standard @samp{-b} option controls the line speed used on the serial
10553port.
10554
10555@c @group
10556@node Nindy Reset
10557@subsubsection Nindy reset command
10558
10559@table @code
10560@item reset
10561@kindex reset
10562For a Nindy target, this command sends a ``break'' to the remote target
10563system; this is only useful if the target has been equipped with a
10564circuit to perform a hard reset (or some other interesting action) when
10565a break is detected.
10566@end table
10567@c @end group
10568
10569@node M32R/D
10570@subsection Mitsubishi M32R/D
10571
10572@table @code
10573
10574@kindex target m32r
10575@item target m32r @var{dev}
10576Mitsubishi M32R/D ROM monitor.
10577
10578@end table
10579
10580@node M68K
10581@subsection M68k
10582
10583The Motorola m68k configuration includes ColdFire support, and
10584target command for the following ROM monitors.
10585
10586@table @code
10587
10588@kindex target abug
10589@item target abug @var{dev}
10590ABug ROM monitor for M68K.
10591
10592@kindex target cpu32bug
10593@item target cpu32bug @var{dev}
10594CPU32BUG monitor, running on a CPU32 (M68K) board.
10595
10596@kindex target dbug
10597@item target dbug @var{dev}
10598dBUG ROM monitor for Motorola ColdFire.
10599
10600@kindex target est
10601@item target est @var{dev}
10602EST-300 ICE monitor, running on a CPU32 (M68K) board.
10603
10604@kindex target rom68k
10605@item target rom68k @var{dev}
10606ROM 68K monitor, running on an M68K IDP board.
10607
10608@end table
10609
10610If @value{GDBN} is configured with @code{m68*-ericsson-*}, it will
10611instead have only a single special target command:
10612
10613@table @code
10614
10615@kindex target es1800
10616@item target es1800 @var{dev}
10617ES-1800 emulator for M68K.
10618
10619@end table
10620
10621[context?]
10622
10623@table @code
10624
10625@kindex target rombug
10626@item target rombug @var{dev}
10627ROMBUG ROM monitor for OS/9000.
10628
10629@end table
10630
10631@node M88K
10632@subsection M88K
10633
10634@table @code
10635
10636@kindex target bug
10637@item target bug @var{dev}
10638BUG monitor, running on a MVME187 (m88k) board.
10639
10640@end table
10641
10642@node MIPS Embedded
10643@subsection MIPS Embedded
10644
10645@cindex MIPS boards
10646@value{GDBN} can use the MIPS remote debugging protocol to talk to a
10647MIPS board attached to a serial line. This is available when
10648you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
10649
10650@need 1000
10651Use these @value{GDBN} commands to specify the connection to your target board:
10652
10653@table @code
10654@item target mips @var{port}
10655@kindex target mips @var{port}
10656To run a program on the board, start up @code{@value{GDBP}} with the
10657name of your program as the argument. To connect to the board, use the
10658command @samp{target mips @var{port}}, where @var{port} is the name of
10659the serial port connected to the board. If the program has not already
10660been downloaded to the board, you may use the @code{load} command to
10661download it. You can then use all the usual @value{GDBN} commands.
10662
10663For example, this sequence connects to the target board through a serial
10664port, and loads and runs a program called @var{prog} through the
10665debugger:
10666
10667@example
10668host$ @value{GDBP} @var{prog}
2df3850c
JM
10669@value{GDBN} is free software and @dots{}
10670(@value{GDBP}) target mips /dev/ttyb
10671(@value{GDBP}) load @var{prog}
10672(@value{GDBP}) run
104c1213
JM
10673@end example
10674
10675@item target mips @var{hostname}:@var{portnumber}
10676On some @value{GDBN} host configurations, you can specify a TCP
10677connection (for instance, to a serial line managed by a terminal
10678concentrator) instead of a serial port, using the syntax
10679@samp{@var{hostname}:@var{portnumber}}.
10680
10681@item target pmon @var{port}
10682@kindex target pmon @var{port}
10683PMON ROM monitor.
10684
10685@item target ddb @var{port}
10686@kindex target ddb @var{port}
10687NEC's DDB variant of PMON for Vr4300.
10688
10689@item target lsi @var{port}
10690@kindex target lsi @var{port}
10691LSI variant of PMON.
10692
10693@kindex target r3900
10694@item target r3900 @var{dev}
10695Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
10696
10697@kindex target array
10698@item target array @var{dev}
10699Array Tech LSI33K RAID controller board.
10700
10701@end table
10702
10703
10704@noindent
10705@value{GDBN} also supports these special commands for MIPS targets:
10706
10707@table @code
10708@item set processor @var{args}
10709@itemx show processor
10710@kindex set processor @var{args}
10711@kindex show processor
10712Use the @code{set processor} command to set the type of MIPS
10713processor when you want to access processor-type-specific registers.
10714For example, @code{set processor @var{r3041}} tells @value{GDBN}
10715to use the CPO registers appropriate for the 3041 chip.
10716Use the @code{show processor} command to see what MIPS processor @value{GDBN}
10717is using. Use the @code{info reg} command to see what registers
10718@value{GDBN} is using.
10719
10720@item set mipsfpu double
10721@itemx set mipsfpu single
10722@itemx set mipsfpu none
10723@itemx show mipsfpu
10724@kindex set mipsfpu
10725@kindex show mipsfpu
10726@cindex MIPS remote floating point
10727@cindex floating point, MIPS remote
10728If your target board does not support the MIPS floating point
10729coprocessor, you should use the command @samp{set mipsfpu none} (if you
96a2c332 10730need this, you may wish to put the command in your @value{GDBN} init
104c1213
JM
10731file). This tells @value{GDBN} how to find the return value of
10732functions which return floating point values. It also allows
10733@value{GDBN} to avoid saving the floating point registers when calling
10734functions on the board. If you are using a floating point coprocessor
10735with only single precision floating point support, as on the @sc{r4650}
10736processor, use the command @samp{set mipsfpu single}. The default
10737double precision floating point coprocessor may be selected using
10738@samp{set mipsfpu double}.
10739
10740In previous versions the only choices were double precision or no
10741floating point, so @samp{set mipsfpu on} will select double precision
10742and @samp{set mipsfpu off} will select no floating point.
10743
10744As usual, you can inquire about the @code{mipsfpu} variable with
10745@samp{show mipsfpu}.
10746
10747@item set remotedebug @var{n}
10748@itemx show remotedebug
d4f3574e
SS
10749@kindex set remotedebug@r{, MIPS protocol}
10750@kindex show remotedebug@r{, MIPS protocol}
104c1213
JM
10751@cindex @code{remotedebug}, MIPS protocol
10752@cindex MIPS @code{remotedebug} protocol
10753@c FIXME! For this to be useful, you must know something about the MIPS
10754@c FIXME...protocol. Where is it described?
10755You can see some debugging information about communications with the board
10756by setting the @code{remotedebug} variable. If you set it to @code{1} using
10757@samp{set remotedebug 1}, every packet is displayed. If you set it
10758to @code{2}, every character is displayed. You can check the current value
10759at any time with the command @samp{show remotedebug}.
10760
10761@item set timeout @var{seconds}
10762@itemx set retransmit-timeout @var{seconds}
10763@itemx show timeout
10764@itemx show retransmit-timeout
10765@cindex @code{timeout}, MIPS protocol
10766@cindex @code{retransmit-timeout}, MIPS protocol
10767@kindex set timeout
10768@kindex show timeout
10769@kindex set retransmit-timeout
10770@kindex show retransmit-timeout
10771You can control the timeout used while waiting for a packet, in the MIPS
10772remote protocol, with the @code{set timeout @var{seconds}} command. The
10773default is 5 seconds. Similarly, you can control the timeout used while
10774waiting for an acknowledgement of a packet with the @code{set
10775retransmit-timeout @var{seconds}} command. The default is 3 seconds.
10776You can inspect both values with @code{show timeout} and @code{show
10777retransmit-timeout}. (These commands are @emph{only} available when
10778@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
10779
10780The timeout set by @code{set timeout} does not apply when @value{GDBN}
10781is waiting for your program to stop. In that case, @value{GDBN} waits
10782forever because it has no way of knowing how long the program is going
10783to run before stopping.
10784@end table
10785
10786@node PowerPC
10787@subsection PowerPC
10788
10789@table @code
10790
10791@kindex target dink32
10792@item target dink32 @var{dev}
10793DINK32 ROM monitor.
10794
10795@kindex target ppcbug
10796@item target ppcbug @var{dev}
10797@kindex target ppcbug1
10798@item target ppcbug1 @var{dev}
10799PPCBUG ROM monitor for PowerPC.
10800
10801@kindex target sds
10802@item target sds @var{dev}
10803SDS monitor, running on a PowerPC board (such as Motorola's ADS).
10804
10805@end table
10806
10807@node PA
10808@subsection HP PA Embedded
10809
10810@table @code
10811
10812@kindex target op50n
10813@item target op50n @var{dev}
10814OP50N monitor, running on an OKI HPPA board.
10815
10816@kindex target w89k
10817@item target w89k @var{dev}
10818W89K monitor, running on a Winbond HPPA board.
10819
10820@end table
10821
10822@node SH
10823@subsection Hitachi SH
10824
10825@table @code
10826
d4f3574e 10827@kindex target hms@r{, with Hitachi SH}
104c1213
JM
10828@item target hms @var{dev}
10829A Hitachi SH board attached via serial line to your host. Use special
10830commands @code{device} and @code{speed} to control the serial line and
10831the communications speed used.
10832
d4f3574e 10833@kindex target e7000@r{, with Hitachi SH}
104c1213
JM
10834@item target e7000 @var{dev}
10835E7000 emulator for Hitachi SH.
10836
d4f3574e
SS
10837@kindex target sh3@r{, with SH}
10838@kindex target sh3e@r{, with SH}
104c1213
JM
10839@item target sh3 @var{dev}
10840@item target sh3e @var{dev}
10841Hitachi SH-3 and SH-3E target systems.
10842
10843@end table
10844
10845@node Sparclet
10846@subsection Tsqware Sparclet
10847
10848@cindex Sparclet
10849
10850@value{GDBN} enables developers to debug tasks running on
10851Sparclet targets from a Unix host.
10852@value{GDBN} uses code that runs on
10853both the Unix host and on the Sparclet target. The program
d4f3574e 10854@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213
JM
10855
10856@table @code
10857@item timeout @var{args}
10858@kindex remotetimeout
d4f3574e 10859@value{GDBN} supports the option @code{remotetimeout}.
104c1213
JM
10860This option is set by the user, and @var{args} represents the number of
10861seconds @value{GDBN} waits for responses.
10862@end table
10863
10864@kindex Compiling
d4f3574e
SS
10865When compiling for debugging, include the options @samp{-g} to get debug
10866information and @samp{-Ttext} to relocate the program to where you wish to
10867load it on the target. You may also want to add the options @samp{-n} or
10868@samp{-N} in order to reduce the size of the sections. Example:
104c1213
JM
10869
10870@example
10871sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
10872@end example
10873
d4f3574e 10874You can use @code{objdump} to verify that the addresses are what you intended:
104c1213
JM
10875
10876@example
10877sparclet-aout-objdump --headers --syms prog
10878@end example
10879
10880@kindex Running
10881Once you have set
10882your Unix execution search path to find @value{GDBN}, you are ready to
d4f3574e 10883run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
104c1213
JM
10884(or @code{sparclet-aout-gdb}, depending on your installation).
10885
10886@value{GDBN} comes up showing the prompt:
10887
10888@example
10889(gdbslet)
10890@end example
10891
10892@menu
10893* Sparclet File:: Setting the file to debug
10894* Sparclet Connection:: Connecting to Sparclet
10895* Sparclet Download:: Sparclet download
10896* Sparclet Execution:: Running and debugging
10897@end menu
10898
10899@node Sparclet File
10900@subsubsection Setting file to debug
10901
10902The @value{GDBN} command @code{file} lets you choose with program to debug.
10903
10904@example
10905(gdbslet) file prog
10906@end example
10907
10908@need 1000
10909@value{GDBN} then attempts to read the symbol table of @file{prog}.
10910@value{GDBN} locates
10911the file by searching the directories listed in the command search
10912path.
10913If the file was compiled with debug information (option "-g"), source
10914files will be searched as well.
10915@value{GDBN} locates
10916the source files by searching the directories listed in the directory search
10917path (@pxref{Environment, ,Your program's environment}).
10918If it fails
10919to find a file, it displays a message such as:
10920
10921@example
10922prog: No such file or directory.
10923@end example
10924
10925When this happens, add the appropriate directories to the search paths with
10926the @value{GDBN} commands @code{path} and @code{dir}, and execute the
10927@code{target} command again.
10928
10929@node Sparclet Connection
10930@subsubsection Connecting to Sparclet
10931
10932The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
10933To connect to a target on serial port ``@code{ttya}'', type:
10934
10935@example
10936(gdbslet) target sparclet /dev/ttya
10937Remote target sparclet connected to /dev/ttya
10938main () at ../prog.c:3
10939@end example
10940
10941@need 750
10942@value{GDBN} displays messages like these:
10943
d4f3574e 10944@example
104c1213 10945Connected to ttya.
d4f3574e 10946@end example
104c1213
JM
10947
10948@node Sparclet Download
10949@subsubsection Sparclet download
10950
10951@cindex download to Sparclet
10952Once connected to the Sparclet target,
10953you can use the @value{GDBN}
10954@code{load} command to download the file from the host to the target.
10955The file name and load offset should be given as arguments to the @code{load}
10956command.
10957Since the file format is aout, the program must be loaded to the starting
d4f3574e 10958address. You can use @code{objdump} to find out what this value is. The load
104c1213
JM
10959offset is an offset which is added to the VMA (virtual memory address)
10960of each of the file's sections.
10961For instance, if the program
10962@file{prog} was linked to text address 0x1201000, with data at 0x12010160
10963and bss at 0x12010170, in @value{GDBN}, type:
10964
10965@example
10966(gdbslet) load prog 0x12010000
10967Loading section .text, size 0xdb0 vma 0x12010000
10968@end example
10969
10970If the code is loaded at a different address then what the program was linked
10971to, you may need to use the @code{section} and @code{add-symbol-file} commands
10972to tell @value{GDBN} where to map the symbol table.
10973
10974@node Sparclet Execution
10975@subsubsection Running and debugging
10976
10977@cindex running and debugging Sparclet programs
10978You can now begin debugging the task using @value{GDBN}'s execution control
10979commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
10980manual for the list of commands.
10981
10982@example
10983(gdbslet) b main
10984Breakpoint 1 at 0x12010000: file prog.c, line 3.
10985(gdbslet) run
10986Starting program: prog
10987Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
109883 char *symarg = 0;
10989(gdbslet) step
109904 char *execarg = "hello!";
10991(gdbslet)
10992@end example
10993
10994@node Sparclite
10995@subsection Fujitsu Sparclite
10996
10997@table @code
10998
10999@kindex target sparclite
11000@item target sparclite @var{dev}
11001Fujitsu sparclite boards, used only for the purpose of loading.
11002You must use an additional command to debug the program.
11003For example: target remote @var{dev} using @value{GDBN} standard
11004remote protocol.
11005
11006@end table
11007
11008@node ST2000
11009@subsection Tandem ST2000
11010
2df3850c 11011@value{GDBN} may be used with a Tandem ST2000 phone switch, running Tandem's
104c1213
JM
11012STDBUG protocol.
11013
11014To connect your ST2000 to the host system, see the manufacturer's
11015manual. Once the ST2000 is physically attached, you can run:
11016
11017@example
11018target st2000 @var{dev} @var{speed}
11019@end example
11020
11021@noindent
11022to establish it as your debugging environment. @var{dev} is normally
11023the name of a serial device, such as @file{/dev/ttya}, connected to the
11024ST2000 via a serial line. You can instead specify @var{dev} as a TCP
11025connection (for example, to a serial line attached via a terminal
11026concentrator) using the syntax @code{@var{hostname}:@var{portnumber}}.
11027
11028The @code{load} and @code{attach} commands are @emph{not} defined for
11029this target; you must load your program into the ST2000 as you normally
11030would for standalone operation. @value{GDBN} reads debugging information
11031(such as symbols) from a separate, debugging version of the program
11032available on your host computer.
11033@c FIXME!! This is terribly vague; what little content is here is
11034@c basically hearsay.
11035
11036@cindex ST2000 auxiliary commands
11037These auxiliary @value{GDBN} commands are available to help you with the ST2000
11038environment:
11039
11040@table @code
11041@item st2000 @var{command}
11042@kindex st2000 @var{cmd}
11043@cindex STDBUG commands (ST2000)
11044@cindex commands to STDBUG (ST2000)
11045Send a @var{command} to the STDBUG monitor. See the manufacturer's
11046manual for available commands.
11047
11048@item connect
11049@cindex connect (to STDBUG)
11050Connect the controlling terminal to the STDBUG command monitor. When
11051you are done interacting with STDBUG, typing either of two character
11052sequences gets you back to the @value{GDBN} command prompt:
11053@kbd{@key{RET}~.} (Return, followed by tilde and period) or
11054@kbd{@key{RET}~@key{C-d}} (Return, followed by tilde and control-D).
11055@end table
11056
11057@node Z8000
11058@subsection Zilog Z8000
11059
11060@cindex Z8000
11061@cindex simulator, Z8000
11062@cindex Zilog Z8000 simulator
11063
11064When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
11065a Z8000 simulator.
11066
11067For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
11068unsegmented variant of the Z8000 architecture) or the Z8001 (the
11069segmented variant). The simulator recognizes which architecture is
11070appropriate by inspecting the object code.
11071
11072@table @code
11073@item target sim @var{args}
11074@kindex sim
d4f3574e 11075@kindex target sim@r{, with Z8000}
104c1213
JM
11076Debug programs on a simulated CPU. If the simulator supports setup
11077options, specify them via @var{args}.
11078@end table
11079
11080@noindent
11081After specifying this target, you can debug programs for the simulated
11082CPU in the same style as programs for your host computer; use the
11083@code{file} command to load a new program image, the @code{run} command
11084to run your program, and so on.
11085
d4f3574e
SS
11086As well as making available all the usual machine registers
11087(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
11088additional items of information as specially named registers:
104c1213
JM
11089
11090@table @code
11091
11092@item cycles
11093Counts clock-ticks in the simulator.
11094
11095@item insts
11096Counts instructions run in the simulator.
11097
11098@item time
11099Execution time in 60ths of a second.
11100
11101@end table
11102
11103You can refer to these values in @value{GDBN} expressions with the usual
11104conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
11105conditional breakpoint that suspends only after at least 5000
11106simulated clock ticks.
11107
11108@node Architectures
11109@section Architectures
11110
11111This section describes characteristics of architectures that affect
2df3850c 11112all uses of @value{GDBN} with the architecture, both native and cross.
104c1213
JM
11113
11114@menu
11115* A29K::
11116* Alpha::
11117* MIPS::
11118@end menu
11119
11120@node A29K
11121@subsection A29K
11122
11123@table @code
11124
11125@kindex set rstack_high_address
11126@cindex AMD 29K register stack
11127@cindex register stack, AMD29K
11128@item set rstack_high_address @var{address}
11129On AMD 29000 family processors, registers are saved in a separate
d4f3574e 11130@dfn{register stack}. There is no way for @value{GDBN} to determine the
104c1213
JM
11131extent of this stack. Normally, @value{GDBN} just assumes that the
11132stack is ``large enough''. This may result in @value{GDBN} referencing
11133memory locations that do not exist. If necessary, you can get around
11134this problem by specifying the ending address of the register stack with
11135the @code{set rstack_high_address} command. The argument should be an
11136address, which you probably want to precede with @samp{0x} to specify in
11137hexadecimal.
11138
11139@kindex show rstack_high_address
11140@item show rstack_high_address
11141Display the current limit of the register stack, on AMD 29000 family
11142processors.
11143
11144@end table
11145
11146@node Alpha
11147@subsection Alpha
11148
11149See the following section.
11150
11151@node MIPS
11152@subsection MIPS
11153
11154@cindex stack on Alpha
11155@cindex stack on MIPS
11156@cindex Alpha stack
11157@cindex MIPS stack
11158Alpha- and MIPS-based computers use an unusual stack frame, which
11159sometimes requires @value{GDBN} to search backward in the object code to
11160find the beginning of a function.
11161
11162@cindex response time, MIPS debugging
11163To improve response time (especially for embedded applications, where
11164@value{GDBN} may be restricted to a slow serial line for this search)
11165you may want to limit the size of this search, using one of these
11166commands:
11167
11168@table @code
11169@cindex @code{heuristic-fence-post} (Alpha,MIPS)
11170@item set heuristic-fence-post @var{limit}
11171Restrict @value{GDBN} to examining at most @var{limit} bytes in its
11172search for the beginning of a function. A value of @var{0} (the
11173default) means there is no limit. However, except for @var{0}, the
11174larger the limit the more bytes @code{heuristic-fence-post} must search
11175and therefore the longer it takes to run.
11176
11177@item show heuristic-fence-post
11178Display the current limit.
11179@end table
11180
11181@noindent
11182These commands are available @emph{only} when @value{GDBN} is configured
11183for debugging programs on Alpha or MIPS processors.
11184
11185
c906108c
SS
11186@node Controlling GDB
11187@chapter Controlling @value{GDBN}
11188
53a5351d
JM
11189You can alter the way @value{GDBN} interacts with you by using the
11190@code{set} command. For commands controlling how @value{GDBN} displays
d4f3574e 11191data, see @ref{Print Settings, ,Print settings}. Other settings are
53a5351d 11192described here.
c906108c
SS
11193
11194@menu
11195* Prompt:: Prompt
11196* Editing:: Command editing
11197* History:: Command history
11198* Screen Size:: Screen size
11199* Numbers:: Numbers
11200* Messages/Warnings:: Optional warnings and messages
11201@end menu
11202
53a5351d 11203@node Prompt
c906108c
SS
11204@section Prompt
11205
11206@cindex prompt
11207
11208@value{GDBN} indicates its readiness to read a command by printing a string
11209called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
11210can change the prompt string with the @code{set prompt} command. For
11211instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
11212the prompt in one of the @value{GDBN} sessions so that you can always tell
11213which one you are talking to.
11214
d4f3574e 11215@emph{Note:} @code{set prompt} does not add a space for you after the
c906108c
SS
11216prompt you set. This allows you to set a prompt which ends in a space
11217or a prompt that does not.
11218
11219@table @code
11220@kindex set prompt
11221@item set prompt @var{newprompt}
11222Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
11223
11224@kindex show prompt
11225@item show prompt
11226Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
11227@end table
11228
53a5351d 11229@node Editing
c906108c
SS
11230@section Command editing
11231@cindex readline
11232@cindex command line editing
11233
11234@value{GDBN} reads its input commands via the @dfn{readline} interface. This
11235@sc{gnu} library provides consistent behavior for programs which provide a
11236command line interface to the user. Advantages are @sc{gnu} Emacs-style
11237or @dfn{vi}-style inline editing of commands, @code{csh}-like history
11238substitution, and a storage and recall of command history across
11239debugging sessions.
11240
11241You may control the behavior of command line editing in @value{GDBN} with the
11242command @code{set}.
11243
11244@table @code
11245@kindex set editing
11246@cindex editing
11247@item set editing
11248@itemx set editing on
11249Enable command line editing (enabled by default).
11250
11251@item set editing off
11252Disable command line editing.
11253
11254@kindex show editing
11255@item show editing
11256Show whether command line editing is enabled.
11257@end table
11258
53a5351d 11259@node History
c906108c
SS
11260@section Command history
11261
11262@value{GDBN} can keep track of the commands you type during your
11263debugging sessions, so that you can be certain of precisely what
11264happened. Use these commands to manage the @value{GDBN} command
11265history facility.
11266
11267@table @code
11268@cindex history substitution
11269@cindex history file
11270@kindex set history filename
11271@kindex GDBHISTFILE
11272@item set history filename @var{fname}
11273Set the name of the @value{GDBN} command history file to @var{fname}.
11274This is the file where @value{GDBN} reads an initial command history
11275list, and where it writes the command history from this session when it
11276exits. You can access this list through history expansion or through
11277the history command editing characters listed below. This file defaults
11278to the value of the environment variable @code{GDBHISTFILE}, or to
d4f3574e
SS
11279@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
11280is not set.
c906108c
SS
11281
11282@cindex history save
11283@kindex set history save
11284@item set history save
11285@itemx set history save on
11286Record command history in a file, whose name may be specified with the
11287@code{set history filename} command. By default, this option is disabled.
11288
11289@item set history save off
11290Stop recording command history in a file.
11291
11292@cindex history size
11293@kindex set history size
11294@item set history size @var{size}
11295Set the number of commands which @value{GDBN} keeps in its history list.
11296This defaults to the value of the environment variable
11297@code{HISTSIZE}, or to 256 if this variable is not set.
11298@end table
11299
11300@cindex history expansion
11301History expansion assigns special meaning to the character @kbd{!}.
11302@ifset have-readline-appendices
11303@xref{Event Designators}.
11304@end ifset
11305
11306Since @kbd{!} is also the logical not operator in C, history expansion
11307is off by default. If you decide to enable history expansion with the
11308@code{set history expansion on} command, you may sometimes need to
11309follow @kbd{!} (when it is used as logical not, in an expression) with
11310a space or a tab to prevent it from being expanded. The readline
11311history facilities do not attempt substitution on the strings
11312@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
11313
11314The commands to control history expansion are:
11315
11316@table @code
11317@kindex set history expansion
11318@item set history expansion on
11319@itemx set history expansion
11320Enable history expansion. History expansion is off by default.
11321
11322@item set history expansion off
11323Disable history expansion.
11324
11325The readline code comes with more complete documentation of
11326editing and history expansion features. Users unfamiliar with @sc{gnu} Emacs
11327or @code{vi} may wish to read it.
11328@ifset have-readline-appendices
11329@xref{Command Line Editing}.
11330@end ifset
11331
11332@c @group
11333@kindex show history
11334@item show history
11335@itemx show history filename
11336@itemx show history save
11337@itemx show history size
11338@itemx show history expansion
11339These commands display the state of the @value{GDBN} history parameters.
11340@code{show history} by itself displays all four states.
11341@c @end group
11342@end table
11343
11344@table @code
11345@kindex show commands
11346@item show commands
11347Display the last ten commands in the command history.
11348
11349@item show commands @var{n}
11350Print ten commands centered on command number @var{n}.
11351
11352@item show commands +
11353Print ten commands just after the commands last printed.
11354@end table
11355
53a5351d 11356@node Screen Size
c906108c
SS
11357@section Screen size
11358@cindex size of screen
11359@cindex pauses in output
11360
11361Certain commands to @value{GDBN} may produce large amounts of
11362information output to the screen. To help you read all of it,
11363@value{GDBN} pauses and asks you for input at the end of each page of
11364output. Type @key{RET} when you want to continue the output, or @kbd{q}
11365to discard the remaining output. Also, the screen width setting
11366determines when to wrap lines of output. Depending on what is being
11367printed, @value{GDBN} tries to break the line at a readable place,
11368rather than simply letting it overflow onto the following line.
11369
d4f3574e
SS
11370Normally @value{GDBN} knows the size of the screen from the terminal
11371driver software. For example, on Unix @value{GDBN} uses the termcap data base
c906108c 11372together with the value of the @code{TERM} environment variable and the
d4f3574e 11373@code{stty rows} and @code{stty cols} settings. If this is not correct,
c906108c
SS
11374you can override it with the @code{set height} and @code{set
11375width} commands:
11376
11377@table @code
11378@kindex set height
11379@kindex set width
11380@kindex show width
11381@kindex show height
11382@item set height @var{lpp}
11383@itemx show height
11384@itemx set width @var{cpl}
11385@itemx show width
11386These @code{set} commands specify a screen height of @var{lpp} lines and
11387a screen width of @var{cpl} characters. The associated @code{show}
11388commands display the current settings.
11389
11390If you specify a height of zero lines, @value{GDBN} does not pause during
11391output no matter how long the output is. This is useful if output is to a
11392file or to an editor buffer.
11393
11394Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
11395from wrapping its output.
11396@end table
11397
53a5351d 11398@node Numbers
c906108c
SS
11399@section Numbers
11400@cindex number representation
11401@cindex entering numbers
11402
2df3850c
JM
11403You can always enter numbers in octal, decimal, or hexadecimal in
11404@value{GDBN} by the usual conventions: octal numbers begin with
11405@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
11406begin with @samp{0x}. Numbers that begin with none of these are, by
11407default, entered in base 10; likewise, the default display for
11408numbers---when no particular format is specified---is base 10. You can
11409change the default base for both input and output with the @code{set
11410radix} command.
c906108c
SS
11411
11412@table @code
11413@kindex set input-radix
11414@item set input-radix @var{base}
11415Set the default base for numeric input. Supported choices
11416for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
11417specified either unambiguously or using the current default radix; for
11418example, any of
11419
11420@smallexample
11421set radix 012
11422set radix 10.
11423set radix 0xa
11424@end smallexample
11425
11426@noindent
11427sets the base to decimal. On the other hand, @samp{set radix 10}
11428leaves the radix unchanged no matter what it was.
11429
11430@kindex set output-radix
11431@item set output-radix @var{base}
11432Set the default base for numeric display. Supported choices
11433for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
11434specified either unambiguously or using the current default radix.
11435
11436@kindex show input-radix
11437@item show input-radix
11438Display the current default base for numeric input.
11439
11440@kindex show output-radix
11441@item show output-radix
11442Display the current default base for numeric display.
11443@end table
11444
53a5351d 11445@node Messages/Warnings
c906108c
SS
11446@section Optional warnings and messages
11447
2df3850c
JM
11448By default, @value{GDBN} is silent about its inner workings. If you are
11449running on a slow machine, you may want to use the @code{set verbose}
11450command. This makes @value{GDBN} tell you when it does a lengthy
11451internal operation, so you will not think it has crashed.
c906108c
SS
11452
11453Currently, the messages controlled by @code{set verbose} are those
11454which announce that the symbol table for a source file is being read;
11455see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
11456
11457@table @code
11458@kindex set verbose
11459@item set verbose on
11460Enables @value{GDBN} output of certain informational messages.
11461
11462@item set verbose off
11463Disables @value{GDBN} output of certain informational messages.
11464
11465@kindex show verbose
11466@item show verbose
11467Displays whether @code{set verbose} is on or off.
11468@end table
11469
2df3850c
JM
11470By default, if @value{GDBN} encounters bugs in the symbol table of an
11471object file, it is silent; but if you are debugging a compiler, you may
11472find this information useful (@pxref{Symbol Errors, ,Errors reading
11473symbol files}).
c906108c
SS
11474
11475@table @code
2df3850c 11476
c906108c
SS
11477@kindex set complaints
11478@item set complaints @var{limit}
2df3850c
JM
11479Permits @value{GDBN} to output @var{limit} complaints about each type of
11480unusual symbols before becoming silent about the problem. Set
11481@var{limit} to zero to suppress all complaints; set it to a large number
11482to prevent complaints from being suppressed.
c906108c
SS
11483
11484@kindex show complaints
11485@item show complaints
11486Displays how many symbol complaints @value{GDBN} is permitted to produce.
2df3850c 11487
c906108c
SS
11488@end table
11489
11490By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
11491lot of stupid questions to confirm certain commands. For example, if
11492you try to run a program which is already running:
11493
11494@example
11495(@value{GDBP}) run
11496The program being debugged has been started already.
11497Start it from the beginning? (y or n)
11498@end example
11499
11500If you are willing to unflinchingly face the consequences of your own
11501commands, you can disable this ``feature'':
11502
11503@table @code
2df3850c 11504
c906108c
SS
11505@kindex set confirm
11506@cindex flinching
11507@cindex confirmation
11508@cindex stupid questions
11509@item set confirm off
11510Disables confirmation requests.
11511
11512@item set confirm on
11513Enables confirmation requests (the default).
11514
11515@kindex show confirm
11516@item show confirm
11517Displays state of confirmation requests.
2df3850c 11518
c906108c
SS
11519@end table
11520
53a5351d 11521@node Sequences
c906108c
SS
11522@chapter Canned Sequences of Commands
11523
11524Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
2df3850c
JM
11525command lists}), @value{GDBN} provides two ways to store sequences of
11526commands for execution as a unit: user-defined commands and command
11527files.
c906108c
SS
11528
11529@menu
11530* Define:: User-defined commands
11531* Hooks:: User-defined command hooks
11532* Command Files:: Command files
11533* Output:: Commands for controlled output
11534@end menu
11535
53a5351d 11536@node Define
c906108c
SS
11537@section User-defined commands
11538
11539@cindex user-defined command
2df3850c
JM
11540A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
11541which you assign a new name as a command. This is done with the
11542@code{define} command. User commands may accept up to 10 arguments
11543separated by whitespace. Arguments are accessed within the user command
11544via @var{$arg0@dots{}$arg9}. A trivial example:
c906108c
SS
11545
11546@smallexample
11547define adder
11548 print $arg0 + $arg1 + $arg2
11549@end smallexample
11550
d4f3574e
SS
11551@noindent
11552To execute the command use:
c906108c
SS
11553
11554@smallexample
11555adder 1 2 3
11556@end smallexample
11557
d4f3574e
SS
11558@noindent
11559This defines the command @code{adder}, which prints the sum of
c906108c
SS
11560its three arguments. Note the arguments are text substitutions, so they may
11561reference variables, use complex expressions, or even perform inferior
11562functions calls.
11563
11564@table @code
2df3850c 11565
c906108c
SS
11566@kindex define
11567@item define @var{commandname}
11568Define a command named @var{commandname}. If there is already a command
11569by that name, you are asked to confirm that you want to redefine it.
11570
11571The definition of the command is made up of other @value{GDBN} command lines,
11572which are given following the @code{define} command. The end of these
11573commands is marked by a line containing @code{end}.
11574
11575@kindex if
11576@kindex else
11577@item if
11578Takes a single argument, which is an expression to evaluate.
11579It is followed by a series of commands that are executed
11580only if the expression is true (nonzero).
11581There can then optionally be a line @code{else}, followed
11582by a series of commands that are only executed if the expression
11583was false. The end of the list is marked by a line containing @code{end}.
11584
11585@kindex while
11586@item while
11587The syntax is similar to @code{if}: the command takes a single argument,
11588which is an expression to evaluate, and must be followed by the commands to
11589execute, one per line, terminated by an @code{end}.
11590The commands are executed repeatedly as long as the expression
11591evaluates to true.
11592
11593@kindex document
11594@item document @var{commandname}
11595Document the user-defined command @var{commandname}, so that it can be
11596accessed by @code{help}. The command @var{commandname} must already be
11597defined. This command reads lines of documentation just as @code{define}
11598reads the lines of the command definition, ending with @code{end}.
11599After the @code{document} command is finished, @code{help} on command
11600@var{commandname} displays the documentation you have written.
11601
11602You may use the @code{document} command again to change the
11603documentation of a command. Redefining the command with @code{define}
11604does not change the documentation.
11605
11606@kindex help user-defined
11607@item help user-defined
11608List all user-defined commands, with the first line of the documentation
11609(if any) for each.
11610
11611@kindex show user
11612@item show user
11613@itemx show user @var{commandname}
2df3850c
JM
11614Display the @value{GDBN} commands used to define @var{commandname} (but
11615not its documentation). If no @var{commandname} is given, display the
c906108c 11616definitions for all user-defined commands.
2df3850c 11617
c906108c
SS
11618@end table
11619
11620When user-defined commands are executed, the
11621commands of the definition are not printed. An error in any command
11622stops execution of the user-defined command.
11623
11624If used interactively, commands that would ask for confirmation proceed
11625without asking when used inside a user-defined command. Many @value{GDBN}
11626commands that normally print messages to say what they are doing omit the
11627messages when used in a user-defined command.
11628
53a5351d 11629@node Hooks
c906108c 11630@section User-defined command hooks
d4f3574e
SS
11631@cindex command hooks
11632@cindex hooks, for commands
c906108c
SS
11633
11634You may define @emph{hooks}, which are a special kind of user-defined
11635command. Whenever you run the command @samp{foo}, if the user-defined
11636command @samp{hook-foo} exists, it is executed (with no arguments)
11637before that command.
11638
d4f3574e 11639@kindex stop@r{, a pseudo-command}
c906108c
SS
11640In addition, a pseudo-command, @samp{stop} exists. Defining
11641(@samp{hook-stop}) makes the associated commands execute every time
11642execution stops in your program: before breakpoint commands are run,
11643displays are printed, or the stack frame is printed.
11644
c906108c
SS
11645For example, to ignore @code{SIGALRM} signals while
11646single-stepping, but treat them normally during normal execution,
11647you could define:
11648
11649@example
11650define hook-stop
11651handle SIGALRM nopass
11652end
11653
11654define hook-run
11655handle SIGALRM pass
11656end
11657
11658define hook-continue
11659handle SIGLARM pass
11660end
11661@end example
c906108c
SS
11662
11663You can define a hook for any single-word command in @value{GDBN}, but
11664not for command aliases; you should define a hook for the basic command
11665name, e.g. @code{backtrace} rather than @code{bt}.
11666@c FIXME! So how does Joe User discover whether a command is an alias
11667@c or not?
11668If an error occurs during the execution of your hook, execution of
11669@value{GDBN} commands stops and @value{GDBN} issues a prompt
11670(before the command that you actually typed had a chance to run).
11671
11672If you try to define a hook which does not match any known command, you
11673get a warning from the @code{define} command.
11674
53a5351d 11675@node Command Files
c906108c
SS
11676@section Command files
11677
11678@cindex command files
11679A command file for @value{GDBN} is a file of lines that are @value{GDBN}
11680commands. Comments (lines starting with @kbd{#}) may also be included.
11681An empty line in a command file does nothing; it does not mean to repeat
11682the last command, as it would from the terminal.
11683
11684@cindex init file
11685@cindex @file{.gdbinit}
d4f3574e 11686@cindex @file{gdb.ini}
c906108c
SS
11687When you start @value{GDBN}, it automatically executes commands from its
11688@dfn{init files}. These are files named @file{.gdbinit} on Unix, or
11689@file{gdb.ini} on DOS/Windows. @value{GDBN} reads the init file (if
d4f3574e 11690any) in your home directory@footnote{On DOS/Windows systems, the home
2df3850c
JM
11691directory is the one pointed to by the @code{HOME} environment
11692variable.}, then processes command line options and operands, and then
11693reads the init file (if any) in the current working directory. This is
11694so the init file in your home directory can set options (such as
11695@code{set complaints}) which affect the processing of the command line
11696options and operands. The init files are not executed if you use the
11697@samp{-nx} option; @pxref{Mode Options, ,Choosing modes}.
c906108c 11698
c906108c
SS
11699@cindex init file name
11700On some configurations of @value{GDBN}, the init file is known by a
11701different name (these are typically environments where a specialized
11702form of @value{GDBN} may need to coexist with other forms, hence a
11703different name for the specialized version's init file). These are the
11704environments with special init file names:
11705
11706@kindex .vxgdbinit
11707@itemize @bullet
11708@item
11709VxWorks (Wind River Systems real-time OS): @samp{.vxgdbinit}
11710
11711@kindex .os68gdbinit
11712@item
11713OS68K (Enea Data Systems real-time OS): @samp{.os68gdbinit}
11714
11715@kindex .esgdbinit
11716@item
11717ES-1800 (Ericsson Telecom AB M68000 emulator): @samp{.esgdbinit}
11718@end itemize
c906108c
SS
11719
11720You can also request the execution of a command file with the
11721@code{source} command:
11722
11723@table @code
11724@kindex source
11725@item source @var{filename}
11726Execute the command file @var{filename}.
11727@end table
11728
11729The lines in a command file are executed sequentially. They are not
11730printed as they are executed. An error in any command terminates execution
11731of the command file.
11732
11733Commands that would ask for confirmation if used interactively proceed
11734without asking when used in a command file. Many @value{GDBN} commands that
11735normally print messages to say what they are doing omit the messages
11736when called from command files.
11737
53a5351d 11738@node Output
c906108c
SS
11739@section Commands for controlled output
11740
11741During the execution of a command file or a user-defined command, normal
11742@value{GDBN} output is suppressed; the only output that appears is what is
11743explicitly printed by the commands in the definition. This section
11744describes three commands useful for generating exactly the output you
11745want.
11746
11747@table @code
11748@kindex echo
11749@item echo @var{text}
11750@c I do not consider backslash-space a standard C escape sequence
11751@c because it is not in ANSI.
11752Print @var{text}. Nonprinting characters can be included in
11753@var{text} using C escape sequences, such as @samp{\n} to print a
11754newline. @strong{No newline is printed unless you specify one.}
11755In addition to the standard C escape sequences, a backslash followed
11756by a space stands for a space. This is useful for displaying a
11757string with spaces at the beginning or the end, since leading and
11758trailing spaces are otherwise trimmed from all arguments.
11759To print @samp{@w{ }and foo =@w{ }}, use the command
11760@samp{echo \@w{ }and foo = \@w{ }}.
11761
11762A backslash at the end of @var{text} can be used, as in C, to continue
11763the command onto subsequent lines. For example,
11764
11765@example
11766echo This is some text\n\
11767which is continued\n\
11768onto several lines.\n
11769@end example
11770
11771produces the same output as
11772
11773@example
11774echo This is some text\n
11775echo which is continued\n
11776echo onto several lines.\n
11777@end example
11778
11779@kindex output
11780@item output @var{expression}
11781Print the value of @var{expression} and nothing but that value: no
11782newlines, no @samp{$@var{nn} = }. The value is not entered in the
11783value history either. @xref{Expressions, ,Expressions}, for more information
11784on expressions.
11785
11786@item output/@var{fmt} @var{expression}
11787Print the value of @var{expression} in format @var{fmt}. You can use
11788the same formats as for @code{print}. @xref{Output Formats,,Output
11789formats}, for more information.
11790
11791@kindex printf
11792@item printf @var{string}, @var{expressions}@dots{}
11793Print the values of the @var{expressions} under the control of
11794@var{string}. The @var{expressions} are separated by commas and may be
11795either numbers or pointers. Their values are printed as specified by
11796@var{string}, exactly as if your program were to execute the C
11797subroutine
d4f3574e
SS
11798@c FIXME: the above implies that at least all ANSI C formats are
11799@c supported, but it isn't true: %E and %G don't work (or so it seems).
11800@c Either this is a bug, or the manual should document what formats are
11801@c supported.
c906108c
SS
11802
11803@example
11804printf (@var{string}, @var{expressions}@dots{});
11805@end example
11806
11807For example, you can print two values in hex like this:
11808
11809@smallexample
11810printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
11811@end smallexample
11812
11813The only backslash-escape sequences that you can use in the format
11814string are the simple ones that consist of backslash followed by a
11815letter.
11816@end table
11817
53a5351d 11818@node Emacs
c906108c
SS
11819@chapter Using @value{GDBN} under @sc{gnu} Emacs
11820
11821@cindex Emacs
11822@cindex @sc{gnu} Emacs
11823A special interface allows you to use @sc{gnu} Emacs to view (and
11824edit) the source files for the program you are debugging with
11825@value{GDBN}.
11826
11827To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
11828executable file you want to debug as an argument. This command starts
11829@value{GDBN} as a subprocess of Emacs, with input and output through a newly
11830created Emacs buffer.
53a5351d 11831@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c
SS
11832
11833Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
11834things:
11835
11836@itemize @bullet
11837@item
11838All ``terminal'' input and output goes through the Emacs buffer.
11839@end itemize
11840
11841This applies both to @value{GDBN} commands and their output, and to the input
11842and output done by the program you are debugging.
11843
11844This is useful because it means that you can copy the text of previous
11845commands and input them again; you can even use parts of the output
11846in this way.
11847
11848All the facilities of Emacs' Shell mode are available for interacting
11849with your program. In particular, you can send signals the usual
11850way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
11851stop.
11852
11853@itemize @bullet
11854@item
11855@value{GDBN} displays source code through Emacs.
11856@end itemize
11857
11858Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
11859source file for that frame and puts an arrow (@samp{=>}) at the
11860left margin of the current line. Emacs uses a separate buffer for
11861source display, and splits the screen to show both your @value{GDBN} session
11862and the source.
11863
11864Explicit @value{GDBN} @code{list} or search commands still produce output as
11865usual, but you probably have no reason to use them from Emacs.
11866
11867@quotation
11868@emph{Warning:} If the directory where your program resides is not your
11869current directory, it can be easy to confuse Emacs about the location of
11870the source files, in which case the auxiliary display buffer does not
11871appear to show your source. @value{GDBN} can find programs by searching your
11872environment's @code{PATH} variable, so the @value{GDBN} input and output
11873session proceeds normally; but Emacs does not get enough information
11874back from @value{GDBN} to locate the source files in this situation. To
11875avoid this problem, either start @value{GDBN} mode from the directory where
11876your program resides, or specify an absolute file name when prompted for the
11877@kbd{M-x gdb} argument.
11878
11879A similar confusion can result if you use the @value{GDBN} @code{file} command to
11880switch to debugging a program in some other location, from an existing
11881@value{GDBN} buffer in Emacs.
11882@end quotation
11883
11884By default, @kbd{M-x gdb} calls the program called @file{gdb}. If
11885you need to call @value{GDBN} by a different name (for example, if you keep
11886several configurations around, with different names) you can set the
11887Emacs variable @code{gdb-command-name}; for example,
11888
11889@example
11890(setq gdb-command-name "mygdb")
11891@end example
11892
11893@noindent
d4f3574e 11894(preceded by @kbd{M-:} or @kbd{ESC :}, or typed in the @code{*scratch*} buffer, or
c906108c
SS
11895in your @file{.emacs} file) makes Emacs call the program named
11896``@code{mygdb}'' instead.
11897
11898In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
11899addition to the standard Shell mode commands:
11900
11901@table @kbd
11902@item C-h m
11903Describe the features of Emacs' @value{GDBN} Mode.
11904
11905@item M-s
11906Execute to another source line, like the @value{GDBN} @code{step} command; also
11907update the display window to show the current file and location.
11908
11909@item M-n
11910Execute to next source line in this function, skipping all function
11911calls, like the @value{GDBN} @code{next} command. Then update the display window
11912to show the current file and location.
11913
11914@item M-i
11915Execute one instruction, like the @value{GDBN} @code{stepi} command; update
11916display window accordingly.
11917
11918@item M-x gdb-nexti
11919Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
11920display window accordingly.
11921
11922@item C-c C-f
11923Execute until exit from the selected stack frame, like the @value{GDBN}
11924@code{finish} command.
11925
11926@item M-c
11927Continue execution of your program, like the @value{GDBN} @code{continue}
11928command.
11929
11930@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
11931
11932@item M-u
11933Go up the number of frames indicated by the numeric argument
11934(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
11935like the @value{GDBN} @code{up} command.
11936
11937@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
11938
11939@item M-d
11940Go down the number of frames indicated by the numeric argument, like the
11941@value{GDBN} @code{down} command.
11942
11943@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
11944
11945@item C-x &
11946Read the number where the cursor is positioned, and insert it at the end
11947of the @value{GDBN} I/O buffer. For example, if you wish to disassemble code
11948around an address that was displayed earlier, type @kbd{disassemble};
11949then move the cursor to the address display, and pick up the
11950argument for @code{disassemble} by typing @kbd{C-x &}.
11951
11952You can customize this further by defining elements of the list
11953@code{gdb-print-command}; once it is defined, you can format or
11954otherwise process numbers picked up by @kbd{C-x &} before they are
11955inserted. A numeric argument to @kbd{C-x &} indicates that you
11956wish special formatting, and also acts as an index to pick an element of the
11957list. If the list element is a string, the number to be inserted is
11958formatted using the Emacs function @code{format}; otherwise the number
11959is passed as an argument to the corresponding list element.
11960@end table
11961
11962In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
11963tells @value{GDBN} to set a breakpoint on the source line point is on.
11964
11965If you accidentally delete the source-display buffer, an easy way to get
11966it back is to type the command @code{f} in the @value{GDBN} buffer, to
11967request a frame display; when you run under Emacs, this recreates
11968the source buffer if necessary to show you the context of the current
11969frame.
11970
11971The source files displayed in Emacs are in ordinary Emacs buffers
11972which are visiting the source files in the usual way. You can edit
11973the files with these buffers if you wish; but keep in mind that @value{GDBN}
11974communicates with Emacs in terms of line numbers. If you add or
11975delete lines from the text, the line numbers that @value{GDBN} knows cease
11976to correspond properly with the code.
11977
11978@c The following dropped because Epoch is nonstandard. Reactivate
11979@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
11980@ignore
11981@kindex Emacs Epoch environment
11982@kindex Epoch
11983@kindex inspect
11984
11985Version 18 of @sc{gnu} Emacs has a built-in window system
11986called the @code{epoch}
11987environment. Users of this environment can use a new command,
11988@code{inspect} which performs identically to @code{print} except that
11989each value is printed in its own window.
11990@end ignore
c906108c 11991
d700128c
EZ
11992@include annotate.texi
11993
c906108c 11994@node GDB Bugs
c906108c
SS
11995@chapter Reporting Bugs in @value{GDBN}
11996@cindex bugs in @value{GDBN}
11997@cindex reporting bugs in @value{GDBN}
11998
11999Your bug reports play an essential role in making @value{GDBN} reliable.
12000
12001Reporting a bug may help you by bringing a solution to your problem, or it
12002may not. But in any case the principal function of a bug report is to help
12003the entire community by making the next version of @value{GDBN} work better. Bug
12004reports are your contribution to the maintenance of @value{GDBN}.
12005
12006In order for a bug report to serve its purpose, you must include the
12007information that enables us to fix the bug.
12008
12009@menu
12010* Bug Criteria:: Have you found a bug?
12011* Bug Reporting:: How to report bugs
12012@end menu
12013
53a5351d 12014@node Bug Criteria
c906108c
SS
12015@section Have you found a bug?
12016@cindex bug criteria
12017
12018If you are not sure whether you have found a bug, here are some guidelines:
12019
12020@itemize @bullet
12021@cindex fatal signal
12022@cindex debugger crash
12023@cindex crash of debugger
12024@item
12025If the debugger gets a fatal signal, for any input whatever, that is a
12026@value{GDBN} bug. Reliable debuggers never crash.
12027
12028@cindex error on valid input
12029@item
12030If @value{GDBN} produces an error message for valid input, that is a
12031bug. (Note that if you're cross debugging, the problem may also be
12032somewhere in the connection to the target.)
12033
12034@cindex invalid input
12035@item
12036If @value{GDBN} does not produce an error message for invalid input,
12037that is a bug. However, you should note that your idea of
12038``invalid input'' might be our idea of ``an extension'' or ``support
12039for traditional practice''.
12040
12041@item
12042If you are an experienced user of debugging tools, your suggestions
12043for improvement of @value{GDBN} are welcome in any case.
12044@end itemize
12045
53a5351d 12046@node Bug Reporting
c906108c
SS
12047@section How to report bugs
12048@cindex bug reports
12049@cindex @value{GDBN} bugs, reporting
12050
c906108c
SS
12051A number of companies and individuals offer support for @sc{gnu} products.
12052If you obtained @value{GDBN} from a support organization, we recommend you
12053contact that organization first.
12054
12055You can find contact information for many support companies and
12056individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
12057distribution.
12058@c should add a web page ref...
12059
12060In any event, we also recommend that you send bug reports for
12061@value{GDBN} to this addresses:
12062
12063@example
d4f3574e 12064bug-gdb@@gnu.org
c906108c
SS
12065@end example
12066
12067@strong{Do not send bug reports to @samp{info-gdb}, or to
d4f3574e 12068@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
c906108c
SS
12069not want to receive bug reports. Those that do have arranged to receive
12070@samp{bug-gdb}.
12071
12072The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
12073serves as a repeater. The mailing list and the newsgroup carry exactly
12074the same messages. Often people think of posting bug reports to the
12075newsgroup instead of mailing them. This appears to work, but it has one
12076problem which can be crucial: a newsgroup posting often lacks a mail
12077path back to the sender. Thus, if we need to ask for more information,
12078we may be unable to reach you. For this reason, it is better to send
12079bug reports to the mailing list.
12080
12081As a last resort, send bug reports on paper to:
12082
12083@example
12084@sc{gnu} Debugger Bugs
12085Free Software Foundation Inc.
1208659 Temple Place - Suite 330
12087Boston, MA 02111-1307
12088USA
12089@end example
c906108c
SS
12090
12091The fundamental principle of reporting bugs usefully is this:
12092@strong{report all the facts}. If you are not sure whether to state a
12093fact or leave it out, state it!
12094
12095Often people omit facts because they think they know what causes the
12096problem and assume that some details do not matter. Thus, you might
12097assume that the name of the variable you use in an example does not matter.
12098Well, probably it does not, but one cannot be sure. Perhaps the bug is a
12099stray memory reference which happens to fetch from the location where that
12100name is stored in memory; perhaps, if the name were different, the contents
12101of that location would fool the debugger into doing the right thing despite
12102the bug. Play it safe and give a specific, complete example. That is the
12103easiest thing for you to do, and the most helpful.
12104
12105Keep in mind that the purpose of a bug report is to enable us to fix the
12106bug. It may be that the bug has been reported previously, but neither
12107you nor we can know that unless your bug report is complete and
12108self-contained.
12109
12110Sometimes people give a few sketchy facts and ask, ``Does this ring a
12111bell?'' Those bug reports are useless, and we urge everyone to
12112@emph{refuse to respond to them} except to chide the sender to report
12113bugs properly.
12114
12115To enable us to fix the bug, you should include all these things:
12116
12117@itemize @bullet
12118@item
12119The version of @value{GDBN}. @value{GDBN} announces it if you start
12120with no arguments; you can also print it at any time using @code{show
12121version}.
12122
12123Without this, we will not know whether there is any point in looking for
12124the bug in the current version of @value{GDBN}.
12125
12126@item
12127The type of machine you are using, and the operating system name and
12128version number.
12129
c906108c
SS
12130@item
12131What compiler (and its version) was used to compile @value{GDBN}---e.g.
12132``@value{GCC}--2.8.1''.
c906108c
SS
12133
12134@item
12135What compiler (and its version) was used to compile the program you are
12136debugging---e.g. ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
12137C Compiler''. For GCC, you can say @code{gcc --version} to get this
12138information; for other compilers, see the documentation for those
12139compilers.
12140
12141@item
12142The command arguments you gave the compiler to compile your example and
12143observe the bug. For example, did you use @samp{-O}? To guarantee
12144you will not omit something important, list them all. A copy of the
12145Makefile (or the output from make) is sufficient.
12146
12147If we were to try to guess the arguments, we would probably guess wrong
12148and then we might not encounter the bug.
12149
12150@item
12151A complete input script, and all necessary source files, that will
12152reproduce the bug.
12153
12154@item
12155A description of what behavior you observe that you believe is
12156incorrect. For example, ``It gets a fatal signal.''
12157
12158Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
12159will certainly notice it. But if the bug is incorrect output, we might
12160not notice unless it is glaringly wrong. You might as well not give us
12161a chance to make a mistake.
12162
12163Even if the problem you experience is a fatal signal, you should still
12164say so explicitly. Suppose something strange is going on, such as, your
12165copy of @value{GDBN} is out of synch, or you have encountered a bug in
12166the C library on your system. (This has happened!) Your copy might
12167crash and ours would not. If you told us to expect a crash, then when
12168ours fails to crash, we would know that the bug was not happening for
12169us. If you had not told us to expect a crash, then we would not be able
12170to draw any conclusion from our observations.
12171
c906108c
SS
12172@item
12173If you wish to suggest changes to the @value{GDBN} source, send us context
12174diffs. If you even discuss something in the @value{GDBN} source, refer to
12175it by context, not by line number.
12176
12177The line numbers in our development sources will not match those in your
12178sources. Your line numbers would convey no useful information to us.
53a5351d 12179
c906108c
SS
12180@end itemize
12181
12182Here are some things that are not necessary:
12183
12184@itemize @bullet
12185@item
12186A description of the envelope of the bug.
12187
12188Often people who encounter a bug spend a lot of time investigating
12189which changes to the input file will make the bug go away and which
12190changes will not affect it.
12191
12192This is often time consuming and not very useful, because the way we
12193will find the bug is by running a single example under the debugger
12194with breakpoints, not by pure deduction from a series of examples.
12195We recommend that you save your time for something else.
12196
12197Of course, if you can find a simpler example to report @emph{instead}
12198of the original one, that is a convenience for us. Errors in the
12199output will be easier to spot, running under the debugger will take
12200less time, and so on.
12201
12202However, simplification is not vital; if you do not want to do this,
12203report the bug anyway and send us the entire test case you used.
12204
12205@item
12206A patch for the bug.
12207
12208A patch for the bug does help us if it is a good one. But do not omit
12209the necessary information, such as the test case, on the assumption that
12210a patch is all we need. We might see problems with your patch and decide
12211to fix the problem another way, or we might not understand it at all.
12212
12213Sometimes with a program as complicated as @value{GDBN} it is very hard to
12214construct an example that will make the program follow a certain path
12215through the code. If you do not send us the example, we will not be able
12216to construct one, so we will not be able to verify that the bug is fixed.
12217
12218And if we cannot understand what bug you are trying to fix, or why your
12219patch should be an improvement, we will not install it. A test case will
12220help us to understand.
12221
12222@item
12223A guess about what the bug is or what it depends on.
12224
12225Such guesses are usually wrong. Even we cannot guess right about such
12226things without first using the debugger to find the facts.
12227@end itemize
12228
12229@c The readline documentation is distributed with the readline code
12230@c and consists of the two following files:
12231@c rluser.texinfo
7be570e7 12232@c inc-hist.texinfo
c906108c
SS
12233@c Use -I with makeinfo to point to the appropriate directory,
12234@c environment var TEXINPUTS with TeX.
12235@include rluser.texinfo
7be570e7 12236@include inc-hist.texinfo
c906108c
SS
12237
12238
c906108c 12239@node Formatting Documentation
c906108c
SS
12240@appendix Formatting Documentation
12241
12242@cindex @value{GDBN} reference card
12243@cindex reference card
12244The @value{GDBN} 4 release includes an already-formatted reference card, ready
12245for printing with PostScript or Ghostscript, in the @file{gdb}
12246subdirectory of the main source directory@footnote{In
12247@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
12248release.}. If you can use PostScript or Ghostscript with your printer,
12249you can print the reference card immediately with @file{refcard.ps}.
12250
12251The release also includes the source for the reference card. You
12252can format it, using @TeX{}, by typing:
12253
12254@example
12255make refcard.dvi
12256@end example
12257
12258The @value{GDBN} reference card is designed to print in @dfn{landscape}
12259mode on US ``letter'' size paper;
12260that is, on a sheet 11 inches wide by 8.5 inches
12261high. You will need to specify this form of printing as an option to
12262your @sc{dvi} output program.
12263
12264@cindex documentation
12265
12266All the documentation for @value{GDBN} comes as part of the machine-readable
12267distribution. The documentation is written in Texinfo format, which is
12268a documentation system that uses a single source file to produce both
12269on-line information and a printed manual. You can use one of the Info
12270formatting commands to create the on-line version of the documentation
12271and @TeX{} (or @code{texi2roff}) to typeset the printed version.
12272
12273@value{GDBN} includes an already formatted copy of the on-line Info
12274version of this manual in the @file{gdb} subdirectory. The main Info
12275file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
12276subordinate files matching @samp{gdb.info*} in the same directory. If
12277necessary, you can print out these files, or read them with any editor;
12278but they are easier to read using the @code{info} subsystem in @sc{gnu}
12279Emacs or the standalone @code{info} program, available as part of the
12280@sc{gnu} Texinfo distribution.
12281
12282If you want to format these Info files yourself, you need one of the
12283Info formatting programs, such as @code{texinfo-format-buffer} or
12284@code{makeinfo}.
12285
12286If you have @code{makeinfo} installed, and are in the top level
12287@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
12288version @value{GDBVN}), you can make the Info file by typing:
12289
12290@example
12291cd gdb
12292make gdb.info
12293@end example
12294
12295If you want to typeset and print copies of this manual, you need @TeX{},
12296a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
12297Texinfo definitions file.
12298
12299@TeX{} is a typesetting program; it does not print files directly, but
12300produces output files called @sc{dvi} files. To print a typeset
12301document, you need a program to print @sc{dvi} files. If your system
12302has @TeX{} installed, chances are it has such a program. The precise
12303command to use depends on your system; @kbd{lpr -d} is common; another
12304(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
12305require a file name without any extension or a @samp{.dvi} extension.
12306
12307@TeX{} also requires a macro definitions file called
12308@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
12309written in Texinfo format. On its own, @TeX{} cannot either read or
12310typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
12311and is located in the @file{gdb-@var{version-number}/texinfo}
12312directory.
12313
12314If you have @TeX{} and a @sc{dvi} printer program installed, you can
12315typeset and print this manual. First switch to the the @file{gdb}
12316subdirectory of the main source directory (for example, to
12317@file{gdb-@value{GDBVN}/gdb}) and type:
12318
12319@example
12320make gdb.dvi
12321@end example
12322
12323Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c906108c 12324
53a5351d 12325@node Installing GDB
c906108c
SS
12326@appendix Installing @value{GDBN}
12327@cindex configuring @value{GDBN}
12328@cindex installation
12329
c906108c
SS
12330@value{GDBN} comes with a @code{configure} script that automates the process
12331of preparing @value{GDBN} for installation; you can then use @code{make} to
12332build the @code{gdb} program.
12333@iftex
12334@c irrelevant in info file; it's as current as the code it lives with.
12335@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
12336look at the @file{README} file in the sources; we may have improved the
12337installation procedures since publishing this manual.}
12338@end iftex
12339
12340The @value{GDBN} distribution includes all the source code you need for
12341@value{GDBN} in a single directory, whose name is usually composed by
12342appending the version number to @samp{gdb}.
12343
12344For example, the @value{GDBN} version @value{GDBVN} distribution is in the
12345@file{gdb-@value{GDBVN}} directory. That directory contains:
12346
12347@table @code
12348@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
12349script for configuring @value{GDBN} and all its supporting libraries
12350
12351@item gdb-@value{GDBVN}/gdb
12352the source specific to @value{GDBN} itself
12353
12354@item gdb-@value{GDBVN}/bfd
12355source for the Binary File Descriptor library
12356
12357@item gdb-@value{GDBVN}/include
12358@sc{gnu} include files
12359
12360@item gdb-@value{GDBVN}/libiberty
12361source for the @samp{-liberty} free software library
12362
12363@item gdb-@value{GDBVN}/opcodes
12364source for the library of opcode tables and disassemblers
12365
12366@item gdb-@value{GDBVN}/readline
12367source for the @sc{gnu} command-line interface
12368
12369@item gdb-@value{GDBVN}/glob
12370source for the @sc{gnu} filename pattern-matching subroutine
12371
12372@item gdb-@value{GDBVN}/mmalloc
12373source for the @sc{gnu} memory-mapped malloc package
12374@end table
12375
12376The simplest way to configure and build @value{GDBN} is to run @code{configure}
12377from the @file{gdb-@var{version-number}} source directory, which in
12378this example is the @file{gdb-@value{GDBVN}} directory.
12379
12380First switch to the @file{gdb-@var{version-number}} source directory
12381if you are not already in it; then run @code{configure}. Pass the
12382identifier for the platform on which @value{GDBN} will run as an
12383argument.
12384
12385For example:
12386
12387@example
12388cd gdb-@value{GDBVN}
12389./configure @var{host}
12390make
12391@end example
12392
12393@noindent
12394where @var{host} is an identifier such as @samp{sun4} or
12395@samp{decstation}, that identifies the platform where @value{GDBN} will run.
12396(You can often leave off @var{host}; @code{configure} tries to guess the
12397correct value by examining your system.)
12398
12399Running @samp{configure @var{host}} and then running @code{make} builds the
12400@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
12401libraries, then @code{gdb} itself. The configured source files, and the
12402binaries, are left in the corresponding source directories.
12403
12404@need 750
12405@code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
12406system does not recognize this automatically when you run a different
12407shell, you may need to run @code{sh} on it explicitly:
12408
12409@example
12410sh configure @var{host}
12411@end example
12412
12413If you run @code{configure} from a directory that contains source
12414directories for multiple libraries or programs, such as the
12415@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
12416creates configuration files for every directory level underneath (unless
12417you tell it not to, with the @samp{--norecursion} option).
12418
12419You can run the @code{configure} script from any of the
12420subordinate directories in the @value{GDBN} distribution if you only want to
12421configure that subdirectory, but be sure to specify a path to it.
12422
12423For example, with version @value{GDBVN}, type the following to configure only
12424the @code{bfd} subdirectory:
12425
12426@example
12427@group
12428cd gdb-@value{GDBVN}/bfd
12429../configure @var{host}
12430@end group
12431@end example
12432
12433You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
12434However, you should make sure that the shell on your path (named by
12435the @samp{SHELL} environment variable) is publicly readable. Remember
12436that @value{GDBN} uses the shell to start your program---some systems refuse to
12437let @value{GDBN} debug child processes whose programs are not readable.
12438
12439@menu
12440* Separate Objdir:: Compiling @value{GDBN} in another directory
12441* Config Names:: Specifying names for hosts and targets
12442* Configure Options:: Summary of options for configure
12443@end menu
12444
53a5351d 12445@node Separate Objdir
c906108c
SS
12446@section Compiling @value{GDBN} in another directory
12447
12448If you want to run @value{GDBN} versions for several host or target machines,
12449you need a different @code{gdb} compiled for each combination of
12450host and target. @code{configure} is designed to make this easy by
12451allowing you to generate each configuration in a separate subdirectory,
12452rather than in the source directory. If your @code{make} program
12453handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
12454@code{make} in each of these directories builds the @code{gdb}
12455program specified there.
12456
12457To build @code{gdb} in a separate directory, run @code{configure}
12458with the @samp{--srcdir} option to specify where to find the source.
12459(You also need to specify a path to find @code{configure}
12460itself from your working directory. If the path to @code{configure}
12461would be the same as the argument to @samp{--srcdir}, you can leave out
12462the @samp{--srcdir} option; it is assumed.)
12463
12464For example, with version @value{GDBVN}, you can build @value{GDBN} in a
12465separate directory for a Sun 4 like this:
12466
12467@example
12468@group
12469cd gdb-@value{GDBVN}
12470mkdir ../gdb-sun4
12471cd ../gdb-sun4
12472../gdb-@value{GDBVN}/configure sun4
12473make
12474@end group
12475@end example
12476
12477When @code{configure} builds a configuration using a remote source
12478directory, it creates a tree for the binaries with the same structure
12479(and using the same names) as the tree under the source directory. In
12480the example, you'd find the Sun 4 library @file{libiberty.a} in the
12481directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
12482@file{gdb-sun4/gdb}.
12483
12484One popular reason to build several @value{GDBN} configurations in separate
12485directories is to configure @value{GDBN} for cross-compiling (where
12486@value{GDBN} runs on one machine---the @dfn{host}---while debugging
12487programs that run on another machine---the @dfn{target}).
12488You specify a cross-debugging target by
12489giving the @samp{--target=@var{target}} option to @code{configure}.
12490
12491When you run @code{make} to build a program or library, you must run
12492it in a configured directory---whatever directory you were in when you
12493called @code{configure} (or one of its subdirectories).
12494
12495The @code{Makefile} that @code{configure} generates in each source
12496directory also runs recursively. If you type @code{make} in a source
12497directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
12498directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
12499will build all the required libraries, and then build GDB.
12500
12501When you have multiple hosts or targets configured in separate
12502directories, you can run @code{make} on them in parallel (for example,
12503if they are NFS-mounted on each of the hosts); they will not interfere
12504with each other.
12505
53a5351d 12506@node Config Names
c906108c
SS
12507@section Specifying names for hosts and targets
12508
12509The specifications used for hosts and targets in the @code{configure}
12510script are based on a three-part naming scheme, but some short predefined
12511aliases are also supported. The full naming scheme encodes three pieces
12512of information in the following pattern:
12513
12514@example
12515@var{architecture}-@var{vendor}-@var{os}
12516@end example
12517
12518For example, you can use the alias @code{sun4} as a @var{host} argument,
12519or as the value for @var{target} in a @code{--target=@var{target}}
12520option. The equivalent full name is @samp{sparc-sun-sunos4}.
12521
12522The @code{configure} script accompanying @value{GDBN} does not provide
12523any query facility to list all supported host and target names or
12524aliases. @code{configure} calls the Bourne shell script
12525@code{config.sub} to map abbreviations to full names; you can read the
12526script, if you wish, or you can use it to test your guesses on
12527abbreviations---for example:
12528
12529@smallexample
12530% sh config.sub i386-linux
12531i386-pc-linux-gnu
12532% sh config.sub alpha-linux
12533alpha-unknown-linux-gnu
12534% sh config.sub hp9k700
12535hppa1.1-hp-hpux
12536% sh config.sub sun4
12537sparc-sun-sunos4.1.1
12538% sh config.sub sun3
12539m68k-sun-sunos4.1.1
12540% sh config.sub i986v
12541Invalid configuration `i986v': machine `i986v' not recognized
12542@end smallexample
12543
12544@noindent
12545@code{config.sub} is also distributed in the @value{GDBN} source
12546directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
12547
53a5351d 12548@node Configure Options
c906108c
SS
12549@section @code{configure} options
12550
12551Here is a summary of the @code{configure} options and arguments that
12552are most often useful for building @value{GDBN}. @code{configure} also has
12553several other options not listed here. @inforef{What Configure
12554Does,,configure.info}, for a full explanation of @code{configure}.
12555
12556@example
12557configure @r{[}--help@r{]}
12558 @r{[}--prefix=@var{dir}@r{]}
12559 @r{[}--exec-prefix=@var{dir}@r{]}
12560 @r{[}--srcdir=@var{dirname}@r{]}
12561 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
12562 @r{[}--target=@var{target}@r{]}
12563 @var{host}
12564@end example
12565
12566@noindent
12567You may introduce options with a single @samp{-} rather than
12568@samp{--} if you prefer; but you may abbreviate option names if you use
12569@samp{--}.
12570
12571@table @code
12572@item --help
12573Display a quick summary of how to invoke @code{configure}.
12574
12575@item --prefix=@var{dir}
12576Configure the source to install programs and files under directory
12577@file{@var{dir}}.
12578
12579@item --exec-prefix=@var{dir}
12580Configure the source to install programs under directory
12581@file{@var{dir}}.
12582
12583@c avoid splitting the warning from the explanation:
12584@need 2000
12585@item --srcdir=@var{dirname}
12586@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
12587@code{make} that implements the @code{VPATH} feature.}@*
12588Use this option to make configurations in directories separate from the
12589@value{GDBN} source directories. Among other things, you can use this to
12590build (or maintain) several configurations simultaneously, in separate
12591directories. @code{configure} writes configuration specific files in
12592the current directory, but arranges for them to use the source in the
12593directory @var{dirname}. @code{configure} creates directories under
12594the working directory in parallel to the source directories below
12595@var{dirname}.
12596
12597@item --norecursion
12598Configure only the directory level where @code{configure} is executed; do not
12599propagate configuration to subdirectories.
12600
12601@item --target=@var{target}
12602Configure @value{GDBN} for cross-debugging programs running on the specified
12603@var{target}. Without this option, @value{GDBN} is configured to debug
12604programs that run on the same machine (@var{host}) as @value{GDBN} itself.
12605
12606There is no convenient way to generate a list of all available targets.
12607
12608@item @var{host} @dots{}
12609Configure @value{GDBN} to run on the specified @var{host}.
12610
12611There is no convenient way to generate a list of all available hosts.
12612@end table
12613
12614There are many other options available as well, but they are generally
12615needed for special purposes only.
c906108c 12616
53a5351d 12617@node Index
c906108c
SS
12618@unnumbered Index
12619
12620@printindex cp
12621
12622@tex
12623% I think something like @colophon should be in texinfo. In the
12624% meantime:
12625\long\def\colophon{\hbox to0pt{}\vfill
12626\centerline{The body of this manual is set in}
12627\centerline{\fontname\tenrm,}
12628\centerline{with headings in {\bf\fontname\tenbf}}
12629\centerline{and examples in {\tt\fontname\tentt}.}
12630\centerline{{\it\fontname\tenit\/},}
12631\centerline{{\bf\fontname\tenbf}, and}
12632\centerline{{\sl\fontname\tensl\/}}
12633\centerline{are used for emphasis.}\vfill}
12634\page\colophon
12635% Blame: doc@cygnus.com, 1991.
12636@end tex
12637
12638@contents
12639@bye