* gdb.texinfo (Overlays): New chapter, documenting GDB's
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
1 \input texinfo @c -*-texinfo-*-
2 @c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
3 @c 1999, 2000, 2001
4 @c Free Software Foundation, Inc.
5 @c
6 @c %**start of header
7 @c makeinfo ignores cmds prev to setfilename, so its arg cannot make use
8 @c of @set vars. However, you can override filename with makeinfo -o.
9 @setfilename gdb.info
10 @c
11 @include gdb-cfg.texi
12 @c
13 @settitle Debugging with @value{GDBN}
14 @setchapternewpage odd
15 @c %**end of header
16
17 @iftex
18 @c @smallbook
19 @c @cropmarks
20 @end iftex
21
22 @finalout
23 @syncodeindex ky cp
24
25 @c readline appendices use @vindex, @findex and @ftable,
26 @c annotate.texi and gdbmi use @findex.
27 @syncodeindex vr cp
28 @syncodeindex fn cp
29
30 @c !!set GDB manual's edition---not the same as GDB version!
31 @set EDITION Ninth
32
33 @c !!set GDB manual's revision date
34 @set DATE April 2001
35
36 @c THIS MANUAL REQUIRES TEXINFO 3.12 OR LATER.
37
38 @c This is a dir.info fragment to support semi-automated addition of
39 @c manuals to an info tree.
40 @dircategory Programming & development tools.
41 @direntry
42 * Gdb: (gdb). The @sc{gnu} debugger.
43 @end direntry
44
45 @ifinfo
46 This file documents the @sc{gnu} debugger @value{GDBN}.
47
48
49 This is the @value{EDITION} Edition, @value{DATE},
50 of @cite{Debugging with @value{GDBN}: the @sc{gnu} Source-Level Debugger}
51 for @value{GDBN} Version @value{GDBVN}.
52
53 Copyright (C) 1988,1989,1990,1991,1992,1993,1994,1995,1996,1998,1999,2000,2001
54 Free Software Foundation, Inc.
55
56 Permission is granted to copy, distribute and/or modify this document
57 under the terms of the GNU Free Documentation License, Version 1.1 or
58 any later version published by the Free Software Foundation; with the
59 Invariant Sections being ``A Sample GDB Session'' and ``Free
60 Software'', with the Front-Cover texts being ``A GNU Manual,'' and
61 with the Back-Cover Texts as in (a) below.
62
63 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
64 this GNU Manual, like GNU software. Copies published by the Free
65 Software Foundation raise funds for GNU development.''
66 @end ifinfo
67
68 @titlepage
69 @title Debugging with @value{GDBN}
70 @subtitle The @sc{gnu} Source-Level Debugger
71 @sp 1
72 @subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
73 @subtitle @value{DATE}
74 @author Richard Stallman, Roland Pesch, Stan Shebs, et al.
75 @page
76 @tex
77 {\parskip=0pt
78 \hfill (Send bugs and comments on @value{GDBN} to bug-gdb\@gnu.org.)\par
79 \hfill {\it Debugging with @value{GDBN}}\par
80 \hfill \TeX{}info \texinfoversion\par
81 }
82 @end tex
83
84 @vskip 0pt plus 1filll
85 Copyright @copyright{} 1988,1989,1990,1991,1992,1993,1994,1995,1996,1998,1999,2000,2001
86 Free Software Foundation, Inc.
87 @sp 2
88 Published by the Free Software Foundation @*
89 59 Temple Place - Suite 330, @*
90 Boston, MA 02111-1307 USA @*
91 ISBN 1-882114-77-9 @*
92
93 Permission is granted to copy, distribute and/or modify this document
94 under the terms of the GNU Free Documentation License, Version 1.1 or
95 any later version published by the Free Software Foundation; with the
96 Invariant Sections being ``A Sample GDB Session'' and ``Free
97 Software'', with the Front-Cover texts being ``A GNU Manual,'' and
98 with the Back-Cover Texts as in (a) below.
99
100 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
101 this GNU Manual, like GNU software. Copies published by the Free
102 Software Foundation raise funds for GNU development.''
103 @end titlepage
104 @page
105
106 @ifinfo
107 @node Top, Summary, (dir), (dir)
108
109 @top Debugging with @value{GDBN}
110
111 This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
112
113 This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
114 @value{GDBVN}.
115
116 Copyright (C) 1988-2001 Free Software Foundation, Inc.
117
118 @menu
119 * Summary:: Summary of @value{GDBN}
120 * Sample Session:: A sample @value{GDBN} session
121
122 * Invocation:: Getting in and out of @value{GDBN}
123 * Commands:: @value{GDBN} commands
124 * Running:: Running programs under @value{GDBN}
125 * Stopping:: Stopping and continuing
126 * Stack:: Examining the stack
127 * Source:: Examining source files
128 * Data:: Examining data
129 * Tracepoints:: Debugging remote targets non-intrusively
130 * Overlays:: Debugging programs that use overlays
131
132 * Languages:: Using @value{GDBN} with different languages
133
134 * Symbols:: Examining the symbol table
135 * Altering:: Altering execution
136 * GDB Files:: @value{GDBN} files
137 * Targets:: Specifying a debugging target
138 * Configurations:: Configuration-specific information
139 * Controlling GDB:: Controlling @value{GDBN}
140 * Sequences:: Canned sequences of commands
141 * TUI:: @value{GDBN} Text User Interface
142 * Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
143 * Annotations:: @value{GDBN}'s annotation interface.
144 * GDB/MI:: @value{GDBN}'s Machine Interface.
145
146 * GDB Bugs:: Reporting bugs in @value{GDBN}
147 * Formatting Documentation:: How to format and print @value{GDBN} documentation
148
149 * Command Line Editing:: Command Line Editing
150 * Using History Interactively:: Using History Interactively
151 * Installing GDB:: Installing GDB
152 * Index:: Index
153 @end menu
154
155 @end ifinfo
156
157 @c the replication sucks, but this avoids a texinfo 3.12 lameness
158
159 @ifhtml
160 @node Top
161
162 @top Debugging with @value{GDBN}
163
164 This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
165
166 This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
167 @value{GDBVN}.
168
169 Copyright (C) 1988-2000 Free Software Foundation, Inc.
170
171 @menu
172 * Summary:: Summary of @value{GDBN}
173 * Sample Session:: A sample @value{GDBN} session
174
175 * Invocation:: Getting in and out of @value{GDBN}
176 * Commands:: @value{GDBN} commands
177 * Running:: Running programs under @value{GDBN}
178 * Stopping:: Stopping and continuing
179 * Stack:: Examining the stack
180 * Source:: Examining source files
181 * Data:: Examining data
182 * Tracepoints:: Debugging remote targets non-intrusively
183 * Overlays:: Debugging programs that use overlays
184
185 * Languages:: Using @value{GDBN} with different languages
186
187 * Symbols:: Examining the symbol table
188 * Altering:: Altering execution
189 * GDB Files:: @value{GDBN} files
190 * Targets:: Specifying a debugging target
191 * Configurations:: Configuration-specific information
192 * Controlling GDB:: Controlling @value{GDBN}
193 * Sequences:: Canned sequences of commands
194 * TUI:: @value{GDBN} Text User Interface
195 * Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
196 * Annotations:: @value{GDBN}'s annotation interface.
197 * GDB/MI:: @value{GDBN}'s Machine Interface.
198
199 * GDB Bugs:: Reporting bugs in @value{GDBN}
200 * Formatting Documentation:: How to format and print @value{GDBN} documentation
201
202 * Command Line Editing:: Command Line Editing
203 * Using History Interactively:: Using History Interactively
204 * Installing GDB:: Installing GDB
205 * Index:: Index
206 @end menu
207
208 @end ifhtml
209
210 @c TeX can handle the contents at the start but makeinfo 3.12 can not
211 @iftex
212 @contents
213 @end iftex
214
215 @node Summary
216 @unnumbered Summary of @value{GDBN}
217
218 The purpose of a debugger such as @value{GDBN} is to allow you to see what is
219 going on ``inside'' another program while it executes---or what another
220 program was doing at the moment it crashed.
221
222 @value{GDBN} can do four main kinds of things (plus other things in support of
223 these) to help you catch bugs in the act:
224
225 @itemize @bullet
226 @item
227 Start your program, specifying anything that might affect its behavior.
228
229 @item
230 Make your program stop on specified conditions.
231
232 @item
233 Examine what has happened, when your program has stopped.
234
235 @item
236 Change things in your program, so you can experiment with correcting the
237 effects of one bug and go on to learn about another.
238 @end itemize
239
240 You can use @value{GDBN} to debug programs written in C and C++.
241 For more information, see @ref{Support,,Supported languages}.
242 For more information, see @ref{C,,C and C++}.
243
244 @cindex Chill
245 @cindex Modula-2
246 Support for Modula-2 and Chill is partial. For information on Modula-2,
247 see @ref{Modula-2,,Modula-2}. For information on Chill, see @ref{Chill}.
248
249 @cindex Pascal
250 Debugging Pascal programs which use sets, subranges, file variables, or
251 nested functions does not currently work. @value{GDBN} does not support
252 entering expressions, printing values, or similar features using Pascal
253 syntax.
254
255 @cindex Fortran
256 @value{GDBN} can be used to debug programs written in Fortran, although
257 it may be necessary to refer to some variables with a trailing
258 underscore.
259
260 @menu
261 * Free Software:: Freely redistributable software
262 * Contributors:: Contributors to GDB
263 @end menu
264
265 @node Free Software
266 @unnumberedsec Free software
267
268 @value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
269 General Public License
270 (GPL). The GPL gives you the freedom to copy or adapt a licensed
271 program---but every person getting a copy also gets with it the
272 freedom to modify that copy (which means that they must get access to
273 the source code), and the freedom to distribute further copies.
274 Typical software companies use copyrights to limit your freedoms; the
275 Free Software Foundation uses the GPL to preserve these freedoms.
276
277 Fundamentally, the General Public License is a license which says that
278 you have these freedoms and that you cannot take these freedoms away
279 from anyone else.
280
281 @node Contributors
282 @unnumberedsec Contributors to @value{GDBN}
283
284 Richard Stallman was the original author of @value{GDBN}, and of many
285 other @sc{gnu} programs. Many others have contributed to its
286 development. This section attempts to credit major contributors. One
287 of the virtues of free software is that everyone is free to contribute
288 to it; with regret, we cannot actually acknowledge everyone here. The
289 file @file{ChangeLog} in the @value{GDBN} distribution approximates a
290 blow-by-blow account.
291
292 Changes much prior to version 2.0 are lost in the mists of time.
293
294 @quotation
295 @emph{Plea:} Additions to this section are particularly welcome. If you
296 or your friends (or enemies, to be evenhanded) have been unfairly
297 omitted from this list, we would like to add your names!
298 @end quotation
299
300 So that they may not regard their many labors as thankless, we
301 particularly thank those who shepherded @value{GDBN} through major
302 releases:
303 Andrew Cagney (releases 5.0 and 5.1);
304 Jim Blandy (release 4.18);
305 Jason Molenda (release 4.17);
306 Stan Shebs (release 4.14);
307 Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
308 Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
309 John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
310 Jim Kingdon (releases 3.5, 3.4, and 3.3);
311 and Randy Smith (releases 3.2, 3.1, and 3.0).
312
313 Richard Stallman, assisted at various times by Peter TerMaat, Chris
314 Hanson, and Richard Mlynarik, handled releases through 2.8.
315
316 Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
317 in @value{GDBN}, with significant additional contributions from Per
318 Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
319 demangler. Early work on C@t{++} was by Peter TerMaat (who also did
320 much general update work leading to release 3.0).
321
322 @value{GDBN} uses the BFD subroutine library to examine multiple
323 object-file formats; BFD was a joint project of David V.
324 Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
325
326 David Johnson wrote the original COFF support; Pace Willison did
327 the original support for encapsulated COFF.
328
329 Brent Benson of Harris Computer Systems contributed DWARF2 support.
330
331 Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
332 Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
333 support.
334 Jean-Daniel Fekete contributed Sun 386i support.
335 Chris Hanson improved the HP9000 support.
336 Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
337 David Johnson contributed Encore Umax support.
338 Jyrki Kuoppala contributed Altos 3068 support.
339 Jeff Law contributed HP PA and SOM support.
340 Keith Packard contributed NS32K support.
341 Doug Rabson contributed Acorn Risc Machine support.
342 Bob Rusk contributed Harris Nighthawk CX-UX support.
343 Chris Smith contributed Convex support (and Fortran debugging).
344 Jonathan Stone contributed Pyramid support.
345 Michael Tiemann contributed SPARC support.
346 Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
347 Pace Willison contributed Intel 386 support.
348 Jay Vosburgh contributed Symmetry support.
349
350 Andreas Schwab contributed M68K Linux support.
351
352 Rich Schaefer and Peter Schauer helped with support of SunOS shared
353 libraries.
354
355 Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
356 about several machine instruction sets.
357
358 Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
359 remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
360 contributed remote debugging modules for the i960, VxWorks, A29K UDI,
361 and RDI targets, respectively.
362
363 Brian Fox is the author of the readline libraries providing
364 command-line editing and command history.
365
366 Andrew Beers of SUNY Buffalo wrote the language-switching code, the
367 Modula-2 support, and contributed the Languages chapter of this manual.
368
369 Fred Fish wrote most of the support for Unix System Vr4.
370 He also enhanced the command-completion support to cover C@t{++} overloaded
371 symbols.
372
373 Hitachi America, Ltd. sponsored the support for H8/300, H8/500, and
374 Super-H processors.
375
376 NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
377
378 Mitsubishi sponsored the support for D10V, D30V, and M32R/D processors.
379
380 Toshiba sponsored the support for the TX39 Mips processor.
381
382 Matsushita sponsored the support for the MN10200 and MN10300 processors.
383
384 Fujitsu sponsored the support for SPARClite and FR30 processors.
385
386 Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
387 watchpoints.
388
389 Michael Snyder added support for tracepoints.
390
391 Stu Grossman wrote gdbserver.
392
393 Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
394 nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
395
396 The following people at the Hewlett-Packard Company contributed
397 support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
398 (narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
399 compiler, and the terminal user interface: Ben Krepp, Richard Title,
400 John Bishop, Susan Macchia, Kathy Mann, Satish Pai, India Paul, Steve
401 Rehrauer, and Elena Zannoni. Kim Haase provided HP-specific
402 information in this manual.
403
404 DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
405 Robert Hoehne made significant contributions to the DJGPP port.
406
407 Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
408 development since 1991. Cygnus engineers who have worked on @value{GDBN}
409 fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
410 Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
411 Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
412 Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
413 Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
414 addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
415 JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
416 Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
417 Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
418 Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
419 Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
420 Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
421 Zuhn have made contributions both large and small.
422
423
424 @node Sample Session
425 @chapter A Sample @value{GDBN} Session
426
427 You can use this manual at your leisure to read all about @value{GDBN}.
428 However, a handful of commands are enough to get started using the
429 debugger. This chapter illustrates those commands.
430
431 @iftex
432 In this sample session, we emphasize user input like this: @b{input},
433 to make it easier to pick out from the surrounding output.
434 @end iftex
435
436 @c FIXME: this example may not be appropriate for some configs, where
437 @c FIXME...primary interest is in remote use.
438
439 One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
440 processor) exhibits the following bug: sometimes, when we change its
441 quote strings from the default, the commands used to capture one macro
442 definition within another stop working. In the following short @code{m4}
443 session, we define a macro @code{foo} which expands to @code{0000}; we
444 then use the @code{m4} built-in @code{defn} to define @code{bar} as the
445 same thing. However, when we change the open quote string to
446 @code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
447 procedure fails to define a new synonym @code{baz}:
448
449 @smallexample
450 $ @b{cd gnu/m4}
451 $ @b{./m4}
452 @b{define(foo,0000)}
453
454 @b{foo}
455 0000
456 @b{define(bar,defn(`foo'))}
457
458 @b{bar}
459 0000
460 @b{changequote(<QUOTE>,<UNQUOTE>)}
461
462 @b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
463 @b{baz}
464 @b{C-d}
465 m4: End of input: 0: fatal error: EOF in string
466 @end smallexample
467
468 @noindent
469 Let us use @value{GDBN} to try to see what is going on.
470
471 @smallexample
472 $ @b{@value{GDBP} m4}
473 @c FIXME: this falsifies the exact text played out, to permit smallbook
474 @c FIXME... format to come out better.
475 @value{GDBN} is free software and you are welcome to distribute copies
476 of it under certain conditions; type "show copying" to see
477 the conditions.
478 There is absolutely no warranty for @value{GDBN}; type "show warranty"
479 for details.
480
481 @value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
482 (@value{GDBP})
483 @end smallexample
484
485 @noindent
486 @value{GDBN} reads only enough symbol data to know where to find the
487 rest when needed; as a result, the first prompt comes up very quickly.
488 We now tell @value{GDBN} to use a narrower display width than usual, so
489 that examples fit in this manual.
490
491 @smallexample
492 (@value{GDBP}) @b{set width 70}
493 @end smallexample
494
495 @noindent
496 We need to see how the @code{m4} built-in @code{changequote} works.
497 Having looked at the source, we know the relevant subroutine is
498 @code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
499 @code{break} command.
500
501 @smallexample
502 (@value{GDBP}) @b{break m4_changequote}
503 Breakpoint 1 at 0x62f4: file builtin.c, line 879.
504 @end smallexample
505
506 @noindent
507 Using the @code{run} command, we start @code{m4} running under @value{GDBN}
508 control; as long as control does not reach the @code{m4_changequote}
509 subroutine, the program runs as usual:
510
511 @smallexample
512 (@value{GDBP}) @b{run}
513 Starting program: /work/Editorial/gdb/gnu/m4/m4
514 @b{define(foo,0000)}
515
516 @b{foo}
517 0000
518 @end smallexample
519
520 @noindent
521 To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
522 suspends execution of @code{m4}, displaying information about the
523 context where it stops.
524
525 @smallexample
526 @b{changequote(<QUOTE>,<UNQUOTE>)}
527
528 Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
529 at builtin.c:879
530 879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
531 @end smallexample
532
533 @noindent
534 Now we use the command @code{n} (@code{next}) to advance execution to
535 the next line of the current function.
536
537 @smallexample
538 (@value{GDBP}) @b{n}
539 882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
540 : nil,
541 @end smallexample
542
543 @noindent
544 @code{set_quotes} looks like a promising subroutine. We can go into it
545 by using the command @code{s} (@code{step}) instead of @code{next}.
546 @code{step} goes to the next line to be executed in @emph{any}
547 subroutine, so it steps into @code{set_quotes}.
548
549 @smallexample
550 (@value{GDBP}) @b{s}
551 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
552 at input.c:530
553 530 if (lquote != def_lquote)
554 @end smallexample
555
556 @noindent
557 The display that shows the subroutine where @code{m4} is now
558 suspended (and its arguments) is called a stack frame display. It
559 shows a summary of the stack. We can use the @code{backtrace}
560 command (which can also be spelled @code{bt}), to see where we are
561 in the stack as a whole: the @code{backtrace} command displays a
562 stack frame for each active subroutine.
563
564 @smallexample
565 (@value{GDBP}) @b{bt}
566 #0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
567 at input.c:530
568 #1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
569 at builtin.c:882
570 #2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
571 #3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
572 at macro.c:71
573 #4 0x79dc in expand_input () at macro.c:40
574 #5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
575 @end smallexample
576
577 @noindent
578 We step through a few more lines to see what happens. The first two
579 times, we can use @samp{s}; the next two times we use @code{n} to avoid
580 falling into the @code{xstrdup} subroutine.
581
582 @smallexample
583 (@value{GDBP}) @b{s}
584 0x3b5c 532 if (rquote != def_rquote)
585 (@value{GDBP}) @b{s}
586 0x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
587 def_lquote : xstrdup(lq);
588 (@value{GDBP}) @b{n}
589 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
590 : xstrdup(rq);
591 (@value{GDBP}) @b{n}
592 538 len_lquote = strlen(rquote);
593 @end smallexample
594
595 @noindent
596 The last line displayed looks a little odd; we can examine the variables
597 @code{lquote} and @code{rquote} to see if they are in fact the new left
598 and right quotes we specified. We use the command @code{p}
599 (@code{print}) to see their values.
600
601 @smallexample
602 (@value{GDBP}) @b{p lquote}
603 $1 = 0x35d40 "<QUOTE>"
604 (@value{GDBP}) @b{p rquote}
605 $2 = 0x35d50 "<UNQUOTE>"
606 @end smallexample
607
608 @noindent
609 @code{lquote} and @code{rquote} are indeed the new left and right quotes.
610 To look at some context, we can display ten lines of source
611 surrounding the current line with the @code{l} (@code{list}) command.
612
613 @smallexample
614 (@value{GDBP}) @b{l}
615 533 xfree(rquote);
616 534
617 535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
618 : xstrdup (lq);
619 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
620 : xstrdup (rq);
621 537
622 538 len_lquote = strlen(rquote);
623 539 len_rquote = strlen(lquote);
624 540 @}
625 541
626 542 void
627 @end smallexample
628
629 @noindent
630 Let us step past the two lines that set @code{len_lquote} and
631 @code{len_rquote}, and then examine the values of those variables.
632
633 @smallexample
634 (@value{GDBP}) @b{n}
635 539 len_rquote = strlen(lquote);
636 (@value{GDBP}) @b{n}
637 540 @}
638 (@value{GDBP}) @b{p len_lquote}
639 $3 = 9
640 (@value{GDBP}) @b{p len_rquote}
641 $4 = 7
642 @end smallexample
643
644 @noindent
645 That certainly looks wrong, assuming @code{len_lquote} and
646 @code{len_rquote} are meant to be the lengths of @code{lquote} and
647 @code{rquote} respectively. We can set them to better values using
648 the @code{p} command, since it can print the value of
649 any expression---and that expression can include subroutine calls and
650 assignments.
651
652 @smallexample
653 (@value{GDBP}) @b{p len_lquote=strlen(lquote)}
654 $5 = 7
655 (@value{GDBP}) @b{p len_rquote=strlen(rquote)}
656 $6 = 9
657 @end smallexample
658
659 @noindent
660 Is that enough to fix the problem of using the new quotes with the
661 @code{m4} built-in @code{defn}? We can allow @code{m4} to continue
662 executing with the @code{c} (@code{continue}) command, and then try the
663 example that caused trouble initially:
664
665 @smallexample
666 (@value{GDBP}) @b{c}
667 Continuing.
668
669 @b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
670
671 baz
672 0000
673 @end smallexample
674
675 @noindent
676 Success! The new quotes now work just as well as the default ones. The
677 problem seems to have been just the two typos defining the wrong
678 lengths. We allow @code{m4} exit by giving it an EOF as input:
679
680 @smallexample
681 @b{C-d}
682 Program exited normally.
683 @end smallexample
684
685 @noindent
686 The message @samp{Program exited normally.} is from @value{GDBN}; it
687 indicates @code{m4} has finished executing. We can end our @value{GDBN}
688 session with the @value{GDBN} @code{quit} command.
689
690 @smallexample
691 (@value{GDBP}) @b{quit}
692 @end smallexample
693
694 @node Invocation
695 @chapter Getting In and Out of @value{GDBN}
696
697 This chapter discusses how to start @value{GDBN}, and how to get out of it.
698 The essentials are:
699 @itemize @bullet
700 @item
701 type @samp{@value{GDBP}} to start @value{GDBN}.
702 @item
703 type @kbd{quit} or @kbd{C-d} to exit.
704 @end itemize
705
706 @menu
707 * Invoking GDB:: How to start @value{GDBN}
708 * Quitting GDB:: How to quit @value{GDBN}
709 * Shell Commands:: How to use shell commands inside @value{GDBN}
710 @end menu
711
712 @node Invoking GDB
713 @section Invoking @value{GDBN}
714
715 Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
716 @value{GDBN} reads commands from the terminal until you tell it to exit.
717
718 You can also run @code{@value{GDBP}} with a variety of arguments and options,
719 to specify more of your debugging environment at the outset.
720
721 The command-line options described here are designed
722 to cover a variety of situations; in some environments, some of these
723 options may effectively be unavailable.
724
725 The most usual way to start @value{GDBN} is with one argument,
726 specifying an executable program:
727
728 @example
729 @value{GDBP} @var{program}
730 @end example
731
732 @noindent
733 You can also start with both an executable program and a core file
734 specified:
735
736 @example
737 @value{GDBP} @var{program} @var{core}
738 @end example
739
740 You can, instead, specify a process ID as a second argument, if you want
741 to debug a running process:
742
743 @example
744 @value{GDBP} @var{program} 1234
745 @end example
746
747 @noindent
748 would attach @value{GDBN} to process @code{1234} (unless you also have a file
749 named @file{1234}; @value{GDBN} does check for a core file first).
750
751 Taking advantage of the second command-line argument requires a fairly
752 complete operating system; when you use @value{GDBN} as a remote
753 debugger attached to a bare board, there may not be any notion of
754 ``process'', and there is often no way to get a core dump. @value{GDBN}
755 will warn you if it is unable to attach or to read core dumps.
756
757 You can optionally have @code{@value{GDBP}} pass any arguments after the
758 executable file to the inferior using @code{--args}. This option stops
759 option processing.
760 @example
761 gdb --args gcc -O2 -c foo.c
762 @end example
763 This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
764 @code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
765
766 You can run @code{@value{GDBP}} without printing the front material, which describes
767 @value{GDBN}'s non-warranty, by specifying @code{-silent}:
768
769 @smallexample
770 @value{GDBP} -silent
771 @end smallexample
772
773 @noindent
774 You can further control how @value{GDBN} starts up by using command-line
775 options. @value{GDBN} itself can remind you of the options available.
776
777 @noindent
778 Type
779
780 @example
781 @value{GDBP} -help
782 @end example
783
784 @noindent
785 to display all available options and briefly describe their use
786 (@samp{@value{GDBP} -h} is a shorter equivalent).
787
788 All options and command line arguments you give are processed
789 in sequential order. The order makes a difference when the
790 @samp{-x} option is used.
791
792
793 @menu
794 * File Options:: Choosing files
795 * Mode Options:: Choosing modes
796 @end menu
797
798 @node File Options
799 @subsection Choosing files
800
801 When @value{GDBN} starts, it reads any arguments other than options as
802 specifying an executable file and core file (or process ID). This is
803 the same as if the arguments were specified by the @samp{-se} and
804 @samp{-c} options respectively. (@value{GDBN} reads the first argument
805 that does not have an associated option flag as equivalent to the
806 @samp{-se} option followed by that argument; and the second argument
807 that does not have an associated option flag, if any, as equivalent to
808 the @samp{-c} option followed by that argument.)
809
810 If @value{GDBN} has not been configured to included core file support,
811 such as for most embedded targets, then it will complain about a second
812 argument and ignore it.
813
814 Many options have both long and short forms; both are shown in the
815 following list. @value{GDBN} also recognizes the long forms if you truncate
816 them, so long as enough of the option is present to be unambiguous.
817 (If you prefer, you can flag option arguments with @samp{--} rather
818 than @samp{-}, though we illustrate the more usual convention.)
819
820 @c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
821 @c way, both those who look for -foo and --foo in the index, will find
822 @c it.
823
824 @table @code
825 @item -symbols @var{file}
826 @itemx -s @var{file}
827 @cindex @code{--symbols}
828 @cindex @code{-s}
829 Read symbol table from file @var{file}.
830
831 @item -exec @var{file}
832 @itemx -e @var{file}
833 @cindex @code{--exec}
834 @cindex @code{-e}
835 Use file @var{file} as the executable file to execute when appropriate,
836 and for examining pure data in conjunction with a core dump.
837
838 @item -se @var{file}
839 @cindex @code{--se}
840 Read symbol table from file @var{file} and use it as the executable
841 file.
842
843 @item -core @var{file}
844 @itemx -c @var{file}
845 @cindex @code{--core}
846 @cindex @code{-c}
847 Use file @var{file} as a core dump to examine.
848
849 @item -c @var{number}
850 Connect to process ID @var{number}, as with the @code{attach} command
851 (unless there is a file in core-dump format named @var{number}, in which
852 case @samp{-c} specifies that file as a core dump to read).
853
854 @item -command @var{file}
855 @itemx -x @var{file}
856 @cindex @code{--command}
857 @cindex @code{-x}
858 Execute @value{GDBN} commands from file @var{file}. @xref{Command
859 Files,, Command files}.
860
861 @item -directory @var{directory}
862 @itemx -d @var{directory}
863 @cindex @code{--directory}
864 @cindex @code{-d}
865 Add @var{directory} to the path to search for source files.
866
867 @item -m
868 @itemx -mapped
869 @cindex @code{--mapped}
870 @cindex @code{-m}
871 @emph{Warning: this option depends on operating system facilities that are not
872 supported on all systems.}@*
873 If memory-mapped files are available on your system through the @code{mmap}
874 system call, you can use this option
875 to have @value{GDBN} write the symbols from your
876 program into a reusable file in the current directory. If the program you are debugging is
877 called @file{/tmp/fred}, the mapped symbol file is @file{/tmp/fred.syms}.
878 Future @value{GDBN} debugging sessions notice the presence of this file,
879 and can quickly map in symbol information from it, rather than reading
880 the symbol table from the executable program.
881
882 The @file{.syms} file is specific to the host machine where @value{GDBN}
883 is run. It holds an exact image of the internal @value{GDBN} symbol
884 table. It cannot be shared across multiple host platforms.
885
886 @item -r
887 @itemx -readnow
888 @cindex @code{--readnow}
889 @cindex @code{-r}
890 Read each symbol file's entire symbol table immediately, rather than
891 the default, which is to read it incrementally as it is needed.
892 This makes startup slower, but makes future operations faster.
893
894 @end table
895
896 You typically combine the @code{-mapped} and @code{-readnow} options in
897 order to build a @file{.syms} file that contains complete symbol
898 information. (@xref{Files,,Commands to specify files}, for information
899 on @file{.syms} files.) A simple @value{GDBN} invocation to do nothing
900 but build a @file{.syms} file for future use is:
901
902 @example
903 gdb -batch -nx -mapped -readnow programname
904 @end example
905
906 @node Mode Options
907 @subsection Choosing modes
908
909 You can run @value{GDBN} in various alternative modes---for example, in
910 batch mode or quiet mode.
911
912 @table @code
913 @item -nx
914 @itemx -n
915 @cindex @code{--nx}
916 @cindex @code{-n}
917 Do not execute commands found in any initialization files. Normally,
918 @value{GDBN} executes the commands in these files after all the command
919 options and arguments have been processed. @xref{Command Files,,Command
920 files}.
921
922 @item -quiet
923 @itemx -silent
924 @itemx -q
925 @cindex @code{--quiet}
926 @cindex @code{--silent}
927 @cindex @code{-q}
928 ``Quiet''. Do not print the introductory and copyright messages. These
929 messages are also suppressed in batch mode.
930
931 @item -batch
932 @cindex @code{--batch}
933 Run in batch mode. Exit with status @code{0} after processing all the
934 command files specified with @samp{-x} (and all commands from
935 initialization files, if not inhibited with @samp{-n}). Exit with
936 nonzero status if an error occurs in executing the @value{GDBN} commands
937 in the command files.
938
939 Batch mode may be useful for running @value{GDBN} as a filter, for
940 example to download and run a program on another computer; in order to
941 make this more useful, the message
942
943 @example
944 Program exited normally.
945 @end example
946
947 @noindent
948 (which is ordinarily issued whenever a program running under
949 @value{GDBN} control terminates) is not issued when running in batch
950 mode.
951
952 @item -nowindows
953 @itemx -nw
954 @cindex @code{--nowindows}
955 @cindex @code{-nw}
956 ``No windows''. If @value{GDBN} comes with a graphical user interface
957 (GUI) built in, then this option tells @value{GDBN} to only use the command-line
958 interface. If no GUI is available, this option has no effect.
959
960 @item -windows
961 @itemx -w
962 @cindex @code{--windows}
963 @cindex @code{-w}
964 If @value{GDBN} includes a GUI, then this option requires it to be
965 used if possible.
966
967 @item -cd @var{directory}
968 @cindex @code{--cd}
969 Run @value{GDBN} using @var{directory} as its working directory,
970 instead of the current directory.
971
972 @item -fullname
973 @itemx -f
974 @cindex @code{--fullname}
975 @cindex @code{-f}
976 @sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
977 subprocess. It tells @value{GDBN} to output the full file name and line
978 number in a standard, recognizable fashion each time a stack frame is
979 displayed (which includes each time your program stops). This
980 recognizable format looks like two @samp{\032} characters, followed by
981 the file name, line number and character position separated by colons,
982 and a newline. The Emacs-to-@value{GDBN} interface program uses the two
983 @samp{\032} characters as a signal to display the source code for the
984 frame.
985
986 @item -epoch
987 @cindex @code{--epoch}
988 The Epoch Emacs-@value{GDBN} interface sets this option when it runs
989 @value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
990 routines so as to allow Epoch to display values of expressions in a
991 separate window.
992
993 @item -annotate @var{level}
994 @cindex @code{--annotate}
995 This option sets the @dfn{annotation level} inside @value{GDBN}. Its
996 effect is identical to using @samp{set annotate @var{level}}
997 (@pxref{Annotations}).
998 Annotation level controls how much information does @value{GDBN} print
999 together with its prompt, values of expressions, source lines, and other
1000 types of output. Level 0 is the normal, level 1 is for use when
1001 @value{GDBN} is run as a subprocess of @sc{gnu} Emacs, level 2 is the
1002 maximum annotation suitable for programs that control @value{GDBN}.
1003
1004 @item -async
1005 @cindex @code{--async}
1006 Use the asynchronous event loop for the command-line interface.
1007 @value{GDBN} processes all events, such as user keyboard input, via a
1008 special event loop. This allows @value{GDBN} to accept and process user
1009 commands in parallel with the debugged process being
1010 run@footnote{@value{GDBN} built with @sc{djgpp} tools for
1011 MS-DOS/MS-Windows supports this mode of operation, but the event loop is
1012 suspended when the debuggee runs.}, so you don't need to wait for
1013 control to return to @value{GDBN} before you type the next command.
1014 (@emph{Note:} as of version 5.1, the target side of the asynchronous
1015 operation is not yet in place, so @samp{-async} does not work fully
1016 yet.)
1017 @c FIXME: when the target side of the event loop is done, the above NOTE
1018 @c should be removed.
1019
1020 When the standard input is connected to a terminal device, @value{GDBN}
1021 uses the asynchronous event loop by default, unless disabled by the
1022 @samp{-noasync} option.
1023
1024 @item -noasync
1025 @cindex @code{--noasync}
1026 Disable the asynchronous event loop for the command-line interface.
1027
1028 @item --args
1029 @cindex @code{--args}
1030 Change interpretation of command line so that arguments following the
1031 executable file are passed as command line arguments to the inferior.
1032 This option stops option processing.
1033
1034 @item -baud @var{bps}
1035 @itemx -b @var{bps}
1036 @cindex @code{--baud}
1037 @cindex @code{-b}
1038 Set the line speed (baud rate or bits per second) of any serial
1039 interface used by @value{GDBN} for remote debugging.
1040
1041 @item -tty @var{device}
1042 @itemx -t @var{device}
1043 @cindex @code{--tty}
1044 @cindex @code{-t}
1045 Run using @var{device} for your program's standard input and output.
1046 @c FIXME: kingdon thinks there is more to -tty. Investigate.
1047
1048 @c resolve the situation of these eventually
1049 @item -tui
1050 @cindex @code{--tui}
1051 Activate the Terminal User Interface when starting.
1052 The Terminal User Interface manages several text windows on the terminal,
1053 showing source, assembly, registers and @value{GDBN} command outputs
1054 (@pxref{TUI, ,@value{GDBN} Text User Interface}).
1055 Do not use this option if you run @value{GDBN} from Emacs
1056 (@pxref{Emacs, ,Using @value{GDBN} under @sc{gnu} Emacs}).
1057
1058 @c @item -xdb
1059 @c @cindex @code{--xdb}
1060 @c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1061 @c For information, see the file @file{xdb_trans.html}, which is usually
1062 @c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1063 @c systems.
1064
1065 @item -interpreter @var{interp}
1066 @cindex @code{--interpreter}
1067 Use the interpreter @var{interp} for interface with the controlling
1068 program or device. This option is meant to be set by programs which
1069 communicate with @value{GDBN} using it as a back end.
1070
1071 @samp{--interpreter=mi} (or @samp{--interpreter=mi1}) causes
1072 @value{GDBN} to use the @dfn{gdb/mi interface} (@pxref{GDB/MI, , The
1073 @sc{gdb/mi} Interface}). The older @sc{gdb/mi} interface, included in
1074 @value{GDBN} version 5.0 can be selected with @samp{--interpreter=mi0}.
1075
1076 @item -write
1077 @cindex @code{--write}
1078 Open the executable and core files for both reading and writing. This
1079 is equivalent to the @samp{set write on} command inside @value{GDBN}
1080 (@pxref{Patching}).
1081
1082 @item -statistics
1083 @cindex @code{--statistics}
1084 This option causes @value{GDBN} to print statistics about time and
1085 memory usage after it completes each command and returns to the prompt.
1086
1087 @item -version
1088 @cindex @code{--version}
1089 This option causes @value{GDBN} to print its version number and
1090 no-warranty blurb, and exit.
1091
1092 @end table
1093
1094 @node Quitting GDB
1095 @section Quitting @value{GDBN}
1096 @cindex exiting @value{GDBN}
1097 @cindex leaving @value{GDBN}
1098
1099 @table @code
1100 @kindex quit @r{[}@var{expression}@r{]}
1101 @kindex q @r{(@code{quit})}
1102 @item quit @r{[}@var{expression}@r{]}
1103 @itemx q
1104 To exit @value{GDBN}, use the @code{quit} command (abbreviated
1105 @code{q}), or type an end-of-file character (usually @kbd{C-d}). If you
1106 do not supply @var{expression}, @value{GDBN} will terminate normally;
1107 otherwise it will terminate using the result of @var{expression} as the
1108 error code.
1109 @end table
1110
1111 @cindex interrupt
1112 An interrupt (often @kbd{C-c}) does not exit from @value{GDBN}, but rather
1113 terminates the action of any @value{GDBN} command that is in progress and
1114 returns to @value{GDBN} command level. It is safe to type the interrupt
1115 character at any time because @value{GDBN} does not allow it to take effect
1116 until a time when it is safe.
1117
1118 If you have been using @value{GDBN} to control an attached process or
1119 device, you can release it with the @code{detach} command
1120 (@pxref{Attach, ,Debugging an already-running process}).
1121
1122 @node Shell Commands
1123 @section Shell commands
1124
1125 If you need to execute occasional shell commands during your
1126 debugging session, there is no need to leave or suspend @value{GDBN}; you can
1127 just use the @code{shell} command.
1128
1129 @table @code
1130 @kindex shell
1131 @cindex shell escape
1132 @item shell @var{command string}
1133 Invoke a standard shell to execute @var{command string}.
1134 If it exists, the environment variable @code{SHELL} determines which
1135 shell to run. Otherwise @value{GDBN} uses the default shell
1136 (@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
1137 @end table
1138
1139 The utility @code{make} is often needed in development environments.
1140 You do not have to use the @code{shell} command for this purpose in
1141 @value{GDBN}:
1142
1143 @table @code
1144 @kindex make
1145 @cindex calling make
1146 @item make @var{make-args}
1147 Execute the @code{make} program with the specified
1148 arguments. This is equivalent to @samp{shell make @var{make-args}}.
1149 @end table
1150
1151 @node Commands
1152 @chapter @value{GDBN} Commands
1153
1154 You can abbreviate a @value{GDBN} command to the first few letters of the command
1155 name, if that abbreviation is unambiguous; and you can repeat certain
1156 @value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1157 key to get @value{GDBN} to fill out the rest of a word in a command (or to
1158 show you the alternatives available, if there is more than one possibility).
1159
1160 @menu
1161 * Command Syntax:: How to give commands to @value{GDBN}
1162 * Completion:: Command completion
1163 * Help:: How to ask @value{GDBN} for help
1164 @end menu
1165
1166 @node Command Syntax
1167 @section Command syntax
1168
1169 A @value{GDBN} command is a single line of input. There is no limit on
1170 how long it can be. It starts with a command name, which is followed by
1171 arguments whose meaning depends on the command name. For example, the
1172 command @code{step} accepts an argument which is the number of times to
1173 step, as in @samp{step 5}. You can also use the @code{step} command
1174 with no arguments. Some commands do not allow any arguments.
1175
1176 @cindex abbreviation
1177 @value{GDBN} command names may always be truncated if that abbreviation is
1178 unambiguous. Other possible command abbreviations are listed in the
1179 documentation for individual commands. In some cases, even ambiguous
1180 abbreviations are allowed; for example, @code{s} is specially defined as
1181 equivalent to @code{step} even though there are other commands whose
1182 names start with @code{s}. You can test abbreviations by using them as
1183 arguments to the @code{help} command.
1184
1185 @cindex repeating commands
1186 @kindex RET @r{(repeat last command)}
1187 A blank line as input to @value{GDBN} (typing just @key{RET}) means to
1188 repeat the previous command. Certain commands (for example, @code{run})
1189 will not repeat this way; these are commands whose unintentional
1190 repetition might cause trouble and which you are unlikely to want to
1191 repeat.
1192
1193 The @code{list} and @code{x} commands, when you repeat them with
1194 @key{RET}, construct new arguments rather than repeating
1195 exactly as typed. This permits easy scanning of source or memory.
1196
1197 @value{GDBN} can also use @key{RET} in another way: to partition lengthy
1198 output, in a way similar to the common utility @code{more}
1199 (@pxref{Screen Size,,Screen size}). Since it is easy to press one
1200 @key{RET} too many in this situation, @value{GDBN} disables command
1201 repetition after any command that generates this sort of display.
1202
1203 @kindex # @r{(a comment)}
1204 @cindex comment
1205 Any text from a @kbd{#} to the end of the line is a comment; it does
1206 nothing. This is useful mainly in command files (@pxref{Command
1207 Files,,Command files}).
1208
1209 @cindex repeating command sequences
1210 @kindex C-o @r{(operate-and-get-next)}
1211 The @kbd{C-o} binding is useful for repeating a complex sequence of
1212 commands. This command accepts the current line, like @kbd{RET}, and
1213 then fetches the next line relative to the current line from the history
1214 for editing.
1215
1216 @node Completion
1217 @section Command completion
1218
1219 @cindex completion
1220 @cindex word completion
1221 @value{GDBN} can fill in the rest of a word in a command for you, if there is
1222 only one possibility; it can also show you what the valid possibilities
1223 are for the next word in a command, at any time. This works for @value{GDBN}
1224 commands, @value{GDBN} subcommands, and the names of symbols in your program.
1225
1226 Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1227 of a word. If there is only one possibility, @value{GDBN} fills in the
1228 word, and waits for you to finish the command (or press @key{RET} to
1229 enter it). For example, if you type
1230
1231 @c FIXME "@key" does not distinguish its argument sufficiently to permit
1232 @c complete accuracy in these examples; space introduced for clarity.
1233 @c If texinfo enhancements make it unnecessary, it would be nice to
1234 @c replace " @key" by "@key" in the following...
1235 @example
1236 (@value{GDBP}) info bre @key{TAB}
1237 @end example
1238
1239 @noindent
1240 @value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1241 the only @code{info} subcommand beginning with @samp{bre}:
1242
1243 @example
1244 (@value{GDBP}) info breakpoints
1245 @end example
1246
1247 @noindent
1248 You can either press @key{RET} at this point, to run the @code{info
1249 breakpoints} command, or backspace and enter something else, if
1250 @samp{breakpoints} does not look like the command you expected. (If you
1251 were sure you wanted @code{info breakpoints} in the first place, you
1252 might as well just type @key{RET} immediately after @samp{info bre},
1253 to exploit command abbreviations rather than command completion).
1254
1255 If there is more than one possibility for the next word when you press
1256 @key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1257 characters and try again, or just press @key{TAB} a second time;
1258 @value{GDBN} displays all the possible completions for that word. For
1259 example, you might want to set a breakpoint on a subroutine whose name
1260 begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1261 just sounds the bell. Typing @key{TAB} again displays all the
1262 function names in your program that begin with those characters, for
1263 example:
1264
1265 @example
1266 (@value{GDBP}) b make_ @key{TAB}
1267 @exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
1268 make_a_section_from_file make_environ
1269 make_abs_section make_function_type
1270 make_blockvector make_pointer_type
1271 make_cleanup make_reference_type
1272 make_command make_symbol_completion_list
1273 (@value{GDBP}) b make_
1274 @end example
1275
1276 @noindent
1277 After displaying the available possibilities, @value{GDBN} copies your
1278 partial input (@samp{b make_} in the example) so you can finish the
1279 command.
1280
1281 If you just want to see the list of alternatives in the first place, you
1282 can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
1283 means @kbd{@key{META} ?}. You can type this either by holding down a
1284 key designated as the @key{META} shift on your keyboard (if there is
1285 one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
1286
1287 @cindex quotes in commands
1288 @cindex completion of quoted strings
1289 Sometimes the string you need, while logically a ``word'', may contain
1290 parentheses or other characters that @value{GDBN} normally excludes from
1291 its notion of a word. To permit word completion to work in this
1292 situation, you may enclose words in @code{'} (single quote marks) in
1293 @value{GDBN} commands.
1294
1295 The most likely situation where you might need this is in typing the
1296 name of a C@t{++} function. This is because C@t{++} allows function
1297 overloading (multiple definitions of the same function, distinguished
1298 by argument type). For example, when you want to set a breakpoint you
1299 may need to distinguish whether you mean the version of @code{name}
1300 that takes an @code{int} parameter, @code{name(int)}, or the version
1301 that takes a @code{float} parameter, @code{name(float)}. To use the
1302 word-completion facilities in this situation, type a single quote
1303 @code{'} at the beginning of the function name. This alerts
1304 @value{GDBN} that it may need to consider more information than usual
1305 when you press @key{TAB} or @kbd{M-?} to request word completion:
1306
1307 @example
1308 (@value{GDBP}) b 'bubble( @kbd{M-?}
1309 bubble(double,double) bubble(int,int)
1310 (@value{GDBP}) b 'bubble(
1311 @end example
1312
1313 In some cases, @value{GDBN} can tell that completing a name requires using
1314 quotes. When this happens, @value{GDBN} inserts the quote for you (while
1315 completing as much as it can) if you do not type the quote in the first
1316 place:
1317
1318 @example
1319 (@value{GDBP}) b bub @key{TAB}
1320 @exdent @value{GDBN} alters your input line to the following, and rings a bell:
1321 (@value{GDBP}) b 'bubble(
1322 @end example
1323
1324 @noindent
1325 In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1326 you have not yet started typing the argument list when you ask for
1327 completion on an overloaded symbol.
1328
1329 For more information about overloaded functions, see @ref{C plus plus
1330 expressions, ,C@t{++} expressions}. You can use the command @code{set
1331 overload-resolution off} to disable overload resolution;
1332 see @ref{Debugging C plus plus, ,@value{GDBN} features for C@t{++}}.
1333
1334
1335 @node Help
1336 @section Getting help
1337 @cindex online documentation
1338 @kindex help
1339
1340 You can always ask @value{GDBN} itself for information on its commands,
1341 using the command @code{help}.
1342
1343 @table @code
1344 @kindex h @r{(@code{help})}
1345 @item help
1346 @itemx h
1347 You can use @code{help} (abbreviated @code{h}) with no arguments to
1348 display a short list of named classes of commands:
1349
1350 @smallexample
1351 (@value{GDBP}) help
1352 List of classes of commands:
1353
1354 aliases -- Aliases of other commands
1355 breakpoints -- Making program stop at certain points
1356 data -- Examining data
1357 files -- Specifying and examining files
1358 internals -- Maintenance commands
1359 obscure -- Obscure features
1360 running -- Running the program
1361 stack -- Examining the stack
1362 status -- Status inquiries
1363 support -- Support facilities
1364 tracepoints -- Tracing of program execution without@*
1365 stopping the program
1366 user-defined -- User-defined commands
1367
1368 Type "help" followed by a class name for a list of
1369 commands in that class.
1370 Type "help" followed by command name for full
1371 documentation.
1372 Command name abbreviations are allowed if unambiguous.
1373 (@value{GDBP})
1374 @end smallexample
1375 @c the above line break eliminates huge line overfull...
1376
1377 @item help @var{class}
1378 Using one of the general help classes as an argument, you can get a
1379 list of the individual commands in that class. For example, here is the
1380 help display for the class @code{status}:
1381
1382 @smallexample
1383 (@value{GDBP}) help status
1384 Status inquiries.
1385
1386 List of commands:
1387
1388 @c Line break in "show" line falsifies real output, but needed
1389 @c to fit in smallbook page size.
1390 info -- Generic command for showing things
1391 about the program being debugged
1392 show -- Generic command for showing things
1393 about the debugger
1394
1395 Type "help" followed by command name for full
1396 documentation.
1397 Command name abbreviations are allowed if unambiguous.
1398 (@value{GDBP})
1399 @end smallexample
1400
1401 @item help @var{command}
1402 With a command name as @code{help} argument, @value{GDBN} displays a
1403 short paragraph on how to use that command.
1404
1405 @kindex apropos
1406 @item apropos @var{args}
1407 The @code{apropos @var{args}} command searches through all of the @value{GDBN}
1408 commands, and their documentation, for the regular expression specified in
1409 @var{args}. It prints out all matches found. For example:
1410
1411 @smallexample
1412 apropos reload
1413 @end smallexample
1414
1415 @noindent
1416 results in:
1417
1418 @smallexample
1419 @c @group
1420 set symbol-reloading -- Set dynamic symbol table reloading
1421 multiple times in one run
1422 show symbol-reloading -- Show dynamic symbol table reloading
1423 multiple times in one run
1424 @c @end group
1425 @end smallexample
1426
1427 @kindex complete
1428 @item complete @var{args}
1429 The @code{complete @var{args}} command lists all the possible completions
1430 for the beginning of a command. Use @var{args} to specify the beginning of the
1431 command you want completed. For example:
1432
1433 @smallexample
1434 complete i
1435 @end smallexample
1436
1437 @noindent results in:
1438
1439 @smallexample
1440 @group
1441 if
1442 ignore
1443 info
1444 inspect
1445 @end group
1446 @end smallexample
1447
1448 @noindent This is intended for use by @sc{gnu} Emacs.
1449 @end table
1450
1451 In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1452 and @code{show} to inquire about the state of your program, or the state
1453 of @value{GDBN} itself. Each command supports many topics of inquiry; this
1454 manual introduces each of them in the appropriate context. The listings
1455 under @code{info} and under @code{show} in the Index point to
1456 all the sub-commands. @xref{Index}.
1457
1458 @c @group
1459 @table @code
1460 @kindex info
1461 @kindex i @r{(@code{info})}
1462 @item info
1463 This command (abbreviated @code{i}) is for describing the state of your
1464 program. For example, you can list the arguments given to your program
1465 with @code{info args}, list the registers currently in use with @code{info
1466 registers}, or list the breakpoints you have set with @code{info breakpoints}.
1467 You can get a complete list of the @code{info} sub-commands with
1468 @w{@code{help info}}.
1469
1470 @kindex set
1471 @item set
1472 You can assign the result of an expression to an environment variable with
1473 @code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1474 @code{set prompt $}.
1475
1476 @kindex show
1477 @item show
1478 In contrast to @code{info}, @code{show} is for describing the state of
1479 @value{GDBN} itself.
1480 You can change most of the things you can @code{show}, by using the
1481 related command @code{set}; for example, you can control what number
1482 system is used for displays with @code{set radix}, or simply inquire
1483 which is currently in use with @code{show radix}.
1484
1485 @kindex info set
1486 To display all the settable parameters and their current
1487 values, you can use @code{show} with no arguments; you may also use
1488 @code{info set}. Both commands produce the same display.
1489 @c FIXME: "info set" violates the rule that "info" is for state of
1490 @c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1491 @c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1492 @end table
1493 @c @end group
1494
1495 Here are three miscellaneous @code{show} subcommands, all of which are
1496 exceptional in lacking corresponding @code{set} commands:
1497
1498 @table @code
1499 @kindex show version
1500 @cindex version number
1501 @item show version
1502 Show what version of @value{GDBN} is running. You should include this
1503 information in @value{GDBN} bug-reports. If multiple versions of
1504 @value{GDBN} are in use at your site, you may need to determine which
1505 version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1506 commands are introduced, and old ones may wither away. Also, many
1507 system vendors ship variant versions of @value{GDBN}, and there are
1508 variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
1509 The version number is the same as the one announced when you start
1510 @value{GDBN}.
1511
1512 @kindex show copying
1513 @item show copying
1514 Display information about permission for copying @value{GDBN}.
1515
1516 @kindex show warranty
1517 @item show warranty
1518 Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
1519 if your version of @value{GDBN} comes with one.
1520
1521 @end table
1522
1523 @node Running
1524 @chapter Running Programs Under @value{GDBN}
1525
1526 When you run a program under @value{GDBN}, you must first generate
1527 debugging information when you compile it.
1528
1529 You may start @value{GDBN} with its arguments, if any, in an environment
1530 of your choice. If you are doing native debugging, you may redirect
1531 your program's input and output, debug an already running process, or
1532 kill a child process.
1533
1534 @menu
1535 * Compilation:: Compiling for debugging
1536 * Starting:: Starting your program
1537 * Arguments:: Your program's arguments
1538 * Environment:: Your program's environment
1539
1540 * Working Directory:: Your program's working directory
1541 * Input/Output:: Your program's input and output
1542 * Attach:: Debugging an already-running process
1543 * Kill Process:: Killing the child process
1544
1545 * Threads:: Debugging programs with multiple threads
1546 * Processes:: Debugging programs with multiple processes
1547 @end menu
1548
1549 @node Compilation
1550 @section Compiling for debugging
1551
1552 In order to debug a program effectively, you need to generate
1553 debugging information when you compile it. This debugging information
1554 is stored in the object file; it describes the data type of each
1555 variable or function and the correspondence between source line numbers
1556 and addresses in the executable code.
1557
1558 To request debugging information, specify the @samp{-g} option when you run
1559 the compiler.
1560
1561 Many C compilers are unable to handle the @samp{-g} and @samp{-O}
1562 options together. Using those compilers, you cannot generate optimized
1563 executables containing debugging information.
1564
1565 @value{NGCC}, the @sc{gnu} C compiler, supports @samp{-g} with or
1566 without @samp{-O}, making it possible to debug optimized code. We
1567 recommend that you @emph{always} use @samp{-g} whenever you compile a
1568 program. You may think your program is correct, but there is no sense
1569 in pushing your luck.
1570
1571 @cindex optimized code, debugging
1572 @cindex debugging optimized code
1573 When you debug a program compiled with @samp{-g -O}, remember that the
1574 optimizer is rearranging your code; the debugger shows you what is
1575 really there. Do not be too surprised when the execution path does not
1576 exactly match your source file! An extreme example: if you define a
1577 variable, but never use it, @value{GDBN} never sees that
1578 variable---because the compiler optimizes it out of existence.
1579
1580 Some things do not work as well with @samp{-g -O} as with just
1581 @samp{-g}, particularly on machines with instruction scheduling. If in
1582 doubt, recompile with @samp{-g} alone, and if this fixes the problem,
1583 please report it to us as a bug (including a test case!).
1584
1585 Older versions of the @sc{gnu} C compiler permitted a variant option
1586 @w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1587 format; if your @sc{gnu} C compiler has this option, do not use it.
1588
1589 @need 2000
1590 @node Starting
1591 @section Starting your program
1592 @cindex starting
1593 @cindex running
1594
1595 @table @code
1596 @kindex run
1597 @kindex r @r{(@code{run})}
1598 @item run
1599 @itemx r
1600 Use the @code{run} command to start your program under @value{GDBN}.
1601 You must first specify the program name (except on VxWorks) with an
1602 argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1603 @value{GDBN}}), or by using the @code{file} or @code{exec-file} command
1604 (@pxref{Files, ,Commands to specify files}).
1605
1606 @end table
1607
1608 If you are running your program in an execution environment that
1609 supports processes, @code{run} creates an inferior process and makes
1610 that process run your program. (In environments without processes,
1611 @code{run} jumps to the start of your program.)
1612
1613 The execution of a program is affected by certain information it
1614 receives from its superior. @value{GDBN} provides ways to specify this
1615 information, which you must do @emph{before} starting your program. (You
1616 can change it after starting your program, but such changes only affect
1617 your program the next time you start it.) This information may be
1618 divided into four categories:
1619
1620 @table @asis
1621 @item The @emph{arguments.}
1622 Specify the arguments to give your program as the arguments of the
1623 @code{run} command. If a shell is available on your target, the shell
1624 is used to pass the arguments, so that you may use normal conventions
1625 (such as wildcard expansion or variable substitution) in describing
1626 the arguments.
1627 In Unix systems, you can control which shell is used with the
1628 @code{SHELL} environment variable.
1629 @xref{Arguments, ,Your program's arguments}.
1630
1631 @item The @emph{environment.}
1632 Your program normally inherits its environment from @value{GDBN}, but you can
1633 use the @value{GDBN} commands @code{set environment} and @code{unset
1634 environment} to change parts of the environment that affect
1635 your program. @xref{Environment, ,Your program's environment}.
1636
1637 @item The @emph{working directory.}
1638 Your program inherits its working directory from @value{GDBN}. You can set
1639 the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
1640 @xref{Working Directory, ,Your program's working directory}.
1641
1642 @item The @emph{standard input and output.}
1643 Your program normally uses the same device for standard input and
1644 standard output as @value{GDBN} is using. You can redirect input and output
1645 in the @code{run} command line, or you can use the @code{tty} command to
1646 set a different device for your program.
1647 @xref{Input/Output, ,Your program's input and output}.
1648
1649 @cindex pipes
1650 @emph{Warning:} While input and output redirection work, you cannot use
1651 pipes to pass the output of the program you are debugging to another
1652 program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1653 wrong program.
1654 @end table
1655
1656 When you issue the @code{run} command, your program begins to execute
1657 immediately. @xref{Stopping, ,Stopping and continuing}, for discussion
1658 of how to arrange for your program to stop. Once your program has
1659 stopped, you may call functions in your program, using the @code{print}
1660 or @code{call} commands. @xref{Data, ,Examining Data}.
1661
1662 If the modification time of your symbol file has changed since the last
1663 time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1664 table, and reads it again. When it does this, @value{GDBN} tries to retain
1665 your current breakpoints.
1666
1667 @node Arguments
1668 @section Your program's arguments
1669
1670 @cindex arguments (to your program)
1671 The arguments to your program can be specified by the arguments of the
1672 @code{run} command.
1673 They are passed to a shell, which expands wildcard characters and
1674 performs redirection of I/O, and thence to your program. Your
1675 @code{SHELL} environment variable (if it exists) specifies what shell
1676 @value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
1677 the default shell (@file{/bin/sh} on Unix).
1678
1679 On non-Unix systems, the program is usually invoked directly by
1680 @value{GDBN}, which emulates I/O redirection via the appropriate system
1681 calls, and the wildcard characters are expanded by the startup code of
1682 the program, not by the shell.
1683
1684 @code{run} with no arguments uses the same arguments used by the previous
1685 @code{run}, or those set by the @code{set args} command.
1686
1687 @table @code
1688 @kindex set args
1689 @item set args
1690 Specify the arguments to be used the next time your program is run. If
1691 @code{set args} has no arguments, @code{run} executes your program
1692 with no arguments. Once you have run your program with arguments,
1693 using @code{set args} before the next @code{run} is the only way to run
1694 it again without arguments.
1695
1696 @kindex show args
1697 @item show args
1698 Show the arguments to give your program when it is started.
1699 @end table
1700
1701 @node Environment
1702 @section Your program's environment
1703
1704 @cindex environment (of your program)
1705 The @dfn{environment} consists of a set of environment variables and
1706 their values. Environment variables conventionally record such things as
1707 your user name, your home directory, your terminal type, and your search
1708 path for programs to run. Usually you set up environment variables with
1709 the shell and they are inherited by all the other programs you run. When
1710 debugging, it can be useful to try running your program with a modified
1711 environment without having to start @value{GDBN} over again.
1712
1713 @table @code
1714 @kindex path
1715 @item path @var{directory}
1716 Add @var{directory} to the front of the @code{PATH} environment variable
1717 (the search path for executables) that will be passed to your program.
1718 The value of @code{PATH} used by @value{GDBN} does not change.
1719 You may specify several directory names, separated by whitespace or by a
1720 system-dependent separator character (@samp{:} on Unix, @samp{;} on
1721 MS-DOS and MS-Windows). If @var{directory} is already in the path, it
1722 is moved to the front, so it is searched sooner.
1723
1724 You can use the string @samp{$cwd} to refer to whatever is the current
1725 working directory at the time @value{GDBN} searches the path. If you
1726 use @samp{.} instead, it refers to the directory where you executed the
1727 @code{path} command. @value{GDBN} replaces @samp{.} in the
1728 @var{directory} argument (with the current path) before adding
1729 @var{directory} to the search path.
1730 @c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
1731 @c document that, since repeating it would be a no-op.
1732
1733 @kindex show paths
1734 @item show paths
1735 Display the list of search paths for executables (the @code{PATH}
1736 environment variable).
1737
1738 @kindex show environment
1739 @item show environment @r{[}@var{varname}@r{]}
1740 Print the value of environment variable @var{varname} to be given to
1741 your program when it starts. If you do not supply @var{varname},
1742 print the names and values of all environment variables to be given to
1743 your program. You can abbreviate @code{environment} as @code{env}.
1744
1745 @kindex set environment
1746 @item set environment @var{varname} @r{[}=@var{value}@r{]}
1747 Set environment variable @var{varname} to @var{value}. The value
1748 changes for your program only, not for @value{GDBN} itself. @var{value} may
1749 be any string; the values of environment variables are just strings, and
1750 any interpretation is supplied by your program itself. The @var{value}
1751 parameter is optional; if it is eliminated, the variable is set to a
1752 null value.
1753 @c "any string" here does not include leading, trailing
1754 @c blanks. Gnu asks: does anyone care?
1755
1756 For example, this command:
1757
1758 @example
1759 set env USER = foo
1760 @end example
1761
1762 @noindent
1763 tells the debugged program, when subsequently run, that its user is named
1764 @samp{foo}. (The spaces around @samp{=} are used for clarity here; they
1765 are not actually required.)
1766
1767 @kindex unset environment
1768 @item unset environment @var{varname}
1769 Remove variable @var{varname} from the environment to be passed to your
1770 program. This is different from @samp{set env @var{varname} =};
1771 @code{unset environment} removes the variable from the environment,
1772 rather than assigning it an empty value.
1773 @end table
1774
1775 @emph{Warning:} On Unix systems, @value{GDBN} runs your program using
1776 the shell indicated
1777 by your @code{SHELL} environment variable if it exists (or
1778 @code{/bin/sh} if not). If your @code{SHELL} variable names a shell
1779 that runs an initialization file---such as @file{.cshrc} for C-shell, or
1780 @file{.bashrc} for BASH---any variables you set in that file affect
1781 your program. You may wish to move setting of environment variables to
1782 files that are only run when you sign on, such as @file{.login} or
1783 @file{.profile}.
1784
1785 @node Working Directory
1786 @section Your program's working directory
1787
1788 @cindex working directory (of your program)
1789 Each time you start your program with @code{run}, it inherits its
1790 working directory from the current working directory of @value{GDBN}.
1791 The @value{GDBN} working directory is initially whatever it inherited
1792 from its parent process (typically the shell), but you can specify a new
1793 working directory in @value{GDBN} with the @code{cd} command.
1794
1795 The @value{GDBN} working directory also serves as a default for the commands
1796 that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
1797 specify files}.
1798
1799 @table @code
1800 @kindex cd
1801 @item cd @var{directory}
1802 Set the @value{GDBN} working directory to @var{directory}.
1803
1804 @kindex pwd
1805 @item pwd
1806 Print the @value{GDBN} working directory.
1807 @end table
1808
1809 @node Input/Output
1810 @section Your program's input and output
1811
1812 @cindex redirection
1813 @cindex i/o
1814 @cindex terminal
1815 By default, the program you run under @value{GDBN} does input and output to
1816 the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
1817 to its own terminal modes to interact with you, but it records the terminal
1818 modes your program was using and switches back to them when you continue
1819 running your program.
1820
1821 @table @code
1822 @kindex info terminal
1823 @item info terminal
1824 Displays information recorded by @value{GDBN} about the terminal modes your
1825 program is using.
1826 @end table
1827
1828 You can redirect your program's input and/or output using shell
1829 redirection with the @code{run} command. For example,
1830
1831 @example
1832 run > outfile
1833 @end example
1834
1835 @noindent
1836 starts your program, diverting its output to the file @file{outfile}.
1837
1838 @kindex tty
1839 @cindex controlling terminal
1840 Another way to specify where your program should do input and output is
1841 with the @code{tty} command. This command accepts a file name as
1842 argument, and causes this file to be the default for future @code{run}
1843 commands. It also resets the controlling terminal for the child
1844 process, for future @code{run} commands. For example,
1845
1846 @example
1847 tty /dev/ttyb
1848 @end example
1849
1850 @noindent
1851 directs that processes started with subsequent @code{run} commands
1852 default to do input and output on the terminal @file{/dev/ttyb} and have
1853 that as their controlling terminal.
1854
1855 An explicit redirection in @code{run} overrides the @code{tty} command's
1856 effect on the input/output device, but not its effect on the controlling
1857 terminal.
1858
1859 When you use the @code{tty} command or redirect input in the @code{run}
1860 command, only the input @emph{for your program} is affected. The input
1861 for @value{GDBN} still comes from your terminal.
1862
1863 @node Attach
1864 @section Debugging an already-running process
1865 @kindex attach
1866 @cindex attach
1867
1868 @table @code
1869 @item attach @var{process-id}
1870 This command attaches to a running process---one that was started
1871 outside @value{GDBN}. (@code{info files} shows your active
1872 targets.) The command takes as argument a process ID. The usual way to
1873 find out the process-id of a Unix process is with the @code{ps} utility,
1874 or with the @samp{jobs -l} shell command.
1875
1876 @code{attach} does not repeat if you press @key{RET} a second time after
1877 executing the command.
1878 @end table
1879
1880 To use @code{attach}, your program must be running in an environment
1881 which supports processes; for example, @code{attach} does not work for
1882 programs on bare-board targets that lack an operating system. You must
1883 also have permission to send the process a signal.
1884
1885 When you use @code{attach}, the debugger finds the program running in
1886 the process first by looking in the current working directory, then (if
1887 the program is not found) by using the source file search path
1888 (@pxref{Source Path, ,Specifying source directories}). You can also use
1889 the @code{file} command to load the program. @xref{Files, ,Commands to
1890 Specify Files}.
1891
1892 The first thing @value{GDBN} does after arranging to debug the specified
1893 process is to stop it. You can examine and modify an attached process
1894 with all the @value{GDBN} commands that are ordinarily available when
1895 you start processes with @code{run}. You can insert breakpoints; you
1896 can step and continue; you can modify storage. If you would rather the
1897 process continue running, you may use the @code{continue} command after
1898 attaching @value{GDBN} to the process.
1899
1900 @table @code
1901 @kindex detach
1902 @item detach
1903 When you have finished debugging the attached process, you can use the
1904 @code{detach} command to release it from @value{GDBN} control. Detaching
1905 the process continues its execution. After the @code{detach} command,
1906 that process and @value{GDBN} become completely independent once more, and you
1907 are ready to @code{attach} another process or start one with @code{run}.
1908 @code{detach} does not repeat if you press @key{RET} again after
1909 executing the command.
1910 @end table
1911
1912 If you exit @value{GDBN} or use the @code{run} command while you have an
1913 attached process, you kill that process. By default, @value{GDBN} asks
1914 for confirmation if you try to do either of these things; you can
1915 control whether or not you need to confirm by using the @code{set
1916 confirm} command (@pxref{Messages/Warnings, ,Optional warnings and
1917 messages}).
1918
1919 @node Kill Process
1920 @section Killing the child process
1921
1922 @table @code
1923 @kindex kill
1924 @item kill
1925 Kill the child process in which your program is running under @value{GDBN}.
1926 @end table
1927
1928 This command is useful if you wish to debug a core dump instead of a
1929 running process. @value{GDBN} ignores any core dump file while your program
1930 is running.
1931
1932 On some operating systems, a program cannot be executed outside @value{GDBN}
1933 while you have breakpoints set on it inside @value{GDBN}. You can use the
1934 @code{kill} command in this situation to permit running your program
1935 outside the debugger.
1936
1937 The @code{kill} command is also useful if you wish to recompile and
1938 relink your program, since on many systems it is impossible to modify an
1939 executable file while it is running in a process. In this case, when you
1940 next type @code{run}, @value{GDBN} notices that the file has changed, and
1941 reads the symbol table again (while trying to preserve your current
1942 breakpoint settings).
1943
1944 @node Threads
1945 @section Debugging programs with multiple threads
1946
1947 @cindex threads of execution
1948 @cindex multiple threads
1949 @cindex switching threads
1950 In some operating systems, such as HP-UX and Solaris, a single program
1951 may have more than one @dfn{thread} of execution. The precise semantics
1952 of threads differ from one operating system to another, but in general
1953 the threads of a single program are akin to multiple processes---except
1954 that they share one address space (that is, they can all examine and
1955 modify the same variables). On the other hand, each thread has its own
1956 registers and execution stack, and perhaps private memory.
1957
1958 @value{GDBN} provides these facilities for debugging multi-thread
1959 programs:
1960
1961 @itemize @bullet
1962 @item automatic notification of new threads
1963 @item @samp{thread @var{threadno}}, a command to switch among threads
1964 @item @samp{info threads}, a command to inquire about existing threads
1965 @item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
1966 a command to apply a command to a list of threads
1967 @item thread-specific breakpoints
1968 @end itemize
1969
1970 @quotation
1971 @emph{Warning:} These facilities are not yet available on every
1972 @value{GDBN} configuration where the operating system supports threads.
1973 If your @value{GDBN} does not support threads, these commands have no
1974 effect. For example, a system without thread support shows no output
1975 from @samp{info threads}, and always rejects the @code{thread} command,
1976 like this:
1977
1978 @smallexample
1979 (@value{GDBP}) info threads
1980 (@value{GDBP}) thread 1
1981 Thread ID 1 not known. Use the "info threads" command to
1982 see the IDs of currently known threads.
1983 @end smallexample
1984 @c FIXME to implementors: how hard would it be to say "sorry, this GDB
1985 @c doesn't support threads"?
1986 @end quotation
1987
1988 @cindex focus of debugging
1989 @cindex current thread
1990 The @value{GDBN} thread debugging facility allows you to observe all
1991 threads while your program runs---but whenever @value{GDBN} takes
1992 control, one thread in particular is always the focus of debugging.
1993 This thread is called the @dfn{current thread}. Debugging commands show
1994 program information from the perspective of the current thread.
1995
1996 @cindex @code{New} @var{systag} message
1997 @cindex thread identifier (system)
1998 @c FIXME-implementors!! It would be more helpful if the [New...] message
1999 @c included GDB's numeric thread handle, so you could just go to that
2000 @c thread without first checking `info threads'.
2001 Whenever @value{GDBN} detects a new thread in your program, it displays
2002 the target system's identification for the thread with a message in the
2003 form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2004 whose form varies depending on the particular system. For example, on
2005 LynxOS, you might see
2006
2007 @example
2008 [New process 35 thread 27]
2009 @end example
2010
2011 @noindent
2012 when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2013 the @var{systag} is simply something like @samp{process 368}, with no
2014 further qualifier.
2015
2016 @c FIXME!! (1) Does the [New...] message appear even for the very first
2017 @c thread of a program, or does it only appear for the
2018 @c second---i.e., when it becomes obvious we have a multithread
2019 @c program?
2020 @c (2) *Is* there necessarily a first thread always? Or do some
2021 @c multithread systems permit starting a program with multiple
2022 @c threads ab initio?
2023
2024 @cindex thread number
2025 @cindex thread identifier (GDB)
2026 For debugging purposes, @value{GDBN} associates its own thread
2027 number---always a single integer---with each thread in your program.
2028
2029 @table @code
2030 @kindex info threads
2031 @item info threads
2032 Display a summary of all threads currently in your
2033 program. @value{GDBN} displays for each thread (in this order):
2034
2035 @enumerate
2036 @item the thread number assigned by @value{GDBN}
2037
2038 @item the target system's thread identifier (@var{systag})
2039
2040 @item the current stack frame summary for that thread
2041 @end enumerate
2042
2043 @noindent
2044 An asterisk @samp{*} to the left of the @value{GDBN} thread number
2045 indicates the current thread.
2046
2047 For example,
2048 @end table
2049 @c end table here to get a little more width for example
2050
2051 @smallexample
2052 (@value{GDBP}) info threads
2053 3 process 35 thread 27 0x34e5 in sigpause ()
2054 2 process 35 thread 23 0x34e5 in sigpause ()
2055 * 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
2056 at threadtest.c:68
2057 @end smallexample
2058
2059 On HP-UX systems:
2060
2061 @cindex thread number
2062 @cindex thread identifier (GDB)
2063 For debugging purposes, @value{GDBN} associates its own thread
2064 number---a small integer assigned in thread-creation order---with each
2065 thread in your program.
2066
2067 @cindex @code{New} @var{systag} message, on HP-UX
2068 @cindex thread identifier (system), on HP-UX
2069 @c FIXME-implementors!! It would be more helpful if the [New...] message
2070 @c included GDB's numeric thread handle, so you could just go to that
2071 @c thread without first checking `info threads'.
2072 Whenever @value{GDBN} detects a new thread in your program, it displays
2073 both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
2074 form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2075 whose form varies depending on the particular system. For example, on
2076 HP-UX, you see
2077
2078 @example
2079 [New thread 2 (system thread 26594)]
2080 @end example
2081
2082 @noindent
2083 when @value{GDBN} notices a new thread.
2084
2085 @table @code
2086 @kindex info threads
2087 @item info threads
2088 Display a summary of all threads currently in your
2089 program. @value{GDBN} displays for each thread (in this order):
2090
2091 @enumerate
2092 @item the thread number assigned by @value{GDBN}
2093
2094 @item the target system's thread identifier (@var{systag})
2095
2096 @item the current stack frame summary for that thread
2097 @end enumerate
2098
2099 @noindent
2100 An asterisk @samp{*} to the left of the @value{GDBN} thread number
2101 indicates the current thread.
2102
2103 For example,
2104 @end table
2105 @c end table here to get a little more width for example
2106
2107 @example
2108 (@value{GDBP}) info threads
2109 * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") \@*
2110 at quicksort.c:137
2111 2 system thread 26606 0x7b0030d8 in __ksleep () \@*
2112 from /usr/lib/libc.2
2113 1 system thread 27905 0x7b003498 in _brk () \@*
2114 from /usr/lib/libc.2
2115 @end example
2116
2117 @table @code
2118 @kindex thread @var{threadno}
2119 @item thread @var{threadno}
2120 Make thread number @var{threadno} the current thread. The command
2121 argument @var{threadno} is the internal @value{GDBN} thread number, as
2122 shown in the first field of the @samp{info threads} display.
2123 @value{GDBN} responds by displaying the system identifier of the thread
2124 you selected, and its current stack frame summary:
2125
2126 @smallexample
2127 @c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one
2128 (@value{GDBP}) thread 2
2129 [Switching to process 35 thread 23]
2130 0x34e5 in sigpause ()
2131 @end smallexample
2132
2133 @noindent
2134 As with the @samp{[New @dots{}]} message, the form of the text after
2135 @samp{Switching to} depends on your system's conventions for identifying
2136 threads.
2137
2138 @kindex thread apply
2139 @item thread apply [@var{threadno}] [@var{all}] @var{args}
2140 The @code{thread apply} command allows you to apply a command to one or
2141 more threads. Specify the numbers of the threads that you want affected
2142 with the command argument @var{threadno}. @var{threadno} is the internal
2143 @value{GDBN} thread number, as shown in the first field of the @samp{info
2144 threads} display. To apply a command to all threads, use
2145 @code{thread apply all} @var{args}.
2146 @end table
2147
2148 @cindex automatic thread selection
2149 @cindex switching threads automatically
2150 @cindex threads, automatic switching
2151 Whenever @value{GDBN} stops your program, due to a breakpoint or a
2152 signal, it automatically selects the thread where that breakpoint or
2153 signal happened. @value{GDBN} alerts you to the context switch with a
2154 message of the form @samp{[Switching to @var{systag}]} to identify the
2155 thread.
2156
2157 @xref{Thread Stops,,Stopping and starting multi-thread programs}, for
2158 more information about how @value{GDBN} behaves when you stop and start
2159 programs with multiple threads.
2160
2161 @xref{Set Watchpoints,,Setting watchpoints}, for information about
2162 watchpoints in programs with multiple threads.
2163
2164 @node Processes
2165 @section Debugging programs with multiple processes
2166
2167 @cindex fork, debugging programs which call
2168 @cindex multiple processes
2169 @cindex processes, multiple
2170 On most systems, @value{GDBN} has no special support for debugging
2171 programs which create additional processes using the @code{fork}
2172 function. When a program forks, @value{GDBN} will continue to debug the
2173 parent process and the child process will run unimpeded. If you have
2174 set a breakpoint in any code which the child then executes, the child
2175 will get a @code{SIGTRAP} signal which (unless it catches the signal)
2176 will cause it to terminate.
2177
2178 However, if you want to debug the child process there is a workaround
2179 which isn't too painful. Put a call to @code{sleep} in the code which
2180 the child process executes after the fork. It may be useful to sleep
2181 only if a certain environment variable is set, or a certain file exists,
2182 so that the delay need not occur when you don't want to run @value{GDBN}
2183 on the child. While the child is sleeping, use the @code{ps} program to
2184 get its process ID. Then tell @value{GDBN} (a new invocation of
2185 @value{GDBN} if you are also debugging the parent process) to attach to
2186 the child process (@pxref{Attach}). From that point on you can debug
2187 the child process just like any other process which you attached to.
2188
2189 On HP-UX (11.x and later only?), @value{GDBN} provides support for
2190 debugging programs that create additional processes using the
2191 @code{fork} or @code{vfork} function.
2192
2193 By default, when a program forks, @value{GDBN} will continue to debug
2194 the parent process and the child process will run unimpeded.
2195
2196 If you want to follow the child process instead of the parent process,
2197 use the command @w{@code{set follow-fork-mode}}.
2198
2199 @table @code
2200 @kindex set follow-fork-mode
2201 @item set follow-fork-mode @var{mode}
2202 Set the debugger response to a program call of @code{fork} or
2203 @code{vfork}. A call to @code{fork} or @code{vfork} creates a new
2204 process. The @var{mode} can be:
2205
2206 @table @code
2207 @item parent
2208 The original process is debugged after a fork. The child process runs
2209 unimpeded. This is the default.
2210
2211 @item child
2212 The new process is debugged after a fork. The parent process runs
2213 unimpeded.
2214
2215 @item ask
2216 The debugger will ask for one of the above choices.
2217 @end table
2218
2219 @item show follow-fork-mode
2220 Display the current debugger response to a @code{fork} or @code{vfork} call.
2221 @end table
2222
2223 If you ask to debug a child process and a @code{vfork} is followed by an
2224 @code{exec}, @value{GDBN} executes the new target up to the first
2225 breakpoint in the new target. If you have a breakpoint set on
2226 @code{main} in your original program, the breakpoint will also be set on
2227 the child process's @code{main}.
2228
2229 When a child process is spawned by @code{vfork}, you cannot debug the
2230 child or parent until an @code{exec} call completes.
2231
2232 If you issue a @code{run} command to @value{GDBN} after an @code{exec}
2233 call executes, the new target restarts. To restart the parent process,
2234 use the @code{file} command with the parent executable name as its
2235 argument.
2236
2237 You can use the @code{catch} command to make @value{GDBN} stop whenever
2238 a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
2239 Catchpoints, ,Setting catchpoints}.
2240
2241 @node Stopping
2242 @chapter Stopping and Continuing
2243
2244 The principal purposes of using a debugger are so that you can stop your
2245 program before it terminates; or so that, if your program runs into
2246 trouble, you can investigate and find out why.
2247
2248 Inside @value{GDBN}, your program may stop for any of several reasons,
2249 such as a signal, a breakpoint, or reaching a new line after a
2250 @value{GDBN} command such as @code{step}. You may then examine and
2251 change variables, set new breakpoints or remove old ones, and then
2252 continue execution. Usually, the messages shown by @value{GDBN} provide
2253 ample explanation of the status of your program---but you can also
2254 explicitly request this information at any time.
2255
2256 @table @code
2257 @kindex info program
2258 @item info program
2259 Display information about the status of your program: whether it is
2260 running or not, what process it is, and why it stopped.
2261 @end table
2262
2263 @menu
2264 * Breakpoints:: Breakpoints, watchpoints, and catchpoints
2265 * Continuing and Stepping:: Resuming execution
2266 * Signals:: Signals
2267 * Thread Stops:: Stopping and starting multi-thread programs
2268 @end menu
2269
2270 @node Breakpoints
2271 @section Breakpoints, watchpoints, and catchpoints
2272
2273 @cindex breakpoints
2274 A @dfn{breakpoint} makes your program stop whenever a certain point in
2275 the program is reached. For each breakpoint, you can add conditions to
2276 control in finer detail whether your program stops. You can set
2277 breakpoints with the @code{break} command and its variants (@pxref{Set
2278 Breaks, ,Setting breakpoints}), to specify the place where your program
2279 should stop by line number, function name or exact address in the
2280 program.
2281
2282 In HP-UX, SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can set
2283 breakpoints in shared libraries before the executable is run. There is
2284 a minor limitation on HP-UX systems: you must wait until the executable
2285 is run in order to set breakpoints in shared library routines that are
2286 not called directly by the program (for example, routines that are
2287 arguments in a @code{pthread_create} call).
2288
2289 @cindex watchpoints
2290 @cindex memory tracing
2291 @cindex breakpoint on memory address
2292 @cindex breakpoint on variable modification
2293 A @dfn{watchpoint} is a special breakpoint that stops your program
2294 when the value of an expression changes. You must use a different
2295 command to set watchpoints (@pxref{Set Watchpoints, ,Setting
2296 watchpoints}), but aside from that, you can manage a watchpoint like
2297 any other breakpoint: you enable, disable, and delete both breakpoints
2298 and watchpoints using the same commands.
2299
2300 You can arrange to have values from your program displayed automatically
2301 whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
2302 Automatic display}.
2303
2304 @cindex catchpoints
2305 @cindex breakpoint on events
2306 A @dfn{catchpoint} is another special breakpoint that stops your program
2307 when a certain kind of event occurs, such as the throwing of a C@t{++}
2308 exception or the loading of a library. As with watchpoints, you use a
2309 different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
2310 catchpoints}), but aside from that, you can manage a catchpoint like any
2311 other breakpoint. (To stop when your program receives a signal, use the
2312 @code{handle} command; see @ref{Signals, ,Signals}.)
2313
2314 @cindex breakpoint numbers
2315 @cindex numbers for breakpoints
2316 @value{GDBN} assigns a number to each breakpoint, watchpoint, or
2317 catchpoint when you create it; these numbers are successive integers
2318 starting with one. In many of the commands for controlling various
2319 features of breakpoints you use the breakpoint number to say which
2320 breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
2321 @dfn{disabled}; if disabled, it has no effect on your program until you
2322 enable it again.
2323
2324 @cindex breakpoint ranges
2325 @cindex ranges of breakpoints
2326 Some @value{GDBN} commands accept a range of breakpoints on which to
2327 operate. A breakpoint range is either a single breakpoint number, like
2328 @samp{5}, or two such numbers, in increasing order, separated by a
2329 hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
2330 all breakpoint in that range are operated on.
2331
2332 @menu
2333 * Set Breaks:: Setting breakpoints
2334 * Set Watchpoints:: Setting watchpoints
2335 * Set Catchpoints:: Setting catchpoints
2336 * Delete Breaks:: Deleting breakpoints
2337 * Disabling:: Disabling breakpoints
2338 * Conditions:: Break conditions
2339 * Break Commands:: Breakpoint command lists
2340 * Breakpoint Menus:: Breakpoint menus
2341 * Error in Breakpoints:: ``Cannot insert breakpoints''
2342 @end menu
2343
2344 @node Set Breaks
2345 @subsection Setting breakpoints
2346
2347 @c FIXME LMB what does GDB do if no code on line of breakpt?
2348 @c consider in particular declaration with/without initialization.
2349 @c
2350 @c FIXME 2 is there stuff on this already? break at fun start, already init?
2351
2352 @kindex break
2353 @kindex b @r{(@code{break})}
2354 @vindex $bpnum@r{, convenience variable}
2355 @cindex latest breakpoint
2356 Breakpoints are set with the @code{break} command (abbreviated
2357 @code{b}). The debugger convenience variable @samp{$bpnum} records the
2358 number of the breakpoint you've set most recently; see @ref{Convenience
2359 Vars,, Convenience variables}, for a discussion of what you can do with
2360 convenience variables.
2361
2362 You have several ways to say where the breakpoint should go.
2363
2364 @table @code
2365 @item break @var{function}
2366 Set a breakpoint at entry to function @var{function}.
2367 When using source languages that permit overloading of symbols, such as
2368 C@t{++}, @var{function} may refer to more than one possible place to break.
2369 @xref{Breakpoint Menus,,Breakpoint menus}, for a discussion of that situation.
2370
2371 @item break +@var{offset}
2372 @itemx break -@var{offset}
2373 Set a breakpoint some number of lines forward or back from the position
2374 at which execution stopped in the currently selected @dfn{stack frame}.
2375 (@xref{Frames, ,Frames}, for a description of stack frames.)
2376
2377 @item break @var{linenum}
2378 Set a breakpoint at line @var{linenum} in the current source file.
2379 The current source file is the last file whose source text was printed.
2380 The breakpoint will stop your program just before it executes any of the
2381 code on that line.
2382
2383 @item break @var{filename}:@var{linenum}
2384 Set a breakpoint at line @var{linenum} in source file @var{filename}.
2385
2386 @item break @var{filename}:@var{function}
2387 Set a breakpoint at entry to function @var{function} found in file
2388 @var{filename}. Specifying a file name as well as a function name is
2389 superfluous except when multiple files contain similarly named
2390 functions.
2391
2392 @item break *@var{address}
2393 Set a breakpoint at address @var{address}. You can use this to set
2394 breakpoints in parts of your program which do not have debugging
2395 information or source files.
2396
2397 @item break
2398 When called without any arguments, @code{break} sets a breakpoint at
2399 the next instruction to be executed in the selected stack frame
2400 (@pxref{Stack, ,Examining the Stack}). In any selected frame but the
2401 innermost, this makes your program stop as soon as control
2402 returns to that frame. This is similar to the effect of a
2403 @code{finish} command in the frame inside the selected frame---except
2404 that @code{finish} does not leave an active breakpoint. If you use
2405 @code{break} without an argument in the innermost frame, @value{GDBN} stops
2406 the next time it reaches the current location; this may be useful
2407 inside loops.
2408
2409 @value{GDBN} normally ignores breakpoints when it resumes execution, until at
2410 least one instruction has been executed. If it did not do this, you
2411 would be unable to proceed past a breakpoint without first disabling the
2412 breakpoint. This rule applies whether or not the breakpoint already
2413 existed when your program stopped.
2414
2415 @item break @dots{} if @var{cond}
2416 Set a breakpoint with condition @var{cond}; evaluate the expression
2417 @var{cond} each time the breakpoint is reached, and stop only if the
2418 value is nonzero---that is, if @var{cond} evaluates as true.
2419 @samp{@dots{}} stands for one of the possible arguments described
2420 above (or no argument) specifying where to break. @xref{Conditions,
2421 ,Break conditions}, for more information on breakpoint conditions.
2422
2423 @kindex tbreak
2424 @item tbreak @var{args}
2425 Set a breakpoint enabled only for one stop. @var{args} are the
2426 same as for the @code{break} command, and the breakpoint is set in the same
2427 way, but the breakpoint is automatically deleted after the first time your
2428 program stops there. @xref{Disabling, ,Disabling breakpoints}.
2429
2430 @kindex hbreak
2431 @item hbreak @var{args}
2432 Set a hardware-assisted breakpoint. @var{args} are the same as for the
2433 @code{break} command and the breakpoint is set in the same way, but the
2434 breakpoint requires hardware support and some target hardware may not
2435 have this support. The main purpose of this is EPROM/ROM code
2436 debugging, so you can set a breakpoint at an instruction without
2437 changing the instruction. This can be used with the new trap-generation
2438 provided by SPARClite DSU and some x86-based targets. These targets
2439 will generate traps when a program accesses some data or instruction
2440 address that is assigned to the debug registers. However the hardware
2441 breakpoint registers can take a limited number of breakpoints. For
2442 example, on the DSU, only two data breakpoints can be set at a time, and
2443 @value{GDBN} will reject this command if more than two are used. Delete
2444 or disable unused hardware breakpoints before setting new ones
2445 (@pxref{Disabling, ,Disabling}). @xref{Conditions, ,Break conditions}.
2446
2447 @kindex thbreak
2448 @item thbreak @var{args}
2449 Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
2450 are the same as for the @code{hbreak} command and the breakpoint is set in
2451 the same way. However, like the @code{tbreak} command,
2452 the breakpoint is automatically deleted after the
2453 first time your program stops there. Also, like the @code{hbreak}
2454 command, the breakpoint requires hardware support and some target hardware
2455 may not have this support. @xref{Disabling, ,Disabling breakpoints}.
2456 See also @ref{Conditions, ,Break conditions}.
2457
2458 @kindex rbreak
2459 @cindex regular expression
2460 @item rbreak @var{regex}
2461 Set breakpoints on all functions matching the regular expression
2462 @var{regex}. This command sets an unconditional breakpoint on all
2463 matches, printing a list of all breakpoints it set. Once these
2464 breakpoints are set, they are treated just like the breakpoints set with
2465 the @code{break} command. You can delete them, disable them, or make
2466 them conditional the same way as any other breakpoint.
2467
2468 The syntax of the regular expression is the standard one used with tools
2469 like @file{grep}. Note that this is different from the syntax used by
2470 shells, so for instance @code{foo*} matches all functions that include
2471 an @code{fo} followed by zero or more @code{o}s. There is an implicit
2472 @code{.*} leading and trailing the regular expression you supply, so to
2473 match only functions that begin with @code{foo}, use @code{^foo}.
2474
2475 When debugging C@t{++} programs, @code{rbreak} is useful for setting
2476 breakpoints on overloaded functions that are not members of any special
2477 classes.
2478
2479 @kindex info breakpoints
2480 @cindex @code{$_} and @code{info breakpoints}
2481 @item info breakpoints @r{[}@var{n}@r{]}
2482 @itemx info break @r{[}@var{n}@r{]}
2483 @itemx info watchpoints @r{[}@var{n}@r{]}
2484 Print a table of all breakpoints, watchpoints, and catchpoints set and
2485 not deleted, with the following columns for each breakpoint:
2486
2487 @table @emph
2488 @item Breakpoint Numbers
2489 @item Type
2490 Breakpoint, watchpoint, or catchpoint.
2491 @item Disposition
2492 Whether the breakpoint is marked to be disabled or deleted when hit.
2493 @item Enabled or Disabled
2494 Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
2495 that are not enabled.
2496 @item Address
2497 Where the breakpoint is in your program, as a memory address.
2498 @item What
2499 Where the breakpoint is in the source for your program, as a file and
2500 line number.
2501 @end table
2502
2503 @noindent
2504 If a breakpoint is conditional, @code{info break} shows the condition on
2505 the line following the affected breakpoint; breakpoint commands, if any,
2506 are listed after that.
2507
2508 @noindent
2509 @code{info break} with a breakpoint
2510 number @var{n} as argument lists only that breakpoint. The
2511 convenience variable @code{$_} and the default examining-address for
2512 the @code{x} command are set to the address of the last breakpoint
2513 listed (@pxref{Memory, ,Examining memory}).
2514
2515 @noindent
2516 @code{info break} displays a count of the number of times the breakpoint
2517 has been hit. This is especially useful in conjunction with the
2518 @code{ignore} command. You can ignore a large number of breakpoint
2519 hits, look at the breakpoint info to see how many times the breakpoint
2520 was hit, and then run again, ignoring one less than that number. This
2521 will get you quickly to the last hit of that breakpoint.
2522 @end table
2523
2524 @value{GDBN} allows you to set any number of breakpoints at the same place in
2525 your program. There is nothing silly or meaningless about this. When
2526 the breakpoints are conditional, this is even useful
2527 (@pxref{Conditions, ,Break conditions}).
2528
2529 @cindex negative breakpoint numbers
2530 @cindex internal @value{GDBN} breakpoints
2531 @value{GDBN} itself sometimes sets breakpoints in your program for special
2532 purposes, such as proper handling of @code{longjmp} (in C programs).
2533 These internal breakpoints are assigned negative numbers, starting with
2534 @code{-1}; @samp{info breakpoints} does not display them.
2535
2536 You can see these breakpoints with the @value{GDBN} maintenance command
2537 @samp{maint info breakpoints}.
2538
2539 @table @code
2540 @kindex maint info breakpoints
2541 @item maint info breakpoints
2542 Using the same format as @samp{info breakpoints}, display both the
2543 breakpoints you've set explicitly, and those @value{GDBN} is using for
2544 internal purposes. Internal breakpoints are shown with negative
2545 breakpoint numbers. The type column identifies what kind of breakpoint
2546 is shown:
2547
2548 @table @code
2549 @item breakpoint
2550 Normal, explicitly set breakpoint.
2551
2552 @item watchpoint
2553 Normal, explicitly set watchpoint.
2554
2555 @item longjmp
2556 Internal breakpoint, used to handle correctly stepping through
2557 @code{longjmp} calls.
2558
2559 @item longjmp resume
2560 Internal breakpoint at the target of a @code{longjmp}.
2561
2562 @item until
2563 Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
2564
2565 @item finish
2566 Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
2567
2568 @item shlib events
2569 Shared library events.
2570
2571 @end table
2572
2573 @end table
2574
2575
2576 @node Set Watchpoints
2577 @subsection Setting watchpoints
2578
2579 @cindex setting watchpoints
2580 @cindex software watchpoints
2581 @cindex hardware watchpoints
2582 You can use a watchpoint to stop execution whenever the value of an
2583 expression changes, without having to predict a particular place where
2584 this may happen.
2585
2586 Depending on your system, watchpoints may be implemented in software or
2587 hardware. @value{GDBN} does software watchpointing by single-stepping your
2588 program and testing the variable's value each time, which is hundreds of
2589 times slower than normal execution. (But this may still be worth it, to
2590 catch errors where you have no clue what part of your program is the
2591 culprit.)
2592
2593 On some systems, such as HP-UX, Linux and some other x86-based targets,
2594 @value{GDBN} includes support for
2595 hardware watchpoints, which do not slow down the running of your
2596 program.
2597
2598 @table @code
2599 @kindex watch
2600 @item watch @var{expr}
2601 Set a watchpoint for an expression. @value{GDBN} will break when @var{expr}
2602 is written into by the program and its value changes.
2603
2604 @kindex rwatch
2605 @item rwatch @var{expr}
2606 Set a watchpoint that will break when watch @var{expr} is read by the program.
2607
2608 @kindex awatch
2609 @item awatch @var{expr}
2610 Set a watchpoint that will break when @var{expr} is either read or written into
2611 by the program.
2612
2613 @kindex info watchpoints
2614 @item info watchpoints
2615 This command prints a list of watchpoints, breakpoints, and catchpoints;
2616 it is the same as @code{info break}.
2617 @end table
2618
2619 @value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
2620 watchpoints execute very quickly, and the debugger reports a change in
2621 value at the exact instruction where the change occurs. If @value{GDBN}
2622 cannot set a hardware watchpoint, it sets a software watchpoint, which
2623 executes more slowly and reports the change in value at the next
2624 statement, not the instruction, after the change occurs.
2625
2626 When you issue the @code{watch} command, @value{GDBN} reports
2627
2628 @example
2629 Hardware watchpoint @var{num}: @var{expr}
2630 @end example
2631
2632 @noindent
2633 if it was able to set a hardware watchpoint.
2634
2635 Currently, the @code{awatch} and @code{rwatch} commands can only set
2636 hardware watchpoints, because accesses to data that don't change the
2637 value of the watched expression cannot be detected without examining
2638 every instruction as it is being executed, and @value{GDBN} does not do
2639 that currently. If @value{GDBN} finds that it is unable to set a
2640 hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
2641 will print a message like this:
2642
2643 @smallexample
2644 Expression cannot be implemented with read/access watchpoint.
2645 @end smallexample
2646
2647 Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
2648 data type of the watched expression is wider than what a hardware
2649 watchpoint on the target machine can handle. For example, some systems
2650 can only watch regions that are up to 4 bytes wide; on such systems you
2651 cannot set hardware watchpoints for an expression that yields a
2652 double-precision floating-point number (which is typically 8 bytes
2653 wide). As a work-around, it might be possible to break the large region
2654 into a series of smaller ones and watch them with separate watchpoints.
2655
2656 If you set too many hardware watchpoints, @value{GDBN} might be unable
2657 to insert all of them when you resume the execution of your program.
2658 Since the precise number of active watchpoints is unknown until such
2659 time as the program is about to be resumed, @value{GDBN} might not be
2660 able to warn you about this when you set the watchpoints, and the
2661 warning will be printed only when the program is resumed:
2662
2663 @smallexample
2664 Hardware watchpoint @var{num}: Could not insert watchpoint
2665 @end smallexample
2666
2667 @noindent
2668 If this happens, delete or disable some of the watchpoints.
2669
2670 The SPARClite DSU will generate traps when a program accesses some data
2671 or instruction address that is assigned to the debug registers. For the
2672 data addresses, DSU facilitates the @code{watch} command. However the
2673 hardware breakpoint registers can only take two data watchpoints, and
2674 both watchpoints must be the same kind. For example, you can set two
2675 watchpoints with @code{watch} commands, two with @code{rwatch} commands,
2676 @strong{or} two with @code{awatch} commands, but you cannot set one
2677 watchpoint with one command and the other with a different command.
2678 @value{GDBN} will reject the command if you try to mix watchpoints.
2679 Delete or disable unused watchpoint commands before setting new ones.
2680
2681 If you call a function interactively using @code{print} or @code{call},
2682 any watchpoints you have set will be inactive until @value{GDBN} reaches another
2683 kind of breakpoint or the call completes.
2684
2685 @value{GDBN} automatically deletes watchpoints that watch local
2686 (automatic) variables, or expressions that involve such variables, when
2687 they go out of scope, that is, when the execution leaves the block in
2688 which these variables were defined. In particular, when the program
2689 being debugged terminates, @emph{all} local variables go out of scope,
2690 and so only watchpoints that watch global variables remain set. If you
2691 rerun the program, you will need to set all such watchpoints again. One
2692 way of doing that would be to set a code breakpoint at the entry to the
2693 @code{main} function and when it breaks, set all the watchpoints.
2694
2695 @quotation
2696 @cindex watchpoints and threads
2697 @cindex threads and watchpoints
2698 @emph{Warning:} In multi-thread programs, watchpoints have only limited
2699 usefulness. With the current watchpoint implementation, @value{GDBN}
2700 can only watch the value of an expression @emph{in a single thread}. If
2701 you are confident that the expression can only change due to the current
2702 thread's activity (and if you are also confident that no other thread
2703 can become current), then you can use watchpoints as usual. However,
2704 @value{GDBN} may not notice when a non-current thread's activity changes
2705 the expression.
2706
2707 @c FIXME: this is almost identical to the previous paragraph.
2708 @emph{HP-UX Warning:} In multi-thread programs, software watchpoints
2709 have only limited usefulness. If @value{GDBN} creates a software
2710 watchpoint, it can only watch the value of an expression @emph{in a
2711 single thread}. If you are confident that the expression can only
2712 change due to the current thread's activity (and if you are also
2713 confident that no other thread can become current), then you can use
2714 software watchpoints as usual. However, @value{GDBN} may not notice
2715 when a non-current thread's activity changes the expression. (Hardware
2716 watchpoints, in contrast, watch an expression in all threads.)
2717 @end quotation
2718
2719 @node Set Catchpoints
2720 @subsection Setting catchpoints
2721 @cindex catchpoints, setting
2722 @cindex exception handlers
2723 @cindex event handling
2724
2725 You can use @dfn{catchpoints} to cause the debugger to stop for certain
2726 kinds of program events, such as C@t{++} exceptions or the loading of a
2727 shared library. Use the @code{catch} command to set a catchpoint.
2728
2729 @table @code
2730 @kindex catch
2731 @item catch @var{event}
2732 Stop when @var{event} occurs. @var{event} can be any of the following:
2733 @table @code
2734 @item throw
2735 @kindex catch throw
2736 The throwing of a C@t{++} exception.
2737
2738 @item catch
2739 @kindex catch catch
2740 The catching of a C@t{++} exception.
2741
2742 @item exec
2743 @kindex catch exec
2744 A call to @code{exec}. This is currently only available for HP-UX.
2745
2746 @item fork
2747 @kindex catch fork
2748 A call to @code{fork}. This is currently only available for HP-UX.
2749
2750 @item vfork
2751 @kindex catch vfork
2752 A call to @code{vfork}. This is currently only available for HP-UX.
2753
2754 @item load
2755 @itemx load @var{libname}
2756 @kindex catch load
2757 The dynamic loading of any shared library, or the loading of the library
2758 @var{libname}. This is currently only available for HP-UX.
2759
2760 @item unload
2761 @itemx unload @var{libname}
2762 @kindex catch unload
2763 The unloading of any dynamically loaded shared library, or the unloading
2764 of the library @var{libname}. This is currently only available for HP-UX.
2765 @end table
2766
2767 @item tcatch @var{event}
2768 Set a catchpoint that is enabled only for one stop. The catchpoint is
2769 automatically deleted after the first time the event is caught.
2770
2771 @end table
2772
2773 Use the @code{info break} command to list the current catchpoints.
2774
2775 There are currently some limitations to C@t{++} exception handling
2776 (@code{catch throw} and @code{catch catch}) in @value{GDBN}:
2777
2778 @itemize @bullet
2779 @item
2780 If you call a function interactively, @value{GDBN} normally returns
2781 control to you when the function has finished executing. If the call
2782 raises an exception, however, the call may bypass the mechanism that
2783 returns control to you and cause your program either to abort or to
2784 simply continue running until it hits a breakpoint, catches a signal
2785 that @value{GDBN} is listening for, or exits. This is the case even if
2786 you set a catchpoint for the exception; catchpoints on exceptions are
2787 disabled within interactive calls.
2788
2789 @item
2790 You cannot raise an exception interactively.
2791
2792 @item
2793 You cannot install an exception handler interactively.
2794 @end itemize
2795
2796 @cindex raise exceptions
2797 Sometimes @code{catch} is not the best way to debug exception handling:
2798 if you need to know exactly where an exception is raised, it is better to
2799 stop @emph{before} the exception handler is called, since that way you
2800 can see the stack before any unwinding takes place. If you set a
2801 breakpoint in an exception handler instead, it may not be easy to find
2802 out where the exception was raised.
2803
2804 To stop just before an exception handler is called, you need some
2805 knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
2806 raised by calling a library function named @code{__raise_exception}
2807 which has the following ANSI C interface:
2808
2809 @example
2810 /* @var{addr} is where the exception identifier is stored.
2811 @var{id} is the exception identifier. */
2812 void __raise_exception (void **addr, void *id);
2813 @end example
2814
2815 @noindent
2816 To make the debugger catch all exceptions before any stack
2817 unwinding takes place, set a breakpoint on @code{__raise_exception}
2818 (@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions}).
2819
2820 With a conditional breakpoint (@pxref{Conditions, ,Break conditions})
2821 that depends on the value of @var{id}, you can stop your program when
2822 a specific exception is raised. You can use multiple conditional
2823 breakpoints to stop your program when any of a number of exceptions are
2824 raised.
2825
2826
2827 @node Delete Breaks
2828 @subsection Deleting breakpoints
2829
2830 @cindex clearing breakpoints, watchpoints, catchpoints
2831 @cindex deleting breakpoints, watchpoints, catchpoints
2832 It is often necessary to eliminate a breakpoint, watchpoint, or
2833 catchpoint once it has done its job and you no longer want your program
2834 to stop there. This is called @dfn{deleting} the breakpoint. A
2835 breakpoint that has been deleted no longer exists; it is forgotten.
2836
2837 With the @code{clear} command you can delete breakpoints according to
2838 where they are in your program. With the @code{delete} command you can
2839 delete individual breakpoints, watchpoints, or catchpoints by specifying
2840 their breakpoint numbers.
2841
2842 It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
2843 automatically ignores breakpoints on the first instruction to be executed
2844 when you continue execution without changing the execution address.
2845
2846 @table @code
2847 @kindex clear
2848 @item clear
2849 Delete any breakpoints at the next instruction to be executed in the
2850 selected stack frame (@pxref{Selection, ,Selecting a frame}). When
2851 the innermost frame is selected, this is a good way to delete a
2852 breakpoint where your program just stopped.
2853
2854 @item clear @var{function}
2855 @itemx clear @var{filename}:@var{function}
2856 Delete any breakpoints set at entry to the function @var{function}.
2857
2858 @item clear @var{linenum}
2859 @itemx clear @var{filename}:@var{linenum}
2860 Delete any breakpoints set at or within the code of the specified line.
2861
2862 @cindex delete breakpoints
2863 @kindex delete
2864 @kindex d @r{(@code{delete})}
2865 @item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2866 Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
2867 ranges specified as arguments. If no argument is specified, delete all
2868 breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
2869 confirm off}). You can abbreviate this command as @code{d}.
2870 @end table
2871
2872 @node Disabling
2873 @subsection Disabling breakpoints
2874
2875 @kindex disable breakpoints
2876 @kindex enable breakpoints
2877 Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
2878 prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
2879 it had been deleted, but remembers the information on the breakpoint so
2880 that you can @dfn{enable} it again later.
2881
2882 You disable and enable breakpoints, watchpoints, and catchpoints with
2883 the @code{enable} and @code{disable} commands, optionally specifying one
2884 or more breakpoint numbers as arguments. Use @code{info break} or
2885 @code{info watch} to print a list of breakpoints, watchpoints, and
2886 catchpoints if you do not know which numbers to use.
2887
2888 A breakpoint, watchpoint, or catchpoint can have any of four different
2889 states of enablement:
2890
2891 @itemize @bullet
2892 @item
2893 Enabled. The breakpoint stops your program. A breakpoint set
2894 with the @code{break} command starts out in this state.
2895 @item
2896 Disabled. The breakpoint has no effect on your program.
2897 @item
2898 Enabled once. The breakpoint stops your program, but then becomes
2899 disabled.
2900 @item
2901 Enabled for deletion. The breakpoint stops your program, but
2902 immediately after it does so it is deleted permanently. A breakpoint
2903 set with the @code{tbreak} command starts out in this state.
2904 @end itemize
2905
2906 You can use the following commands to enable or disable breakpoints,
2907 watchpoints, and catchpoints:
2908
2909 @table @code
2910 @kindex disable breakpoints
2911 @kindex disable
2912 @kindex dis @r{(@code{disable})}
2913 @item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2914 Disable the specified breakpoints---or all breakpoints, if none are
2915 listed. A disabled breakpoint has no effect but is not forgotten. All
2916 options such as ignore-counts, conditions and commands are remembered in
2917 case the breakpoint is enabled again later. You may abbreviate
2918 @code{disable} as @code{dis}.
2919
2920 @kindex enable breakpoints
2921 @kindex enable
2922 @item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2923 Enable the specified breakpoints (or all defined breakpoints). They
2924 become effective once again in stopping your program.
2925
2926 @item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
2927 Enable the specified breakpoints temporarily. @value{GDBN} disables any
2928 of these breakpoints immediately after stopping your program.
2929
2930 @item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
2931 Enable the specified breakpoints to work once, then die. @value{GDBN}
2932 deletes any of these breakpoints as soon as your program stops there.
2933 @end table
2934
2935 @c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
2936 @c confusing: tbreak is also initially enabled.
2937 Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
2938 ,Setting breakpoints}), breakpoints that you set are initially enabled;
2939 subsequently, they become disabled or enabled only when you use one of
2940 the commands above. (The command @code{until} can set and delete a
2941 breakpoint of its own, but it does not change the state of your other
2942 breakpoints; see @ref{Continuing and Stepping, ,Continuing and
2943 stepping}.)
2944
2945 @node Conditions
2946 @subsection Break conditions
2947 @cindex conditional breakpoints
2948 @cindex breakpoint conditions
2949
2950 @c FIXME what is scope of break condition expr? Context where wanted?
2951 @c in particular for a watchpoint?
2952 The simplest sort of breakpoint breaks every time your program reaches a
2953 specified place. You can also specify a @dfn{condition} for a
2954 breakpoint. A condition is just a Boolean expression in your
2955 programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
2956 a condition evaluates the expression each time your program reaches it,
2957 and your program stops only if the condition is @emph{true}.
2958
2959 This is the converse of using assertions for program validation; in that
2960 situation, you want to stop when the assertion is violated---that is,
2961 when the condition is false. In C, if you want to test an assertion expressed
2962 by the condition @var{assert}, you should set the condition
2963 @samp{! @var{assert}} on the appropriate breakpoint.
2964
2965 Conditions are also accepted for watchpoints; you may not need them,
2966 since a watchpoint is inspecting the value of an expression anyhow---but
2967 it might be simpler, say, to just set a watchpoint on a variable name,
2968 and specify a condition that tests whether the new value is an interesting
2969 one.
2970
2971 Break conditions can have side effects, and may even call functions in
2972 your program. This can be useful, for example, to activate functions
2973 that log program progress, or to use your own print functions to
2974 format special data structures. The effects are completely predictable
2975 unless there is another enabled breakpoint at the same address. (In
2976 that case, @value{GDBN} might see the other breakpoint first and stop your
2977 program without checking the condition of this one.) Note that
2978 breakpoint commands are usually more convenient and flexible than break
2979 conditions for the
2980 purpose of performing side effects when a breakpoint is reached
2981 (@pxref{Break Commands, ,Breakpoint command lists}).
2982
2983 Break conditions can be specified when a breakpoint is set, by using
2984 @samp{if} in the arguments to the @code{break} command. @xref{Set
2985 Breaks, ,Setting breakpoints}. They can also be changed at any time
2986 with the @code{condition} command.
2987
2988 You can also use the @code{if} keyword with the @code{watch} command.
2989 The @code{catch} command does not recognize the @code{if} keyword;
2990 @code{condition} is the only way to impose a further condition on a
2991 catchpoint.
2992
2993 @table @code
2994 @kindex condition
2995 @item condition @var{bnum} @var{expression}
2996 Specify @var{expression} as the break condition for breakpoint,
2997 watchpoint, or catchpoint number @var{bnum}. After you set a condition,
2998 breakpoint @var{bnum} stops your program only if the value of
2999 @var{expression} is true (nonzero, in C). When you use
3000 @code{condition}, @value{GDBN} checks @var{expression} immediately for
3001 syntactic correctness, and to determine whether symbols in it have
3002 referents in the context of your breakpoint. If @var{expression} uses
3003 symbols not referenced in the context of the breakpoint, @value{GDBN}
3004 prints an error message:
3005
3006 @example
3007 No symbol "foo" in current context.
3008 @end example
3009
3010 @noindent
3011 @value{GDBN} does
3012 not actually evaluate @var{expression} at the time the @code{condition}
3013 command (or a command that sets a breakpoint with a condition, like
3014 @code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
3015
3016 @item condition @var{bnum}
3017 Remove the condition from breakpoint number @var{bnum}. It becomes
3018 an ordinary unconditional breakpoint.
3019 @end table
3020
3021 @cindex ignore count (of breakpoint)
3022 A special case of a breakpoint condition is to stop only when the
3023 breakpoint has been reached a certain number of times. This is so
3024 useful that there is a special way to do it, using the @dfn{ignore
3025 count} of the breakpoint. Every breakpoint has an ignore count, which
3026 is an integer. Most of the time, the ignore count is zero, and
3027 therefore has no effect. But if your program reaches a breakpoint whose
3028 ignore count is positive, then instead of stopping, it just decrements
3029 the ignore count by one and continues. As a result, if the ignore count
3030 value is @var{n}, the breakpoint does not stop the next @var{n} times
3031 your program reaches it.
3032
3033 @table @code
3034 @kindex ignore
3035 @item ignore @var{bnum} @var{count}
3036 Set the ignore count of breakpoint number @var{bnum} to @var{count}.
3037 The next @var{count} times the breakpoint is reached, your program's
3038 execution does not stop; other than to decrement the ignore count, @value{GDBN}
3039 takes no action.
3040
3041 To make the breakpoint stop the next time it is reached, specify
3042 a count of zero.
3043
3044 When you use @code{continue} to resume execution of your program from a
3045 breakpoint, you can specify an ignore count directly as an argument to
3046 @code{continue}, rather than using @code{ignore}. @xref{Continuing and
3047 Stepping,,Continuing and stepping}.
3048
3049 If a breakpoint has a positive ignore count and a condition, the
3050 condition is not checked. Once the ignore count reaches zero,
3051 @value{GDBN} resumes checking the condition.
3052
3053 You could achieve the effect of the ignore count with a condition such
3054 as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
3055 is decremented each time. @xref{Convenience Vars, ,Convenience
3056 variables}.
3057 @end table
3058
3059 Ignore counts apply to breakpoints, watchpoints, and catchpoints.
3060
3061
3062 @node Break Commands
3063 @subsection Breakpoint command lists
3064
3065 @cindex breakpoint commands
3066 You can give any breakpoint (or watchpoint or catchpoint) a series of
3067 commands to execute when your program stops due to that breakpoint. For
3068 example, you might want to print the values of certain expressions, or
3069 enable other breakpoints.
3070
3071 @table @code
3072 @kindex commands
3073 @kindex end
3074 @item commands @r{[}@var{bnum}@r{]}
3075 @itemx @dots{} @var{command-list} @dots{}
3076 @itemx end
3077 Specify a list of commands for breakpoint number @var{bnum}. The commands
3078 themselves appear on the following lines. Type a line containing just
3079 @code{end} to terminate the commands.
3080
3081 To remove all commands from a breakpoint, type @code{commands} and
3082 follow it immediately with @code{end}; that is, give no commands.
3083
3084 With no @var{bnum} argument, @code{commands} refers to the last
3085 breakpoint, watchpoint, or catchpoint set (not to the breakpoint most
3086 recently encountered).
3087 @end table
3088
3089 Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
3090 disabled within a @var{command-list}.
3091
3092 You can use breakpoint commands to start your program up again. Simply
3093 use the @code{continue} command, or @code{step}, or any other command
3094 that resumes execution.
3095
3096 Any other commands in the command list, after a command that resumes
3097 execution, are ignored. This is because any time you resume execution
3098 (even with a simple @code{next} or @code{step}), you may encounter
3099 another breakpoint---which could have its own command list, leading to
3100 ambiguities about which list to execute.
3101
3102 @kindex silent
3103 If the first command you specify in a command list is @code{silent}, the
3104 usual message about stopping at a breakpoint is not printed. This may
3105 be desirable for breakpoints that are to print a specific message and
3106 then continue. If none of the remaining commands print anything, you
3107 see no sign that the breakpoint was reached. @code{silent} is
3108 meaningful only at the beginning of a breakpoint command list.
3109
3110 The commands @code{echo}, @code{output}, and @code{printf} allow you to
3111 print precisely controlled output, and are often useful in silent
3112 breakpoints. @xref{Output, ,Commands for controlled output}.
3113
3114 For example, here is how you could use breakpoint commands to print the
3115 value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
3116
3117 @example
3118 break foo if x>0
3119 commands
3120 silent
3121 printf "x is %d\n",x
3122 cont
3123 end
3124 @end example
3125
3126 One application for breakpoint commands is to compensate for one bug so
3127 you can test for another. Put a breakpoint just after the erroneous line
3128 of code, give it a condition to detect the case in which something
3129 erroneous has been done, and give it commands to assign correct values
3130 to any variables that need them. End with the @code{continue} command
3131 so that your program does not stop, and start with the @code{silent}
3132 command so that no output is produced. Here is an example:
3133
3134 @example
3135 break 403
3136 commands
3137 silent
3138 set x = y + 4
3139 cont
3140 end
3141 @end example
3142
3143 @node Breakpoint Menus
3144 @subsection Breakpoint menus
3145 @cindex overloading
3146 @cindex symbol overloading
3147
3148 Some programming languages (notably C@t{++}) permit a single function name
3149 to be defined several times, for application in different contexts.
3150 This is called @dfn{overloading}. When a function name is overloaded,
3151 @samp{break @var{function}} is not enough to tell @value{GDBN} where you want
3152 a breakpoint. If you realize this is a problem, you can use
3153 something like @samp{break @var{function}(@var{types})} to specify which
3154 particular version of the function you want. Otherwise, @value{GDBN} offers
3155 you a menu of numbered choices for different possible breakpoints, and
3156 waits for your selection with the prompt @samp{>}. The first two
3157 options are always @samp{[0] cancel} and @samp{[1] all}. Typing @kbd{1}
3158 sets a breakpoint at each definition of @var{function}, and typing
3159 @kbd{0} aborts the @code{break} command without setting any new
3160 breakpoints.
3161
3162 For example, the following session excerpt shows an attempt to set a
3163 breakpoint at the overloaded symbol @code{String::after}.
3164 We choose three particular definitions of that function name:
3165
3166 @c FIXME! This is likely to change to show arg type lists, at least
3167 @smallexample
3168 @group
3169 (@value{GDBP}) b String::after
3170 [0] cancel
3171 [1] all
3172 [2] file:String.cc; line number:867
3173 [3] file:String.cc; line number:860
3174 [4] file:String.cc; line number:875
3175 [5] file:String.cc; line number:853
3176 [6] file:String.cc; line number:846
3177 [7] file:String.cc; line number:735
3178 > 2 4 6
3179 Breakpoint 1 at 0xb26c: file String.cc, line 867.
3180 Breakpoint 2 at 0xb344: file String.cc, line 875.
3181 Breakpoint 3 at 0xafcc: file String.cc, line 846.
3182 Multiple breakpoints were set.
3183 Use the "delete" command to delete unwanted
3184 breakpoints.
3185 (@value{GDBP})
3186 @end group
3187 @end smallexample
3188
3189 @c @ifclear BARETARGET
3190 @node Error in Breakpoints
3191 @subsection ``Cannot insert breakpoints''
3192 @c
3193 @c FIXME!! 14/6/95 Is there a real example of this? Let's use it.
3194 @c
3195 Under some operating systems, breakpoints cannot be used in a program if
3196 any other process is running that program. In this situation,
3197 attempting to run or continue a program with a breakpoint causes
3198 @value{GDBN} to print an error message:
3199
3200 @example
3201 Cannot insert breakpoints.
3202 The same program may be running in another process.
3203 @end example
3204
3205 When this happens, you have three ways to proceed:
3206
3207 @enumerate
3208 @item
3209 Remove or disable the breakpoints, then continue.
3210
3211 @item
3212 Suspend @value{GDBN}, and copy the file containing your program to a new
3213 name. Resume @value{GDBN} and use the @code{exec-file} command to specify
3214 that @value{GDBN} should run your program under that name.
3215 Then start your program again.
3216
3217 @item
3218 Relink your program so that the text segment is nonsharable, using the
3219 linker option @samp{-N}. The operating system limitation may not apply
3220 to nonsharable executables.
3221 @end enumerate
3222 @c @end ifclear
3223
3224 A similar message can be printed if you request too many active
3225 hardware-assisted breakpoints and watchpoints:
3226
3227 @c FIXME: the precise wording of this message may change; the relevant
3228 @c source change is not committed yet (Sep 3, 1999).
3229 @smallexample
3230 Stopped; cannot insert breakpoints.
3231 You may have requested too many hardware breakpoints and watchpoints.
3232 @end smallexample
3233
3234 @noindent
3235 This message is printed when you attempt to resume the program, since
3236 only then @value{GDBN} knows exactly how many hardware breakpoints and
3237 watchpoints it needs to insert.
3238
3239 When this message is printed, you need to disable or remove some of the
3240 hardware-assisted breakpoints and watchpoints, and then continue.
3241
3242
3243 @node Continuing and Stepping
3244 @section Continuing and stepping
3245
3246 @cindex stepping
3247 @cindex continuing
3248 @cindex resuming execution
3249 @dfn{Continuing} means resuming program execution until your program
3250 completes normally. In contrast, @dfn{stepping} means executing just
3251 one more ``step'' of your program, where ``step'' may mean either one
3252 line of source code, or one machine instruction (depending on what
3253 particular command you use). Either when continuing or when stepping,
3254 your program may stop even sooner, due to a breakpoint or a signal. (If
3255 it stops due to a signal, you may want to use @code{handle}, or use
3256 @samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
3257
3258 @table @code
3259 @kindex continue
3260 @kindex c @r{(@code{continue})}
3261 @kindex fg @r{(resume foreground execution)}
3262 @item continue @r{[}@var{ignore-count}@r{]}
3263 @itemx c @r{[}@var{ignore-count}@r{]}
3264 @itemx fg @r{[}@var{ignore-count}@r{]}
3265 Resume program execution, at the address where your program last stopped;
3266 any breakpoints set at that address are bypassed. The optional argument
3267 @var{ignore-count} allows you to specify a further number of times to
3268 ignore a breakpoint at this location; its effect is like that of
3269 @code{ignore} (@pxref{Conditions, ,Break conditions}).
3270
3271 The argument @var{ignore-count} is meaningful only when your program
3272 stopped due to a breakpoint. At other times, the argument to
3273 @code{continue} is ignored.
3274
3275 The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
3276 debugged program is deemed to be the foreground program) are provided
3277 purely for convenience, and have exactly the same behavior as
3278 @code{continue}.
3279 @end table
3280
3281 To resume execution at a different place, you can use @code{return}
3282 (@pxref{Returning, ,Returning from a function}) to go back to the
3283 calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
3284 different address}) to go to an arbitrary location in your program.
3285
3286 A typical technique for using stepping is to set a breakpoint
3287 (@pxref{Breakpoints, ,Breakpoints; watchpoints; and catchpoints}) at the
3288 beginning of the function or the section of your program where a problem
3289 is believed to lie, run your program until it stops at that breakpoint,
3290 and then step through the suspect area, examining the variables that are
3291 interesting, until you see the problem happen.
3292
3293 @table @code
3294 @kindex step
3295 @kindex s @r{(@code{step})}
3296 @item step
3297 Continue running your program until control reaches a different source
3298 line, then stop it and return control to @value{GDBN}. This command is
3299 abbreviated @code{s}.
3300
3301 @quotation
3302 @c "without debugging information" is imprecise; actually "without line
3303 @c numbers in the debugging information". (gcc -g1 has debugging info but
3304 @c not line numbers). But it seems complex to try to make that
3305 @c distinction here.
3306 @emph{Warning:} If you use the @code{step} command while control is
3307 within a function that was compiled without debugging information,
3308 execution proceeds until control reaches a function that does have
3309 debugging information. Likewise, it will not step into a function which
3310 is compiled without debugging information. To step through functions
3311 without debugging information, use the @code{stepi} command, described
3312 below.
3313 @end quotation
3314
3315 The @code{step} command only stops at the first instruction of a source
3316 line. This prevents the multiple stops that could otherwise occur in
3317 @code{switch} statements, @code{for} loops, etc. @code{step} continues
3318 to stop if a function that has debugging information is called within
3319 the line. In other words, @code{step} @emph{steps inside} any functions
3320 called within the line.
3321
3322 Also, the @code{step} command only enters a function if there is line
3323 number information for the function. Otherwise it acts like the
3324 @code{next} command. This avoids problems when using @code{cc -gl}
3325 on MIPS machines. Previously, @code{step} entered subroutines if there
3326 was any debugging information about the routine.
3327
3328 @item step @var{count}
3329 Continue running as in @code{step}, but do so @var{count} times. If a
3330 breakpoint is reached, or a signal not related to stepping occurs before
3331 @var{count} steps, stepping stops right away.
3332
3333 @kindex next
3334 @kindex n @r{(@code{next})}
3335 @item next @r{[}@var{count}@r{]}
3336 Continue to the next source line in the current (innermost) stack frame.
3337 This is similar to @code{step}, but function calls that appear within
3338 the line of code are executed without stopping. Execution stops when
3339 control reaches a different line of code at the original stack level
3340 that was executing when you gave the @code{next} command. This command
3341 is abbreviated @code{n}.
3342
3343 An argument @var{count} is a repeat count, as for @code{step}.
3344
3345
3346 @c FIX ME!! Do we delete this, or is there a way it fits in with
3347 @c the following paragraph? --- Vctoria
3348 @c
3349 @c @code{next} within a function that lacks debugging information acts like
3350 @c @code{step}, but any function calls appearing within the code of the
3351 @c function are executed without stopping.
3352
3353 The @code{next} command only stops at the first instruction of a
3354 source line. This prevents multiple stops that could otherwise occur in
3355 @code{switch} statements, @code{for} loops, etc.
3356
3357 @kindex set step-mode
3358 @item set step-mode
3359 @cindex functions without line info, and stepping
3360 @cindex stepping into functions with no line info
3361 @itemx set step-mode on
3362 The @code{set step-mode on} command causes the @code{step} command to
3363 stop at the first instruction of a function which contains no debug line
3364 information rather than stepping over it.
3365
3366 This is useful in cases where you may be interested in inspecting the
3367 machine instructions of a function which has no symbolic info and do not
3368 want @value{GDBN} to automatically skip over this function.
3369
3370 @item set step-mode off
3371 Causes the @code{step} command to step over any functions which contains no
3372 debug information. This is the default.
3373
3374 @kindex finish
3375 @item finish
3376 Continue running until just after function in the selected stack frame
3377 returns. Print the returned value (if any).
3378
3379 Contrast this with the @code{return} command (@pxref{Returning,
3380 ,Returning from a function}).
3381
3382 @kindex until
3383 @kindex u @r{(@code{until})}
3384 @item until
3385 @itemx u
3386 Continue running until a source line past the current line, in the
3387 current stack frame, is reached. This command is used to avoid single
3388 stepping through a loop more than once. It is like the @code{next}
3389 command, except that when @code{until} encounters a jump, it
3390 automatically continues execution until the program counter is greater
3391 than the address of the jump.
3392
3393 This means that when you reach the end of a loop after single stepping
3394 though it, @code{until} makes your program continue execution until it
3395 exits the loop. In contrast, a @code{next} command at the end of a loop
3396 simply steps back to the beginning of the loop, which forces you to step
3397 through the next iteration.
3398
3399 @code{until} always stops your program if it attempts to exit the current
3400 stack frame.
3401
3402 @code{until} may produce somewhat counterintuitive results if the order
3403 of machine code does not match the order of the source lines. For
3404 example, in the following excerpt from a debugging session, the @code{f}
3405 (@code{frame}) command shows that execution is stopped at line
3406 @code{206}; yet when we use @code{until}, we get to line @code{195}:
3407
3408 @example
3409 (@value{GDBP}) f
3410 #0 main (argc=4, argv=0xf7fffae8) at m4.c:206
3411 206 expand_input();
3412 (@value{GDBP}) until
3413 195 for ( ; argc > 0; NEXTARG) @{
3414 @end example
3415
3416 This happened because, for execution efficiency, the compiler had
3417 generated code for the loop closure test at the end, rather than the
3418 start, of the loop---even though the test in a C @code{for}-loop is
3419 written before the body of the loop. The @code{until} command appeared
3420 to step back to the beginning of the loop when it advanced to this
3421 expression; however, it has not really gone to an earlier
3422 statement---not in terms of the actual machine code.
3423
3424 @code{until} with no argument works by means of single
3425 instruction stepping, and hence is slower than @code{until} with an
3426 argument.
3427
3428 @item until @var{location}
3429 @itemx u @var{location}
3430 Continue running your program until either the specified location is
3431 reached, or the current stack frame returns. @var{location} is any of
3432 the forms of argument acceptable to @code{break} (@pxref{Set Breaks,
3433 ,Setting breakpoints}). This form of the command uses breakpoints,
3434 and hence is quicker than @code{until} without an argument.
3435
3436 @kindex stepi
3437 @kindex si @r{(@code{stepi})}
3438 @item stepi
3439 @itemx stepi @var{arg}
3440 @itemx si
3441 Execute one machine instruction, then stop and return to the debugger.
3442
3443 It is often useful to do @samp{display/i $pc} when stepping by machine
3444 instructions. This makes @value{GDBN} automatically display the next
3445 instruction to be executed, each time your program stops. @xref{Auto
3446 Display,, Automatic display}.
3447
3448 An argument is a repeat count, as in @code{step}.
3449
3450 @need 750
3451 @kindex nexti
3452 @kindex ni @r{(@code{nexti})}
3453 @item nexti
3454 @itemx nexti @var{arg}
3455 @itemx ni
3456 Execute one machine instruction, but if it is a function call,
3457 proceed until the function returns.
3458
3459 An argument is a repeat count, as in @code{next}.
3460 @end table
3461
3462 @node Signals
3463 @section Signals
3464 @cindex signals
3465
3466 A signal is an asynchronous event that can happen in a program. The
3467 operating system defines the possible kinds of signals, and gives each
3468 kind a name and a number. For example, in Unix @code{SIGINT} is the
3469 signal a program gets when you type an interrupt character (often @kbd{C-c});
3470 @code{SIGSEGV} is the signal a program gets from referencing a place in
3471 memory far away from all the areas in use; @code{SIGALRM} occurs when
3472 the alarm clock timer goes off (which happens only if your program has
3473 requested an alarm).
3474
3475 @cindex fatal signals
3476 Some signals, including @code{SIGALRM}, are a normal part of the
3477 functioning of your program. Others, such as @code{SIGSEGV}, indicate
3478 errors; these signals are @dfn{fatal} (they kill your program immediately) if the
3479 program has not specified in advance some other way to handle the signal.
3480 @code{SIGINT} does not indicate an error in your program, but it is normally
3481 fatal so it can carry out the purpose of the interrupt: to kill the program.
3482
3483 @value{GDBN} has the ability to detect any occurrence of a signal in your
3484 program. You can tell @value{GDBN} in advance what to do for each kind of
3485 signal.
3486
3487 @cindex handling signals
3488 Normally, @value{GDBN} is set up to let the non-erroneous signals like
3489 @code{SIGALRM} be silently passed to your program
3490 (so as not to interfere with their role in the program's functioning)
3491 but to stop your program immediately whenever an error signal happens.
3492 You can change these settings with the @code{handle} command.
3493
3494 @table @code
3495 @kindex info signals
3496 @item info signals
3497 @itemx info handle
3498 Print a table of all the kinds of signals and how @value{GDBN} has been told to
3499 handle each one. You can use this to see the signal numbers of all
3500 the defined types of signals.
3501
3502 @code{info handle} is an alias for @code{info signals}.
3503
3504 @kindex handle
3505 @item handle @var{signal} @var{keywords}@dots{}
3506 Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
3507 can be the number of a signal or its name (with or without the
3508 @samp{SIG} at the beginning); a list of signal numbers of the form
3509 @samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
3510 known signals. The @var{keywords} say what change to make.
3511 @end table
3512
3513 @c @group
3514 The keywords allowed by the @code{handle} command can be abbreviated.
3515 Their full names are:
3516
3517 @table @code
3518 @item nostop
3519 @value{GDBN} should not stop your program when this signal happens. It may
3520 still print a message telling you that the signal has come in.
3521
3522 @item stop
3523 @value{GDBN} should stop your program when this signal happens. This implies
3524 the @code{print} keyword as well.
3525
3526 @item print
3527 @value{GDBN} should print a message when this signal happens.
3528
3529 @item noprint
3530 @value{GDBN} should not mention the occurrence of the signal at all. This
3531 implies the @code{nostop} keyword as well.
3532
3533 @item pass
3534 @itemx noignore
3535 @value{GDBN} should allow your program to see this signal; your program
3536 can handle the signal, or else it may terminate if the signal is fatal
3537 and not handled. @code{pass} and @code{noignore} are synonyms.
3538
3539 @item nopass
3540 @itemx ignore
3541 @value{GDBN} should not allow your program to see this signal.
3542 @code{nopass} and @code{ignore} are synonyms.
3543 @end table
3544 @c @end group
3545
3546 When a signal stops your program, the signal is not visible to the
3547 program until you
3548 continue. Your program sees the signal then, if @code{pass} is in
3549 effect for the signal in question @emph{at that time}. In other words,
3550 after @value{GDBN} reports a signal, you can use the @code{handle}
3551 command with @code{pass} or @code{nopass} to control whether your
3552 program sees that signal when you continue.
3553
3554 The default is set to @code{nostop}, @code{noprint}, @code{pass} for
3555 non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
3556 @code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
3557 erroneous signals.
3558
3559 You can also use the @code{signal} command to prevent your program from
3560 seeing a signal, or cause it to see a signal it normally would not see,
3561 or to give it any signal at any time. For example, if your program stopped
3562 due to some sort of memory reference error, you might store correct
3563 values into the erroneous variables and continue, hoping to see more
3564 execution; but your program would probably terminate immediately as
3565 a result of the fatal signal once it saw the signal. To prevent this,
3566 you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
3567 program a signal}.
3568
3569 @node Thread Stops
3570 @section Stopping and starting multi-thread programs
3571
3572 When your program has multiple threads (@pxref{Threads,, Debugging
3573 programs with multiple threads}), you can choose whether to set
3574 breakpoints on all threads, or on a particular thread.
3575
3576 @table @code
3577 @cindex breakpoints and threads
3578 @cindex thread breakpoints
3579 @kindex break @dots{} thread @var{threadno}
3580 @item break @var{linespec} thread @var{threadno}
3581 @itemx break @var{linespec} thread @var{threadno} if @dots{}
3582 @var{linespec} specifies source lines; there are several ways of
3583 writing them, but the effect is always to specify some source line.
3584
3585 Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
3586 to specify that you only want @value{GDBN} to stop the program when a
3587 particular thread reaches this breakpoint. @var{threadno} is one of the
3588 numeric thread identifiers assigned by @value{GDBN}, shown in the first
3589 column of the @samp{info threads} display.
3590
3591 If you do not specify @samp{thread @var{threadno}} when you set a
3592 breakpoint, the breakpoint applies to @emph{all} threads of your
3593 program.
3594
3595 You can use the @code{thread} qualifier on conditional breakpoints as
3596 well; in this case, place @samp{thread @var{threadno}} before the
3597 breakpoint condition, like this:
3598
3599 @smallexample
3600 (@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
3601 @end smallexample
3602
3603 @end table
3604
3605 @cindex stopped threads
3606 @cindex threads, stopped
3607 Whenever your program stops under @value{GDBN} for any reason,
3608 @emph{all} threads of execution stop, not just the current thread. This
3609 allows you to examine the overall state of the program, including
3610 switching between threads, without worrying that things may change
3611 underfoot.
3612
3613 @cindex continuing threads
3614 @cindex threads, continuing
3615 Conversely, whenever you restart the program, @emph{all} threads start
3616 executing. @emph{This is true even when single-stepping} with commands
3617 like @code{step} or @code{next}.
3618
3619 In particular, @value{GDBN} cannot single-step all threads in lockstep.
3620 Since thread scheduling is up to your debugging target's operating
3621 system (not controlled by @value{GDBN}), other threads may
3622 execute more than one statement while the current thread completes a
3623 single step. Moreover, in general other threads stop in the middle of a
3624 statement, rather than at a clean statement boundary, when the program
3625 stops.
3626
3627 You might even find your program stopped in another thread after
3628 continuing or even single-stepping. This happens whenever some other
3629 thread runs into a breakpoint, a signal, or an exception before the
3630 first thread completes whatever you requested.
3631
3632 On some OSes, you can lock the OS scheduler and thus allow only a single
3633 thread to run.
3634
3635 @table @code
3636 @item set scheduler-locking @var{mode}
3637 Set the scheduler locking mode. If it is @code{off}, then there is no
3638 locking and any thread may run at any time. If @code{on}, then only the
3639 current thread may run when the inferior is resumed. The @code{step}
3640 mode optimizes for single-stepping. It stops other threads from
3641 ``seizing the prompt'' by preempting the current thread while you are
3642 stepping. Other threads will only rarely (or never) get a chance to run
3643 when you step. They are more likely to run when you @samp{next} over a
3644 function call, and they are completely free to run when you use commands
3645 like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
3646 thread hits a breakpoint during its timeslice, they will never steal the
3647 @value{GDBN} prompt away from the thread that you are debugging.
3648
3649 @item show scheduler-locking
3650 Display the current scheduler locking mode.
3651 @end table
3652
3653
3654 @node Stack
3655 @chapter Examining the Stack
3656
3657 When your program has stopped, the first thing you need to know is where it
3658 stopped and how it got there.
3659
3660 @cindex call stack
3661 Each time your program performs a function call, information about the call
3662 is generated.
3663 That information includes the location of the call in your program,
3664 the arguments of the call,
3665 and the local variables of the function being called.
3666 The information is saved in a block of data called a @dfn{stack frame}.
3667 The stack frames are allocated in a region of memory called the @dfn{call
3668 stack}.
3669
3670 When your program stops, the @value{GDBN} commands for examining the
3671 stack allow you to see all of this information.
3672
3673 @cindex selected frame
3674 One of the stack frames is @dfn{selected} by @value{GDBN} and many
3675 @value{GDBN} commands refer implicitly to the selected frame. In
3676 particular, whenever you ask @value{GDBN} for the value of a variable in
3677 your program, the value is found in the selected frame. There are
3678 special @value{GDBN} commands to select whichever frame you are
3679 interested in. @xref{Selection, ,Selecting a frame}.
3680
3681 When your program stops, @value{GDBN} automatically selects the
3682 currently executing frame and describes it briefly, similar to the
3683 @code{frame} command (@pxref{Frame Info, ,Information about a frame}).
3684
3685 @menu
3686 * Frames:: Stack frames
3687 * Backtrace:: Backtraces
3688 * Selection:: Selecting a frame
3689 * Frame Info:: Information on a frame
3690
3691 @end menu
3692
3693 @node Frames
3694 @section Stack frames
3695
3696 @cindex frame, definition
3697 @cindex stack frame
3698 The call stack is divided up into contiguous pieces called @dfn{stack
3699 frames}, or @dfn{frames} for short; each frame is the data associated
3700 with one call to one function. The frame contains the arguments given
3701 to the function, the function's local variables, and the address at
3702 which the function is executing.
3703
3704 @cindex initial frame
3705 @cindex outermost frame
3706 @cindex innermost frame
3707 When your program is started, the stack has only one frame, that of the
3708 function @code{main}. This is called the @dfn{initial} frame or the
3709 @dfn{outermost} frame. Each time a function is called, a new frame is
3710 made. Each time a function returns, the frame for that function invocation
3711 is eliminated. If a function is recursive, there can be many frames for
3712 the same function. The frame for the function in which execution is
3713 actually occurring is called the @dfn{innermost} frame. This is the most
3714 recently created of all the stack frames that still exist.
3715
3716 @cindex frame pointer
3717 Inside your program, stack frames are identified by their addresses. A
3718 stack frame consists of many bytes, each of which has its own address; each
3719 kind of computer has a convention for choosing one byte whose
3720 address serves as the address of the frame. Usually this address is kept
3721 in a register called the @dfn{frame pointer register} while execution is
3722 going on in that frame.
3723
3724 @cindex frame number
3725 @value{GDBN} assigns numbers to all existing stack frames, starting with
3726 zero for the innermost frame, one for the frame that called it,
3727 and so on upward. These numbers do not really exist in your program;
3728 they are assigned by @value{GDBN} to give you a way of designating stack
3729 frames in @value{GDBN} commands.
3730
3731 @c The -fomit-frame-pointer below perennially causes hbox overflow
3732 @c underflow problems.
3733 @cindex frameless execution
3734 Some compilers provide a way to compile functions so that they operate
3735 without stack frames. (For example, the @value{GCC} option
3736 @example
3737 @samp{-fomit-frame-pointer}
3738 @end example
3739 generates functions without a frame.)
3740 This is occasionally done with heavily used library functions to save
3741 the frame setup time. @value{GDBN} has limited facilities for dealing
3742 with these function invocations. If the innermost function invocation
3743 has no stack frame, @value{GDBN} nevertheless regards it as though
3744 it had a separate frame, which is numbered zero as usual, allowing
3745 correct tracing of the function call chain. However, @value{GDBN} has
3746 no provision for frameless functions elsewhere in the stack.
3747
3748 @table @code
3749 @kindex frame@r{, command}
3750 @cindex current stack frame
3751 @item frame @var{args}
3752 The @code{frame} command allows you to move from one stack frame to another,
3753 and to print the stack frame you select. @var{args} may be either the
3754 address of the frame or the stack frame number. Without an argument,
3755 @code{frame} prints the current stack frame.
3756
3757 @kindex select-frame
3758 @cindex selecting frame silently
3759 @item select-frame
3760 The @code{select-frame} command allows you to move from one stack frame
3761 to another without printing the frame. This is the silent version of
3762 @code{frame}.
3763 @end table
3764
3765 @node Backtrace
3766 @section Backtraces
3767
3768 @cindex backtraces
3769 @cindex tracebacks
3770 @cindex stack traces
3771 A backtrace is a summary of how your program got where it is. It shows one
3772 line per frame, for many frames, starting with the currently executing
3773 frame (frame zero), followed by its caller (frame one), and on up the
3774 stack.
3775
3776 @table @code
3777 @kindex backtrace
3778 @kindex bt @r{(@code{backtrace})}
3779 @item backtrace
3780 @itemx bt
3781 Print a backtrace of the entire stack: one line per frame for all
3782 frames in the stack.
3783
3784 You can stop the backtrace at any time by typing the system interrupt
3785 character, normally @kbd{C-c}.
3786
3787 @item backtrace @var{n}
3788 @itemx bt @var{n}
3789 Similar, but print only the innermost @var{n} frames.
3790
3791 @item backtrace -@var{n}
3792 @itemx bt -@var{n}
3793 Similar, but print only the outermost @var{n} frames.
3794 @end table
3795
3796 @kindex where
3797 @kindex info stack
3798 @kindex info s @r{(@code{info stack})}
3799 The names @code{where} and @code{info stack} (abbreviated @code{info s})
3800 are additional aliases for @code{backtrace}.
3801
3802 Each line in the backtrace shows the frame number and the function name.
3803 The program counter value is also shown---unless you use @code{set
3804 print address off}. The backtrace also shows the source file name and
3805 line number, as well as the arguments to the function. The program
3806 counter value is omitted if it is at the beginning of the code for that
3807 line number.
3808
3809 Here is an example of a backtrace. It was made with the command
3810 @samp{bt 3}, so it shows the innermost three frames.
3811
3812 @smallexample
3813 @group
3814 #0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
3815 at builtin.c:993
3816 #1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
3817 #2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
3818 at macro.c:71
3819 (More stack frames follow...)
3820 @end group
3821 @end smallexample
3822
3823 @noindent
3824 The display for frame zero does not begin with a program counter
3825 value, indicating that your program has stopped at the beginning of the
3826 code for line @code{993} of @code{builtin.c}.
3827
3828 @node Selection
3829 @section Selecting a frame
3830
3831 Most commands for examining the stack and other data in your program work on
3832 whichever stack frame is selected at the moment. Here are the commands for
3833 selecting a stack frame; all of them finish by printing a brief description
3834 of the stack frame just selected.
3835
3836 @table @code
3837 @kindex frame@r{, selecting}
3838 @kindex f @r{(@code{frame})}
3839 @item frame @var{n}
3840 @itemx f @var{n}
3841 Select frame number @var{n}. Recall that frame zero is the innermost
3842 (currently executing) frame, frame one is the frame that called the
3843 innermost one, and so on. The highest-numbered frame is the one for
3844 @code{main}.
3845
3846 @item frame @var{addr}
3847 @itemx f @var{addr}
3848 Select the frame at address @var{addr}. This is useful mainly if the
3849 chaining of stack frames has been damaged by a bug, making it
3850 impossible for @value{GDBN} to assign numbers properly to all frames. In
3851 addition, this can be useful when your program has multiple stacks and
3852 switches between them.
3853
3854 On the SPARC architecture, @code{frame} needs two addresses to
3855 select an arbitrary frame: a frame pointer and a stack pointer.
3856
3857 On the MIPS and Alpha architecture, it needs two addresses: a stack
3858 pointer and a program counter.
3859
3860 On the 29k architecture, it needs three addresses: a register stack
3861 pointer, a program counter, and a memory stack pointer.
3862 @c note to future updaters: this is conditioned on a flag
3863 @c SETUP_ARBITRARY_FRAME in the tm-*.h files. The above is up to date
3864 @c as of 27 Jan 1994.
3865
3866 @kindex up
3867 @item up @var{n}
3868 Move @var{n} frames up the stack. For positive numbers @var{n}, this
3869 advances toward the outermost frame, to higher frame numbers, to frames
3870 that have existed longer. @var{n} defaults to one.
3871
3872 @kindex down
3873 @kindex do @r{(@code{down})}
3874 @item down @var{n}
3875 Move @var{n} frames down the stack. For positive numbers @var{n}, this
3876 advances toward the innermost frame, to lower frame numbers, to frames
3877 that were created more recently. @var{n} defaults to one. You may
3878 abbreviate @code{down} as @code{do}.
3879 @end table
3880
3881 All of these commands end by printing two lines of output describing the
3882 frame. The first line shows the frame number, the function name, the
3883 arguments, and the source file and line number of execution in that
3884 frame. The second line shows the text of that source line.
3885
3886 @need 1000
3887 For example:
3888
3889 @smallexample
3890 @group
3891 (@value{GDBP}) up
3892 #1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
3893 at env.c:10
3894 10 read_input_file (argv[i]);
3895 @end group
3896 @end smallexample
3897
3898 After such a printout, the @code{list} command with no arguments
3899 prints ten lines centered on the point of execution in the frame.
3900 @xref{List, ,Printing source lines}.
3901
3902 @table @code
3903 @kindex down-silently
3904 @kindex up-silently
3905 @item up-silently @var{n}
3906 @itemx down-silently @var{n}
3907 These two commands are variants of @code{up} and @code{down},
3908 respectively; they differ in that they do their work silently, without
3909 causing display of the new frame. They are intended primarily for use
3910 in @value{GDBN} command scripts, where the output might be unnecessary and
3911 distracting.
3912 @end table
3913
3914 @node Frame Info
3915 @section Information about a frame
3916
3917 There are several other commands to print information about the selected
3918 stack frame.
3919
3920 @table @code
3921 @item frame
3922 @itemx f
3923 When used without any argument, this command does not change which
3924 frame is selected, but prints a brief description of the currently
3925 selected stack frame. It can be abbreviated @code{f}. With an
3926 argument, this command is used to select a stack frame.
3927 @xref{Selection, ,Selecting a frame}.
3928
3929 @kindex info frame
3930 @kindex info f @r{(@code{info frame})}
3931 @item info frame
3932 @itemx info f
3933 This command prints a verbose description of the selected stack frame,
3934 including:
3935
3936 @itemize @bullet
3937 @item
3938 the address of the frame
3939 @item
3940 the address of the next frame down (called by this frame)
3941 @item
3942 the address of the next frame up (caller of this frame)
3943 @item
3944 the language in which the source code corresponding to this frame is written
3945 @item
3946 the address of the frame's arguments
3947 @item
3948 the address of the frame's local variables
3949 @item
3950 the program counter saved in it (the address of execution in the caller frame)
3951 @item
3952 which registers were saved in the frame
3953 @end itemize
3954
3955 @noindent The verbose description is useful when
3956 something has gone wrong that has made the stack format fail to fit
3957 the usual conventions.
3958
3959 @item info frame @var{addr}
3960 @itemx info f @var{addr}
3961 Print a verbose description of the frame at address @var{addr}, without
3962 selecting that frame. The selected frame remains unchanged by this
3963 command. This requires the same kind of address (more than one for some
3964 architectures) that you specify in the @code{frame} command.
3965 @xref{Selection, ,Selecting a frame}.
3966
3967 @kindex info args
3968 @item info args
3969 Print the arguments of the selected frame, each on a separate line.
3970
3971 @item info locals
3972 @kindex info locals
3973 Print the local variables of the selected frame, each on a separate
3974 line. These are all variables (declared either static or automatic)
3975 accessible at the point of execution of the selected frame.
3976
3977 @kindex info catch
3978 @cindex catch exceptions, list active handlers
3979 @cindex exception handlers, how to list
3980 @item info catch
3981 Print a list of all the exception handlers that are active in the
3982 current stack frame at the current point of execution. To see other
3983 exception handlers, visit the associated frame (using the @code{up},
3984 @code{down}, or @code{frame} commands); then type @code{info catch}.
3985 @xref{Set Catchpoints, , Setting catchpoints}.
3986
3987 @end table
3988
3989
3990 @node Source
3991 @chapter Examining Source Files
3992
3993 @value{GDBN} can print parts of your program's source, since the debugging
3994 information recorded in the program tells @value{GDBN} what source files were
3995 used to build it. When your program stops, @value{GDBN} spontaneously prints
3996 the line where it stopped. Likewise, when you select a stack frame
3997 (@pxref{Selection, ,Selecting a frame}), @value{GDBN} prints the line where
3998 execution in that frame has stopped. You can print other portions of
3999 source files by explicit command.
4000
4001 If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
4002 prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
4003 @value{GDBN} under @sc{gnu} Emacs}.
4004
4005 @menu
4006 * List:: Printing source lines
4007 * Search:: Searching source files
4008 * Source Path:: Specifying source directories
4009 * Machine Code:: Source and machine code
4010 @end menu
4011
4012 @node List
4013 @section Printing source lines
4014
4015 @kindex list
4016 @kindex l @r{(@code{list})}
4017 To print lines from a source file, use the @code{list} command
4018 (abbreviated @code{l}). By default, ten lines are printed.
4019 There are several ways to specify what part of the file you want to print.
4020
4021 Here are the forms of the @code{list} command most commonly used:
4022
4023 @table @code
4024 @item list @var{linenum}
4025 Print lines centered around line number @var{linenum} in the
4026 current source file.
4027
4028 @item list @var{function}
4029 Print lines centered around the beginning of function
4030 @var{function}.
4031
4032 @item list
4033 Print more lines. If the last lines printed were printed with a
4034 @code{list} command, this prints lines following the last lines
4035 printed; however, if the last line printed was a solitary line printed
4036 as part of displaying a stack frame (@pxref{Stack, ,Examining the
4037 Stack}), this prints lines centered around that line.
4038
4039 @item list -
4040 Print lines just before the lines last printed.
4041 @end table
4042
4043 By default, @value{GDBN} prints ten source lines with any of these forms of
4044 the @code{list} command. You can change this using @code{set listsize}:
4045
4046 @table @code
4047 @kindex set listsize
4048 @item set listsize @var{count}
4049 Make the @code{list} command display @var{count} source lines (unless
4050 the @code{list} argument explicitly specifies some other number).
4051
4052 @kindex show listsize
4053 @item show listsize
4054 Display the number of lines that @code{list} prints.
4055 @end table
4056
4057 Repeating a @code{list} command with @key{RET} discards the argument,
4058 so it is equivalent to typing just @code{list}. This is more useful
4059 than listing the same lines again. An exception is made for an
4060 argument of @samp{-}; that argument is preserved in repetition so that
4061 each repetition moves up in the source file.
4062
4063 @cindex linespec
4064 In general, the @code{list} command expects you to supply zero, one or two
4065 @dfn{linespecs}. Linespecs specify source lines; there are several ways
4066 of writing them, but the effect is always to specify some source line.
4067 Here is a complete description of the possible arguments for @code{list}:
4068
4069 @table @code
4070 @item list @var{linespec}
4071 Print lines centered around the line specified by @var{linespec}.
4072
4073 @item list @var{first},@var{last}
4074 Print lines from @var{first} to @var{last}. Both arguments are
4075 linespecs.
4076
4077 @item list ,@var{last}
4078 Print lines ending with @var{last}.
4079
4080 @item list @var{first},
4081 Print lines starting with @var{first}.
4082
4083 @item list +
4084 Print lines just after the lines last printed.
4085
4086 @item list -
4087 Print lines just before the lines last printed.
4088
4089 @item list
4090 As described in the preceding table.
4091 @end table
4092
4093 Here are the ways of specifying a single source line---all the
4094 kinds of linespec.
4095
4096 @table @code
4097 @item @var{number}
4098 Specifies line @var{number} of the current source file.
4099 When a @code{list} command has two linespecs, this refers to
4100 the same source file as the first linespec.
4101
4102 @item +@var{offset}
4103 Specifies the line @var{offset} lines after the last line printed.
4104 When used as the second linespec in a @code{list} command that has
4105 two, this specifies the line @var{offset} lines down from the
4106 first linespec.
4107
4108 @item -@var{offset}
4109 Specifies the line @var{offset} lines before the last line printed.
4110
4111 @item @var{filename}:@var{number}
4112 Specifies line @var{number} in the source file @var{filename}.
4113
4114 @item @var{function}
4115 Specifies the line that begins the body of the function @var{function}.
4116 For example: in C, this is the line with the open brace.
4117
4118 @item @var{filename}:@var{function}
4119 Specifies the line of the open-brace that begins the body of the
4120 function @var{function} in the file @var{filename}. You only need the
4121 file name with a function name to avoid ambiguity when there are
4122 identically named functions in different source files.
4123
4124 @item *@var{address}
4125 Specifies the line containing the program address @var{address}.
4126 @var{address} may be any expression.
4127 @end table
4128
4129 @node Search
4130 @section Searching source files
4131 @cindex searching
4132 @kindex reverse-search
4133
4134 There are two commands for searching through the current source file for a
4135 regular expression.
4136
4137 @table @code
4138 @kindex search
4139 @kindex forward-search
4140 @item forward-search @var{regexp}
4141 @itemx search @var{regexp}
4142 The command @samp{forward-search @var{regexp}} checks each line,
4143 starting with the one following the last line listed, for a match for
4144 @var{regexp}. It lists the line that is found. You can use the
4145 synonym @samp{search @var{regexp}} or abbreviate the command name as
4146 @code{fo}.
4147
4148 @item reverse-search @var{regexp}
4149 The command @samp{reverse-search @var{regexp}} checks each line, starting
4150 with the one before the last line listed and going backward, for a match
4151 for @var{regexp}. It lists the line that is found. You can abbreviate
4152 this command as @code{rev}.
4153 @end table
4154
4155 @node Source Path
4156 @section Specifying source directories
4157
4158 @cindex source path
4159 @cindex directories for source files
4160 Executable programs sometimes do not record the directories of the source
4161 files from which they were compiled, just the names. Even when they do,
4162 the directories could be moved between the compilation and your debugging
4163 session. @value{GDBN} has a list of directories to search for source files;
4164 this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
4165 it tries all the directories in the list, in the order they are present
4166 in the list, until it finds a file with the desired name. Note that
4167 the executable search path is @emph{not} used for this purpose. Neither is
4168 the current working directory, unless it happens to be in the source
4169 path.
4170
4171 If @value{GDBN} cannot find a source file in the source path, and the
4172 object program records a directory, @value{GDBN} tries that directory
4173 too. If the source path is empty, and there is no record of the
4174 compilation directory, @value{GDBN} looks in the current directory as a
4175 last resort.
4176
4177 Whenever you reset or rearrange the source path, @value{GDBN} clears out
4178 any information it has cached about where source files are found and where
4179 each line is in the file.
4180
4181 @kindex directory
4182 @kindex dir
4183 When you start @value{GDBN}, its source path includes only @samp{cdir}
4184 and @samp{cwd}, in that order.
4185 To add other directories, use the @code{directory} command.
4186
4187 @table @code
4188 @item directory @var{dirname} @dots{}
4189 @item dir @var{dirname} @dots{}
4190 Add directory @var{dirname} to the front of the source path. Several
4191 directory names may be given to this command, separated by @samp{:}
4192 (@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
4193 part of absolute file names) or
4194 whitespace. You may specify a directory that is already in the source
4195 path; this moves it forward, so @value{GDBN} searches it sooner.
4196
4197 @kindex cdir
4198 @kindex cwd
4199 @vindex $cdir@r{, convenience variable}
4200 @vindex $cwdr@r{, convenience variable}
4201 @cindex compilation directory
4202 @cindex current directory
4203 @cindex working directory
4204 @cindex directory, current
4205 @cindex directory, compilation
4206 You can use the string @samp{$cdir} to refer to the compilation
4207 directory (if one is recorded), and @samp{$cwd} to refer to the current
4208 working directory. @samp{$cwd} is not the same as @samp{.}---the former
4209 tracks the current working directory as it changes during your @value{GDBN}
4210 session, while the latter is immediately expanded to the current
4211 directory at the time you add an entry to the source path.
4212
4213 @item directory
4214 Reset the source path to empty again. This requires confirmation.
4215
4216 @c RET-repeat for @code{directory} is explicitly disabled, but since
4217 @c repeating it would be a no-op we do not say that. (thanks to RMS)
4218
4219 @item show directories
4220 @kindex show directories
4221 Print the source path: show which directories it contains.
4222 @end table
4223
4224 If your source path is cluttered with directories that are no longer of
4225 interest, @value{GDBN} may sometimes cause confusion by finding the wrong
4226 versions of source. You can correct the situation as follows:
4227
4228 @enumerate
4229 @item
4230 Use @code{directory} with no argument to reset the source path to empty.
4231
4232 @item
4233 Use @code{directory} with suitable arguments to reinstall the
4234 directories you want in the source path. You can add all the
4235 directories in one command.
4236 @end enumerate
4237
4238 @node Machine Code
4239 @section Source and machine code
4240
4241 You can use the command @code{info line} to map source lines to program
4242 addresses (and vice versa), and the command @code{disassemble} to display
4243 a range of addresses as machine instructions. When run under @sc{gnu} Emacs
4244 mode, the @code{info line} command causes the arrow to point to the
4245 line specified. Also, @code{info line} prints addresses in symbolic form as
4246 well as hex.
4247
4248 @table @code
4249 @kindex info line
4250 @item info line @var{linespec}
4251 Print the starting and ending addresses of the compiled code for
4252 source line @var{linespec}. You can specify source lines in any of
4253 the ways understood by the @code{list} command (@pxref{List, ,Printing
4254 source lines}).
4255 @end table
4256
4257 For example, we can use @code{info line} to discover the location of
4258 the object code for the first line of function
4259 @code{m4_changequote}:
4260
4261 @c FIXME: I think this example should also show the addresses in
4262 @c symbolic form, as they usually would be displayed.
4263 @smallexample
4264 (@value{GDBP}) info line m4_changequote
4265 Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
4266 @end smallexample
4267
4268 @noindent
4269 We can also inquire (using @code{*@var{addr}} as the form for
4270 @var{linespec}) what source line covers a particular address:
4271 @smallexample
4272 (@value{GDBP}) info line *0x63ff
4273 Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
4274 @end smallexample
4275
4276 @cindex @code{$_} and @code{info line}
4277 @kindex x@r{(examine), and} info line
4278 After @code{info line}, the default address for the @code{x} command
4279 is changed to the starting address of the line, so that @samp{x/i} is
4280 sufficient to begin examining the machine code (@pxref{Memory,
4281 ,Examining memory}). Also, this address is saved as the value of the
4282 convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
4283 variables}).
4284
4285 @table @code
4286 @kindex disassemble
4287 @cindex assembly instructions
4288 @cindex instructions, assembly
4289 @cindex machine instructions
4290 @cindex listing machine instructions
4291 @item disassemble
4292 This specialized command dumps a range of memory as machine
4293 instructions. The default memory range is the function surrounding the
4294 program counter of the selected frame. A single argument to this
4295 command is a program counter value; @value{GDBN} dumps the function
4296 surrounding this value. Two arguments specify a range of addresses
4297 (first inclusive, second exclusive) to dump.
4298 @end table
4299
4300 The following example shows the disassembly of a range of addresses of
4301 HP PA-RISC 2.0 code:
4302
4303 @smallexample
4304 (@value{GDBP}) disas 0x32c4 0x32e4
4305 Dump of assembler code from 0x32c4 to 0x32e4:
4306 0x32c4 <main+204>: addil 0,dp
4307 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
4308 0x32cc <main+212>: ldil 0x3000,r31
4309 0x32d0 <main+216>: ble 0x3f8(sr4,r31)
4310 0x32d4 <main+220>: ldo 0(r31),rp
4311 0x32d8 <main+224>: addil -0x800,dp
4312 0x32dc <main+228>: ldo 0x588(r1),r26
4313 0x32e0 <main+232>: ldil 0x3000,r31
4314 End of assembler dump.
4315 @end smallexample
4316
4317 Some architectures have more than one commonly-used set of instruction
4318 mnemonics or other syntax.
4319
4320 @table @code
4321 @kindex set disassembly-flavor
4322 @cindex assembly instructions
4323 @cindex instructions, assembly
4324 @cindex machine instructions
4325 @cindex listing machine instructions
4326 @cindex Intel disassembly flavor
4327 @cindex AT&T disassembly flavor
4328 @item set disassembly-flavor @var{instruction-set}
4329 Select the instruction set to use when disassembling the
4330 program via the @code{disassemble} or @code{x/i} commands.
4331
4332 Currently this command is only defined for the Intel x86 family. You
4333 can set @var{instruction-set} to either @code{intel} or @code{att}.
4334 The default is @code{att}, the AT&T flavor used by default by Unix
4335 assemblers for x86-based targets.
4336 @end table
4337
4338
4339 @node Data
4340 @chapter Examining Data
4341
4342 @cindex printing data
4343 @cindex examining data
4344 @kindex print
4345 @kindex inspect
4346 @c "inspect" is not quite a synonym if you are using Epoch, which we do not
4347 @c document because it is nonstandard... Under Epoch it displays in a
4348 @c different window or something like that.
4349 The usual way to examine data in your program is with the @code{print}
4350 command (abbreviated @code{p}), or its synonym @code{inspect}. It
4351 evaluates and prints the value of an expression of the language your
4352 program is written in (@pxref{Languages, ,Using @value{GDBN} with
4353 Different Languages}).
4354
4355 @table @code
4356 @item print @var{expr}
4357 @itemx print /@var{f} @var{expr}
4358 @var{expr} is an expression (in the source language). By default the
4359 value of @var{expr} is printed in a format appropriate to its data type;
4360 you can choose a different format by specifying @samp{/@var{f}}, where
4361 @var{f} is a letter specifying the format; see @ref{Output Formats,,Output
4362 formats}.
4363
4364 @item print
4365 @itemx print /@var{f}
4366 If you omit @var{expr}, @value{GDBN} displays the last value again (from the
4367 @dfn{value history}; @pxref{Value History, ,Value history}). This allows you to
4368 conveniently inspect the same value in an alternative format.
4369 @end table
4370
4371 A more low-level way of examining data is with the @code{x} command.
4372 It examines data in memory at a specified address and prints it in a
4373 specified format. @xref{Memory, ,Examining memory}.
4374
4375 If you are interested in information about types, or about how the
4376 fields of a struct or a class are declared, use the @code{ptype @var{exp}}
4377 command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
4378 Table}.
4379
4380 @menu
4381 * Expressions:: Expressions
4382 * Variables:: Program variables
4383 * Arrays:: Artificial arrays
4384 * Output Formats:: Output formats
4385 * Memory:: Examining memory
4386 * Auto Display:: Automatic display
4387 * Print Settings:: Print settings
4388 * Value History:: Value history
4389 * Convenience Vars:: Convenience variables
4390 * Registers:: Registers
4391 * Floating Point Hardware:: Floating point hardware
4392 * Memory Region Attributes:: Memory region attributes
4393 @end menu
4394
4395 @node Expressions
4396 @section Expressions
4397
4398 @cindex expressions
4399 @code{print} and many other @value{GDBN} commands accept an expression and
4400 compute its value. Any kind of constant, variable or operator defined
4401 by the programming language you are using is valid in an expression in
4402 @value{GDBN}. This includes conditional expressions, function calls, casts
4403 and string constants. It unfortunately does not include symbols defined
4404 by preprocessor @code{#define} commands.
4405
4406 @value{GDBN} supports array constants in expressions input by
4407 the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
4408 you can use the command @code{print @{1, 2, 3@}} to build up an array in
4409 memory that is @code{malloc}ed in the target program.
4410
4411 Because C is so widespread, most of the expressions shown in examples in
4412 this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
4413 Languages}, for information on how to use expressions in other
4414 languages.
4415
4416 In this section, we discuss operators that you can use in @value{GDBN}
4417 expressions regardless of your programming language.
4418
4419 Casts are supported in all languages, not just in C, because it is so
4420 useful to cast a number into a pointer in order to examine a structure
4421 at that address in memory.
4422 @c FIXME: casts supported---Mod2 true?
4423
4424 @value{GDBN} supports these operators, in addition to those common
4425 to programming languages:
4426
4427 @table @code
4428 @item @@
4429 @samp{@@} is a binary operator for treating parts of memory as arrays.
4430 @xref{Arrays, ,Artificial arrays}, for more information.
4431
4432 @item ::
4433 @samp{::} allows you to specify a variable in terms of the file or
4434 function where it is defined. @xref{Variables, ,Program variables}.
4435
4436 @cindex @{@var{type}@}
4437 @cindex type casting memory
4438 @cindex memory, viewing as typed object
4439 @cindex casts, to view memory
4440 @item @{@var{type}@} @var{addr}
4441 Refers to an object of type @var{type} stored at address @var{addr} in
4442 memory. @var{addr} may be any expression whose value is an integer or
4443 pointer (but parentheses are required around binary operators, just as in
4444 a cast). This construct is allowed regardless of what kind of data is
4445 normally supposed to reside at @var{addr}.
4446 @end table
4447
4448 @node Variables
4449 @section Program variables
4450
4451 The most common kind of expression to use is the name of a variable
4452 in your program.
4453
4454 Variables in expressions are understood in the selected stack frame
4455 (@pxref{Selection, ,Selecting a frame}); they must be either:
4456
4457 @itemize @bullet
4458 @item
4459 global (or file-static)
4460 @end itemize
4461
4462 @noindent or
4463
4464 @itemize @bullet
4465 @item
4466 visible according to the scope rules of the
4467 programming language from the point of execution in that frame
4468 @end itemize
4469
4470 @noindent This means that in the function
4471
4472 @example
4473 foo (a)
4474 int a;
4475 @{
4476 bar (a);
4477 @{
4478 int b = test ();
4479 bar (b);
4480 @}
4481 @}
4482 @end example
4483
4484 @noindent
4485 you can examine and use the variable @code{a} whenever your program is
4486 executing within the function @code{foo}, but you can only use or
4487 examine the variable @code{b} while your program is executing inside
4488 the block where @code{b} is declared.
4489
4490 @cindex variable name conflict
4491 There is an exception: you can refer to a variable or function whose
4492 scope is a single source file even if the current execution point is not
4493 in this file. But it is possible to have more than one such variable or
4494 function with the same name (in different source files). If that
4495 happens, referring to that name has unpredictable effects. If you wish,
4496 you can specify a static variable in a particular function or file,
4497 using the colon-colon notation:
4498
4499 @cindex colon-colon, context for variables/functions
4500 @iftex
4501 @c info cannot cope with a :: index entry, but why deprive hard copy readers?
4502 @cindex @code{::}, context for variables/functions
4503 @end iftex
4504 @example
4505 @var{file}::@var{variable}
4506 @var{function}::@var{variable}
4507 @end example
4508
4509 @noindent
4510 Here @var{file} or @var{function} is the name of the context for the
4511 static @var{variable}. In the case of file names, you can use quotes to
4512 make sure @value{GDBN} parses the file name as a single word---for example,
4513 to print a global value of @code{x} defined in @file{f2.c}:
4514
4515 @example
4516 (@value{GDBP}) p 'f2.c'::x
4517 @end example
4518
4519 @cindex C@t{++} scope resolution
4520 This use of @samp{::} is very rarely in conflict with the very similar
4521 use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
4522 scope resolution operator in @value{GDBN} expressions.
4523 @c FIXME: Um, so what happens in one of those rare cases where it's in
4524 @c conflict?? --mew
4525
4526 @cindex wrong values
4527 @cindex variable values, wrong
4528 @quotation
4529 @emph{Warning:} Occasionally, a local variable may appear to have the
4530 wrong value at certain points in a function---just after entry to a new
4531 scope, and just before exit.
4532 @end quotation
4533 You may see this problem when you are stepping by machine instructions.
4534 This is because, on most machines, it takes more than one instruction to
4535 set up a stack frame (including local variable definitions); if you are
4536 stepping by machine instructions, variables may appear to have the wrong
4537 values until the stack frame is completely built. On exit, it usually
4538 also takes more than one machine instruction to destroy a stack frame;
4539 after you begin stepping through that group of instructions, local
4540 variable definitions may be gone.
4541
4542 This may also happen when the compiler does significant optimizations.
4543 To be sure of always seeing accurate values, turn off all optimization
4544 when compiling.
4545
4546 @cindex ``No symbol "foo" in current context''
4547 Another possible effect of compiler optimizations is to optimize
4548 unused variables out of existence, or assign variables to registers (as
4549 opposed to memory addresses). Depending on the support for such cases
4550 offered by the debug info format used by the compiler, @value{GDBN}
4551 might not be able to display values for such local variables. If that
4552 happens, @value{GDBN} will print a message like this:
4553
4554 @example
4555 No symbol "foo" in current context.
4556 @end example
4557
4558 To solve such problems, either recompile without optimizations, or use a
4559 different debug info format, if the compiler supports several such
4560 formats. For example, @value{NGCC}, the @sc{gnu} C/C@t{++} compiler usually
4561 supports the @samp{-gstabs} option. @samp{-gstabs} produces debug info
4562 in a format that is superior to formats such as COFF. You may be able
4563 to use DWARF2 (@samp{-gdwarf-2}), which is also an effective form for
4564 debug info. See @ref{Debugging Options,,Options for Debugging Your
4565 Program or @sc{gnu} CC, gcc.info, Using @sc{gnu} CC}, for more
4566 information.
4567
4568
4569 @node Arrays
4570 @section Artificial arrays
4571
4572 @cindex artificial array
4573 @kindex @@@r{, referencing memory as an array}
4574 It is often useful to print out several successive objects of the
4575 same type in memory; a section of an array, or an array of
4576 dynamically determined size for which only a pointer exists in the
4577 program.
4578
4579 You can do this by referring to a contiguous span of memory as an
4580 @dfn{artificial array}, using the binary operator @samp{@@}. The left
4581 operand of @samp{@@} should be the first element of the desired array
4582 and be an individual object. The right operand should be the desired length
4583 of the array. The result is an array value whose elements are all of
4584 the type of the left argument. The first element is actually the left
4585 argument; the second element comes from bytes of memory immediately
4586 following those that hold the first element, and so on. Here is an
4587 example. If a program says
4588
4589 @example
4590 int *array = (int *) malloc (len * sizeof (int));
4591 @end example
4592
4593 @noindent
4594 you can print the contents of @code{array} with
4595
4596 @example
4597 p *array@@len
4598 @end example
4599
4600 The left operand of @samp{@@} must reside in memory. Array values made
4601 with @samp{@@} in this way behave just like other arrays in terms of
4602 subscripting, and are coerced to pointers when used in expressions.
4603 Artificial arrays most often appear in expressions via the value history
4604 (@pxref{Value History, ,Value history}), after printing one out.
4605
4606 Another way to create an artificial array is to use a cast.
4607 This re-interprets a value as if it were an array.
4608 The value need not be in memory:
4609 @example
4610 (@value{GDBP}) p/x (short[2])0x12345678
4611 $1 = @{0x1234, 0x5678@}
4612 @end example
4613
4614 As a convenience, if you leave the array length out (as in
4615 @samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
4616 the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
4617 @example
4618 (@value{GDBP}) p/x (short[])0x12345678
4619 $2 = @{0x1234, 0x5678@}
4620 @end example
4621
4622 Sometimes the artificial array mechanism is not quite enough; in
4623 moderately complex data structures, the elements of interest may not
4624 actually be adjacent---for example, if you are interested in the values
4625 of pointers in an array. One useful work-around in this situation is
4626 to use a convenience variable (@pxref{Convenience Vars, ,Convenience
4627 variables}) as a counter in an expression that prints the first
4628 interesting value, and then repeat that expression via @key{RET}. For
4629 instance, suppose you have an array @code{dtab} of pointers to
4630 structures, and you are interested in the values of a field @code{fv}
4631 in each structure. Here is an example of what you might type:
4632
4633 @example
4634 set $i = 0
4635 p dtab[$i++]->fv
4636 @key{RET}
4637 @key{RET}
4638 @dots{}
4639 @end example
4640
4641 @node Output Formats
4642 @section Output formats
4643
4644 @cindex formatted output
4645 @cindex output formats
4646 By default, @value{GDBN} prints a value according to its data type. Sometimes
4647 this is not what you want. For example, you might want to print a number
4648 in hex, or a pointer in decimal. Or you might want to view data in memory
4649 at a certain address as a character string or as an instruction. To do
4650 these things, specify an @dfn{output format} when you print a value.
4651
4652 The simplest use of output formats is to say how to print a value
4653 already computed. This is done by starting the arguments of the
4654 @code{print} command with a slash and a format letter. The format
4655 letters supported are:
4656
4657 @table @code
4658 @item x
4659 Regard the bits of the value as an integer, and print the integer in
4660 hexadecimal.
4661
4662 @item d
4663 Print as integer in signed decimal.
4664
4665 @item u
4666 Print as integer in unsigned decimal.
4667
4668 @item o
4669 Print as integer in octal.
4670
4671 @item t
4672 Print as integer in binary. The letter @samp{t} stands for ``two''.
4673 @footnote{@samp{b} cannot be used because these format letters are also
4674 used with the @code{x} command, where @samp{b} stands for ``byte'';
4675 see @ref{Memory,,Examining memory}.}
4676
4677 @item a
4678 @cindex unknown address, locating
4679 @cindex locate address
4680 Print as an address, both absolute in hexadecimal and as an offset from
4681 the nearest preceding symbol. You can use this format used to discover
4682 where (in what function) an unknown address is located:
4683
4684 @example
4685 (@value{GDBP}) p/a 0x54320
4686 $3 = 0x54320 <_initialize_vx+396>
4687 @end example
4688
4689 @noindent
4690 The command @code{info symbol 0x54320} yields similar results.
4691 @xref{Symbols, info symbol}.
4692
4693 @item c
4694 Regard as an integer and print it as a character constant.
4695
4696 @item f
4697 Regard the bits of the value as a floating point number and print
4698 using typical floating point syntax.
4699 @end table
4700
4701 For example, to print the program counter in hex (@pxref{Registers}), type
4702
4703 @example
4704 p/x $pc
4705 @end example
4706
4707 @noindent
4708 Note that no space is required before the slash; this is because command
4709 names in @value{GDBN} cannot contain a slash.
4710
4711 To reprint the last value in the value history with a different format,
4712 you can use the @code{print} command with just a format and no
4713 expression. For example, @samp{p/x} reprints the last value in hex.
4714
4715 @node Memory
4716 @section Examining memory
4717
4718 You can use the command @code{x} (for ``examine'') to examine memory in
4719 any of several formats, independently of your program's data types.
4720
4721 @cindex examining memory
4722 @table @code
4723 @kindex x @r{(examine memory)}
4724 @item x/@var{nfu} @var{addr}
4725 @itemx x @var{addr}
4726 @itemx x
4727 Use the @code{x} command to examine memory.
4728 @end table
4729
4730 @var{n}, @var{f}, and @var{u} are all optional parameters that specify how
4731 much memory to display and how to format it; @var{addr} is an
4732 expression giving the address where you want to start displaying memory.
4733 If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
4734 Several commands set convenient defaults for @var{addr}.
4735
4736 @table @r
4737 @item @var{n}, the repeat count
4738 The repeat count is a decimal integer; the default is 1. It specifies
4739 how much memory (counting by units @var{u}) to display.
4740 @c This really is **decimal**; unaffected by 'set radix' as of GDB
4741 @c 4.1.2.
4742
4743 @item @var{f}, the display format
4744 The display format is one of the formats used by @code{print},
4745 @samp{s} (null-terminated string), or @samp{i} (machine instruction).
4746 The default is @samp{x} (hexadecimal) initially.
4747 The default changes each time you use either @code{x} or @code{print}.
4748
4749 @item @var{u}, the unit size
4750 The unit size is any of
4751
4752 @table @code
4753 @item b
4754 Bytes.
4755 @item h
4756 Halfwords (two bytes).
4757 @item w
4758 Words (four bytes). This is the initial default.
4759 @item g
4760 Giant words (eight bytes).
4761 @end table
4762
4763 Each time you specify a unit size with @code{x}, that size becomes the
4764 default unit the next time you use @code{x}. (For the @samp{s} and
4765 @samp{i} formats, the unit size is ignored and is normally not written.)
4766
4767 @item @var{addr}, starting display address
4768 @var{addr} is the address where you want @value{GDBN} to begin displaying
4769 memory. The expression need not have a pointer value (though it may);
4770 it is always interpreted as an integer address of a byte of memory.
4771 @xref{Expressions, ,Expressions}, for more information on expressions. The default for
4772 @var{addr} is usually just after the last address examined---but several
4773 other commands also set the default address: @code{info breakpoints} (to
4774 the address of the last breakpoint listed), @code{info line} (to the
4775 starting address of a line), and @code{print} (if you use it to display
4776 a value from memory).
4777 @end table
4778
4779 For example, @samp{x/3uh 0x54320} is a request to display three halfwords
4780 (@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
4781 starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
4782 words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
4783 @pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
4784
4785 Since the letters indicating unit sizes are all distinct from the
4786 letters specifying output formats, you do not have to remember whether
4787 unit size or format comes first; either order works. The output
4788 specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
4789 (However, the count @var{n} must come first; @samp{wx4} does not work.)
4790
4791 Even though the unit size @var{u} is ignored for the formats @samp{s}
4792 and @samp{i}, you might still want to use a count @var{n}; for example,
4793 @samp{3i} specifies that you want to see three machine instructions,
4794 including any operands. The command @code{disassemble} gives an
4795 alternative way of inspecting machine instructions; see @ref{Machine
4796 Code,,Source and machine code}.
4797
4798 All the defaults for the arguments to @code{x} are designed to make it
4799 easy to continue scanning memory with minimal specifications each time
4800 you use @code{x}. For example, after you have inspected three machine
4801 instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
4802 with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
4803 the repeat count @var{n} is used again; the other arguments default as
4804 for successive uses of @code{x}.
4805
4806 @cindex @code{$_}, @code{$__}, and value history
4807 The addresses and contents printed by the @code{x} command are not saved
4808 in the value history because there is often too much of them and they
4809 would get in the way. Instead, @value{GDBN} makes these values available for
4810 subsequent use in expressions as values of the convenience variables
4811 @code{$_} and @code{$__}. After an @code{x} command, the last address
4812 examined is available for use in expressions in the convenience variable
4813 @code{$_}. The contents of that address, as examined, are available in
4814 the convenience variable @code{$__}.
4815
4816 If the @code{x} command has a repeat count, the address and contents saved
4817 are from the last memory unit printed; this is not the same as the last
4818 address printed if several units were printed on the last line of output.
4819
4820 @node Auto Display
4821 @section Automatic display
4822 @cindex automatic display
4823 @cindex display of expressions
4824
4825 If you find that you want to print the value of an expression frequently
4826 (to see how it changes), you might want to add it to the @dfn{automatic
4827 display list} so that @value{GDBN} prints its value each time your program stops.
4828 Each expression added to the list is given a number to identify it;
4829 to remove an expression from the list, you specify that number.
4830 The automatic display looks like this:
4831
4832 @example
4833 2: foo = 38
4834 3: bar[5] = (struct hack *) 0x3804
4835 @end example
4836
4837 @noindent
4838 This display shows item numbers, expressions and their current values. As with
4839 displays you request manually using @code{x} or @code{print}, you can
4840 specify the output format you prefer; in fact, @code{display} decides
4841 whether to use @code{print} or @code{x} depending on how elaborate your
4842 format specification is---it uses @code{x} if you specify a unit size,
4843 or one of the two formats (@samp{i} and @samp{s}) that are only
4844 supported by @code{x}; otherwise it uses @code{print}.
4845
4846 @table @code
4847 @kindex display
4848 @item display @var{expr}
4849 Add the expression @var{expr} to the list of expressions to display
4850 each time your program stops. @xref{Expressions, ,Expressions}.
4851
4852 @code{display} does not repeat if you press @key{RET} again after using it.
4853
4854 @item display/@var{fmt} @var{expr}
4855 For @var{fmt} specifying only a display format and not a size or
4856 count, add the expression @var{expr} to the auto-display list but
4857 arrange to display it each time in the specified format @var{fmt}.
4858 @xref{Output Formats,,Output formats}.
4859
4860 @item display/@var{fmt} @var{addr}
4861 For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
4862 number of units, add the expression @var{addr} as a memory address to
4863 be examined each time your program stops. Examining means in effect
4864 doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining memory}.
4865 @end table
4866
4867 For example, @samp{display/i $pc} can be helpful, to see the machine
4868 instruction about to be executed each time execution stops (@samp{$pc}
4869 is a common name for the program counter; @pxref{Registers, ,Registers}).
4870
4871 @table @code
4872 @kindex delete display
4873 @kindex undisplay
4874 @item undisplay @var{dnums}@dots{}
4875 @itemx delete display @var{dnums}@dots{}
4876 Remove item numbers @var{dnums} from the list of expressions to display.
4877
4878 @code{undisplay} does not repeat if you press @key{RET} after using it.
4879 (Otherwise you would just get the error @samp{No display number @dots{}}.)
4880
4881 @kindex disable display
4882 @item disable display @var{dnums}@dots{}
4883 Disable the display of item numbers @var{dnums}. A disabled display
4884 item is not printed automatically, but is not forgotten. It may be
4885 enabled again later.
4886
4887 @kindex enable display
4888 @item enable display @var{dnums}@dots{}
4889 Enable display of item numbers @var{dnums}. It becomes effective once
4890 again in auto display of its expression, until you specify otherwise.
4891
4892 @item display
4893 Display the current values of the expressions on the list, just as is
4894 done when your program stops.
4895
4896 @kindex info display
4897 @item info display
4898 Print the list of expressions previously set up to display
4899 automatically, each one with its item number, but without showing the
4900 values. This includes disabled expressions, which are marked as such.
4901 It also includes expressions which would not be displayed right now
4902 because they refer to automatic variables not currently available.
4903 @end table
4904
4905 If a display expression refers to local variables, then it does not make
4906 sense outside the lexical context for which it was set up. Such an
4907 expression is disabled when execution enters a context where one of its
4908 variables is not defined. For example, if you give the command
4909 @code{display last_char} while inside a function with an argument
4910 @code{last_char}, @value{GDBN} displays this argument while your program
4911 continues to stop inside that function. When it stops elsewhere---where
4912 there is no variable @code{last_char}---the display is disabled
4913 automatically. The next time your program stops where @code{last_char}
4914 is meaningful, you can enable the display expression once again.
4915
4916 @node Print Settings
4917 @section Print settings
4918
4919 @cindex format options
4920 @cindex print settings
4921 @value{GDBN} provides the following ways to control how arrays, structures,
4922 and symbols are printed.
4923
4924 @noindent
4925 These settings are useful for debugging programs in any language:
4926
4927 @table @code
4928 @kindex set print address
4929 @item set print address
4930 @itemx set print address on
4931 @value{GDBN} prints memory addresses showing the location of stack
4932 traces, structure values, pointer values, breakpoints, and so forth,
4933 even when it also displays the contents of those addresses. The default
4934 is @code{on}. For example, this is what a stack frame display looks like with
4935 @code{set print address on}:
4936
4937 @smallexample
4938 @group
4939 (@value{GDBP}) f
4940 #0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
4941 at input.c:530
4942 530 if (lquote != def_lquote)
4943 @end group
4944 @end smallexample
4945
4946 @item set print address off
4947 Do not print addresses when displaying their contents. For example,
4948 this is the same stack frame displayed with @code{set print address off}:
4949
4950 @smallexample
4951 @group
4952 (@value{GDBP}) set print addr off
4953 (@value{GDBP}) f
4954 #0 set_quotes (lq="<<", rq=">>") at input.c:530
4955 530 if (lquote != def_lquote)
4956 @end group
4957 @end smallexample
4958
4959 You can use @samp{set print address off} to eliminate all machine
4960 dependent displays from the @value{GDBN} interface. For example, with
4961 @code{print address off}, you should get the same text for backtraces on
4962 all machines---whether or not they involve pointer arguments.
4963
4964 @kindex show print address
4965 @item show print address
4966 Show whether or not addresses are to be printed.
4967 @end table
4968
4969 When @value{GDBN} prints a symbolic address, it normally prints the
4970 closest earlier symbol plus an offset. If that symbol does not uniquely
4971 identify the address (for example, it is a name whose scope is a single
4972 source file), you may need to clarify. One way to do this is with
4973 @code{info line}, for example @samp{info line *0x4537}. Alternately,
4974 you can set @value{GDBN} to print the source file and line number when
4975 it prints a symbolic address:
4976
4977 @table @code
4978 @kindex set print symbol-filename
4979 @item set print symbol-filename on
4980 Tell @value{GDBN} to print the source file name and line number of a
4981 symbol in the symbolic form of an address.
4982
4983 @item set print symbol-filename off
4984 Do not print source file name and line number of a symbol. This is the
4985 default.
4986
4987 @kindex show print symbol-filename
4988 @item show print symbol-filename
4989 Show whether or not @value{GDBN} will print the source file name and
4990 line number of a symbol in the symbolic form of an address.
4991 @end table
4992
4993 Another situation where it is helpful to show symbol filenames and line
4994 numbers is when disassembling code; @value{GDBN} shows you the line
4995 number and source file that corresponds to each instruction.
4996
4997 Also, you may wish to see the symbolic form only if the address being
4998 printed is reasonably close to the closest earlier symbol:
4999
5000 @table @code
5001 @kindex set print max-symbolic-offset
5002 @item set print max-symbolic-offset @var{max-offset}
5003 Tell @value{GDBN} to only display the symbolic form of an address if the
5004 offset between the closest earlier symbol and the address is less than
5005 @var{max-offset}. The default is 0, which tells @value{GDBN}
5006 to always print the symbolic form of an address if any symbol precedes it.
5007
5008 @kindex show print max-symbolic-offset
5009 @item show print max-symbolic-offset
5010 Ask how large the maximum offset is that @value{GDBN} prints in a
5011 symbolic address.
5012 @end table
5013
5014 @cindex wild pointer, interpreting
5015 @cindex pointer, finding referent
5016 If you have a pointer and you are not sure where it points, try
5017 @samp{set print symbol-filename on}. Then you can determine the name
5018 and source file location of the variable where it points, using
5019 @samp{p/a @var{pointer}}. This interprets the address in symbolic form.
5020 For example, here @value{GDBN} shows that a variable @code{ptt} points
5021 at another variable @code{t}, defined in @file{hi2.c}:
5022
5023 @example
5024 (@value{GDBP}) set print symbol-filename on
5025 (@value{GDBP}) p/a ptt
5026 $4 = 0xe008 <t in hi2.c>
5027 @end example
5028
5029 @quotation
5030 @emph{Warning:} For pointers that point to a local variable, @samp{p/a}
5031 does not show the symbol name and filename of the referent, even with
5032 the appropriate @code{set print} options turned on.
5033 @end quotation
5034
5035 Other settings control how different kinds of objects are printed:
5036
5037 @table @code
5038 @kindex set print array
5039 @item set print array
5040 @itemx set print array on
5041 Pretty print arrays. This format is more convenient to read,
5042 but uses more space. The default is off.
5043
5044 @item set print array off
5045 Return to compressed format for arrays.
5046
5047 @kindex show print array
5048 @item show print array
5049 Show whether compressed or pretty format is selected for displaying
5050 arrays.
5051
5052 @kindex set print elements
5053 @item set print elements @var{number-of-elements}
5054 Set a limit on how many elements of an array @value{GDBN} will print.
5055 If @value{GDBN} is printing a large array, it stops printing after it has
5056 printed the number of elements set by the @code{set print elements} command.
5057 This limit also applies to the display of strings.
5058 When @value{GDBN} starts, this limit is set to 200.
5059 Setting @var{number-of-elements} to zero means that the printing is unlimited.
5060
5061 @kindex show print elements
5062 @item show print elements
5063 Display the number of elements of a large array that @value{GDBN} will print.
5064 If the number is 0, then the printing is unlimited.
5065
5066 @kindex set print null-stop
5067 @item set print null-stop
5068 Cause @value{GDBN} to stop printing the characters of an array when the first
5069 @sc{null} is encountered. This is useful when large arrays actually
5070 contain only short strings.
5071 The default is off.
5072
5073 @kindex set print pretty
5074 @item set print pretty on
5075 Cause @value{GDBN} to print structures in an indented format with one member
5076 per line, like this:
5077
5078 @smallexample
5079 @group
5080 $1 = @{
5081 next = 0x0,
5082 flags = @{
5083 sweet = 1,
5084 sour = 1
5085 @},
5086 meat = 0x54 "Pork"
5087 @}
5088 @end group
5089 @end smallexample
5090
5091 @item set print pretty off
5092 Cause @value{GDBN} to print structures in a compact format, like this:
5093
5094 @smallexample
5095 @group
5096 $1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
5097 meat = 0x54 "Pork"@}
5098 @end group
5099 @end smallexample
5100
5101 @noindent
5102 This is the default format.
5103
5104 @kindex show print pretty
5105 @item show print pretty
5106 Show which format @value{GDBN} is using to print structures.
5107
5108 @kindex set print sevenbit-strings
5109 @item set print sevenbit-strings on
5110 Print using only seven-bit characters; if this option is set,
5111 @value{GDBN} displays any eight-bit characters (in strings or
5112 character values) using the notation @code{\}@var{nnn}. This setting is
5113 best if you are working in English (@sc{ascii}) and you use the
5114 high-order bit of characters as a marker or ``meta'' bit.
5115
5116 @item set print sevenbit-strings off
5117 Print full eight-bit characters. This allows the use of more
5118 international character sets, and is the default.
5119
5120 @kindex show print sevenbit-strings
5121 @item show print sevenbit-strings
5122 Show whether or not @value{GDBN} is printing only seven-bit characters.
5123
5124 @kindex set print union
5125 @item set print union on
5126 Tell @value{GDBN} to print unions which are contained in structures. This
5127 is the default setting.
5128
5129 @item set print union off
5130 Tell @value{GDBN} not to print unions which are contained in structures.
5131
5132 @kindex show print union
5133 @item show print union
5134 Ask @value{GDBN} whether or not it will print unions which are contained in
5135 structures.
5136
5137 For example, given the declarations
5138
5139 @smallexample
5140 typedef enum @{Tree, Bug@} Species;
5141 typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5142 typedef enum @{Caterpillar, Cocoon, Butterfly@}
5143 Bug_forms;
5144
5145 struct thing @{
5146 Species it;
5147 union @{
5148 Tree_forms tree;
5149 Bug_forms bug;
5150 @} form;
5151 @};
5152
5153 struct thing foo = @{Tree, @{Acorn@}@};
5154 @end smallexample
5155
5156 @noindent
5157 with @code{set print union on} in effect @samp{p foo} would print
5158
5159 @smallexample
5160 $1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
5161 @end smallexample
5162
5163 @noindent
5164 and with @code{set print union off} in effect it would print
5165
5166 @smallexample
5167 $1 = @{it = Tree, form = @{...@}@}
5168 @end smallexample
5169 @end table
5170
5171 @need 1000
5172 @noindent
5173 These settings are of interest when debugging C@t{++} programs:
5174
5175 @table @code
5176 @cindex demangling
5177 @kindex set print demangle
5178 @item set print demangle
5179 @itemx set print demangle on
5180 Print C@t{++} names in their source form rather than in the encoded
5181 (``mangled'') form passed to the assembler and linker for type-safe
5182 linkage. The default is on.
5183
5184 @kindex show print demangle
5185 @item show print demangle
5186 Show whether C@t{++} names are printed in mangled or demangled form.
5187
5188 @kindex set print asm-demangle
5189 @item set print asm-demangle
5190 @itemx set print asm-demangle on
5191 Print C@t{++} names in their source form rather than their mangled form, even
5192 in assembler code printouts such as instruction disassemblies.
5193 The default is off.
5194
5195 @kindex show print asm-demangle
5196 @item show print asm-demangle
5197 Show whether C@t{++} names in assembly listings are printed in mangled
5198 or demangled form.
5199
5200 @kindex set demangle-style
5201 @cindex C@t{++} symbol decoding style
5202 @cindex symbol decoding style, C@t{++}
5203 @item set demangle-style @var{style}
5204 Choose among several encoding schemes used by different compilers to
5205 represent C@t{++} names. The choices for @var{style} are currently:
5206
5207 @table @code
5208 @item auto
5209 Allow @value{GDBN} to choose a decoding style by inspecting your program.
5210
5211 @item gnu
5212 Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
5213 This is the default.
5214
5215 @item hp
5216 Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
5217
5218 @item lucid
5219 Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
5220
5221 @item arm
5222 Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
5223 @strong{Warning:} this setting alone is not sufficient to allow
5224 debugging @code{cfront}-generated executables. @value{GDBN} would
5225 require further enhancement to permit that.
5226
5227 @end table
5228 If you omit @var{style}, you will see a list of possible formats.
5229
5230 @kindex show demangle-style
5231 @item show demangle-style
5232 Display the encoding style currently in use for decoding C@t{++} symbols.
5233
5234 @kindex set print object
5235 @item set print object
5236 @itemx set print object on
5237 When displaying a pointer to an object, identify the @emph{actual}
5238 (derived) type of the object rather than the @emph{declared} type, using
5239 the virtual function table.
5240
5241 @item set print object off
5242 Display only the declared type of objects, without reference to the
5243 virtual function table. This is the default setting.
5244
5245 @kindex show print object
5246 @item show print object
5247 Show whether actual, or declared, object types are displayed.
5248
5249 @kindex set print static-members
5250 @item set print static-members
5251 @itemx set print static-members on
5252 Print static members when displaying a C@t{++} object. The default is on.
5253
5254 @item set print static-members off
5255 Do not print static members when displaying a C@t{++} object.
5256
5257 @kindex show print static-members
5258 @item show print static-members
5259 Show whether C@t{++} static members are printed, or not.
5260
5261 @c These don't work with HP ANSI C++ yet.
5262 @kindex set print vtbl
5263 @item set print vtbl
5264 @itemx set print vtbl on
5265 Pretty print C@t{++} virtual function tables. The default is off.
5266 (The @code{vtbl} commands do not work on programs compiled with the HP
5267 ANSI C@t{++} compiler (@code{aCC}).)
5268
5269 @item set print vtbl off
5270 Do not pretty print C@t{++} virtual function tables.
5271
5272 @kindex show print vtbl
5273 @item show print vtbl
5274 Show whether C@t{++} virtual function tables are pretty printed, or not.
5275 @end table
5276
5277 @node Value History
5278 @section Value history
5279
5280 @cindex value history
5281 Values printed by the @code{print} command are saved in the @value{GDBN}
5282 @dfn{value history}. This allows you to refer to them in other expressions.
5283 Values are kept until the symbol table is re-read or discarded
5284 (for example with the @code{file} or @code{symbol-file} commands).
5285 When the symbol table changes, the value history is discarded,
5286 since the values may contain pointers back to the types defined in the
5287 symbol table.
5288
5289 @cindex @code{$}
5290 @cindex @code{$$}
5291 @cindex history number
5292 The values printed are given @dfn{history numbers} by which you can
5293 refer to them. These are successive integers starting with one.
5294 @code{print} shows you the history number assigned to a value by
5295 printing @samp{$@var{num} = } before the value; here @var{num} is the
5296 history number.
5297
5298 To refer to any previous value, use @samp{$} followed by the value's
5299 history number. The way @code{print} labels its output is designed to
5300 remind you of this. Just @code{$} refers to the most recent value in
5301 the history, and @code{$$} refers to the value before that.
5302 @code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
5303 is the value just prior to @code{$$}, @code{$$1} is equivalent to
5304 @code{$$}, and @code{$$0} is equivalent to @code{$}.
5305
5306 For example, suppose you have just printed a pointer to a structure and
5307 want to see the contents of the structure. It suffices to type
5308
5309 @example
5310 p *$
5311 @end example
5312
5313 If you have a chain of structures where the component @code{next} points
5314 to the next one, you can print the contents of the next one with this:
5315
5316 @example
5317 p *$.next
5318 @end example
5319
5320 @noindent
5321 You can print successive links in the chain by repeating this
5322 command---which you can do by just typing @key{RET}.
5323
5324 Note that the history records values, not expressions. If the value of
5325 @code{x} is 4 and you type these commands:
5326
5327 @example
5328 print x
5329 set x=5
5330 @end example
5331
5332 @noindent
5333 then the value recorded in the value history by the @code{print} command
5334 remains 4 even though the value of @code{x} has changed.
5335
5336 @table @code
5337 @kindex show values
5338 @item show values
5339 Print the last ten values in the value history, with their item numbers.
5340 This is like @samp{p@ $$9} repeated ten times, except that @code{show
5341 values} does not change the history.
5342
5343 @item show values @var{n}
5344 Print ten history values centered on history item number @var{n}.
5345
5346 @item show values +
5347 Print ten history values just after the values last printed. If no more
5348 values are available, @code{show values +} produces no display.
5349 @end table
5350
5351 Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
5352 same effect as @samp{show values +}.
5353
5354 @node Convenience Vars
5355 @section Convenience variables
5356
5357 @cindex convenience variables
5358 @value{GDBN} provides @dfn{convenience variables} that you can use within
5359 @value{GDBN} to hold on to a value and refer to it later. These variables
5360 exist entirely within @value{GDBN}; they are not part of your program, and
5361 setting a convenience variable has no direct effect on further execution
5362 of your program. That is why you can use them freely.
5363
5364 Convenience variables are prefixed with @samp{$}. Any name preceded by
5365 @samp{$} can be used for a convenience variable, unless it is one of
5366 the predefined machine-specific register names (@pxref{Registers, ,Registers}).
5367 (Value history references, in contrast, are @emph{numbers} preceded
5368 by @samp{$}. @xref{Value History, ,Value history}.)
5369
5370 You can save a value in a convenience variable with an assignment
5371 expression, just as you would set a variable in your program.
5372 For example:
5373
5374 @example
5375 set $foo = *object_ptr
5376 @end example
5377
5378 @noindent
5379 would save in @code{$foo} the value contained in the object pointed to by
5380 @code{object_ptr}.
5381
5382 Using a convenience variable for the first time creates it, but its
5383 value is @code{void} until you assign a new value. You can alter the
5384 value with another assignment at any time.
5385
5386 Convenience variables have no fixed types. You can assign a convenience
5387 variable any type of value, including structures and arrays, even if
5388 that variable already has a value of a different type. The convenience
5389 variable, when used as an expression, has the type of its current value.
5390
5391 @table @code
5392 @kindex show convenience
5393 @item show convenience
5394 Print a list of convenience variables used so far, and their values.
5395 Abbreviated @code{show conv}.
5396 @end table
5397
5398 One of the ways to use a convenience variable is as a counter to be
5399 incremented or a pointer to be advanced. For example, to print
5400 a field from successive elements of an array of structures:
5401
5402 @example
5403 set $i = 0
5404 print bar[$i++]->contents
5405 @end example
5406
5407 @noindent
5408 Repeat that command by typing @key{RET}.
5409
5410 Some convenience variables are created automatically by @value{GDBN} and given
5411 values likely to be useful.
5412
5413 @table @code
5414 @vindex $_@r{, convenience variable}
5415 @item $_
5416 The variable @code{$_} is automatically set by the @code{x} command to
5417 the last address examined (@pxref{Memory, ,Examining memory}). Other
5418 commands which provide a default address for @code{x} to examine also
5419 set @code{$_} to that address; these commands include @code{info line}
5420 and @code{info breakpoint}. The type of @code{$_} is @code{void *}
5421 except when set by the @code{x} command, in which case it is a pointer
5422 to the type of @code{$__}.
5423
5424 @vindex $__@r{, convenience variable}
5425 @item $__
5426 The variable @code{$__} is automatically set by the @code{x} command
5427 to the value found in the last address examined. Its type is chosen
5428 to match the format in which the data was printed.
5429
5430 @item $_exitcode
5431 @vindex $_exitcode@r{, convenience variable}
5432 The variable @code{$_exitcode} is automatically set to the exit code when
5433 the program being debugged terminates.
5434 @end table
5435
5436 On HP-UX systems, if you refer to a function or variable name that
5437 begins with a dollar sign, @value{GDBN} searches for a user or system
5438 name first, before it searches for a convenience variable.
5439
5440 @node Registers
5441 @section Registers
5442
5443 @cindex registers
5444 You can refer to machine register contents, in expressions, as variables
5445 with names starting with @samp{$}. The names of registers are different
5446 for each machine; use @code{info registers} to see the names used on
5447 your machine.
5448
5449 @table @code
5450 @kindex info registers
5451 @item info registers
5452 Print the names and values of all registers except floating-point
5453 registers (in the selected stack frame).
5454
5455 @kindex info all-registers
5456 @cindex floating point registers
5457 @item info all-registers
5458 Print the names and values of all registers, including floating-point
5459 registers.
5460
5461 @item info registers @var{regname} @dots{}
5462 Print the @dfn{relativized} value of each specified register @var{regname}.
5463 As discussed in detail below, register values are normally relative to
5464 the selected stack frame. @var{regname} may be any register name valid on
5465 the machine you are using, with or without the initial @samp{$}.
5466 @end table
5467
5468 @value{GDBN} has four ``standard'' register names that are available (in
5469 expressions) on most machines---whenever they do not conflict with an
5470 architecture's canonical mnemonics for registers. The register names
5471 @code{$pc} and @code{$sp} are used for the program counter register and
5472 the stack pointer. @code{$fp} is used for a register that contains a
5473 pointer to the current stack frame, and @code{$ps} is used for a
5474 register that contains the processor status. For example,
5475 you could print the program counter in hex with
5476
5477 @example
5478 p/x $pc
5479 @end example
5480
5481 @noindent
5482 or print the instruction to be executed next with
5483
5484 @example
5485 x/i $pc
5486 @end example
5487
5488 @noindent
5489 or add four to the stack pointer@footnote{This is a way of removing
5490 one word from the stack, on machines where stacks grow downward in
5491 memory (most machines, nowadays). This assumes that the innermost
5492 stack frame is selected; setting @code{$sp} is not allowed when other
5493 stack frames are selected. To pop entire frames off the stack,
5494 regardless of machine architecture, use @code{return};
5495 see @ref{Returning, ,Returning from a function}.} with
5496
5497 @example
5498 set $sp += 4
5499 @end example
5500
5501 Whenever possible, these four standard register names are available on
5502 your machine even though the machine has different canonical mnemonics,
5503 so long as there is no conflict. The @code{info registers} command
5504 shows the canonical names. For example, on the SPARC, @code{info
5505 registers} displays the processor status register as @code{$psr} but you
5506 can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
5507 is an alias for the @sc{eflags} register.
5508
5509 @value{GDBN} always considers the contents of an ordinary register as an
5510 integer when the register is examined in this way. Some machines have
5511 special registers which can hold nothing but floating point; these
5512 registers are considered to have floating point values. There is no way
5513 to refer to the contents of an ordinary register as floating point value
5514 (although you can @emph{print} it as a floating point value with
5515 @samp{print/f $@var{regname}}).
5516
5517 Some registers have distinct ``raw'' and ``virtual'' data formats. This
5518 means that the data format in which the register contents are saved by
5519 the operating system is not the same one that your program normally
5520 sees. For example, the registers of the 68881 floating point
5521 coprocessor are always saved in ``extended'' (raw) format, but all C
5522 programs expect to work with ``double'' (virtual) format. In such
5523 cases, @value{GDBN} normally works with the virtual format only (the format
5524 that makes sense for your program), but the @code{info registers} command
5525 prints the data in both formats.
5526
5527 Normally, register values are relative to the selected stack frame
5528 (@pxref{Selection, ,Selecting a frame}). This means that you get the
5529 value that the register would contain if all stack frames farther in
5530 were exited and their saved registers restored. In order to see the
5531 true contents of hardware registers, you must select the innermost
5532 frame (with @samp{frame 0}).
5533
5534 However, @value{GDBN} must deduce where registers are saved, from the machine
5535 code generated by your compiler. If some registers are not saved, or if
5536 @value{GDBN} is unable to locate the saved registers, the selected stack
5537 frame makes no difference.
5538
5539 @node Floating Point Hardware
5540 @section Floating point hardware
5541 @cindex floating point
5542
5543 Depending on the configuration, @value{GDBN} may be able to give
5544 you more information about the status of the floating point hardware.
5545
5546 @table @code
5547 @kindex info float
5548 @item info float
5549 Display hardware-dependent information about the floating
5550 point unit. The exact contents and layout vary depending on the
5551 floating point chip. Currently, @samp{info float} is supported on
5552 the ARM and x86 machines.
5553 @end table
5554
5555 @node Memory Region Attributes
5556 @section Memory Region Attributes
5557 @cindex memory region attributes
5558
5559 @dfn{Memory region attributes} allow you to describe special handling
5560 required by regions of your target's memory. @value{GDBN} uses attributes
5561 to determine whether to allow certain types of memory accesses; whether to
5562 use specific width accesses; and whether to cache target memory.
5563
5564 Defined memory regions can be individually enabled and disabled. When a
5565 memory region is disabled, @value{GDBN} uses the default attributes when
5566 accessing memory in that region. Similarly, if no memory regions have
5567 been defined, @value{GDBN} uses the default attributes when accessing
5568 all memory.
5569
5570 When a memory region is defined, it is given a number to identify it;
5571 to enable, disable, or remove a memory region, you specify that number.
5572
5573 @table @code
5574 @kindex mem
5575 @item mem @var{address1} @var{address1} @var{attributes}@dots{}
5576 Define memory region bounded by @var{address1} and @var{address2}
5577 with attributes @var{attributes}@dots{}.
5578
5579 @kindex delete mem
5580 @item delete mem @var{nums}@dots{}
5581 Remove memory region numbers @var{nums}.
5582
5583 @kindex disable mem
5584 @item disable mem @var{nums}@dots{}
5585 Disable memory region numbers @var{nums}.
5586 A disabled memory region is not forgotten.
5587 It may be enabled again later.
5588
5589 @kindex enable mem
5590 @item enable mem @var{nums}@dots{}
5591 Enable memory region numbers @var{nums}.
5592
5593 @kindex info mem
5594 @item info mem
5595 Print a table of all defined memory regions, with the following columns
5596 for each region.
5597
5598 @table @emph
5599 @item Memory Region Number
5600 @item Enabled or Disabled.
5601 Enabled memory regions are marked with @samp{y}.
5602 Disabled memory regions are marked with @samp{n}.
5603
5604 @item Lo Address
5605 The address defining the inclusive lower bound of the memory region.
5606
5607 @item Hi Address
5608 The address defining the exclusive upper bound of the memory region.
5609
5610 @item Attributes
5611 The list of attributes set for this memory region.
5612 @end table
5613 @end table
5614
5615
5616 @subsection Attributes
5617
5618 @subsubsection Memory Access Mode
5619 The access mode attributes set whether @value{GDBN} may make read or
5620 write accesses to a memory region.
5621
5622 While these attributes prevent @value{GDBN} from performing invalid
5623 memory accesses, they do nothing to prevent the target system, I/O DMA,
5624 etc. from accessing memory.
5625
5626 @table @code
5627 @item ro
5628 Memory is read only.
5629 @item wo
5630 Memory is write only.
5631 @item rw
5632 Memory is read/write (default).
5633 @end table
5634
5635 @subsubsection Memory Access Size
5636 The acccess size attributes tells @value{GDBN} to use specific sized
5637 accesses in the memory region. Often memory mapped device registers
5638 require specific sized accesses. If no access size attribute is
5639 specified, @value{GDBN} may use accesses of any size.
5640
5641 @table @code
5642 @item 8
5643 Use 8 bit memory accesses.
5644 @item 16
5645 Use 16 bit memory accesses.
5646 @item 32
5647 Use 32 bit memory accesses.
5648 @item 64
5649 Use 64 bit memory accesses.
5650 @end table
5651
5652 @c @subsubsection Hardware/Software Breakpoints
5653 @c The hardware/software breakpoint attributes set whether @value{GDBN}
5654 @c will use hardware or software breakpoints for the internal breakpoints
5655 @c used by the step, next, finish, until, etc. commands.
5656 @c
5657 @c @table @code
5658 @c @item hwbreak
5659 @c Always use hardware breakpoints
5660 @c @item swbreak (default)
5661 @c @end table
5662
5663 @subsubsection Data Cache
5664 The data cache attributes set whether @value{GDBN} will cache target
5665 memory. While this generally improves performance by reducing debug
5666 protocol overhead, it can lead to incorrect results because @value{GDBN}
5667 does not know about volatile variables or memory mapped device
5668 registers.
5669
5670 @table @code
5671 @item cache
5672 Enable @value{GDBN} to cache target memory.
5673 @item nocache (default)
5674 Disable @value{GDBN} from caching target memory.
5675 @end table
5676
5677 @c @subsubsection Memory Write Verification
5678 @c The memory write verification attributes set whether @value{GDBN}
5679 @c will re-reads data after each write to verify the write was successful.
5680 @c
5681 @c @table @code
5682 @c @item verify
5683 @c @item noverify (default)
5684 @c @end table
5685
5686 @node Tracepoints
5687 @chapter Tracepoints
5688 @c This chapter is based on the documentation written by Michael
5689 @c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
5690
5691 @cindex tracepoints
5692 In some applications, it is not feasible for the debugger to interrupt
5693 the program's execution long enough for the developer to learn
5694 anything helpful about its behavior. If the program's correctness
5695 depends on its real-time behavior, delays introduced by a debugger
5696 might cause the program to change its behavior drastically, or perhaps
5697 fail, even when the code itself is correct. It is useful to be able
5698 to observe the program's behavior without interrupting it.
5699
5700 Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
5701 specify locations in the program, called @dfn{tracepoints}, and
5702 arbitrary expressions to evaluate when those tracepoints are reached.
5703 Later, using the @code{tfind} command, you can examine the values
5704 those expressions had when the program hit the tracepoints. The
5705 expressions may also denote objects in memory---structures or arrays,
5706 for example---whose values @value{GDBN} should record; while visiting
5707 a particular tracepoint, you may inspect those objects as if they were
5708 in memory at that moment. However, because @value{GDBN} records these
5709 values without interacting with you, it can do so quickly and
5710 unobtrusively, hopefully not disturbing the program's behavior.
5711
5712 The tracepoint facility is currently available only for remote
5713 targets. @xref{Targets}.
5714
5715 This chapter describes the tracepoint commands and features.
5716
5717 @menu
5718 * Set Tracepoints::
5719 * Analyze Collected Data::
5720 * Tracepoint Variables::
5721 @end menu
5722
5723 @node Set Tracepoints
5724 @section Commands to Set Tracepoints
5725
5726 Before running such a @dfn{trace experiment}, an arbitrary number of
5727 tracepoints can be set. Like a breakpoint (@pxref{Set Breaks}), a
5728 tracepoint has a number assigned to it by @value{GDBN}. Like with
5729 breakpoints, tracepoint numbers are successive integers starting from
5730 one. Many of the commands associated with tracepoints take the
5731 tracepoint number as their argument, to identify which tracepoint to
5732 work on.
5733
5734 For each tracepoint, you can specify, in advance, some arbitrary set
5735 of data that you want the target to collect in the trace buffer when
5736 it hits that tracepoint. The collected data can include registers,
5737 local variables, or global data. Later, you can use @value{GDBN}
5738 commands to examine the values these data had at the time the
5739 tracepoint was hit.
5740
5741 This section describes commands to set tracepoints and associated
5742 conditions and actions.
5743
5744 @menu
5745 * Create and Delete Tracepoints::
5746 * Enable and Disable Tracepoints::
5747 * Tracepoint Passcounts::
5748 * Tracepoint Actions::
5749 * Listing Tracepoints::
5750 * Starting and Stopping Trace Experiment::
5751 @end menu
5752
5753 @node Create and Delete Tracepoints
5754 @subsection Create and Delete Tracepoints
5755
5756 @table @code
5757 @cindex set tracepoint
5758 @kindex trace
5759 @item trace
5760 The @code{trace} command is very similar to the @code{break} command.
5761 Its argument can be a source line, a function name, or an address in
5762 the target program. @xref{Set Breaks}. The @code{trace} command
5763 defines a tracepoint, which is a point in the target program where the
5764 debugger will briefly stop, collect some data, and then allow the
5765 program to continue. Setting a tracepoint or changing its commands
5766 doesn't take effect until the next @code{tstart} command; thus, you
5767 cannot change the tracepoint attributes once a trace experiment is
5768 running.
5769
5770 Here are some examples of using the @code{trace} command:
5771
5772 @smallexample
5773 (@value{GDBP}) @b{trace foo.c:121} // a source file and line number
5774
5775 (@value{GDBP}) @b{trace +2} // 2 lines forward
5776
5777 (@value{GDBP}) @b{trace my_function} // first source line of function
5778
5779 (@value{GDBP}) @b{trace *my_function} // EXACT start address of function
5780
5781 (@value{GDBP}) @b{trace *0x2117c4} // an address
5782 @end smallexample
5783
5784 @noindent
5785 You can abbreviate @code{trace} as @code{tr}.
5786
5787 @vindex $tpnum
5788 @cindex last tracepoint number
5789 @cindex recent tracepoint number
5790 @cindex tracepoint number
5791 The convenience variable @code{$tpnum} records the tracepoint number
5792 of the most recently set tracepoint.
5793
5794 @kindex delete tracepoint
5795 @cindex tracepoint deletion
5796 @item delete tracepoint @r{[}@var{num}@r{]}
5797 Permanently delete one or more tracepoints. With no argument, the
5798 default is to delete all tracepoints.
5799
5800 Examples:
5801
5802 @smallexample
5803 (@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
5804
5805 (@value{GDBP}) @b{delete trace} // remove all tracepoints
5806 @end smallexample
5807
5808 @noindent
5809 You can abbreviate this command as @code{del tr}.
5810 @end table
5811
5812 @node Enable and Disable Tracepoints
5813 @subsection Enable and Disable Tracepoints
5814
5815 @table @code
5816 @kindex disable tracepoint
5817 @item disable tracepoint @r{[}@var{num}@r{]}
5818 Disable tracepoint @var{num}, or all tracepoints if no argument
5819 @var{num} is given. A disabled tracepoint will have no effect during
5820 the next trace experiment, but it is not forgotten. You can re-enable
5821 a disabled tracepoint using the @code{enable tracepoint} command.
5822
5823 @kindex enable tracepoint
5824 @item enable tracepoint @r{[}@var{num}@r{]}
5825 Enable tracepoint @var{num}, or all tracepoints. The enabled
5826 tracepoints will become effective the next time a trace experiment is
5827 run.
5828 @end table
5829
5830 @node Tracepoint Passcounts
5831 @subsection Tracepoint Passcounts
5832
5833 @table @code
5834 @kindex passcount
5835 @cindex tracepoint pass count
5836 @item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
5837 Set the @dfn{passcount} of a tracepoint. The passcount is a way to
5838 automatically stop a trace experiment. If a tracepoint's passcount is
5839 @var{n}, then the trace experiment will be automatically stopped on
5840 the @var{n}'th time that tracepoint is hit. If the tracepoint number
5841 @var{num} is not specified, the @code{passcount} command sets the
5842 passcount of the most recently defined tracepoint. If no passcount is
5843 given, the trace experiment will run until stopped explicitly by the
5844 user.
5845
5846 Examples:
5847
5848 @smallexample
5849 (@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of tracepoint 2
5850
5851 (@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
5852 // most recently defined tracepoint.
5853 (@value{GDBP}) @b{trace foo}
5854 (@value{GDBP}) @b{pass 3}
5855 (@value{GDBP}) @b{trace bar}
5856 (@value{GDBP}) @b{pass 2}
5857 (@value{GDBP}) @b{trace baz}
5858 (@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
5859 // executed 3 times OR when bar has
5860 // been executed 2 times
5861 // OR when baz has been executed 1 time.
5862 @end smallexample
5863 @end table
5864
5865 @node Tracepoint Actions
5866 @subsection Tracepoint Action Lists
5867
5868 @table @code
5869 @kindex actions
5870 @cindex tracepoint actions
5871 @item actions @r{[}@var{num}@r{]}
5872 This command will prompt for a list of actions to be taken when the
5873 tracepoint is hit. If the tracepoint number @var{num} is not
5874 specified, this command sets the actions for the one that was most
5875 recently defined (so that you can define a tracepoint and then say
5876 @code{actions} without bothering about its number). You specify the
5877 actions themselves on the following lines, one action at a time, and
5878 terminate the actions list with a line containing just @code{end}. So
5879 far, the only defined actions are @code{collect} and
5880 @code{while-stepping}.
5881
5882 @cindex remove actions from a tracepoint
5883 To remove all actions from a tracepoint, type @samp{actions @var{num}}
5884 and follow it immediately with @samp{end}.
5885
5886 @smallexample
5887 (@value{GDBP}) @b{collect @var{data}} // collect some data
5888
5889 (@value{GDBP}) @b{while-stepping 5} // single-step 5 times and collect data
5890
5891 (@value{GDBP}) @b{end} // signals the end of actions.
5892 @end smallexample
5893
5894 In the following example, the action list begins with @code{collect}
5895 commands indicating the things to be collected when the tracepoint is
5896 hit. Then, in order to single-step and collect additional data
5897 following the tracepoint, a @code{while-stepping} command is used,
5898 followed by the list of things to be collected while stepping. The
5899 @code{while-stepping} command is terminated by its own separate
5900 @code{end} command. Lastly, the action list is terminated by an
5901 @code{end} command.
5902
5903 @smallexample
5904 (@value{GDBP}) @b{trace foo}
5905 (@value{GDBP}) @b{actions}
5906 Enter actions for tracepoint 1, one per line:
5907 > collect bar,baz
5908 > collect $regs
5909 > while-stepping 12
5910 > collect $fp, $sp
5911 > end
5912 end
5913 @end smallexample
5914
5915 @kindex collect @r{(tracepoints)}
5916 @item collect @var{expr1}, @var{expr2}, @dots{}
5917 Collect values of the given expressions when the tracepoint is hit.
5918 This command accepts a comma-separated list of any valid expressions.
5919 In addition to global, static, or local variables, the following
5920 special arguments are supported:
5921
5922 @table @code
5923 @item $regs
5924 collect all registers
5925
5926 @item $args
5927 collect all function arguments
5928
5929 @item $locals
5930 collect all local variables.
5931 @end table
5932
5933 You can give several consecutive @code{collect} commands, each one
5934 with a single argument, or one @code{collect} command with several
5935 arguments separated by commas: the effect is the same.
5936
5937 The command @code{info scope} (@pxref{Symbols, info scope}) is
5938 particularly useful for figuring out what data to collect.
5939
5940 @kindex while-stepping @r{(tracepoints)}
5941 @item while-stepping @var{n}
5942 Perform @var{n} single-step traces after the tracepoint, collecting
5943 new data at each step. The @code{while-stepping} command is
5944 followed by the list of what to collect while stepping (followed by
5945 its own @code{end} command):
5946
5947 @smallexample
5948 > while-stepping 12
5949 > collect $regs, myglobal
5950 > end
5951 >
5952 @end smallexample
5953
5954 @noindent
5955 You may abbreviate @code{while-stepping} as @code{ws} or
5956 @code{stepping}.
5957 @end table
5958
5959 @node Listing Tracepoints
5960 @subsection Listing Tracepoints
5961
5962 @table @code
5963 @kindex info tracepoints
5964 @cindex information about tracepoints
5965 @item info tracepoints @r{[}@var{num}@r{]}
5966 Display information the tracepoint @var{num}. If you don't specify a
5967 tracepoint number displays information about all the tracepoints
5968 defined so far. For each tracepoint, the following information is
5969 shown:
5970
5971 @itemize @bullet
5972 @item
5973 its number
5974 @item
5975 whether it is enabled or disabled
5976 @item
5977 its address
5978 @item
5979 its passcount as given by the @code{passcount @var{n}} command
5980 @item
5981 its step count as given by the @code{while-stepping @var{n}} command
5982 @item
5983 where in the source files is the tracepoint set
5984 @item
5985 its action list as given by the @code{actions} command
5986 @end itemize
5987
5988 @smallexample
5989 (@value{GDBP}) @b{info trace}
5990 Num Enb Address PassC StepC What
5991 1 y 0x002117c4 0 0 <gdb_asm>
5992 2 y 0x0020dc64 0 0 in gdb_test at gdb_test.c:375
5993 3 y 0x0020b1f4 0 0 in collect_data at ../foo.c:1741
5994 (@value{GDBP})
5995 @end smallexample
5996
5997 @noindent
5998 This command can be abbreviated @code{info tp}.
5999 @end table
6000
6001 @node Starting and Stopping Trace Experiment
6002 @subsection Starting and Stopping Trace Experiment
6003
6004 @table @code
6005 @kindex tstart
6006 @cindex start a new trace experiment
6007 @cindex collected data discarded
6008 @item tstart
6009 This command takes no arguments. It starts the trace experiment, and
6010 begins collecting data. This has the side effect of discarding all
6011 the data collected in the trace buffer during the previous trace
6012 experiment.
6013
6014 @kindex tstop
6015 @cindex stop a running trace experiment
6016 @item tstop
6017 This command takes no arguments. It ends the trace experiment, and
6018 stops collecting data.
6019
6020 @strong{Note:} a trace experiment and data collection may stop
6021 automatically if any tracepoint's passcount is reached
6022 (@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
6023
6024 @kindex tstatus
6025 @cindex status of trace data collection
6026 @cindex trace experiment, status of
6027 @item tstatus
6028 This command displays the status of the current trace data
6029 collection.
6030 @end table
6031
6032 Here is an example of the commands we described so far:
6033
6034 @smallexample
6035 (@value{GDBP}) @b{trace gdb_c_test}
6036 (@value{GDBP}) @b{actions}
6037 Enter actions for tracepoint #1, one per line.
6038 > collect $regs,$locals,$args
6039 > while-stepping 11
6040 > collect $regs
6041 > end
6042 > end
6043 (@value{GDBP}) @b{tstart}
6044 [time passes @dots{}]
6045 (@value{GDBP}) @b{tstop}
6046 @end smallexample
6047
6048
6049 @node Analyze Collected Data
6050 @section Using the collected data
6051
6052 After the tracepoint experiment ends, you use @value{GDBN} commands
6053 for examining the trace data. The basic idea is that each tracepoint
6054 collects a trace @dfn{snapshot} every time it is hit and another
6055 snapshot every time it single-steps. All these snapshots are
6056 consecutively numbered from zero and go into a buffer, and you can
6057 examine them later. The way you examine them is to @dfn{focus} on a
6058 specific trace snapshot. When the remote stub is focused on a trace
6059 snapshot, it will respond to all @value{GDBN} requests for memory and
6060 registers by reading from the buffer which belongs to that snapshot,
6061 rather than from @emph{real} memory or registers of the program being
6062 debugged. This means that @strong{all} @value{GDBN} commands
6063 (@code{print}, @code{info registers}, @code{backtrace}, etc.) will
6064 behave as if we were currently debugging the program state as it was
6065 when the tracepoint occurred. Any requests for data that are not in
6066 the buffer will fail.
6067
6068 @menu
6069 * tfind:: How to select a trace snapshot
6070 * tdump:: How to display all data for a snapshot
6071 * save-tracepoints:: How to save tracepoints for a future run
6072 @end menu
6073
6074 @node tfind
6075 @subsection @code{tfind @var{n}}
6076
6077 @kindex tfind
6078 @cindex select trace snapshot
6079 @cindex find trace snapshot
6080 The basic command for selecting a trace snapshot from the buffer is
6081 @code{tfind @var{n}}, which finds trace snapshot number @var{n},
6082 counting from zero. If no argument @var{n} is given, the next
6083 snapshot is selected.
6084
6085 Here are the various forms of using the @code{tfind} command.
6086
6087 @table @code
6088 @item tfind start
6089 Find the first snapshot in the buffer. This is a synonym for
6090 @code{tfind 0} (since 0 is the number of the first snapshot).
6091
6092 @item tfind none
6093 Stop debugging trace snapshots, resume @emph{live} debugging.
6094
6095 @item tfind end
6096 Same as @samp{tfind none}.
6097
6098 @item tfind
6099 No argument means find the next trace snapshot.
6100
6101 @item tfind -
6102 Find the previous trace snapshot before the current one. This permits
6103 retracing earlier steps.
6104
6105 @item tfind tracepoint @var{num}
6106 Find the next snapshot associated with tracepoint @var{num}. Search
6107 proceeds forward from the last examined trace snapshot. If no
6108 argument @var{num} is given, it means find the next snapshot collected
6109 for the same tracepoint as the current snapshot.
6110
6111 @item tfind pc @var{addr}
6112 Find the next snapshot associated with the value @var{addr} of the
6113 program counter. Search proceeds forward from the last examined trace
6114 snapshot. If no argument @var{addr} is given, it means find the next
6115 snapshot with the same value of PC as the current snapshot.
6116
6117 @item tfind outside @var{addr1}, @var{addr2}
6118 Find the next snapshot whose PC is outside the given range of
6119 addresses.
6120
6121 @item tfind range @var{addr1}, @var{addr2}
6122 Find the next snapshot whose PC is between @var{addr1} and
6123 @var{addr2}. @c FIXME: Is the range inclusive or exclusive?
6124
6125 @item tfind line @r{[}@var{file}:@r{]}@var{n}
6126 Find the next snapshot associated with the source line @var{n}. If
6127 the optional argument @var{file} is given, refer to line @var{n} in
6128 that source file. Search proceeds forward from the last examined
6129 trace snapshot. If no argument @var{n} is given, it means find the
6130 next line other than the one currently being examined; thus saying
6131 @code{tfind line} repeatedly can appear to have the same effect as
6132 stepping from line to line in a @emph{live} debugging session.
6133 @end table
6134
6135 The default arguments for the @code{tfind} commands are specifically
6136 designed to make it easy to scan through the trace buffer. For
6137 instance, @code{tfind} with no argument selects the next trace
6138 snapshot, and @code{tfind -} with no argument selects the previous
6139 trace snapshot. So, by giving one @code{tfind} command, and then
6140 simply hitting @key{RET} repeatedly you can examine all the trace
6141 snapshots in order. Or, by saying @code{tfind -} and then hitting
6142 @key{RET} repeatedly you can examine the snapshots in reverse order.
6143 The @code{tfind line} command with no argument selects the snapshot
6144 for the next source line executed. The @code{tfind pc} command with
6145 no argument selects the next snapshot with the same program counter
6146 (PC) as the current frame. The @code{tfind tracepoint} command with
6147 no argument selects the next trace snapshot collected by the same
6148 tracepoint as the current one.
6149
6150 In addition to letting you scan through the trace buffer manually,
6151 these commands make it easy to construct @value{GDBN} scripts that
6152 scan through the trace buffer and print out whatever collected data
6153 you are interested in. Thus, if we want to examine the PC, FP, and SP
6154 registers from each trace frame in the buffer, we can say this:
6155
6156 @smallexample
6157 (@value{GDBP}) @b{tfind start}
6158 (@value{GDBP}) @b{while ($trace_frame != -1)}
6159 > printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
6160 $trace_frame, $pc, $sp, $fp
6161 > tfind
6162 > end
6163
6164 Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
6165 Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
6166 Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
6167 Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
6168 Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
6169 Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
6170 Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
6171 Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
6172 Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
6173 Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
6174 Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
6175 @end smallexample
6176
6177 Or, if we want to examine the variable @code{X} at each source line in
6178 the buffer:
6179
6180 @smallexample
6181 (@value{GDBP}) @b{tfind start}
6182 (@value{GDBP}) @b{while ($trace_frame != -1)}
6183 > printf "Frame %d, X == %d\n", $trace_frame, X
6184 > tfind line
6185 > end
6186
6187 Frame 0, X = 1
6188 Frame 7, X = 2
6189 Frame 13, X = 255
6190 @end smallexample
6191
6192 @node tdump
6193 @subsection @code{tdump}
6194 @kindex tdump
6195 @cindex dump all data collected at tracepoint
6196 @cindex tracepoint data, display
6197
6198 This command takes no arguments. It prints all the data collected at
6199 the current trace snapshot.
6200
6201 @smallexample
6202 (@value{GDBP}) @b{trace 444}
6203 (@value{GDBP}) @b{actions}
6204 Enter actions for tracepoint #2, one per line:
6205 > collect $regs, $locals, $args, gdb_long_test
6206 > end
6207
6208 (@value{GDBP}) @b{tstart}
6209
6210 (@value{GDBP}) @b{tfind line 444}
6211 #0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
6212 at gdb_test.c:444
6213 444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
6214
6215 (@value{GDBP}) @b{tdump}
6216 Data collected at tracepoint 2, trace frame 1:
6217 d0 0xc4aa0085 -995491707
6218 d1 0x18 24
6219 d2 0x80 128
6220 d3 0x33 51
6221 d4 0x71aea3d 119204413
6222 d5 0x22 34
6223 d6 0xe0 224
6224 d7 0x380035 3670069
6225 a0 0x19e24a 1696330
6226 a1 0x3000668 50333288
6227 a2 0x100 256
6228 a3 0x322000 3284992
6229 a4 0x3000698 50333336
6230 a5 0x1ad3cc 1758156
6231 fp 0x30bf3c 0x30bf3c
6232 sp 0x30bf34 0x30bf34
6233 ps 0x0 0
6234 pc 0x20b2c8 0x20b2c8
6235 fpcontrol 0x0 0
6236 fpstatus 0x0 0
6237 fpiaddr 0x0 0
6238 p = 0x20e5b4 "gdb-test"
6239 p1 = (void *) 0x11
6240 p2 = (void *) 0x22
6241 p3 = (void *) 0x33
6242 p4 = (void *) 0x44
6243 p5 = (void *) 0x55
6244 p6 = (void *) 0x66
6245 gdb_long_test = 17 '\021'
6246
6247 (@value{GDBP})
6248 @end smallexample
6249
6250 @node save-tracepoints
6251 @subsection @code{save-tracepoints @var{filename}}
6252 @kindex save-tracepoints
6253 @cindex save tracepoints for future sessions
6254
6255 This command saves all current tracepoint definitions together with
6256 their actions and passcounts, into a file @file{@var{filename}}
6257 suitable for use in a later debugging session. To read the saved
6258 tracepoint definitions, use the @code{source} command (@pxref{Command
6259 Files}).
6260
6261 @node Tracepoint Variables
6262 @section Convenience Variables for Tracepoints
6263 @cindex tracepoint variables
6264 @cindex convenience variables for tracepoints
6265
6266 @table @code
6267 @vindex $trace_frame
6268 @item (int) $trace_frame
6269 The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
6270 snapshot is selected.
6271
6272 @vindex $tracepoint
6273 @item (int) $tracepoint
6274 The tracepoint for the current trace snapshot.
6275
6276 @vindex $trace_line
6277 @item (int) $trace_line
6278 The line number for the current trace snapshot.
6279
6280 @vindex $trace_file
6281 @item (char []) $trace_file
6282 The source file for the current trace snapshot.
6283
6284 @vindex $trace_func
6285 @item (char []) $trace_func
6286 The name of the function containing @code{$tracepoint}.
6287 @end table
6288
6289 Note: @code{$trace_file} is not suitable for use in @code{printf},
6290 use @code{output} instead.
6291
6292 Here's a simple example of using these convenience variables for
6293 stepping through all the trace snapshots and printing some of their
6294 data.
6295
6296 @smallexample
6297 (@value{GDBP}) @b{tfind start}
6298
6299 (@value{GDBP}) @b{while $trace_frame != -1}
6300 > output $trace_file
6301 > printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
6302 > tfind
6303 > end
6304 @end smallexample
6305
6306 @node Overlays
6307 @chapter Debugging Programs That Use Overlays
6308 @cindex overlays
6309
6310 If your program is too large to fit completely in your target system's
6311 memory, you can sometimes use @dfn{overlays} to work around this
6312 problem. @value{GDBN} provides some support for debugging programs that
6313 use overlays.
6314
6315 @menu
6316 * How Overlays Work:: A general explanation of overlays.
6317 * Overlay Commands:: Managing overlays in @value{GDBN}.
6318 * Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
6319 mapped by asking the inferior.
6320 * Overlay Sample Program:: A sample program using overlays.
6321 @end menu
6322
6323 @node How Overlays Work
6324 @section How Overlays Work
6325 @cindex mapped overlays
6326 @cindex unmapped overlays
6327 @cindex load address, overlay's
6328 @cindex mapped address
6329 @cindex overlay area
6330
6331 Suppose you have a computer whose instruction address space is only 64
6332 kilobytes long, but which has much more memory which can be accessed by
6333 other means: special instructions, segment registers, or memory
6334 management hardware, for example. Suppose further that you want to
6335 adapt a program which is larger than 64 kilobytes to run on this system.
6336
6337 One solution is to identify modules of your program which are relatively
6338 independent, and need not call each other directly; call these modules
6339 @dfn{overlays}. Separate the overlays from the main program, and place
6340 their machine code in the larger memory. Place your main program in
6341 instruction memory, but leave at least enough space there to hold the
6342 largest overlay as well.
6343
6344 Now, to call a function located in an overlay, you must first copy that
6345 overlay's machine code from the large memory into the space set aside
6346 for it in the instruction memory, and then jump to its entry point
6347 there.
6348
6349 @example
6350 @group
6351 Data Instruction Larger
6352 Address Space Address Space Address Space
6353 +-----------+ +-----------+ +-----------+
6354 | | | | | |
6355 +-----------+ +-----------+ +-----------+<-- overlay 1
6356 | program | | main | | | load address
6357 | variables | | program | | overlay 1 |
6358 | and heap | | | ,---| |
6359 +-----------+ | | | | |
6360 | | +-----------+ | +-----------+
6361 +-----------+ | | | | |
6362 mapped --->+-----------+ / +-----------+<-- overlay 2
6363 address | overlay | <-' | overlay 2 | load address
6364 | area | <-----| |
6365 | | <---. +-----------+
6366 | | | | |
6367 +-----------+ | | |
6368 | | | +-----------+<-- overlay 3
6369 +-----------+ `--| | load address
6370 | overlay 3 |
6371 | |
6372 +-----------+
6373 | |
6374 +-----------+
6375
6376 To map an overlay, copy its code from the larger address space
6377 to the instruction address space. Since the overlays shown here
6378 all use the same mapped address, only one may be mapped at a time.
6379 @end group
6380 @end example
6381
6382 This diagram shows a system with separate data and instruction address
6383 spaces. For a system with a single address space for data and
6384 instructions, the diagram would be similar, except that the program
6385 variables and heap would share an address space with the main program
6386 and the overlay area.
6387
6388 An overlay loaded into instruction memory and ready for use is called a
6389 @dfn{mapped} overlay; its @dfn{mapped address} is its address in the
6390 instruction memory. An overlay not present (or only partially present)
6391 in instruction memory is called @dfn{unmapped}; its @dfn{load address}
6392 is its address in the larger memory. The mapped address is also called
6393 the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
6394 called the @dfn{load memory address}, or @dfn{LMA}.
6395
6396 Unfortunately, overlays are not a completely transparent way to adapt a
6397 program to limited instruction memory. They introduce a new set of
6398 global constraints you must keep in mind as you design your program:
6399
6400 @itemize @bullet
6401
6402 @item
6403 Before calling or returning to a function in an overlay, your program
6404 must make sure that overlay is actually mapped. Otherwise, the call or
6405 return will transfer control to the right address, but in the wrong
6406 overlay, and your program will probably crash.
6407
6408 @item
6409 If the process of mapping an overlay is expensive on your system, you
6410 will need to choose your overlays carefully to minimize their effect on
6411 your program's performance.
6412
6413 @item
6414 The executable file you load onto your system must contain each
6415 overlay's instructions, appearing at the overlay's load address, not its
6416 mapped address. However, each overlay's instructions must be relocated
6417 and its symbols defined as if the overlay were at its mapped address.
6418 You can use GNU linker scripts to specify different load and relocation
6419 addresses for pieces of your program; see @ref{Overlay Description,,,
6420 ld.info, Using ld: the GNU linker}.
6421
6422 @item
6423 The procedure for loading executable files onto your system must be able
6424 to load their contents into the larger address space as well as the
6425 instruction and data spaces.
6426
6427 @end itemize
6428
6429 The overlay system described above is rather simple, and could be
6430 improved in many ways:
6431
6432 @itemize @bullet
6433
6434 @item
6435 If your system has suitable bank switch registers or memory management
6436 hardware, you could use those facilities to make an overlay's load area
6437 contents simply appear at their mapped address in instruction space.
6438 This would probably be faster than copying the overlay to its mapped
6439 area in the usual way.
6440
6441 @item
6442 If your overlays are small enough, you could set aside more than one
6443 overlay area, and have more than one overlay mapped at a time.
6444
6445 @item
6446 You can use overlays to manage data, as well as instructions. In
6447 general, data overlays are even less transparent to your design than
6448 code overlays: whereas code overlays only require care when you call or
6449 return to functions, data overlays require care every time you access
6450 the data. Also, if you change the contents of a data overlay, you
6451 must copy its contents back out to its load address before you can copy a
6452 different data overlay into the same mapped area.
6453
6454 @end itemize
6455
6456
6457 @node Overlay Commands
6458 @section Overlay Commands
6459
6460 To use @value{GDBN}'s overlay support, each overlay in your program must
6461 correspond to a separate section of the executable file. The section's
6462 virtual memory address and load memory address must be the overlay's
6463 mapped and load addresses. Identifying overlays with sections allows
6464 @value{GDBN} to determine the appropriate address of a function or
6465 variable, depending on whether the overlay is mapped or not.
6466
6467 @value{GDBN}'s overlay commands all start with the word @code{overlay};
6468 you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
6469
6470 @table @code
6471 @item overlay off
6472 @kindex overlay off
6473 Disable @value{GDBN}'s overlay support. When overlay support is
6474 disabled, @value{GDBN} assumes that all functions and variables are
6475 always present at their mapped addresses. By default, @value{GDBN}'s
6476 overlay support is disabled.
6477
6478 @item overlay manual
6479 @kindex overlay manual
6480 @cindex manual overlay debugging
6481 Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
6482 relies on you to tell it which overlays are mapped, and which are not,
6483 using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
6484 commands described below.
6485
6486 @item overlay map-overlay @var{overlay}
6487 @itemx overlay map @var{overlay}
6488 @kindex overlay map-overlay
6489 @cindex map an overlay
6490 Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
6491 be the name of the object file section containing the overlay. When an
6492 overlay is mapped, @value{GDBN} assumes it can find the overlay's
6493 functions and variables at their mapped addresses. @value{GDBN} assumes
6494 that any other overlays whose mapped ranges overlap that of
6495 @var{overlay} are now unmapped.
6496
6497 @item overlay unmap-overlay @var{overlay}
6498 @itemx overlay unmap @var{overlay}
6499 @kindex overlay unmap-overlay
6500 @cindex unmap an overlay
6501 Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
6502 must be the name of the object file section containing the overlay.
6503 When an overlay is unmapped, @value{GDBN} assumes it can find the
6504 overlay's functions and variables at their load addresses.
6505
6506 @item overlay auto
6507 @kindex overlay auto
6508 Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
6509 consults a data structure the overlay manager maintains in the inferior
6510 to see which overlays are mapped. For details, see @ref{Automatic
6511 Overlay Debugging}.
6512
6513 @item overlay load-target
6514 @itemx overlay load
6515 @kindex overlay load-target
6516 @cindex reloading the overlay table
6517 Re-read the overlay table from the inferior. Normally, @value{GDBN}
6518 re-reads the table @value{GDBN} automatically each time the inferior
6519 stops, so this command should only be necessary if you have changed the
6520 overlay mapping yourself using @value{GDBN}. This command is only
6521 useful when using automatic overlay debugging.
6522
6523 @item overlay list-overlays
6524 @itemx overlay list
6525 @cindex listing mapped overlays
6526 Display a list of the overlays currently mapped, along with their mapped
6527 addresses, load addresses, and sizes.
6528
6529 @end table
6530
6531 Normally, when @value{GDBN} prints a code address, it includes the name
6532 of the function the address falls in:
6533
6534 @example
6535 (gdb) print main
6536 $3 = @{int ()@} 0x11a0 <main>
6537 @end example
6538 @noindent
6539 When overlay debugging is enabled, @value{GDBN} recognizes code in
6540 unmapped overlays, and prints the names of unmapped functions with
6541 asterisks around them. For example, if @code{foo} is a function in an
6542 unmapped overlay, @value{GDBN} prints it this way:
6543
6544 @example
6545 (gdb) overlay list
6546 No sections are mapped.
6547 (gdb) print foo
6548 $5 = @{int (int)@} 0x100000 <*foo*>
6549 @end example
6550 @noindent
6551 When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
6552 name normally:
6553
6554 @example
6555 (gdb) overlay list
6556 Section .ov.foo.text, loaded at 0x100000 - 0x100034,
6557 mapped at 0x1016 - 0x104a
6558 (gdb) print foo
6559 $6 = @{int (int)@} 0x1016 <foo>
6560 @end example
6561
6562 When overlay debugging is enabled, @value{GDBN} can find the correct
6563 address for functions and variables in an overlay, whether or not the
6564 overlay is mapped. This allows most @value{GDBN} commands, like
6565 @code{break} and @code{disassemble}, to work normally, even on unmapped
6566 code. However, @value{GDBN}'s breakpoint support has some limitations:
6567
6568 @itemize @bullet
6569 @item
6570 @cindex breakpoints in overlays
6571 @cindex overlays, setting breakpoints in
6572 You can set breakpoints in functions in unmapped overlays, as long as
6573 @value{GDBN} can write to the overlay at its load address.
6574 @item
6575 @value{GDBN} can not set hardware or simulator-based breakpoints in
6576 unmapped overlays. However, if you set a breakpoint at the end of your
6577 overlay manager (and tell @value{GDBN} which overlays are now mapped, if
6578 you are using manual overlay management), @value{GDBN} will re-set its
6579 breakpoints properly.
6580 @end itemize
6581
6582
6583 @node Automatic Overlay Debugging
6584 @section Automatic Overlay Debugging
6585 @cindex automatic overlay debugging
6586
6587 @value{GDBN} can automatically track which overlays are mapped and which
6588 are not, given some simple co-operation from the overlay manager in the
6589 inferior. If you enable automatic overlay debugging with the
6590 @code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
6591 looks in the inferior's memory for certain variables describing the
6592 current state of the overlays.
6593
6594 Here are the variables your overlay manager must define to support
6595 @value{GDBN}'s automatic overlay debugging:
6596
6597 @table @asis
6598
6599 @item @code{_ovly_table}:
6600 This variable must be an array of the following structures:
6601
6602 @example
6603 struct
6604 @{
6605 /* The overlay's mapped address. */
6606 unsigned long vma;
6607
6608 /* The size of the overlay, in bytes. */
6609 unsigned long size;
6610
6611 /* The overlay's load address. */
6612 unsigned long lma;
6613
6614 /* Non-zero if the overlay is currently mapped;
6615 zero otherwise. */
6616 unsigned long mapped;
6617 @}
6618 @end example
6619
6620 @item @code{_novlys}:
6621 This variable must be a four-byte signed integer, holding the total
6622 number of elements in @code{_ovly_table}.
6623
6624 @end table
6625
6626 To decide whether a particular overlay is mapped or not, @value{GDBN}
6627 looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
6628 @code{lma} members equal the VMA and LMA of the overlay's section in the
6629 executable file. When @value{GDBN} finds a matching entry, it consults
6630 the entry's @code{mapped} member to determine whether the overlay is
6631 currently mapped.
6632
6633
6634 @node Overlay Sample Program
6635 @section Overlay Sample Program
6636 @cindex overlay example program
6637
6638 When linking a program which uses overlays, you must place the overlays
6639 at their load addresses, while relocating them to run at their mapped
6640 addresses. To do this, you must write a linker script (@pxref{Overlay
6641 Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
6642 since linker scripts are specific to a particular host system, target
6643 architecture, and target memory layout, this manual cannot provide
6644 portable sample code demonstrating @value{GDBN}'s overlay support.
6645
6646 However, the @value{GDBN} source distribution does contain an overlaid
6647 program, with linker scripts for a few systems, as part of its test
6648 suite. The program consists of the following files from
6649 @file{gdb/testsuite/gdb.base}:
6650
6651 @table @file
6652 @item overlays.c
6653 The main program file.
6654 @item ovlymgr.c
6655 A simple overlay manager, used by @file{overlays.c}.
6656 @item foo.c
6657 @itemx bar.c
6658 @itemx baz.c
6659 @itemx grbx.c
6660 Overlay modules, loaded and used by @file{overlays.c}.
6661 @item d10v.ld
6662 @itemx m32r.ld
6663 Linker scripts for linking the test program on the @code{d10v-elf}
6664 and @code{m32r-elf} targets.
6665 @end table
6666
6667 You can build the test program using the @code{d10v-elf} GCC
6668 cross-compiler like this:
6669
6670 @example
6671 $ d10v-elf-gcc -g -c overlays.c
6672 $ d10v-elf-gcc -g -c ovlymgr.c
6673 $ d10v-elf-gcc -g -c foo.c
6674 $ d10v-elf-gcc -g -c bar.c
6675 $ d10v-elf-gcc -g -c baz.c
6676 $ d10v-elf-gcc -g -c grbx.c
6677 $ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
6678 baz.o grbx.o -Wl,-Td10v.ld -o overlays
6679 @end example
6680
6681 The build process is identical for any other architecture, except that
6682 you must substitute the appropriate compiler and linker script for the
6683 target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
6684
6685
6686 @node Languages
6687 @chapter Using @value{GDBN} with Different Languages
6688 @cindex languages
6689
6690 Although programming languages generally have common aspects, they are
6691 rarely expressed in the same manner. For instance, in ANSI C,
6692 dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
6693 Modula-2, it is accomplished by @code{p^}. Values can also be
6694 represented (and displayed) differently. Hex numbers in C appear as
6695 @samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
6696
6697 @cindex working language
6698 Language-specific information is built into @value{GDBN} for some languages,
6699 allowing you to express operations like the above in your program's
6700 native language, and allowing @value{GDBN} to output values in a manner
6701 consistent with the syntax of your program's native language. The
6702 language you use to build expressions is called the @dfn{working
6703 language}.
6704
6705 @menu
6706 * Setting:: Switching between source languages
6707 * Show:: Displaying the language
6708 * Checks:: Type and range checks
6709 * Support:: Supported languages
6710 @end menu
6711
6712 @node Setting
6713 @section Switching between source languages
6714
6715 There are two ways to control the working language---either have @value{GDBN}
6716 set it automatically, or select it manually yourself. You can use the
6717 @code{set language} command for either purpose. On startup, @value{GDBN}
6718 defaults to setting the language automatically. The working language is
6719 used to determine how expressions you type are interpreted, how values
6720 are printed, etc.
6721
6722 In addition to the working language, every source file that
6723 @value{GDBN} knows about has its own working language. For some object
6724 file formats, the compiler might indicate which language a particular
6725 source file is in. However, most of the time @value{GDBN} infers the
6726 language from the name of the file. The language of a source file
6727 controls whether C@t{++} names are demangled---this way @code{backtrace} can
6728 show each frame appropriately for its own language. There is no way to
6729 set the language of a source file from within @value{GDBN}, but you can
6730 set the language associated with a filename extension. @xref{Show, ,
6731 Displaying the language}.
6732
6733 This is most commonly a problem when you use a program, such
6734 as @code{cfront} or @code{f2c}, that generates C but is written in
6735 another language. In that case, make the
6736 program use @code{#line} directives in its C output; that way
6737 @value{GDBN} will know the correct language of the source code of the original
6738 program, and will display that source code, not the generated C code.
6739
6740 @menu
6741 * Filenames:: Filename extensions and languages.
6742 * Manually:: Setting the working language manually
6743 * Automatically:: Having @value{GDBN} infer the source language
6744 @end menu
6745
6746 @node Filenames
6747 @subsection List of filename extensions and languages
6748
6749 If a source file name ends in one of the following extensions, then
6750 @value{GDBN} infers that its language is the one indicated.
6751
6752 @table @file
6753
6754 @item .c
6755 C source file
6756
6757 @item .C
6758 @itemx .cc
6759 @itemx .cp
6760 @itemx .cpp
6761 @itemx .cxx
6762 @itemx .c++
6763 C@t{++} source file
6764
6765 @item .f
6766 @itemx .F
6767 Fortran source file
6768
6769 @item .ch
6770 @itemx .c186
6771 @itemx .c286
6772 CHILL source file
6773
6774 @item .mod
6775 Modula-2 source file
6776
6777 @item .s
6778 @itemx .S
6779 Assembler source file. This actually behaves almost like C, but
6780 @value{GDBN} does not skip over function prologues when stepping.
6781 @end table
6782
6783 In addition, you may set the language associated with a filename
6784 extension. @xref{Show, , Displaying the language}.
6785
6786 @node Manually
6787 @subsection Setting the working language
6788
6789 If you allow @value{GDBN} to set the language automatically,
6790 expressions are interpreted the same way in your debugging session and
6791 your program.
6792
6793 @kindex set language
6794 If you wish, you may set the language manually. To do this, issue the
6795 command @samp{set language @var{lang}}, where @var{lang} is the name of
6796 a language, such as
6797 @code{c} or @code{modula-2}.
6798 For a list of the supported languages, type @samp{set language}.
6799
6800 Setting the language manually prevents @value{GDBN} from updating the working
6801 language automatically. This can lead to confusion if you try
6802 to debug a program when the working language is not the same as the
6803 source language, when an expression is acceptable to both
6804 languages---but means different things. For instance, if the current
6805 source file were written in C, and @value{GDBN} was parsing Modula-2, a
6806 command such as:
6807
6808 @example
6809 print a = b + c
6810 @end example
6811
6812 @noindent
6813 might not have the effect you intended. In C, this means to add
6814 @code{b} and @code{c} and place the result in @code{a}. The result
6815 printed would be the value of @code{a}. In Modula-2, this means to compare
6816 @code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
6817
6818 @node Automatically
6819 @subsection Having @value{GDBN} infer the source language
6820
6821 To have @value{GDBN} set the working language automatically, use
6822 @samp{set language local} or @samp{set language auto}. @value{GDBN}
6823 then infers the working language. That is, when your program stops in a
6824 frame (usually by encountering a breakpoint), @value{GDBN} sets the
6825 working language to the language recorded for the function in that
6826 frame. If the language for a frame is unknown (that is, if the function
6827 or block corresponding to the frame was defined in a source file that
6828 does not have a recognized extension), the current working language is
6829 not changed, and @value{GDBN} issues a warning.
6830
6831 This may not seem necessary for most programs, which are written
6832 entirely in one source language. However, program modules and libraries
6833 written in one source language can be used by a main program written in
6834 a different source language. Using @samp{set language auto} in this
6835 case frees you from having to set the working language manually.
6836
6837 @node Show
6838 @section Displaying the language
6839
6840 The following commands help you find out which language is the
6841 working language, and also what language source files were written in.
6842
6843 @kindex show language
6844 @kindex info frame@r{, show the source language}
6845 @kindex info source@r{, show the source language}
6846 @table @code
6847 @item show language
6848 Display the current working language. This is the
6849 language you can use with commands such as @code{print} to
6850 build and compute expressions that may involve variables in your program.
6851
6852 @item info frame
6853 Display the source language for this frame. This language becomes the
6854 working language if you use an identifier from this frame.
6855 @xref{Frame Info, ,Information about a frame}, to identify the other
6856 information listed here.
6857
6858 @item info source
6859 Display the source language of this source file.
6860 @xref{Symbols, ,Examining the Symbol Table}, to identify the other
6861 information listed here.
6862 @end table
6863
6864 In unusual circumstances, you may have source files with extensions
6865 not in the standard list. You can then set the extension associated
6866 with a language explicitly:
6867
6868 @kindex set extension-language
6869 @kindex info extensions
6870 @table @code
6871 @item set extension-language @var{.ext} @var{language}
6872 Set source files with extension @var{.ext} to be assumed to be in
6873 the source language @var{language}.
6874
6875 @item info extensions
6876 List all the filename extensions and the associated languages.
6877 @end table
6878
6879 @node Checks
6880 @section Type and range checking
6881
6882 @quotation
6883 @emph{Warning:} In this release, the @value{GDBN} commands for type and range
6884 checking are included, but they do not yet have any effect. This
6885 section documents the intended facilities.
6886 @end quotation
6887 @c FIXME remove warning when type/range code added
6888
6889 Some languages are designed to guard you against making seemingly common
6890 errors through a series of compile- and run-time checks. These include
6891 checking the type of arguments to functions and operators, and making
6892 sure mathematical overflows are caught at run time. Checks such as
6893 these help to ensure a program's correctness once it has been compiled
6894 by eliminating type mismatches, and providing active checks for range
6895 errors when your program is running.
6896
6897 @value{GDBN} can check for conditions like the above if you wish.
6898 Although @value{GDBN} does not check the statements in your program, it
6899 can check expressions entered directly into @value{GDBN} for evaluation via
6900 the @code{print} command, for example. As with the working language,
6901 @value{GDBN} can also decide whether or not to check automatically based on
6902 your program's source language. @xref{Support, ,Supported languages},
6903 for the default settings of supported languages.
6904
6905 @menu
6906 * Type Checking:: An overview of type checking
6907 * Range Checking:: An overview of range checking
6908 @end menu
6909
6910 @cindex type checking
6911 @cindex checks, type
6912 @node Type Checking
6913 @subsection An overview of type checking
6914
6915 Some languages, such as Modula-2, are strongly typed, meaning that the
6916 arguments to operators and functions have to be of the correct type,
6917 otherwise an error occurs. These checks prevent type mismatch
6918 errors from ever causing any run-time problems. For example,
6919
6920 @smallexample
6921 1 + 2 @result{} 3
6922 @exdent but
6923 @error{} 1 + 2.3
6924 @end smallexample
6925
6926 The second example fails because the @code{CARDINAL} 1 is not
6927 type-compatible with the @code{REAL} 2.3.
6928
6929 For the expressions you use in @value{GDBN} commands, you can tell the
6930 @value{GDBN} type checker to skip checking;
6931 to treat any mismatches as errors and abandon the expression;
6932 or to only issue warnings when type mismatches occur,
6933 but evaluate the expression anyway. When you choose the last of
6934 these, @value{GDBN} evaluates expressions like the second example above, but
6935 also issues a warning.
6936
6937 Even if you turn type checking off, there may be other reasons
6938 related to type that prevent @value{GDBN} from evaluating an expression.
6939 For instance, @value{GDBN} does not know how to add an @code{int} and
6940 a @code{struct foo}. These particular type errors have nothing to do
6941 with the language in use, and usually arise from expressions, such as
6942 the one described above, which make little sense to evaluate anyway.
6943
6944 Each language defines to what degree it is strict about type. For
6945 instance, both Modula-2 and C require the arguments to arithmetical
6946 operators to be numbers. In C, enumerated types and pointers can be
6947 represented as numbers, so that they are valid arguments to mathematical
6948 operators. @xref{Support, ,Supported languages}, for further
6949 details on specific languages.
6950
6951 @value{GDBN} provides some additional commands for controlling the type checker:
6952
6953 @kindex set check@r{, type}
6954 @kindex set check type
6955 @kindex show check type
6956 @table @code
6957 @item set check type auto
6958 Set type checking on or off based on the current working language.
6959 @xref{Support, ,Supported languages}, for the default settings for
6960 each language.
6961
6962 @item set check type on
6963 @itemx set check type off
6964 Set type checking on or off, overriding the default setting for the
6965 current working language. Issue a warning if the setting does not
6966 match the language default. If any type mismatches occur in
6967 evaluating an expression while type checking is on, @value{GDBN} prints a
6968 message and aborts evaluation of the expression.
6969
6970 @item set check type warn
6971 Cause the type checker to issue warnings, but to always attempt to
6972 evaluate the expression. Evaluating the expression may still
6973 be impossible for other reasons. For example, @value{GDBN} cannot add
6974 numbers and structures.
6975
6976 @item show type
6977 Show the current setting of the type checker, and whether or not @value{GDBN}
6978 is setting it automatically.
6979 @end table
6980
6981 @cindex range checking
6982 @cindex checks, range
6983 @node Range Checking
6984 @subsection An overview of range checking
6985
6986 In some languages (such as Modula-2), it is an error to exceed the
6987 bounds of a type; this is enforced with run-time checks. Such range
6988 checking is meant to ensure program correctness by making sure
6989 computations do not overflow, or indices on an array element access do
6990 not exceed the bounds of the array.
6991
6992 For expressions you use in @value{GDBN} commands, you can tell
6993 @value{GDBN} to treat range errors in one of three ways: ignore them,
6994 always treat them as errors and abandon the expression, or issue
6995 warnings but evaluate the expression anyway.
6996
6997 A range error can result from numerical overflow, from exceeding an
6998 array index bound, or when you type a constant that is not a member
6999 of any type. Some languages, however, do not treat overflows as an
7000 error. In many implementations of C, mathematical overflow causes the
7001 result to ``wrap around'' to lower values---for example, if @var{m} is
7002 the largest integer value, and @var{s} is the smallest, then
7003
7004 @example
7005 @var{m} + 1 @result{} @var{s}
7006 @end example
7007
7008 This, too, is specific to individual languages, and in some cases
7009 specific to individual compilers or machines. @xref{Support, ,
7010 Supported languages}, for further details on specific languages.
7011
7012 @value{GDBN} provides some additional commands for controlling the range checker:
7013
7014 @kindex set check@r{, range}
7015 @kindex set check range
7016 @kindex show check range
7017 @table @code
7018 @item set check range auto
7019 Set range checking on or off based on the current working language.
7020 @xref{Support, ,Supported languages}, for the default settings for
7021 each language.
7022
7023 @item set check range on
7024 @itemx set check range off
7025 Set range checking on or off, overriding the default setting for the
7026 current working language. A warning is issued if the setting does not
7027 match the language default. If a range error occurs and range checking is on,
7028 then a message is printed and evaluation of the expression is aborted.
7029
7030 @item set check range warn
7031 Output messages when the @value{GDBN} range checker detects a range error,
7032 but attempt to evaluate the expression anyway. Evaluating the
7033 expression may still be impossible for other reasons, such as accessing
7034 memory that the process does not own (a typical example from many Unix
7035 systems).
7036
7037 @item show range
7038 Show the current setting of the range checker, and whether or not it is
7039 being set automatically by @value{GDBN}.
7040 @end table
7041
7042 @node Support
7043 @section Supported languages
7044
7045 @value{GDBN} supports C, C@t{++}, Fortran, Java, Chill, assembly, and Modula-2.
7046 @c This is false ...
7047 Some @value{GDBN} features may be used in expressions regardless of the
7048 language you use: the @value{GDBN} @code{@@} and @code{::} operators,
7049 and the @samp{@{type@}addr} construct (@pxref{Expressions,
7050 ,Expressions}) can be used with the constructs of any supported
7051 language.
7052
7053 The following sections detail to what degree each source language is
7054 supported by @value{GDBN}. These sections are not meant to be language
7055 tutorials or references, but serve only as a reference guide to what the
7056 @value{GDBN} expression parser accepts, and what input and output
7057 formats should look like for different languages. There are many good
7058 books written on each of these languages; please look to these for a
7059 language reference or tutorial.
7060
7061 @menu
7062 * C:: C and C@t{++}
7063 * Modula-2:: Modula-2
7064 * Chill:: Chill
7065 @end menu
7066
7067 @node C
7068 @subsection C and C@t{++}
7069
7070 @cindex C and C@t{++}
7071 @cindex expressions in C or C@t{++}
7072
7073 Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
7074 to both languages. Whenever this is the case, we discuss those languages
7075 together.
7076
7077 @cindex C@t{++}
7078 @cindex @code{g++}, @sc{gnu} C@t{++} compiler
7079 @cindex @sc{gnu} C@t{++}
7080 The C@t{++} debugging facilities are jointly implemented by the C@t{++}
7081 compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
7082 effectively, you must compile your C@t{++} programs with a supported
7083 C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
7084 compiler (@code{aCC}).
7085
7086 For best results when using @sc{gnu} C@t{++}, use the stabs debugging
7087 format. You can select that format explicitly with the @code{g++}
7088 command-line options @samp{-gstabs} or @samp{-gstabs+}. See
7089 @ref{Debugging Options,,Options for Debugging Your Program or @sc{gnu}
7090 CC, gcc.info, Using @sc{gnu} CC}, for more information.
7091
7092 @menu
7093 * C Operators:: C and C@t{++} operators
7094 * C Constants:: C and C@t{++} constants
7095 * C plus plus expressions:: C@t{++} expressions
7096 * C Defaults:: Default settings for C and C@t{++}
7097 * C Checks:: C and C@t{++} type and range checks
7098 * Debugging C:: @value{GDBN} and C
7099 * Debugging C plus plus:: @value{GDBN} features for C@t{++}
7100 @end menu
7101
7102 @node C Operators
7103 @subsubsection C and C@t{++} operators
7104
7105 @cindex C and C@t{++} operators
7106
7107 Operators must be defined on values of specific types. For instance,
7108 @code{+} is defined on numbers, but not on structures. Operators are
7109 often defined on groups of types.
7110
7111 For the purposes of C and C@t{++}, the following definitions hold:
7112
7113 @itemize @bullet
7114
7115 @item
7116 @emph{Integral types} include @code{int} with any of its storage-class
7117 specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
7118
7119 @item
7120 @emph{Floating-point types} include @code{float}, @code{double}, and
7121 @code{long double} (if supported by the target platform).
7122
7123 @item
7124 @emph{Pointer types} include all types defined as @code{(@var{type} *)}.
7125
7126 @item
7127 @emph{Scalar types} include all of the above.
7128
7129 @end itemize
7130
7131 @noindent
7132 The following operators are supported. They are listed here
7133 in order of increasing precedence:
7134
7135 @table @code
7136 @item ,
7137 The comma or sequencing operator. Expressions in a comma-separated list
7138 are evaluated from left to right, with the result of the entire
7139 expression being the last expression evaluated.
7140
7141 @item =
7142 Assignment. The value of an assignment expression is the value
7143 assigned. Defined on scalar types.
7144
7145 @item @var{op}=
7146 Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
7147 and translated to @w{@code{@var{a} = @var{a op b}}}.
7148 @w{@code{@var{op}=}} and @code{=} have the same precedence.
7149 @var{op} is any one of the operators @code{|}, @code{^}, @code{&},
7150 @code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
7151
7152 @item ?:
7153 The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
7154 of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
7155 integral type.
7156
7157 @item ||
7158 Logical @sc{or}. Defined on integral types.
7159
7160 @item &&
7161 Logical @sc{and}. Defined on integral types.
7162
7163 @item |
7164 Bitwise @sc{or}. Defined on integral types.
7165
7166 @item ^
7167 Bitwise exclusive-@sc{or}. Defined on integral types.
7168
7169 @item &
7170 Bitwise @sc{and}. Defined on integral types.
7171
7172 @item ==@r{, }!=
7173 Equality and inequality. Defined on scalar types. The value of these
7174 expressions is 0 for false and non-zero for true.
7175
7176 @item <@r{, }>@r{, }<=@r{, }>=
7177 Less than, greater than, less than or equal, greater than or equal.
7178 Defined on scalar types. The value of these expressions is 0 for false
7179 and non-zero for true.
7180
7181 @item <<@r{, }>>
7182 left shift, and right shift. Defined on integral types.
7183
7184 @item @@
7185 The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
7186
7187 @item +@r{, }-
7188 Addition and subtraction. Defined on integral types, floating-point types and
7189 pointer types.
7190
7191 @item *@r{, }/@r{, }%
7192 Multiplication, division, and modulus. Multiplication and division are
7193 defined on integral and floating-point types. Modulus is defined on
7194 integral types.
7195
7196 @item ++@r{, }--
7197 Increment and decrement. When appearing before a variable, the
7198 operation is performed before the variable is used in an expression;
7199 when appearing after it, the variable's value is used before the
7200 operation takes place.
7201
7202 @item *
7203 Pointer dereferencing. Defined on pointer types. Same precedence as
7204 @code{++}.
7205
7206 @item &
7207 Address operator. Defined on variables. Same precedence as @code{++}.
7208
7209 For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
7210 allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
7211 (or, if you prefer, simply @samp{&&@var{ref}}) to examine the address
7212 where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
7213 stored.
7214
7215 @item -
7216 Negative. Defined on integral and floating-point types. Same
7217 precedence as @code{++}.
7218
7219 @item !
7220 Logical negation. Defined on integral types. Same precedence as
7221 @code{++}.
7222
7223 @item ~
7224 Bitwise complement operator. Defined on integral types. Same precedence as
7225 @code{++}.
7226
7227
7228 @item .@r{, }->
7229 Structure member, and pointer-to-structure member. For convenience,
7230 @value{GDBN} regards the two as equivalent, choosing whether to dereference a
7231 pointer based on the stored type information.
7232 Defined on @code{struct} and @code{union} data.
7233
7234 @item .*@r{, }->*
7235 Dereferences of pointers to members.
7236
7237 @item []
7238 Array indexing. @code{@var{a}[@var{i}]} is defined as
7239 @code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
7240
7241 @item ()
7242 Function parameter list. Same precedence as @code{->}.
7243
7244 @item ::
7245 C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7246 and @code{class} types.
7247
7248 @item ::
7249 Doubled colons also represent the @value{GDBN} scope operator
7250 (@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
7251 above.
7252 @end table
7253
7254 If an operator is redefined in the user code, @value{GDBN} usually
7255 attempts to invoke the redefined version instead of using the operator's
7256 predefined meaning.
7257
7258 @menu
7259 * C Constants::
7260 @end menu
7261
7262 @node C Constants
7263 @subsubsection C and C@t{++} constants
7264
7265 @cindex C and C@t{++} constants
7266
7267 @value{GDBN} allows you to express the constants of C and C@t{++} in the
7268 following ways:
7269
7270 @itemize @bullet
7271 @item
7272 Integer constants are a sequence of digits. Octal constants are
7273 specified by a leading @samp{0} (i.e. zero), and hexadecimal constants by
7274 a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
7275 @samp{l}, specifying that the constant should be treated as a
7276 @code{long} value.
7277
7278 @item
7279 Floating point constants are a sequence of digits, followed by a decimal
7280 point, followed by a sequence of digits, and optionally followed by an
7281 exponent. An exponent is of the form:
7282 @samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
7283 sequence of digits. The @samp{+} is optional for positive exponents.
7284 A floating-point constant may also end with a letter @samp{f} or
7285 @samp{F}, specifying that the constant should be treated as being of
7286 the @code{float} (as opposed to the default @code{double}) type; or with
7287 a letter @samp{l} or @samp{L}, which specifies a @code{long double}
7288 constant.
7289
7290 @item
7291 Enumerated constants consist of enumerated identifiers, or their
7292 integral equivalents.
7293
7294 @item
7295 Character constants are a single character surrounded by single quotes
7296 (@code{'}), or a number---the ordinal value of the corresponding character
7297 (usually its @sc{ascii} value). Within quotes, the single character may
7298 be represented by a letter or by @dfn{escape sequences}, which are of
7299 the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
7300 of the character's ordinal value; or of the form @samp{\@var{x}}, where
7301 @samp{@var{x}} is a predefined special character---for example,
7302 @samp{\n} for newline.
7303
7304 @item
7305 String constants are a sequence of character constants surrounded by
7306 double quotes (@code{"}). Any valid character constant (as described
7307 above) may appear. Double quotes within the string must be preceded by
7308 a backslash, so for instance @samp{"a\"b'c"} is a string of five
7309 characters.
7310
7311 @item
7312 Pointer constants are an integral value. You can also write pointers
7313 to constants using the C operator @samp{&}.
7314
7315 @item
7316 Array constants are comma-separated lists surrounded by braces @samp{@{}
7317 and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
7318 integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
7319 and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
7320 @end itemize
7321
7322 @menu
7323 * C plus plus expressions::
7324 * C Defaults::
7325 * C Checks::
7326
7327 * Debugging C::
7328 @end menu
7329
7330 @node C plus plus expressions
7331 @subsubsection C@t{++} expressions
7332
7333 @cindex expressions in C@t{++}
7334 @value{GDBN} expression handling can interpret most C@t{++} expressions.
7335
7336 @cindex C@t{++} support, not in @sc{coff}
7337 @cindex @sc{coff} versus C@t{++}
7338 @cindex C@t{++} and object formats
7339 @cindex object formats and C@t{++}
7340 @cindex a.out and C@t{++}
7341 @cindex @sc{ecoff} and C@t{++}
7342 @cindex @sc{xcoff} and C@t{++}
7343 @cindex @sc{elf}/stabs and C@t{++}
7344 @cindex @sc{elf}/@sc{dwarf} and C@t{++}
7345 @c FIXME!! GDB may eventually be able to debug C++ using DWARF; check
7346 @c periodically whether this has happened...
7347 @quotation
7348 @emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use the
7349 proper compiler. Typically, C@t{++} debugging depends on the use of
7350 additional debugging information in the symbol table, and thus requires
7351 special support. In particular, if your compiler generates a.out, MIPS
7352 @sc{ecoff}, RS/6000 @sc{xcoff}, or @sc{elf} with stabs extensions to the
7353 symbol table, these facilities are all available. (With @sc{gnu} CC,
7354 you can use the @samp{-gstabs} option to request stabs debugging
7355 extensions explicitly.) Where the object code format is standard
7356 @sc{coff} or @sc{dwarf} in @sc{elf}, on the other hand, most of the C@t{++}
7357 support in @value{GDBN} does @emph{not} work.
7358 @end quotation
7359
7360 @enumerate
7361
7362 @cindex member functions
7363 @item
7364 Member function calls are allowed; you can use expressions like
7365
7366 @example
7367 count = aml->GetOriginal(x, y)
7368 @end example
7369
7370 @vindex this@r{, inside C@t{++} member functions}
7371 @cindex namespace in C@t{++}
7372 @item
7373 While a member function is active (in the selected stack frame), your
7374 expressions have the same namespace available as the member function;
7375 that is, @value{GDBN} allows implicit references to the class instance
7376 pointer @code{this} following the same rules as C@t{++}.
7377
7378 @cindex call overloaded functions
7379 @cindex overloaded functions, calling
7380 @cindex type conversions in C@t{++}
7381 @item
7382 You can call overloaded functions; @value{GDBN} resolves the function
7383 call to the right definition, with some restrictions. @value{GDBN} does not
7384 perform overload resolution involving user-defined type conversions,
7385 calls to constructors, or instantiations of templates that do not exist
7386 in the program. It also cannot handle ellipsis argument lists or
7387 default arguments.
7388
7389 It does perform integral conversions and promotions, floating-point
7390 promotions, arithmetic conversions, pointer conversions, conversions of
7391 class objects to base classes, and standard conversions such as those of
7392 functions or arrays to pointers; it requires an exact match on the
7393 number of function arguments.
7394
7395 Overload resolution is always performed, unless you have specified
7396 @code{set overload-resolution off}. @xref{Debugging C plus plus,
7397 ,@value{GDBN} features for C@t{++}}.
7398
7399 You must specify @code{set overload-resolution off} in order to use an
7400 explicit function signature to call an overloaded function, as in
7401 @smallexample
7402 p 'foo(char,int)'('x', 13)
7403 @end smallexample
7404
7405 The @value{GDBN} command-completion facility can simplify this;
7406 see @ref{Completion, ,Command completion}.
7407
7408 @cindex reference declarations
7409 @item
7410 @value{GDBN} understands variables declared as C@t{++} references; you can use
7411 them in expressions just as you do in C@t{++} source---they are automatically
7412 dereferenced.
7413
7414 In the parameter list shown when @value{GDBN} displays a frame, the values of
7415 reference variables are not displayed (unlike other variables); this
7416 avoids clutter, since references are often used for large structures.
7417 The @emph{address} of a reference variable is always shown, unless
7418 you have specified @samp{set print address off}.
7419
7420 @item
7421 @value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
7422 expressions can use it just as expressions in your program do. Since
7423 one scope may be defined in another, you can use @code{::} repeatedly if
7424 necessary, for example in an expression like
7425 @samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
7426 resolving name scope by reference to source files, in both C and C@t{++}
7427 debugging (@pxref{Variables, ,Program variables}).
7428 @end enumerate
7429
7430 In addition, when used with HP's C@t{++} compiler, @value{GDBN} supports
7431 calling virtual functions correctly, printing out virtual bases of
7432 objects, calling functions in a base subobject, casting objects, and
7433 invoking user-defined operators.
7434
7435 @node C Defaults
7436 @subsubsection C and C@t{++} defaults
7437
7438 @cindex C and C@t{++} defaults
7439
7440 If you allow @value{GDBN} to set type and range checking automatically, they
7441 both default to @code{off} whenever the working language changes to
7442 C or C@t{++}. This happens regardless of whether you or @value{GDBN}
7443 selects the working language.
7444
7445 If you allow @value{GDBN} to set the language automatically, it
7446 recognizes source files whose names end with @file{.c}, @file{.C}, or
7447 @file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
7448 these files, it sets the working language to C or C@t{++}.
7449 @xref{Automatically, ,Having @value{GDBN} infer the source language},
7450 for further details.
7451
7452 @c Type checking is (a) primarily motivated by Modula-2, and (b)
7453 @c unimplemented. If (b) changes, it might make sense to let this node
7454 @c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7455
7456 @node C Checks
7457 @subsubsection C and C@t{++} type and range checks
7458
7459 @cindex C and C@t{++} checks
7460
7461 By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
7462 is not used. However, if you turn type checking on, @value{GDBN}
7463 considers two variables type equivalent if:
7464
7465 @itemize @bullet
7466 @item
7467 The two variables are structured and have the same structure, union, or
7468 enumerated tag.
7469
7470 @item
7471 The two variables have the same type name, or types that have been
7472 declared equivalent through @code{typedef}.
7473
7474 @ignore
7475 @c leaving this out because neither J Gilmore nor R Pesch understand it.
7476 @c FIXME--beers?
7477 @item
7478 The two @code{struct}, @code{union}, or @code{enum} variables are
7479 declared in the same declaration. (Note: this may not be true for all C
7480 compilers.)
7481 @end ignore
7482 @end itemize
7483
7484 Range checking, if turned on, is done on mathematical operations. Array
7485 indices are not checked, since they are often used to index a pointer
7486 that is not itself an array.
7487
7488 @node Debugging C
7489 @subsubsection @value{GDBN} and C
7490
7491 The @code{set print union} and @code{show print union} commands apply to
7492 the @code{union} type. When set to @samp{on}, any @code{union} that is
7493 inside a @code{struct} or @code{class} is also printed. Otherwise, it
7494 appears as @samp{@{...@}}.
7495
7496 The @code{@@} operator aids in the debugging of dynamic arrays, formed
7497 with pointers and a memory allocation function. @xref{Expressions,
7498 ,Expressions}.
7499
7500 @menu
7501 * Debugging C plus plus::
7502 @end menu
7503
7504 @node Debugging C plus plus
7505 @subsubsection @value{GDBN} features for C@t{++}
7506
7507 @cindex commands for C@t{++}
7508
7509 Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
7510 designed specifically for use with C@t{++}. Here is a summary:
7511
7512 @table @code
7513 @cindex break in overloaded functions
7514 @item @r{breakpoint menus}
7515 When you want a breakpoint in a function whose name is overloaded,
7516 @value{GDBN} breakpoint menus help you specify which function definition
7517 you want. @xref{Breakpoint Menus,,Breakpoint menus}.
7518
7519 @cindex overloading in C@t{++}
7520 @item rbreak @var{regex}
7521 Setting breakpoints using regular expressions is helpful for setting
7522 breakpoints on overloaded functions that are not members of any special
7523 classes.
7524 @xref{Set Breaks, ,Setting breakpoints}.
7525
7526 @cindex C@t{++} exception handling
7527 @item catch throw
7528 @itemx catch catch
7529 Debug C@t{++} exception handling using these commands. @xref{Set
7530 Catchpoints, , Setting catchpoints}.
7531
7532 @cindex inheritance
7533 @item ptype @var{typename}
7534 Print inheritance relationships as well as other information for type
7535 @var{typename}.
7536 @xref{Symbols, ,Examining the Symbol Table}.
7537
7538 @cindex C@t{++} symbol display
7539 @item set print demangle
7540 @itemx show print demangle
7541 @itemx set print asm-demangle
7542 @itemx show print asm-demangle
7543 Control whether C@t{++} symbols display in their source form, both when
7544 displaying code as C@t{++} source and when displaying disassemblies.
7545 @xref{Print Settings, ,Print settings}.
7546
7547 @item set print object
7548 @itemx show print object
7549 Choose whether to print derived (actual) or declared types of objects.
7550 @xref{Print Settings, ,Print settings}.
7551
7552 @item set print vtbl
7553 @itemx show print vtbl
7554 Control the format for printing virtual function tables.
7555 @xref{Print Settings, ,Print settings}.
7556 (The @code{vtbl} commands do not work on programs compiled with the HP
7557 ANSI C@t{++} compiler (@code{aCC}).)
7558
7559 @kindex set overload-resolution
7560 @cindex overloaded functions, overload resolution
7561 @item set overload-resolution on
7562 Enable overload resolution for C@t{++} expression evaluation. The default
7563 is on. For overloaded functions, @value{GDBN} evaluates the arguments
7564 and searches for a function whose signature matches the argument types,
7565 using the standard C@t{++} conversion rules (see @ref{C plus plus expressions, ,C@t{++}
7566 expressions}, for details). If it cannot find a match, it emits a
7567 message.
7568
7569 @item set overload-resolution off
7570 Disable overload resolution for C@t{++} expression evaluation. For
7571 overloaded functions that are not class member functions, @value{GDBN}
7572 chooses the first function of the specified name that it finds in the
7573 symbol table, whether or not its arguments are of the correct type. For
7574 overloaded functions that are class member functions, @value{GDBN}
7575 searches for a function whose signature @emph{exactly} matches the
7576 argument types.
7577
7578 @item @r{Overloaded symbol names}
7579 You can specify a particular definition of an overloaded symbol, using
7580 the same notation that is used to declare such symbols in C@t{++}: type
7581 @code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
7582 also use the @value{GDBN} command-line word completion facilities to list the
7583 available choices, or to finish the type list for you.
7584 @xref{Completion,, Command completion}, for details on how to do this.
7585 @end table
7586
7587 @node Modula-2
7588 @subsection Modula-2
7589
7590 @cindex Modula-2, @value{GDBN} support
7591
7592 The extensions made to @value{GDBN} to support Modula-2 only support
7593 output from the @sc{gnu} Modula-2 compiler (which is currently being
7594 developed). Other Modula-2 compilers are not currently supported, and
7595 attempting to debug executables produced by them is most likely
7596 to give an error as @value{GDBN} reads in the executable's symbol
7597 table.
7598
7599 @cindex expressions in Modula-2
7600 @menu
7601 * M2 Operators:: Built-in operators
7602 * Built-In Func/Proc:: Built-in functions and procedures
7603 * M2 Constants:: Modula-2 constants
7604 * M2 Defaults:: Default settings for Modula-2
7605 * Deviations:: Deviations from standard Modula-2
7606 * M2 Checks:: Modula-2 type and range checks
7607 * M2 Scope:: The scope operators @code{::} and @code{.}
7608 * GDB/M2:: @value{GDBN} and Modula-2
7609 @end menu
7610
7611 @node M2 Operators
7612 @subsubsection Operators
7613 @cindex Modula-2 operators
7614
7615 Operators must be defined on values of specific types. For instance,
7616 @code{+} is defined on numbers, but not on structures. Operators are
7617 often defined on groups of types. For the purposes of Modula-2, the
7618 following definitions hold:
7619
7620 @itemize @bullet
7621
7622 @item
7623 @emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
7624 their subranges.
7625
7626 @item
7627 @emph{Character types} consist of @code{CHAR} and its subranges.
7628
7629 @item
7630 @emph{Floating-point types} consist of @code{REAL}.
7631
7632 @item
7633 @emph{Pointer types} consist of anything declared as @code{POINTER TO
7634 @var{type}}.
7635
7636 @item
7637 @emph{Scalar types} consist of all of the above.
7638
7639 @item
7640 @emph{Set types} consist of @code{SET} and @code{BITSET} types.
7641
7642 @item
7643 @emph{Boolean types} consist of @code{BOOLEAN}.
7644 @end itemize
7645
7646 @noindent
7647 The following operators are supported, and appear in order of
7648 increasing precedence:
7649
7650 @table @code
7651 @item ,
7652 Function argument or array index separator.
7653
7654 @item :=
7655 Assignment. The value of @var{var} @code{:=} @var{value} is
7656 @var{value}.
7657
7658 @item <@r{, }>
7659 Less than, greater than on integral, floating-point, or enumerated
7660 types.
7661
7662 @item <=@r{, }>=
7663 Less than or equal to, greater than or equal to
7664 on integral, floating-point and enumerated types, or set inclusion on
7665 set types. Same precedence as @code{<}.
7666
7667 @item =@r{, }<>@r{, }#
7668 Equality and two ways of expressing inequality, valid on scalar types.
7669 Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
7670 available for inequality, since @code{#} conflicts with the script
7671 comment character.
7672
7673 @item IN
7674 Set membership. Defined on set types and the types of their members.
7675 Same precedence as @code{<}.
7676
7677 @item OR
7678 Boolean disjunction. Defined on boolean types.
7679
7680 @item AND@r{, }&
7681 Boolean conjunction. Defined on boolean types.
7682
7683 @item @@
7684 The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
7685
7686 @item +@r{, }-
7687 Addition and subtraction on integral and floating-point types, or union
7688 and difference on set types.
7689
7690 @item *
7691 Multiplication on integral and floating-point types, or set intersection
7692 on set types.
7693
7694 @item /
7695 Division on floating-point types, or symmetric set difference on set
7696 types. Same precedence as @code{*}.
7697
7698 @item DIV@r{, }MOD
7699 Integer division and remainder. Defined on integral types. Same
7700 precedence as @code{*}.
7701
7702 @item -
7703 Negative. Defined on @code{INTEGER} and @code{REAL} data.
7704
7705 @item ^
7706 Pointer dereferencing. Defined on pointer types.
7707
7708 @item NOT
7709 Boolean negation. Defined on boolean types. Same precedence as
7710 @code{^}.
7711
7712 @item .
7713 @code{RECORD} field selector. Defined on @code{RECORD} data. Same
7714 precedence as @code{^}.
7715
7716 @item []
7717 Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
7718
7719 @item ()
7720 Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
7721 as @code{^}.
7722
7723 @item ::@r{, }.
7724 @value{GDBN} and Modula-2 scope operators.
7725 @end table
7726
7727 @quotation
7728 @emph{Warning:} Sets and their operations are not yet supported, so @value{GDBN}
7729 treats the use of the operator @code{IN}, or the use of operators
7730 @code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
7731 @code{<=}, and @code{>=} on sets as an error.
7732 @end quotation
7733
7734
7735 @node Built-In Func/Proc
7736 @subsubsection Built-in functions and procedures
7737 @cindex Modula-2 built-ins
7738
7739 Modula-2 also makes available several built-in procedures and functions.
7740 In describing these, the following metavariables are used:
7741
7742 @table @var
7743
7744 @item a
7745 represents an @code{ARRAY} variable.
7746
7747 @item c
7748 represents a @code{CHAR} constant or variable.
7749
7750 @item i
7751 represents a variable or constant of integral type.
7752
7753 @item m
7754 represents an identifier that belongs to a set. Generally used in the
7755 same function with the metavariable @var{s}. The type of @var{s} should
7756 be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
7757
7758 @item n
7759 represents a variable or constant of integral or floating-point type.
7760
7761 @item r
7762 represents a variable or constant of floating-point type.
7763
7764 @item t
7765 represents a type.
7766
7767 @item v
7768 represents a variable.
7769
7770 @item x
7771 represents a variable or constant of one of many types. See the
7772 explanation of the function for details.
7773 @end table
7774
7775 All Modula-2 built-in procedures also return a result, described below.
7776
7777 @table @code
7778 @item ABS(@var{n})
7779 Returns the absolute value of @var{n}.
7780
7781 @item CAP(@var{c})
7782 If @var{c} is a lower case letter, it returns its upper case
7783 equivalent, otherwise it returns its argument.
7784
7785 @item CHR(@var{i})
7786 Returns the character whose ordinal value is @var{i}.
7787
7788 @item DEC(@var{v})
7789 Decrements the value in the variable @var{v} by one. Returns the new value.
7790
7791 @item DEC(@var{v},@var{i})
7792 Decrements the value in the variable @var{v} by @var{i}. Returns the
7793 new value.
7794
7795 @item EXCL(@var{m},@var{s})
7796 Removes the element @var{m} from the set @var{s}. Returns the new
7797 set.
7798
7799 @item FLOAT(@var{i})
7800 Returns the floating point equivalent of the integer @var{i}.
7801
7802 @item HIGH(@var{a})
7803 Returns the index of the last member of @var{a}.
7804
7805 @item INC(@var{v})
7806 Increments the value in the variable @var{v} by one. Returns the new value.
7807
7808 @item INC(@var{v},@var{i})
7809 Increments the value in the variable @var{v} by @var{i}. Returns the
7810 new value.
7811
7812 @item INCL(@var{m},@var{s})
7813 Adds the element @var{m} to the set @var{s} if it is not already
7814 there. Returns the new set.
7815
7816 @item MAX(@var{t})
7817 Returns the maximum value of the type @var{t}.
7818
7819 @item MIN(@var{t})
7820 Returns the minimum value of the type @var{t}.
7821
7822 @item ODD(@var{i})
7823 Returns boolean TRUE if @var{i} is an odd number.
7824
7825 @item ORD(@var{x})
7826 Returns the ordinal value of its argument. For example, the ordinal
7827 value of a character is its @sc{ascii} value (on machines supporting the
7828 @sc{ascii} character set). @var{x} must be of an ordered type, which include
7829 integral, character and enumerated types.
7830
7831 @item SIZE(@var{x})
7832 Returns the size of its argument. @var{x} can be a variable or a type.
7833
7834 @item TRUNC(@var{r})
7835 Returns the integral part of @var{r}.
7836
7837 @item VAL(@var{t},@var{i})
7838 Returns the member of the type @var{t} whose ordinal value is @var{i}.
7839 @end table
7840
7841 @quotation
7842 @emph{Warning:} Sets and their operations are not yet supported, so
7843 @value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
7844 an error.
7845 @end quotation
7846
7847 @cindex Modula-2 constants
7848 @node M2 Constants
7849 @subsubsection Constants
7850
7851 @value{GDBN} allows you to express the constants of Modula-2 in the following
7852 ways:
7853
7854 @itemize @bullet
7855
7856 @item
7857 Integer constants are simply a sequence of digits. When used in an
7858 expression, a constant is interpreted to be type-compatible with the
7859 rest of the expression. Hexadecimal integers are specified by a
7860 trailing @samp{H}, and octal integers by a trailing @samp{B}.
7861
7862 @item
7863 Floating point constants appear as a sequence of digits, followed by a
7864 decimal point and another sequence of digits. An optional exponent can
7865 then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
7866 @samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
7867 digits of the floating point constant must be valid decimal (base 10)
7868 digits.
7869
7870 @item
7871 Character constants consist of a single character enclosed by a pair of
7872 like quotes, either single (@code{'}) or double (@code{"}). They may
7873 also be expressed by their ordinal value (their @sc{ascii} value, usually)
7874 followed by a @samp{C}.
7875
7876 @item
7877 String constants consist of a sequence of characters enclosed by a
7878 pair of like quotes, either single (@code{'}) or double (@code{"}).
7879 Escape sequences in the style of C are also allowed. @xref{C
7880 Constants, ,C and C@t{++} constants}, for a brief explanation of escape
7881 sequences.
7882
7883 @item
7884 Enumerated constants consist of an enumerated identifier.
7885
7886 @item
7887 Boolean constants consist of the identifiers @code{TRUE} and
7888 @code{FALSE}.
7889
7890 @item
7891 Pointer constants consist of integral values only.
7892
7893 @item
7894 Set constants are not yet supported.
7895 @end itemize
7896
7897 @node M2 Defaults
7898 @subsubsection Modula-2 defaults
7899 @cindex Modula-2 defaults
7900
7901 If type and range checking are set automatically by @value{GDBN}, they
7902 both default to @code{on} whenever the working language changes to
7903 Modula-2. This happens regardless of whether you or @value{GDBN}
7904 selected the working language.
7905
7906 If you allow @value{GDBN} to set the language automatically, then entering
7907 code compiled from a file whose name ends with @file{.mod} sets the
7908 working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} set
7909 the language automatically}, for further details.
7910
7911 @node Deviations
7912 @subsubsection Deviations from standard Modula-2
7913 @cindex Modula-2, deviations from
7914
7915 A few changes have been made to make Modula-2 programs easier to debug.
7916 This is done primarily via loosening its type strictness:
7917
7918 @itemize @bullet
7919 @item
7920 Unlike in standard Modula-2, pointer constants can be formed by
7921 integers. This allows you to modify pointer variables during
7922 debugging. (In standard Modula-2, the actual address contained in a
7923 pointer variable is hidden from you; it can only be modified
7924 through direct assignment to another pointer variable or expression that
7925 returned a pointer.)
7926
7927 @item
7928 C escape sequences can be used in strings and characters to represent
7929 non-printable characters. @value{GDBN} prints out strings with these
7930 escape sequences embedded. Single non-printable characters are
7931 printed using the @samp{CHR(@var{nnn})} format.
7932
7933 @item
7934 The assignment operator (@code{:=}) returns the value of its right-hand
7935 argument.
7936
7937 @item
7938 All built-in procedures both modify @emph{and} return their argument.
7939 @end itemize
7940
7941 @node M2 Checks
7942 @subsubsection Modula-2 type and range checks
7943 @cindex Modula-2 checks
7944
7945 @quotation
7946 @emph{Warning:} in this release, @value{GDBN} does not yet perform type or
7947 range checking.
7948 @end quotation
7949 @c FIXME remove warning when type/range checks added
7950
7951 @value{GDBN} considers two Modula-2 variables type equivalent if:
7952
7953 @itemize @bullet
7954 @item
7955 They are of types that have been declared equivalent via a @code{TYPE
7956 @var{t1} = @var{t2}} statement
7957
7958 @item
7959 They have been declared on the same line. (Note: This is true of the
7960 @sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
7961 @end itemize
7962
7963 As long as type checking is enabled, any attempt to combine variables
7964 whose types are not equivalent is an error.
7965
7966 Range checking is done on all mathematical operations, assignment, array
7967 index bounds, and all built-in functions and procedures.
7968
7969 @node M2 Scope
7970 @subsubsection The scope operators @code{::} and @code{.}
7971 @cindex scope
7972 @cindex @code{.}, Modula-2 scope operator
7973 @cindex colon, doubled as scope operator
7974 @ifinfo
7975 @vindex colon-colon@r{, in Modula-2}
7976 @c Info cannot handle :: but TeX can.
7977 @end ifinfo
7978 @iftex
7979 @vindex ::@r{, in Modula-2}
7980 @end iftex
7981
7982 There are a few subtle differences between the Modula-2 scope operator
7983 (@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
7984 similar syntax:
7985
7986 @example
7987
7988 @var{module} . @var{id}
7989 @var{scope} :: @var{id}
7990 @end example
7991
7992 @noindent
7993 where @var{scope} is the name of a module or a procedure,
7994 @var{module} the name of a module, and @var{id} is any declared
7995 identifier within your program, except another module.
7996
7997 Using the @code{::} operator makes @value{GDBN} search the scope
7998 specified by @var{scope} for the identifier @var{id}. If it is not
7999 found in the specified scope, then @value{GDBN} searches all scopes
8000 enclosing the one specified by @var{scope}.
8001
8002 Using the @code{.} operator makes @value{GDBN} search the current scope for
8003 the identifier specified by @var{id} that was imported from the
8004 definition module specified by @var{module}. With this operator, it is
8005 an error if the identifier @var{id} was not imported from definition
8006 module @var{module}, or if @var{id} is not an identifier in
8007 @var{module}.
8008
8009 @node GDB/M2
8010 @subsubsection @value{GDBN} and Modula-2
8011
8012 Some @value{GDBN} commands have little use when debugging Modula-2 programs.
8013 Five subcommands of @code{set print} and @code{show print} apply
8014 specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
8015 @samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
8016 apply to C@t{++}, and the last to the C @code{union} type, which has no direct
8017 analogue in Modula-2.
8018
8019 The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
8020 with any language, is not useful with Modula-2. Its
8021 intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
8022 created in Modula-2 as they can in C or C@t{++}. However, because an
8023 address can be specified by an integral constant, the construct
8024 @samp{@{@var{type}@}@var{adrexp}} is still useful.
8025
8026 @cindex @code{#} in Modula-2
8027 In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
8028 interpreted as the beginning of a comment. Use @code{<>} instead.
8029
8030 @node Chill
8031 @subsection Chill
8032
8033 The extensions made to @value{GDBN} to support Chill only support output
8034 from the @sc{gnu} Chill compiler. Other Chill compilers are not currently
8035 supported, and attempting to debug executables produced by them is most
8036 likely to give an error as @value{GDBN} reads in the executable's symbol
8037 table.
8038
8039 @c This used to say "... following Chill related topics ...", but since
8040 @c menus are not shown in the printed manual, it would look awkward.
8041 This section covers the Chill related topics and the features
8042 of @value{GDBN} which support these topics.
8043
8044 @menu
8045 * How modes are displayed:: How modes are displayed
8046 * Locations:: Locations and their accesses
8047 * Values and their Operations:: Values and their Operations
8048 * Chill type and range checks::
8049 * Chill defaults::
8050 @end menu
8051
8052 @node How modes are displayed
8053 @subsubsection How modes are displayed
8054
8055 The Chill Datatype- (Mode) support of @value{GDBN} is directly related
8056 with the functionality of the @sc{gnu} Chill compiler, and therefore deviates
8057 slightly from the standard specification of the Chill language. The
8058 provided modes are:
8059
8060 @c FIXME: this @table's contents effectively disable @code by using @r
8061 @c on every @item. So why does it need @code?
8062 @table @code
8063 @item @r{@emph{Discrete modes:}}
8064 @itemize @bullet
8065 @item
8066 @emph{Integer Modes} which are predefined by @code{BYTE, UBYTE, INT,
8067 UINT, LONG, ULONG},
8068 @item
8069 @emph{Boolean Mode} which is predefined by @code{BOOL},
8070 @item
8071 @emph{Character Mode} which is predefined by @code{CHAR},
8072 @item
8073 @emph{Set Mode} which is displayed by the keyword @code{SET}.
8074 @smallexample
8075 (@value{GDBP}) ptype x
8076 type = SET (karli = 10, susi = 20, fritzi = 100)
8077 @end smallexample
8078 If the type is an unnumbered set the set element values are omitted.
8079 @item
8080 @emph{Range Mode} which is displayed by
8081 @smallexample
8082 @code{type = <basemode>(<lower bound> : <upper bound>)}
8083 @end smallexample
8084 where @code{<lower bound>, <upper bound>} can be of any discrete literal
8085 expression (e.g. set element names).
8086 @end itemize
8087
8088 @item @r{@emph{Powerset Mode:}}
8089 A Powerset Mode is displayed by the keyword @code{POWERSET} followed by
8090 the member mode of the powerset. The member mode can be any discrete mode.
8091 @smallexample
8092 (@value{GDBP}) ptype x
8093 type = POWERSET SET (egon, hugo, otto)
8094 @end smallexample
8095
8096 @item @r{@emph{Reference Modes:}}
8097 @itemize @bullet
8098 @item
8099 @emph{Bound Reference Mode} which is displayed by the keyword @code{REF}
8100 followed by the mode name to which the reference is bound.
8101 @item
8102 @emph{Free Reference Mode} which is displayed by the keyword @code{PTR}.
8103 @end itemize
8104
8105 @item @r{@emph{Procedure mode}}
8106 The procedure mode is displayed by @code{type = PROC(<parameter list>)
8107 <return mode> EXCEPTIONS (<exception list>)}. The @code{<parameter
8108 list>} is a list of the parameter modes. @code{<return mode>} indicates
8109 the mode of the result of the procedure if any. The exceptionlist lists
8110 all possible exceptions which can be raised by the procedure.
8111
8112 @ignore
8113 @item @r{@emph{Instance mode}}
8114 The instance mode is represented by a structure, which has a static
8115 type, and is therefore not really of interest.
8116 @end ignore
8117
8118 @item @r{@emph{Synchronization Modes:}}
8119 @itemize @bullet
8120 @item
8121 @emph{Event Mode} which is displayed by
8122 @smallexample
8123 @code{EVENT (<event length>)}
8124 @end smallexample
8125 where @code{(<event length>)} is optional.
8126 @item
8127 @emph{Buffer Mode} which is displayed by
8128 @smallexample
8129 @code{BUFFER (<buffer length>)<buffer element mode>}
8130 @end smallexample
8131 where @code{(<buffer length>)} is optional.
8132 @end itemize
8133
8134 @item @r{@emph{Timing Modes:}}
8135 @itemize @bullet
8136 @item
8137 @emph{Duration Mode} which is predefined by @code{DURATION}
8138 @item
8139 @emph{Absolute Time Mode} which is predefined by @code{TIME}
8140 @end itemize
8141
8142 @item @r{@emph{Real Modes:}}
8143 Real Modes are predefined with @code{REAL} and @code{LONG_REAL}.
8144
8145 @item @r{@emph{String Modes:}}
8146 @itemize @bullet
8147 @item
8148 @emph{Character String Mode} which is displayed by
8149 @smallexample
8150 @code{CHARS(<string length>)}
8151 @end smallexample
8152 followed by the keyword @code{VARYING} if the String Mode is a varying
8153 mode
8154 @item
8155 @emph{Bit String Mode} which is displayed by
8156 @smallexample
8157 @code{BOOLS(<string
8158 length>)}
8159 @end smallexample
8160 @end itemize
8161
8162 @item @r{@emph{Array Mode:}}
8163 The Array Mode is displayed by the keyword @code{ARRAY(<range>)}
8164 followed by the element mode (which may in turn be an array mode).
8165 @smallexample
8166 (@value{GDBP}) ptype x
8167 type = ARRAY (1:42)
8168 ARRAY (1:20)
8169 SET (karli = 10, susi = 20, fritzi = 100)
8170 @end smallexample
8171
8172 @item @r{@emph{Structure Mode}}
8173 The Structure mode is displayed by the keyword @code{STRUCT(<field
8174 list>)}. The @code{<field list>} consists of names and modes of fields
8175 of the structure. Variant structures have the keyword @code{CASE <field>
8176 OF <variant fields> ESAC} in their field list. Since the current version
8177 of the GNU Chill compiler doesn't implement tag processing (no runtime
8178 checks of variant fields, and therefore no debugging info), the output
8179 always displays all variant fields.
8180 @smallexample
8181 (@value{GDBP}) ptype str
8182 type = STRUCT (
8183 as x,
8184 bs x,
8185 CASE bs OF
8186 (karli):
8187 cs a
8188 (ott):
8189 ds x
8190 ESAC
8191 )
8192 @end smallexample
8193 @end table
8194
8195 @node Locations
8196 @subsubsection Locations and their accesses
8197
8198 A location in Chill is an object which can contain values.
8199
8200 A value of a location is generally accessed by the (declared) name of
8201 the location. The output conforms to the specification of values in
8202 Chill programs. How values are specified
8203 is the topic of the next section, @ref{Values and their Operations}.
8204
8205 The pseudo-location @code{RESULT} (or @code{result}) can be used to
8206 display or change the result of a currently-active procedure:
8207
8208 @smallexample
8209 set result := EXPR
8210 @end smallexample
8211
8212 @noindent
8213 This does the same as the Chill action @code{RESULT EXPR} (which
8214 is not available in @value{GDBN}).
8215
8216 Values of reference mode locations are printed by @code{PTR(<hex
8217 value>)} in case of a free reference mode, and by @code{(REF <reference
8218 mode>) (<hex-value>)} in case of a bound reference. @code{<hex value>}
8219 represents the address where the reference points to. To access the
8220 value of the location referenced by the pointer, use the dereference
8221 operator @samp{->}.
8222
8223 Values of procedure mode locations are displayed by
8224 @smallexample
8225 @code{@{ PROC
8226 (<argument modes> ) <return mode> @} <address> <name of procedure
8227 location>}
8228 @end smallexample
8229 @code{<argument modes>} is a list of modes according to the parameter
8230 specification of the procedure and @code{<address>} shows the address of
8231 the entry point.
8232
8233 @ignore
8234 Locations of instance modes are displayed just like a structure with two
8235 fields specifying the @emph{process type} and the @emph{copy number} of
8236 the investigated instance location@footnote{This comes from the current
8237 implementation of instances. They are implemented as a structure (no
8238 na). The output should be something like @code{[<name of the process>;
8239 <instance number>]}.}. The field names are @code{__proc_type} and
8240 @code{__proc_copy}.
8241
8242 Locations of synchronization modes are displayed like a structure with
8243 the field name @code{__event_data} in case of a event mode location, and
8244 like a structure with the field @code{__buffer_data} in case of a buffer
8245 mode location (refer to previous paragraph).
8246
8247 Structure Mode locations are printed by @code{[.<field name>: <value>,
8248 ...]}. The @code{<field name>} corresponds to the structure mode
8249 definition and the layout of @code{<value>} varies depending of the mode
8250 of the field. If the investigated structure mode location is of variant
8251 structure mode, the variant parts of the structure are enclosed in curled
8252 braces (@samp{@{@}}). Fields enclosed by @samp{@{,@}} are residing
8253 on the same memory location and represent the current values of the
8254 memory location in their specific modes. Since no tag processing is done
8255 all variants are displayed. A variant field is printed by
8256 @code{(<variant name>) = .<field name>: <value>}. (who implements the
8257 stuff ???)
8258 @smallexample
8259 (@value{GDBP}) print str1 $4 = [.as: 0, .bs: karli, .<TAG>: { (karli) =
8260 [.cs: []], (susi) = [.ds: susi]}]
8261 @end smallexample
8262 @end ignore
8263
8264 Substructures of string mode-, array mode- or structure mode-values
8265 (e.g. array slices, fields of structure locations) are accessed using
8266 certain operations which are described in the next section, @ref{Values
8267 and their Operations}.
8268
8269 A location value may be interpreted as having a different mode using the
8270 location conversion. This mode conversion is written as @code{<mode
8271 name>(<location>)}. The user has to consider that the sizes of the modes
8272 have to be equal otherwise an error occurs. Furthermore, no range
8273 checking of the location against the destination mode is performed, and
8274 therefore the result can be quite confusing.
8275
8276 @smallexample
8277 (@value{GDBP}) print int (s(3 up 4)) XXX TO be filled in !! XXX
8278 @end smallexample
8279
8280 @node Values and their Operations
8281 @subsubsection Values and their Operations
8282
8283 Values are used to alter locations, to investigate complex structures in
8284 more detail or to filter relevant information out of a large amount of
8285 data. There are several (mode dependent) operations defined which enable
8286 such investigations. These operations are not only applicable to
8287 constant values but also to locations, which can become quite useful
8288 when debugging complex structures. During parsing the command line
8289 (e.g. evaluating an expression) @value{GDBN} treats location names as
8290 the values behind these locations.
8291
8292 This section describes how values have to be specified and which
8293 operations are legal to be used with such values.
8294
8295 @table @code
8296 @item Literal Values
8297 Literal values are specified in the same manner as in @sc{gnu} Chill programs.
8298 For detailed specification refer to the @sc{gnu} Chill implementation Manual
8299 chapter 1.5.
8300 @c FIXME: if the Chill Manual is a Texinfo documents, the above should
8301 @c be converted to a @ref.
8302
8303 @ignore
8304 @itemize @bullet
8305 @item
8306 @emph{Integer Literals} are specified in the same manner as in Chill
8307 programs (refer to the Chill Standard z200/88 chpt 5.2.4.2)
8308 @item
8309 @emph{Boolean Literals} are defined by @code{TRUE} and @code{FALSE}.
8310 @item
8311 @emph{Character Literals} are defined by @code{'<character>'}. (e.g.
8312 @code{'M'})
8313 @item
8314 @emph{Set Literals} are defined by a name which was specified in a set
8315 mode. The value delivered by a Set Literal is the set value. This is
8316 comparable to an enumeration in C/C@t{++} language.
8317 @item
8318 @emph{Emptiness Literal} is predefined by @code{NULL}. The value of the
8319 emptiness literal delivers either the empty reference value, the empty
8320 procedure value or the empty instance value.
8321
8322 @item
8323 @emph{Character String Literals} are defined by a sequence of characters
8324 enclosed in single- or double quotes. If a single- or double quote has
8325 to be part of the string literal it has to be stuffed (specified twice).
8326 @item
8327 @emph{Bitstring Literals} are specified in the same manner as in Chill
8328 programs (refer z200/88 chpt 5.2.4.8).
8329 @item
8330 @emph{Floating point literals} are specified in the same manner as in
8331 (gnu-)Chill programs (refer @sc{gnu} Chill implementation Manual chapter 1.5).
8332 @end itemize
8333 @end ignore
8334
8335 @item Tuple Values
8336 A tuple is specified by @code{<mode name>[<tuple>]}, where @code{<mode
8337 name>} can be omitted if the mode of the tuple is unambiguous. This
8338 unambiguity is derived from the context of a evaluated expression.
8339 @code{<tuple>} can be one of the following:
8340
8341 @itemize @bullet
8342 @item @emph{Powerset Tuple}
8343 @item @emph{Array Tuple}
8344 @item @emph{Structure Tuple}
8345 Powerset tuples, array tuples and structure tuples are specified in the
8346 same manner as in Chill programs refer to z200/88 chpt 5.2.5.
8347 @end itemize
8348
8349 @item String Element Value
8350 A string element value is specified by
8351 @smallexample
8352 @code{<string value>(<index>)}
8353 @end smallexample
8354 where @code{<index>} is a integer expression. It delivers a character
8355 value which is equivalent to the character indexed by @code{<index>} in
8356 the string.
8357
8358 @item String Slice Value
8359 A string slice value is specified by @code{<string value>(<slice
8360 spec>)}, where @code{<slice spec>} can be either a range of integer
8361 expressions or specified by @code{<start expr> up <size>}.
8362 @code{<size>} denotes the number of elements which the slice contains.
8363 The delivered value is a string value, which is part of the specified
8364 string.
8365
8366 @item Array Element Values
8367 An array element value is specified by @code{<array value>(<expr>)} and
8368 delivers a array element value of the mode of the specified array.
8369
8370 @item Array Slice Values
8371 An array slice is specified by @code{<array value>(<slice spec>)}, where
8372 @code{<slice spec>} can be either a range specified by expressions or by
8373 @code{<start expr> up <size>}. @code{<size>} denotes the number of
8374 arrayelements the slice contains. The delivered value is an array value
8375 which is part of the specified array.
8376
8377 @item Structure Field Values
8378 A structure field value is derived by @code{<structure value>.<field
8379 name>}, where @code{<field name>} indicates the name of a field specified
8380 in the mode definition of the structure. The mode of the delivered value
8381 corresponds to this mode definition in the structure definition.
8382
8383 @item Procedure Call Value
8384 The procedure call value is derived from the return value of the
8385 procedure@footnote{If a procedure call is used for instance in an
8386 expression, then this procedure is called with all its side
8387 effects. This can lead to confusing results if used carelessly.}.
8388
8389 Values of duration mode locations are represented by @code{ULONG} literals.
8390
8391 Values of time mode locations appear as
8392 @smallexample
8393 @code{TIME(<secs>:<nsecs>)}
8394 @end smallexample
8395
8396
8397 @ignore
8398 This is not implemented yet:
8399 @item Built-in Value
8400 @noindent
8401 The following built in functions are provided:
8402
8403 @table @code
8404 @item @code{ADDR()}
8405 @item @code{NUM()}
8406 @item @code{PRED()}
8407 @item @code{SUCC()}
8408 @item @code{ABS()}
8409 @item @code{CARD()}
8410 @item @code{MAX()}
8411 @item @code{MIN()}
8412 @item @code{SIZE()}
8413 @item @code{UPPER()}
8414 @item @code{LOWER()}
8415 @item @code{LENGTH()}
8416 @item @code{SIN()}
8417 @item @code{COS()}
8418 @item @code{TAN()}
8419 @item @code{ARCSIN()}
8420 @item @code{ARCCOS()}
8421 @item @code{ARCTAN()}
8422 @item @code{EXP()}
8423 @item @code{LN()}
8424 @item @code{LOG()}
8425 @item @code{SQRT()}
8426 @end table
8427
8428 For a detailed description refer to the GNU Chill implementation manual
8429 chapter 1.6.
8430 @end ignore
8431
8432 @item Zero-adic Operator Value
8433 The zero-adic operator value is derived from the instance value for the
8434 current active process.
8435
8436 @item Expression Values
8437 The value delivered by an expression is the result of the evaluation of
8438 the specified expression. If there are error conditions (mode
8439 incompatibility, etc.) the evaluation of expressions is aborted with a
8440 corresponding error message. Expressions may be parenthesised which
8441 causes the evaluation of this expression before any other expression
8442 which uses the result of the parenthesised expression. The following
8443 operators are supported by @value{GDBN}:
8444
8445 @table @code
8446 @item @code{OR, ORIF, XOR}
8447 @itemx @code{AND, ANDIF}
8448 @itemx @code{NOT}
8449 Logical operators defined over operands of boolean mode.
8450
8451 @item @code{=, /=}
8452 Equality and inequality operators defined over all modes.
8453
8454 @item @code{>, >=}
8455 @itemx @code{<, <=}
8456 Relational operators defined over predefined modes.
8457
8458 @item @code{+, -}
8459 @itemx @code{*, /, MOD, REM}
8460 Arithmetic operators defined over predefined modes.
8461
8462 @item @code{-}
8463 Change sign operator.
8464
8465 @item @code{//}
8466 String concatenation operator.
8467
8468 @item @code{()}
8469 String repetition operator.
8470
8471 @item @code{->}
8472 Referenced location operator which can be used either to take the
8473 address of a location (@code{->loc}), or to dereference a reference
8474 location (@code{loc->}).
8475
8476 @item @code{OR, XOR}
8477 @itemx @code{AND}
8478 @itemx @code{NOT}
8479 Powerset and bitstring operators.
8480
8481 @item @code{>, >=}
8482 @itemx @code{<, <=}
8483 Powerset inclusion operators.
8484
8485 @item @code{IN}
8486 Membership operator.
8487 @end table
8488 @end table
8489
8490 @node Chill type and range checks
8491 @subsubsection Chill type and range checks
8492
8493 @value{GDBN} considers two Chill variables mode equivalent if the sizes
8494 of the two modes are equal. This rule applies recursively to more
8495 complex datatypes which means that complex modes are treated
8496 equivalent if all element modes (which also can be complex modes like
8497 structures, arrays, etc.) have the same size.
8498
8499 Range checking is done on all mathematical operations, assignment, array
8500 index bounds and all built in procedures.
8501
8502 Strong type checks are forced using the @value{GDBN} command @code{set
8503 check strong}. This enforces strong type and range checks on all
8504 operations where Chill constructs are used (expressions, built in
8505 functions, etc.) in respect to the semantics as defined in the z.200
8506 language specification.
8507
8508 All checks can be disabled by the @value{GDBN} command @code{set check
8509 off}.
8510
8511 @ignore
8512 @c Deviations from the Chill Standard Z200/88
8513 see last paragraph ?
8514 @end ignore
8515
8516 @node Chill defaults
8517 @subsubsection Chill defaults
8518
8519 If type and range checking are set automatically by @value{GDBN}, they
8520 both default to @code{on} whenever the working language changes to
8521 Chill. This happens regardless of whether you or @value{GDBN}
8522 selected the working language.
8523
8524 If you allow @value{GDBN} to set the language automatically, then entering
8525 code compiled from a file whose name ends with @file{.ch} sets the
8526 working language to Chill. @xref{Automatically, ,Having @value{GDBN} set
8527 the language automatically}, for further details.
8528
8529 @node Symbols
8530 @chapter Examining the Symbol Table
8531
8532 The commands described in this chapter allow you to inquire about the
8533 symbols (names of variables, functions and types) defined in your
8534 program. This information is inherent in the text of your program and
8535 does not change as your program executes. @value{GDBN} finds it in your
8536 program's symbol table, in the file indicated when you started @value{GDBN}
8537 (@pxref{File Options, ,Choosing files}), or by one of the
8538 file-management commands (@pxref{Files, ,Commands to specify files}).
8539
8540 @cindex symbol names
8541 @cindex names of symbols
8542 @cindex quoting names
8543 Occasionally, you may need to refer to symbols that contain unusual
8544 characters, which @value{GDBN} ordinarily treats as word delimiters. The
8545 most frequent case is in referring to static variables in other
8546 source files (@pxref{Variables,,Program variables}). File names
8547 are recorded in object files as debugging symbols, but @value{GDBN} would
8548 ordinarily parse a typical file name, like @file{foo.c}, as the three words
8549 @samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
8550 @samp{foo.c} as a single symbol, enclose it in single quotes; for example,
8551
8552 @example
8553 p 'foo.c'::x
8554 @end example
8555
8556 @noindent
8557 looks up the value of @code{x} in the scope of the file @file{foo.c}.
8558
8559 @table @code
8560 @kindex info address
8561 @cindex address of a symbol
8562 @item info address @var{symbol}
8563 Describe where the data for @var{symbol} is stored. For a register
8564 variable, this says which register it is kept in. For a non-register
8565 local variable, this prints the stack-frame offset at which the variable
8566 is always stored.
8567
8568 Note the contrast with @samp{print &@var{symbol}}, which does not work
8569 at all for a register variable, and for a stack local variable prints
8570 the exact address of the current instantiation of the variable.
8571
8572 @kindex info symbol
8573 @cindex symbol from address
8574 @item info symbol @var{addr}
8575 Print the name of a symbol which is stored at the address @var{addr}.
8576 If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
8577 nearest symbol and an offset from it:
8578
8579 @example
8580 (@value{GDBP}) info symbol 0x54320
8581 _initialize_vx + 396 in section .text
8582 @end example
8583
8584 @noindent
8585 This is the opposite of the @code{info address} command. You can use
8586 it to find out the name of a variable or a function given its address.
8587
8588 @kindex whatis
8589 @item whatis @var{expr}
8590 Print the data type of expression @var{expr}. @var{expr} is not
8591 actually evaluated, and any side-effecting operations (such as
8592 assignments or function calls) inside it do not take place.
8593 @xref{Expressions, ,Expressions}.
8594
8595 @item whatis
8596 Print the data type of @code{$}, the last value in the value history.
8597
8598 @kindex ptype
8599 @item ptype @var{typename}
8600 Print a description of data type @var{typename}. @var{typename} may be
8601 the name of a type, or for C code it may have the form @samp{class
8602 @var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
8603 @var{union-tag}} or @samp{enum @var{enum-tag}}.
8604
8605 @item ptype @var{expr}
8606 @itemx ptype
8607 Print a description of the type of expression @var{expr}. @code{ptype}
8608 differs from @code{whatis} by printing a detailed description, instead
8609 of just the name of the type.
8610
8611 For example, for this variable declaration:
8612
8613 @example
8614 struct complex @{double real; double imag;@} v;
8615 @end example
8616
8617 @noindent
8618 the two commands give this output:
8619
8620 @example
8621 @group
8622 (@value{GDBP}) whatis v
8623 type = struct complex
8624 (@value{GDBP}) ptype v
8625 type = struct complex @{
8626 double real;
8627 double imag;
8628 @}
8629 @end group
8630 @end example
8631
8632 @noindent
8633 As with @code{whatis}, using @code{ptype} without an argument refers to
8634 the type of @code{$}, the last value in the value history.
8635
8636 @kindex info types
8637 @item info types @var{regexp}
8638 @itemx info types
8639 Print a brief description of all types whose names match @var{regexp}
8640 (or all types in your program, if you supply no argument). Each
8641 complete typename is matched as though it were a complete line; thus,
8642 @samp{i type value} gives information on all types in your program whose
8643 names include the string @code{value}, but @samp{i type ^value$} gives
8644 information only on types whose complete name is @code{value}.
8645
8646 This command differs from @code{ptype} in two ways: first, like
8647 @code{whatis}, it does not print a detailed description; second, it
8648 lists all source files where a type is defined.
8649
8650 @kindex info scope
8651 @cindex local variables
8652 @item info scope @var{addr}
8653 List all the variables local to a particular scope. This command
8654 accepts a location---a function name, a source line, or an address
8655 preceded by a @samp{*}, and prints all the variables local to the
8656 scope defined by that location. For example:
8657
8658 @smallexample
8659 (@value{GDBP}) @b{info scope command_line_handler}
8660 Scope for command_line_handler:
8661 Symbol rl is an argument at stack/frame offset 8, length 4.
8662 Symbol linebuffer is in static storage at address 0x150a18, length 4.
8663 Symbol linelength is in static storage at address 0x150a1c, length 4.
8664 Symbol p is a local variable in register $esi, length 4.
8665 Symbol p1 is a local variable in register $ebx, length 4.
8666 Symbol nline is a local variable in register $edx, length 4.
8667 Symbol repeat is a local variable at frame offset -8, length 4.
8668 @end smallexample
8669
8670 @noindent
8671 This command is especially useful for determining what data to collect
8672 during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
8673 collect}.
8674
8675 @kindex info source
8676 @item info source
8677 Show the name of the current source file---that is, the source file for
8678 the function containing the current point of execution---and the language
8679 it was written in.
8680
8681 @kindex info sources
8682 @item info sources
8683 Print the names of all source files in your program for which there is
8684 debugging information, organized into two lists: files whose symbols
8685 have already been read, and files whose symbols will be read when needed.
8686
8687 @kindex info functions
8688 @item info functions
8689 Print the names and data types of all defined functions.
8690
8691 @item info functions @var{regexp}
8692 Print the names and data types of all defined functions
8693 whose names contain a match for regular expression @var{regexp}.
8694 Thus, @samp{info fun step} finds all functions whose names
8695 include @code{step}; @samp{info fun ^step} finds those whose names
8696 start with @code{step}. If a function name contains characters
8697 that conflict with the regular expression language (eg.
8698 @samp{operator*()}), they may be quoted with a backslash.
8699
8700 @kindex info variables
8701 @item info variables
8702 Print the names and data types of all variables that are declared
8703 outside of functions (i.e., excluding local variables).
8704
8705 @item info variables @var{regexp}
8706 Print the names and data types of all variables (except for local
8707 variables) whose names contain a match for regular expression
8708 @var{regexp}.
8709
8710 @ignore
8711 This was never implemented.
8712 @kindex info methods
8713 @item info methods
8714 @itemx info methods @var{regexp}
8715 The @code{info methods} command permits the user to examine all defined
8716 methods within C@t{++} program, or (with the @var{regexp} argument) a
8717 specific set of methods found in the various C@t{++} classes. Many
8718 C@t{++} classes provide a large number of methods. Thus, the output
8719 from the @code{ptype} command can be overwhelming and hard to use. The
8720 @code{info-methods} command filters the methods, printing only those
8721 which match the regular-expression @var{regexp}.
8722 @end ignore
8723
8724 @cindex reloading symbols
8725 Some systems allow individual object files that make up your program to
8726 be replaced without stopping and restarting your program. For example,
8727 in VxWorks you can simply recompile a defective object file and keep on
8728 running. If you are running on one of these systems, you can allow
8729 @value{GDBN} to reload the symbols for automatically relinked modules:
8730
8731 @table @code
8732 @kindex set symbol-reloading
8733 @item set symbol-reloading on
8734 Replace symbol definitions for the corresponding source file when an
8735 object file with a particular name is seen again.
8736
8737 @item set symbol-reloading off
8738 Do not replace symbol definitions when encountering object files of the
8739 same name more than once. This is the default state; if you are not
8740 running on a system that permits automatic relinking of modules, you
8741 should leave @code{symbol-reloading} off, since otherwise @value{GDBN}
8742 may discard symbols when linking large programs, that may contain
8743 several modules (from different directories or libraries) with the same
8744 name.
8745
8746 @kindex show symbol-reloading
8747 @item show symbol-reloading
8748 Show the current @code{on} or @code{off} setting.
8749 @end table
8750
8751 @kindex set opaque-type-resolution
8752 @item set opaque-type-resolution on
8753 Tell @value{GDBN} to resolve opaque types. An opaque type is a type
8754 declared as a pointer to a @code{struct}, @code{class}, or
8755 @code{union}---for example, @code{struct MyType *}---that is used in one
8756 source file although the full declaration of @code{struct MyType} is in
8757 another source file. The default is on.
8758
8759 A change in the setting of this subcommand will not take effect until
8760 the next time symbols for a file are loaded.
8761
8762 @item set opaque-type-resolution off
8763 Tell @value{GDBN} not to resolve opaque types. In this case, the type
8764 is printed as follows:
8765 @smallexample
8766 @{<no data fields>@}
8767 @end smallexample
8768
8769 @kindex show opaque-type-resolution
8770 @item show opaque-type-resolution
8771 Show whether opaque types are resolved or not.
8772
8773 @kindex maint print symbols
8774 @cindex symbol dump
8775 @kindex maint print psymbols
8776 @cindex partial symbol dump
8777 @item maint print symbols @var{filename}
8778 @itemx maint print psymbols @var{filename}
8779 @itemx maint print msymbols @var{filename}
8780 Write a dump of debugging symbol data into the file @var{filename}.
8781 These commands are used to debug the @value{GDBN} symbol-reading code. Only
8782 symbols with debugging data are included. If you use @samp{maint print
8783 symbols}, @value{GDBN} includes all the symbols for which it has already
8784 collected full details: that is, @var{filename} reflects symbols for
8785 only those files whose symbols @value{GDBN} has read. You can use the
8786 command @code{info sources} to find out which files these are. If you
8787 use @samp{maint print psymbols} instead, the dump shows information about
8788 symbols that @value{GDBN} only knows partially---that is, symbols defined in
8789 files that @value{GDBN} has skimmed, but not yet read completely. Finally,
8790 @samp{maint print msymbols} dumps just the minimal symbol information
8791 required for each object file from which @value{GDBN} has read some symbols.
8792 @xref{Files, ,Commands to specify files}, for a discussion of how
8793 @value{GDBN} reads symbols (in the description of @code{symbol-file}).
8794 @end table
8795
8796 @node Altering
8797 @chapter Altering Execution
8798
8799 Once you think you have found an error in your program, you might want to
8800 find out for certain whether correcting the apparent error would lead to
8801 correct results in the rest of the run. You can find the answer by
8802 experiment, using the @value{GDBN} features for altering execution of the
8803 program.
8804
8805 For example, you can store new values into variables or memory
8806 locations, give your program a signal, restart it at a different
8807 address, or even return prematurely from a function.
8808
8809 @menu
8810 * Assignment:: Assignment to variables
8811 * Jumping:: Continuing at a different address
8812 * Signaling:: Giving your program a signal
8813 * Returning:: Returning from a function
8814 * Calling:: Calling your program's functions
8815 * Patching:: Patching your program
8816 @end menu
8817
8818 @node Assignment
8819 @section Assignment to variables
8820
8821 @cindex assignment
8822 @cindex setting variables
8823 To alter the value of a variable, evaluate an assignment expression.
8824 @xref{Expressions, ,Expressions}. For example,
8825
8826 @example
8827 print x=4
8828 @end example
8829
8830 @noindent
8831 stores the value 4 into the variable @code{x}, and then prints the
8832 value of the assignment expression (which is 4).
8833 @xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
8834 information on operators in supported languages.
8835
8836 @kindex set variable
8837 @cindex variables, setting
8838 If you are not interested in seeing the value of the assignment, use the
8839 @code{set} command instead of the @code{print} command. @code{set} is
8840 really the same as @code{print} except that the expression's value is
8841 not printed and is not put in the value history (@pxref{Value History,
8842 ,Value history}). The expression is evaluated only for its effects.
8843
8844 If the beginning of the argument string of the @code{set} command
8845 appears identical to a @code{set} subcommand, use the @code{set
8846 variable} command instead of just @code{set}. This command is identical
8847 to @code{set} except for its lack of subcommands. For example, if your
8848 program has a variable @code{width}, you get an error if you try to set
8849 a new value with just @samp{set width=13}, because @value{GDBN} has the
8850 command @code{set width}:
8851
8852 @example
8853 (@value{GDBP}) whatis width
8854 type = double
8855 (@value{GDBP}) p width
8856 $4 = 13
8857 (@value{GDBP}) set width=47
8858 Invalid syntax in expression.
8859 @end example
8860
8861 @noindent
8862 The invalid expression, of course, is @samp{=47}. In
8863 order to actually set the program's variable @code{width}, use
8864
8865 @example
8866 (@value{GDBP}) set var width=47
8867 @end example
8868
8869 Because the @code{set} command has many subcommands that can conflict
8870 with the names of program variables, it is a good idea to use the
8871 @code{set variable} command instead of just @code{set}. For example, if
8872 your program has a variable @code{g}, you run into problems if you try
8873 to set a new value with just @samp{set g=4}, because @value{GDBN} has
8874 the command @code{set gnutarget}, abbreviated @code{set g}:
8875
8876 @example
8877 @group
8878 (@value{GDBP}) whatis g
8879 type = double
8880 (@value{GDBP}) p g
8881 $1 = 1
8882 (@value{GDBP}) set g=4
8883 (@value{GDBP}) p g
8884 $2 = 1
8885 (@value{GDBP}) r
8886 The program being debugged has been started already.
8887 Start it from the beginning? (y or n) y
8888 Starting program: /home/smith/cc_progs/a.out
8889 "/home/smith/cc_progs/a.out": can't open to read symbols:
8890 Invalid bfd target.
8891 (@value{GDBP}) show g
8892 The current BFD target is "=4".
8893 @end group
8894 @end example
8895
8896 @noindent
8897 The program variable @code{g} did not change, and you silently set the
8898 @code{gnutarget} to an invalid value. In order to set the variable
8899 @code{g}, use
8900
8901 @example
8902 (@value{GDBP}) set var g=4
8903 @end example
8904
8905 @value{GDBN} allows more implicit conversions in assignments than C; you can
8906 freely store an integer value into a pointer variable or vice versa,
8907 and you can convert any structure to any other structure that is the
8908 same length or shorter.
8909 @comment FIXME: how do structs align/pad in these conversions?
8910 @comment /doc@cygnus.com 18dec1990
8911
8912 To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
8913 construct to generate a value of specified type at a specified address
8914 (@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
8915 to memory location @code{0x83040} as an integer (which implies a certain size
8916 and representation in memory), and
8917
8918 @example
8919 set @{int@}0x83040 = 4
8920 @end example
8921
8922 @noindent
8923 stores the value 4 into that memory location.
8924
8925 @node Jumping
8926 @section Continuing at a different address
8927
8928 Ordinarily, when you continue your program, you do so at the place where
8929 it stopped, with the @code{continue} command. You can instead continue at
8930 an address of your own choosing, with the following commands:
8931
8932 @table @code
8933 @kindex jump
8934 @item jump @var{linespec}
8935 Resume execution at line @var{linespec}. Execution stops again
8936 immediately if there is a breakpoint there. @xref{List, ,Printing
8937 source lines}, for a description of the different forms of
8938 @var{linespec}. It is common practice to use the @code{tbreak} command
8939 in conjunction with @code{jump}. @xref{Set Breaks, ,Setting
8940 breakpoints}.
8941
8942 The @code{jump} command does not change the current stack frame, or
8943 the stack pointer, or the contents of any memory location or any
8944 register other than the program counter. If line @var{linespec} is in
8945 a different function from the one currently executing, the results may
8946 be bizarre if the two functions expect different patterns of arguments or
8947 of local variables. For this reason, the @code{jump} command requests
8948 confirmation if the specified line is not in the function currently
8949 executing. However, even bizarre results are predictable if you are
8950 well acquainted with the machine-language code of your program.
8951
8952 @item jump *@var{address}
8953 Resume execution at the instruction at address @var{address}.
8954 @end table
8955
8956 @c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
8957 On many systems, you can get much the same effect as the @code{jump}
8958 command by storing a new value into the register @code{$pc}. The
8959 difference is that this does not start your program running; it only
8960 changes the address of where it @emph{will} run when you continue. For
8961 example,
8962
8963 @example
8964 set $pc = 0x485
8965 @end example
8966
8967 @noindent
8968 makes the next @code{continue} command or stepping command execute at
8969 address @code{0x485}, rather than at the address where your program stopped.
8970 @xref{Continuing and Stepping, ,Continuing and stepping}.
8971
8972 The most common occasion to use the @code{jump} command is to back
8973 up---perhaps with more breakpoints set---over a portion of a program
8974 that has already executed, in order to examine its execution in more
8975 detail.
8976
8977 @c @group
8978 @node Signaling
8979 @section Giving your program a signal
8980
8981 @table @code
8982 @kindex signal
8983 @item signal @var{signal}
8984 Resume execution where your program stopped, but immediately give it the
8985 signal @var{signal}. @var{signal} can be the name or the number of a
8986 signal. For example, on many systems @code{signal 2} and @code{signal
8987 SIGINT} are both ways of sending an interrupt signal.
8988
8989 Alternatively, if @var{signal} is zero, continue execution without
8990 giving a signal. This is useful when your program stopped on account of
8991 a signal and would ordinary see the signal when resumed with the
8992 @code{continue} command; @samp{signal 0} causes it to resume without a
8993 signal.
8994
8995 @code{signal} does not repeat when you press @key{RET} a second time
8996 after executing the command.
8997 @end table
8998 @c @end group
8999
9000 Invoking the @code{signal} command is not the same as invoking the
9001 @code{kill} utility from the shell. Sending a signal with @code{kill}
9002 causes @value{GDBN} to decide what to do with the signal depending on
9003 the signal handling tables (@pxref{Signals}). The @code{signal} command
9004 passes the signal directly to your program.
9005
9006
9007 @node Returning
9008 @section Returning from a function
9009
9010 @table @code
9011 @cindex returning from a function
9012 @kindex return
9013 @item return
9014 @itemx return @var{expression}
9015 You can cancel execution of a function call with the @code{return}
9016 command. If you give an
9017 @var{expression} argument, its value is used as the function's return
9018 value.
9019 @end table
9020
9021 When you use @code{return}, @value{GDBN} discards the selected stack frame
9022 (and all frames within it). You can think of this as making the
9023 discarded frame return prematurely. If you wish to specify a value to
9024 be returned, give that value as the argument to @code{return}.
9025
9026 This pops the selected stack frame (@pxref{Selection, ,Selecting a
9027 frame}), and any other frames inside of it, leaving its caller as the
9028 innermost remaining frame. That frame becomes selected. The
9029 specified value is stored in the registers used for returning values
9030 of functions.
9031
9032 The @code{return} command does not resume execution; it leaves the
9033 program stopped in the state that would exist if the function had just
9034 returned. In contrast, the @code{finish} command (@pxref{Continuing
9035 and Stepping, ,Continuing and stepping}) resumes execution until the
9036 selected stack frame returns naturally.
9037
9038 @node Calling
9039 @section Calling program functions
9040
9041 @cindex calling functions
9042 @kindex call
9043 @table @code
9044 @item call @var{expr}
9045 Evaluate the expression @var{expr} without displaying @code{void}
9046 returned values.
9047 @end table
9048
9049 You can use this variant of the @code{print} command if you want to
9050 execute a function from your program, but without cluttering the output
9051 with @code{void} returned values. If the result is not void, it
9052 is printed and saved in the value history.
9053
9054 For the A29K, a user-controlled variable @code{call_scratch_address},
9055 specifies the location of a scratch area to be used when @value{GDBN}
9056 calls a function in the target. This is necessary because the usual
9057 method of putting the scratch area on the stack does not work in systems
9058 that have separate instruction and data spaces.
9059
9060 @node Patching
9061 @section Patching programs
9062
9063 @cindex patching binaries
9064 @cindex writing into executables
9065 @cindex writing into corefiles
9066
9067 By default, @value{GDBN} opens the file containing your program's
9068 executable code (or the corefile) read-only. This prevents accidental
9069 alterations to machine code; but it also prevents you from intentionally
9070 patching your program's binary.
9071
9072 If you'd like to be able to patch the binary, you can specify that
9073 explicitly with the @code{set write} command. For example, you might
9074 want to turn on internal debugging flags, or even to make emergency
9075 repairs.
9076
9077 @table @code
9078 @kindex set write
9079 @item set write on
9080 @itemx set write off
9081 If you specify @samp{set write on}, @value{GDBN} opens executable and
9082 core files for both reading and writing; if you specify @samp{set write
9083 off} (the default), @value{GDBN} opens them read-only.
9084
9085 If you have already loaded a file, you must load it again (using the
9086 @code{exec-file} or @code{core-file} command) after changing @code{set
9087 write}, for your new setting to take effect.
9088
9089 @item show write
9090 @kindex show write
9091 Display whether executable files and core files are opened for writing
9092 as well as reading.
9093 @end table
9094
9095 @node GDB Files
9096 @chapter @value{GDBN} Files
9097
9098 @value{GDBN} needs to know the file name of the program to be debugged,
9099 both in order to read its symbol table and in order to start your
9100 program. To debug a core dump of a previous run, you must also tell
9101 @value{GDBN} the name of the core dump file.
9102
9103 @menu
9104 * Files:: Commands to specify files
9105 * Symbol Errors:: Errors reading symbol files
9106 @end menu
9107
9108 @node Files
9109 @section Commands to specify files
9110
9111 @cindex symbol table
9112 @cindex core dump file
9113
9114 You may want to specify executable and core dump file names. The usual
9115 way to do this is at start-up time, using the arguments to
9116 @value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
9117 Out of @value{GDBN}}).
9118
9119 Occasionally it is necessary to change to a different file during a
9120 @value{GDBN} session. Or you may run @value{GDBN} and forget to specify
9121 a file you want to use. In these situations the @value{GDBN} commands
9122 to specify new files are useful.
9123
9124 @table @code
9125 @cindex executable file
9126 @kindex file
9127 @item file @var{filename}
9128 Use @var{filename} as the program to be debugged. It is read for its
9129 symbols and for the contents of pure memory. It is also the program
9130 executed when you use the @code{run} command. If you do not specify a
9131 directory and the file is not found in the @value{GDBN} working directory,
9132 @value{GDBN} uses the environment variable @code{PATH} as a list of
9133 directories to search, just as the shell does when looking for a program
9134 to run. You can change the value of this variable, for both @value{GDBN}
9135 and your program, using the @code{path} command.
9136
9137 On systems with memory-mapped files, an auxiliary file named
9138 @file{@var{filename}.syms} may hold symbol table information for
9139 @var{filename}. If so, @value{GDBN} maps in the symbol table from
9140 @file{@var{filename}.syms}, starting up more quickly. See the
9141 descriptions of the file options @samp{-mapped} and @samp{-readnow}
9142 (available on the command line, and with the commands @code{file},
9143 @code{symbol-file}, or @code{add-symbol-file}, described below),
9144 for more information.
9145
9146 @item file
9147 @code{file} with no argument makes @value{GDBN} discard any information it
9148 has on both executable file and the symbol table.
9149
9150 @kindex exec-file
9151 @item exec-file @r{[} @var{filename} @r{]}
9152 Specify that the program to be run (but not the symbol table) is found
9153 in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
9154 if necessary to locate your program. Omitting @var{filename} means to
9155 discard information on the executable file.
9156
9157 @kindex symbol-file
9158 @item symbol-file @r{[} @var{filename} @r{]}
9159 Read symbol table information from file @var{filename}. @code{PATH} is
9160 searched when necessary. Use the @code{file} command to get both symbol
9161 table and program to run from the same file.
9162
9163 @code{symbol-file} with no argument clears out @value{GDBN} information on your
9164 program's symbol table.
9165
9166 The @code{symbol-file} command causes @value{GDBN} to forget the contents
9167 of its convenience variables, the value history, and all breakpoints and
9168 auto-display expressions. This is because they may contain pointers to
9169 the internal data recording symbols and data types, which are part of
9170 the old symbol table data being discarded inside @value{GDBN}.
9171
9172 @code{symbol-file} does not repeat if you press @key{RET} again after
9173 executing it once.
9174
9175 When @value{GDBN} is configured for a particular environment, it
9176 understands debugging information in whatever format is the standard
9177 generated for that environment; you may use either a @sc{gnu} compiler, or
9178 other compilers that adhere to the local conventions.
9179 Best results are usually obtained from @sc{gnu} compilers; for example,
9180 using @code{@value{GCC}} you can generate debugging information for
9181 optimized code.
9182
9183 For most kinds of object files, with the exception of old SVR3 systems
9184 using COFF, the @code{symbol-file} command does not normally read the
9185 symbol table in full right away. Instead, it scans the symbol table
9186 quickly to find which source files and which symbols are present. The
9187 details are read later, one source file at a time, as they are needed.
9188
9189 The purpose of this two-stage reading strategy is to make @value{GDBN}
9190 start up faster. For the most part, it is invisible except for
9191 occasional pauses while the symbol table details for a particular source
9192 file are being read. (The @code{set verbose} command can turn these
9193 pauses into messages if desired. @xref{Messages/Warnings, ,Optional
9194 warnings and messages}.)
9195
9196 We have not implemented the two-stage strategy for COFF yet. When the
9197 symbol table is stored in COFF format, @code{symbol-file} reads the
9198 symbol table data in full right away. Note that ``stabs-in-COFF''
9199 still does the two-stage strategy, since the debug info is actually
9200 in stabs format.
9201
9202 @kindex readnow
9203 @cindex reading symbols immediately
9204 @cindex symbols, reading immediately
9205 @kindex mapped
9206 @cindex memory-mapped symbol file
9207 @cindex saving symbol table
9208 @item symbol-file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9209 @itemx file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9210 You can override the @value{GDBN} two-stage strategy for reading symbol
9211 tables by using the @samp{-readnow} option with any of the commands that
9212 load symbol table information, if you want to be sure @value{GDBN} has the
9213 entire symbol table available.
9214
9215 If memory-mapped files are available on your system through the
9216 @code{mmap} system call, you can use another option, @samp{-mapped}, to
9217 cause @value{GDBN} to write the symbols for your program into a reusable
9218 file. Future @value{GDBN} debugging sessions map in symbol information
9219 from this auxiliary symbol file (if the program has not changed), rather
9220 than spending time reading the symbol table from the executable
9221 program. Using the @samp{-mapped} option has the same effect as
9222 starting @value{GDBN} with the @samp{-mapped} command-line option.
9223
9224 You can use both options together, to make sure the auxiliary symbol
9225 file has all the symbol information for your program.
9226
9227 The auxiliary symbol file for a program called @var{myprog} is called
9228 @samp{@var{myprog}.syms}. Once this file exists (so long as it is newer
9229 than the corresponding executable), @value{GDBN} always attempts to use
9230 it when you debug @var{myprog}; no special options or commands are
9231 needed.
9232
9233 The @file{.syms} file is specific to the host machine where you run
9234 @value{GDBN}. It holds an exact image of the internal @value{GDBN}
9235 symbol table. It cannot be shared across multiple host platforms.
9236
9237 @c FIXME: for now no mention of directories, since this seems to be in
9238 @c flux. 13mar1992 status is that in theory GDB would look either in
9239 @c current dir or in same dir as myprog; but issues like competing
9240 @c GDB's, or clutter in system dirs, mean that in practice right now
9241 @c only current dir is used. FFish says maybe a special GDB hierarchy
9242 @c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
9243 @c files.
9244
9245 @kindex core
9246 @kindex core-file
9247 @item core-file @r{[} @var{filename} @r{]}
9248 Specify the whereabouts of a core dump file to be used as the ``contents
9249 of memory''. Traditionally, core files contain only some parts of the
9250 address space of the process that generated them; @value{GDBN} can access the
9251 executable file itself for other parts.
9252
9253 @code{core-file} with no argument specifies that no core file is
9254 to be used.
9255
9256 Note that the core file is ignored when your program is actually running
9257 under @value{GDBN}. So, if you have been running your program and you
9258 wish to debug a core file instead, you must kill the subprocess in which
9259 the program is running. To do this, use the @code{kill} command
9260 (@pxref{Kill Process, ,Killing the child process}).
9261
9262 @kindex add-symbol-file
9263 @cindex dynamic linking
9264 @item add-symbol-file @var{filename} @var{address}
9265 @itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9266 @itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address} @dots{}
9267 The @code{add-symbol-file} command reads additional symbol table
9268 information from the file @var{filename}. You would use this command
9269 when @var{filename} has been dynamically loaded (by some other means)
9270 into the program that is running. @var{address} should be the memory
9271 address at which the file has been loaded; @value{GDBN} cannot figure
9272 this out for itself. You can additionally specify an arbitrary number
9273 of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
9274 section name and base address for that section. You can specify any
9275 @var{address} as an expression.
9276
9277 The symbol table of the file @var{filename} is added to the symbol table
9278 originally read with the @code{symbol-file} command. You can use the
9279 @code{add-symbol-file} command any number of times; the new symbol data
9280 thus read keeps adding to the old. To discard all old symbol data
9281 instead, use the @code{symbol-file} command without any arguments.
9282
9283 @cindex relocatable object files, reading symbols from
9284 @cindex object files, relocatable, reading symbols from
9285 @cindex reading symbols from relocatable object files
9286 @cindex symbols, reading from relocatable object files
9287 @cindex @file{.o} files, reading symbols from
9288 Although @var{filename} is typically a shared library file, an
9289 executable file, or some other object file which has been fully
9290 relocated for loading into a process, you can also load symbolic
9291 information from relocatable @file{.o} files, as long as:
9292
9293 @itemize @bullet
9294 @item
9295 the file's symbolic information refers only to linker symbols defined in
9296 that file, not to symbols defined by other object files,
9297 @item
9298 every section the file's symbolic information refers to has actually
9299 been loaded into the inferior, as it appears in the file, and
9300 @item
9301 you can determine the address at which every section was loaded, and
9302 provide these to the @code{add-symbol-file} command.
9303 @end itemize
9304
9305 @noindent
9306 Some embedded operating systems, like Sun Chorus and VxWorks, can load
9307 relocatable files into an already running program; such systems
9308 typically make the requirements above easy to meet. However, it's
9309 important to recognize that many native systems use complex link
9310 procedures (@code{.linkonce} section factoring and C++ constructor table
9311 assembly, for example) that make the requirements difficult to meet. In
9312 general, one cannot assume that using @code{add-symbol-file} to read a
9313 relocatable object file's symbolic information will have the same effect
9314 as linking the relocatable object file into the program in the normal
9315 way.
9316
9317 @code{add-symbol-file} does not repeat if you press @key{RET} after using it.
9318
9319 You can use the @samp{-mapped} and @samp{-readnow} options just as with
9320 the @code{symbol-file} command, to change how @value{GDBN} manages the symbol
9321 table information for @var{filename}.
9322
9323 @kindex add-shared-symbol-file
9324 @item add-shared-symbol-file
9325 The @code{add-shared-symbol-file} command can be used only under Harris' CXUX
9326 operating system for the Motorola 88k. @value{GDBN} automatically looks for
9327 shared libraries, however if @value{GDBN} does not find yours, you can run
9328 @code{add-shared-symbol-file}. It takes no arguments.
9329
9330 @kindex section
9331 @item section
9332 The @code{section} command changes the base address of section SECTION of
9333 the exec file to ADDR. This can be used if the exec file does not contain
9334 section addresses, (such as in the a.out format), or when the addresses
9335 specified in the file itself are wrong. Each section must be changed
9336 separately. The @code{info files} command, described below, lists all
9337 the sections and their addresses.
9338
9339 @kindex info files
9340 @kindex info target
9341 @item info files
9342 @itemx info target
9343 @code{info files} and @code{info target} are synonymous; both print the
9344 current target (@pxref{Targets, ,Specifying a Debugging Target}),
9345 including the names of the executable and core dump files currently in
9346 use by @value{GDBN}, and the files from which symbols were loaded. The
9347 command @code{help target} lists all possible targets rather than
9348 current ones.
9349
9350 @end table
9351
9352 All file-specifying commands allow both absolute and relative file names
9353 as arguments. @value{GDBN} always converts the file name to an absolute file
9354 name and remembers it that way.
9355
9356 @cindex shared libraries
9357 @value{GDBN} supports HP-UX, SunOS, SVr4, Irix 5, and IBM RS/6000 shared
9358 libraries.
9359
9360 @value{GDBN} automatically loads symbol definitions from shared libraries
9361 when you use the @code{run} command, or when you examine a core file.
9362 (Before you issue the @code{run} command, @value{GDBN} does not understand
9363 references to a function in a shared library, however---unless you are
9364 debugging a core file).
9365
9366 On HP-UX, if the program loads a library explicitly, @value{GDBN}
9367 automatically loads the symbols at the time of the @code{shl_load} call.
9368
9369 @c FIXME: some @value{GDBN} release may permit some refs to undef
9370 @c FIXME...symbols---eg in a break cmd---assuming they are from a shared
9371 @c FIXME...lib; check this from time to time when updating manual
9372
9373 There are times, however, when you may wish to not automatically load
9374 symbol definitions from shared libraries, such as when they are
9375 particularly large or there are many of them.
9376
9377 To control the automatic loading of shared library symbols, use the
9378 commands:
9379
9380 @table @code
9381 @kindex set auto-solib-add
9382 @item set auto-solib-add @var{mode}
9383 If @var{mode} is @code{on}, symbols from all shared object libraries
9384 will be loaded automatically when the inferior begins execution, you
9385 attach to an independently started inferior, or when the dynamic linker
9386 informs @value{GDBN} that a new library has been loaded. If @var{mode}
9387 is @code{off}, symbols must be loaded manually, using the
9388 @code{sharedlibrary} command. The default value is @code{on}.
9389
9390 @kindex show auto-solib-add
9391 @item show auto-solib-add
9392 Display the current autoloading mode.
9393 @end table
9394
9395 To explicitly load shared library symbols, use the @code{sharedlibrary}
9396 command:
9397
9398 @table @code
9399 @kindex info sharedlibrary
9400 @kindex info share
9401 @item info share
9402 @itemx info sharedlibrary
9403 Print the names of the shared libraries which are currently loaded.
9404
9405 @kindex sharedlibrary
9406 @kindex share
9407 @item sharedlibrary @var{regex}
9408 @itemx share @var{regex}
9409 Load shared object library symbols for files matching a
9410 Unix regular expression.
9411 As with files loaded automatically, it only loads shared libraries
9412 required by your program for a core file or after typing @code{run}. If
9413 @var{regex} is omitted all shared libraries required by your program are
9414 loaded.
9415 @end table
9416
9417 On some systems, such as HP-UX systems, @value{GDBN} supports
9418 autoloading shared library symbols until a limiting threshold size is
9419 reached. This provides the benefit of allowing autoloading to remain on
9420 by default, but avoids autoloading excessively large shared libraries,
9421 up to a threshold that is initially set, but which you can modify if you
9422 wish.
9423
9424 Beyond that threshold, symbols from shared libraries must be explicitly
9425 loaded. To load these symbols, use the command @code{sharedlibrary
9426 @var{filename}}. The base address of the shared library is determined
9427 automatically by @value{GDBN} and need not be specified.
9428
9429 To display or set the threshold, use the commands:
9430
9431 @table @code
9432 @kindex set auto-solib-limit
9433 @item set auto-solib-limit @var{threshold}
9434 Set the autoloading size threshold, in an integral number of megabytes.
9435 If @var{threshold} is nonzero and shared library autoloading is enabled,
9436 symbols from all shared object libraries will be loaded until the total
9437 size of the loaded shared library symbols exceeds this threshold.
9438 Otherwise, symbols must be loaded manually, using the
9439 @code{sharedlibrary} command. The default threshold is 100 (i.e. 100
9440 Mb).
9441
9442 @kindex show auto-solib-limit
9443 @item show auto-solib-limit
9444 Display the current autoloading size threshold, in megabytes.
9445 @end table
9446
9447 @node Symbol Errors
9448 @section Errors reading symbol files
9449
9450 While reading a symbol file, @value{GDBN} occasionally encounters problems,
9451 such as symbol types it does not recognize, or known bugs in compiler
9452 output. By default, @value{GDBN} does not notify you of such problems, since
9453 they are relatively common and primarily of interest to people
9454 debugging compilers. If you are interested in seeing information
9455 about ill-constructed symbol tables, you can either ask @value{GDBN} to print
9456 only one message about each such type of problem, no matter how many
9457 times the problem occurs; or you can ask @value{GDBN} to print more messages,
9458 to see how many times the problems occur, with the @code{set
9459 complaints} command (@pxref{Messages/Warnings, ,Optional warnings and
9460 messages}).
9461
9462 The messages currently printed, and their meanings, include:
9463
9464 @table @code
9465 @item inner block not inside outer block in @var{symbol}
9466
9467 The symbol information shows where symbol scopes begin and end
9468 (such as at the start of a function or a block of statements). This
9469 error indicates that an inner scope block is not fully contained
9470 in its outer scope blocks.
9471
9472 @value{GDBN} circumvents the problem by treating the inner block as if it had
9473 the same scope as the outer block. In the error message, @var{symbol}
9474 may be shown as ``@code{(don't know)}'' if the outer block is not a
9475 function.
9476
9477 @item block at @var{address} out of order
9478
9479 The symbol information for symbol scope blocks should occur in
9480 order of increasing addresses. This error indicates that it does not
9481 do so.
9482
9483 @value{GDBN} does not circumvent this problem, and has trouble
9484 locating symbols in the source file whose symbols it is reading. (You
9485 can often determine what source file is affected by specifying
9486 @code{set verbose on}. @xref{Messages/Warnings, ,Optional warnings and
9487 messages}.)
9488
9489 @item bad block start address patched
9490
9491 The symbol information for a symbol scope block has a start address
9492 smaller than the address of the preceding source line. This is known
9493 to occur in the SunOS 4.1.1 (and earlier) C compiler.
9494
9495 @value{GDBN} circumvents the problem by treating the symbol scope block as
9496 starting on the previous source line.
9497
9498 @item bad string table offset in symbol @var{n}
9499
9500 @cindex foo
9501 Symbol number @var{n} contains a pointer into the string table which is
9502 larger than the size of the string table.
9503
9504 @value{GDBN} circumvents the problem by considering the symbol to have the
9505 name @code{foo}, which may cause other problems if many symbols end up
9506 with this name.
9507
9508 @item unknown symbol type @code{0x@var{nn}}
9509
9510 The symbol information contains new data types that @value{GDBN} does
9511 not yet know how to read. @code{0x@var{nn}} is the symbol type of the
9512 uncomprehended information, in hexadecimal.
9513
9514 @value{GDBN} circumvents the error by ignoring this symbol information.
9515 This usually allows you to debug your program, though certain symbols
9516 are not accessible. If you encounter such a problem and feel like
9517 debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
9518 on @code{complain}, then go up to the function @code{read_dbx_symtab}
9519 and examine @code{*bufp} to see the symbol.
9520
9521 @item stub type has NULL name
9522
9523 @value{GDBN} could not find the full definition for a struct or class.
9524
9525 @item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
9526 The symbol information for a C@t{++} member function is missing some
9527 information that recent versions of the compiler should have output for
9528 it.
9529
9530 @item info mismatch between compiler and debugger
9531
9532 @value{GDBN} could not parse a type specification output by the compiler.
9533
9534 @end table
9535
9536 @node Targets
9537 @chapter Specifying a Debugging Target
9538
9539 @cindex debugging target
9540 @kindex target
9541
9542 A @dfn{target} is the execution environment occupied by your program.
9543
9544 Often, @value{GDBN} runs in the same host environment as your program;
9545 in that case, the debugging target is specified as a side effect when
9546 you use the @code{file} or @code{core} commands. When you need more
9547 flexibility---for example, running @value{GDBN} on a physically separate
9548 host, or controlling a standalone system over a serial port or a
9549 realtime system over a TCP/IP connection---you can use the @code{target}
9550 command to specify one of the target types configured for @value{GDBN}
9551 (@pxref{Target Commands, ,Commands for managing targets}).
9552
9553 @menu
9554 * Active Targets:: Active targets
9555 * Target Commands:: Commands for managing targets
9556 * Byte Order:: Choosing target byte order
9557 * Remote:: Remote debugging
9558 * KOD:: Kernel Object Display
9559
9560 @end menu
9561
9562 @node Active Targets
9563 @section Active targets
9564
9565 @cindex stacking targets
9566 @cindex active targets
9567 @cindex multiple targets
9568
9569 There are three classes of targets: processes, core files, and
9570 executable files. @value{GDBN} can work concurrently on up to three
9571 active targets, one in each class. This allows you to (for example)
9572 start a process and inspect its activity without abandoning your work on
9573 a core file.
9574
9575 For example, if you execute @samp{gdb a.out}, then the executable file
9576 @code{a.out} is the only active target. If you designate a core file as
9577 well---presumably from a prior run that crashed and coredumped---then
9578 @value{GDBN} has two active targets and uses them in tandem, looking
9579 first in the corefile target, then in the executable file, to satisfy
9580 requests for memory addresses. (Typically, these two classes of target
9581 are complementary, since core files contain only a program's
9582 read-write memory---variables and so on---plus machine status, while
9583 executable files contain only the program text and initialized data.)
9584
9585 When you type @code{run}, your executable file becomes an active process
9586 target as well. When a process target is active, all @value{GDBN}
9587 commands requesting memory addresses refer to that target; addresses in
9588 an active core file or executable file target are obscured while the
9589 process target is active.
9590
9591 Use the @code{core-file} and @code{exec-file} commands to select a new
9592 core file or executable target (@pxref{Files, ,Commands to specify
9593 files}). To specify as a target a process that is already running, use
9594 the @code{attach} command (@pxref{Attach, ,Debugging an already-running
9595 process}).
9596
9597 @node Target Commands
9598 @section Commands for managing targets
9599
9600 @table @code
9601 @item target @var{type} @var{parameters}
9602 Connects the @value{GDBN} host environment to a target machine or
9603 process. A target is typically a protocol for talking to debugging
9604 facilities. You use the argument @var{type} to specify the type or
9605 protocol of the target machine.
9606
9607 Further @var{parameters} are interpreted by the target protocol, but
9608 typically include things like device names or host names to connect
9609 with, process numbers, and baud rates.
9610
9611 The @code{target} command does not repeat if you press @key{RET} again
9612 after executing the command.
9613
9614 @kindex help target
9615 @item help target
9616 Displays the names of all targets available. To display targets
9617 currently selected, use either @code{info target} or @code{info files}
9618 (@pxref{Files, ,Commands to specify files}).
9619
9620 @item help target @var{name}
9621 Describe a particular target, including any parameters necessary to
9622 select it.
9623
9624 @kindex set gnutarget
9625 @item set gnutarget @var{args}
9626 @value{GDBN} uses its own library BFD to read your files. @value{GDBN}
9627 knows whether it is reading an @dfn{executable},
9628 a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
9629 with the @code{set gnutarget} command. Unlike most @code{target} commands,
9630 with @code{gnutarget} the @code{target} refers to a program, not a machine.
9631
9632 @quotation
9633 @emph{Warning:} To specify a file format with @code{set gnutarget},
9634 you must know the actual BFD name.
9635 @end quotation
9636
9637 @noindent
9638 @xref{Files, , Commands to specify files}.
9639
9640 @kindex show gnutarget
9641 @item show gnutarget
9642 Use the @code{show gnutarget} command to display what file format
9643 @code{gnutarget} is set to read. If you have not set @code{gnutarget},
9644 @value{GDBN} will determine the file format for each file automatically,
9645 and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
9646 @end table
9647
9648 Here are some common targets (available, or not, depending on the GDB
9649 configuration):
9650
9651 @table @code
9652 @kindex target exec
9653 @item target exec @var{program}
9654 An executable file. @samp{target exec @var{program}} is the same as
9655 @samp{exec-file @var{program}}.
9656
9657 @kindex target core
9658 @item target core @var{filename}
9659 A core dump file. @samp{target core @var{filename}} is the same as
9660 @samp{core-file @var{filename}}.
9661
9662 @kindex target remote
9663 @item target remote @var{dev}
9664 Remote serial target in GDB-specific protocol. The argument @var{dev}
9665 specifies what serial device to use for the connection (e.g.
9666 @file{/dev/ttya}). @xref{Remote, ,Remote debugging}. @code{target remote}
9667 supports the @code{load} command. This is only useful if you have
9668 some other way of getting the stub to the target system, and you can put
9669 it somewhere in memory where it won't get clobbered by the download.
9670
9671 @kindex target sim
9672 @item target sim
9673 Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
9674 In general,
9675 @example
9676 target sim
9677 load
9678 run
9679 @end example
9680 @noindent
9681 works; however, you cannot assume that a specific memory map, device
9682 drivers, or even basic I/O is available, although some simulators do
9683 provide these. For info about any processor-specific simulator details,
9684 see the appropriate section in @ref{Embedded Processors, ,Embedded
9685 Processors}.
9686
9687 @end table
9688
9689 Some configurations may include these targets as well:
9690
9691 @table @code
9692
9693 @kindex target nrom
9694 @item target nrom @var{dev}
9695 NetROM ROM emulator. This target only supports downloading.
9696
9697 @end table
9698
9699 Different targets are available on different configurations of @value{GDBN};
9700 your configuration may have more or fewer targets.
9701
9702 Many remote targets require you to download the executable's code
9703 once you've successfully established a connection.
9704
9705 @table @code
9706
9707 @kindex load @var{filename}
9708 @item load @var{filename}
9709 Depending on what remote debugging facilities are configured into
9710 @value{GDBN}, the @code{load} command may be available. Where it exists, it
9711 is meant to make @var{filename} (an executable) available for debugging
9712 on the remote system---by downloading, or dynamic linking, for example.
9713 @code{load} also records the @var{filename} symbol table in @value{GDBN}, like
9714 the @code{add-symbol-file} command.
9715
9716 If your @value{GDBN} does not have a @code{load} command, attempting to
9717 execute it gets the error message ``@code{You can't do that when your
9718 target is @dots{}}''
9719
9720 The file is loaded at whatever address is specified in the executable.
9721 For some object file formats, you can specify the load address when you
9722 link the program; for other formats, like a.out, the object file format
9723 specifies a fixed address.
9724 @c FIXME! This would be a good place for an xref to the GNU linker doc.
9725
9726 @code{load} does not repeat if you press @key{RET} again after using it.
9727 @end table
9728
9729 @node Byte Order
9730 @section Choosing target byte order
9731
9732 @cindex choosing target byte order
9733 @cindex target byte order
9734
9735 Some types of processors, such as the MIPS, PowerPC, and Hitachi SH,
9736 offer the ability to run either big-endian or little-endian byte
9737 orders. Usually the executable or symbol will include a bit to
9738 designate the endian-ness, and you will not need to worry about
9739 which to use. However, you may still find it useful to adjust
9740 @value{GDBN}'s idea of processor endian-ness manually.
9741
9742 @table @code
9743 @kindex set endian big
9744 @item set endian big
9745 Instruct @value{GDBN} to assume the target is big-endian.
9746
9747 @kindex set endian little
9748 @item set endian little
9749 Instruct @value{GDBN} to assume the target is little-endian.
9750
9751 @kindex set endian auto
9752 @item set endian auto
9753 Instruct @value{GDBN} to use the byte order associated with the
9754 executable.
9755
9756 @item show endian
9757 Display @value{GDBN}'s current idea of the target byte order.
9758
9759 @end table
9760
9761 Note that these commands merely adjust interpretation of symbolic
9762 data on the host, and that they have absolutely no effect on the
9763 target system.
9764
9765 @node Remote
9766 @section Remote debugging
9767 @cindex remote debugging
9768
9769 If you are trying to debug a program running on a machine that cannot run
9770 @value{GDBN} in the usual way, it is often useful to use remote debugging.
9771 For example, you might use remote debugging on an operating system kernel,
9772 or on a small system which does not have a general purpose operating system
9773 powerful enough to run a full-featured debugger.
9774
9775 Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
9776 to make this work with particular debugging targets. In addition,
9777 @value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
9778 but not specific to any particular target system) which you can use if you
9779 write the remote stubs---the code that runs on the remote system to
9780 communicate with @value{GDBN}.
9781
9782 Other remote targets may be available in your
9783 configuration of @value{GDBN}; use @code{help target} to list them.
9784
9785 @menu
9786 * Remote Serial:: @value{GDBN} remote serial protocol
9787 @end menu
9788
9789 @node Remote Serial
9790 @subsection The @value{GDBN} remote serial protocol
9791
9792 @cindex remote serial debugging, overview
9793 To debug a program running on another machine (the debugging
9794 @dfn{target} machine), you must first arrange for all the usual
9795 prerequisites for the program to run by itself. For example, for a C
9796 program, you need:
9797
9798 @enumerate
9799 @item
9800 A startup routine to set up the C runtime environment; these usually
9801 have a name like @file{crt0}. The startup routine may be supplied by
9802 your hardware supplier, or you may have to write your own.
9803
9804 @item
9805 A C subroutine library to support your program's
9806 subroutine calls, notably managing input and output.
9807
9808 @item
9809 A way of getting your program to the other machine---for example, a
9810 download program. These are often supplied by the hardware
9811 manufacturer, but you may have to write your own from hardware
9812 documentation.
9813 @end enumerate
9814
9815 The next step is to arrange for your program to use a serial port to
9816 communicate with the machine where @value{GDBN} is running (the @dfn{host}
9817 machine). In general terms, the scheme looks like this:
9818
9819 @table @emph
9820 @item On the host,
9821 @value{GDBN} already understands how to use this protocol; when everything
9822 else is set up, you can simply use the @samp{target remote} command
9823 (@pxref{Targets,,Specifying a Debugging Target}).
9824
9825 @item On the target,
9826 you must link with your program a few special-purpose subroutines that
9827 implement the @value{GDBN} remote serial protocol. The file containing these
9828 subroutines is called a @dfn{debugging stub}.
9829
9830 On certain remote targets, you can use an auxiliary program
9831 @code{gdbserver} instead of linking a stub into your program.
9832 @xref{Server,,Using the @code{gdbserver} program}, for details.
9833 @end table
9834
9835 The debugging stub is specific to the architecture of the remote
9836 machine; for example, use @file{sparc-stub.c} to debug programs on
9837 @sc{sparc} boards.
9838
9839 @cindex remote serial stub list
9840 These working remote stubs are distributed with @value{GDBN}:
9841
9842 @table @code
9843
9844 @item i386-stub.c
9845 @cindex @file{i386-stub.c}
9846 @cindex Intel
9847 @cindex i386
9848 For Intel 386 and compatible architectures.
9849
9850 @item m68k-stub.c
9851 @cindex @file{m68k-stub.c}
9852 @cindex Motorola 680x0
9853 @cindex m680x0
9854 For Motorola 680x0 architectures.
9855
9856 @item sh-stub.c
9857 @cindex @file{sh-stub.c}
9858 @cindex Hitachi
9859 @cindex SH
9860 For Hitachi SH architectures.
9861
9862 @item sparc-stub.c
9863 @cindex @file{sparc-stub.c}
9864 @cindex Sparc
9865 For @sc{sparc} architectures.
9866
9867 @item sparcl-stub.c
9868 @cindex @file{sparcl-stub.c}
9869 @cindex Fujitsu
9870 @cindex SparcLite
9871 For Fujitsu @sc{sparclite} architectures.
9872
9873 @end table
9874
9875 The @file{README} file in the @value{GDBN} distribution may list other
9876 recently added stubs.
9877
9878 @menu
9879 * Stub Contents:: What the stub can do for you
9880 * Bootstrapping:: What you must do for the stub
9881 * Debug Session:: Putting it all together
9882 * Protocol:: Definition of the communication protocol
9883 * Server:: Using the `gdbserver' program
9884 * NetWare:: Using the `gdbserve.nlm' program
9885 @end menu
9886
9887 @node Stub Contents
9888 @subsubsection What the stub can do for you
9889
9890 @cindex remote serial stub
9891 The debugging stub for your architecture supplies these three
9892 subroutines:
9893
9894 @table @code
9895 @item set_debug_traps
9896 @kindex set_debug_traps
9897 @cindex remote serial stub, initialization
9898 This routine arranges for @code{handle_exception} to run when your
9899 program stops. You must call this subroutine explicitly near the
9900 beginning of your program.
9901
9902 @item handle_exception
9903 @kindex handle_exception
9904 @cindex remote serial stub, main routine
9905 This is the central workhorse, but your program never calls it
9906 explicitly---the setup code arranges for @code{handle_exception} to
9907 run when a trap is triggered.
9908
9909 @code{handle_exception} takes control when your program stops during
9910 execution (for example, on a breakpoint), and mediates communications
9911 with @value{GDBN} on the host machine. This is where the communications
9912 protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
9913 representative on the target machine. It begins by sending summary
9914 information on the state of your program, then continues to execute,
9915 retrieving and transmitting any information @value{GDBN} needs, until you
9916 execute a @value{GDBN} command that makes your program resume; at that point,
9917 @code{handle_exception} returns control to your own code on the target
9918 machine.
9919
9920 @item breakpoint
9921 @cindex @code{breakpoint} subroutine, remote
9922 Use this auxiliary subroutine to make your program contain a
9923 breakpoint. Depending on the particular situation, this may be the only
9924 way for @value{GDBN} to get control. For instance, if your target
9925 machine has some sort of interrupt button, you won't need to call this;
9926 pressing the interrupt button transfers control to
9927 @code{handle_exception}---in effect, to @value{GDBN}. On some machines,
9928 simply receiving characters on the serial port may also trigger a trap;
9929 again, in that situation, you don't need to call @code{breakpoint} from
9930 your own program---simply running @samp{target remote} from the host
9931 @value{GDBN} session gets control.
9932
9933 Call @code{breakpoint} if none of these is true, or if you simply want
9934 to make certain your program stops at a predetermined point for the
9935 start of your debugging session.
9936 @end table
9937
9938 @node Bootstrapping
9939 @subsubsection What you must do for the stub
9940
9941 @cindex remote stub, support routines
9942 The debugging stubs that come with @value{GDBN} are set up for a particular
9943 chip architecture, but they have no information about the rest of your
9944 debugging target machine.
9945
9946 First of all you need to tell the stub how to communicate with the
9947 serial port.
9948
9949 @table @code
9950 @item int getDebugChar()
9951 @kindex getDebugChar
9952 Write this subroutine to read a single character from the serial port.
9953 It may be identical to @code{getchar} for your target system; a
9954 different name is used to allow you to distinguish the two if you wish.
9955
9956 @item void putDebugChar(int)
9957 @kindex putDebugChar
9958 Write this subroutine to write a single character to the serial port.
9959 It may be identical to @code{putchar} for your target system; a
9960 different name is used to allow you to distinguish the two if you wish.
9961 @end table
9962
9963 @cindex control C, and remote debugging
9964 @cindex interrupting remote targets
9965 If you want @value{GDBN} to be able to stop your program while it is
9966 running, you need to use an interrupt-driven serial driver, and arrange
9967 for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
9968 character). That is the character which @value{GDBN} uses to tell the
9969 remote system to stop.
9970
9971 Getting the debugging target to return the proper status to @value{GDBN}
9972 probably requires changes to the standard stub; one quick and dirty way
9973 is to just execute a breakpoint instruction (the ``dirty'' part is that
9974 @value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
9975
9976 Other routines you need to supply are:
9977
9978 @table @code
9979 @item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
9980 @kindex exceptionHandler
9981 Write this function to install @var{exception_address} in the exception
9982 handling tables. You need to do this because the stub does not have any
9983 way of knowing what the exception handling tables on your target system
9984 are like (for example, the processor's table might be in @sc{rom},
9985 containing entries which point to a table in @sc{ram}).
9986 @var{exception_number} is the exception number which should be changed;
9987 its meaning is architecture-dependent (for example, different numbers
9988 might represent divide by zero, misaligned access, etc). When this
9989 exception occurs, control should be transferred directly to
9990 @var{exception_address}, and the processor state (stack, registers,
9991 and so on) should be just as it is when a processor exception occurs. So if
9992 you want to use a jump instruction to reach @var{exception_address}, it
9993 should be a simple jump, not a jump to subroutine.
9994
9995 For the 386, @var{exception_address} should be installed as an interrupt
9996 gate so that interrupts are masked while the handler runs. The gate
9997 should be at privilege level 0 (the most privileged level). The
9998 @sc{sparc} and 68k stubs are able to mask interrupts themselves without
9999 help from @code{exceptionHandler}.
10000
10001 @item void flush_i_cache()
10002 @kindex flush_i_cache
10003 On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
10004 instruction cache, if any, on your target machine. If there is no
10005 instruction cache, this subroutine may be a no-op.
10006
10007 On target machines that have instruction caches, @value{GDBN} requires this
10008 function to make certain that the state of your program is stable.
10009 @end table
10010
10011 @noindent
10012 You must also make sure this library routine is available:
10013
10014 @table @code
10015 @item void *memset(void *, int, int)
10016 @kindex memset
10017 This is the standard library function @code{memset} that sets an area of
10018 memory to a known value. If you have one of the free versions of
10019 @code{libc.a}, @code{memset} can be found there; otherwise, you must
10020 either obtain it from your hardware manufacturer, or write your own.
10021 @end table
10022
10023 If you do not use the GNU C compiler, you may need other standard
10024 library subroutines as well; this varies from one stub to another,
10025 but in general the stubs are likely to use any of the common library
10026 subroutines which @code{@value{GCC}} generates as inline code.
10027
10028
10029 @node Debug Session
10030 @subsubsection Putting it all together
10031
10032 @cindex remote serial debugging summary
10033 In summary, when your program is ready to debug, you must follow these
10034 steps.
10035
10036 @enumerate
10037 @item
10038 Make sure you have defined the supporting low-level routines
10039 (@pxref{Bootstrapping,,What you must do for the stub}):
10040 @display
10041 @code{getDebugChar}, @code{putDebugChar},
10042 @code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
10043 @end display
10044
10045 @item
10046 Insert these lines near the top of your program:
10047
10048 @example
10049 set_debug_traps();
10050 breakpoint();
10051 @end example
10052
10053 @item
10054 For the 680x0 stub only, you need to provide a variable called
10055 @code{exceptionHook}. Normally you just use:
10056
10057 @example
10058 void (*exceptionHook)() = 0;
10059 @end example
10060
10061 @noindent
10062 but if before calling @code{set_debug_traps}, you set it to point to a
10063 function in your program, that function is called when
10064 @code{@value{GDBN}} continues after stopping on a trap (for example, bus
10065 error). The function indicated by @code{exceptionHook} is called with
10066 one parameter: an @code{int} which is the exception number.
10067
10068 @item
10069 Compile and link together: your program, the @value{GDBN} debugging stub for
10070 your target architecture, and the supporting subroutines.
10071
10072 @item
10073 Make sure you have a serial connection between your target machine and
10074 the @value{GDBN} host, and identify the serial port on the host.
10075
10076 @item
10077 @c The "remote" target now provides a `load' command, so we should
10078 @c document that. FIXME.
10079 Download your program to your target machine (or get it there by
10080 whatever means the manufacturer provides), and start it.
10081
10082 @item
10083 To start remote debugging, run @value{GDBN} on the host machine, and specify
10084 as an executable file the program that is running in the remote machine.
10085 This tells @value{GDBN} how to find your program's symbols and the contents
10086 of its pure text.
10087
10088 @item
10089 @cindex serial line, @code{target remote}
10090 Establish communication using the @code{target remote} command.
10091 Its argument specifies how to communicate with the target
10092 machine---either via a devicename attached to a direct serial line, or a
10093 TCP port (usually to a terminal server which in turn has a serial line
10094 to the target). For example, to use a serial line connected to the
10095 device named @file{/dev/ttyb}:
10096
10097 @example
10098 target remote /dev/ttyb
10099 @end example
10100
10101 @cindex TCP port, @code{target remote}
10102 To use a TCP connection, use an argument of the form
10103 @code{@var{host}:port}. For example, to connect to port 2828 on a
10104 terminal server named @code{manyfarms}:
10105
10106 @example
10107 target remote manyfarms:2828
10108 @end example
10109
10110 If your remote target is actually running on the same machine as
10111 your debugger session (e.g.@: a simulator of your target running on
10112 the same host), you can omit the hostname. For example, to connect
10113 to port 1234 on your local machine:
10114
10115 @example
10116 target remote :1234
10117 @end example
10118 @noindent
10119
10120 Note that the colon is still required here.
10121 @end enumerate
10122
10123 Now you can use all the usual commands to examine and change data and to
10124 step and continue the remote program.
10125
10126 To resume the remote program and stop debugging it, use the @code{detach}
10127 command.
10128
10129 @cindex interrupting remote programs
10130 @cindex remote programs, interrupting
10131 Whenever @value{GDBN} is waiting for the remote program, if you type the
10132 interrupt character (often @key{C-C}), @value{GDBN} attempts to stop the
10133 program. This may or may not succeed, depending in part on the hardware
10134 and the serial drivers the remote system uses. If you type the
10135 interrupt character once again, @value{GDBN} displays this prompt:
10136
10137 @example
10138 Interrupted while waiting for the program.
10139 Give up (and stop debugging it)? (y or n)
10140 @end example
10141
10142 If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
10143 (If you decide you want to try again later, you can use @samp{target
10144 remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
10145 goes back to waiting.
10146
10147 @node Protocol
10148 @subsubsection Communication protocol
10149
10150 @cindex debugging stub, example
10151 @cindex remote stub, example
10152 @cindex stub example, remote debugging
10153 The stub files provided with @value{GDBN} implement the target side of the
10154 communication protocol, and the @value{GDBN} side is implemented in the
10155 @value{GDBN} source file @file{remote.c}. Normally, you can simply allow
10156 these subroutines to communicate, and ignore the details. (If you're
10157 implementing your own stub file, you can still ignore the details: start
10158 with one of the existing stub files. @file{sparc-stub.c} is the best
10159 organized, and therefore the easiest to read.)
10160
10161 However, there may be occasions when you need to know something about
10162 the protocol---for example, if there is only one serial port to your
10163 target machine, you might want your program to do something special if
10164 it recognizes a packet meant for @value{GDBN}.
10165
10166 In the examples below, @samp{<-} and @samp{->} are used to indicate
10167 transmitted and received data respectfully.
10168
10169 @cindex protocol, @value{GDBN} remote serial
10170 @cindex serial protocol, @value{GDBN} remote
10171 @cindex remote serial protocol
10172 All @value{GDBN} commands and responses (other than acknowledgments) are
10173 sent as a @var{packet}. A @var{packet} is introduced with the character
10174 @samp{$}, the actual @var{packet-data}, and the terminating character
10175 @samp{#} followed by a two-digit @var{checksum}:
10176
10177 @example
10178 @code{$}@var{packet-data}@code{#}@var{checksum}
10179 @end example
10180 @noindent
10181
10182 @cindex checksum, for @value{GDBN} remote
10183 @noindent
10184 The two-digit @var{checksum} is computed as the modulo 256 sum of all
10185 characters between the leading @samp{$} and the trailing @samp{#} (an
10186 eight bit unsigned checksum).
10187
10188 Implementors should note that prior to @value{GDBN} 5.0 the protocol
10189 specification also included an optional two-digit @var{sequence-id}:
10190
10191 @example
10192 @code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
10193 @end example
10194
10195 @cindex sequence-id, for @value{GDBN} remote
10196 @noindent
10197 That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
10198 has never output @var{sequence-id}s. Stubs that handle packets added
10199 since @value{GDBN} 5.0 must not accept @var{sequence-id}.
10200
10201 @cindex acknowledgment, for @value{GDBN} remote
10202 When either the host or the target machine receives a packet, the first
10203 response expected is an acknowledgment: either @samp{+} (to indicate
10204 the package was received correctly) or @samp{-} (to request
10205 retransmission):
10206
10207 @example
10208 <- @code{$}@var{packet-data}@code{#}@var{checksum}
10209 -> @code{+}
10210 @end example
10211 @noindent
10212
10213 The host (@value{GDBN}) sends @var{command}s, and the target (the
10214 debugging stub incorporated in your program) sends a @var{response}. In
10215 the case of step and continue @var{command}s, the response is only sent
10216 when the operation has completed (the target has again stopped).
10217
10218 @var{packet-data} consists of a sequence of characters with the
10219 exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
10220 exceptions).
10221
10222 Fields within the packet should be separated using @samp{,} @samp{;} or
10223 @samp{:}. Except where otherwise noted all numbers are represented in
10224 HEX with leading zeros suppressed.
10225
10226 Implementors should note that prior to @value{GDBN} 5.0, the character
10227 @samp{:} could not appear as the third character in a packet (as it
10228 would potentially conflict with the @var{sequence-id}).
10229
10230 Response @var{data} can be run-length encoded to save space. A @samp{*}
10231 means that the next character is an @sc{ascii} encoding giving a repeat count
10232 which stands for that many repetitions of the character preceding the
10233 @samp{*}. The encoding is @code{n+29}, yielding a printable character
10234 where @code{n >=3} (which is where rle starts to win). The printable
10235 characters @samp{$}, @samp{#}, @samp{+} and @samp{-} or with a numeric
10236 value greater than 126 should not be used.
10237
10238 Some remote systems have used a different run-length encoding mechanism
10239 loosely refered to as the cisco encoding. Following the @samp{*}
10240 character are two hex digits that indicate the size of the packet.
10241
10242 So:
10243 @example
10244 "@code{0* }"
10245 @end example
10246 @noindent
10247 means the same as "0000".
10248
10249 The error response returned for some packets includes a two character
10250 error number. That number is not well defined.
10251
10252 For any @var{command} not supported by the stub, an empty response
10253 (@samp{$#00}) should be returned. That way it is possible to extend the
10254 protocol. A newer @value{GDBN} can tell if a packet is supported based
10255 on that response.
10256
10257 A stub is required to support the @samp{g}, @samp{G}, @samp{m}, @samp{M},
10258 @samp{c}, and @samp{s} @var{command}s. All other @var{command}s are
10259 optional.
10260
10261 Below is a complete list of all currently defined @var{command}s and
10262 their corresponding response @var{data}:
10263 @page
10264 @multitable @columnfractions .30 .30 .40
10265 @item Packet
10266 @tab Request
10267 @tab Description
10268
10269 @item extended mode
10270 @tab @code{!}
10271 @tab
10272 Enable extended mode. In extended mode, the remote server is made
10273 persistent. The @samp{R} packet is used to restart the program being
10274 debugged.
10275 @item
10276 @tab reply @samp{OK}
10277 @tab
10278 The remote target both supports and has enabled extended mode.
10279
10280 @item last signal
10281 @tab @code{?}
10282 @tab
10283 Indicate the reason the target halted. The reply is the same as for step
10284 and continue.
10285 @item
10286 @tab reply
10287 @tab see below
10288
10289
10290 @item reserved
10291 @tab @code{a}
10292 @tab Reserved for future use
10293
10294 @item set program arguments @strong{(reserved)}
10295 @tab @code{A}@var{arglen}@code{,}@var{argnum}@code{,}@var{arg}@code{,...}
10296 @tab
10297 @item
10298 @tab
10299 @tab
10300 Initialized @samp{argv[]} array passed into program. @var{arglen}
10301 specifies the number of bytes in the hex encoded byte stream @var{arg}.
10302 See @file{gdbserver} for more details.
10303 @item
10304 @tab reply @code{OK}
10305 @item
10306 @tab reply @code{E}@var{NN}
10307
10308 @item set baud @strong{(deprecated)}
10309 @tab @code{b}@var{baud}
10310 @tab
10311 Change the serial line speed to @var{baud}. JTC: @emph{When does the
10312 transport layer state change? When it's received, or after the ACK is
10313 transmitted. In either case, there are problems if the command or the
10314 acknowledgment packet is dropped.} Stan: @emph{If people really wanted
10315 to add something like this, and get it working for the first time, they
10316 ought to modify ser-unix.c to send some kind of out-of-band message to a
10317 specially-setup stub and have the switch happen "in between" packets, so
10318 that from remote protocol's point of view, nothing actually
10319 happened.}
10320
10321 @item set breakpoint @strong{(deprecated)}
10322 @tab @code{B}@var{addr},@var{mode}
10323 @tab
10324 Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
10325 breakpoint at @var{addr}. @emph{This has been replaced by the @samp{Z} and
10326 @samp{z} packets.}
10327
10328 @item continue
10329 @tab @code{c}@var{addr}
10330 @tab
10331 @var{addr} is address to resume. If @var{addr} is omitted, resume at
10332 current address.
10333 @item
10334 @tab reply
10335 @tab see below
10336
10337 @item continue with signal
10338 @tab @code{C}@var{sig}@code{;}@var{addr}
10339 @tab
10340 Continue with signal @var{sig} (hex signal number). If
10341 @code{;}@var{addr} is omitted, resume at same address.
10342 @item
10343 @tab reply
10344 @tab see below
10345
10346 @item toggle debug @strong{(deprecated)}
10347 @tab @code{d}
10348 @tab
10349 toggle debug flag.
10350
10351 @item detach
10352 @tab @code{D}
10353 @tab
10354 Detach @value{GDBN} from the remote system. Sent to the remote target before
10355 @value{GDBN} disconnects.
10356 @item
10357 @tab reply @emph{no response}
10358 @tab
10359 @value{GDBN} does not check for any response after sending this packet.
10360
10361 @item reserved
10362 @tab @code{e}
10363 @tab Reserved for future use
10364
10365 @item reserved
10366 @tab @code{E}
10367 @tab Reserved for future use
10368
10369 @item reserved
10370 @tab @code{f}
10371 @tab Reserved for future use
10372
10373 @item reserved
10374 @tab @code{F}
10375 @tab Reserved for future use
10376
10377 @item read registers
10378 @tab @code{g}
10379 @tab Read general registers.
10380 @item
10381 @tab reply @var{XX...}
10382 @tab
10383 Each byte of register data is described by two hex digits. The bytes
10384 with the register are transmitted in target byte order. The size of
10385 each register and their position within the @samp{g} @var{packet} are
10386 determined by the @value{GDBN} internal macros @var{REGISTER_RAW_SIZE} and
10387 @var{REGISTER_NAME} macros. The specification of several standard
10388 @code{g} packets is specified below.
10389 @item
10390 @tab @code{E}@var{NN}
10391 @tab for an error.
10392
10393 @item write regs
10394 @tab @code{G}@var{XX...}
10395 @tab
10396 See @samp{g} for a description of the @var{XX...} data.
10397 @item
10398 @tab reply @code{OK}
10399 @tab for success
10400 @item
10401 @tab reply @code{E}@var{NN}
10402 @tab for an error
10403
10404 @item reserved
10405 @tab @code{h}
10406 @tab Reserved for future use
10407
10408 @item set thread
10409 @tab @code{H}@var{c}@var{t...}
10410 @tab
10411 Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
10412 @samp{G}, et.al.). @var{c} = @samp{c} for thread used in step and
10413 continue; @var{t...} can be -1 for all threads. @var{c} = @samp{g} for
10414 thread used in other operations. If zero, pick a thread, any thread.
10415 @item
10416 @tab reply @code{OK}
10417 @tab for success
10418 @item
10419 @tab reply @code{E}@var{NN}
10420 @tab for an error
10421
10422 @c FIXME: JTC:
10423 @c 'H': How restrictive (or permissive) is the thread model. If a
10424 @c thread is selected and stopped, are other threads allowed
10425 @c to continue to execute? As I mentioned above, I think the
10426 @c semantics of each command when a thread is selected must be
10427 @c described. For example:
10428 @c
10429 @c 'g': If the stub supports threads and a specific thread is
10430 @c selected, returns the register block from that thread;
10431 @c otherwise returns current registers.
10432 @c
10433 @c 'G' If the stub supports threads and a specific thread is
10434 @c selected, sets the registers of the register block of
10435 @c that thread; otherwise sets current registers.
10436
10437 @item cycle step @strong{(draft)}
10438 @tab @code{i}@var{addr}@code{,}@var{nnn}
10439 @tab
10440 Step the remote target by a single clock cycle. If @code{,}@var{nnn} is
10441 present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
10442 step starting at that address.
10443
10444 @item signal then cycle step @strong{(reserved)}
10445 @tab @code{I}
10446 @tab
10447 See @samp{i} and @samp{S} for likely syntax and semantics.
10448
10449 @item reserved
10450 @tab @code{j}
10451 @tab Reserved for future use
10452
10453 @item reserved
10454 @tab @code{J}
10455 @tab Reserved for future use
10456
10457 @item kill request
10458 @tab @code{k}
10459 @tab
10460 FIXME: @emph{There is no description of how operate when a specific
10461 thread context has been selected (ie. does 'k' kill only that thread?)}.
10462
10463 @item reserved
10464 @tab @code{l}
10465 @tab Reserved for future use
10466
10467 @item reserved
10468 @tab @code{L}
10469 @tab Reserved for future use
10470
10471 @item read memory
10472 @tab @code{m}@var{addr}@code{,}@var{length}
10473 @tab
10474 Read @var{length} bytes of memory starting at address @var{addr}.
10475 Neither @value{GDBN} nor the stub assume that sized memory transfers are assumed
10476 using word alligned accesses. FIXME: @emph{A word aligned memory
10477 transfer mechanism is needed.}
10478 @item
10479 @tab reply @var{XX...}
10480 @tab
10481 @var{XX...} is mem contents. Can be fewer bytes than requested if able
10482 to read only part of the data. Neither @value{GDBN} nor the stub assume that
10483 sized memory transfers are assumed using word alligned accesses. FIXME:
10484 @emph{A word aligned memory transfer mechanism is needed.}
10485 @item
10486 @tab reply @code{E}@var{NN}
10487 @tab @var{NN} is errno
10488
10489 @item write mem
10490 @tab @code{M}@var{addr},@var{length}@code{:}@var{XX...}
10491 @tab
10492 Write @var{length} bytes of memory starting at address @var{addr}.
10493 @var{XX...} is the data.
10494 @item
10495 @tab reply @code{OK}
10496 @tab for success
10497 @item
10498 @tab reply @code{E}@var{NN}
10499 @tab
10500 for an error (this includes the case where only part of the data was
10501 written).
10502
10503 @item reserved
10504 @tab @code{n}
10505 @tab Reserved for future use
10506
10507 @item reserved
10508 @tab @code{N}
10509 @tab Reserved for future use
10510
10511 @item reserved
10512 @tab @code{o}
10513 @tab Reserved for future use
10514
10515 @item reserved
10516 @tab @code{O}
10517 @tab Reserved for future use
10518
10519 @item read reg @strong{(reserved)}
10520 @tab @code{p}@var{n...}
10521 @tab
10522 See write register.
10523 @item
10524 @tab return @var{r....}
10525 @tab The hex encoded value of the register in target byte order.
10526
10527 @item write reg
10528 @tab @code{P}@var{n...}@code{=}@var{r...}
10529 @tab
10530 Write register @var{n...} with value @var{r...}, which contains two hex
10531 digits for each byte in the register (target byte order).
10532 @item
10533 @tab reply @code{OK}
10534 @tab for success
10535 @item
10536 @tab reply @code{E}@var{NN}
10537 @tab for an error
10538
10539 @item general query
10540 @tab @code{q}@var{query}
10541 @tab
10542 Request info about @var{query}. In general @value{GDBN} queries
10543 have a leading upper case letter. Custom vendor queries should use a
10544 company prefix (in lower case) ex: @samp{qfsf.var}. @var{query} may
10545 optionally be followed by a @samp{,} or @samp{;} separated list. Stubs
10546 must ensure that they match the full @var{query} name.
10547 @item
10548 @tab reply @code{XX...}
10549 @tab Hex encoded data from query. The reply can not be empty.
10550 @item
10551 @tab reply @code{E}@var{NN}
10552 @tab error reply
10553 @item
10554 @tab reply @samp{}
10555 @tab Indicating an unrecognized @var{query}.
10556
10557 @item general set
10558 @tab @code{Q}@var{var}@code{=}@var{val}
10559 @tab
10560 Set value of @var{var} to @var{val}. See @samp{q} for a discussing of
10561 naming conventions.
10562
10563 @item reset @strong{(deprecated)}
10564 @tab @code{r}
10565 @tab
10566 Reset the entire system.
10567
10568 @item remote restart
10569 @tab @code{R}@var{XX}
10570 @tab
10571 Restart the program being debugged. @var{XX}, while needed, is ignored.
10572 This packet is only available in extended mode.
10573 @item
10574 @tab
10575 no reply
10576 @tab
10577 The @samp{R} packet has no reply.
10578
10579 @item step
10580 @tab @code{s}@var{addr}
10581 @tab
10582 @var{addr} is address to resume. If @var{addr} is omitted, resume at
10583 same address.
10584 @item
10585 @tab reply
10586 @tab see below
10587
10588 @item step with signal
10589 @tab @code{S}@var{sig}@code{;}@var{addr}
10590 @tab
10591 Like @samp{C} but step not continue.
10592 @item
10593 @tab reply
10594 @tab see below
10595
10596 @item search
10597 @tab @code{t}@var{addr}@code{:}@var{PP}@code{,}@var{MM}
10598 @tab
10599 Search backwards starting at address @var{addr} for a match with pattern
10600 @var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4
10601 bytes. @var{addr} must be at least 3 digits.
10602
10603 @item thread alive
10604 @tab @code{T}@var{XX}
10605 @tab Find out if the thread XX is alive.
10606 @item
10607 @tab reply @code{OK}
10608 @tab thread is still alive
10609 @item
10610 @tab reply @code{E}@var{NN}
10611 @tab thread is dead
10612
10613 @item reserved
10614 @tab @code{u}
10615 @tab Reserved for future use
10616
10617 @item reserved
10618 @tab @code{U}
10619 @tab Reserved for future use
10620
10621 @item reserved
10622 @tab @code{v}
10623 @tab Reserved for future use
10624
10625 @item reserved
10626 @tab @code{V}
10627 @tab Reserved for future use
10628
10629 @item reserved
10630 @tab @code{w}
10631 @tab Reserved for future use
10632
10633 @item reserved
10634 @tab @code{W}
10635 @tab Reserved for future use
10636
10637 @item reserved
10638 @tab @code{x}
10639 @tab Reserved for future use
10640
10641 @item write mem (binary)
10642 @tab @code{X}@var{addr}@code{,}@var{length}@var{:}@var{XX...}
10643 @tab
10644 @var{addr} is address, @var{length} is number of bytes, @var{XX...} is
10645 binary data. The characters @code{$}, @code{#}, and @code{0x7d} are
10646 escaped using @code{0x7d}.
10647 @item
10648 @tab reply @code{OK}
10649 @tab for success
10650 @item
10651 @tab reply @code{E}@var{NN}
10652 @tab for an error
10653
10654 @item reserved
10655 @tab @code{y}
10656 @tab Reserved for future use
10657
10658 @item reserved
10659 @tab @code{Y}
10660 @tab Reserved for future use
10661
10662 @item remove break or watchpoint @strong{(draft)}
10663 @tab @code{z}@var{t}@code{,}@var{addr}@code{,}@var{length}
10664 @tab
10665 See @samp{Z}.
10666
10667 @item insert break or watchpoint @strong{(draft)}
10668 @tab @code{Z}@var{t}@code{,}@var{addr}@code{,}@var{length}
10669 @tab
10670 @var{t} is type: @samp{0} - software breakpoint, @samp{1} - hardware
10671 breakpoint, @samp{2} - write watchpoint, @samp{3} - read watchpoint,
10672 @samp{4} - access watchpoint; @var{addr} is address; @var{length} is in
10673 bytes. For a software breakpoint, @var{length} specifies the size of
10674 the instruction to be patched. For hardware breakpoints and watchpoints
10675 @var{length} specifies the memory region to be monitored. To avoid
10676 potential problems with duplicate packets, the operations should be
10677 implemented in an idempotent way.
10678 @item
10679 @tab reply @code{E}@var{NN}
10680 @tab for an error
10681 @item
10682 @tab reply @code{OK}
10683 @tab for success
10684 @item
10685 @tab @samp{}
10686 @tab If not supported.
10687
10688 @item reserved
10689 @tab <other>
10690 @tab Reserved for future use
10691
10692 @end multitable
10693
10694 The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
10695 receive any of the below as a reply. In the case of the @samp{C},
10696 @samp{c}, @samp{S} and @samp{s} packets, that reply is only returned
10697 when the target halts. In the below the exact meaning of @samp{signal
10698 number} is poorly defined. In general one of the UNIX signal numbering
10699 conventions is used.
10700
10701 @multitable @columnfractions .4 .6
10702
10703 @item @code{S}@var{AA}
10704 @tab @var{AA} is the signal number
10705
10706 @item @code{T}@var{AA}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}
10707 @tab
10708 @var{AA} = two hex digit signal number; @var{n...} = register number
10709 (hex), @var{r...} = target byte ordered register contents, size defined
10710 by @code{REGISTER_RAW_SIZE}; @var{n...} = @samp{thread}, @var{r...} =
10711 thread process ID, this is a hex integer; @var{n...} = other string not
10712 starting with valid hex digit. @value{GDBN} should ignore this
10713 @var{n...}, @var{r...} pair and go on to the next. This way we can
10714 extend the protocol.
10715
10716 @item @code{W}@var{AA}
10717 @tab
10718 The process exited, and @var{AA} is the exit status. This is only
10719 applicable for certains sorts of targets.
10720
10721 @item @code{X}@var{AA}
10722 @tab
10723 The process terminated with signal @var{AA}.
10724
10725 @item @code{N}@var{AA}@code{;}@var{t...}@code{;}@var{d...}@code{;}@var{b...} @strong{(obsolete)}
10726 @tab
10727 @var{AA} = signal number; @var{t...} = address of symbol "_start";
10728 @var{d...} = base of data section; @var{b...} = base of bss section.
10729 @emph{Note: only used by Cisco Systems targets. The difference between
10730 this reply and the "qOffsets" query is that the 'N' packet may arrive
10731 spontaneously whereas the 'qOffsets' is a query initiated by the host
10732 debugger.}
10733
10734 @item @code{O}@var{XX...}
10735 @tab
10736 @var{XX...} is hex encoding of @sc{ascii} data. This can happen at any time
10737 while the program is running and the debugger should continue to wait
10738 for 'W', 'T', etc.
10739
10740 @end multitable
10741
10742 The following set and query packets have already been defined.
10743
10744 @multitable @columnfractions .2 .2 .6
10745
10746 @item current thread
10747 @tab @code{q}@code{C}
10748 @tab Return the current thread id.
10749 @item
10750 @tab reply @code{QC}@var{pid}
10751 @tab
10752 Where @var{pid} is a HEX encoded 16 bit process id.
10753 @item
10754 @tab reply *
10755 @tab Any other reply implies the old pid.
10756
10757 @item all thread ids
10758 @tab @code{q}@code{fThreadInfo}
10759 @item
10760 @tab @code{q}@code{sThreadInfo}
10761 @tab
10762 Obtain a list of active thread ids from the target (OS). Since there
10763 may be too many active threads to fit into one reply packet, this query
10764 works iteratively: it may require more than one query/reply sequence to
10765 obtain the entire list of threads. The first query of the sequence will
10766 be the @code{qf}@code{ThreadInfo} query; subsequent queries in the
10767 sequence will be the @code{qs}@code{ThreadInfo} query.
10768 @item
10769 @tab
10770 @tab NOTE: replaces the @code{qL} query (see below).
10771 @item
10772 @tab reply @code{m}@var{<id>}
10773 @tab A single thread id
10774 @item
10775 @tab reply @code{m}@var{<id>},@var{<id>...}
10776 @tab a comma-separated list of thread ids
10777 @item
10778 @tab reply @code{l}
10779 @tab (lower case 'el') denotes end of list.
10780 @item
10781 @tab
10782 @tab
10783 In response to each query, the target will reply with a list of one
10784 or more thread ids, in big-endian hex, separated by commas. GDB will
10785 respond to each reply with a request for more thread ids (using the
10786 @code{qs} form of the query), until the target responds with @code{l}
10787 (lower-case el, for @code{'last'}).
10788
10789 @item extra thread info
10790 @tab @code{q}@code{ThreadExtraInfo}@code{,}@var{id}
10791 @tab
10792 @item
10793 @tab
10794 @tab
10795 Where @var{<id>} is a thread-id in big-endian hex.
10796 Obtain a printable string description of a thread's attributes from
10797 the target OS. This string may contain anything that the target OS
10798 thinks is interesting for @value{GDBN} to tell the user about the thread.
10799 The string is displayed in @value{GDBN}'s @samp{info threads} display.
10800 Some examples of possible thread extra info strings are "Runnable", or
10801 "Blocked on Mutex".
10802 @item
10803 @tab reply @var{XX...}
10804 @tab
10805 Where @var{XX...} is a hex encoding of @sc{ascii} data, comprising the
10806 printable string containing the extra information about the thread's
10807 attributes.
10808
10809 @item query @var{LIST} or @var{threadLIST} @strong{(deprecated)}
10810 @tab @code{q}@code{L}@var{startflag}@var{threadcount}@var{nextthread}
10811 @tab
10812 @item
10813 @tab
10814 @tab
10815 Obtain thread information from RTOS. Where: @var{startflag} (one hex
10816 digit) is one to indicate the first query and zero to indicate a
10817 subsequent query; @var{threadcount} (two hex digits) is the maximum
10818 number of threads the response packet can contain; and @var{nextthread}
10819 (eight hex digits), for subsequent queries (@var{startflag} is zero), is
10820 returned in the response as @var{argthread}.
10821 @item
10822 @tab
10823 @tab NOTE: this query is replaced by the @code{q}@code{fThreadInfo}
10824 query (see above).
10825 @item
10826 @tab reply @code{q}@code{M}@var{count}@var{done}@var{argthread}@var{thread...}
10827 @tab
10828 @item
10829 @tab
10830 @tab
10831 Where: @var{count} (two hex digits) is the number of threads being
10832 returned; @var{done} (one hex digit) is zero to indicate more threads
10833 and one indicates no further threads; @var{argthreadid} (eight hex
10834 digits) is @var{nextthread} from the request packet; @var{thread...} is
10835 a sequence of thread IDs from the target. @var{threadid} (eight hex
10836 digits). See @code{remote.c:parse_threadlist_response()}.
10837
10838 @item compute CRC of memory block
10839 @tab @code{q}@code{CRC:}@var{addr}@code{,}@var{length}
10840 @tab
10841 @item
10842 @tab reply @code{E}@var{NN}
10843 @tab An error (such as memory fault)
10844 @item
10845 @tab reply @code{C}@var{CRC32}
10846 @tab A 32 bit cyclic redundancy check of the specified memory region.
10847
10848 @item query sect offs
10849 @tab @code{q}@code{Offsets}
10850 @tab
10851 Get section offsets that the target used when re-locating the downloaded
10852 image. @emph{Note: while a @code{Bss} offset is included in the
10853 response, @value{GDBN} ignores this and instead applies the @code{Data}
10854 offset to the @code{Bss} section.}
10855 @item
10856 @tab reply @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
10857
10858 @item thread info request
10859 @tab @code{q}@code{P}@var{mode}@var{threadid}
10860 @tab
10861 @item
10862 @tab
10863 @tab
10864 Returns information on @var{threadid}. Where: @var{mode} is a hex
10865 encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
10866 @item
10867 @tab reply *
10868 @tab
10869 See @code{remote.c:remote_unpack_thread_info_response()}.
10870
10871 @item remote command
10872 @tab @code{q}@code{Rcmd,}@var{COMMAND}
10873 @tab
10874 @item
10875 @tab
10876 @tab
10877 @var{COMMAND} (hex encoded) is passed to the local interpreter for
10878 execution. Invalid commands should be reported using the output string.
10879 Before the final result packet, the target may also respond with a
10880 number of intermediate @code{O}@var{OUTPUT} console output
10881 packets. @emph{Implementors should note that providing access to a
10882 stubs's interpreter may have security implications}.
10883 @item
10884 @tab reply @code{OK}
10885 @tab
10886 A command response with no output.
10887 @item
10888 @tab reply @var{OUTPUT}
10889 @tab
10890 A command response with the hex encoded output string @var{OUTPUT}.
10891 @item
10892 @tab reply @code{E}@var{NN}
10893 @tab
10894 Indicate a badly formed request.
10895
10896 @item
10897 @tab reply @samp{}
10898 @tab
10899 When @samp{q}@samp{Rcmd} is not recognized.
10900
10901 @item symbol lookup
10902 @tab @code{qSymbol::}
10903 @tab
10904 Notify the target that @value{GDBN} is prepared to serve symbol lookup
10905 requests. Accept requests from the target for the values of symbols.
10906 @item
10907 @tab
10908 @tab
10909 @item
10910 @tab reply @code{OK}
10911 @tab
10912 The target does not need to look up any (more) symbols.
10913 @item
10914 @tab reply @code{qSymbol:}@var{sym_name}
10915 @tab
10916 The target requests the value of symbol @var{sym_name} (hex encoded).
10917 @value{GDBN} may provide the value by using the
10918 @code{qSymbol:}@var{sym_value}:@var{sym_name}
10919 message, described below.
10920
10921 @item symbol value
10922 @tab @code{qSymbol:}@var{sym_value}:@var{sym_name}
10923 @tab
10924 Set the value of SYM_NAME to SYM_VALUE.
10925 @item
10926 @tab
10927 @tab
10928 @var{sym_name} (hex encoded) is the name of a symbol whose value
10929 the target has previously requested.
10930 @item
10931 @tab
10932 @tab
10933 @var{sym_value} (hex) is the value for symbol @var{sym_name}.
10934 If @value{GDBN} cannot supply a value for @var{sym_name}, then this
10935 field will be empty.
10936 @item
10937 @tab reply @code{OK}
10938 @tab
10939 The target does not need to look up any (more) symbols.
10940 @item
10941 @tab reply @code{qSymbol:}@var{sym_name}
10942 @tab
10943 The target requests the value of a new symbol @var{sym_name} (hex encoded).
10944 @value{GDBN} will continue to supply the values of symbols (if available),
10945 until the target ceases to request them.
10946
10947 @end multitable
10948
10949 The following @samp{g}/@samp{G} packets have previously been defined.
10950 In the below, some thirty-two bit registers are transferred as sixty-four
10951 bits. Those registers should be zero/sign extended (which?) to fill the
10952 space allocated. Register bytes are transfered in target byte order.
10953 The two nibbles within a register byte are transfered most-significant -
10954 least-significant.
10955
10956 @multitable @columnfractions .5 .5
10957
10958 @item MIPS32
10959 @tab
10960 All registers are transfered as thirty-two bit quantities in the order:
10961 32 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
10962 registers; fsr; fir; fp.
10963
10964 @item MIPS64
10965 @tab
10966 All registers are transfered as sixty-four bit quantities (including
10967 thirty-two bit registers such as @code{sr}). The ordering is the same
10968 as @code{MIPS32}.
10969
10970 @end multitable
10971
10972 Example sequence of a target being re-started. Notice how the restart
10973 does not get any direct output:
10974
10975 @example
10976 <- @code{R00}
10977 -> @code{+}
10978 @emph{target restarts}
10979 <- @code{?}
10980 -> @code{+}
10981 -> @code{T001:1234123412341234}
10982 <- @code{+}
10983 @end example
10984
10985 Example sequence of a target being stepped by a single instruction:
10986
10987 @example
10988 <- @code{G1445...}
10989 -> @code{+}
10990 <- @code{s}
10991 -> @code{+}
10992 @emph{time passes}
10993 -> @code{T001:1234123412341234}
10994 <- @code{+}
10995 <- @code{g}
10996 -> @code{+}
10997 -> @code{1455...}
10998 <- @code{+}
10999 @end example
11000
11001 @node Server
11002 @subsubsection Using the @code{gdbserver} program
11003
11004 @kindex gdbserver
11005 @cindex remote connection without stubs
11006 @code{gdbserver} is a control program for Unix-like systems, which
11007 allows you to connect your program with a remote @value{GDBN} via
11008 @code{target remote}---but without linking in the usual debugging stub.
11009
11010 @code{gdbserver} is not a complete replacement for the debugging stubs,
11011 because it requires essentially the same operating-system facilities
11012 that @value{GDBN} itself does. In fact, a system that can run
11013 @code{gdbserver} to connect to a remote @value{GDBN} could also run
11014 @value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
11015 because it is a much smaller program than @value{GDBN} itself. It is
11016 also easier to port than all of @value{GDBN}, so you may be able to get
11017 started more quickly on a new system by using @code{gdbserver}.
11018 Finally, if you develop code for real-time systems, you may find that
11019 the tradeoffs involved in real-time operation make it more convenient to
11020 do as much development work as possible on another system, for example
11021 by cross-compiling. You can use @code{gdbserver} to make a similar
11022 choice for debugging.
11023
11024 @value{GDBN} and @code{gdbserver} communicate via either a serial line
11025 or a TCP connection, using the standard @value{GDBN} remote serial
11026 protocol.
11027
11028 @table @emph
11029 @item On the target machine,
11030 you need to have a copy of the program you want to debug.
11031 @code{gdbserver} does not need your program's symbol table, so you can
11032 strip the program if necessary to save space. @value{GDBN} on the host
11033 system does all the symbol handling.
11034
11035 To use the server, you must tell it how to communicate with @value{GDBN};
11036 the name of your program; and the arguments for your program. The
11037 syntax is:
11038
11039 @smallexample
11040 target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
11041 @end smallexample
11042
11043 @var{comm} is either a device name (to use a serial line) or a TCP
11044 hostname and portnumber. For example, to debug Emacs with the argument
11045 @samp{foo.txt} and communicate with @value{GDBN} over the serial port
11046 @file{/dev/com1}:
11047
11048 @smallexample
11049 target> gdbserver /dev/com1 emacs foo.txt
11050 @end smallexample
11051
11052 @code{gdbserver} waits passively for the host @value{GDBN} to communicate
11053 with it.
11054
11055 To use a TCP connection instead of a serial line:
11056
11057 @smallexample
11058 target> gdbserver host:2345 emacs foo.txt
11059 @end smallexample
11060
11061 The only difference from the previous example is the first argument,
11062 specifying that you are communicating with the host @value{GDBN} via
11063 TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
11064 expect a TCP connection from machine @samp{host} to local TCP port 2345.
11065 (Currently, the @samp{host} part is ignored.) You can choose any number
11066 you want for the port number as long as it does not conflict with any
11067 TCP ports already in use on the target system (for example, @code{23} is
11068 reserved for @code{telnet}).@footnote{If you choose a port number that
11069 conflicts with another service, @code{gdbserver} prints an error message
11070 and exits.} You must use the same port number with the host @value{GDBN}
11071 @code{target remote} command.
11072
11073 @item On the @value{GDBN} host machine,
11074 you need an unstripped copy of your program, since @value{GDBN} needs
11075 symbols and debugging information. Start up @value{GDBN} as usual,
11076 using the name of the local copy of your program as the first argument.
11077 (You may also need the @w{@samp{--baud}} option if the serial line is
11078 running at anything other than 9600@dmn{bps}.) After that, use @code{target
11079 remote} to establish communications with @code{gdbserver}. Its argument
11080 is either a device name (usually a serial device, like
11081 @file{/dev/ttyb}), or a TCP port descriptor in the form
11082 @code{@var{host}:@var{PORT}}. For example:
11083
11084 @smallexample
11085 (@value{GDBP}) target remote /dev/ttyb
11086 @end smallexample
11087
11088 @noindent
11089 communicates with the server via serial line @file{/dev/ttyb}, and
11090
11091 @smallexample
11092 (@value{GDBP}) target remote the-target:2345
11093 @end smallexample
11094
11095 @noindent
11096 communicates via a TCP connection to port 2345 on host @w{@file{the-target}}.
11097 For TCP connections, you must start up @code{gdbserver} prior to using
11098 the @code{target remote} command. Otherwise you may get an error whose
11099 text depends on the host system, but which usually looks something like
11100 @samp{Connection refused}.
11101 @end table
11102
11103 @node NetWare
11104 @subsubsection Using the @code{gdbserve.nlm} program
11105
11106 @kindex gdbserve.nlm
11107 @code{gdbserve.nlm} is a control program for NetWare systems, which
11108 allows you to connect your program with a remote @value{GDBN} via
11109 @code{target remote}.
11110
11111 @value{GDBN} and @code{gdbserve.nlm} communicate via a serial line,
11112 using the standard @value{GDBN} remote serial protocol.
11113
11114 @table @emph
11115 @item On the target machine,
11116 you need to have a copy of the program you want to debug.
11117 @code{gdbserve.nlm} does not need your program's symbol table, so you
11118 can strip the program if necessary to save space. @value{GDBN} on the
11119 host system does all the symbol handling.
11120
11121 To use the server, you must tell it how to communicate with
11122 @value{GDBN}; the name of your program; and the arguments for your
11123 program. The syntax is:
11124
11125 @smallexample
11126 load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
11127 [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
11128 @end smallexample
11129
11130 @var{board} and @var{port} specify the serial line; @var{baud} specifies
11131 the baud rate used by the connection. @var{port} and @var{node} default
11132 to 0, @var{baud} defaults to 9600@dmn{bps}.
11133
11134 For example, to debug Emacs with the argument @samp{foo.txt}and
11135 communicate with @value{GDBN} over serial port number 2 or board 1
11136 using a 19200@dmn{bps} connection:
11137
11138 @smallexample
11139 load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
11140 @end smallexample
11141
11142 @item On the @value{GDBN} host machine,
11143 you need an unstripped copy of your program, since @value{GDBN} needs
11144 symbols and debugging information. Start up @value{GDBN} as usual,
11145 using the name of the local copy of your program as the first argument.
11146 (You may also need the @w{@samp{--baud}} option if the serial line is
11147 running at anything other than 9600@dmn{bps}. After that, use @code{target
11148 remote} to establish communications with @code{gdbserve.nlm}. Its
11149 argument is a device name (usually a serial device, like
11150 @file{/dev/ttyb}). For example:
11151
11152 @smallexample
11153 (@value{GDBP}) target remote /dev/ttyb
11154 @end smallexample
11155
11156 @noindent
11157 communications with the server via serial line @file{/dev/ttyb}.
11158 @end table
11159
11160 @node KOD
11161 @section Kernel Object Display
11162
11163 @cindex kernel object display
11164 @cindex kernel object
11165 @cindex KOD
11166
11167 Some targets support kernel object display. Using this facility,
11168 @value{GDBN} communicates specially with the underlying operating system
11169 and can display information about operating system-level objects such as
11170 mutexes and other synchronization objects. Exactly which objects can be
11171 displayed is determined on a per-OS basis.
11172
11173 Use the @code{set os} command to set the operating system. This tells
11174 @value{GDBN} which kernel object display module to initialize:
11175
11176 @example
11177 (@value{GDBP}) set os cisco
11178 @end example
11179
11180 If @code{set os} succeeds, @value{GDBN} will display some information
11181 about the operating system, and will create a new @code{info} command
11182 which can be used to query the target. The @code{info} command is named
11183 after the operating system:
11184
11185 @example
11186 (@value{GDBP}) info cisco
11187 List of Cisco Kernel Objects
11188 Object Description
11189 any Any and all objects
11190 @end example
11191
11192 Further subcommands can be used to query about particular objects known
11193 by the kernel.
11194
11195 There is currently no way to determine whether a given operating system
11196 is supported other than to try it.
11197
11198
11199 @node Configurations
11200 @chapter Configuration-Specific Information
11201
11202 While nearly all @value{GDBN} commands are available for all native and
11203 cross versions of the debugger, there are some exceptions. This chapter
11204 describes things that are only available in certain configurations.
11205
11206 There are three major categories of configurations: native
11207 configurations, where the host and target are the same, embedded
11208 operating system configurations, which are usually the same for several
11209 different processor architectures, and bare embedded processors, which
11210 are quite different from each other.
11211
11212 @menu
11213 * Native::
11214 * Embedded OS::
11215 * Embedded Processors::
11216 * Architectures::
11217 @end menu
11218
11219 @node Native
11220 @section Native
11221
11222 This section describes details specific to particular native
11223 configurations.
11224
11225 @menu
11226 * HP-UX:: HP-UX
11227 * SVR4 Process Information:: SVR4 process information
11228 * DJGPP Native:: Features specific to the DJGPP port
11229 @end menu
11230
11231 @node HP-UX
11232 @subsection HP-UX
11233
11234 On HP-UX systems, if you refer to a function or variable name that
11235 begins with a dollar sign, @value{GDBN} searches for a user or system
11236 name first, before it searches for a convenience variable.
11237
11238 @node SVR4 Process Information
11239 @subsection SVR4 process information
11240
11241 @kindex /proc
11242 @cindex process image
11243
11244 Many versions of SVR4 provide a facility called @samp{/proc} that can be
11245 used to examine the image of a running process using file-system
11246 subroutines. If @value{GDBN} is configured for an operating system with
11247 this facility, the command @code{info proc} is available to report on
11248 several kinds of information about the process running your program.
11249 @code{info proc} works only on SVR4 systems that include the
11250 @code{procfs} code. This includes OSF/1 (Digital Unix), Solaris, Irix,
11251 and Unixware, but not HP-UX or Linux, for example.
11252
11253 @table @code
11254 @kindex info proc
11255 @item info proc
11256 Summarize available information about the process.
11257
11258 @kindex info proc mappings
11259 @item info proc mappings
11260 Report on the address ranges accessible in the program, with information
11261 on whether your program may read, write, or execute each range.
11262
11263 @kindex info proc times
11264 @item info proc times
11265 Starting time, user CPU time, and system CPU time for your program and
11266 its children.
11267
11268 @kindex info proc id
11269 @item info proc id
11270 Report on the process IDs related to your program: its own process ID,
11271 the ID of its parent, the process group ID, and the session ID.
11272
11273 @kindex info proc status
11274 @item info proc status
11275 General information on the state of the process. If the process is
11276 stopped, this report includes the reason for stopping, and any signal
11277 received.
11278
11279 @item info proc all
11280 Show all the above information about the process.
11281 @end table
11282
11283 @node DJGPP Native
11284 @subsection Features for Debugging @sc{djgpp} Programs
11285 @cindex @sc{djgpp} debugging
11286 @cindex native @sc{djgpp} debugging
11287 @cindex MS-DOS-specific commands
11288
11289 @sc{djgpp} is the port of @sc{gnu} development tools to MS-DOS and
11290 MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
11291 that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
11292 top of real-mode DOS systems and their emulations.
11293
11294 @value{GDBN} supports native debugging of @sc{djgpp} programs, and
11295 defines a few commands specific to the @sc{djgpp} port. This
11296 subsection describes those commands.
11297
11298 @table @code
11299 @kindex info dos
11300 @item info dos
11301 This is a prefix of @sc{djgpp}-specific commands which print
11302 information about the target system and important OS structures.
11303
11304 @kindex sysinfo
11305 @cindex MS-DOS system info
11306 @cindex free memory information (MS-DOS)
11307 @item info dos sysinfo
11308 This command displays assorted information about the underlying
11309 platform: the CPU type and features, the OS version and flavor, the
11310 DPMI version, and the available conventional and DPMI memory.
11311
11312 @cindex GDT
11313 @cindex LDT
11314 @cindex IDT
11315 @cindex segment descriptor tables
11316 @cindex descriptor tables display
11317 @item info dos gdt
11318 @itemx info dos ldt
11319 @itemx info dos idt
11320 These 3 commands display entries from, respectively, Global, Local,
11321 and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
11322 tables are data structures which store a descriptor for each segment
11323 that is currently in use. The segment's selector is an index into a
11324 descriptor table; the table entry for that index holds the
11325 descriptor's base address and limit, and its attributes and access
11326 rights.
11327
11328 A typical @sc{djgpp} program uses 3 segments: a code segment, a data
11329 segment (used for both data and the stack), and a DOS segment (which
11330 allows access to DOS/BIOS data structures and absolute addresses in
11331 conventional memory). However, the DPMI host will usually define
11332 additional segments in order to support the DPMI environment.
11333
11334 @cindex garbled pointers
11335 These commands allow to display entries from the descriptor tables.
11336 Without an argument, all entries from the specified table are
11337 displayed. An argument, which should be an integer expression, means
11338 display a single entry whose index is given by the argument. For
11339 example, here's a convenient way to display information about the
11340 debugged program's data segment:
11341
11342 @smallexample
11343 (@value{GDBP}) info dos ldt $ds
11344 0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)
11345 @end smallexample
11346
11347 @noindent
11348 This comes in handy when you want to see whether a pointer is outside
11349 the data segment's limit (i.e.@: @dfn{garbled}).
11350
11351 @cindex page tables display (MS-DOS)
11352 @item info dos pde
11353 @itemx info dos pte
11354 These two commands display entries from, respectively, the Page
11355 Directory and the Page Tables. Page Directories and Page Tables are
11356 data structures which control how virtual memory addresses are mapped
11357 into physical addresses. A Page Table includes an entry for every
11358 page of memory that is mapped into the program's address space; there
11359 may be several Page Tables, each one holding up to 4096 entries. A
11360 Page Directory has up to 4096 entries, one each for every Page Table
11361 that is currently in use.
11362
11363 Without an argument, @kbd{info dos pde} displays the entire Page
11364 Directory, and @kbd{info dos pte} displays all the entries in all of
11365 the Page Tables. An argument, an integer expression, given to the
11366 @kbd{info dos pde} command means display only that entry from the Page
11367 Directory table. An argument given to the @kbd{info dos pte} command
11368 means display entries from a single Page Table, the one pointed to by
11369 the specified entry in the Page Directory.
11370
11371 These commands are useful when your program uses @dfn{DMA} (Direct
11372 Memory Access), which needs physical addresses to program the DMA
11373 controller.
11374
11375 These commands are supported only with some DPMI servers.
11376
11377 @cindex physical address from linear address
11378 @item info dos address-pte
11379 This command displays the Page Table entry for a specified linear
11380 address. The argument linear address should already have the
11381 appropriate segment's base address added to it, because this command
11382 accepts addresses which may belong to @emph{any} segment. For
11383 example, here's how to display the Page Table entry for the page where
11384 the variable @code{i} is stored:
11385
11386 @smallexample
11387 (@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i
11388 Page Table entry for address 0x11a00d30:
11389 Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30
11390 @end smallexample
11391
11392 @noindent
11393 This says that @code{i} is stored at offset @code{0xd30} from the page
11394 whose physical base address is @code{0x02698000}, and prints all the
11395 attributes of that page.
11396
11397 Note that you must cast the addresses of variables to a @code{char *},
11398 since otherwise the value of @code{__djgpp_base_address}, the base
11399 address of all variables and functions in a @sc{djgpp} program, will
11400 be added using the rules of C pointer arithmetics: if @code{i} is
11401 declared an @code{int}, @value{GDBN} will add 4 times the value of
11402 @code{__djgpp_base_address} to the address of @code{i}.
11403
11404 Here's another example, it displays the Page Table entry for the
11405 transfer buffer:
11406
11407 @smallexample
11408 (@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)
11409 Page Table entry for address 0x29110:
11410 Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110
11411 @end smallexample
11412
11413 @noindent
11414 (The @code{+ 3} offset is because the transfer buffer's address is the
11415 3rd member of the @code{_go32_info_block} structure.) The output of
11416 this command clearly shows that addresses in conventional memory are
11417 mapped 1:1, i.e.@: the physical and linear addresses are identical.
11418
11419 This command is supported only with some DPMI servers.
11420 @end table
11421
11422 @node Embedded OS
11423 @section Embedded Operating Systems
11424
11425 This section describes configurations involving the debugging of
11426 embedded operating systems that are available for several different
11427 architectures.
11428
11429 @menu
11430 * VxWorks:: Using @value{GDBN} with VxWorks
11431 @end menu
11432
11433 @value{GDBN} includes the ability to debug programs running on
11434 various real-time operating systems.
11435
11436 @node VxWorks
11437 @subsection Using @value{GDBN} with VxWorks
11438
11439 @cindex VxWorks
11440
11441 @table @code
11442
11443 @kindex target vxworks
11444 @item target vxworks @var{machinename}
11445 A VxWorks system, attached via TCP/IP. The argument @var{machinename}
11446 is the target system's machine name or IP address.
11447
11448 @end table
11449
11450 On VxWorks, @code{load} links @var{filename} dynamically on the
11451 current target system as well as adding its symbols in @value{GDBN}.
11452
11453 @value{GDBN} enables developers to spawn and debug tasks running on networked
11454 VxWorks targets from a Unix host. Already-running tasks spawned from
11455 the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
11456 both the Unix host and on the VxWorks target. The program
11457 @code{@value{GDBP}} is installed and executed on the Unix host. (It may be
11458 installed with the name @code{vxgdb}, to distinguish it from a
11459 @value{GDBN} for debugging programs on the host itself.)
11460
11461 @table @code
11462 @item VxWorks-timeout @var{args}
11463 @kindex vxworks-timeout
11464 All VxWorks-based targets now support the option @code{vxworks-timeout}.
11465 This option is set by the user, and @var{args} represents the number of
11466 seconds @value{GDBN} waits for responses to rpc's. You might use this if
11467 your VxWorks target is a slow software simulator or is on the far side
11468 of a thin network line.
11469 @end table
11470
11471 The following information on connecting to VxWorks was current when
11472 this manual was produced; newer releases of VxWorks may use revised
11473 procedures.
11474
11475 @kindex INCLUDE_RDB
11476 To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
11477 to include the remote debugging interface routines in the VxWorks
11478 library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
11479 VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
11480 kernel. The resulting kernel contains @file{rdb.a}, and spawns the
11481 source debugging task @code{tRdbTask} when VxWorks is booted. For more
11482 information on configuring and remaking VxWorks, see the manufacturer's
11483 manual.
11484 @c VxWorks, see the @cite{VxWorks Programmer's Guide}.
11485
11486 Once you have included @file{rdb.a} in your VxWorks system image and set
11487 your Unix execution search path to find @value{GDBN}, you are ready to
11488 run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
11489 @code{vxgdb}, depending on your installation).
11490
11491 @value{GDBN} comes up showing the prompt:
11492
11493 @example
11494 (vxgdb)
11495 @end example
11496
11497 @menu
11498 * VxWorks Connection:: Connecting to VxWorks
11499 * VxWorks Download:: VxWorks download
11500 * VxWorks Attach:: Running tasks
11501 @end menu
11502
11503 @node VxWorks Connection
11504 @subsubsection Connecting to VxWorks
11505
11506 The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
11507 network. To connect to a target whose host name is ``@code{tt}'', type:
11508
11509 @example
11510 (vxgdb) target vxworks tt
11511 @end example
11512
11513 @need 750
11514 @value{GDBN} displays messages like these:
11515
11516 @smallexample
11517 Attaching remote machine across net...
11518 Connected to tt.
11519 @end smallexample
11520
11521 @need 1000
11522 @value{GDBN} then attempts to read the symbol tables of any object modules
11523 loaded into the VxWorks target since it was last booted. @value{GDBN} locates
11524 these files by searching the directories listed in the command search
11525 path (@pxref{Environment, ,Your program's environment}); if it fails
11526 to find an object file, it displays a message such as:
11527
11528 @example
11529 prog.o: No such file or directory.
11530 @end example
11531
11532 When this happens, add the appropriate directory to the search path with
11533 the @value{GDBN} command @code{path}, and execute the @code{target}
11534 command again.
11535
11536 @node VxWorks Download
11537 @subsubsection VxWorks download
11538
11539 @cindex download to VxWorks
11540 If you have connected to the VxWorks target and you want to debug an
11541 object that has not yet been loaded, you can use the @value{GDBN}
11542 @code{load} command to download a file from Unix to VxWorks
11543 incrementally. The object file given as an argument to the @code{load}
11544 command is actually opened twice: first by the VxWorks target in order
11545 to download the code, then by @value{GDBN} in order to read the symbol
11546 table. This can lead to problems if the current working directories on
11547 the two systems differ. If both systems have NFS mounted the same
11548 filesystems, you can avoid these problems by using absolute paths.
11549 Otherwise, it is simplest to set the working directory on both systems
11550 to the directory in which the object file resides, and then to reference
11551 the file by its name, without any path. For instance, a program
11552 @file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
11553 and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
11554 program, type this on VxWorks:
11555
11556 @example
11557 -> cd "@var{vxpath}/vw/demo/rdb"
11558 @end example
11559
11560 @noindent
11561 Then, in @value{GDBN}, type:
11562
11563 @example
11564 (vxgdb) cd @var{hostpath}/vw/demo/rdb
11565 (vxgdb) load prog.o
11566 @end example
11567
11568 @value{GDBN} displays a response similar to this:
11569
11570 @smallexample
11571 Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
11572 @end smallexample
11573
11574 You can also use the @code{load} command to reload an object module
11575 after editing and recompiling the corresponding source file. Note that
11576 this makes @value{GDBN} delete all currently-defined breakpoints,
11577 auto-displays, and convenience variables, and to clear the value
11578 history. (This is necessary in order to preserve the integrity of
11579 debugger's data structures that reference the target system's symbol
11580 table.)
11581
11582 @node VxWorks Attach
11583 @subsubsection Running tasks
11584
11585 @cindex running VxWorks tasks
11586 You can also attach to an existing task using the @code{attach} command as
11587 follows:
11588
11589 @example
11590 (vxgdb) attach @var{task}
11591 @end example
11592
11593 @noindent
11594 where @var{task} is the VxWorks hexadecimal task ID. The task can be running
11595 or suspended when you attach to it. Running tasks are suspended at
11596 the time of attachment.
11597
11598 @node Embedded Processors
11599 @section Embedded Processors
11600
11601 This section goes into details specific to particular embedded
11602 configurations.
11603
11604 @menu
11605 * A29K Embedded:: AMD A29K Embedded
11606 * ARM:: ARM
11607 * H8/300:: Hitachi H8/300
11608 * H8/500:: Hitachi H8/500
11609 * i960:: Intel i960
11610 * M32R/D:: Mitsubishi M32R/D
11611 * M68K:: Motorola M68K
11612 * M88K:: Motorola M88K
11613 * MIPS Embedded:: MIPS Embedded
11614 * PA:: HP PA Embedded
11615 * PowerPC: PowerPC
11616 * SH:: Hitachi SH
11617 * Sparclet:: Tsqware Sparclet
11618 * Sparclite:: Fujitsu Sparclite
11619 * ST2000:: Tandem ST2000
11620 * Z8000:: Zilog Z8000
11621 @end menu
11622
11623 @node A29K Embedded
11624 @subsection AMD A29K Embedded
11625
11626 @menu
11627 * A29K UDI::
11628 * A29K EB29K::
11629 * Comms (EB29K):: Communications setup
11630 * gdb-EB29K:: EB29K cross-debugging
11631 * Remote Log:: Remote log
11632 @end menu
11633
11634 @table @code
11635
11636 @kindex target adapt
11637 @item target adapt @var{dev}
11638 Adapt monitor for A29K.
11639
11640 @kindex target amd-eb
11641 @item target amd-eb @var{dev} @var{speed} @var{PROG}
11642 @cindex AMD EB29K
11643 Remote PC-resident AMD EB29K board, attached over serial lines.
11644 @var{dev} is the serial device, as for @code{target remote};
11645 @var{speed} allows you to specify the linespeed; and @var{PROG} is the
11646 name of the program to be debugged, as it appears to DOS on the PC.
11647 @xref{A29K EB29K, ,EBMON protocol for AMD29K}.
11648
11649 @end table
11650
11651 @node A29K UDI
11652 @subsubsection A29K UDI
11653
11654 @cindex UDI
11655 @cindex AMD29K via UDI
11656
11657 @value{GDBN} supports AMD's UDI (``Universal Debugger Interface'')
11658 protocol for debugging the a29k processor family. To use this
11659 configuration with AMD targets running the MiniMON monitor, you need the
11660 program @code{MONTIP}, available from AMD at no charge. You can also
11661 use @value{GDBN} with the UDI-conformant a29k simulator program
11662 @code{ISSTIP}, also available from AMD.
11663
11664 @table @code
11665 @item target udi @var{keyword}
11666 @kindex udi
11667 Select the UDI interface to a remote a29k board or simulator, where
11668 @var{keyword} is an entry in the AMD configuration file @file{udi_soc}.
11669 This file contains keyword entries which specify parameters used to
11670 connect to a29k targets. If the @file{udi_soc} file is not in your
11671 working directory, you must set the environment variable @samp{UDICONF}
11672 to its pathname.
11673 @end table
11674
11675 @node A29K EB29K
11676 @subsubsection EBMON protocol for AMD29K
11677
11678 @cindex EB29K board
11679 @cindex running 29K programs
11680
11681 AMD distributes a 29K development board meant to fit in a PC, together
11682 with a DOS-hosted monitor program called @code{EBMON}. As a shorthand
11683 term, this development system is called the ``EB29K''. To use
11684 @value{GDBN} from a Unix system to run programs on the EB29K board, you
11685 must first connect a serial cable between the PC (which hosts the EB29K
11686 board) and a serial port on the Unix system. In the following, we
11687 assume you've hooked the cable between the PC's @file{COM1} port and
11688 @file{/dev/ttya} on the Unix system.
11689
11690 @node Comms (EB29K)
11691 @subsubsection Communications setup
11692
11693 The next step is to set up the PC's port, by doing something like this
11694 in DOS on the PC:
11695
11696 @example
11697 C:\> MODE com1:9600,n,8,1,none
11698 @end example
11699
11700 @noindent
11701 This example---run on an MS DOS 4.0 system---sets the PC port to 9600
11702 bps, no parity, eight data bits, one stop bit, and no ``retry'' action;
11703 you must match the communications parameters when establishing the Unix
11704 end of the connection as well.
11705 @c FIXME: Who knows what this "no retry action" crud from the DOS manual may
11706 @c mean? It's optional; leave it out? ---doc@cygnus.com, 25feb91
11707 @c
11708 @c It's optional, but it's unwise to omit it: who knows what is the
11709 @c default value set when the DOS machines boots? "No retry" means that
11710 @c the DOS serial device driver won't retry the operation if it fails;
11711 @c I understand that this is needed because the GDB serial protocol
11712 @c handles any errors and retransmissions itself. ---Eli Zaretskii, 3sep99
11713
11714 To give control of the PC to the Unix side of the serial line, type
11715 the following at the DOS console:
11716
11717 @example
11718 C:\> CTTY com1
11719 @end example
11720
11721 @noindent
11722 (Later, if you wish to return control to the DOS console, you can use
11723 the command @code{CTTY con}---but you must send it over the device that
11724 had control, in our example over the @file{COM1} serial line.)
11725
11726 From the Unix host, use a communications program such as @code{tip} or
11727 @code{cu} to communicate with the PC; for example,
11728
11729 @example
11730 cu -s 9600 -l /dev/ttya
11731 @end example
11732
11733 @noindent
11734 The @code{cu} options shown specify, respectively, the linespeed and the
11735 serial port to use. If you use @code{tip} instead, your command line
11736 may look something like the following:
11737
11738 @example
11739 tip -9600 /dev/ttya
11740 @end example
11741
11742 @noindent
11743 Your system may require a different name where we show
11744 @file{/dev/ttya} as the argument to @code{tip}. The communications
11745 parameters, including which port to use, are associated with the
11746 @code{tip} argument in the ``remote'' descriptions file---normally the
11747 system table @file{/etc/remote}.
11748 @c FIXME: What if anything needs doing to match the "n,8,1,none" part of
11749 @c the DOS side's comms setup? cu can support -o (odd
11750 @c parity), -e (even parity)---apparently no settings for no parity or
11751 @c for character size. Taken from stty maybe...? John points out tip
11752 @c can set these as internal variables, eg ~s parity=none; man stty
11753 @c suggests that it *might* work to stty these options with stdin or
11754 @c stdout redirected... ---doc@cygnus.com, 25feb91
11755 @c
11756 @c There's nothing to be done for the "none" part of the DOS MODE
11757 @c command. The rest of the parameters should be matched by the
11758 @c baudrate, bits, and parity used by the Unix side. ---Eli Zaretskii, 3Sep99
11759
11760 @kindex EBMON
11761 Using the @code{tip} or @code{cu} connection, change the DOS working
11762 directory to the directory containing a copy of your 29K program, then
11763 start the PC program @code{EBMON} (an EB29K control program supplied
11764 with your board by AMD). You should see an initial display from
11765 @code{EBMON} similar to the one that follows, ending with the
11766 @code{EBMON} prompt @samp{#}---
11767
11768 @example
11769 C:\> G:
11770
11771 G:\> CD \usr\joe\work29k
11772
11773 G:\USR\JOE\WORK29K> EBMON
11774 Am29000 PC Coprocessor Board Monitor, version 3.0-18
11775 Copyright 1990 Advanced Micro Devices, Inc.
11776 Written by Gibbons and Associates, Inc.
11777
11778 Enter '?' or 'H' for help
11779
11780 PC Coprocessor Type = EB29K
11781 I/O Base = 0x208
11782 Memory Base = 0xd0000
11783
11784 Data Memory Size = 2048KB
11785 Available I-RAM Range = 0x8000 to 0x1fffff
11786 Available D-RAM Range = 0x80002000 to 0x801fffff
11787
11788 PageSize = 0x400
11789 Register Stack Size = 0x800
11790 Memory Stack Size = 0x1800
11791
11792 CPU PRL = 0x3
11793 Am29027 Available = No
11794 Byte Write Available = Yes
11795
11796 # ~.
11797 @end example
11798
11799 Then exit the @code{cu} or @code{tip} program (done in the example by
11800 typing @code{~.} at the @code{EBMON} prompt). @code{EBMON} keeps
11801 running, ready for @value{GDBN} to take over.
11802
11803 For this example, we've assumed what is probably the most convenient
11804 way to make sure the same 29K program is on both the PC and the Unix
11805 system: a PC/NFS connection that establishes ``drive @file{G:}'' on the
11806 PC as a file system on the Unix host. If you do not have PC/NFS or
11807 something similar connecting the two systems, you must arrange some
11808 other way---perhaps floppy-disk transfer---of getting the 29K program
11809 from the Unix system to the PC; @value{GDBN} does @emph{not} download it over the
11810 serial line.
11811
11812 @node gdb-EB29K
11813 @subsubsection EB29K cross-debugging
11814
11815 Finally, @code{cd} to the directory containing an image of your 29K
11816 program on the Unix system, and start @value{GDBN}---specifying as argument the
11817 name of your 29K program:
11818
11819 @example
11820 cd /usr/joe/work29k
11821 @value{GDBP} myfoo
11822 @end example
11823
11824 @need 500
11825 Now you can use the @code{target} command:
11826
11827 @example
11828 target amd-eb /dev/ttya 9600 MYFOO
11829 @c FIXME: test above 'target amd-eb' as spelled, with caps! caps are meant to
11830 @c emphasize that this is the name as seen by DOS (since I think DOS is
11831 @c single-minded about case of letters). ---doc@cygnus.com, 25feb91
11832 @end example
11833
11834 @noindent
11835 In this example, we've assumed your program is in a file called
11836 @file{myfoo}. Note that the filename given as the last argument to
11837 @code{target amd-eb} should be the name of the program as it appears to DOS.
11838 In our example this is simply @code{MYFOO}, but in general it can include
11839 a DOS path, and depending on your transfer mechanism may not resemble
11840 the name on the Unix side.
11841
11842 At this point, you can set any breakpoints you wish; when you are ready
11843 to see your program run on the 29K board, use the @value{GDBN} command
11844 @code{run}.
11845
11846 To stop debugging the remote program, use the @value{GDBN} @code{detach}
11847 command.
11848
11849 To return control of the PC to its console, use @code{tip} or @code{cu}
11850 once again, after your @value{GDBN} session has concluded, to attach to
11851 @code{EBMON}. You can then type the command @code{q} to shut down
11852 @code{EBMON}, returning control to the DOS command-line interpreter.
11853 Type @kbd{CTTY con} to return command input to the main DOS console,
11854 and type @kbd{~.} to leave @code{tip} or @code{cu}.
11855
11856 @node Remote Log
11857 @subsubsection Remote log
11858 @cindex @file{eb.log}, a log file for EB29K
11859 @cindex log file for EB29K
11860
11861 The @code{target amd-eb} command creates a file @file{eb.log} in the
11862 current working directory, to help debug problems with the connection.
11863 @file{eb.log} records all the output from @code{EBMON}, including echoes
11864 of the commands sent to it. Running @samp{tail -f} on this file in
11865 another window often helps to understand trouble with @code{EBMON}, or
11866 unexpected events on the PC side of the connection.
11867
11868 @node ARM
11869 @subsection ARM
11870
11871 @table @code
11872
11873 @kindex target rdi
11874 @item target rdi @var{dev}
11875 ARM Angel monitor, via RDI library interface to ADP protocol. You may
11876 use this target to communicate with both boards running the Angel
11877 monitor, or with the EmbeddedICE JTAG debug device.
11878
11879 @kindex target rdp
11880 @item target rdp @var{dev}
11881 ARM Demon monitor.
11882
11883 @end table
11884
11885 @node H8/300
11886 @subsection Hitachi H8/300
11887
11888 @table @code
11889
11890 @kindex target hms@r{, with H8/300}
11891 @item target hms @var{dev}
11892 A Hitachi SH, H8/300, or H8/500 board, attached via serial line to your host.
11893 Use special commands @code{device} and @code{speed} to control the serial
11894 line and the communications speed used.
11895
11896 @kindex target e7000@r{, with H8/300}
11897 @item target e7000 @var{dev}
11898 E7000 emulator for Hitachi H8 and SH.
11899
11900 @kindex target sh3@r{, with H8/300}
11901 @kindex target sh3e@r{, with H8/300}
11902 @item target sh3 @var{dev}
11903 @itemx target sh3e @var{dev}
11904 Hitachi SH-3 and SH-3E target systems.
11905
11906 @end table
11907
11908 @cindex download to H8/300 or H8/500
11909 @cindex H8/300 or H8/500 download
11910 @cindex download to Hitachi SH
11911 @cindex Hitachi SH download
11912 When you select remote debugging to a Hitachi SH, H8/300, or H8/500
11913 board, the @code{load} command downloads your program to the Hitachi
11914 board and also opens it as the current executable target for
11915 @value{GDBN} on your host (like the @code{file} command).
11916
11917 @value{GDBN} needs to know these things to talk to your
11918 Hitachi SH, H8/300, or H8/500:
11919
11920 @enumerate
11921 @item
11922 that you want to use @samp{target hms}, the remote debugging interface
11923 for Hitachi microprocessors, or @samp{target e7000}, the in-circuit
11924 emulator for the Hitachi SH and the Hitachi 300H. (@samp{target hms} is
11925 the default when @value{GDBN} is configured specifically for the Hitachi SH,
11926 H8/300, or H8/500.)
11927
11928 @item
11929 what serial device connects your host to your Hitachi board (the first
11930 serial device available on your host is the default).
11931
11932 @item
11933 what speed to use over the serial device.
11934 @end enumerate
11935
11936 @menu
11937 * Hitachi Boards:: Connecting to Hitachi boards.
11938 * Hitachi ICE:: Using the E7000 In-Circuit Emulator.
11939 * Hitachi Special:: Special @value{GDBN} commands for Hitachi micros.
11940 @end menu
11941
11942 @node Hitachi Boards
11943 @subsubsection Connecting to Hitachi boards
11944
11945 @c only for Unix hosts
11946 @kindex device
11947 @cindex serial device, Hitachi micros
11948 Use the special @code{@value{GDBN}} command @samp{device @var{port}} if you
11949 need to explicitly set the serial device. The default @var{port} is the
11950 first available port on your host. This is only necessary on Unix
11951 hosts, where it is typically something like @file{/dev/ttya}.
11952
11953 @kindex speed
11954 @cindex serial line speed, Hitachi micros
11955 @code{@value{GDBN}} has another special command to set the communications
11956 speed: @samp{speed @var{bps}}. This command also is only used from Unix
11957 hosts; on DOS hosts, set the line speed as usual from outside @value{GDBN} with
11958 the DOS @code{mode} command (for instance,
11959 @w{@kbd{mode com2:9600,n,8,1,p}} for a 9600@dmn{bps} connection).
11960
11961 The @samp{device} and @samp{speed} commands are available only when you
11962 use a Unix host to debug your Hitachi microprocessor programs. If you
11963 use a DOS host,
11964 @value{GDBN} depends on an auxiliary terminate-and-stay-resident program
11965 called @code{asynctsr} to communicate with the development board
11966 through a PC serial port. You must also use the DOS @code{mode} command
11967 to set up the serial port on the DOS side.
11968
11969 The following sample session illustrates the steps needed to start a
11970 program under @value{GDBN} control on an H8/300. The example uses a
11971 sample H8/300 program called @file{t.x}. The procedure is the same for
11972 the Hitachi SH and the H8/500.
11973
11974 First hook up your development board. In this example, we use a
11975 board attached to serial port @code{COM2}; if you use a different serial
11976 port, substitute its name in the argument of the @code{mode} command.
11977 When you call @code{asynctsr}, the auxiliary comms program used by the
11978 debugger, you give it just the numeric part of the serial port's name;
11979 for example, @samp{asyncstr 2} below runs @code{asyncstr} on
11980 @code{COM2}.
11981
11982 @example
11983 C:\H8300\TEST> asynctsr 2
11984 C:\H8300\TEST> mode com2:9600,n,8,1,p
11985
11986 Resident portion of MODE loaded
11987
11988 COM2: 9600, n, 8, 1, p
11989
11990 @end example
11991
11992 @quotation
11993 @emph{Warning:} We have noticed a bug in PC-NFS that conflicts with
11994 @code{asynctsr}. If you also run PC-NFS on your DOS host, you may need to
11995 disable it, or even boot without it, to use @code{asynctsr} to control
11996 your development board.
11997 @end quotation
11998
11999 @kindex target hms@r{, and serial protocol}
12000 Now that serial communications are set up, and the development board is
12001 connected, you can start up @value{GDBN}. Call @code{@value{GDBP}} with
12002 the name of your program as the argument. @code{@value{GDBN}} prompts
12003 you, as usual, with the prompt @samp{(@value{GDBP})}. Use two special
12004 commands to begin your debugging session: @samp{target hms} to specify
12005 cross-debugging to the Hitachi board, and the @code{load} command to
12006 download your program to the board. @code{load} displays the names of
12007 the program's sections, and a @samp{*} for each 2K of data downloaded.
12008 (If you want to refresh @value{GDBN} data on symbols or on the
12009 executable file without downloading, use the @value{GDBN} commands
12010 @code{file} or @code{symbol-file}. These commands, and @code{load}
12011 itself, are described in @ref{Files,,Commands to specify files}.)
12012
12013 @smallexample
12014 (eg-C:\H8300\TEST) @value{GDBP} t.x
12015 @value{GDBN} is free software and you are welcome to distribute copies
12016 of it under certain conditions; type "show copying" to see
12017 the conditions.
12018 There is absolutely no warranty for @value{GDBN}; type "show warranty"
12019 for details.
12020 @value{GDBN} @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
12021 (@value{GDBP}) target hms
12022 Connected to remote H8/300 HMS system.
12023 (@value{GDBP}) load t.x
12024 .text : 0x8000 .. 0xabde ***********
12025 .data : 0xabde .. 0xad30 *
12026 .stack : 0xf000 .. 0xf014 *
12027 @end smallexample
12028
12029 At this point, you're ready to run or debug your program. From here on,
12030 you can use all the usual @value{GDBN} commands. The @code{break} command
12031 sets breakpoints; the @code{run} command starts your program;
12032 @code{print} or @code{x} display data; the @code{continue} command
12033 resumes execution after stopping at a breakpoint. You can use the
12034 @code{help} command at any time to find out more about @value{GDBN} commands.
12035
12036 Remember, however, that @emph{operating system} facilities aren't
12037 available on your development board; for example, if your program hangs,
12038 you can't send an interrupt---but you can press the @sc{reset} switch!
12039
12040 Use the @sc{reset} button on the development board
12041 @itemize @bullet
12042 @item
12043 to interrupt your program (don't use @kbd{ctl-C} on the DOS host---it has
12044 no way to pass an interrupt signal to the development board); and
12045
12046 @item
12047 to return to the @value{GDBN} command prompt after your program finishes
12048 normally. The communications protocol provides no other way for @value{GDBN}
12049 to detect program completion.
12050 @end itemize
12051
12052 In either case, @value{GDBN} sees the effect of a @sc{reset} on the
12053 development board as a ``normal exit'' of your program.
12054
12055 @node Hitachi ICE
12056 @subsubsection Using the E7000 in-circuit emulator
12057
12058 @kindex target e7000@r{, with Hitachi ICE}
12059 You can use the E7000 in-circuit emulator to develop code for either the
12060 Hitachi SH or the H8/300H. Use one of these forms of the @samp{target
12061 e7000} command to connect @value{GDBN} to your E7000:
12062
12063 @table @code
12064 @item target e7000 @var{port} @var{speed}
12065 Use this form if your E7000 is connected to a serial port. The
12066 @var{port} argument identifies what serial port to use (for example,
12067 @samp{com2}). The third argument is the line speed in bits per second
12068 (for example, @samp{9600}).
12069
12070 @item target e7000 @var{hostname}
12071 If your E7000 is installed as a host on a TCP/IP network, you can just
12072 specify its hostname; @value{GDBN} uses @code{telnet} to connect.
12073 @end table
12074
12075 @node Hitachi Special
12076 @subsubsection Special @value{GDBN} commands for Hitachi micros
12077
12078 Some @value{GDBN} commands are available only for the H8/300:
12079
12080 @table @code
12081
12082 @kindex set machine
12083 @kindex show machine
12084 @item set machine h8300
12085 @itemx set machine h8300h
12086 Condition @value{GDBN} for one of the two variants of the H8/300
12087 architecture with @samp{set machine}. You can use @samp{show machine}
12088 to check which variant is currently in effect.
12089
12090 @end table
12091
12092 @node H8/500
12093 @subsection H8/500
12094
12095 @table @code
12096
12097 @kindex set memory @var{mod}
12098 @cindex memory models, H8/500
12099 @item set memory @var{mod}
12100 @itemx show memory
12101 Specify which H8/500 memory model (@var{mod}) you are using with
12102 @samp{set memory}; check which memory model is in effect with @samp{show
12103 memory}. The accepted values for @var{mod} are @code{small},
12104 @code{big}, @code{medium}, and @code{compact}.
12105
12106 @end table
12107
12108 @node i960
12109 @subsection Intel i960
12110
12111 @table @code
12112
12113 @kindex target mon960
12114 @item target mon960 @var{dev}
12115 MON960 monitor for Intel i960.
12116
12117 @kindex target nindy
12118 @item target nindy @var{devicename}
12119 An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
12120 the name of the serial device to use for the connection, e.g.
12121 @file{/dev/ttya}.
12122
12123 @end table
12124
12125 @cindex Nindy
12126 @cindex i960
12127 @dfn{Nindy} is a ROM Monitor program for Intel 960 target systems. When
12128 @value{GDBN} is configured to control a remote Intel 960 using Nindy, you can
12129 tell @value{GDBN} how to connect to the 960 in several ways:
12130
12131 @itemize @bullet
12132 @item
12133 Through command line options specifying serial port, version of the
12134 Nindy protocol, and communications speed;
12135
12136 @item
12137 By responding to a prompt on startup;
12138
12139 @item
12140 By using the @code{target} command at any point during your @value{GDBN}
12141 session. @xref{Target Commands, ,Commands for managing targets}.
12142
12143 @end itemize
12144
12145 @cindex download to Nindy-960
12146 With the Nindy interface to an Intel 960 board, @code{load}
12147 downloads @var{filename} to the 960 as well as adding its symbols in
12148 @value{GDBN}.
12149
12150 @menu
12151 * Nindy Startup:: Startup with Nindy
12152 * Nindy Options:: Options for Nindy
12153 * Nindy Reset:: Nindy reset command
12154 @end menu
12155
12156 @node Nindy Startup
12157 @subsubsection Startup with Nindy
12158
12159 If you simply start @code{@value{GDBP}} without using any command-line
12160 options, you are prompted for what serial port to use, @emph{before} you
12161 reach the ordinary @value{GDBN} prompt:
12162
12163 @example
12164 Attach /dev/ttyNN -- specify NN, or "quit" to quit:
12165 @end example
12166
12167 @noindent
12168 Respond to the prompt with whatever suffix (after @samp{/dev/tty})
12169 identifies the serial port you want to use. You can, if you choose,
12170 simply start up with no Nindy connection by responding to the prompt
12171 with an empty line. If you do this and later wish to attach to Nindy,
12172 use @code{target} (@pxref{Target Commands, ,Commands for managing targets}).
12173
12174 @node Nindy Options
12175 @subsubsection Options for Nindy
12176
12177 These are the startup options for beginning your @value{GDBN} session with a
12178 Nindy-960 board attached:
12179
12180 @table @code
12181 @item -r @var{port}
12182 Specify the serial port name of a serial interface to be used to connect
12183 to the target system. This option is only available when @value{GDBN} is
12184 configured for the Intel 960 target architecture. You may specify
12185 @var{port} as any of: a full pathname (e.g. @samp{-r /dev/ttya}), a
12186 device name in @file{/dev} (e.g. @samp{-r ttya}), or simply the unique
12187 suffix for a specific @code{tty} (e.g. @samp{-r a}).
12188
12189 @item -O
12190 (An uppercase letter ``O'', not a zero.) Specify that @value{GDBN} should use
12191 the ``old'' Nindy monitor protocol to connect to the target system.
12192 This option is only available when @value{GDBN} is configured for the Intel 960
12193 target architecture.
12194
12195 @quotation
12196 @emph{Warning:} if you specify @samp{-O}, but are actually trying to
12197 connect to a target system that expects the newer protocol, the connection
12198 fails, appearing to be a speed mismatch. @value{GDBN} repeatedly
12199 attempts to reconnect at several different line speeds. You can abort
12200 this process with an interrupt.
12201 @end quotation
12202
12203 @item -brk
12204 Specify that @value{GDBN} should first send a @code{BREAK} signal to the target
12205 system, in an attempt to reset it, before connecting to a Nindy target.
12206
12207 @quotation
12208 @emph{Warning:} Many target systems do not have the hardware that this
12209 requires; it only works with a few boards.
12210 @end quotation
12211 @end table
12212
12213 The standard @samp{-b} option controls the line speed used on the serial
12214 port.
12215
12216 @c @group
12217 @node Nindy Reset
12218 @subsubsection Nindy reset command
12219
12220 @table @code
12221 @item reset
12222 @kindex reset
12223 For a Nindy target, this command sends a ``break'' to the remote target
12224 system; this is only useful if the target has been equipped with a
12225 circuit to perform a hard reset (or some other interesting action) when
12226 a break is detected.
12227 @end table
12228 @c @end group
12229
12230 @node M32R/D
12231 @subsection Mitsubishi M32R/D
12232
12233 @table @code
12234
12235 @kindex target m32r
12236 @item target m32r @var{dev}
12237 Mitsubishi M32R/D ROM monitor.
12238
12239 @end table
12240
12241 @node M68K
12242 @subsection M68k
12243
12244 The Motorola m68k configuration includes ColdFire support, and
12245 target command for the following ROM monitors.
12246
12247 @table @code
12248
12249 @kindex target abug
12250 @item target abug @var{dev}
12251 ABug ROM monitor for M68K.
12252
12253 @kindex target cpu32bug
12254 @item target cpu32bug @var{dev}
12255 CPU32BUG monitor, running on a CPU32 (M68K) board.
12256
12257 @kindex target dbug
12258 @item target dbug @var{dev}
12259 dBUG ROM monitor for Motorola ColdFire.
12260
12261 @kindex target est
12262 @item target est @var{dev}
12263 EST-300 ICE monitor, running on a CPU32 (M68K) board.
12264
12265 @kindex target rom68k
12266 @item target rom68k @var{dev}
12267 ROM 68K monitor, running on an M68K IDP board.
12268
12269 @end table
12270
12271 If @value{GDBN} is configured with @code{m68*-ericsson-*}, it will
12272 instead have only a single special target command:
12273
12274 @table @code
12275
12276 @kindex target es1800
12277 @item target es1800 @var{dev}
12278 ES-1800 emulator for M68K.
12279
12280 @end table
12281
12282 [context?]
12283
12284 @table @code
12285
12286 @kindex target rombug
12287 @item target rombug @var{dev}
12288 ROMBUG ROM monitor for OS/9000.
12289
12290 @end table
12291
12292 @node M88K
12293 @subsection M88K
12294
12295 @table @code
12296
12297 @kindex target bug
12298 @item target bug @var{dev}
12299 BUG monitor, running on a MVME187 (m88k) board.
12300
12301 @end table
12302
12303 @node MIPS Embedded
12304 @subsection MIPS Embedded
12305
12306 @cindex MIPS boards
12307 @value{GDBN} can use the MIPS remote debugging protocol to talk to a
12308 MIPS board attached to a serial line. This is available when
12309 you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
12310
12311 @need 1000
12312 Use these @value{GDBN} commands to specify the connection to your target board:
12313
12314 @table @code
12315 @item target mips @var{port}
12316 @kindex target mips @var{port}
12317 To run a program on the board, start up @code{@value{GDBP}} with the
12318 name of your program as the argument. To connect to the board, use the
12319 command @samp{target mips @var{port}}, where @var{port} is the name of
12320 the serial port connected to the board. If the program has not already
12321 been downloaded to the board, you may use the @code{load} command to
12322 download it. You can then use all the usual @value{GDBN} commands.
12323
12324 For example, this sequence connects to the target board through a serial
12325 port, and loads and runs a program called @var{prog} through the
12326 debugger:
12327
12328 @example
12329 host$ @value{GDBP} @var{prog}
12330 @value{GDBN} is free software and @dots{}
12331 (@value{GDBP}) target mips /dev/ttyb
12332 (@value{GDBP}) load @var{prog}
12333 (@value{GDBP}) run
12334 @end example
12335
12336 @item target mips @var{hostname}:@var{portnumber}
12337 On some @value{GDBN} host configurations, you can specify a TCP
12338 connection (for instance, to a serial line managed by a terminal
12339 concentrator) instead of a serial port, using the syntax
12340 @samp{@var{hostname}:@var{portnumber}}.
12341
12342 @item target pmon @var{port}
12343 @kindex target pmon @var{port}
12344 PMON ROM monitor.
12345
12346 @item target ddb @var{port}
12347 @kindex target ddb @var{port}
12348 NEC's DDB variant of PMON for Vr4300.
12349
12350 @item target lsi @var{port}
12351 @kindex target lsi @var{port}
12352 LSI variant of PMON.
12353
12354 @kindex target r3900
12355 @item target r3900 @var{dev}
12356 Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
12357
12358 @kindex target array
12359 @item target array @var{dev}
12360 Array Tech LSI33K RAID controller board.
12361
12362 @end table
12363
12364
12365 @noindent
12366 @value{GDBN} also supports these special commands for MIPS targets:
12367
12368 @table @code
12369 @item set processor @var{args}
12370 @itemx show processor
12371 @kindex set processor @var{args}
12372 @kindex show processor
12373 Use the @code{set processor} command to set the type of MIPS
12374 processor when you want to access processor-type-specific registers.
12375 For example, @code{set processor @var{r3041}} tells @value{GDBN}
12376 to use the CPU registers appropriate for the 3041 chip.
12377 Use the @code{show processor} command to see what MIPS processor @value{GDBN}
12378 is using. Use the @code{info reg} command to see what registers
12379 @value{GDBN} is using.
12380
12381 @item set mipsfpu double
12382 @itemx set mipsfpu single
12383 @itemx set mipsfpu none
12384 @itemx show mipsfpu
12385 @kindex set mipsfpu
12386 @kindex show mipsfpu
12387 @cindex MIPS remote floating point
12388 @cindex floating point, MIPS remote
12389 If your target board does not support the MIPS floating point
12390 coprocessor, you should use the command @samp{set mipsfpu none} (if you
12391 need this, you may wish to put the command in your @value{GDBN} init
12392 file). This tells @value{GDBN} how to find the return value of
12393 functions which return floating point values. It also allows
12394 @value{GDBN} to avoid saving the floating point registers when calling
12395 functions on the board. If you are using a floating point coprocessor
12396 with only single precision floating point support, as on the @sc{r4650}
12397 processor, use the command @samp{set mipsfpu single}. The default
12398 double precision floating point coprocessor may be selected using
12399 @samp{set mipsfpu double}.
12400
12401 In previous versions the only choices were double precision or no
12402 floating point, so @samp{set mipsfpu on} will select double precision
12403 and @samp{set mipsfpu off} will select no floating point.
12404
12405 As usual, you can inquire about the @code{mipsfpu} variable with
12406 @samp{show mipsfpu}.
12407
12408 @item set remotedebug @var{n}
12409 @itemx show remotedebug
12410 @kindex set remotedebug@r{, MIPS protocol}
12411 @kindex show remotedebug@r{, MIPS protocol}
12412 @cindex @code{remotedebug}, MIPS protocol
12413 @cindex MIPS @code{remotedebug} protocol
12414 @c FIXME! For this to be useful, you must know something about the MIPS
12415 @c FIXME...protocol. Where is it described?
12416 You can see some debugging information about communications with the board
12417 by setting the @code{remotedebug} variable. If you set it to @code{1} using
12418 @samp{set remotedebug 1}, every packet is displayed. If you set it
12419 to @code{2}, every character is displayed. You can check the current value
12420 at any time with the command @samp{show remotedebug}.
12421
12422 @item set timeout @var{seconds}
12423 @itemx set retransmit-timeout @var{seconds}
12424 @itemx show timeout
12425 @itemx show retransmit-timeout
12426 @cindex @code{timeout}, MIPS protocol
12427 @cindex @code{retransmit-timeout}, MIPS protocol
12428 @kindex set timeout
12429 @kindex show timeout
12430 @kindex set retransmit-timeout
12431 @kindex show retransmit-timeout
12432 You can control the timeout used while waiting for a packet, in the MIPS
12433 remote protocol, with the @code{set timeout @var{seconds}} command. The
12434 default is 5 seconds. Similarly, you can control the timeout used while
12435 waiting for an acknowledgement of a packet with the @code{set
12436 retransmit-timeout @var{seconds}} command. The default is 3 seconds.
12437 You can inspect both values with @code{show timeout} and @code{show
12438 retransmit-timeout}. (These commands are @emph{only} available when
12439 @value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
12440
12441 The timeout set by @code{set timeout} does not apply when @value{GDBN}
12442 is waiting for your program to stop. In that case, @value{GDBN} waits
12443 forever because it has no way of knowing how long the program is going
12444 to run before stopping.
12445 @end table
12446
12447 @node PowerPC
12448 @subsection PowerPC
12449
12450 @table @code
12451
12452 @kindex target dink32
12453 @item target dink32 @var{dev}
12454 DINK32 ROM monitor.
12455
12456 @kindex target ppcbug
12457 @item target ppcbug @var{dev}
12458 @kindex target ppcbug1
12459 @item target ppcbug1 @var{dev}
12460 PPCBUG ROM monitor for PowerPC.
12461
12462 @kindex target sds
12463 @item target sds @var{dev}
12464 SDS monitor, running on a PowerPC board (such as Motorola's ADS).
12465
12466 @end table
12467
12468 @node PA
12469 @subsection HP PA Embedded
12470
12471 @table @code
12472
12473 @kindex target op50n
12474 @item target op50n @var{dev}
12475 OP50N monitor, running on an OKI HPPA board.
12476
12477 @kindex target w89k
12478 @item target w89k @var{dev}
12479 W89K monitor, running on a Winbond HPPA board.
12480
12481 @end table
12482
12483 @node SH
12484 @subsection Hitachi SH
12485
12486 @table @code
12487
12488 @kindex target hms@r{, with Hitachi SH}
12489 @item target hms @var{dev}
12490 A Hitachi SH board attached via serial line to your host. Use special
12491 commands @code{device} and @code{speed} to control the serial line and
12492 the communications speed used.
12493
12494 @kindex target e7000@r{, with Hitachi SH}
12495 @item target e7000 @var{dev}
12496 E7000 emulator for Hitachi SH.
12497
12498 @kindex target sh3@r{, with SH}
12499 @kindex target sh3e@r{, with SH}
12500 @item target sh3 @var{dev}
12501 @item target sh3e @var{dev}
12502 Hitachi SH-3 and SH-3E target systems.
12503
12504 @end table
12505
12506 @node Sparclet
12507 @subsection Tsqware Sparclet
12508
12509 @cindex Sparclet
12510
12511 @value{GDBN} enables developers to debug tasks running on
12512 Sparclet targets from a Unix host.
12513 @value{GDBN} uses code that runs on
12514 both the Unix host and on the Sparclet target. The program
12515 @code{@value{GDBP}} is installed and executed on the Unix host.
12516
12517 @table @code
12518 @item remotetimeout @var{args}
12519 @kindex remotetimeout
12520 @value{GDBN} supports the option @code{remotetimeout}.
12521 This option is set by the user, and @var{args} represents the number of
12522 seconds @value{GDBN} waits for responses.
12523 @end table
12524
12525 @cindex compiling, on Sparclet
12526 When compiling for debugging, include the options @samp{-g} to get debug
12527 information and @samp{-Ttext} to relocate the program to where you wish to
12528 load it on the target. You may also want to add the options @samp{-n} or
12529 @samp{-N} in order to reduce the size of the sections. Example:
12530
12531 @example
12532 sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
12533 @end example
12534
12535 You can use @code{objdump} to verify that the addresses are what you intended:
12536
12537 @example
12538 sparclet-aout-objdump --headers --syms prog
12539 @end example
12540
12541 @cindex running, on Sparclet
12542 Once you have set
12543 your Unix execution search path to find @value{GDBN}, you are ready to
12544 run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
12545 (or @code{sparclet-aout-gdb}, depending on your installation).
12546
12547 @value{GDBN} comes up showing the prompt:
12548
12549 @example
12550 (gdbslet)
12551 @end example
12552
12553 @menu
12554 * Sparclet File:: Setting the file to debug
12555 * Sparclet Connection:: Connecting to Sparclet
12556 * Sparclet Download:: Sparclet download
12557 * Sparclet Execution:: Running and debugging
12558 @end menu
12559
12560 @node Sparclet File
12561 @subsubsection Setting file to debug
12562
12563 The @value{GDBN} command @code{file} lets you choose with program to debug.
12564
12565 @example
12566 (gdbslet) file prog
12567 @end example
12568
12569 @need 1000
12570 @value{GDBN} then attempts to read the symbol table of @file{prog}.
12571 @value{GDBN} locates
12572 the file by searching the directories listed in the command search
12573 path.
12574 If the file was compiled with debug information (option "-g"), source
12575 files will be searched as well.
12576 @value{GDBN} locates
12577 the source files by searching the directories listed in the directory search
12578 path (@pxref{Environment, ,Your program's environment}).
12579 If it fails
12580 to find a file, it displays a message such as:
12581
12582 @example
12583 prog: No such file or directory.
12584 @end example
12585
12586 When this happens, add the appropriate directories to the search paths with
12587 the @value{GDBN} commands @code{path} and @code{dir}, and execute the
12588 @code{target} command again.
12589
12590 @node Sparclet Connection
12591 @subsubsection Connecting to Sparclet
12592
12593 The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
12594 To connect to a target on serial port ``@code{ttya}'', type:
12595
12596 @example
12597 (gdbslet) target sparclet /dev/ttya
12598 Remote target sparclet connected to /dev/ttya
12599 main () at ../prog.c:3
12600 @end example
12601
12602 @need 750
12603 @value{GDBN} displays messages like these:
12604
12605 @example
12606 Connected to ttya.
12607 @end example
12608
12609 @node Sparclet Download
12610 @subsubsection Sparclet download
12611
12612 @cindex download to Sparclet
12613 Once connected to the Sparclet target,
12614 you can use the @value{GDBN}
12615 @code{load} command to download the file from the host to the target.
12616 The file name and load offset should be given as arguments to the @code{load}
12617 command.
12618 Since the file format is aout, the program must be loaded to the starting
12619 address. You can use @code{objdump} to find out what this value is. The load
12620 offset is an offset which is added to the VMA (virtual memory address)
12621 of each of the file's sections.
12622 For instance, if the program
12623 @file{prog} was linked to text address 0x1201000, with data at 0x12010160
12624 and bss at 0x12010170, in @value{GDBN}, type:
12625
12626 @example
12627 (gdbslet) load prog 0x12010000
12628 Loading section .text, size 0xdb0 vma 0x12010000
12629 @end example
12630
12631 If the code is loaded at a different address then what the program was linked
12632 to, you may need to use the @code{section} and @code{add-symbol-file} commands
12633 to tell @value{GDBN} where to map the symbol table.
12634
12635 @node Sparclet Execution
12636 @subsubsection Running and debugging
12637
12638 @cindex running and debugging Sparclet programs
12639 You can now begin debugging the task using @value{GDBN}'s execution control
12640 commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
12641 manual for the list of commands.
12642
12643 @example
12644 (gdbslet) b main
12645 Breakpoint 1 at 0x12010000: file prog.c, line 3.
12646 (gdbslet) run
12647 Starting program: prog
12648 Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
12649 3 char *symarg = 0;
12650 (gdbslet) step
12651 4 char *execarg = "hello!";
12652 (gdbslet)
12653 @end example
12654
12655 @node Sparclite
12656 @subsection Fujitsu Sparclite
12657
12658 @table @code
12659
12660 @kindex target sparclite
12661 @item target sparclite @var{dev}
12662 Fujitsu sparclite boards, used only for the purpose of loading.
12663 You must use an additional command to debug the program.
12664 For example: target remote @var{dev} using @value{GDBN} standard
12665 remote protocol.
12666
12667 @end table
12668
12669 @node ST2000
12670 @subsection Tandem ST2000
12671
12672 @value{GDBN} may be used with a Tandem ST2000 phone switch, running Tandem's
12673 STDBUG protocol.
12674
12675 To connect your ST2000 to the host system, see the manufacturer's
12676 manual. Once the ST2000 is physically attached, you can run:
12677
12678 @example
12679 target st2000 @var{dev} @var{speed}
12680 @end example
12681
12682 @noindent
12683 to establish it as your debugging environment. @var{dev} is normally
12684 the name of a serial device, such as @file{/dev/ttya}, connected to the
12685 ST2000 via a serial line. You can instead specify @var{dev} as a TCP
12686 connection (for example, to a serial line attached via a terminal
12687 concentrator) using the syntax @code{@var{hostname}:@var{portnumber}}.
12688
12689 The @code{load} and @code{attach} commands are @emph{not} defined for
12690 this target; you must load your program into the ST2000 as you normally
12691 would for standalone operation. @value{GDBN} reads debugging information
12692 (such as symbols) from a separate, debugging version of the program
12693 available on your host computer.
12694 @c FIXME!! This is terribly vague; what little content is here is
12695 @c basically hearsay.
12696
12697 @cindex ST2000 auxiliary commands
12698 These auxiliary @value{GDBN} commands are available to help you with the ST2000
12699 environment:
12700
12701 @table @code
12702 @item st2000 @var{command}
12703 @kindex st2000 @var{cmd}
12704 @cindex STDBUG commands (ST2000)
12705 @cindex commands to STDBUG (ST2000)
12706 Send a @var{command} to the STDBUG monitor. See the manufacturer's
12707 manual for available commands.
12708
12709 @item connect
12710 @cindex connect (to STDBUG)
12711 Connect the controlling terminal to the STDBUG command monitor. When
12712 you are done interacting with STDBUG, typing either of two character
12713 sequences gets you back to the @value{GDBN} command prompt:
12714 @kbd{@key{RET}~.} (Return, followed by tilde and period) or
12715 @kbd{@key{RET}~@key{C-d}} (Return, followed by tilde and control-D).
12716 @end table
12717
12718 @node Z8000
12719 @subsection Zilog Z8000
12720
12721 @cindex Z8000
12722 @cindex simulator, Z8000
12723 @cindex Zilog Z8000 simulator
12724
12725 When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
12726 a Z8000 simulator.
12727
12728 For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
12729 unsegmented variant of the Z8000 architecture) or the Z8001 (the
12730 segmented variant). The simulator recognizes which architecture is
12731 appropriate by inspecting the object code.
12732
12733 @table @code
12734 @item target sim @var{args}
12735 @kindex sim
12736 @kindex target sim@r{, with Z8000}
12737 Debug programs on a simulated CPU. If the simulator supports setup
12738 options, specify them via @var{args}.
12739 @end table
12740
12741 @noindent
12742 After specifying this target, you can debug programs for the simulated
12743 CPU in the same style as programs for your host computer; use the
12744 @code{file} command to load a new program image, the @code{run} command
12745 to run your program, and so on.
12746
12747 As well as making available all the usual machine registers
12748 (@pxref{Registers, ,Registers}), the Z8000 simulator provides three
12749 additional items of information as specially named registers:
12750
12751 @table @code
12752
12753 @item cycles
12754 Counts clock-ticks in the simulator.
12755
12756 @item insts
12757 Counts instructions run in the simulator.
12758
12759 @item time
12760 Execution time in 60ths of a second.
12761
12762 @end table
12763
12764 You can refer to these values in @value{GDBN} expressions with the usual
12765 conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
12766 conditional breakpoint that suspends only after at least 5000
12767 simulated clock ticks.
12768
12769 @node Architectures
12770 @section Architectures
12771
12772 This section describes characteristics of architectures that affect
12773 all uses of @value{GDBN} with the architecture, both native and cross.
12774
12775 @menu
12776 * A29K::
12777 * Alpha::
12778 * MIPS::
12779 @end menu
12780
12781 @node A29K
12782 @subsection A29K
12783
12784 @table @code
12785
12786 @kindex set rstack_high_address
12787 @cindex AMD 29K register stack
12788 @cindex register stack, AMD29K
12789 @item set rstack_high_address @var{address}
12790 On AMD 29000 family processors, registers are saved in a separate
12791 @dfn{register stack}. There is no way for @value{GDBN} to determine the
12792 extent of this stack. Normally, @value{GDBN} just assumes that the
12793 stack is ``large enough''. This may result in @value{GDBN} referencing
12794 memory locations that do not exist. If necessary, you can get around
12795 this problem by specifying the ending address of the register stack with
12796 the @code{set rstack_high_address} command. The argument should be an
12797 address, which you probably want to precede with @samp{0x} to specify in
12798 hexadecimal.
12799
12800 @kindex show rstack_high_address
12801 @item show rstack_high_address
12802 Display the current limit of the register stack, on AMD 29000 family
12803 processors.
12804
12805 @end table
12806
12807 @node Alpha
12808 @subsection Alpha
12809
12810 See the following section.
12811
12812 @node MIPS
12813 @subsection MIPS
12814
12815 @cindex stack on Alpha
12816 @cindex stack on MIPS
12817 @cindex Alpha stack
12818 @cindex MIPS stack
12819 Alpha- and MIPS-based computers use an unusual stack frame, which
12820 sometimes requires @value{GDBN} to search backward in the object code to
12821 find the beginning of a function.
12822
12823 @cindex response time, MIPS debugging
12824 To improve response time (especially for embedded applications, where
12825 @value{GDBN} may be restricted to a slow serial line for this search)
12826 you may want to limit the size of this search, using one of these
12827 commands:
12828
12829 @table @code
12830 @cindex @code{heuristic-fence-post} (Alpha, MIPS)
12831 @item set heuristic-fence-post @var{limit}
12832 Restrict @value{GDBN} to examining at most @var{limit} bytes in its
12833 search for the beginning of a function. A value of @var{0} (the
12834 default) means there is no limit. However, except for @var{0}, the
12835 larger the limit the more bytes @code{heuristic-fence-post} must search
12836 and therefore the longer it takes to run.
12837
12838 @item show heuristic-fence-post
12839 Display the current limit.
12840 @end table
12841
12842 @noindent
12843 These commands are available @emph{only} when @value{GDBN} is configured
12844 for debugging programs on Alpha or MIPS processors.
12845
12846
12847 @node Controlling GDB
12848 @chapter Controlling @value{GDBN}
12849
12850 You can alter the way @value{GDBN} interacts with you by using the
12851 @code{set} command. For commands controlling how @value{GDBN} displays
12852 data, see @ref{Print Settings, ,Print settings}. Other settings are
12853 described here.
12854
12855 @menu
12856 * Prompt:: Prompt
12857 * Editing:: Command editing
12858 * History:: Command history
12859 * Screen Size:: Screen size
12860 * Numbers:: Numbers
12861 * Messages/Warnings:: Optional warnings and messages
12862 * Debugging Output:: Optional messages about internal happenings
12863 @end menu
12864
12865 @node Prompt
12866 @section Prompt
12867
12868 @cindex prompt
12869
12870 @value{GDBN} indicates its readiness to read a command by printing a string
12871 called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
12872 can change the prompt string with the @code{set prompt} command. For
12873 instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
12874 the prompt in one of the @value{GDBN} sessions so that you can always tell
12875 which one you are talking to.
12876
12877 @emph{Note:} @code{set prompt} does not add a space for you after the
12878 prompt you set. This allows you to set a prompt which ends in a space
12879 or a prompt that does not.
12880
12881 @table @code
12882 @kindex set prompt
12883 @item set prompt @var{newprompt}
12884 Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
12885
12886 @kindex show prompt
12887 @item show prompt
12888 Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
12889 @end table
12890
12891 @node Editing
12892 @section Command editing
12893 @cindex readline
12894 @cindex command line editing
12895
12896 @value{GDBN} reads its input commands via the @dfn{readline} interface. This
12897 @sc{gnu} library provides consistent behavior for programs which provide a
12898 command line interface to the user. Advantages are @sc{gnu} Emacs-style
12899 or @dfn{vi}-style inline editing of commands, @code{csh}-like history
12900 substitution, and a storage and recall of command history across
12901 debugging sessions.
12902
12903 You may control the behavior of command line editing in @value{GDBN} with the
12904 command @code{set}.
12905
12906 @table @code
12907 @kindex set editing
12908 @cindex editing
12909 @item set editing
12910 @itemx set editing on
12911 Enable command line editing (enabled by default).
12912
12913 @item set editing off
12914 Disable command line editing.
12915
12916 @kindex show editing
12917 @item show editing
12918 Show whether command line editing is enabled.
12919 @end table
12920
12921 @node History
12922 @section Command history
12923
12924 @value{GDBN} can keep track of the commands you type during your
12925 debugging sessions, so that you can be certain of precisely what
12926 happened. Use these commands to manage the @value{GDBN} command
12927 history facility.
12928
12929 @table @code
12930 @cindex history substitution
12931 @cindex history file
12932 @kindex set history filename
12933 @kindex GDBHISTFILE
12934 @item set history filename @var{fname}
12935 Set the name of the @value{GDBN} command history file to @var{fname}.
12936 This is the file where @value{GDBN} reads an initial command history
12937 list, and where it writes the command history from this session when it
12938 exits. You can access this list through history expansion or through
12939 the history command editing characters listed below. This file defaults
12940 to the value of the environment variable @code{GDBHISTFILE}, or to
12941 @file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
12942 is not set.
12943
12944 @cindex history save
12945 @kindex set history save
12946 @item set history save
12947 @itemx set history save on
12948 Record command history in a file, whose name may be specified with the
12949 @code{set history filename} command. By default, this option is disabled.
12950
12951 @item set history save off
12952 Stop recording command history in a file.
12953
12954 @cindex history size
12955 @kindex set history size
12956 @item set history size @var{size}
12957 Set the number of commands which @value{GDBN} keeps in its history list.
12958 This defaults to the value of the environment variable
12959 @code{HISTSIZE}, or to 256 if this variable is not set.
12960 @end table
12961
12962 @cindex history expansion
12963 History expansion assigns special meaning to the character @kbd{!}.
12964 @ifset have-readline-appendices
12965 @xref{Event Designators}.
12966 @end ifset
12967
12968 Since @kbd{!} is also the logical not operator in C, history expansion
12969 is off by default. If you decide to enable history expansion with the
12970 @code{set history expansion on} command, you may sometimes need to
12971 follow @kbd{!} (when it is used as logical not, in an expression) with
12972 a space or a tab to prevent it from being expanded. The readline
12973 history facilities do not attempt substitution on the strings
12974 @kbd{!=} and @kbd{!(}, even when history expansion is enabled.
12975
12976 The commands to control history expansion are:
12977
12978 @table @code
12979 @kindex set history expansion
12980 @item set history expansion on
12981 @itemx set history expansion
12982 Enable history expansion. History expansion is off by default.
12983
12984 @item set history expansion off
12985 Disable history expansion.
12986
12987 The readline code comes with more complete documentation of
12988 editing and history expansion features. Users unfamiliar with @sc{gnu} Emacs
12989 or @code{vi} may wish to read it.
12990 @ifset have-readline-appendices
12991 @xref{Command Line Editing}.
12992 @end ifset
12993
12994 @c @group
12995 @kindex show history
12996 @item show history
12997 @itemx show history filename
12998 @itemx show history save
12999 @itemx show history size
13000 @itemx show history expansion
13001 These commands display the state of the @value{GDBN} history parameters.
13002 @code{show history} by itself displays all four states.
13003 @c @end group
13004 @end table
13005
13006 @table @code
13007 @kindex shows
13008 @item show commands
13009 Display the last ten commands in the command history.
13010
13011 @item show commands @var{n}
13012 Print ten commands centered on command number @var{n}.
13013
13014 @item show commands +
13015 Print ten commands just after the commands last printed.
13016 @end table
13017
13018 @node Screen Size
13019 @section Screen size
13020 @cindex size of screen
13021 @cindex pauses in output
13022
13023 Certain commands to @value{GDBN} may produce large amounts of
13024 information output to the screen. To help you read all of it,
13025 @value{GDBN} pauses and asks you for input at the end of each page of
13026 output. Type @key{RET} when you want to continue the output, or @kbd{q}
13027 to discard the remaining output. Also, the screen width setting
13028 determines when to wrap lines of output. Depending on what is being
13029 printed, @value{GDBN} tries to break the line at a readable place,
13030 rather than simply letting it overflow onto the following line.
13031
13032 Normally @value{GDBN} knows the size of the screen from the terminal
13033 driver software. For example, on Unix @value{GDBN} uses the termcap data base
13034 together with the value of the @code{TERM} environment variable and the
13035 @code{stty rows} and @code{stty cols} settings. If this is not correct,
13036 you can override it with the @code{set height} and @code{set
13037 width} commands:
13038
13039 @table @code
13040 @kindex set height
13041 @kindex set width
13042 @kindex show width
13043 @kindex show height
13044 @item set height @var{lpp}
13045 @itemx show height
13046 @itemx set width @var{cpl}
13047 @itemx show width
13048 These @code{set} commands specify a screen height of @var{lpp} lines and
13049 a screen width of @var{cpl} characters. The associated @code{show}
13050 commands display the current settings.
13051
13052 If you specify a height of zero lines, @value{GDBN} does not pause during
13053 output no matter how long the output is. This is useful if output is to a
13054 file or to an editor buffer.
13055
13056 Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
13057 from wrapping its output.
13058 @end table
13059
13060 @node Numbers
13061 @section Numbers
13062 @cindex number representation
13063 @cindex entering numbers
13064
13065 You can always enter numbers in octal, decimal, or hexadecimal in
13066 @value{GDBN} by the usual conventions: octal numbers begin with
13067 @samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
13068 begin with @samp{0x}. Numbers that begin with none of these are, by
13069 default, entered in base 10; likewise, the default display for
13070 numbers---when no particular format is specified---is base 10. You can
13071 change the default base for both input and output with the @code{set
13072 radix} command.
13073
13074 @table @code
13075 @kindex set input-radix
13076 @item set input-radix @var{base}
13077 Set the default base for numeric input. Supported choices
13078 for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
13079 specified either unambiguously or using the current default radix; for
13080 example, any of
13081
13082 @smallexample
13083 set radix 012
13084 set radix 10.
13085 set radix 0xa
13086 @end smallexample
13087
13088 @noindent
13089 sets the base to decimal. On the other hand, @samp{set radix 10}
13090 leaves the radix unchanged no matter what it was.
13091
13092 @kindex set output-radix
13093 @item set output-radix @var{base}
13094 Set the default base for numeric display. Supported choices
13095 for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
13096 specified either unambiguously or using the current default radix.
13097
13098 @kindex show input-radix
13099 @item show input-radix
13100 Display the current default base for numeric input.
13101
13102 @kindex show output-radix
13103 @item show output-radix
13104 Display the current default base for numeric display.
13105 @end table
13106
13107 @node Messages/Warnings
13108 @section Optional warnings and messages
13109
13110 By default, @value{GDBN} is silent about its inner workings. If you are
13111 running on a slow machine, you may want to use the @code{set verbose}
13112 command. This makes @value{GDBN} tell you when it does a lengthy
13113 internal operation, so you will not think it has crashed.
13114
13115 Currently, the messages controlled by @code{set verbose} are those
13116 which announce that the symbol table for a source file is being read;
13117 see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
13118
13119 @table @code
13120 @kindex set verbose
13121 @item set verbose on
13122 Enables @value{GDBN} output of certain informational messages.
13123
13124 @item set verbose off
13125 Disables @value{GDBN} output of certain informational messages.
13126
13127 @kindex show verbose
13128 @item show verbose
13129 Displays whether @code{set verbose} is on or off.
13130 @end table
13131
13132 By default, if @value{GDBN} encounters bugs in the symbol table of an
13133 object file, it is silent; but if you are debugging a compiler, you may
13134 find this information useful (@pxref{Symbol Errors, ,Errors reading
13135 symbol files}).
13136
13137 @table @code
13138
13139 @kindex set complaints
13140 @item set complaints @var{limit}
13141 Permits @value{GDBN} to output @var{limit} complaints about each type of
13142 unusual symbols before becoming silent about the problem. Set
13143 @var{limit} to zero to suppress all complaints; set it to a large number
13144 to prevent complaints from being suppressed.
13145
13146 @kindex show complaints
13147 @item show complaints
13148 Displays how many symbol complaints @value{GDBN} is permitted to produce.
13149
13150 @end table
13151
13152 By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
13153 lot of stupid questions to confirm certain commands. For example, if
13154 you try to run a program which is already running:
13155
13156 @example
13157 (@value{GDBP}) run
13158 The program being debugged has been started already.
13159 Start it from the beginning? (y or n)
13160 @end example
13161
13162 If you are willing to unflinchingly face the consequences of your own
13163 commands, you can disable this ``feature'':
13164
13165 @table @code
13166
13167 @kindex set confirm
13168 @cindex flinching
13169 @cindex confirmation
13170 @cindex stupid questions
13171 @item set confirm off
13172 Disables confirmation requests.
13173
13174 @item set confirm on
13175 Enables confirmation requests (the default).
13176
13177 @kindex show confirm
13178 @item show confirm
13179 Displays state of confirmation requests.
13180
13181 @end table
13182
13183 @node Debugging Output
13184 @section Optional messages about internal happenings
13185 @table @code
13186 @kindex set debug arch
13187 @item set debug arch
13188 Turns on or off display of gdbarch debugging info. The default is off
13189 @kindex show debug arch
13190 @item show debug arch
13191 Displays the current state of displaying gdbarch debugging info.
13192 @kindex set debug event
13193 @item set debug event
13194 Turns on or off display of @value{GDBN} event debugging info. The
13195 default is off.
13196 @kindex show debug event
13197 @item show debug event
13198 Displays the current state of displaying @value{GDBN} event debugging
13199 info.
13200 @kindex set debug expression
13201 @item set debug expression
13202 Turns on or off display of @value{GDBN} expression debugging info. The
13203 default is off.
13204 @kindex show debug expression
13205 @item show debug expression
13206 Displays the current state of displaying @value{GDBN} expression
13207 debugging info.
13208 @kindex set debug overload
13209 @item set debug overload
13210 Turns on or off display of @value{GDBN} C@t{++} overload debugging
13211 info. This includes info such as ranking of functions, etc. The default
13212 is off.
13213 @kindex show debug overload
13214 @item show debug overload
13215 Displays the current state of displaying @value{GDBN} C@t{++} overload
13216 debugging info.
13217 @kindex set debug remote
13218 @cindex packets, reporting on stdout
13219 @cindex serial connections, debugging
13220 @item set debug remote
13221 Turns on or off display of reports on all packets sent back and forth across
13222 the serial line to the remote machine. The info is printed on the
13223 @value{GDBN} standard output stream. The default is off.
13224 @kindex show debug remote
13225 @item show debug remote
13226 Displays the state of display of remote packets.
13227 @kindex set debug serial
13228 @item set debug serial
13229 Turns on or off display of @value{GDBN} serial debugging info. The
13230 default is off.
13231 @kindex show debug serial
13232 @item show debug serial
13233 Displays the current state of displaying @value{GDBN} serial debugging
13234 info.
13235 @kindex set debug target
13236 @item set debug target
13237 Turns on or off display of @value{GDBN} target debugging info. This info
13238 includes what is going on at the target level of GDB, as it happens. The
13239 default is off.
13240 @kindex show debug target
13241 @item show debug target
13242 Displays the current state of displaying @value{GDBN} target debugging
13243 info.
13244 @kindex set debug varobj
13245 @item set debug varobj
13246 Turns on or off display of @value{GDBN} variable object debugging
13247 info. The default is off.
13248 @kindex show debug varobj
13249 @item show debug varobj
13250 Displays the current state of displaying @value{GDBN} variable object
13251 debugging info.
13252 @end table
13253
13254 @node Sequences
13255 @chapter Canned Sequences of Commands
13256
13257 Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
13258 command lists}), @value{GDBN} provides two ways to store sequences of
13259 commands for execution as a unit: user-defined commands and command
13260 files.
13261
13262 @menu
13263 * Define:: User-defined commands
13264 * Hooks:: User-defined command hooks
13265 * Command Files:: Command files
13266 * Output:: Commands for controlled output
13267 @end menu
13268
13269 @node Define
13270 @section User-defined commands
13271
13272 @cindex user-defined command
13273 A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
13274 which you assign a new name as a command. This is done with the
13275 @code{define} command. User commands may accept up to 10 arguments
13276 separated by whitespace. Arguments are accessed within the user command
13277 via @var{$arg0@dots{}$arg9}. A trivial example:
13278
13279 @smallexample
13280 define adder
13281 print $arg0 + $arg1 + $arg2
13282 @end smallexample
13283
13284 @noindent
13285 To execute the command use:
13286
13287 @smallexample
13288 adder 1 2 3
13289 @end smallexample
13290
13291 @noindent
13292 This defines the command @code{adder}, which prints the sum of
13293 its three arguments. Note the arguments are text substitutions, so they may
13294 reference variables, use complex expressions, or even perform inferior
13295 functions calls.
13296
13297 @table @code
13298
13299 @kindex define
13300 @item define @var{commandname}
13301 Define a command named @var{commandname}. If there is already a command
13302 by that name, you are asked to confirm that you want to redefine it.
13303
13304 The definition of the command is made up of other @value{GDBN} command lines,
13305 which are given following the @code{define} command. The end of these
13306 commands is marked by a line containing @code{end}.
13307
13308 @kindex if
13309 @kindex else
13310 @item if
13311 Takes a single argument, which is an expression to evaluate.
13312 It is followed by a series of commands that are executed
13313 only if the expression is true (nonzero).
13314 There can then optionally be a line @code{else}, followed
13315 by a series of commands that are only executed if the expression
13316 was false. The end of the list is marked by a line containing @code{end}.
13317
13318 @kindex while
13319 @item while
13320 The syntax is similar to @code{if}: the command takes a single argument,
13321 which is an expression to evaluate, and must be followed by the commands to
13322 execute, one per line, terminated by an @code{end}.
13323 The commands are executed repeatedly as long as the expression
13324 evaluates to true.
13325
13326 @kindex document
13327 @item document @var{commandname}
13328 Document the user-defined command @var{commandname}, so that it can be
13329 accessed by @code{help}. The command @var{commandname} must already be
13330 defined. This command reads lines of documentation just as @code{define}
13331 reads the lines of the command definition, ending with @code{end}.
13332 After the @code{document} command is finished, @code{help} on command
13333 @var{commandname} displays the documentation you have written.
13334
13335 You may use the @code{document} command again to change the
13336 documentation of a command. Redefining the command with @code{define}
13337 does not change the documentation.
13338
13339 @kindex help user-defined
13340 @item help user-defined
13341 List all user-defined commands, with the first line of the documentation
13342 (if any) for each.
13343
13344 @kindex show user
13345 @item show user
13346 @itemx show user @var{commandname}
13347 Display the @value{GDBN} commands used to define @var{commandname} (but
13348 not its documentation). If no @var{commandname} is given, display the
13349 definitions for all user-defined commands.
13350
13351 @end table
13352
13353 When user-defined commands are executed, the
13354 commands of the definition are not printed. An error in any command
13355 stops execution of the user-defined command.
13356
13357 If used interactively, commands that would ask for confirmation proceed
13358 without asking when used inside a user-defined command. Many @value{GDBN}
13359 commands that normally print messages to say what they are doing omit the
13360 messages when used in a user-defined command.
13361
13362 @node Hooks
13363 @section User-defined command hooks
13364 @cindex command hooks
13365 @cindex hooks, for commands
13366 @cindex hooks, pre-command
13367
13368 @kindex hook
13369 @kindex hook-
13370 You may define @dfn{hooks}, which are a special kind of user-defined
13371 command. Whenever you run the command @samp{foo}, if the user-defined
13372 command @samp{hook-foo} exists, it is executed (with no arguments)
13373 before that command.
13374
13375 @cindex hooks, post-command
13376 @kindex hookpost
13377 @kindex hookpost-
13378 A hook may also be defined which is run after the command you executed.
13379 Whenever you run the command @samp{foo}, if the user-defined command
13380 @samp{hookpost-foo} exists, it is executed (with no arguments) after
13381 that command. Post-execution hooks may exist simultaneously with
13382 pre-execution hooks, for the same command.
13383
13384 It is valid for a hook to call the command which it hooks. If this
13385 occurs, the hook is not re-executed, thereby avoiding infinte recursion.
13386
13387 @c It would be nice if hookpost could be passed a parameter indicating
13388 @c if the command it hooks executed properly or not. FIXME!
13389
13390 @kindex stop@r{, a pseudo-command}
13391 In addition, a pseudo-command, @samp{stop} exists. Defining
13392 (@samp{hook-stop}) makes the associated commands execute every time
13393 execution stops in your program: before breakpoint commands are run,
13394 displays are printed, or the stack frame is printed.
13395
13396 For example, to ignore @code{SIGALRM} signals while
13397 single-stepping, but treat them normally during normal execution,
13398 you could define:
13399
13400 @example
13401 define hook-stop
13402 handle SIGALRM nopass
13403 end
13404
13405 define hook-run
13406 handle SIGALRM pass
13407 end
13408
13409 define hook-continue
13410 handle SIGLARM pass
13411 end
13412 @end example
13413
13414 As a further example, to hook at the begining and end of the @code{echo}
13415 command, and to add extra text to the beginning and end of the message,
13416 you could define:
13417
13418 @example
13419 define hook-echo
13420 echo <<<---
13421 end
13422
13423 define hookpost-echo
13424 echo --->>>\n
13425 end
13426
13427 (@value{GDBP}) echo Hello World
13428 <<<---Hello World--->>>
13429 (@value{GDBP})
13430
13431 @end example
13432
13433 You can define a hook for any single-word command in @value{GDBN}, but
13434 not for command aliases; you should define a hook for the basic command
13435 name, e.g. @code{backtrace} rather than @code{bt}.
13436 @c FIXME! So how does Joe User discover whether a command is an alias
13437 @c or not?
13438 If an error occurs during the execution of your hook, execution of
13439 @value{GDBN} commands stops and @value{GDBN} issues a prompt
13440 (before the command that you actually typed had a chance to run).
13441
13442 If you try to define a hook which does not match any known command, you
13443 get a warning from the @code{define} command.
13444
13445 @node Command Files
13446 @section Command files
13447
13448 @cindex command files
13449 A command file for @value{GDBN} is a file of lines that are @value{GDBN}
13450 commands. Comments (lines starting with @kbd{#}) may also be included.
13451 An empty line in a command file does nothing; it does not mean to repeat
13452 the last command, as it would from the terminal.
13453
13454 @cindex init file
13455 @cindex @file{.gdbinit}
13456 @cindex @file{gdb.ini}
13457 When you start @value{GDBN}, it automatically executes commands from its
13458 @dfn{init files}, normally called @file{.gdbinit}@footnote{The DJGPP
13459 port of @value{GDBN} uses the name @file{gdb.ini} instead, due to the
13460 limitations of file names imposed by DOS filesystems.}.
13461 During startup, @value{GDBN} does the following:
13462
13463 @enumerate
13464 @item
13465 Reads the init file (if any) in your home directory@footnote{On
13466 DOS/Windows systems, the home directory is the one pointed to by the
13467 @code{HOME} environment variable.}.
13468
13469 @item
13470 Processes command line options and operands.
13471
13472 @item
13473 Reads the init file (if any) in the current working directory.
13474
13475 @item
13476 Reads command files specified by the @samp{-x} option.
13477 @end enumerate
13478
13479 The init file in your home directory can set options (such as @samp{set
13480 complaints}) that affect subsequent processing of command line options
13481 and operands. Init files are not executed if you use the @samp{-nx}
13482 option (@pxref{Mode Options, ,Choosing modes}).
13483
13484 @cindex init file name
13485 On some configurations of @value{GDBN}, the init file is known by a
13486 different name (these are typically environments where a specialized
13487 form of @value{GDBN} may need to coexist with other forms, hence a
13488 different name for the specialized version's init file). These are the
13489 environments with special init file names:
13490
13491 @cindex @file{.vxgdbinit}
13492 @itemize @bullet
13493 @item
13494 VxWorks (Wind River Systems real-time OS): @file{.vxgdbinit}
13495
13496 @cindex @file{.os68gdbinit}
13497 @item
13498 OS68K (Enea Data Systems real-time OS): @file{.os68gdbinit}
13499
13500 @cindex @file{.esgdbinit}
13501 @item
13502 ES-1800 (Ericsson Telecom AB M68000 emulator): @file{.esgdbinit}
13503 @end itemize
13504
13505 You can also request the execution of a command file with the
13506 @code{source} command:
13507
13508 @table @code
13509 @kindex source
13510 @item source @var{filename}
13511 Execute the command file @var{filename}.
13512 @end table
13513
13514 The lines in a command file are executed sequentially. They are not
13515 printed as they are executed. An error in any command terminates execution
13516 of the command file.
13517
13518 Commands that would ask for confirmation if used interactively proceed
13519 without asking when used in a command file. Many @value{GDBN} commands that
13520 normally print messages to say what they are doing omit the messages
13521 when called from command files.
13522
13523 @value{GDBN} also accepts command input from standard input. In this
13524 mode, normal output goes to standard output and error output goes to
13525 standard error. Errors in a command file supplied on standard input do
13526 not terminate execution of the command file --- execution continues with
13527 the next command.
13528
13529 @example
13530 gdb < cmds > log 2>&1
13531 @end example
13532
13533 (The syntax above will vary depending on the shell used.) This example
13534 will execute commands from the file @file{cmds}. All output and errors
13535 would be directed to @file{log}.
13536
13537 @node Output
13538 @section Commands for controlled output
13539
13540 During the execution of a command file or a user-defined command, normal
13541 @value{GDBN} output is suppressed; the only output that appears is what is
13542 explicitly printed by the commands in the definition. This section
13543 describes three commands useful for generating exactly the output you
13544 want.
13545
13546 @table @code
13547 @kindex echo
13548 @item echo @var{text}
13549 @c I do not consider backslash-space a standard C escape sequence
13550 @c because it is not in ANSI.
13551 Print @var{text}. Nonprinting characters can be included in
13552 @var{text} using C escape sequences, such as @samp{\n} to print a
13553 newline. @strong{No newline is printed unless you specify one.}
13554 In addition to the standard C escape sequences, a backslash followed
13555 by a space stands for a space. This is useful for displaying a
13556 string with spaces at the beginning or the end, since leading and
13557 trailing spaces are otherwise trimmed from all arguments.
13558 To print @samp{@w{ }and foo =@w{ }}, use the command
13559 @samp{echo \@w{ }and foo = \@w{ }}.
13560
13561 A backslash at the end of @var{text} can be used, as in C, to continue
13562 the command onto subsequent lines. For example,
13563
13564 @example
13565 echo This is some text\n\
13566 which is continued\n\
13567 onto several lines.\n
13568 @end example
13569
13570 produces the same output as
13571
13572 @example
13573 echo This is some text\n
13574 echo which is continued\n
13575 echo onto several lines.\n
13576 @end example
13577
13578 @kindex output
13579 @item output @var{expression}
13580 Print the value of @var{expression} and nothing but that value: no
13581 newlines, no @samp{$@var{nn} = }. The value is not entered in the
13582 value history either. @xref{Expressions, ,Expressions}, for more information
13583 on expressions.
13584
13585 @item output/@var{fmt} @var{expression}
13586 Print the value of @var{expression} in format @var{fmt}. You can use
13587 the same formats as for @code{print}. @xref{Output Formats,,Output
13588 formats}, for more information.
13589
13590 @kindex printf
13591 @item printf @var{string}, @var{expressions}@dots{}
13592 Print the values of the @var{expressions} under the control of
13593 @var{string}. The @var{expressions} are separated by commas and may be
13594 either numbers or pointers. Their values are printed as specified by
13595 @var{string}, exactly as if your program were to execute the C
13596 subroutine
13597 @c FIXME: the above implies that at least all ANSI C formats are
13598 @c supported, but it isn't true: %E and %G don't work (or so it seems).
13599 @c Either this is a bug, or the manual should document what formats are
13600 @c supported.
13601
13602 @example
13603 printf (@var{string}, @var{expressions}@dots{});
13604 @end example
13605
13606 For example, you can print two values in hex like this:
13607
13608 @smallexample
13609 printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
13610 @end smallexample
13611
13612 The only backslash-escape sequences that you can use in the format
13613 string are the simple ones that consist of backslash followed by a
13614 letter.
13615 @end table
13616
13617 @node TUI
13618 @chapter @value{GDBN} Text User Interface
13619 @cindex TUI
13620
13621 @menu
13622 * TUI Overview:: TUI overview
13623 * TUI Keys:: TUI key bindings
13624 * TUI Commands:: TUI specific commands
13625 * TUI Configuration:: TUI configuration variables
13626 @end menu
13627
13628 The @value{GDBN} Text User Interface, TUI in short,
13629 is a terminal interface which uses the @code{curses} library
13630 to show the source file, the assembly output, the program registers
13631 and @value{GDBN} commands in separate text windows.
13632 The TUI is available only when @value{GDBN} is configured
13633 with the @code{--enable-tui} configure option (@pxref{Configure Options}).
13634
13635 @node TUI Overview
13636 @section TUI overview
13637
13638 The TUI has two display modes that can be switched while
13639 @value{GDBN} runs:
13640
13641 @itemize @bullet
13642 @item
13643 A curses (or TUI) mode in which it displays several text
13644 windows on the terminal.
13645
13646 @item
13647 A standard mode which corresponds to the @value{GDBN} configured without
13648 the TUI.
13649 @end itemize
13650
13651 In the TUI mode, @value{GDBN} can display several text window
13652 on the terminal:
13653
13654 @table @emph
13655 @item command
13656 This window is the @value{GDBN} command window with the @value{GDBN}
13657 prompt and the @value{GDBN} outputs. The @value{GDBN} input is still
13658 managed using readline but through the TUI. The @emph{command}
13659 window is always visible.
13660
13661 @item source
13662 The source window shows the source file of the program. The current
13663 line as well as active breakpoints are displayed in this window.
13664 The current program position is shown with the @samp{>} marker and
13665 active breakpoints are shown with @samp{*} markers.
13666
13667 @item assembly
13668 The assembly window shows the disassembly output of the program.
13669
13670 @item register
13671 This window shows the processor registers. It detects when
13672 a register is changed and when this is the case, registers that have
13673 changed are highlighted.
13674
13675 @end table
13676
13677 The source, assembly and register windows are attached to the thread
13678 and the frame position. They are updated when the current thread
13679 changes, when the frame changes or when the program counter changes.
13680 These three windows are arranged by the TUI according to several
13681 layouts. The layout defines which of these three windows are visible.
13682 The following layouts are available:
13683
13684 @itemize @bullet
13685 @item
13686 source
13687
13688 @item
13689 assembly
13690
13691 @item
13692 source and assembly
13693
13694 @item
13695 source and registers
13696
13697 @item
13698 assembly and registers
13699
13700 @end itemize
13701
13702 @node TUI Keys
13703 @section TUI Key Bindings
13704 @cindex TUI key bindings
13705
13706 The TUI installs several key bindings in the readline keymaps
13707 (@pxref{Command Line Editing}).
13708 They allow to leave or enter in the TUI mode or they operate
13709 directly on the TUI layout and windows. The following key bindings
13710 are installed for both TUI mode and the @value{GDBN} standard mode.
13711
13712 @table @kbd
13713 @kindex C-x C-a
13714 @item C-x C-a
13715 @kindex C-x a
13716 @itemx C-x a
13717 @kindex C-x A
13718 @itemx C-x A
13719 Enter or leave the TUI mode. When the TUI mode is left,
13720 the curses window management is left and @value{GDBN} operates using
13721 its standard mode writing on the terminal directly. When the TUI
13722 mode is entered, the control is given back to the curses windows.
13723 The screen is then refreshed.
13724
13725 @kindex C-x 1
13726 @item C-x 1
13727 Use a TUI layout with only one window. The layout will
13728 either be @samp{source} or @samp{assembly}. When the TUI mode
13729 is not active, it will switch to the TUI mode.
13730
13731 Think of this key binding as the Emacs @kbd{C-x 1} binding.
13732
13733 @kindex C-x 2
13734 @item C-x 2
13735 Use a TUI layout with at least two windows. When the current
13736 layout shows already two windows, a next layout with two windows is used.
13737 When a new layout is chosen, one window will always be common to the
13738 previous layout and the new one.
13739
13740 Think of it as the Emacs @kbd{C-x 2} binding.
13741
13742 @end table
13743
13744 The following key bindings are handled only by the TUI mode:
13745
13746 @table @key
13747 @kindex PgUp
13748 @item PgUp
13749 Scroll the active window one page up.
13750
13751 @kindex PgDn
13752 @item PgDn
13753 Scroll the active window one page down.
13754
13755 @kindex Up
13756 @item Up
13757 Scroll the active window one line up.
13758
13759 @kindex Down
13760 @item Down
13761 Scroll the active window one line down.
13762
13763 @kindex Left
13764 @item Left
13765 Scroll the active window one column left.
13766
13767 @kindex Right
13768 @item Right
13769 Scroll the active window one column right.
13770
13771 @kindex C-L
13772 @item C-L
13773 Refresh the screen.
13774
13775 @end table
13776
13777 In the TUI mode, the arrow keys are used by the active window
13778 for scrolling. This means they are not available for readline. It is
13779 necessary to use other readline key bindings such as @key{C-p}, @key{C-n},
13780 @key{C-b} and @key{C-f}.
13781
13782 @node TUI Commands
13783 @section TUI specific commands
13784 @cindex TUI commands
13785
13786 The TUI has specific commands to control the text windows.
13787 These commands are always available, that is they do not depend on
13788 the current terminal mode in which @value{GDBN} runs. When @value{GDBN}
13789 is in the standard mode, using these commands will automatically switch
13790 in the TUI mode.
13791
13792 @table @code
13793 @item layout next
13794 @kindex layout next
13795 Display the next layout.
13796
13797 @item layout prev
13798 @kindex layout prev
13799 Display the previous layout.
13800
13801 @item layout src
13802 @kindex layout src
13803 Display the source window only.
13804
13805 @item layout asm
13806 @kindex layout asm
13807 Display the assembly window only.
13808
13809 @item layout split
13810 @kindex layout split
13811 Display the source and assembly window.
13812
13813 @item layout regs
13814 @kindex layout regs
13815 Display the register window together with the source or assembly window.
13816
13817 @item focus next | prev | src | asm | regs | split
13818 @kindex focus
13819 Set the focus to the named window.
13820 This command allows to change the active window so that scrolling keys
13821 can be affected to another window.
13822
13823 @item refresh
13824 @kindex refresh
13825 Refresh the screen. This is similar to using @key{C-L} key.
13826
13827 @item update
13828 @kindex update
13829 Update the source window and the current execution point.
13830
13831 @item winheight @var{name} +@var{count}
13832 @itemx winheight @var{name} -@var{count}
13833 @kindex winheight
13834 Change the height of the window @var{name} by @var{count}
13835 lines. Positive counts increase the height, while negative counts
13836 decrease it.
13837
13838 @end table
13839
13840 @node TUI Configuration
13841 @section TUI configuration variables
13842 @cindex TUI configuration variables
13843
13844 The TUI has several configuration variables that control the
13845 appearance of windows on the terminal.
13846
13847 @table @code
13848 @item set tui border-kind @var{kind}
13849 @kindex set tui border-kind
13850 Select the border appearance for the source, assembly and register windows.
13851 The possible values are the following:
13852 @table @code
13853 @item space
13854 Use a space character to draw the border.
13855
13856 @item ascii
13857 Use ascii characters + - and | to draw the border.
13858
13859 @item acs
13860 Use the Alternate Character Set to draw the border. The border is
13861 drawn using character line graphics if the terminal supports them.
13862
13863 @end table
13864
13865 @item set tui active-border-mode @var{mode}
13866 @kindex set tui active-border-mode
13867 Select the attributes to display the border of the active window.
13868 The possible values are @code{normal}, @code{standout}, @code{reverse},
13869 @code{half}, @code{half-standout}, @code{bold} and @code{bold-standout}.
13870
13871 @item set tui border-mode @var{mode}
13872 @kindex set tui border-mode
13873 Select the attributes to display the border of other windows.
13874 The @var{mode} can be one of the following:
13875 @table @code
13876 @item normal
13877 Use normal attributes to display the border.
13878
13879 @item standout
13880 Use standout mode.
13881
13882 @item reverse
13883 Use reverse video mode.
13884
13885 @item half
13886 Use half bright mode.
13887
13888 @item half-standout
13889 Use half bright and standout mode.
13890
13891 @item bold
13892 Use extra bright or bold mode.
13893
13894 @item bold-standout
13895 Use extra bright or bold and standout mode.
13896
13897 @end table
13898
13899 @end table
13900
13901 @node Emacs
13902 @chapter Using @value{GDBN} under @sc{gnu} Emacs
13903
13904 @cindex Emacs
13905 @cindex @sc{gnu} Emacs
13906 A special interface allows you to use @sc{gnu} Emacs to view (and
13907 edit) the source files for the program you are debugging with
13908 @value{GDBN}.
13909
13910 To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
13911 executable file you want to debug as an argument. This command starts
13912 @value{GDBN} as a subprocess of Emacs, with input and output through a newly
13913 created Emacs buffer.
13914 @c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
13915
13916 Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
13917 things:
13918
13919 @itemize @bullet
13920 @item
13921 All ``terminal'' input and output goes through the Emacs buffer.
13922 @end itemize
13923
13924 This applies both to @value{GDBN} commands and their output, and to the input
13925 and output done by the program you are debugging.
13926
13927 This is useful because it means that you can copy the text of previous
13928 commands and input them again; you can even use parts of the output
13929 in this way.
13930
13931 All the facilities of Emacs' Shell mode are available for interacting
13932 with your program. In particular, you can send signals the usual
13933 way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
13934 stop.
13935
13936 @itemize @bullet
13937 @item
13938 @value{GDBN} displays source code through Emacs.
13939 @end itemize
13940
13941 Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
13942 source file for that frame and puts an arrow (@samp{=>}) at the
13943 left margin of the current line. Emacs uses a separate buffer for
13944 source display, and splits the screen to show both your @value{GDBN} session
13945 and the source.
13946
13947 Explicit @value{GDBN} @code{list} or search commands still produce output as
13948 usual, but you probably have no reason to use them from Emacs.
13949
13950 @quotation
13951 @emph{Warning:} If the directory where your program resides is not your
13952 current directory, it can be easy to confuse Emacs about the location of
13953 the source files, in which case the auxiliary display buffer does not
13954 appear to show your source. @value{GDBN} can find programs by searching your
13955 environment's @code{PATH} variable, so the @value{GDBN} input and output
13956 session proceeds normally; but Emacs does not get enough information
13957 back from @value{GDBN} to locate the source files in this situation. To
13958 avoid this problem, either start @value{GDBN} mode from the directory where
13959 your program resides, or specify an absolute file name when prompted for the
13960 @kbd{M-x gdb} argument.
13961
13962 A similar confusion can result if you use the @value{GDBN} @code{file} command to
13963 switch to debugging a program in some other location, from an existing
13964 @value{GDBN} buffer in Emacs.
13965 @end quotation
13966
13967 By default, @kbd{M-x gdb} calls the program called @file{gdb}. If
13968 you need to call @value{GDBN} by a different name (for example, if you keep
13969 several configurations around, with different names) you can set the
13970 Emacs variable @code{gdb-command-name}; for example,
13971
13972 @example
13973 (setq gdb-command-name "mygdb")
13974 @end example
13975
13976 @noindent
13977 (preceded by @kbd{M-:} or @kbd{ESC :}, or typed in the @code{*scratch*} buffer, or
13978 in your @file{.emacs} file) makes Emacs call the program named
13979 ``@code{mygdb}'' instead.
13980
13981 In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
13982 addition to the standard Shell mode commands:
13983
13984 @table @kbd
13985 @item C-h m
13986 Describe the features of Emacs' @value{GDBN} Mode.
13987
13988 @item M-s
13989 Execute to another source line, like the @value{GDBN} @code{step} command; also
13990 update the display window to show the current file and location.
13991
13992 @item M-n
13993 Execute to next source line in this function, skipping all function
13994 calls, like the @value{GDBN} @code{next} command. Then update the display window
13995 to show the current file and location.
13996
13997 @item M-i
13998 Execute one instruction, like the @value{GDBN} @code{stepi} command; update
13999 display window accordingly.
14000
14001 @item M-x gdb-nexti
14002 Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
14003 display window accordingly.
14004
14005 @item C-c C-f
14006 Execute until exit from the selected stack frame, like the @value{GDBN}
14007 @code{finish} command.
14008
14009 @item M-c
14010 Continue execution of your program, like the @value{GDBN} @code{continue}
14011 command.
14012
14013 @emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
14014
14015 @item M-u
14016 Go up the number of frames indicated by the numeric argument
14017 (@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
14018 like the @value{GDBN} @code{up} command.
14019
14020 @emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
14021
14022 @item M-d
14023 Go down the number of frames indicated by the numeric argument, like the
14024 @value{GDBN} @code{down} command.
14025
14026 @emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
14027
14028 @item C-x &
14029 Read the number where the cursor is positioned, and insert it at the end
14030 of the @value{GDBN} I/O buffer. For example, if you wish to disassemble code
14031 around an address that was displayed earlier, type @kbd{disassemble};
14032 then move the cursor to the address display, and pick up the
14033 argument for @code{disassemble} by typing @kbd{C-x &}.
14034
14035 You can customize this further by defining elements of the list
14036 @code{gdb-print-command}; once it is defined, you can format or
14037 otherwise process numbers picked up by @kbd{C-x &} before they are
14038 inserted. A numeric argument to @kbd{C-x &} indicates that you
14039 wish special formatting, and also acts as an index to pick an element of the
14040 list. If the list element is a string, the number to be inserted is
14041 formatted using the Emacs function @code{format}; otherwise the number
14042 is passed as an argument to the corresponding list element.
14043 @end table
14044
14045 In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
14046 tells @value{GDBN} to set a breakpoint on the source line point is on.
14047
14048 If you accidentally delete the source-display buffer, an easy way to get
14049 it back is to type the command @code{f} in the @value{GDBN} buffer, to
14050 request a frame display; when you run under Emacs, this recreates
14051 the source buffer if necessary to show you the context of the current
14052 frame.
14053
14054 The source files displayed in Emacs are in ordinary Emacs buffers
14055 which are visiting the source files in the usual way. You can edit
14056 the files with these buffers if you wish; but keep in mind that @value{GDBN}
14057 communicates with Emacs in terms of line numbers. If you add or
14058 delete lines from the text, the line numbers that @value{GDBN} knows cease
14059 to correspond properly with the code.
14060
14061 @c The following dropped because Epoch is nonstandard. Reactivate
14062 @c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
14063 @ignore
14064 @kindex Emacs Epoch environment
14065 @kindex Epoch
14066 @kindex inspect
14067
14068 Version 18 of @sc{gnu} Emacs has a built-in window system
14069 called the @code{epoch}
14070 environment. Users of this environment can use a new command,
14071 @code{inspect} which performs identically to @code{print} except that
14072 each value is printed in its own window.
14073 @end ignore
14074
14075 @include annotate.texi
14076 @include gdbmi.texinfo
14077
14078 @node GDB Bugs
14079 @chapter Reporting Bugs in @value{GDBN}
14080 @cindex bugs in @value{GDBN}
14081 @cindex reporting bugs in @value{GDBN}
14082
14083 Your bug reports play an essential role in making @value{GDBN} reliable.
14084
14085 Reporting a bug may help you by bringing a solution to your problem, or it
14086 may not. But in any case the principal function of a bug report is to help
14087 the entire community by making the next version of @value{GDBN} work better. Bug
14088 reports are your contribution to the maintenance of @value{GDBN}.
14089
14090 In order for a bug report to serve its purpose, you must include the
14091 information that enables us to fix the bug.
14092
14093 @menu
14094 * Bug Criteria:: Have you found a bug?
14095 * Bug Reporting:: How to report bugs
14096 @end menu
14097
14098 @node Bug Criteria
14099 @section Have you found a bug?
14100 @cindex bug criteria
14101
14102 If you are not sure whether you have found a bug, here are some guidelines:
14103
14104 @itemize @bullet
14105 @cindex fatal signal
14106 @cindex debugger crash
14107 @cindex crash of debugger
14108 @item
14109 If the debugger gets a fatal signal, for any input whatever, that is a
14110 @value{GDBN} bug. Reliable debuggers never crash.
14111
14112 @cindex error on valid input
14113 @item
14114 If @value{GDBN} produces an error message for valid input, that is a
14115 bug. (Note that if you're cross debugging, the problem may also be
14116 somewhere in the connection to the target.)
14117
14118 @cindex invalid input
14119 @item
14120 If @value{GDBN} does not produce an error message for invalid input,
14121 that is a bug. However, you should note that your idea of
14122 ``invalid input'' might be our idea of ``an extension'' or ``support
14123 for traditional practice''.
14124
14125 @item
14126 If you are an experienced user of debugging tools, your suggestions
14127 for improvement of @value{GDBN} are welcome in any case.
14128 @end itemize
14129
14130 @node Bug Reporting
14131 @section How to report bugs
14132 @cindex bug reports
14133 @cindex @value{GDBN} bugs, reporting
14134
14135 A number of companies and individuals offer support for @sc{gnu} products.
14136 If you obtained @value{GDBN} from a support organization, we recommend you
14137 contact that organization first.
14138
14139 You can find contact information for many support companies and
14140 individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
14141 distribution.
14142 @c should add a web page ref...
14143
14144 In any event, we also recommend that you send bug reports for
14145 @value{GDBN} to this addresses:
14146
14147 @example
14148 bug-gdb@@gnu.org
14149 @end example
14150
14151 @strong{Do not send bug reports to @samp{info-gdb}, or to
14152 @samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
14153 not want to receive bug reports. Those that do have arranged to receive
14154 @samp{bug-gdb}.
14155
14156 The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
14157 serves as a repeater. The mailing list and the newsgroup carry exactly
14158 the same messages. Often people think of posting bug reports to the
14159 newsgroup instead of mailing them. This appears to work, but it has one
14160 problem which can be crucial: a newsgroup posting often lacks a mail
14161 path back to the sender. Thus, if we need to ask for more information,
14162 we may be unable to reach you. For this reason, it is better to send
14163 bug reports to the mailing list.
14164
14165 As a last resort, send bug reports on paper to:
14166
14167 @example
14168 @sc{gnu} Debugger Bugs
14169 Free Software Foundation Inc.
14170 59 Temple Place - Suite 330
14171 Boston, MA 02111-1307
14172 USA
14173 @end example
14174
14175 The fundamental principle of reporting bugs usefully is this:
14176 @strong{report all the facts}. If you are not sure whether to state a
14177 fact or leave it out, state it!
14178
14179 Often people omit facts because they think they know what causes the
14180 problem and assume that some details do not matter. Thus, you might
14181 assume that the name of the variable you use in an example does not matter.
14182 Well, probably it does not, but one cannot be sure. Perhaps the bug is a
14183 stray memory reference which happens to fetch from the location where that
14184 name is stored in memory; perhaps, if the name were different, the contents
14185 of that location would fool the debugger into doing the right thing despite
14186 the bug. Play it safe and give a specific, complete example. That is the
14187 easiest thing for you to do, and the most helpful.
14188
14189 Keep in mind that the purpose of a bug report is to enable us to fix the
14190 bug. It may be that the bug has been reported previously, but neither
14191 you nor we can know that unless your bug report is complete and
14192 self-contained.
14193
14194 Sometimes people give a few sketchy facts and ask, ``Does this ring a
14195 bell?'' Those bug reports are useless, and we urge everyone to
14196 @emph{refuse to respond to them} except to chide the sender to report
14197 bugs properly.
14198
14199 To enable us to fix the bug, you should include all these things:
14200
14201 @itemize @bullet
14202 @item
14203 The version of @value{GDBN}. @value{GDBN} announces it if you start
14204 with no arguments; you can also print it at any time using @code{show
14205 version}.
14206
14207 Without this, we will not know whether there is any point in looking for
14208 the bug in the current version of @value{GDBN}.
14209
14210 @item
14211 The type of machine you are using, and the operating system name and
14212 version number.
14213
14214 @item
14215 What compiler (and its version) was used to compile @value{GDBN}---e.g.
14216 ``@value{GCC}--2.8.1''.
14217
14218 @item
14219 What compiler (and its version) was used to compile the program you are
14220 debugging---e.g. ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
14221 C Compiler''. For GCC, you can say @code{gcc --version} to get this
14222 information; for other compilers, see the documentation for those
14223 compilers.
14224
14225 @item
14226 The command arguments you gave the compiler to compile your example and
14227 observe the bug. For example, did you use @samp{-O}? To guarantee
14228 you will not omit something important, list them all. A copy of the
14229 Makefile (or the output from make) is sufficient.
14230
14231 If we were to try to guess the arguments, we would probably guess wrong
14232 and then we might not encounter the bug.
14233
14234 @item
14235 A complete input script, and all necessary source files, that will
14236 reproduce the bug.
14237
14238 @item
14239 A description of what behavior you observe that you believe is
14240 incorrect. For example, ``It gets a fatal signal.''
14241
14242 Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
14243 will certainly notice it. But if the bug is incorrect output, we might
14244 not notice unless it is glaringly wrong. You might as well not give us
14245 a chance to make a mistake.
14246
14247 Even if the problem you experience is a fatal signal, you should still
14248 say so explicitly. Suppose something strange is going on, such as, your
14249 copy of @value{GDBN} is out of synch, or you have encountered a bug in
14250 the C library on your system. (This has happened!) Your copy might
14251 crash and ours would not. If you told us to expect a crash, then when
14252 ours fails to crash, we would know that the bug was not happening for
14253 us. If you had not told us to expect a crash, then we would not be able
14254 to draw any conclusion from our observations.
14255
14256 @item
14257 If you wish to suggest changes to the @value{GDBN} source, send us context
14258 diffs. If you even discuss something in the @value{GDBN} source, refer to
14259 it by context, not by line number.
14260
14261 The line numbers in our development sources will not match those in your
14262 sources. Your line numbers would convey no useful information to us.
14263
14264 @end itemize
14265
14266 Here are some things that are not necessary:
14267
14268 @itemize @bullet
14269 @item
14270 A description of the envelope of the bug.
14271
14272 Often people who encounter a bug spend a lot of time investigating
14273 which changes to the input file will make the bug go away and which
14274 changes will not affect it.
14275
14276 This is often time consuming and not very useful, because the way we
14277 will find the bug is by running a single example under the debugger
14278 with breakpoints, not by pure deduction from a series of examples.
14279 We recommend that you save your time for something else.
14280
14281 Of course, if you can find a simpler example to report @emph{instead}
14282 of the original one, that is a convenience for us. Errors in the
14283 output will be easier to spot, running under the debugger will take
14284 less time, and so on.
14285
14286 However, simplification is not vital; if you do not want to do this,
14287 report the bug anyway and send us the entire test case you used.
14288
14289 @item
14290 A patch for the bug.
14291
14292 A patch for the bug does help us if it is a good one. But do not omit
14293 the necessary information, such as the test case, on the assumption that
14294 a patch is all we need. We might see problems with your patch and decide
14295 to fix the problem another way, or we might not understand it at all.
14296
14297 Sometimes with a program as complicated as @value{GDBN} it is very hard to
14298 construct an example that will make the program follow a certain path
14299 through the code. If you do not send us the example, we will not be able
14300 to construct one, so we will not be able to verify that the bug is fixed.
14301
14302 And if we cannot understand what bug you are trying to fix, or why your
14303 patch should be an improvement, we will not install it. A test case will
14304 help us to understand.
14305
14306 @item
14307 A guess about what the bug is or what it depends on.
14308
14309 Such guesses are usually wrong. Even we cannot guess right about such
14310 things without first using the debugger to find the facts.
14311 @end itemize
14312
14313 @c The readline documentation is distributed with the readline code
14314 @c and consists of the two following files:
14315 @c rluser.texinfo
14316 @c inc-hist.texinfo
14317 @c Use -I with makeinfo to point to the appropriate directory,
14318 @c environment var TEXINPUTS with TeX.
14319 @include rluser.texinfo
14320 @include inc-hist.texinfo
14321
14322
14323 @node Formatting Documentation
14324 @appendix Formatting Documentation
14325
14326 @cindex @value{GDBN} reference card
14327 @cindex reference card
14328 The @value{GDBN} 4 release includes an already-formatted reference card, ready
14329 for printing with PostScript or Ghostscript, in the @file{gdb}
14330 subdirectory of the main source directory@footnote{In
14331 @file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
14332 release.}. If you can use PostScript or Ghostscript with your printer,
14333 you can print the reference card immediately with @file{refcard.ps}.
14334
14335 The release also includes the source for the reference card. You
14336 can format it, using @TeX{}, by typing:
14337
14338 @example
14339 make refcard.dvi
14340 @end example
14341
14342 The @value{GDBN} reference card is designed to print in @dfn{landscape}
14343 mode on US ``letter'' size paper;
14344 that is, on a sheet 11 inches wide by 8.5 inches
14345 high. You will need to specify this form of printing as an option to
14346 your @sc{dvi} output program.
14347
14348 @cindex documentation
14349
14350 All the documentation for @value{GDBN} comes as part of the machine-readable
14351 distribution. The documentation is written in Texinfo format, which is
14352 a documentation system that uses a single source file to produce both
14353 on-line information and a printed manual. You can use one of the Info
14354 formatting commands to create the on-line version of the documentation
14355 and @TeX{} (or @code{texi2roff}) to typeset the printed version.
14356
14357 @value{GDBN} includes an already formatted copy of the on-line Info
14358 version of this manual in the @file{gdb} subdirectory. The main Info
14359 file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
14360 subordinate files matching @samp{gdb.info*} in the same directory. If
14361 necessary, you can print out these files, or read them with any editor;
14362 but they are easier to read using the @code{info} subsystem in @sc{gnu}
14363 Emacs or the standalone @code{info} program, available as part of the
14364 @sc{gnu} Texinfo distribution.
14365
14366 If you want to format these Info files yourself, you need one of the
14367 Info formatting programs, such as @code{texinfo-format-buffer} or
14368 @code{makeinfo}.
14369
14370 If you have @code{makeinfo} installed, and are in the top level
14371 @value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
14372 version @value{GDBVN}), you can make the Info file by typing:
14373
14374 @example
14375 cd gdb
14376 make gdb.info
14377 @end example
14378
14379 If you want to typeset and print copies of this manual, you need @TeX{},
14380 a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
14381 Texinfo definitions file.
14382
14383 @TeX{} is a typesetting program; it does not print files directly, but
14384 produces output files called @sc{dvi} files. To print a typeset
14385 document, you need a program to print @sc{dvi} files. If your system
14386 has @TeX{} installed, chances are it has such a program. The precise
14387 command to use depends on your system; @kbd{lpr -d} is common; another
14388 (for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
14389 require a file name without any extension or a @samp{.dvi} extension.
14390
14391 @TeX{} also requires a macro definitions file called
14392 @file{texinfo.tex}. This file tells @TeX{} how to typeset a document
14393 written in Texinfo format. On its own, @TeX{} cannot either read or
14394 typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
14395 and is located in the @file{gdb-@var{version-number}/texinfo}
14396 directory.
14397
14398 If you have @TeX{} and a @sc{dvi} printer program installed, you can
14399 typeset and print this manual. First switch to the the @file{gdb}
14400 subdirectory of the main source directory (for example, to
14401 @file{gdb-@value{GDBVN}/gdb}) and type:
14402
14403 @example
14404 make gdb.dvi
14405 @end example
14406
14407 Then give @file{gdb.dvi} to your @sc{dvi} printing program.
14408
14409 @node Installing GDB
14410 @appendix Installing @value{GDBN}
14411 @cindex configuring @value{GDBN}
14412 @cindex installation
14413
14414 @value{GDBN} comes with a @code{configure} script that automates the process
14415 of preparing @value{GDBN} for installation; you can then use @code{make} to
14416 build the @code{gdb} program.
14417 @iftex
14418 @c irrelevant in info file; it's as current as the code it lives with.
14419 @footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
14420 look at the @file{README} file in the sources; we may have improved the
14421 installation procedures since publishing this manual.}
14422 @end iftex
14423
14424 The @value{GDBN} distribution includes all the source code you need for
14425 @value{GDBN} in a single directory, whose name is usually composed by
14426 appending the version number to @samp{gdb}.
14427
14428 For example, the @value{GDBN} version @value{GDBVN} distribution is in the
14429 @file{gdb-@value{GDBVN}} directory. That directory contains:
14430
14431 @table @code
14432 @item gdb-@value{GDBVN}/configure @r{(and supporting files)}
14433 script for configuring @value{GDBN} and all its supporting libraries
14434
14435 @item gdb-@value{GDBVN}/gdb
14436 the source specific to @value{GDBN} itself
14437
14438 @item gdb-@value{GDBVN}/bfd
14439 source for the Binary File Descriptor library
14440
14441 @item gdb-@value{GDBVN}/include
14442 @sc{gnu} include files
14443
14444 @item gdb-@value{GDBVN}/libiberty
14445 source for the @samp{-liberty} free software library
14446
14447 @item gdb-@value{GDBVN}/opcodes
14448 source for the library of opcode tables and disassemblers
14449
14450 @item gdb-@value{GDBVN}/readline
14451 source for the @sc{gnu} command-line interface
14452
14453 @item gdb-@value{GDBVN}/glob
14454 source for the @sc{gnu} filename pattern-matching subroutine
14455
14456 @item gdb-@value{GDBVN}/mmalloc
14457 source for the @sc{gnu} memory-mapped malloc package
14458 @end table
14459
14460 The simplest way to configure and build @value{GDBN} is to run @code{configure}
14461 from the @file{gdb-@var{version-number}} source directory, which in
14462 this example is the @file{gdb-@value{GDBVN}} directory.
14463
14464 First switch to the @file{gdb-@var{version-number}} source directory
14465 if you are not already in it; then run @code{configure}. Pass the
14466 identifier for the platform on which @value{GDBN} will run as an
14467 argument.
14468
14469 For example:
14470
14471 @example
14472 cd gdb-@value{GDBVN}
14473 ./configure @var{host}
14474 make
14475 @end example
14476
14477 @noindent
14478 where @var{host} is an identifier such as @samp{sun4} or
14479 @samp{decstation}, that identifies the platform where @value{GDBN} will run.
14480 (You can often leave off @var{host}; @code{configure} tries to guess the
14481 correct value by examining your system.)
14482
14483 Running @samp{configure @var{host}} and then running @code{make} builds the
14484 @file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
14485 libraries, then @code{gdb} itself. The configured source files, and the
14486 binaries, are left in the corresponding source directories.
14487
14488 @need 750
14489 @code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
14490 system does not recognize this automatically when you run a different
14491 shell, you may need to run @code{sh} on it explicitly:
14492
14493 @example
14494 sh configure @var{host}
14495 @end example
14496
14497 If you run @code{configure} from a directory that contains source
14498 directories for multiple libraries or programs, such as the
14499 @file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
14500 creates configuration files for every directory level underneath (unless
14501 you tell it not to, with the @samp{--norecursion} option).
14502
14503 You can run the @code{configure} script from any of the
14504 subordinate directories in the @value{GDBN} distribution if you only want to
14505 configure that subdirectory, but be sure to specify a path to it.
14506
14507 For example, with version @value{GDBVN}, type the following to configure only
14508 the @code{bfd} subdirectory:
14509
14510 @example
14511 @group
14512 cd gdb-@value{GDBVN}/bfd
14513 ../configure @var{host}
14514 @end group
14515 @end example
14516
14517 You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
14518 However, you should make sure that the shell on your path (named by
14519 the @samp{SHELL} environment variable) is publicly readable. Remember
14520 that @value{GDBN} uses the shell to start your program---some systems refuse to
14521 let @value{GDBN} debug child processes whose programs are not readable.
14522
14523 @menu
14524 * Separate Objdir:: Compiling @value{GDBN} in another directory
14525 * Config Names:: Specifying names for hosts and targets
14526 * Configure Options:: Summary of options for configure
14527 @end menu
14528
14529 @node Separate Objdir
14530 @section Compiling @value{GDBN} in another directory
14531
14532 If you want to run @value{GDBN} versions for several host or target machines,
14533 you need a different @code{gdb} compiled for each combination of
14534 host and target. @code{configure} is designed to make this easy by
14535 allowing you to generate each configuration in a separate subdirectory,
14536 rather than in the source directory. If your @code{make} program
14537 handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
14538 @code{make} in each of these directories builds the @code{gdb}
14539 program specified there.
14540
14541 To build @code{gdb} in a separate directory, run @code{configure}
14542 with the @samp{--srcdir} option to specify where to find the source.
14543 (You also need to specify a path to find @code{configure}
14544 itself from your working directory. If the path to @code{configure}
14545 would be the same as the argument to @samp{--srcdir}, you can leave out
14546 the @samp{--srcdir} option; it is assumed.)
14547
14548 For example, with version @value{GDBVN}, you can build @value{GDBN} in a
14549 separate directory for a Sun 4 like this:
14550
14551 @example
14552 @group
14553 cd gdb-@value{GDBVN}
14554 mkdir ../gdb-sun4
14555 cd ../gdb-sun4
14556 ../gdb-@value{GDBVN}/configure sun4
14557 make
14558 @end group
14559 @end example
14560
14561 When @code{configure} builds a configuration using a remote source
14562 directory, it creates a tree for the binaries with the same structure
14563 (and using the same names) as the tree under the source directory. In
14564 the example, you'd find the Sun 4 library @file{libiberty.a} in the
14565 directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
14566 @file{gdb-sun4/gdb}.
14567
14568 One popular reason to build several @value{GDBN} configurations in separate
14569 directories is to configure @value{GDBN} for cross-compiling (where
14570 @value{GDBN} runs on one machine---the @dfn{host}---while debugging
14571 programs that run on another machine---the @dfn{target}).
14572 You specify a cross-debugging target by
14573 giving the @samp{--target=@var{target}} option to @code{configure}.
14574
14575 When you run @code{make} to build a program or library, you must run
14576 it in a configured directory---whatever directory you were in when you
14577 called @code{configure} (or one of its subdirectories).
14578
14579 The @code{Makefile} that @code{configure} generates in each source
14580 directory also runs recursively. If you type @code{make} in a source
14581 directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
14582 directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
14583 will build all the required libraries, and then build GDB.
14584
14585 When you have multiple hosts or targets configured in separate
14586 directories, you can run @code{make} on them in parallel (for example,
14587 if they are NFS-mounted on each of the hosts); they will not interfere
14588 with each other.
14589
14590 @node Config Names
14591 @section Specifying names for hosts and targets
14592
14593 The specifications used for hosts and targets in the @code{configure}
14594 script are based on a three-part naming scheme, but some short predefined
14595 aliases are also supported. The full naming scheme encodes three pieces
14596 of information in the following pattern:
14597
14598 @example
14599 @var{architecture}-@var{vendor}-@var{os}
14600 @end example
14601
14602 For example, you can use the alias @code{sun4} as a @var{host} argument,
14603 or as the value for @var{target} in a @code{--target=@var{target}}
14604 option. The equivalent full name is @samp{sparc-sun-sunos4}.
14605
14606 The @code{configure} script accompanying @value{GDBN} does not provide
14607 any query facility to list all supported host and target names or
14608 aliases. @code{configure} calls the Bourne shell script
14609 @code{config.sub} to map abbreviations to full names; you can read the
14610 script, if you wish, or you can use it to test your guesses on
14611 abbreviations---for example:
14612
14613 @smallexample
14614 % sh config.sub i386-linux
14615 i386-pc-linux-gnu
14616 % sh config.sub alpha-linux
14617 alpha-unknown-linux-gnu
14618 % sh config.sub hp9k700
14619 hppa1.1-hp-hpux
14620 % sh config.sub sun4
14621 sparc-sun-sunos4.1.1
14622 % sh config.sub sun3
14623 m68k-sun-sunos4.1.1
14624 % sh config.sub i986v
14625 Invalid configuration `i986v': machine `i986v' not recognized
14626 @end smallexample
14627
14628 @noindent
14629 @code{config.sub} is also distributed in the @value{GDBN} source
14630 directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
14631
14632 @node Configure Options
14633 @section @code{configure} options
14634
14635 Here is a summary of the @code{configure} options and arguments that
14636 are most often useful for building @value{GDBN}. @code{configure} also has
14637 several other options not listed here. @inforef{What Configure
14638 Does,,configure.info}, for a full explanation of @code{configure}.
14639
14640 @example
14641 configure @r{[}--help@r{]}
14642 @r{[}--prefix=@var{dir}@r{]}
14643 @r{[}--exec-prefix=@var{dir}@r{]}
14644 @r{[}--srcdir=@var{dirname}@r{]}
14645 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
14646 @r{[}--target=@var{target}@r{]}
14647 @var{host}
14648 @end example
14649
14650 @noindent
14651 You may introduce options with a single @samp{-} rather than
14652 @samp{--} if you prefer; but you may abbreviate option names if you use
14653 @samp{--}.
14654
14655 @table @code
14656 @item --help
14657 Display a quick summary of how to invoke @code{configure}.
14658
14659 @item --prefix=@var{dir}
14660 Configure the source to install programs and files under directory
14661 @file{@var{dir}}.
14662
14663 @item --exec-prefix=@var{dir}
14664 Configure the source to install programs under directory
14665 @file{@var{dir}}.
14666
14667 @c avoid splitting the warning from the explanation:
14668 @need 2000
14669 @item --srcdir=@var{dirname}
14670 @strong{Warning: using this option requires @sc{gnu} @code{make}, or another
14671 @code{make} that implements the @code{VPATH} feature.}@*
14672 Use this option to make configurations in directories separate from the
14673 @value{GDBN} source directories. Among other things, you can use this to
14674 build (or maintain) several configurations simultaneously, in separate
14675 directories. @code{configure} writes configuration specific files in
14676 the current directory, but arranges for them to use the source in the
14677 directory @var{dirname}. @code{configure} creates directories under
14678 the working directory in parallel to the source directories below
14679 @var{dirname}.
14680
14681 @item --norecursion
14682 Configure only the directory level where @code{configure} is executed; do not
14683 propagate configuration to subdirectories.
14684
14685 @item --target=@var{target}
14686 Configure @value{GDBN} for cross-debugging programs running on the specified
14687 @var{target}. Without this option, @value{GDBN} is configured to debug
14688 programs that run on the same machine (@var{host}) as @value{GDBN} itself.
14689
14690 There is no convenient way to generate a list of all available targets.
14691
14692 @item @var{host} @dots{}
14693 Configure @value{GDBN} to run on the specified @var{host}.
14694
14695 There is no convenient way to generate a list of all available hosts.
14696 @end table
14697
14698 There are many other options available as well, but they are generally
14699 needed for special purposes only.
14700
14701 @node Index
14702 @unnumbered Index
14703
14704 @printindex cp
14705
14706 @tex
14707 % I think something like @colophon should be in texinfo. In the
14708 % meantime:
14709 \long\def\colophon{\hbox to0pt{}\vfill
14710 \centerline{The body of this manual is set in}
14711 \centerline{\fontname\tenrm,}
14712 \centerline{with headings in {\bf\fontname\tenbf}}
14713 \centerline{and examples in {\tt\fontname\tentt}.}
14714 \centerline{{\it\fontname\tenit\/},}
14715 \centerline{{\bf\fontname\tenbf}, and}
14716 \centerline{{\sl\fontname\tensl\/}}
14717 \centerline{are used for emphasis.}\vfill}
14718 \page\colophon
14719 % Blame: doc@cygnus.com, 1991.
14720 @end tex
14721
14722 @c TeX can handle the contents at the start but makeinfo 3.12 can not
14723 @ifinfo
14724 @contents
14725 @end ifinfo
14726 @ifhtml
14727 @contents
14728 @end ifhtml
14729
14730 @bye
This page took 0.327336 seconds and 5 git commands to generate.