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