Fixes for floatformat_from_doublest().
[deliverable/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
9341Obtain thread information from RTOS. Where: @var{startflag} (one hex
9342digit) is one to indicate the first query and zero to indicate a
9343subsequent query; @var{threadcount} (two hex digits) is the maximum
9344number of threads the response packet can contain; and @var{nextthread}
9345(eight hex digits), for subsequent queries (@var{startflag} is zero), is
9346returned in the response as @var{argthread}.
9347@item
9348@tab reply @code{q}@code{M}@var{count}@var{done}@var{argthread}@var{thread...}
9349@tab
9350Where: @var{count} (two hex digits) is the number of threads being
9351returned; @var{done} (one hex digit) is zero to indicate more threads
9352and one indicates no further threads; @var{argthreadid} (eight hex
9353digits) is @var{nextthread} from the request packet; @var{thread...} is
9354a sequence of thread IDs from the target. @var{threadid} (eight hex
9355digits). See @code{remote.c:parse_threadlist_response()}.
9356
9357@item query sect offs
9358@tab @code{q}@code{Offsets}
917317f4
JM
9359@tab
9360Get section offsets that the target used when re-locating the downloaded
9361image. @emph{Note: while a @code{Bss} offset is included in the
9362response, @value{GDBN} ignores this and instead applies the @code{Data}
9363offset to the @code{Bss} section.}
d4f3574e
SS
9364@item
9365@tab reply @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
9366
9367@item thread info request
9368@tab @code{q}@code{P}@var{mode}@var{threadid}
9369@tab
9370Returns information on @var{threadid}. Where: @var{mode} is a hex
9371encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
9372@item
9373@tab reply *
9374@tab
9375See @code{remote.c:remote_unpack_thread_info_response()}.
9376
9377@item remote command
9378@tab @code{q}@code{Rcmd,}@var{COMMAND}
9379@tab
9380@var{COMMAND} (hex encoded) is passed to the local interpreter for
9381execution. Invalid commands should be reported using the output string.
9382Before the final result packet, the target may also respond with a
9383number of intermediate @code{O}@var{OUTPUT} console output
9384packets. @emph{Implementors should note that providing access to a
9385stubs's interpreter may have security implications}.
9386@item
9387@tab reply @code{OK}
9388@tab
9389A command response with no output.
9390@item
9391@tab reply @var{OUTPUT}
9392@tab
9393A command response with the hex encoded output string @var{OUTPUT}.
9394@item
9395@tab reply @code{E}@var{NN}
9396@tab
9397Indicate a badly formed request.
9398
9399@item
9400@tab reply @samp{}
9401@tab
9402When @samp{q}@samp{Rcmd} is not recognized.
9403
9404@end multitable
9405
9406The following @samp{g}/@samp{G} packets have previously been defined.
9407In the below, some thirty-two bit registers are transferred as sixty-four
9408bits. Those registers should be zero/sign extended (which?) to fill the
9409space allocated. Register bytes are transfered in target byte order.
9410The two nibbles within a register byte are transfered most-significant -
9411least-significant.
9412
9413@multitable @columnfractions .5 .5
9414
9415@item MIPS32
9416@tab
9417All registers are transfered as thirty-two bit quantities in the order:
941832 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
9419registers; fsr; fir; fp.
9420
9421@item MIPS64
9422@tab
9423All registers are transfered as sixty-four bit quantities (including
9424thirty-two bit registers such as @code{sr}). The ordering is the same
9425as @code{MIPS32}.
9426
9427@end multitable
9428
104c1213
JM
9429Example sequence of a target being re-started. Notice how the restart
9430does not get any direct output:
9431
9432@example
9433<- @code{R00}
9434-> @code{+}
9435@emph{target restarts}
9436<- @code{?}
9437-> @code{+}
9438-> @code{T001:1234123412341234}
9439<- @code{+}
9440@end example
9441
9442Example sequence of a target being stepped by a single instruction:
9443
9444@example
9445<- @code{G1445...}
9446-> @code{+}
9447<- @code{s}
9448-> @code{+}
9449@emph{time passes}
9450-> @code{T001:1234123412341234}
9451<- @code{+}
9452<- @code{g}
9453-> @code{+}
9454-> @code{1455...}
9455<- @code{+}
9456@end example
9457
d4f3574e
SS
9458@kindex set remotedebug@r{, serial protocol}
9459@kindex show remotedebug@r{, serial protocol}
104c1213
JM
9460@cindex packets, reporting on stdout
9461@cindex serial connections, debugging
9462If you have trouble with the serial connection, you can use the command
9463@code{set remotedebug}. This makes @value{GDBN} report on all packets sent
9464back and forth across the serial line to the remote machine. The
9465packet-debugging information is printed on the @value{GDBN} standard output
9466stream. @code{set remotedebug off} turns it off, and @code{show
9467remotedebug} shows you its current state.
9468
9469@node Server
9470@subsubsection Using the @code{gdbserver} program
9471
9472@kindex gdbserver
9473@cindex remote connection without stubs
9474@code{gdbserver} is a control program for Unix-like systems, which
9475allows you to connect your program with a remote @value{GDBN} via
9476@code{target remote}---but without linking in the usual debugging stub.
9477
9478@code{gdbserver} is not a complete replacement for the debugging stubs,
9479because it requires essentially the same operating-system facilities
9480that @value{GDBN} itself does. In fact, a system that can run
9481@code{gdbserver} to connect to a remote @value{GDBN} could also run
9482@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
9483because it is a much smaller program than @value{GDBN} itself. It is
9484also easier to port than all of @value{GDBN}, so you may be able to get
9485started more quickly on a new system by using @code{gdbserver}.
9486Finally, if you develop code for real-time systems, you may find that
9487the tradeoffs involved in real-time operation make it more convenient to
9488do as much development work as possible on another system, for example
9489by cross-compiling. You can use @code{gdbserver} to make a similar
9490choice for debugging.
9491
9492@value{GDBN} and @code{gdbserver} communicate via either a serial line
9493or a TCP connection, using the standard @value{GDBN} remote serial
9494protocol.
9495
9496@table @emph
9497@item On the target machine,
9498you need to have a copy of the program you want to debug.
9499@code{gdbserver} does not need your program's symbol table, so you can
9500strip the program if necessary to save space. @value{GDBN} on the host
9501system does all the symbol handling.
9502
9503To use the server, you must tell it how to communicate with @value{GDBN};
9504the name of your program; and the arguments for your program. The
9505syntax is:
9506
9507@smallexample
9508target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
9509@end smallexample
9510
9511@var{comm} is either a device name (to use a serial line) or a TCP
9512hostname and portnumber. For example, to debug Emacs with the argument
9513@samp{foo.txt} and communicate with @value{GDBN} over the serial port
9514@file{/dev/com1}:
9515
9516@smallexample
9517target> gdbserver /dev/com1 emacs foo.txt
9518@end smallexample
9519
9520@code{gdbserver} waits passively for the host @value{GDBN} to communicate
9521with it.
9522
9523To use a TCP connection instead of a serial line:
9524
9525@smallexample
9526target> gdbserver host:2345 emacs foo.txt
9527@end smallexample
9528
9529The only difference from the previous example is the first argument,
9530specifying that you are communicating with the host @value{GDBN} via
9531TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
9532expect a TCP connection from machine @samp{host} to local TCP port 2345.
9533(Currently, the @samp{host} part is ignored.) You can choose any number
9534you want for the port number as long as it does not conflict with any
9535TCP ports already in use on the target system (for example, @code{23} is
9536reserved for @code{telnet}).@footnote{If you choose a port number that
9537conflicts with another service, @code{gdbserver} prints an error message
d4f3574e 9538and exits.} You must use the same port number with the host @value{GDBN}
104c1213
JM
9539@code{target remote} command.
9540
9541@item On the @value{GDBN} host machine,
9542you need an unstripped copy of your program, since @value{GDBN} needs
9543symbols and debugging information. Start up @value{GDBN} as usual,
9544using the name of the local copy of your program as the first argument.
9545(You may also need the @w{@samp{--baud}} option if the serial line is
d4f3574e 9546running at anything other than 9600@dmn{bps}.) After that, use @code{target
104c1213
JM
9547remote} to establish communications with @code{gdbserver}. Its argument
9548is either a device name (usually a serial device, like
9549@file{/dev/ttyb}), or a TCP port descriptor in the form
9550@code{@var{host}:@var{PORT}}. For example:
9551
9552@smallexample
9553(@value{GDBP}) target remote /dev/ttyb
9554@end smallexample
9555
9556@noindent
9557communicates with the server via serial line @file{/dev/ttyb}, and
9558
9559@smallexample
9560(@value{GDBP}) target remote the-target:2345
9561@end smallexample
9562
9563@noindent
9564communicates via a TCP connection to port 2345 on host @w{@file{the-target}}.
9565For TCP connections, you must start up @code{gdbserver} prior to using
9566the @code{target remote} command. Otherwise you may get an error whose
9567text depends on the host system, but which usually looks something like
9568@samp{Connection refused}.
9569@end table
9570
9571@node NetWare
9572@subsubsection Using the @code{gdbserve.nlm} program
9573
9574@kindex gdbserve.nlm
9575@code{gdbserve.nlm} is a control program for NetWare systems, which
9576allows you to connect your program with a remote @value{GDBN} via
9577@code{target remote}.
9578
9579@value{GDBN} and @code{gdbserve.nlm} communicate via a serial line,
9580using the standard @value{GDBN} remote serial protocol.
9581
9582@table @emph
9583@item On the target machine,
9584you need to have a copy of the program you want to debug.
9585@code{gdbserve.nlm} does not need your program's symbol table, so you
9586can strip the program if necessary to save space. @value{GDBN} on the
9587host system does all the symbol handling.
9588
9589To use the server, you must tell it how to communicate with
9590@value{GDBN}; the name of your program; and the arguments for your
9591program. The syntax is:
9592
9593@smallexample
9594load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
9595 [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
9596@end smallexample
9597
9598@var{board} and @var{port} specify the serial line; @var{baud} specifies
9599the baud rate used by the connection. @var{port} and @var{node} default
d4f3574e 9600to 0, @var{baud} defaults to 9600@dmn{bps}.
104c1213
JM
9601
9602For example, to debug Emacs with the argument @samp{foo.txt}and
9603communicate with @value{GDBN} over serial port number 2 or board 1
d4f3574e 9604using a 19200@dmn{bps} connection:
104c1213
JM
9605
9606@smallexample
9607load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
9608@end smallexample
9609
9610@item On the @value{GDBN} host machine,
9611you need an unstripped copy of your program, since @value{GDBN} needs
9612symbols and debugging information. Start up @value{GDBN} as usual,
9613using the name of the local copy of your program as the first argument.
9614(You may also need the @w{@samp{--baud}} option if the serial line is
d4f3574e 9615running at anything other than 9600@dmn{bps}. After that, use @code{target
104c1213
JM
9616remote} to establish communications with @code{gdbserve.nlm}. Its
9617argument is a device name (usually a serial device, like
9618@file{/dev/ttyb}). For example:
9619
9620@smallexample
9621(@value{GDBP}) target remote /dev/ttyb
9622@end smallexample
9623
9624@noindent
9625communications with the server via serial line @file{/dev/ttyb}.
9626@end table
9627
9628@node KOD
9629@section Kernel Object Display
9630
9631@cindex kernel object display
9632@cindex kernel object
9633@cindex KOD
9634
9635Some targets support kernel object display. Using this facility,
9636@value{GDBN} communicates specially with the underlying operating system
9637and can display information about operating system-level objects such as
9638mutexes and other synchronization objects. Exactly which objects can be
9639displayed is determined on a per-OS basis.
9640
9641Use the @code{set os} command to set the operating system. This tells
9642@value{GDBN} which kernel object display module to initialize:
9643
9644@example
2df3850c 9645(@value{GDBP}) set os cisco
104c1213
JM
9646@end example
9647
9648If @code{set os} succeeds, @value{GDBN} will display some information
9649about the operating system, and will create a new @code{info} command
9650which can be used to query the target. The @code{info} command is named
9651after the operating system:
9652
9653@example
2df3850c 9654(@value{GDBP}) info cisco
104c1213
JM
9655List of Cisco Kernel Objects
9656Object Description
9657any Any and all objects
9658@end example
9659
9660Further subcommands can be used to query about particular objects known
9661by the kernel.
9662
9663There is currently no way to determine whether a given operating system
96baa820
JM
9664is supported other than to try it.
9665
9666
104c1213
JM
9667@node Configurations
9668@chapter Configuration-Specific Information
9669
9670While nearly all @value{GDBN} commands are available for all native and
9671cross versions of the debugger, there are some exceptions. This chapter
9672describes things that are only available in certain configurations.
9673
9674There are three major categories of configurations: native
9675configurations, where the host and target are the same, embedded
9676operating system configurations, which are usually the same for several
9677different processor architectures, and bare embedded processors, which
9678are quite different from each other.
9679
9680@menu
9681* Native::
9682* Embedded OS::
9683* Embedded Processors::
9684* Architectures::
9685@end menu
9686
9687@node Native
9688@section Native
9689
9690This section describes details specific to particular native
9691configurations.
9692
9693@menu
9694* HP-UX:: HP-UX
9695* SVR4 Process Information:: SVR4 process information
9696@end menu
9697
9698@node HP-UX
9699@subsection HP-UX
9700
9701On HP-UX systems, if you refer to a function or variable name that
9702begins with a dollar sign, @value{GDBN} searches for a user or system
9703name first, before it searches for a convenience variable.
9704
9705@node SVR4 Process Information
9706@subsection SVR4 process information
9707
9708@kindex /proc
9709@cindex process image
9710
9711Many versions of SVR4 provide a facility called @samp{/proc} that can be
9712used to examine the image of a running process using file-system
9713subroutines. If @value{GDBN} is configured for an operating system with
9714this facility, the command @code{info proc} is available to report on
9715several kinds of information about the process running your program.
9716@code{info proc} works only on SVR4 systems that include the
9717@code{procfs} code. This includes OSF/1 (Digital Unix), Solaris, Irix,
9718and Unixware, but not HP-UX or Linux, for example.
9719
9720@table @code
9721@kindex info proc
9722@item info proc
9723Summarize available information about the process.
9724
9725@kindex info proc mappings
9726@item info proc mappings
9727Report on the address ranges accessible in the program, with information
9728on whether your program may read, write, or execute each range.
9729
9730@kindex info proc times
9731@item info proc times
9732Starting time, user CPU time, and system CPU time for your program and
9733its children.
9734
9735@kindex info proc id
9736@item info proc id
9737Report on the process IDs related to your program: its own process ID,
9738the ID of its parent, the process group ID, and the session ID.
9739
9740@kindex info proc status
9741@item info proc status
9742General information on the state of the process. If the process is
9743stopped, this report includes the reason for stopping, and any signal
9744received.
9745
9746@item info proc all
9747Show all the above information about the process.
9748@end table
9749
9750@node Embedded OS
9751@section Embedded Operating Systems
9752
9753This section describes configurations involving the debugging of
9754embedded operating systems that are available for several different
9755architectures.
9756
9757@menu
9758* VxWorks:: Using @value{GDBN} with VxWorks
9759@end menu
9760
9761@value{GDBN} includes the ability to debug programs running on
9762various real-time operating systems.
9763
9764@node VxWorks
9765@subsection Using @value{GDBN} with VxWorks
9766
9767@cindex VxWorks
9768
9769@table @code
9770
9771@kindex target vxworks
9772@item target vxworks @var{machinename}
9773A VxWorks system, attached via TCP/IP. The argument @var{machinename}
9774is the target system's machine name or IP address.
9775
9776@end table
9777
9778On VxWorks, @code{load} links @var{filename} dynamically on the
9779current target system as well as adding its symbols in @value{GDBN}.
9780
9781@value{GDBN} enables developers to spawn and debug tasks running on networked
9782VxWorks targets from a Unix host. Already-running tasks spawned from
9783the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
9784both the Unix host and on the VxWorks target. The program
d4f3574e 9785@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
104c1213 9786installed with the name @code{vxgdb}, to distinguish it from a
96a2c332 9787@value{GDBN} for debugging programs on the host itself.)
104c1213
JM
9788
9789@table @code
9790@item VxWorks-timeout @var{args}
9791@kindex vxworks-timeout
9792All VxWorks-based targets now support the option @code{vxworks-timeout}.
9793This option is set by the user, and @var{args} represents the number of
9794seconds @value{GDBN} waits for responses to rpc's. You might use this if
9795your VxWorks target is a slow software simulator or is on the far side
9796of a thin network line.
9797@end table
9798
9799The following information on connecting to VxWorks was current when
9800this manual was produced; newer releases of VxWorks may use revised
9801procedures.
9802
9803@kindex INCLUDE_RDB
9804To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
9805to include the remote debugging interface routines in the VxWorks
9806library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
9807VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
9808kernel. The resulting kernel contains @file{rdb.a}, and spawns the
9809source debugging task @code{tRdbTask} when VxWorks is booted. For more
9810information on configuring and remaking VxWorks, see the manufacturer's
9811manual.
9812@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
9813
9814Once you have included @file{rdb.a} in your VxWorks system image and set
9815your Unix execution search path to find @value{GDBN}, you are ready to
96a2c332
SS
9816run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
9817@code{vxgdb}, depending on your installation).
104c1213
JM
9818
9819@value{GDBN} comes up showing the prompt:
9820
9821@example
9822(vxgdb)
9823@end example
9824
9825@menu
9826* VxWorks Connection:: Connecting to VxWorks
9827* VxWorks Download:: VxWorks download
9828* VxWorks Attach:: Running tasks
9829@end menu
9830
9831@node VxWorks Connection
9832@subsubsection Connecting to VxWorks
9833
9834The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
9835network. To connect to a target whose host name is ``@code{tt}'', type:
9836
9837@example
9838(vxgdb) target vxworks tt
9839@end example
9840
9841@need 750
9842@value{GDBN} displays messages like these:
9843
9844@smallexample
9845Attaching remote machine across net...
9846Connected to tt.
9847@end smallexample
9848
9849@need 1000
9850@value{GDBN} then attempts to read the symbol tables of any object modules
9851loaded into the VxWorks target since it was last booted. @value{GDBN} locates
9852these files by searching the directories listed in the command search
9853path (@pxref{Environment, ,Your program's environment}); if it fails
9854to find an object file, it displays a message such as:
9855
9856@example
9857prog.o: No such file or directory.
9858@end example
9859
9860When this happens, add the appropriate directory to the search path with
9861the @value{GDBN} command @code{path}, and execute the @code{target}
9862command again.
9863
9864@node VxWorks Download
9865@subsubsection VxWorks download
9866
9867@cindex download to VxWorks
9868If you have connected to the VxWorks target and you want to debug an
9869object that has not yet been loaded, you can use the @value{GDBN}
9870@code{load} command to download a file from Unix to VxWorks
9871incrementally. The object file given as an argument to the @code{load}
9872command is actually opened twice: first by the VxWorks target in order
9873to download the code, then by @value{GDBN} in order to read the symbol
9874table. This can lead to problems if the current working directories on
9875the two systems differ. If both systems have NFS mounted the same
9876filesystems, you can avoid these problems by using absolute paths.
9877Otherwise, it is simplest to set the working directory on both systems
9878to the directory in which the object file resides, and then to reference
9879the file by its name, without any path. For instance, a program
9880@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
9881and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
9882program, type this on VxWorks:
9883
9884@example
9885-> cd "@var{vxpath}/vw/demo/rdb"
9886@end example
d4f3574e
SS
9887
9888@noindent
104c1213
JM
9889Then, in @value{GDBN}, type:
9890
9891@example
9892(vxgdb) cd @var{hostpath}/vw/demo/rdb
9893(vxgdb) load prog.o
9894@end example
9895
9896@value{GDBN} displays a response similar to this:
9897
9898@smallexample
9899Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
9900@end smallexample
9901
9902You can also use the @code{load} command to reload an object module
9903after editing and recompiling the corresponding source file. Note that
9904this makes @value{GDBN} delete all currently-defined breakpoints,
9905auto-displays, and convenience variables, and to clear the value
9906history. (This is necessary in order to preserve the integrity of
d4f3574e 9907debugger's data structures that reference the target system's symbol
104c1213
JM
9908table.)
9909
9910@node VxWorks Attach
9911@subsubsection Running tasks
9912
9913@cindex running VxWorks tasks
9914You can also attach to an existing task using the @code{attach} command as
9915follows:
9916
9917@example
9918(vxgdb) attach @var{task}
9919@end example
9920
9921@noindent
9922where @var{task} is the VxWorks hexadecimal task ID. The task can be running
9923or suspended when you attach to it. Running tasks are suspended at
9924the time of attachment.
9925
9926@node Embedded Processors
9927@section Embedded Processors
9928
9929This section goes into details specific to particular embedded
9930configurations.
9931
9932@menu
9933* A29K Embedded:: AMD A29K Embedded
9934* ARM:: ARM
9935* H8/300:: Hitachi H8/300
9936* H8/500:: Hitachi H8/500
9937* i960:: Intel i960
9938* M32R/D:: Mitsubishi M32R/D
9939* M68K:: Motorola M68K
9940* M88K:: Motorola M88K
9941* MIPS Embedded:: MIPS Embedded
9942* PA:: HP PA Embedded
9943* PowerPC: PowerPC
9944* SH:: Hitachi SH
9945* Sparclet:: Tsqware Sparclet
9946* Sparclite:: Fujitsu Sparclite
9947* ST2000:: Tandem ST2000
9948* Z8000:: Zilog Z8000
9949@end menu
9950
9951@node A29K Embedded
9952@subsection AMD A29K Embedded
9953
9954@menu
9955* A29K UDI::
9956* A29K EB29K::
9957* Comms (EB29K):: Communications setup
9958* gdb-EB29K:: EB29K cross-debugging
9959* Remote Log:: Remote log
9960@end menu
9961
9962@table @code
9963
9964@kindex target adapt
9965@item target adapt @var{dev}
9966Adapt monitor for A29K.
9967
9968@kindex target amd-eb
9969@item target amd-eb @var{dev} @var{speed} @var{PROG}
9970@cindex AMD EB29K
9971Remote PC-resident AMD EB29K board, attached over serial lines.
9972@var{dev} is the serial device, as for @code{target remote};
9973@var{speed} allows you to specify the linespeed; and @var{PROG} is the
9974name of the program to be debugged, as it appears to DOS on the PC.
9975@xref{A29K EB29K, ,EBMON protocol for AMD29K}.
9976
9977@end table
9978
9979@node A29K UDI
9980@subsubsection A29K UDI
9981
9982@cindex UDI
9983@cindex AMD29K via UDI
9984
9985@value{GDBN} supports AMD's UDI (``Universal Debugger Interface'')
9986protocol for debugging the a29k processor family. To use this
9987configuration with AMD targets running the MiniMON monitor, you need the
9988program @code{MONTIP}, available from AMD at no charge. You can also
9989use @value{GDBN} with the UDI-conformant a29k simulator program
9990@code{ISSTIP}, also available from AMD.
9991
9992@table @code
9993@item target udi @var{keyword}
9994@kindex udi
9995Select the UDI interface to a remote a29k board or simulator, where
9996@var{keyword} is an entry in the AMD configuration file @file{udi_soc}.
9997This file contains keyword entries which specify parameters used to
9998connect to a29k targets. If the @file{udi_soc} file is not in your
9999working directory, you must set the environment variable @samp{UDICONF}
10000to its pathname.
10001@end table
10002
10003@node A29K EB29K
10004@subsubsection EBMON protocol for AMD29K
10005
10006@cindex EB29K board
10007@cindex running 29K programs
10008
10009AMD distributes a 29K development board meant to fit in a PC, together
10010with a DOS-hosted monitor program called @code{EBMON}. As a shorthand
10011term, this development system is called the ``EB29K''. To use
10012@value{GDBN} from a Unix system to run programs on the EB29K board, you
10013must first connect a serial cable between the PC (which hosts the EB29K
10014board) and a serial port on the Unix system. In the following, we
10015assume you've hooked the cable between the PC's @file{COM1} port and
10016@file{/dev/ttya} on the Unix system.
10017
10018@node Comms (EB29K)
10019@subsubsection Communications setup
10020
10021The next step is to set up the PC's port, by doing something like this
10022in DOS on the PC:
10023
10024@example
10025C:\> MODE com1:9600,n,8,1,none
10026@end example
10027
10028@noindent
10029This example---run on an MS DOS 4.0 system---sets the PC port to 9600
10030bps, no parity, eight data bits, one stop bit, and no ``retry'' action;
10031you must match the communications parameters when establishing the Unix
10032end of the connection as well.
10033@c FIXME: Who knows what this "no retry action" crud from the DOS manual may
10034@c mean? It's optional; leave it out? ---doc@cygnus.com, 25feb91
d4f3574e
SS
10035@c
10036@c It's optional, but it's unwise to omit it: who knows what is the
10037@c default value set when the DOS machines boots? "No retry" means that
10038@c the DOS serial device driver won't retry the operation if it fails;
10039@c I understand that this is needed because the GDB serial protocol
10040@c handles any errors and retransmissions itself. ---Eli Zaretskii, 3sep99
104c1213
JM
10041
10042To give control of the PC to the Unix side of the serial line, type
10043the following at the DOS console:
10044
10045@example
10046C:\> CTTY com1
10047@end example
10048
10049@noindent
10050(Later, if you wish to return control to the DOS console, you can use
10051the command @code{CTTY con}---but you must send it over the device that
96a2c332 10052had control, in our example over the @file{COM1} serial line.)
104c1213
JM
10053
10054From the Unix host, use a communications program such as @code{tip} or
10055@code{cu} to communicate with the PC; for example,
10056
10057@example
10058cu -s 9600 -l /dev/ttya
10059@end example
10060
10061@noindent
10062The @code{cu} options shown specify, respectively, the linespeed and the
10063serial port to use. If you use @code{tip} instead, your command line
10064may look something like the following:
10065
10066@example
10067tip -9600 /dev/ttya
10068@end example
10069
10070@noindent
10071Your system may require a different name where we show
10072@file{/dev/ttya} as the argument to @code{tip}. The communications
10073parameters, including which port to use, are associated with the
10074@code{tip} argument in the ``remote'' descriptions file---normally the
10075system table @file{/etc/remote}.
10076@c FIXME: What if anything needs doing to match the "n,8,1,none" part of
10077@c the DOS side's comms setup? cu can support -o (odd
10078@c parity), -e (even parity)---apparently no settings for no parity or
10079@c for character size. Taken from stty maybe...? John points out tip
10080@c can set these as internal variables, eg ~s parity=none; man stty
10081@c suggests that it *might* work to stty these options with stdin or
10082@c stdout redirected... ---doc@cygnus.com, 25feb91
d4f3574e
SS
10083@c
10084@c There's nothing to be done for the "none" part of the DOS MODE
10085@c command. The rest of the parameters should be matched by the
10086@c baudrate, bits, and parity used by the Unix side. ---Eli Zaretskii, 3Sep99
104c1213
JM
10087
10088@kindex EBMON
10089Using the @code{tip} or @code{cu} connection, change the DOS working
10090directory to the directory containing a copy of your 29K program, then
10091start the PC program @code{EBMON} (an EB29K control program supplied
10092with your board by AMD). You should see an initial display from
10093@code{EBMON} similar to the one that follows, ending with the
10094@code{EBMON} prompt @samp{#}---
10095
10096@example
10097C:\> G:
10098
10099G:\> CD \usr\joe\work29k
10100
10101G:\USR\JOE\WORK29K> EBMON
10102Am29000 PC Coprocessor Board Monitor, version 3.0-18
10103Copyright 1990 Advanced Micro Devices, Inc.
10104Written by Gibbons and Associates, Inc.
10105
10106Enter '?' or 'H' for help
10107
10108PC Coprocessor Type = EB29K
10109I/O Base = 0x208
10110Memory Base = 0xd0000
10111
10112Data Memory Size = 2048KB
10113Available I-RAM Range = 0x8000 to 0x1fffff
10114Available D-RAM Range = 0x80002000 to 0x801fffff
10115
10116PageSize = 0x400
10117Register Stack Size = 0x800
10118Memory Stack Size = 0x1800
10119
10120CPU PRL = 0x3
10121Am29027 Available = No
10122Byte Write Available = Yes
10123
10124# ~.
10125@end example
10126
10127Then exit the @code{cu} or @code{tip} program (done in the example by
10128typing @code{~.} at the @code{EBMON} prompt). @code{EBMON} keeps
10129running, ready for @value{GDBN} to take over.
10130
10131For this example, we've assumed what is probably the most convenient
10132way to make sure the same 29K program is on both the PC and the Unix
d4f3574e 10133system: a PC/NFS connection that establishes ``drive @file{G:}'' on the
104c1213
JM
10134PC as a file system on the Unix host. If you do not have PC/NFS or
10135something similar connecting the two systems, you must arrange some
10136other way---perhaps floppy-disk transfer---of getting the 29K program
10137from the Unix system to the PC; @value{GDBN} does @emph{not} download it over the
10138serial line.
10139
10140@node gdb-EB29K
10141@subsubsection EB29K cross-debugging
10142
10143Finally, @code{cd} to the directory containing an image of your 29K
10144program on the Unix system, and start @value{GDBN}---specifying as argument the
10145name of your 29K program:
10146
10147@example
10148cd /usr/joe/work29k
10149@value{GDBP} myfoo
10150@end example
10151
10152@need 500
10153Now you can use the @code{target} command:
10154
10155@example
10156target amd-eb /dev/ttya 9600 MYFOO
10157@c FIXME: test above 'target amd-eb' as spelled, with caps! caps are meant to
10158@c emphasize that this is the name as seen by DOS (since I think DOS is
10159@c single-minded about case of letters). ---doc@cygnus.com, 25feb91
10160@end example
10161
10162@noindent
10163In this example, we've assumed your program is in a file called
10164@file{myfoo}. Note that the filename given as the last argument to
10165@code{target amd-eb} should be the name of the program as it appears to DOS.
10166In our example this is simply @code{MYFOO}, but in general it can include
10167a DOS path, and depending on your transfer mechanism may not resemble
10168the name on the Unix side.
10169
10170At this point, you can set any breakpoints you wish; when you are ready
10171to see your program run on the 29K board, use the @value{GDBN} command
10172@code{run}.
10173
10174To stop debugging the remote program, use the @value{GDBN} @code{detach}
10175command.
10176
10177To return control of the PC to its console, use @code{tip} or @code{cu}
10178once again, after your @value{GDBN} session has concluded, to attach to
10179@code{EBMON}. You can then type the command @code{q} to shut down
10180@code{EBMON}, returning control to the DOS command-line interpreter.
d4f3574e 10181Type @kbd{CTTY con} to return command input to the main DOS console,
104c1213
JM
10182and type @kbd{~.} to leave @code{tip} or @code{cu}.
10183
10184@node Remote Log
10185@subsubsection Remote log
10186@kindex eb.log
10187@cindex log file for EB29K
10188
10189The @code{target amd-eb} command creates a file @file{eb.log} in the
10190current working directory, to help debug problems with the connection.
10191@file{eb.log} records all the output from @code{EBMON}, including echoes
10192of the commands sent to it. Running @samp{tail -f} on this file in
10193another window often helps to understand trouble with @code{EBMON}, or
10194unexpected events on the PC side of the connection.
10195
10196@node ARM
10197@subsection ARM
10198
10199@table @code
10200
10201@kindex target rdi
10202@item target rdi @var{dev}
10203ARM Angel monitor, via RDI library interface to ADP protocol. You may
10204use this target to communicate with both boards running the Angel
10205monitor, or with the EmbeddedICE JTAG debug device.
10206
10207@kindex target rdp
10208@item target rdp @var{dev}
10209ARM Demon monitor.
10210
10211@end table
10212
10213@node H8/300
10214@subsection Hitachi H8/300
10215
10216@table @code
10217
d4f3574e 10218@kindex target hms@r{, with H8/300}
104c1213
JM
10219@item target hms @var{dev}
10220A Hitachi SH, H8/300, or H8/500 board, attached via serial line to your host.
10221Use special commands @code{device} and @code{speed} to control the serial
10222line and the communications speed used.
10223
d4f3574e 10224@kindex target e7000@r{, with H8/300}
104c1213
JM
10225@item target e7000 @var{dev}
10226E7000 emulator for Hitachi H8 and SH.
10227
d4f3574e
SS
10228@kindex target sh3@r{, with H8/300}
10229@kindex target sh3e@r{, with H8/300}
104c1213 10230@item target sh3 @var{dev}
96a2c332 10231@itemx target sh3e @var{dev}
104c1213
JM
10232Hitachi SH-3 and SH-3E target systems.
10233
10234@end table
10235
10236@cindex download to H8/300 or H8/500
10237@cindex H8/300 or H8/500 download
10238@cindex download to Hitachi SH
10239@cindex Hitachi SH download
10240When you select remote debugging to a Hitachi SH, H8/300, or H8/500
10241board, the @code{load} command downloads your program to the Hitachi
10242board and also opens it as the current executable target for
10243@value{GDBN} on your host (like the @code{file} command).
10244
10245@value{GDBN} needs to know these things to talk to your
10246Hitachi SH, H8/300, or H8/500:
10247
10248@enumerate
10249@item
10250that you want to use @samp{target hms}, the remote debugging interface
10251for Hitachi microprocessors, or @samp{target e7000}, the in-circuit
10252emulator for the Hitachi SH and the Hitachi 300H. (@samp{target hms} is
2df3850c 10253the default when @value{GDBN} is configured specifically for the Hitachi SH,
104c1213
JM
10254H8/300, or H8/500.)
10255
10256@item
10257what serial device connects your host to your Hitachi board (the first
10258serial device available on your host is the default).
10259
10260@item
10261what speed to use over the serial device.
10262@end enumerate
10263
10264@menu
10265* Hitachi Boards:: Connecting to Hitachi boards.
10266* Hitachi ICE:: Using the E7000 In-Circuit Emulator.
10267* Hitachi Special:: Special @value{GDBN} commands for Hitachi micros.
10268@end menu
10269
10270@node Hitachi Boards
10271@subsubsection Connecting to Hitachi boards
10272
10273@c only for Unix hosts
10274@kindex device
10275@cindex serial device, Hitachi micros
96a2c332 10276Use the special @code{@value{GDBN}} command @samp{device @var{port}} if you
104c1213
JM
10277need to explicitly set the serial device. The default @var{port} is the
10278first available port on your host. This is only necessary on Unix
10279hosts, where it is typically something like @file{/dev/ttya}.
10280
10281@kindex speed
10282@cindex serial line speed, Hitachi micros
96a2c332 10283@code{@value{GDBN}} has another special command to set the communications
104c1213 10284speed: @samp{speed @var{bps}}. This command also is only used from Unix
2df3850c 10285hosts; on DOS hosts, set the line speed as usual from outside @value{GDBN} with
d4f3574e
SS
10286the DOS @code{mode} command (for instance,
10287@w{@kbd{mode com2:9600,n,8,1,p}} for a 9600@dmn{bps} connection).
104c1213
JM
10288
10289The @samp{device} and @samp{speed} commands are available only when you
10290use a Unix host to debug your Hitachi microprocessor programs. If you
10291use a DOS host,
10292@value{GDBN} depends on an auxiliary terminate-and-stay-resident program
10293called @code{asynctsr} to communicate with the development board
10294through a PC serial port. You must also use the DOS @code{mode} command
10295to set up the serial port on the DOS side.
10296
10297The following sample session illustrates the steps needed to start a
10298program under @value{GDBN} control on an H8/300. The example uses a
10299sample H8/300 program called @file{t.x}. The procedure is the same for
10300the Hitachi SH and the H8/500.
10301
10302First hook up your development board. In this example, we use a
10303board attached to serial port @code{COM2}; if you use a different serial
10304port, substitute its name in the argument of the @code{mode} command.
10305When you call @code{asynctsr}, the auxiliary comms program used by the
d4f3574e 10306debugger, you give it just the numeric part of the serial port's name;
104c1213
JM
10307for example, @samp{asyncstr 2} below runs @code{asyncstr} on
10308@code{COM2}.
10309
10310@example
10311C:\H8300\TEST> asynctsr 2
10312C:\H8300\TEST> mode com2:9600,n,8,1,p
10313
10314Resident portion of MODE loaded
10315
10316COM2: 9600, n, 8, 1, p
10317
10318@end example
10319
10320@quotation
10321@emph{Warning:} We have noticed a bug in PC-NFS that conflicts with
10322@code{asynctsr}. If you also run PC-NFS on your DOS host, you may need to
10323disable it, or even boot without it, to use @code{asynctsr} to control
10324your development board.
10325@end quotation
10326
d4f3574e 10327@kindex target hms@r{, and serial protocol}
104c1213
JM
10328Now that serial communications are set up, and the development board is
10329connected, you can start up @value{GDBN}. Call @code{@value{GDBP}} with
96a2c332 10330the name of your program as the argument. @code{@value{GDBN}} prompts
104c1213
JM
10331you, as usual, with the prompt @samp{(@value{GDBP})}. Use two special
10332commands to begin your debugging session: @samp{target hms} to specify
10333cross-debugging to the Hitachi board, and the @code{load} command to
10334download your program to the board. @code{load} displays the names of
10335the program's sections, and a @samp{*} for each 2K of data downloaded.
10336(If you want to refresh @value{GDBN} data on symbols or on the
10337executable file without downloading, use the @value{GDBN} commands
10338@code{file} or @code{symbol-file}. These commands, and @code{load}
10339itself, are described in @ref{Files,,Commands to specify files}.)
10340
10341@smallexample
10342(eg-C:\H8300\TEST) @value{GDBP} t.x
2df3850c 10343@value{GDBN} is free software and you are welcome to distribute copies
104c1213
JM
10344 of it under certain conditions; type "show copying" to see
10345 the conditions.
2df3850c 10346There is absolutely no warranty for @value{GDBN}; type "show warranty"
104c1213 10347for details.
2df3850c
JM
10348@value{GDBN} @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
10349(@value{GDBP}) target hms
104c1213 10350Connected to remote H8/300 HMS system.
2df3850c 10351(@value{GDBP}) load t.x
104c1213
JM
10352.text : 0x8000 .. 0xabde ***********
10353.data : 0xabde .. 0xad30 *
10354.stack : 0xf000 .. 0xf014 *
10355@end smallexample
10356
10357At this point, you're ready to run or debug your program. From here on,
10358you can use all the usual @value{GDBN} commands. The @code{break} command
10359sets breakpoints; the @code{run} command starts your program;
10360@code{print} or @code{x} display data; the @code{continue} command
10361resumes execution after stopping at a breakpoint. You can use the
10362@code{help} command at any time to find out more about @value{GDBN} commands.
10363
10364Remember, however, that @emph{operating system} facilities aren't
10365available on your development board; for example, if your program hangs,
10366you can't send an interrupt---but you can press the @sc{reset} switch!
10367
10368Use the @sc{reset} button on the development board
10369@itemize @bullet
10370@item
10371to interrupt your program (don't use @kbd{ctl-C} on the DOS host---it has
10372no way to pass an interrupt signal to the development board); and
10373
10374@item
10375to return to the @value{GDBN} command prompt after your program finishes
10376normally. The communications protocol provides no other way for @value{GDBN}
10377to detect program completion.
10378@end itemize
10379
10380In either case, @value{GDBN} sees the effect of a @sc{reset} on the
10381development board as a ``normal exit'' of your program.
10382
10383@node Hitachi ICE
10384@subsubsection Using the E7000 in-circuit emulator
10385
d4f3574e 10386@kindex target e7000@r{, with Hitachi ICE}
104c1213
JM
10387You can use the E7000 in-circuit emulator to develop code for either the
10388Hitachi SH or the H8/300H. Use one of these forms of the @samp{target
10389e7000} command to connect @value{GDBN} to your E7000:
10390
10391@table @code
10392@item target e7000 @var{port} @var{speed}
10393Use this form if your E7000 is connected to a serial port. The
10394@var{port} argument identifies what serial port to use (for example,
10395@samp{com2}). The third argument is the line speed in bits per second
10396(for example, @samp{9600}).
10397
10398@item target e7000 @var{hostname}
10399If your E7000 is installed as a host on a TCP/IP network, you can just
10400specify its hostname; @value{GDBN} uses @code{telnet} to connect.
10401@end table
10402
10403@node Hitachi Special
10404@subsubsection Special @value{GDBN} commands for Hitachi micros
10405
10406Some @value{GDBN} commands are available only for the H8/300:
10407
10408@table @code
10409
10410@kindex set machine
10411@kindex show machine
10412@item set machine h8300
10413@itemx set machine h8300h
10414Condition @value{GDBN} for one of the two variants of the H8/300
10415architecture with @samp{set machine}. You can use @samp{show machine}
10416to check which variant is currently in effect.
10417
10418@end table
10419
10420@node H8/500
10421@subsection H8/500
10422
10423@table @code
10424
10425@kindex set memory @var{mod}
10426@cindex memory models, H8/500
10427@item set memory @var{mod}
10428@itemx show memory
10429Specify which H8/500 memory model (@var{mod}) you are using with
10430@samp{set memory}; check which memory model is in effect with @samp{show
10431memory}. The accepted values for @var{mod} are @code{small},
10432@code{big}, @code{medium}, and @code{compact}.
10433
10434@end table
10435
10436@node i960
10437@subsection Intel i960
10438
10439@table @code
10440
10441@kindex target mon960
10442@item target mon960 @var{dev}
10443MON960 monitor for Intel i960.
10444
10445@item target nindy @var{devicename}
10446An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
10447the name of the serial device to use for the connection, e.g.
10448@file{/dev/ttya}.
10449
10450@end table
10451
10452@cindex Nindy
10453@cindex i960
10454@dfn{Nindy} is a ROM Monitor program for Intel 960 target systems. When
10455@value{GDBN} is configured to control a remote Intel 960 using Nindy, you can
10456tell @value{GDBN} how to connect to the 960 in several ways:
10457
10458@itemize @bullet
10459@item
10460Through command line options specifying serial port, version of the
10461Nindy protocol, and communications speed;
10462
10463@item
10464By responding to a prompt on startup;
10465
10466@item
10467By using the @code{target} command at any point during your @value{GDBN}
10468session. @xref{Target Commands, ,Commands for managing targets}.
10469
10470@kindex target nindy
10471@item target nindy @var{devicename}
10472An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
10473the name of the serial device to use for the connection, e.g.
10474@file{/dev/ttya}.
10475
10476@end itemize
10477
10478@cindex download to Nindy-960
10479With the Nindy interface to an Intel 960 board, @code{load}
10480downloads @var{filename} to the 960 as well as adding its symbols in
10481@value{GDBN}.
10482
10483@menu
10484* Nindy Startup:: Startup with Nindy
10485* Nindy Options:: Options for Nindy
10486* Nindy Reset:: Nindy reset command
10487@end menu
10488
10489@node Nindy Startup
10490@subsubsection Startup with Nindy
10491
10492If you simply start @code{@value{GDBP}} without using any command-line
10493options, you are prompted for what serial port to use, @emph{before} you
10494reach the ordinary @value{GDBN} prompt:
10495
10496@example
10497Attach /dev/ttyNN -- specify NN, or "quit" to quit:
10498@end example
10499
10500@noindent
10501Respond to the prompt with whatever suffix (after @samp{/dev/tty})
10502identifies the serial port you want to use. You can, if you choose,
10503simply start up with no Nindy connection by responding to the prompt
10504with an empty line. If you do this and later wish to attach to Nindy,
10505use @code{target} (@pxref{Target Commands, ,Commands for managing targets}).
10506
10507@node Nindy Options
10508@subsubsection Options for Nindy
10509
10510These are the startup options for beginning your @value{GDBN} session with a
10511Nindy-960 board attached:
10512
10513@table @code
10514@item -r @var{port}
10515Specify the serial port name of a serial interface to be used to connect
10516to the target system. This option is only available when @value{GDBN} is
10517configured for the Intel 960 target architecture. You may specify
10518@var{port} as any of: a full pathname (e.g. @samp{-r /dev/ttya}), a
10519device name in @file{/dev} (e.g. @samp{-r ttya}), or simply the unique
10520suffix for a specific @code{tty} (e.g. @samp{-r a}).
10521
10522@item -O
10523(An uppercase letter ``O'', not a zero.) Specify that @value{GDBN} should use
10524the ``old'' Nindy monitor protocol to connect to the target system.
10525This option is only available when @value{GDBN} is configured for the Intel 960
10526target architecture.
10527
10528@quotation
10529@emph{Warning:} if you specify @samp{-O}, but are actually trying to
10530connect to a target system that expects the newer protocol, the connection
10531fails, appearing to be a speed mismatch. @value{GDBN} repeatedly
10532attempts to reconnect at several different line speeds. You can abort
10533this process with an interrupt.
10534@end quotation
10535
10536@item -brk
10537Specify that @value{GDBN} should first send a @code{BREAK} signal to the target
10538system, in an attempt to reset it, before connecting to a Nindy target.
10539
10540@quotation
10541@emph{Warning:} Many target systems do not have the hardware that this
10542requires; it only works with a few boards.
10543@end quotation
10544@end table
10545
10546The standard @samp{-b} option controls the line speed used on the serial
10547port.
10548
10549@c @group
10550@node Nindy Reset
10551@subsubsection Nindy reset command
10552
10553@table @code
10554@item reset
10555@kindex reset
10556For a Nindy target, this command sends a ``break'' to the remote target
10557system; this is only useful if the target has been equipped with a
10558circuit to perform a hard reset (or some other interesting action) when
10559a break is detected.
10560@end table
10561@c @end group
10562
10563@node M32R/D
10564@subsection Mitsubishi M32R/D
10565
10566@table @code
10567
10568@kindex target m32r
10569@item target m32r @var{dev}
10570Mitsubishi M32R/D ROM monitor.
10571
10572@end table
10573
10574@node M68K
10575@subsection M68k
10576
10577The Motorola m68k configuration includes ColdFire support, and
10578target command for the following ROM monitors.
10579
10580@table @code
10581
10582@kindex target abug
10583@item target abug @var{dev}
10584ABug ROM monitor for M68K.
10585
10586@kindex target cpu32bug
10587@item target cpu32bug @var{dev}
10588CPU32BUG monitor, running on a CPU32 (M68K) board.
10589
10590@kindex target dbug
10591@item target dbug @var{dev}
10592dBUG ROM monitor for Motorola ColdFire.
10593
10594@kindex target est
10595@item target est @var{dev}
10596EST-300 ICE monitor, running on a CPU32 (M68K) board.
10597
10598@kindex target rom68k
10599@item target rom68k @var{dev}
10600ROM 68K monitor, running on an M68K IDP board.
10601
10602@end table
10603
10604If @value{GDBN} is configured with @code{m68*-ericsson-*}, it will
10605instead have only a single special target command:
10606
10607@table @code
10608
10609@kindex target es1800
10610@item target es1800 @var{dev}
10611ES-1800 emulator for M68K.
10612
10613@end table
10614
10615[context?]
10616
10617@table @code
10618
10619@kindex target rombug
10620@item target rombug @var{dev}
10621ROMBUG ROM monitor for OS/9000.
10622
10623@end table
10624
10625@node M88K
10626@subsection M88K
10627
10628@table @code
10629
10630@kindex target bug
10631@item target bug @var{dev}
10632BUG monitor, running on a MVME187 (m88k) board.
10633
10634@end table
10635
10636@node MIPS Embedded
10637@subsection MIPS Embedded
10638
10639@cindex MIPS boards
10640@value{GDBN} can use the MIPS remote debugging protocol to talk to a
10641MIPS board attached to a serial line. This is available when
10642you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
10643
10644@need 1000
10645Use these @value{GDBN} commands to specify the connection to your target board:
10646
10647@table @code
10648@item target mips @var{port}
10649@kindex target mips @var{port}
10650To run a program on the board, start up @code{@value{GDBP}} with the
10651name of your program as the argument. To connect to the board, use the
10652command @samp{target mips @var{port}}, where @var{port} is the name of
10653the serial port connected to the board. If the program has not already
10654been downloaded to the board, you may use the @code{load} command to
10655download it. You can then use all the usual @value{GDBN} commands.
10656
10657For example, this sequence connects to the target board through a serial
10658port, and loads and runs a program called @var{prog} through the
10659debugger:
10660
10661@example
10662host$ @value{GDBP} @var{prog}
2df3850c
JM
10663@value{GDBN} is free software and @dots{}
10664(@value{GDBP}) target mips /dev/ttyb
10665(@value{GDBP}) load @var{prog}
10666(@value{GDBP}) run
104c1213
JM
10667@end example
10668
10669@item target mips @var{hostname}:@var{portnumber}
10670On some @value{GDBN} host configurations, you can specify a TCP
10671connection (for instance, to a serial line managed by a terminal
10672concentrator) instead of a serial port, using the syntax
10673@samp{@var{hostname}:@var{portnumber}}.
10674
10675@item target pmon @var{port}
10676@kindex target pmon @var{port}
10677PMON ROM monitor.
10678
10679@item target ddb @var{port}
10680@kindex target ddb @var{port}
10681NEC's DDB variant of PMON for Vr4300.
10682
10683@item target lsi @var{port}
10684@kindex target lsi @var{port}
10685LSI variant of PMON.
10686
10687@kindex target r3900
10688@item target r3900 @var{dev}
10689Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
10690
10691@kindex target array
10692@item target array @var{dev}
10693Array Tech LSI33K RAID controller board.
10694
10695@end table
10696
10697
10698@noindent
10699@value{GDBN} also supports these special commands for MIPS targets:
10700
10701@table @code
10702@item set processor @var{args}
10703@itemx show processor
10704@kindex set processor @var{args}
10705@kindex show processor
10706Use the @code{set processor} command to set the type of MIPS
10707processor when you want to access processor-type-specific registers.
10708For example, @code{set processor @var{r3041}} tells @value{GDBN}
10709to use the CPO registers appropriate for the 3041 chip.
10710Use the @code{show processor} command to see what MIPS processor @value{GDBN}
10711is using. Use the @code{info reg} command to see what registers
10712@value{GDBN} is using.
10713
10714@item set mipsfpu double
10715@itemx set mipsfpu single
10716@itemx set mipsfpu none
10717@itemx show mipsfpu
10718@kindex set mipsfpu
10719@kindex show mipsfpu
10720@cindex MIPS remote floating point
10721@cindex floating point, MIPS remote
10722If your target board does not support the MIPS floating point
10723coprocessor, you should use the command @samp{set mipsfpu none} (if you
96a2c332 10724need this, you may wish to put the command in your @value{GDBN} init
104c1213
JM
10725file). This tells @value{GDBN} how to find the return value of
10726functions which return floating point values. It also allows
10727@value{GDBN} to avoid saving the floating point registers when calling
10728functions on the board. If you are using a floating point coprocessor
10729with only single precision floating point support, as on the @sc{r4650}
10730processor, use the command @samp{set mipsfpu single}. The default
10731double precision floating point coprocessor may be selected using
10732@samp{set mipsfpu double}.
10733
10734In previous versions the only choices were double precision or no
10735floating point, so @samp{set mipsfpu on} will select double precision
10736and @samp{set mipsfpu off} will select no floating point.
10737
10738As usual, you can inquire about the @code{mipsfpu} variable with
10739@samp{show mipsfpu}.
10740
10741@item set remotedebug @var{n}
10742@itemx show remotedebug
d4f3574e
SS
10743@kindex set remotedebug@r{, MIPS protocol}
10744@kindex show remotedebug@r{, MIPS protocol}
104c1213
JM
10745@cindex @code{remotedebug}, MIPS protocol
10746@cindex MIPS @code{remotedebug} protocol
10747@c FIXME! For this to be useful, you must know something about the MIPS
10748@c FIXME...protocol. Where is it described?
10749You can see some debugging information about communications with the board
10750by setting the @code{remotedebug} variable. If you set it to @code{1} using
10751@samp{set remotedebug 1}, every packet is displayed. If you set it
10752to @code{2}, every character is displayed. You can check the current value
10753at any time with the command @samp{show remotedebug}.
10754
10755@item set timeout @var{seconds}
10756@itemx set retransmit-timeout @var{seconds}
10757@itemx show timeout
10758@itemx show retransmit-timeout
10759@cindex @code{timeout}, MIPS protocol
10760@cindex @code{retransmit-timeout}, MIPS protocol
10761@kindex set timeout
10762@kindex show timeout
10763@kindex set retransmit-timeout
10764@kindex show retransmit-timeout
10765You can control the timeout used while waiting for a packet, in the MIPS
10766remote protocol, with the @code{set timeout @var{seconds}} command. The
10767default is 5 seconds. Similarly, you can control the timeout used while
10768waiting for an acknowledgement of a packet with the @code{set
10769retransmit-timeout @var{seconds}} command. The default is 3 seconds.
10770You can inspect both values with @code{show timeout} and @code{show
10771retransmit-timeout}. (These commands are @emph{only} available when
10772@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
10773
10774The timeout set by @code{set timeout} does not apply when @value{GDBN}
10775is waiting for your program to stop. In that case, @value{GDBN} waits
10776forever because it has no way of knowing how long the program is going
10777to run before stopping.
10778@end table
10779
10780@node PowerPC
10781@subsection PowerPC
10782
10783@table @code
10784
10785@kindex target dink32
10786@item target dink32 @var{dev}
10787DINK32 ROM monitor.
10788
10789@kindex target ppcbug
10790@item target ppcbug @var{dev}
10791@kindex target ppcbug1
10792@item target ppcbug1 @var{dev}
10793PPCBUG ROM monitor for PowerPC.
10794
10795@kindex target sds
10796@item target sds @var{dev}
10797SDS monitor, running on a PowerPC board (such as Motorola's ADS).
10798
10799@end table
10800
10801@node PA
10802@subsection HP PA Embedded
10803
10804@table @code
10805
10806@kindex target op50n
10807@item target op50n @var{dev}
10808OP50N monitor, running on an OKI HPPA board.
10809
10810@kindex target w89k
10811@item target w89k @var{dev}
10812W89K monitor, running on a Winbond HPPA board.
10813
10814@end table
10815
10816@node SH
10817@subsection Hitachi SH
10818
10819@table @code
10820
d4f3574e 10821@kindex target hms@r{, with Hitachi SH}
104c1213
JM
10822@item target hms @var{dev}
10823A Hitachi SH board attached via serial line to your host. Use special
10824commands @code{device} and @code{speed} to control the serial line and
10825the communications speed used.
10826
d4f3574e 10827@kindex target e7000@r{, with Hitachi SH}
104c1213
JM
10828@item target e7000 @var{dev}
10829E7000 emulator for Hitachi SH.
10830
d4f3574e
SS
10831@kindex target sh3@r{, with SH}
10832@kindex target sh3e@r{, with SH}
104c1213
JM
10833@item target sh3 @var{dev}
10834@item target sh3e @var{dev}
10835Hitachi SH-3 and SH-3E target systems.
10836
10837@end table
10838
10839@node Sparclet
10840@subsection Tsqware Sparclet
10841
10842@cindex Sparclet
10843
10844@value{GDBN} enables developers to debug tasks running on
10845Sparclet targets from a Unix host.
10846@value{GDBN} uses code that runs on
10847both the Unix host and on the Sparclet target. The program
d4f3574e 10848@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213
JM
10849
10850@table @code
10851@item timeout @var{args}
10852@kindex remotetimeout
d4f3574e 10853@value{GDBN} supports the option @code{remotetimeout}.
104c1213
JM
10854This option is set by the user, and @var{args} represents the number of
10855seconds @value{GDBN} waits for responses.
10856@end table
10857
10858@kindex Compiling
d4f3574e
SS
10859When compiling for debugging, include the options @samp{-g} to get debug
10860information and @samp{-Ttext} to relocate the program to where you wish to
10861load it on the target. You may also want to add the options @samp{-n} or
10862@samp{-N} in order to reduce the size of the sections. Example:
104c1213
JM
10863
10864@example
10865sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
10866@end example
10867
d4f3574e 10868You can use @code{objdump} to verify that the addresses are what you intended:
104c1213
JM
10869
10870@example
10871sparclet-aout-objdump --headers --syms prog
10872@end example
10873
10874@kindex Running
10875Once you have set
10876your Unix execution search path to find @value{GDBN}, you are ready to
d4f3574e 10877run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
104c1213
JM
10878(or @code{sparclet-aout-gdb}, depending on your installation).
10879
10880@value{GDBN} comes up showing the prompt:
10881
10882@example
10883(gdbslet)
10884@end example
10885
10886@menu
10887* Sparclet File:: Setting the file to debug
10888* Sparclet Connection:: Connecting to Sparclet
10889* Sparclet Download:: Sparclet download
10890* Sparclet Execution:: Running and debugging
10891@end menu
10892
10893@node Sparclet File
10894@subsubsection Setting file to debug
10895
10896The @value{GDBN} command @code{file} lets you choose with program to debug.
10897
10898@example
10899(gdbslet) file prog
10900@end example
10901
10902@need 1000
10903@value{GDBN} then attempts to read the symbol table of @file{prog}.
10904@value{GDBN} locates
10905the file by searching the directories listed in the command search
10906path.
10907If the file was compiled with debug information (option "-g"), source
10908files will be searched as well.
10909@value{GDBN} locates
10910the source files by searching the directories listed in the directory search
10911path (@pxref{Environment, ,Your program's environment}).
10912If it fails
10913to find a file, it displays a message such as:
10914
10915@example
10916prog: No such file or directory.
10917@end example
10918
10919When this happens, add the appropriate directories to the search paths with
10920the @value{GDBN} commands @code{path} and @code{dir}, and execute the
10921@code{target} command again.
10922
10923@node Sparclet Connection
10924@subsubsection Connecting to Sparclet
10925
10926The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
10927To connect to a target on serial port ``@code{ttya}'', type:
10928
10929@example
10930(gdbslet) target sparclet /dev/ttya
10931Remote target sparclet connected to /dev/ttya
10932main () at ../prog.c:3
10933@end example
10934
10935@need 750
10936@value{GDBN} displays messages like these:
10937
d4f3574e 10938@example
104c1213 10939Connected to ttya.
d4f3574e 10940@end example
104c1213
JM
10941
10942@node Sparclet Download
10943@subsubsection Sparclet download
10944
10945@cindex download to Sparclet
10946Once connected to the Sparclet target,
10947you can use the @value{GDBN}
10948@code{load} command to download the file from the host to the target.
10949The file name and load offset should be given as arguments to the @code{load}
10950command.
10951Since the file format is aout, the program must be loaded to the starting
d4f3574e 10952address. You can use @code{objdump} to find out what this value is. The load
104c1213
JM
10953offset is an offset which is added to the VMA (virtual memory address)
10954of each of the file's sections.
10955For instance, if the program
10956@file{prog} was linked to text address 0x1201000, with data at 0x12010160
10957and bss at 0x12010170, in @value{GDBN}, type:
10958
10959@example
10960(gdbslet) load prog 0x12010000
10961Loading section .text, size 0xdb0 vma 0x12010000
10962@end example
10963
10964If the code is loaded at a different address then what the program was linked
10965to, you may need to use the @code{section} and @code{add-symbol-file} commands
10966to tell @value{GDBN} where to map the symbol table.
10967
10968@node Sparclet Execution
10969@subsubsection Running and debugging
10970
10971@cindex running and debugging Sparclet programs
10972You can now begin debugging the task using @value{GDBN}'s execution control
10973commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
10974manual for the list of commands.
10975
10976@example
10977(gdbslet) b main
10978Breakpoint 1 at 0x12010000: file prog.c, line 3.
10979(gdbslet) run
10980Starting program: prog
10981Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
109823 char *symarg = 0;
10983(gdbslet) step
109844 char *execarg = "hello!";
10985(gdbslet)
10986@end example
10987
10988@node Sparclite
10989@subsection Fujitsu Sparclite
10990
10991@table @code
10992
10993@kindex target sparclite
10994@item target sparclite @var{dev}
10995Fujitsu sparclite boards, used only for the purpose of loading.
10996You must use an additional command to debug the program.
10997For example: target remote @var{dev} using @value{GDBN} standard
10998remote protocol.
10999
11000@end table
11001
11002@node ST2000
11003@subsection Tandem ST2000
11004
2df3850c 11005@value{GDBN} may be used with a Tandem ST2000 phone switch, running Tandem's
104c1213
JM
11006STDBUG protocol.
11007
11008To connect your ST2000 to the host system, see the manufacturer's
11009manual. Once the ST2000 is physically attached, you can run:
11010
11011@example
11012target st2000 @var{dev} @var{speed}
11013@end example
11014
11015@noindent
11016to establish it as your debugging environment. @var{dev} is normally
11017the name of a serial device, such as @file{/dev/ttya}, connected to the
11018ST2000 via a serial line. You can instead specify @var{dev} as a TCP
11019connection (for example, to a serial line attached via a terminal
11020concentrator) using the syntax @code{@var{hostname}:@var{portnumber}}.
11021
11022The @code{load} and @code{attach} commands are @emph{not} defined for
11023this target; you must load your program into the ST2000 as you normally
11024would for standalone operation. @value{GDBN} reads debugging information
11025(such as symbols) from a separate, debugging version of the program
11026available on your host computer.
11027@c FIXME!! This is terribly vague; what little content is here is
11028@c basically hearsay.
11029
11030@cindex ST2000 auxiliary commands
11031These auxiliary @value{GDBN} commands are available to help you with the ST2000
11032environment:
11033
11034@table @code
11035@item st2000 @var{command}
11036@kindex st2000 @var{cmd}
11037@cindex STDBUG commands (ST2000)
11038@cindex commands to STDBUG (ST2000)
11039Send a @var{command} to the STDBUG monitor. See the manufacturer's
11040manual for available commands.
11041
11042@item connect
11043@cindex connect (to STDBUG)
11044Connect the controlling terminal to the STDBUG command monitor. When
11045you are done interacting with STDBUG, typing either of two character
11046sequences gets you back to the @value{GDBN} command prompt:
11047@kbd{@key{RET}~.} (Return, followed by tilde and period) or
11048@kbd{@key{RET}~@key{C-d}} (Return, followed by tilde and control-D).
11049@end table
11050
11051@node Z8000
11052@subsection Zilog Z8000
11053
11054@cindex Z8000
11055@cindex simulator, Z8000
11056@cindex Zilog Z8000 simulator
11057
11058When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
11059a Z8000 simulator.
11060
11061For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
11062unsegmented variant of the Z8000 architecture) or the Z8001 (the
11063segmented variant). The simulator recognizes which architecture is
11064appropriate by inspecting the object code.
11065
11066@table @code
11067@item target sim @var{args}
11068@kindex sim
d4f3574e 11069@kindex target sim@r{, with Z8000}
104c1213
JM
11070Debug programs on a simulated CPU. If the simulator supports setup
11071options, specify them via @var{args}.
11072@end table
11073
11074@noindent
11075After specifying this target, you can debug programs for the simulated
11076CPU in the same style as programs for your host computer; use the
11077@code{file} command to load a new program image, the @code{run} command
11078to run your program, and so on.
11079
d4f3574e
SS
11080As well as making available all the usual machine registers
11081(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
11082additional items of information as specially named registers:
104c1213
JM
11083
11084@table @code
11085
11086@item cycles
11087Counts clock-ticks in the simulator.
11088
11089@item insts
11090Counts instructions run in the simulator.
11091
11092@item time
11093Execution time in 60ths of a second.
11094
11095@end table
11096
11097You can refer to these values in @value{GDBN} expressions with the usual
11098conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
11099conditional breakpoint that suspends only after at least 5000
11100simulated clock ticks.
11101
11102@node Architectures
11103@section Architectures
11104
11105This section describes characteristics of architectures that affect
2df3850c 11106all uses of @value{GDBN} with the architecture, both native and cross.
104c1213
JM
11107
11108@menu
11109* A29K::
11110* Alpha::
11111* MIPS::
11112@end menu
11113
11114@node A29K
11115@subsection A29K
11116
11117@table @code
11118
11119@kindex set rstack_high_address
11120@cindex AMD 29K register stack
11121@cindex register stack, AMD29K
11122@item set rstack_high_address @var{address}
11123On AMD 29000 family processors, registers are saved in a separate
d4f3574e 11124@dfn{register stack}. There is no way for @value{GDBN} to determine the
104c1213
JM
11125extent of this stack. Normally, @value{GDBN} just assumes that the
11126stack is ``large enough''. This may result in @value{GDBN} referencing
11127memory locations that do not exist. If necessary, you can get around
11128this problem by specifying the ending address of the register stack with
11129the @code{set rstack_high_address} command. The argument should be an
11130address, which you probably want to precede with @samp{0x} to specify in
11131hexadecimal.
11132
11133@kindex show rstack_high_address
11134@item show rstack_high_address
11135Display the current limit of the register stack, on AMD 29000 family
11136processors.
11137
11138@end table
11139
11140@node Alpha
11141@subsection Alpha
11142
11143See the following section.
11144
11145@node MIPS
11146@subsection MIPS
11147
11148@cindex stack on Alpha
11149@cindex stack on MIPS
11150@cindex Alpha stack
11151@cindex MIPS stack
11152Alpha- and MIPS-based computers use an unusual stack frame, which
11153sometimes requires @value{GDBN} to search backward in the object code to
11154find the beginning of a function.
11155
11156@cindex response time, MIPS debugging
11157To improve response time (especially for embedded applications, where
11158@value{GDBN} may be restricted to a slow serial line for this search)
11159you may want to limit the size of this search, using one of these
11160commands:
11161
11162@table @code
11163@cindex @code{heuristic-fence-post} (Alpha,MIPS)
11164@item set heuristic-fence-post @var{limit}
11165Restrict @value{GDBN} to examining at most @var{limit} bytes in its
11166search for the beginning of a function. A value of @var{0} (the
11167default) means there is no limit. However, except for @var{0}, the
11168larger the limit the more bytes @code{heuristic-fence-post} must search
11169and therefore the longer it takes to run.
11170
11171@item show heuristic-fence-post
11172Display the current limit.
11173@end table
11174
11175@noindent
11176These commands are available @emph{only} when @value{GDBN} is configured
11177for debugging programs on Alpha or MIPS processors.
11178
11179
c906108c
SS
11180@node Controlling GDB
11181@chapter Controlling @value{GDBN}
11182
53a5351d
JM
11183You can alter the way @value{GDBN} interacts with you by using the
11184@code{set} command. For commands controlling how @value{GDBN} displays
d4f3574e 11185data, see @ref{Print Settings, ,Print settings}. Other settings are
53a5351d 11186described here.
c906108c
SS
11187
11188@menu
11189* Prompt:: Prompt
11190* Editing:: Command editing
11191* History:: Command history
11192* Screen Size:: Screen size
11193* Numbers:: Numbers
11194* Messages/Warnings:: Optional warnings and messages
11195@end menu
11196
53a5351d 11197@node Prompt
c906108c
SS
11198@section Prompt
11199
11200@cindex prompt
11201
11202@value{GDBN} indicates its readiness to read a command by printing a string
11203called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
11204can change the prompt string with the @code{set prompt} command. For
11205instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
11206the prompt in one of the @value{GDBN} sessions so that you can always tell
11207which one you are talking to.
11208
d4f3574e 11209@emph{Note:} @code{set prompt} does not add a space for you after the
c906108c
SS
11210prompt you set. This allows you to set a prompt which ends in a space
11211or a prompt that does not.
11212
11213@table @code
11214@kindex set prompt
11215@item set prompt @var{newprompt}
11216Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
11217
11218@kindex show prompt
11219@item show prompt
11220Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
11221@end table
11222
53a5351d 11223@node Editing
c906108c
SS
11224@section Command editing
11225@cindex readline
11226@cindex command line editing
11227
11228@value{GDBN} reads its input commands via the @dfn{readline} interface. This
11229@sc{gnu} library provides consistent behavior for programs which provide a
11230command line interface to the user. Advantages are @sc{gnu} Emacs-style
11231or @dfn{vi}-style inline editing of commands, @code{csh}-like history
11232substitution, and a storage and recall of command history across
11233debugging sessions.
11234
11235You may control the behavior of command line editing in @value{GDBN} with the
11236command @code{set}.
11237
11238@table @code
11239@kindex set editing
11240@cindex editing
11241@item set editing
11242@itemx set editing on
11243Enable command line editing (enabled by default).
11244
11245@item set editing off
11246Disable command line editing.
11247
11248@kindex show editing
11249@item show editing
11250Show whether command line editing is enabled.
11251@end table
11252
53a5351d 11253@node History
c906108c
SS
11254@section Command history
11255
11256@value{GDBN} can keep track of the commands you type during your
11257debugging sessions, so that you can be certain of precisely what
11258happened. Use these commands to manage the @value{GDBN} command
11259history facility.
11260
11261@table @code
11262@cindex history substitution
11263@cindex history file
11264@kindex set history filename
11265@kindex GDBHISTFILE
11266@item set history filename @var{fname}
11267Set the name of the @value{GDBN} command history file to @var{fname}.
11268This is the file where @value{GDBN} reads an initial command history
11269list, and where it writes the command history from this session when it
11270exits. You can access this list through history expansion or through
11271the history command editing characters listed below. This file defaults
11272to the value of the environment variable @code{GDBHISTFILE}, or to
d4f3574e
SS
11273@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
11274is not set.
c906108c
SS
11275
11276@cindex history save
11277@kindex set history save
11278@item set history save
11279@itemx set history save on
11280Record command history in a file, whose name may be specified with the
11281@code{set history filename} command. By default, this option is disabled.
11282
11283@item set history save off
11284Stop recording command history in a file.
11285
11286@cindex history size
11287@kindex set history size
11288@item set history size @var{size}
11289Set the number of commands which @value{GDBN} keeps in its history list.
11290This defaults to the value of the environment variable
11291@code{HISTSIZE}, or to 256 if this variable is not set.
11292@end table
11293
11294@cindex history expansion
11295History expansion assigns special meaning to the character @kbd{!}.
11296@ifset have-readline-appendices
11297@xref{Event Designators}.
11298@end ifset
11299
11300Since @kbd{!} is also the logical not operator in C, history expansion
11301is off by default. If you decide to enable history expansion with the
11302@code{set history expansion on} command, you may sometimes need to
11303follow @kbd{!} (when it is used as logical not, in an expression) with
11304a space or a tab to prevent it from being expanded. The readline
11305history facilities do not attempt substitution on the strings
11306@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
11307
11308The commands to control history expansion are:
11309
11310@table @code
11311@kindex set history expansion
11312@item set history expansion on
11313@itemx set history expansion
11314Enable history expansion. History expansion is off by default.
11315
11316@item set history expansion off
11317Disable history expansion.
11318
11319The readline code comes with more complete documentation of
11320editing and history expansion features. Users unfamiliar with @sc{gnu} Emacs
11321or @code{vi} may wish to read it.
11322@ifset have-readline-appendices
11323@xref{Command Line Editing}.
11324@end ifset
11325
11326@c @group
11327@kindex show history
11328@item show history
11329@itemx show history filename
11330@itemx show history save
11331@itemx show history size
11332@itemx show history expansion
11333These commands display the state of the @value{GDBN} history parameters.
11334@code{show history} by itself displays all four states.
11335@c @end group
11336@end table
11337
11338@table @code
11339@kindex show commands
11340@item show commands
11341Display the last ten commands in the command history.
11342
11343@item show commands @var{n}
11344Print ten commands centered on command number @var{n}.
11345
11346@item show commands +
11347Print ten commands just after the commands last printed.
11348@end table
11349
53a5351d 11350@node Screen Size
c906108c
SS
11351@section Screen size
11352@cindex size of screen
11353@cindex pauses in output
11354
11355Certain commands to @value{GDBN} may produce large amounts of
11356information output to the screen. To help you read all of it,
11357@value{GDBN} pauses and asks you for input at the end of each page of
11358output. Type @key{RET} when you want to continue the output, or @kbd{q}
11359to discard the remaining output. Also, the screen width setting
11360determines when to wrap lines of output. Depending on what is being
11361printed, @value{GDBN} tries to break the line at a readable place,
11362rather than simply letting it overflow onto the following line.
11363
d4f3574e
SS
11364Normally @value{GDBN} knows the size of the screen from the terminal
11365driver software. For example, on Unix @value{GDBN} uses the termcap data base
c906108c 11366together with the value of the @code{TERM} environment variable and the
d4f3574e 11367@code{stty rows} and @code{stty cols} settings. If this is not correct,
c906108c
SS
11368you can override it with the @code{set height} and @code{set
11369width} commands:
11370
11371@table @code
11372@kindex set height
11373@kindex set width
11374@kindex show width
11375@kindex show height
11376@item set height @var{lpp}
11377@itemx show height
11378@itemx set width @var{cpl}
11379@itemx show width
11380These @code{set} commands specify a screen height of @var{lpp} lines and
11381a screen width of @var{cpl} characters. The associated @code{show}
11382commands display the current settings.
11383
11384If you specify a height of zero lines, @value{GDBN} does not pause during
11385output no matter how long the output is. This is useful if output is to a
11386file or to an editor buffer.
11387
11388Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
11389from wrapping its output.
11390@end table
11391
53a5351d 11392@node Numbers
c906108c
SS
11393@section Numbers
11394@cindex number representation
11395@cindex entering numbers
11396
2df3850c
JM
11397You can always enter numbers in octal, decimal, or hexadecimal in
11398@value{GDBN} by the usual conventions: octal numbers begin with
11399@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
11400begin with @samp{0x}. Numbers that begin with none of these are, by
11401default, entered in base 10; likewise, the default display for
11402numbers---when no particular format is specified---is base 10. You can
11403change the default base for both input and output with the @code{set
11404radix} command.
c906108c
SS
11405
11406@table @code
11407@kindex set input-radix
11408@item set input-radix @var{base}
11409Set the default base for numeric input. Supported choices
11410for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
11411specified either unambiguously or using the current default radix; for
11412example, any of
11413
11414@smallexample
11415set radix 012
11416set radix 10.
11417set radix 0xa
11418@end smallexample
11419
11420@noindent
11421sets the base to decimal. On the other hand, @samp{set radix 10}
11422leaves the radix unchanged no matter what it was.
11423
11424@kindex set output-radix
11425@item set output-radix @var{base}
11426Set the default base for numeric display. Supported choices
11427for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
11428specified either unambiguously or using the current default radix.
11429
11430@kindex show input-radix
11431@item show input-radix
11432Display the current default base for numeric input.
11433
11434@kindex show output-radix
11435@item show output-radix
11436Display the current default base for numeric display.
11437@end table
11438
53a5351d 11439@node Messages/Warnings
c906108c
SS
11440@section Optional warnings and messages
11441
2df3850c
JM
11442By default, @value{GDBN} is silent about its inner workings. If you are
11443running on a slow machine, you may want to use the @code{set verbose}
11444command. This makes @value{GDBN} tell you when it does a lengthy
11445internal operation, so you will not think it has crashed.
c906108c
SS
11446
11447Currently, the messages controlled by @code{set verbose} are those
11448which announce that the symbol table for a source file is being read;
11449see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
11450
11451@table @code
11452@kindex set verbose
11453@item set verbose on
11454Enables @value{GDBN} output of certain informational messages.
11455
11456@item set verbose off
11457Disables @value{GDBN} output of certain informational messages.
11458
11459@kindex show verbose
11460@item show verbose
11461Displays whether @code{set verbose} is on or off.
11462@end table
11463
2df3850c
JM
11464By default, if @value{GDBN} encounters bugs in the symbol table of an
11465object file, it is silent; but if you are debugging a compiler, you may
11466find this information useful (@pxref{Symbol Errors, ,Errors reading
11467symbol files}).
c906108c
SS
11468
11469@table @code
2df3850c 11470
c906108c
SS
11471@kindex set complaints
11472@item set complaints @var{limit}
2df3850c
JM
11473Permits @value{GDBN} to output @var{limit} complaints about each type of
11474unusual symbols before becoming silent about the problem. Set
11475@var{limit} to zero to suppress all complaints; set it to a large number
11476to prevent complaints from being suppressed.
c906108c
SS
11477
11478@kindex show complaints
11479@item show complaints
11480Displays how many symbol complaints @value{GDBN} is permitted to produce.
2df3850c 11481
c906108c
SS
11482@end table
11483
11484By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
11485lot of stupid questions to confirm certain commands. For example, if
11486you try to run a program which is already running:
11487
11488@example
11489(@value{GDBP}) run
11490The program being debugged has been started already.
11491Start it from the beginning? (y or n)
11492@end example
11493
11494If you are willing to unflinchingly face the consequences of your own
11495commands, you can disable this ``feature'':
11496
11497@table @code
2df3850c 11498
c906108c
SS
11499@kindex set confirm
11500@cindex flinching
11501@cindex confirmation
11502@cindex stupid questions
11503@item set confirm off
11504Disables confirmation requests.
11505
11506@item set confirm on
11507Enables confirmation requests (the default).
11508
11509@kindex show confirm
11510@item show confirm
11511Displays state of confirmation requests.
2df3850c 11512
c906108c
SS
11513@end table
11514
53a5351d 11515@node Sequences
c906108c
SS
11516@chapter Canned Sequences of Commands
11517
11518Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
2df3850c
JM
11519command lists}), @value{GDBN} provides two ways to store sequences of
11520commands for execution as a unit: user-defined commands and command
11521files.
c906108c
SS
11522
11523@menu
11524* Define:: User-defined commands
11525* Hooks:: User-defined command hooks
11526* Command Files:: Command files
11527* Output:: Commands for controlled output
11528@end menu
11529
53a5351d 11530@node Define
c906108c
SS
11531@section User-defined commands
11532
11533@cindex user-defined command
2df3850c
JM
11534A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
11535which you assign a new name as a command. This is done with the
11536@code{define} command. User commands may accept up to 10 arguments
11537separated by whitespace. Arguments are accessed within the user command
11538via @var{$arg0@dots{}$arg9}. A trivial example:
c906108c
SS
11539
11540@smallexample
11541define adder
11542 print $arg0 + $arg1 + $arg2
11543@end smallexample
11544
d4f3574e
SS
11545@noindent
11546To execute the command use:
c906108c
SS
11547
11548@smallexample
11549adder 1 2 3
11550@end smallexample
11551
d4f3574e
SS
11552@noindent
11553This defines the command @code{adder}, which prints the sum of
c906108c
SS
11554its three arguments. Note the arguments are text substitutions, so they may
11555reference variables, use complex expressions, or even perform inferior
11556functions calls.
11557
11558@table @code
2df3850c 11559
c906108c
SS
11560@kindex define
11561@item define @var{commandname}
11562Define a command named @var{commandname}. If there is already a command
11563by that name, you are asked to confirm that you want to redefine it.
11564
11565The definition of the command is made up of other @value{GDBN} command lines,
11566which are given following the @code{define} command. The end of these
11567commands is marked by a line containing @code{end}.
11568
11569@kindex if
11570@kindex else
11571@item if
11572Takes a single argument, which is an expression to evaluate.
11573It is followed by a series of commands that are executed
11574only if the expression is true (nonzero).
11575There can then optionally be a line @code{else}, followed
11576by a series of commands that are only executed if the expression
11577was false. The end of the list is marked by a line containing @code{end}.
11578
11579@kindex while
11580@item while
11581The syntax is similar to @code{if}: the command takes a single argument,
11582which is an expression to evaluate, and must be followed by the commands to
11583execute, one per line, terminated by an @code{end}.
11584The commands are executed repeatedly as long as the expression
11585evaluates to true.
11586
11587@kindex document
11588@item document @var{commandname}
11589Document the user-defined command @var{commandname}, so that it can be
11590accessed by @code{help}. The command @var{commandname} must already be
11591defined. This command reads lines of documentation just as @code{define}
11592reads the lines of the command definition, ending with @code{end}.
11593After the @code{document} command is finished, @code{help} on command
11594@var{commandname} displays the documentation you have written.
11595
11596You may use the @code{document} command again to change the
11597documentation of a command. Redefining the command with @code{define}
11598does not change the documentation.
11599
11600@kindex help user-defined
11601@item help user-defined
11602List all user-defined commands, with the first line of the documentation
11603(if any) for each.
11604
11605@kindex show user
11606@item show user
11607@itemx show user @var{commandname}
2df3850c
JM
11608Display the @value{GDBN} commands used to define @var{commandname} (but
11609not its documentation). If no @var{commandname} is given, display the
c906108c 11610definitions for all user-defined commands.
2df3850c 11611
c906108c
SS
11612@end table
11613
11614When user-defined commands are executed, the
11615commands of the definition are not printed. An error in any command
11616stops execution of the user-defined command.
11617
11618If used interactively, commands that would ask for confirmation proceed
11619without asking when used inside a user-defined command. Many @value{GDBN}
11620commands that normally print messages to say what they are doing omit the
11621messages when used in a user-defined command.
11622
53a5351d 11623@node Hooks
c906108c 11624@section User-defined command hooks
d4f3574e
SS
11625@cindex command hooks
11626@cindex hooks, for commands
c906108c
SS
11627
11628You may define @emph{hooks}, which are a special kind of user-defined
11629command. Whenever you run the command @samp{foo}, if the user-defined
11630command @samp{hook-foo} exists, it is executed (with no arguments)
11631before that command.
11632
d4f3574e 11633@kindex stop@r{, a pseudo-command}
c906108c
SS
11634In addition, a pseudo-command, @samp{stop} exists. Defining
11635(@samp{hook-stop}) makes the associated commands execute every time
11636execution stops in your program: before breakpoint commands are run,
11637displays are printed, or the stack frame is printed.
11638
c906108c
SS
11639For example, to ignore @code{SIGALRM} signals while
11640single-stepping, but treat them normally during normal execution,
11641you could define:
11642
11643@example
11644define hook-stop
11645handle SIGALRM nopass
11646end
11647
11648define hook-run
11649handle SIGALRM pass
11650end
11651
11652define hook-continue
11653handle SIGLARM pass
11654end
11655@end example
c906108c
SS
11656
11657You can define a hook for any single-word command in @value{GDBN}, but
11658not for command aliases; you should define a hook for the basic command
11659name, e.g. @code{backtrace} rather than @code{bt}.
11660@c FIXME! So how does Joe User discover whether a command is an alias
11661@c or not?
11662If an error occurs during the execution of your hook, execution of
11663@value{GDBN} commands stops and @value{GDBN} issues a prompt
11664(before the command that you actually typed had a chance to run).
11665
11666If you try to define a hook which does not match any known command, you
11667get a warning from the @code{define} command.
11668
53a5351d 11669@node Command Files
c906108c
SS
11670@section Command files
11671
11672@cindex command files
11673A command file for @value{GDBN} is a file of lines that are @value{GDBN}
11674commands. Comments (lines starting with @kbd{#}) may also be included.
11675An empty line in a command file does nothing; it does not mean to repeat
11676the last command, as it would from the terminal.
11677
11678@cindex init file
11679@cindex @file{.gdbinit}
d4f3574e 11680@cindex @file{gdb.ini}
c906108c
SS
11681When you start @value{GDBN}, it automatically executes commands from its
11682@dfn{init files}. These are files named @file{.gdbinit} on Unix, or
11683@file{gdb.ini} on DOS/Windows. @value{GDBN} reads the init file (if
d4f3574e 11684any) in your home directory@footnote{On DOS/Windows systems, the home
2df3850c
JM
11685directory is the one pointed to by the @code{HOME} environment
11686variable.}, then processes command line options and operands, and then
11687reads the init file (if any) in the current working directory. This is
11688so the init file in your home directory can set options (such as
11689@code{set complaints}) which affect the processing of the command line
11690options and operands. The init files are not executed if you use the
11691@samp{-nx} option; @pxref{Mode Options, ,Choosing modes}.
c906108c 11692
c906108c
SS
11693@cindex init file name
11694On some configurations of @value{GDBN}, the init file is known by a
11695different name (these are typically environments where a specialized
11696form of @value{GDBN} may need to coexist with other forms, hence a
11697different name for the specialized version's init file). These are the
11698environments with special init file names:
11699
11700@kindex .vxgdbinit
11701@itemize @bullet
11702@item
11703VxWorks (Wind River Systems real-time OS): @samp{.vxgdbinit}
11704
11705@kindex .os68gdbinit
11706@item
11707OS68K (Enea Data Systems real-time OS): @samp{.os68gdbinit}
11708
11709@kindex .esgdbinit
11710@item
11711ES-1800 (Ericsson Telecom AB M68000 emulator): @samp{.esgdbinit}
11712@end itemize
c906108c
SS
11713
11714You can also request the execution of a command file with the
11715@code{source} command:
11716
11717@table @code
11718@kindex source
11719@item source @var{filename}
11720Execute the command file @var{filename}.
11721@end table
11722
11723The lines in a command file are executed sequentially. They are not
11724printed as they are executed. An error in any command terminates execution
11725of the command file.
11726
11727Commands that would ask for confirmation if used interactively proceed
11728without asking when used in a command file. Many @value{GDBN} commands that
11729normally print messages to say what they are doing omit the messages
11730when called from command files.
11731
53a5351d 11732@node Output
c906108c
SS
11733@section Commands for controlled output
11734
11735During the execution of a command file or a user-defined command, normal
11736@value{GDBN} output is suppressed; the only output that appears is what is
11737explicitly printed by the commands in the definition. This section
11738describes three commands useful for generating exactly the output you
11739want.
11740
11741@table @code
11742@kindex echo
11743@item echo @var{text}
11744@c I do not consider backslash-space a standard C escape sequence
11745@c because it is not in ANSI.
11746Print @var{text}. Nonprinting characters can be included in
11747@var{text} using C escape sequences, such as @samp{\n} to print a
11748newline. @strong{No newline is printed unless you specify one.}
11749In addition to the standard C escape sequences, a backslash followed
11750by a space stands for a space. This is useful for displaying a
11751string with spaces at the beginning or the end, since leading and
11752trailing spaces are otherwise trimmed from all arguments.
11753To print @samp{@w{ }and foo =@w{ }}, use the command
11754@samp{echo \@w{ }and foo = \@w{ }}.
11755
11756A backslash at the end of @var{text} can be used, as in C, to continue
11757the command onto subsequent lines. For example,
11758
11759@example
11760echo This is some text\n\
11761which is continued\n\
11762onto several lines.\n
11763@end example
11764
11765produces the same output as
11766
11767@example
11768echo This is some text\n
11769echo which is continued\n
11770echo onto several lines.\n
11771@end example
11772
11773@kindex output
11774@item output @var{expression}
11775Print the value of @var{expression} and nothing but that value: no
11776newlines, no @samp{$@var{nn} = }. The value is not entered in the
11777value history either. @xref{Expressions, ,Expressions}, for more information
11778on expressions.
11779
11780@item output/@var{fmt} @var{expression}
11781Print the value of @var{expression} in format @var{fmt}. You can use
11782the same formats as for @code{print}. @xref{Output Formats,,Output
11783formats}, for more information.
11784
11785@kindex printf
11786@item printf @var{string}, @var{expressions}@dots{}
11787Print the values of the @var{expressions} under the control of
11788@var{string}. The @var{expressions} are separated by commas and may be
11789either numbers or pointers. Their values are printed as specified by
11790@var{string}, exactly as if your program were to execute the C
11791subroutine
d4f3574e
SS
11792@c FIXME: the above implies that at least all ANSI C formats are
11793@c supported, but it isn't true: %E and %G don't work (or so it seems).
11794@c Either this is a bug, or the manual should document what formats are
11795@c supported.
c906108c
SS
11796
11797@example
11798printf (@var{string}, @var{expressions}@dots{});
11799@end example
11800
11801For example, you can print two values in hex like this:
11802
11803@smallexample
11804printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
11805@end smallexample
11806
11807The only backslash-escape sequences that you can use in the format
11808string are the simple ones that consist of backslash followed by a
11809letter.
11810@end table
11811
53a5351d 11812@node Emacs
c906108c
SS
11813@chapter Using @value{GDBN} under @sc{gnu} Emacs
11814
11815@cindex Emacs
11816@cindex @sc{gnu} Emacs
11817A special interface allows you to use @sc{gnu} Emacs to view (and
11818edit) the source files for the program you are debugging with
11819@value{GDBN}.
11820
11821To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
11822executable file you want to debug as an argument. This command starts
11823@value{GDBN} as a subprocess of Emacs, with input and output through a newly
11824created Emacs buffer.
53a5351d 11825@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c
SS
11826
11827Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
11828things:
11829
11830@itemize @bullet
11831@item
11832All ``terminal'' input and output goes through the Emacs buffer.
11833@end itemize
11834
11835This applies both to @value{GDBN} commands and their output, and to the input
11836and output done by the program you are debugging.
11837
11838This is useful because it means that you can copy the text of previous
11839commands and input them again; you can even use parts of the output
11840in this way.
11841
11842All the facilities of Emacs' Shell mode are available for interacting
11843with your program. In particular, you can send signals the usual
11844way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
11845stop.
11846
11847@itemize @bullet
11848@item
11849@value{GDBN} displays source code through Emacs.
11850@end itemize
11851
11852Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
11853source file for that frame and puts an arrow (@samp{=>}) at the
11854left margin of the current line. Emacs uses a separate buffer for
11855source display, and splits the screen to show both your @value{GDBN} session
11856and the source.
11857
11858Explicit @value{GDBN} @code{list} or search commands still produce output as
11859usual, but you probably have no reason to use them from Emacs.
11860
11861@quotation
11862@emph{Warning:} If the directory where your program resides is not your
11863current directory, it can be easy to confuse Emacs about the location of
11864the source files, in which case the auxiliary display buffer does not
11865appear to show your source. @value{GDBN} can find programs by searching your
11866environment's @code{PATH} variable, so the @value{GDBN} input and output
11867session proceeds normally; but Emacs does not get enough information
11868back from @value{GDBN} to locate the source files in this situation. To
11869avoid this problem, either start @value{GDBN} mode from the directory where
11870your program resides, or specify an absolute file name when prompted for the
11871@kbd{M-x gdb} argument.
11872
11873A similar confusion can result if you use the @value{GDBN} @code{file} command to
11874switch to debugging a program in some other location, from an existing
11875@value{GDBN} buffer in Emacs.
11876@end quotation
11877
11878By default, @kbd{M-x gdb} calls the program called @file{gdb}. If
11879you need to call @value{GDBN} by a different name (for example, if you keep
11880several configurations around, with different names) you can set the
11881Emacs variable @code{gdb-command-name}; for example,
11882
11883@example
11884(setq gdb-command-name "mygdb")
11885@end example
11886
11887@noindent
d4f3574e 11888(preceded by @kbd{M-:} or @kbd{ESC :}, or typed in the @code{*scratch*} buffer, or
c906108c
SS
11889in your @file{.emacs} file) makes Emacs call the program named
11890``@code{mygdb}'' instead.
11891
11892In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
11893addition to the standard Shell mode commands:
11894
11895@table @kbd
11896@item C-h m
11897Describe the features of Emacs' @value{GDBN} Mode.
11898
11899@item M-s
11900Execute to another source line, like the @value{GDBN} @code{step} command; also
11901update the display window to show the current file and location.
11902
11903@item M-n
11904Execute to next source line in this function, skipping all function
11905calls, like the @value{GDBN} @code{next} command. Then update the display window
11906to show the current file and location.
11907
11908@item M-i
11909Execute one instruction, like the @value{GDBN} @code{stepi} command; update
11910display window accordingly.
11911
11912@item M-x gdb-nexti
11913Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
11914display window accordingly.
11915
11916@item C-c C-f
11917Execute until exit from the selected stack frame, like the @value{GDBN}
11918@code{finish} command.
11919
11920@item M-c
11921Continue execution of your program, like the @value{GDBN} @code{continue}
11922command.
11923
11924@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
11925
11926@item M-u
11927Go up the number of frames indicated by the numeric argument
11928(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
11929like the @value{GDBN} @code{up} command.
11930
11931@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
11932
11933@item M-d
11934Go down the number of frames indicated by the numeric argument, like the
11935@value{GDBN} @code{down} command.
11936
11937@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
11938
11939@item C-x &
11940Read the number where the cursor is positioned, and insert it at the end
11941of the @value{GDBN} I/O buffer. For example, if you wish to disassemble code
11942around an address that was displayed earlier, type @kbd{disassemble};
11943then move the cursor to the address display, and pick up the
11944argument for @code{disassemble} by typing @kbd{C-x &}.
11945
11946You can customize this further by defining elements of the list
11947@code{gdb-print-command}; once it is defined, you can format or
11948otherwise process numbers picked up by @kbd{C-x &} before they are
11949inserted. A numeric argument to @kbd{C-x &} indicates that you
11950wish special formatting, and also acts as an index to pick an element of the
11951list. If the list element is a string, the number to be inserted is
11952formatted using the Emacs function @code{format}; otherwise the number
11953is passed as an argument to the corresponding list element.
11954@end table
11955
11956In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
11957tells @value{GDBN} to set a breakpoint on the source line point is on.
11958
11959If you accidentally delete the source-display buffer, an easy way to get
11960it back is to type the command @code{f} in the @value{GDBN} buffer, to
11961request a frame display; when you run under Emacs, this recreates
11962the source buffer if necessary to show you the context of the current
11963frame.
11964
11965The source files displayed in Emacs are in ordinary Emacs buffers
11966which are visiting the source files in the usual way. You can edit
11967the files with these buffers if you wish; but keep in mind that @value{GDBN}
11968communicates with Emacs in terms of line numbers. If you add or
11969delete lines from the text, the line numbers that @value{GDBN} knows cease
11970to correspond properly with the code.
11971
11972@c The following dropped because Epoch is nonstandard. Reactivate
11973@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
11974@ignore
11975@kindex Emacs Epoch environment
11976@kindex Epoch
11977@kindex inspect
11978
11979Version 18 of @sc{gnu} Emacs has a built-in window system
11980called the @code{epoch}
11981environment. Users of this environment can use a new command,
11982@code{inspect} which performs identically to @code{print} except that
11983each value is printed in its own window.
11984@end ignore
c906108c 11985
d700128c
EZ
11986@include annotate.texi
11987
c906108c 11988@node GDB Bugs
c906108c
SS
11989@chapter Reporting Bugs in @value{GDBN}
11990@cindex bugs in @value{GDBN}
11991@cindex reporting bugs in @value{GDBN}
11992
11993Your bug reports play an essential role in making @value{GDBN} reliable.
11994
11995Reporting a bug may help you by bringing a solution to your problem, or it
11996may not. But in any case the principal function of a bug report is to help
11997the entire community by making the next version of @value{GDBN} work better. Bug
11998reports are your contribution to the maintenance of @value{GDBN}.
11999
12000In order for a bug report to serve its purpose, you must include the
12001information that enables us to fix the bug.
12002
12003@menu
12004* Bug Criteria:: Have you found a bug?
12005* Bug Reporting:: How to report bugs
12006@end menu
12007
53a5351d 12008@node Bug Criteria
c906108c
SS
12009@section Have you found a bug?
12010@cindex bug criteria
12011
12012If you are not sure whether you have found a bug, here are some guidelines:
12013
12014@itemize @bullet
12015@cindex fatal signal
12016@cindex debugger crash
12017@cindex crash of debugger
12018@item
12019If the debugger gets a fatal signal, for any input whatever, that is a
12020@value{GDBN} bug. Reliable debuggers never crash.
12021
12022@cindex error on valid input
12023@item
12024If @value{GDBN} produces an error message for valid input, that is a
12025bug. (Note that if you're cross debugging, the problem may also be
12026somewhere in the connection to the target.)
12027
12028@cindex invalid input
12029@item
12030If @value{GDBN} does not produce an error message for invalid input,
12031that is a bug. However, you should note that your idea of
12032``invalid input'' might be our idea of ``an extension'' or ``support
12033for traditional practice''.
12034
12035@item
12036If you are an experienced user of debugging tools, your suggestions
12037for improvement of @value{GDBN} are welcome in any case.
12038@end itemize
12039
53a5351d 12040@node Bug Reporting
c906108c
SS
12041@section How to report bugs
12042@cindex bug reports
12043@cindex @value{GDBN} bugs, reporting
12044
c906108c
SS
12045A number of companies and individuals offer support for @sc{gnu} products.
12046If you obtained @value{GDBN} from a support organization, we recommend you
12047contact that organization first.
12048
12049You can find contact information for many support companies and
12050individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
12051distribution.
12052@c should add a web page ref...
12053
12054In any event, we also recommend that you send bug reports for
12055@value{GDBN} to this addresses:
12056
12057@example
d4f3574e 12058bug-gdb@@gnu.org
c906108c
SS
12059@end example
12060
12061@strong{Do not send bug reports to @samp{info-gdb}, or to
d4f3574e 12062@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
c906108c
SS
12063not want to receive bug reports. Those that do have arranged to receive
12064@samp{bug-gdb}.
12065
12066The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
12067serves as a repeater. The mailing list and the newsgroup carry exactly
12068the same messages. Often people think of posting bug reports to the
12069newsgroup instead of mailing them. This appears to work, but it has one
12070problem which can be crucial: a newsgroup posting often lacks a mail
12071path back to the sender. Thus, if we need to ask for more information,
12072we may be unable to reach you. For this reason, it is better to send
12073bug reports to the mailing list.
12074
12075As a last resort, send bug reports on paper to:
12076
12077@example
12078@sc{gnu} Debugger Bugs
12079Free Software Foundation Inc.
1208059 Temple Place - Suite 330
12081Boston, MA 02111-1307
12082USA
12083@end example
c906108c
SS
12084
12085The fundamental principle of reporting bugs usefully is this:
12086@strong{report all the facts}. If you are not sure whether to state a
12087fact or leave it out, state it!
12088
12089Often people omit facts because they think they know what causes the
12090problem and assume that some details do not matter. Thus, you might
12091assume that the name of the variable you use in an example does not matter.
12092Well, probably it does not, but one cannot be sure. Perhaps the bug is a
12093stray memory reference which happens to fetch from the location where that
12094name is stored in memory; perhaps, if the name were different, the contents
12095of that location would fool the debugger into doing the right thing despite
12096the bug. Play it safe and give a specific, complete example. That is the
12097easiest thing for you to do, and the most helpful.
12098
12099Keep in mind that the purpose of a bug report is to enable us to fix the
12100bug. It may be that the bug has been reported previously, but neither
12101you nor we can know that unless your bug report is complete and
12102self-contained.
12103
12104Sometimes people give a few sketchy facts and ask, ``Does this ring a
12105bell?'' Those bug reports are useless, and we urge everyone to
12106@emph{refuse to respond to them} except to chide the sender to report
12107bugs properly.
12108
12109To enable us to fix the bug, you should include all these things:
12110
12111@itemize @bullet
12112@item
12113The version of @value{GDBN}. @value{GDBN} announces it if you start
12114with no arguments; you can also print it at any time using @code{show
12115version}.
12116
12117Without this, we will not know whether there is any point in looking for
12118the bug in the current version of @value{GDBN}.
12119
12120@item
12121The type of machine you are using, and the operating system name and
12122version number.
12123
c906108c
SS
12124@item
12125What compiler (and its version) was used to compile @value{GDBN}---e.g.
12126``@value{GCC}--2.8.1''.
c906108c
SS
12127
12128@item
12129What compiler (and its version) was used to compile the program you are
12130debugging---e.g. ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
12131C Compiler''. For GCC, you can say @code{gcc --version} to get this
12132information; for other compilers, see the documentation for those
12133compilers.
12134
12135@item
12136The command arguments you gave the compiler to compile your example and
12137observe the bug. For example, did you use @samp{-O}? To guarantee
12138you will not omit something important, list them all. A copy of the
12139Makefile (or the output from make) is sufficient.
12140
12141If we were to try to guess the arguments, we would probably guess wrong
12142and then we might not encounter the bug.
12143
12144@item
12145A complete input script, and all necessary source files, that will
12146reproduce the bug.
12147
12148@item
12149A description of what behavior you observe that you believe is
12150incorrect. For example, ``It gets a fatal signal.''
12151
12152Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
12153will certainly notice it. But if the bug is incorrect output, we might
12154not notice unless it is glaringly wrong. You might as well not give us
12155a chance to make a mistake.
12156
12157Even if the problem you experience is a fatal signal, you should still
12158say so explicitly. Suppose something strange is going on, such as, your
12159copy of @value{GDBN} is out of synch, or you have encountered a bug in
12160the C library on your system. (This has happened!) Your copy might
12161crash and ours would not. If you told us to expect a crash, then when
12162ours fails to crash, we would know that the bug was not happening for
12163us. If you had not told us to expect a crash, then we would not be able
12164to draw any conclusion from our observations.
12165
c906108c
SS
12166@item
12167If you wish to suggest changes to the @value{GDBN} source, send us context
12168diffs. If you even discuss something in the @value{GDBN} source, refer to
12169it by context, not by line number.
12170
12171The line numbers in our development sources will not match those in your
12172sources. Your line numbers would convey no useful information to us.
53a5351d 12173
c906108c
SS
12174@end itemize
12175
12176Here are some things that are not necessary:
12177
12178@itemize @bullet
12179@item
12180A description of the envelope of the bug.
12181
12182Often people who encounter a bug spend a lot of time investigating
12183which changes to the input file will make the bug go away and which
12184changes will not affect it.
12185
12186This is often time consuming and not very useful, because the way we
12187will find the bug is by running a single example under the debugger
12188with breakpoints, not by pure deduction from a series of examples.
12189We recommend that you save your time for something else.
12190
12191Of course, if you can find a simpler example to report @emph{instead}
12192of the original one, that is a convenience for us. Errors in the
12193output will be easier to spot, running under the debugger will take
12194less time, and so on.
12195
12196However, simplification is not vital; if you do not want to do this,
12197report the bug anyway and send us the entire test case you used.
12198
12199@item
12200A patch for the bug.
12201
12202A patch for the bug does help us if it is a good one. But do not omit
12203the necessary information, such as the test case, on the assumption that
12204a patch is all we need. We might see problems with your patch and decide
12205to fix the problem another way, or we might not understand it at all.
12206
12207Sometimes with a program as complicated as @value{GDBN} it is very hard to
12208construct an example that will make the program follow a certain path
12209through the code. If you do not send us the example, we will not be able
12210to construct one, so we will not be able to verify that the bug is fixed.
12211
12212And if we cannot understand what bug you are trying to fix, or why your
12213patch should be an improvement, we will not install it. A test case will
12214help us to understand.
12215
12216@item
12217A guess about what the bug is or what it depends on.
12218
12219Such guesses are usually wrong. Even we cannot guess right about such
12220things without first using the debugger to find the facts.
12221@end itemize
12222
12223@c The readline documentation is distributed with the readline code
12224@c and consists of the two following files:
12225@c rluser.texinfo
7be570e7 12226@c inc-hist.texinfo
c906108c
SS
12227@c Use -I with makeinfo to point to the appropriate directory,
12228@c environment var TEXINPUTS with TeX.
12229@include rluser.texinfo
7be570e7 12230@include inc-hist.texinfo
c906108c
SS
12231
12232
c906108c 12233@node Formatting Documentation
c906108c
SS
12234@appendix Formatting Documentation
12235
12236@cindex @value{GDBN} reference card
12237@cindex reference card
12238The @value{GDBN} 4 release includes an already-formatted reference card, ready
12239for printing with PostScript or Ghostscript, in the @file{gdb}
12240subdirectory of the main source directory@footnote{In
12241@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
12242release.}. If you can use PostScript or Ghostscript with your printer,
12243you can print the reference card immediately with @file{refcard.ps}.
12244
12245The release also includes the source for the reference card. You
12246can format it, using @TeX{}, by typing:
12247
12248@example
12249make refcard.dvi
12250@end example
12251
12252The @value{GDBN} reference card is designed to print in @dfn{landscape}
12253mode on US ``letter'' size paper;
12254that is, on a sheet 11 inches wide by 8.5 inches
12255high. You will need to specify this form of printing as an option to
12256your @sc{dvi} output program.
12257
12258@cindex documentation
12259
12260All the documentation for @value{GDBN} comes as part of the machine-readable
12261distribution. The documentation is written in Texinfo format, which is
12262a documentation system that uses a single source file to produce both
12263on-line information and a printed manual. You can use one of the Info
12264formatting commands to create the on-line version of the documentation
12265and @TeX{} (or @code{texi2roff}) to typeset the printed version.
12266
12267@value{GDBN} includes an already formatted copy of the on-line Info
12268version of this manual in the @file{gdb} subdirectory. The main Info
12269file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
12270subordinate files matching @samp{gdb.info*} in the same directory. If
12271necessary, you can print out these files, or read them with any editor;
12272but they are easier to read using the @code{info} subsystem in @sc{gnu}
12273Emacs or the standalone @code{info} program, available as part of the
12274@sc{gnu} Texinfo distribution.
12275
12276If you want to format these Info files yourself, you need one of the
12277Info formatting programs, such as @code{texinfo-format-buffer} or
12278@code{makeinfo}.
12279
12280If you have @code{makeinfo} installed, and are in the top level
12281@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
12282version @value{GDBVN}), you can make the Info file by typing:
12283
12284@example
12285cd gdb
12286make gdb.info
12287@end example
12288
12289If you want to typeset and print copies of this manual, you need @TeX{},
12290a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
12291Texinfo definitions file.
12292
12293@TeX{} is a typesetting program; it does not print files directly, but
12294produces output files called @sc{dvi} files. To print a typeset
12295document, you need a program to print @sc{dvi} files. If your system
12296has @TeX{} installed, chances are it has such a program. The precise
12297command to use depends on your system; @kbd{lpr -d} is common; another
12298(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
12299require a file name without any extension or a @samp{.dvi} extension.
12300
12301@TeX{} also requires a macro definitions file called
12302@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
12303written in Texinfo format. On its own, @TeX{} cannot either read or
12304typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
12305and is located in the @file{gdb-@var{version-number}/texinfo}
12306directory.
12307
12308If you have @TeX{} and a @sc{dvi} printer program installed, you can
12309typeset and print this manual. First switch to the the @file{gdb}
12310subdirectory of the main source directory (for example, to
12311@file{gdb-@value{GDBVN}/gdb}) and type:
12312
12313@example
12314make gdb.dvi
12315@end example
12316
12317Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c906108c 12318
53a5351d 12319@node Installing GDB
c906108c
SS
12320@appendix Installing @value{GDBN}
12321@cindex configuring @value{GDBN}
12322@cindex installation
12323
c906108c
SS
12324@value{GDBN} comes with a @code{configure} script that automates the process
12325of preparing @value{GDBN} for installation; you can then use @code{make} to
12326build the @code{gdb} program.
12327@iftex
12328@c irrelevant in info file; it's as current as the code it lives with.
12329@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
12330look at the @file{README} file in the sources; we may have improved the
12331installation procedures since publishing this manual.}
12332@end iftex
12333
12334The @value{GDBN} distribution includes all the source code you need for
12335@value{GDBN} in a single directory, whose name is usually composed by
12336appending the version number to @samp{gdb}.
12337
12338For example, the @value{GDBN} version @value{GDBVN} distribution is in the
12339@file{gdb-@value{GDBVN}} directory. That directory contains:
12340
12341@table @code
12342@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
12343script for configuring @value{GDBN} and all its supporting libraries
12344
12345@item gdb-@value{GDBVN}/gdb
12346the source specific to @value{GDBN} itself
12347
12348@item gdb-@value{GDBVN}/bfd
12349source for the Binary File Descriptor library
12350
12351@item gdb-@value{GDBVN}/include
12352@sc{gnu} include files
12353
12354@item gdb-@value{GDBVN}/libiberty
12355source for the @samp{-liberty} free software library
12356
12357@item gdb-@value{GDBVN}/opcodes
12358source for the library of opcode tables and disassemblers
12359
12360@item gdb-@value{GDBVN}/readline
12361source for the @sc{gnu} command-line interface
12362
12363@item gdb-@value{GDBVN}/glob
12364source for the @sc{gnu} filename pattern-matching subroutine
12365
12366@item gdb-@value{GDBVN}/mmalloc
12367source for the @sc{gnu} memory-mapped malloc package
12368@end table
12369
12370The simplest way to configure and build @value{GDBN} is to run @code{configure}
12371from the @file{gdb-@var{version-number}} source directory, which in
12372this example is the @file{gdb-@value{GDBVN}} directory.
12373
12374First switch to the @file{gdb-@var{version-number}} source directory
12375if you are not already in it; then run @code{configure}. Pass the
12376identifier for the platform on which @value{GDBN} will run as an
12377argument.
12378
12379For example:
12380
12381@example
12382cd gdb-@value{GDBVN}
12383./configure @var{host}
12384make
12385@end example
12386
12387@noindent
12388where @var{host} is an identifier such as @samp{sun4} or
12389@samp{decstation}, that identifies the platform where @value{GDBN} will run.
12390(You can often leave off @var{host}; @code{configure} tries to guess the
12391correct value by examining your system.)
12392
12393Running @samp{configure @var{host}} and then running @code{make} builds the
12394@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
12395libraries, then @code{gdb} itself. The configured source files, and the
12396binaries, are left in the corresponding source directories.
12397
12398@need 750
12399@code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
12400system does not recognize this automatically when you run a different
12401shell, you may need to run @code{sh} on it explicitly:
12402
12403@example
12404sh configure @var{host}
12405@end example
12406
12407If you run @code{configure} from a directory that contains source
12408directories for multiple libraries or programs, such as the
12409@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
12410creates configuration files for every directory level underneath (unless
12411you tell it not to, with the @samp{--norecursion} option).
12412
12413You can run the @code{configure} script from any of the
12414subordinate directories in the @value{GDBN} distribution if you only want to
12415configure that subdirectory, but be sure to specify a path to it.
12416
12417For example, with version @value{GDBVN}, type the following to configure only
12418the @code{bfd} subdirectory:
12419
12420@example
12421@group
12422cd gdb-@value{GDBVN}/bfd
12423../configure @var{host}
12424@end group
12425@end example
12426
12427You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
12428However, you should make sure that the shell on your path (named by
12429the @samp{SHELL} environment variable) is publicly readable. Remember
12430that @value{GDBN} uses the shell to start your program---some systems refuse to
12431let @value{GDBN} debug child processes whose programs are not readable.
12432
12433@menu
12434* Separate Objdir:: Compiling @value{GDBN} in another directory
12435* Config Names:: Specifying names for hosts and targets
12436* Configure Options:: Summary of options for configure
12437@end menu
12438
53a5351d 12439@node Separate Objdir
c906108c
SS
12440@section Compiling @value{GDBN} in another directory
12441
12442If you want to run @value{GDBN} versions for several host or target machines,
12443you need a different @code{gdb} compiled for each combination of
12444host and target. @code{configure} is designed to make this easy by
12445allowing you to generate each configuration in a separate subdirectory,
12446rather than in the source directory. If your @code{make} program
12447handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
12448@code{make} in each of these directories builds the @code{gdb}
12449program specified there.
12450
12451To build @code{gdb} in a separate directory, run @code{configure}
12452with the @samp{--srcdir} option to specify where to find the source.
12453(You also need to specify a path to find @code{configure}
12454itself from your working directory. If the path to @code{configure}
12455would be the same as the argument to @samp{--srcdir}, you can leave out
12456the @samp{--srcdir} option; it is assumed.)
12457
12458For example, with version @value{GDBVN}, you can build @value{GDBN} in a
12459separate directory for a Sun 4 like this:
12460
12461@example
12462@group
12463cd gdb-@value{GDBVN}
12464mkdir ../gdb-sun4
12465cd ../gdb-sun4
12466../gdb-@value{GDBVN}/configure sun4
12467make
12468@end group
12469@end example
12470
12471When @code{configure} builds a configuration using a remote source
12472directory, it creates a tree for the binaries with the same structure
12473(and using the same names) as the tree under the source directory. In
12474the example, you'd find the Sun 4 library @file{libiberty.a} in the
12475directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
12476@file{gdb-sun4/gdb}.
12477
12478One popular reason to build several @value{GDBN} configurations in separate
12479directories is to configure @value{GDBN} for cross-compiling (where
12480@value{GDBN} runs on one machine---the @dfn{host}---while debugging
12481programs that run on another machine---the @dfn{target}).
12482You specify a cross-debugging target by
12483giving the @samp{--target=@var{target}} option to @code{configure}.
12484
12485When you run @code{make} to build a program or library, you must run
12486it in a configured directory---whatever directory you were in when you
12487called @code{configure} (or one of its subdirectories).
12488
12489The @code{Makefile} that @code{configure} generates in each source
12490directory also runs recursively. If you type @code{make} in a source
12491directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
12492directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
12493will build all the required libraries, and then build GDB.
12494
12495When you have multiple hosts or targets configured in separate
12496directories, you can run @code{make} on them in parallel (for example,
12497if they are NFS-mounted on each of the hosts); they will not interfere
12498with each other.
12499
53a5351d 12500@node Config Names
c906108c
SS
12501@section Specifying names for hosts and targets
12502
12503The specifications used for hosts and targets in the @code{configure}
12504script are based on a three-part naming scheme, but some short predefined
12505aliases are also supported. The full naming scheme encodes three pieces
12506of information in the following pattern:
12507
12508@example
12509@var{architecture}-@var{vendor}-@var{os}
12510@end example
12511
12512For example, you can use the alias @code{sun4} as a @var{host} argument,
12513or as the value for @var{target} in a @code{--target=@var{target}}
12514option. The equivalent full name is @samp{sparc-sun-sunos4}.
12515
12516The @code{configure} script accompanying @value{GDBN} does not provide
12517any query facility to list all supported host and target names or
12518aliases. @code{configure} calls the Bourne shell script
12519@code{config.sub} to map abbreviations to full names; you can read the
12520script, if you wish, or you can use it to test your guesses on
12521abbreviations---for example:
12522
12523@smallexample
12524% sh config.sub i386-linux
12525i386-pc-linux-gnu
12526% sh config.sub alpha-linux
12527alpha-unknown-linux-gnu
12528% sh config.sub hp9k700
12529hppa1.1-hp-hpux
12530% sh config.sub sun4
12531sparc-sun-sunos4.1.1
12532% sh config.sub sun3
12533m68k-sun-sunos4.1.1
12534% sh config.sub i986v
12535Invalid configuration `i986v': machine `i986v' not recognized
12536@end smallexample
12537
12538@noindent
12539@code{config.sub} is also distributed in the @value{GDBN} source
12540directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
12541
53a5351d 12542@node Configure Options
c906108c
SS
12543@section @code{configure} options
12544
12545Here is a summary of the @code{configure} options and arguments that
12546are most often useful for building @value{GDBN}. @code{configure} also has
12547several other options not listed here. @inforef{What Configure
12548Does,,configure.info}, for a full explanation of @code{configure}.
12549
12550@example
12551configure @r{[}--help@r{]}
12552 @r{[}--prefix=@var{dir}@r{]}
12553 @r{[}--exec-prefix=@var{dir}@r{]}
12554 @r{[}--srcdir=@var{dirname}@r{]}
12555 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
12556 @r{[}--target=@var{target}@r{]}
12557 @var{host}
12558@end example
12559
12560@noindent
12561You may introduce options with a single @samp{-} rather than
12562@samp{--} if you prefer; but you may abbreviate option names if you use
12563@samp{--}.
12564
12565@table @code
12566@item --help
12567Display a quick summary of how to invoke @code{configure}.
12568
12569@item --prefix=@var{dir}
12570Configure the source to install programs and files under directory
12571@file{@var{dir}}.
12572
12573@item --exec-prefix=@var{dir}
12574Configure the source to install programs under directory
12575@file{@var{dir}}.
12576
12577@c avoid splitting the warning from the explanation:
12578@need 2000
12579@item --srcdir=@var{dirname}
12580@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
12581@code{make} that implements the @code{VPATH} feature.}@*
12582Use this option to make configurations in directories separate from the
12583@value{GDBN} source directories. Among other things, you can use this to
12584build (or maintain) several configurations simultaneously, in separate
12585directories. @code{configure} writes configuration specific files in
12586the current directory, but arranges for them to use the source in the
12587directory @var{dirname}. @code{configure} creates directories under
12588the working directory in parallel to the source directories below
12589@var{dirname}.
12590
12591@item --norecursion
12592Configure only the directory level where @code{configure} is executed; do not
12593propagate configuration to subdirectories.
12594
12595@item --target=@var{target}
12596Configure @value{GDBN} for cross-debugging programs running on the specified
12597@var{target}. Without this option, @value{GDBN} is configured to debug
12598programs that run on the same machine (@var{host}) as @value{GDBN} itself.
12599
12600There is no convenient way to generate a list of all available targets.
12601
12602@item @var{host} @dots{}
12603Configure @value{GDBN} to run on the specified @var{host}.
12604
12605There is no convenient way to generate a list of all available hosts.
12606@end table
12607
12608There are many other options available as well, but they are generally
12609needed for special purposes only.
c906108c 12610
53a5351d 12611@node Index
c906108c
SS
12612@unnumbered Index
12613
12614@printindex cp
12615
12616@tex
12617% I think something like @colophon should be in texinfo. In the
12618% meantime:
12619\long\def\colophon{\hbox to0pt{}\vfill
12620\centerline{The body of this manual is set in}
12621\centerline{\fontname\tenrm,}
12622\centerline{with headings in {\bf\fontname\tenbf}}
12623\centerline{and examples in {\tt\fontname\tentt}.}
12624\centerline{{\it\fontname\tenit\/},}
12625\centerline{{\bf\fontname\tenbf}, and}
12626\centerline{{\sl\fontname\tensl\/}}
12627\centerline{are used for emphasis.}\vfill}
12628\page\colophon
12629% Blame: doc@cygnus.com, 1991.
12630@end tex
12631
12632@contents
12633@bye
This page took 0.57751 seconds and 4 git commands to generate.