93a3b407593f6a503c374a51065e117a91f9e8ea
[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, 2002
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 December 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,@*
54 1999, 2000, 2001, 2002 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 ``Free Software'' and ``Free Software Needs
60 Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
61 and with the Back-Cover Texts as in (a) below.
62
63 (a) The Free Software Foundation's Back-Cover Text is: ``You have
64 freedom to copy and modify this GNU Manual, like GNU software. Copies
65 published by the Free Software Foundation raise funds for GNU
66 development.''
67 @end ifinfo
68
69 @titlepage
70 @title Debugging with @value{GDBN}
71 @subtitle The @sc{gnu} Source-Level Debugger
72 @sp 1
73 @subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
74 @subtitle @value{DATE}
75 @author Richard Stallman, Roland Pesch, Stan Shebs, et al.
76 @page
77 @tex
78 {\parskip=0pt
79 \hfill (Send bugs and comments on @value{GDBN} to bug-gdb\@gnu.org.)\par
80 \hfill {\it Debugging with @value{GDBN}}\par
81 \hfill \TeX{}info \texinfoversion\par
82 }
83 @end tex
84
85 @vskip 0pt plus 1filll
86 Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
87 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
88 @sp 2
89 Published by the Free Software Foundation @*
90 59 Temple Place - Suite 330, @*
91 Boston, MA 02111-1307 USA @*
92 ISBN 1-882114-77-9 @*
93
94 Permission is granted to copy, distribute and/or modify this document
95 under the terms of the GNU Free Documentation License, Version 1.1 or
96 any later version published by the Free Software Foundation; with the
97 Invariant Sections being ``Free Software'' and ``Free Software Needs
98 Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
99 and with the Back-Cover Texts as in (a) below.
100
101 (a) The Free Software Foundation's Back-Cover Text is: ``You have
102 freedom to copy and modify this GNU Manual, like GNU software. Copies
103 published by the Free Software Foundation raise funds for GNU
104 development.''
105 @end titlepage
106 @page
107
108 @ifinfo
109 @node Top, Summary, (dir), (dir)
110
111 @top Debugging with @value{GDBN}
112
113 This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
114
115 This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
116 @value{GDBVN}.
117
118 Copyright (C) 1988-2002 Free Software Foundation, Inc.
119
120 @menu
121 * Summary:: Summary of @value{GDBN}
122 * Sample Session:: A sample @value{GDBN} session
123
124 * Invocation:: Getting in and out of @value{GDBN}
125 * Commands:: @value{GDBN} commands
126 * Running:: Running programs under @value{GDBN}
127 * Stopping:: Stopping and continuing
128 * Stack:: Examining the stack
129 * Source:: Examining source files
130 * Data:: Examining data
131 * Tracepoints:: Debugging remote targets non-intrusively
132 * Overlays:: Debugging programs that use overlays
133
134 * Languages:: Using @value{GDBN} with different languages
135
136 * Symbols:: Examining the symbol table
137 * Altering:: Altering execution
138 * GDB Files:: @value{GDBN} files
139 * Targets:: Specifying a debugging target
140 * Remote Debugging:: Debugging remote programs
141 * Configurations:: Configuration-specific information
142 * Controlling GDB:: Controlling @value{GDBN}
143 * Sequences:: Canned sequences of commands
144 * TUI:: @value{GDBN} Text User Interface
145 * Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
146 * Annotations:: @value{GDBN}'s annotation interface.
147 * GDB/MI:: @value{GDBN}'s Machine Interface.
148
149 * GDB Bugs:: Reporting bugs in @value{GDBN}
150 * Formatting Documentation:: How to format and print @value{GDBN} documentation
151
152 * Command Line Editing:: Command Line Editing
153 * Using History Interactively:: Using History Interactively
154 * Installing GDB:: Installing GDB
155 * Maintenance Commands:: Maintenance Commands
156 * Remote Protocol:: GDB Remote Serial Protocol
157 * GNU Free Documentation License:: The license for this documentation
158 * Index:: Index
159 @end menu
160
161 @end ifinfo
162
163 @c the replication sucks, but this avoids a texinfo 3.12 lameness
164
165 @ifhtml
166 @node Top
167
168 @top Debugging with @value{GDBN}
169
170 This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
171
172 This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
173 @value{GDBVN}.
174
175 Copyright (C) 1988-2000 Free Software Foundation, Inc.
176
177 @menu
178 * Summary:: Summary of @value{GDBN}
179 * Sample Session:: A sample @value{GDBN} session
180
181 * Invocation:: Getting in and out of @value{GDBN}
182 * Commands:: @value{GDBN} commands
183 * Running:: Running programs under @value{GDBN}
184 * Stopping:: Stopping and continuing
185 * Stack:: Examining the stack
186 * Source:: Examining source files
187 * Data:: Examining data
188 * Tracepoints:: Debugging remote targets non-intrusively
189 * Overlays:: Debugging programs that use overlays
190
191 * Languages:: Using @value{GDBN} with different languages
192
193 * Symbols:: Examining the symbol table
194 * Altering:: Altering execution
195 * GDB Files:: @value{GDBN} files
196 * Targets:: Specifying a debugging target
197 * Remote Debugging:: Debugging remote programs
198 * Configurations:: Configuration-specific information
199 * Controlling GDB:: Controlling @value{GDBN}
200 * Sequences:: Canned sequences of commands
201 * TUI:: @value{GDBN} Text User Interface
202 * Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
203 * Annotations:: @value{GDBN}'s annotation interface.
204 * GDB/MI:: @value{GDBN}'s Machine Interface.
205
206 * GDB Bugs:: Reporting bugs in @value{GDBN}
207 * Formatting Documentation:: How to format and print @value{GDBN} documentation
208
209 * Command Line Editing:: Command Line Editing
210 * Using History Interactively:: Using History Interactively
211 * Installing GDB:: Installing GDB
212 * Maintenance Commands:: Maintenance Commands
213 * Remote Protocol:: GDB Remote Serial Protocol
214 * GNU Free Documentation License:: The license for this documentation
215 * Index:: Index
216 @end menu
217
218 @end ifhtml
219
220 @c TeX can handle the contents at the start but makeinfo 3.12 can not
221 @iftex
222 @contents
223 @end iftex
224
225 @node Summary
226 @unnumbered Summary of @value{GDBN}
227
228 The purpose of a debugger such as @value{GDBN} is to allow you to see what is
229 going on ``inside'' another program while it executes---or what another
230 program was doing at the moment it crashed.
231
232 @value{GDBN} can do four main kinds of things (plus other things in support of
233 these) to help you catch bugs in the act:
234
235 @itemize @bullet
236 @item
237 Start your program, specifying anything that might affect its behavior.
238
239 @item
240 Make your program stop on specified conditions.
241
242 @item
243 Examine what has happened, when your program has stopped.
244
245 @item
246 Change things in your program, so you can experiment with correcting the
247 effects of one bug and go on to learn about another.
248 @end itemize
249
250 You can use @value{GDBN} to debug programs written in C and C++.
251 For more information, see @ref{Support,,Supported languages}.
252 For more information, see @ref{C,,C and C++}.
253
254 @cindex Chill
255 @cindex Modula-2
256 Support for Modula-2 and Chill is partial. For information on Modula-2,
257 see @ref{Modula-2,,Modula-2}. For information on Chill, see @ref{Chill}.
258
259 @cindex Pascal
260 Debugging Pascal programs which use sets, subranges, file variables, or
261 nested functions does not currently work. @value{GDBN} does not support
262 entering expressions, printing values, or similar features using Pascal
263 syntax.
264
265 @cindex Fortran
266 @value{GDBN} can be used to debug programs written in Fortran, although
267 it may be necessary to refer to some variables with a trailing
268 underscore.
269
270 @menu
271 * Free Software:: Freely redistributable software
272 * Contributors:: Contributors to GDB
273 @end menu
274
275 @node Free Software
276 @unnumberedsec Free software
277
278 @value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
279 General Public License
280 (GPL). The GPL gives you the freedom to copy or adapt a licensed
281 program---but every person getting a copy also gets with it the
282 freedom to modify that copy (which means that they must get access to
283 the source code), and the freedom to distribute further copies.
284 Typical software companies use copyrights to limit your freedoms; the
285 Free Software Foundation uses the GPL to preserve these freedoms.
286
287 Fundamentally, the General Public License is a license which says that
288 you have these freedoms and that you cannot take these freedoms away
289 from anyone else.
290
291 @unnumberedsec Free Software Needs Free Documentation
292
293 The biggest deficiency in the free software community today is not in
294 the software---it is the lack of good free documentation that we can
295 include with the free software. Many of our most important
296 programs do not come with free reference manuals and free introductory
297 texts. Documentation is an essential part of any software package;
298 when an important free software package does not come with a free
299 manual and a free tutorial, that is a major gap. We have many such
300 gaps today.
301
302 Consider Perl, for instance. The tutorial manuals that people
303 normally use are non-free. How did this come about? Because the
304 authors of those manuals published them with restrictive terms---no
305 copying, no modification, source files not available---which exclude
306 them from the free software world.
307
308 That wasn't the first time this sort of thing happened, and it was far
309 from the last. Many times we have heard a GNU user eagerly describe a
310 manual that he is writing, his intended contribution to the community,
311 only to learn that he had ruined everything by signing a publication
312 contract to make it non-free.
313
314 Free documentation, like free software, is a matter of freedom, not
315 price. The problem with the non-free manual is not that publishers
316 charge a price for printed copies---that in itself is fine. (The Free
317 Software Foundation sells printed copies of manuals, too.) The
318 problem is the restrictions on the use of the manual. Free manuals
319 are available in source code form, and give you permission to copy and
320 modify. Non-free manuals do not allow this.
321
322 The criteria of freedom for a free manual are roughly the same as for
323 free software. Redistribution (including the normal kinds of
324 commercial redistribution) must be permitted, so that the manual can
325 accompany every copy of the program, both on-line and on paper.
326
327 Permission for modification of the technical content is crucial too.
328 When people modify the software, adding or changing features, if they
329 are conscientious they will change the manual too---so they can
330 provide accurate and clear documentation for the modified program. A
331 manual that leaves you no choice but to write a new manual to document
332 a changed version of the program is not really available to our
333 community.
334
335 Some kinds of limits on the way modification is handled are
336 acceptable. For example, requirements to preserve the original
337 author's copyright notice, the distribution terms, or the list of
338 authors, are ok. It is also no problem to require modified versions
339 to include notice that they were modified. Even entire sections that
340 may not be deleted or changed are acceptable, as long as they deal
341 with nontechnical topics (like this one). These kinds of restrictions
342 are acceptable because they don't obstruct the community's normal use
343 of the manual.
344
345 However, it must be possible to modify all the @emph{technical}
346 content of the manual, and then distribute the result in all the usual
347 media, through all the usual channels. Otherwise, the restrictions
348 obstruct the use of the manual, it is not free, and we need another
349 manual to replace it.
350
351 Please spread the word about this issue. Our community continues to
352 lose manuals to proprietary publishing. If we spread the word that
353 free software needs free reference manuals and free tutorials, perhaps
354 the next person who wants to contribute by writing documentation will
355 realize, before it is too late, that only free manuals contribute to
356 the free software community.
357
358 If you are writing documentation, please insist on publishing it under
359 the GNU Free Documentation License or another free documentation
360 license. Remember that this decision requires your approval---you
361 don't have to let the publisher decide. Some commercial publishers
362 will use a free license if you insist, but they will not propose the
363 option; it is up to you to raise the issue and say firmly that this is
364 what you want. If the publisher you are dealing with refuses, please
365 try other publishers. If you're not sure whether a proposed license
366 is free, write to @email{licensing@@gnu.org}.
367
368 You can encourage commercial publishers to sell more free, copylefted
369 manuals and tutorials by buying them, and particularly by buying
370 copies from the publishers that paid for their writing or for major
371 improvements. Meanwhile, try to avoid buying non-free documentation
372 at all. Check the distribution terms of a manual before you buy it,
373 and insist that whoever seeks your business must respect your freedom.
374 Check the history of the book, and try to reward the publishers that
375 have paid or pay the authors to work on it.
376
377 The Free Software Foundation maintains a list of free documentation
378 published by other publishers, at
379 @url{http://www.fsf.org/doc/other-free-books.html}.
380
381 @node Contributors
382 @unnumberedsec Contributors to @value{GDBN}
383
384 Richard Stallman was the original author of @value{GDBN}, and of many
385 other @sc{gnu} programs. Many others have contributed to its
386 development. This section attempts to credit major contributors. One
387 of the virtues of free software is that everyone is free to contribute
388 to it; with regret, we cannot actually acknowledge everyone here. The
389 file @file{ChangeLog} in the @value{GDBN} distribution approximates a
390 blow-by-blow account.
391
392 Changes much prior to version 2.0 are lost in the mists of time.
393
394 @quotation
395 @emph{Plea:} Additions to this section are particularly welcome. If you
396 or your friends (or enemies, to be evenhanded) have been unfairly
397 omitted from this list, we would like to add your names!
398 @end quotation
399
400 So that they may not regard their many labors as thankless, we
401 particularly thank those who shepherded @value{GDBN} through major
402 releases:
403 Andrew Cagney (releases 5.0 and 5.1);
404 Jim Blandy (release 4.18);
405 Jason Molenda (release 4.17);
406 Stan Shebs (release 4.14);
407 Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
408 Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
409 John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
410 Jim Kingdon (releases 3.5, 3.4, and 3.3);
411 and Randy Smith (releases 3.2, 3.1, and 3.0).
412
413 Richard Stallman, assisted at various times by Peter TerMaat, Chris
414 Hanson, and Richard Mlynarik, handled releases through 2.8.
415
416 Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
417 in @value{GDBN}, with significant additional contributions from Per
418 Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
419 demangler. Early work on C@t{++} was by Peter TerMaat (who also did
420 much general update work leading to release 3.0).
421
422 @value{GDBN} uses the BFD subroutine library to examine multiple
423 object-file formats; BFD was a joint project of David V.
424 Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
425
426 David Johnson wrote the original COFF support; Pace Willison did
427 the original support for encapsulated COFF.
428
429 Brent Benson of Harris Computer Systems contributed DWARF2 support.
430
431 Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
432 Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
433 support.
434 Jean-Daniel Fekete contributed Sun 386i support.
435 Chris Hanson improved the HP9000 support.
436 Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
437 David Johnson contributed Encore Umax support.
438 Jyrki Kuoppala contributed Altos 3068 support.
439 Jeff Law contributed HP PA and SOM support.
440 Keith Packard contributed NS32K support.
441 Doug Rabson contributed Acorn Risc Machine support.
442 Bob Rusk contributed Harris Nighthawk CX-UX support.
443 Chris Smith contributed Convex support (and Fortran debugging).
444 Jonathan Stone contributed Pyramid support.
445 Michael Tiemann contributed SPARC support.
446 Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
447 Pace Willison contributed Intel 386 support.
448 Jay Vosburgh contributed Symmetry support.
449
450 Andreas Schwab contributed M68K Linux support.
451
452 Rich Schaefer and Peter Schauer helped with support of SunOS shared
453 libraries.
454
455 Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
456 about several machine instruction sets.
457
458 Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
459 remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
460 contributed remote debugging modules for the i960, VxWorks, A29K UDI,
461 and RDI targets, respectively.
462
463 Brian Fox is the author of the readline libraries providing
464 command-line editing and command history.
465
466 Andrew Beers of SUNY Buffalo wrote the language-switching code, the
467 Modula-2 support, and contributed the Languages chapter of this manual.
468
469 Fred Fish wrote most of the support for Unix System Vr4.
470 He also enhanced the command-completion support to cover C@t{++} overloaded
471 symbols.
472
473 Hitachi America, Ltd. sponsored the support for H8/300, H8/500, and
474 Super-H processors.
475
476 NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
477
478 Mitsubishi sponsored the support for D10V, D30V, and M32R/D processors.
479
480 Toshiba sponsored the support for the TX39 Mips processor.
481
482 Matsushita sponsored the support for the MN10200 and MN10300 processors.
483
484 Fujitsu sponsored the support for SPARClite and FR30 processors.
485
486 Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
487 watchpoints.
488
489 Michael Snyder added support for tracepoints.
490
491 Stu Grossman wrote gdbserver.
492
493 Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
494 nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
495
496 The following people at the Hewlett-Packard Company contributed
497 support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
498 (narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
499 compiler, and the terminal user interface: Ben Krepp, Richard Title,
500 John Bishop, Susan Macchia, Kathy Mann, Satish Pai, India Paul, Steve
501 Rehrauer, and Elena Zannoni. Kim Haase provided HP-specific
502 information in this manual.
503
504 DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
505 Robert Hoehne made significant contributions to the DJGPP port.
506
507 Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
508 development since 1991. Cygnus engineers who have worked on @value{GDBN}
509 fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
510 Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
511 Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
512 Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
513 Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
514 addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
515 JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
516 Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
517 Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
518 Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
519 Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
520 Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
521 Zuhn have made contributions both large and small.
522
523
524 @node Sample Session
525 @chapter A Sample @value{GDBN} Session
526
527 You can use this manual at your leisure to read all about @value{GDBN}.
528 However, a handful of commands are enough to get started using the
529 debugger. This chapter illustrates those commands.
530
531 @iftex
532 In this sample session, we emphasize user input like this: @b{input},
533 to make it easier to pick out from the surrounding output.
534 @end iftex
535
536 @c FIXME: this example may not be appropriate for some configs, where
537 @c FIXME...primary interest is in remote use.
538
539 One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
540 processor) exhibits the following bug: sometimes, when we change its
541 quote strings from the default, the commands used to capture one macro
542 definition within another stop working. In the following short @code{m4}
543 session, we define a macro @code{foo} which expands to @code{0000}; we
544 then use the @code{m4} built-in @code{defn} to define @code{bar} as the
545 same thing. However, when we change the open quote string to
546 @code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
547 procedure fails to define a new synonym @code{baz}:
548
549 @smallexample
550 $ @b{cd gnu/m4}
551 $ @b{./m4}
552 @b{define(foo,0000)}
553
554 @b{foo}
555 0000
556 @b{define(bar,defn(`foo'))}
557
558 @b{bar}
559 0000
560 @b{changequote(<QUOTE>,<UNQUOTE>)}
561
562 @b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
563 @b{baz}
564 @b{C-d}
565 m4: End of input: 0: fatal error: EOF in string
566 @end smallexample
567
568 @noindent
569 Let us use @value{GDBN} to try to see what is going on.
570
571 @smallexample
572 $ @b{@value{GDBP} m4}
573 @c FIXME: this falsifies the exact text played out, to permit smallbook
574 @c FIXME... format to come out better.
575 @value{GDBN} is free software and you are welcome to distribute copies
576 of it under certain conditions; type "show copying" to see
577 the conditions.
578 There is absolutely no warranty for @value{GDBN}; type "show warranty"
579 for details.
580
581 @value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
582 (@value{GDBP})
583 @end smallexample
584
585 @noindent
586 @value{GDBN} reads only enough symbol data to know where to find the
587 rest when needed; as a result, the first prompt comes up very quickly.
588 We now tell @value{GDBN} to use a narrower display width than usual, so
589 that examples fit in this manual.
590
591 @smallexample
592 (@value{GDBP}) @b{set width 70}
593 @end smallexample
594
595 @noindent
596 We need to see how the @code{m4} built-in @code{changequote} works.
597 Having looked at the source, we know the relevant subroutine is
598 @code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
599 @code{break} command.
600
601 @smallexample
602 (@value{GDBP}) @b{break m4_changequote}
603 Breakpoint 1 at 0x62f4: file builtin.c, line 879.
604 @end smallexample
605
606 @noindent
607 Using the @code{run} command, we start @code{m4} running under @value{GDBN}
608 control; as long as control does not reach the @code{m4_changequote}
609 subroutine, the program runs as usual:
610
611 @smallexample
612 (@value{GDBP}) @b{run}
613 Starting program: /work/Editorial/gdb/gnu/m4/m4
614 @b{define(foo,0000)}
615
616 @b{foo}
617 0000
618 @end smallexample
619
620 @noindent
621 To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
622 suspends execution of @code{m4}, displaying information about the
623 context where it stops.
624
625 @smallexample
626 @b{changequote(<QUOTE>,<UNQUOTE>)}
627
628 Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
629 at builtin.c:879
630 879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
631 @end smallexample
632
633 @noindent
634 Now we use the command @code{n} (@code{next}) to advance execution to
635 the next line of the current function.
636
637 @smallexample
638 (@value{GDBP}) @b{n}
639 882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
640 : nil,
641 @end smallexample
642
643 @noindent
644 @code{set_quotes} looks like a promising subroutine. We can go into it
645 by using the command @code{s} (@code{step}) instead of @code{next}.
646 @code{step} goes to the next line to be executed in @emph{any}
647 subroutine, so it steps into @code{set_quotes}.
648
649 @smallexample
650 (@value{GDBP}) @b{s}
651 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
652 at input.c:530
653 530 if (lquote != def_lquote)
654 @end smallexample
655
656 @noindent
657 The display that shows the subroutine where @code{m4} is now
658 suspended (and its arguments) is called a stack frame display. It
659 shows a summary of the stack. We can use the @code{backtrace}
660 command (which can also be spelled @code{bt}), to see where we are
661 in the stack as a whole: the @code{backtrace} command displays a
662 stack frame for each active subroutine.
663
664 @smallexample
665 (@value{GDBP}) @b{bt}
666 #0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
667 at input.c:530
668 #1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
669 at builtin.c:882
670 #2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
671 #3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
672 at macro.c:71
673 #4 0x79dc in expand_input () at macro.c:40
674 #5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
675 @end smallexample
676
677 @noindent
678 We step through a few more lines to see what happens. The first two
679 times, we can use @samp{s}; the next two times we use @code{n} to avoid
680 falling into the @code{xstrdup} subroutine.
681
682 @smallexample
683 (@value{GDBP}) @b{s}
684 0x3b5c 532 if (rquote != def_rquote)
685 (@value{GDBP}) @b{s}
686 0x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
687 def_lquote : xstrdup(lq);
688 (@value{GDBP}) @b{n}
689 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
690 : xstrdup(rq);
691 (@value{GDBP}) @b{n}
692 538 len_lquote = strlen(rquote);
693 @end smallexample
694
695 @noindent
696 The last line displayed looks a little odd; we can examine the variables
697 @code{lquote} and @code{rquote} to see if they are in fact the new left
698 and right quotes we specified. We use the command @code{p}
699 (@code{print}) to see their values.
700
701 @smallexample
702 (@value{GDBP}) @b{p lquote}
703 $1 = 0x35d40 "<QUOTE>"
704 (@value{GDBP}) @b{p rquote}
705 $2 = 0x35d50 "<UNQUOTE>"
706 @end smallexample
707
708 @noindent
709 @code{lquote} and @code{rquote} are indeed the new left and right quotes.
710 To look at some context, we can display ten lines of source
711 surrounding the current line with the @code{l} (@code{list}) command.
712
713 @smallexample
714 (@value{GDBP}) @b{l}
715 533 xfree(rquote);
716 534
717 535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
718 : xstrdup (lq);
719 536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
720 : xstrdup (rq);
721 537
722 538 len_lquote = strlen(rquote);
723 539 len_rquote = strlen(lquote);
724 540 @}
725 541
726 542 void
727 @end smallexample
728
729 @noindent
730 Let us step past the two lines that set @code{len_lquote} and
731 @code{len_rquote}, and then examine the values of those variables.
732
733 @smallexample
734 (@value{GDBP}) @b{n}
735 539 len_rquote = strlen(lquote);
736 (@value{GDBP}) @b{n}
737 540 @}
738 (@value{GDBP}) @b{p len_lquote}
739 $3 = 9
740 (@value{GDBP}) @b{p len_rquote}
741 $4 = 7
742 @end smallexample
743
744 @noindent
745 That certainly looks wrong, assuming @code{len_lquote} and
746 @code{len_rquote} are meant to be the lengths of @code{lquote} and
747 @code{rquote} respectively. We can set them to better values using
748 the @code{p} command, since it can print the value of
749 any expression---and that expression can include subroutine calls and
750 assignments.
751
752 @smallexample
753 (@value{GDBP}) @b{p len_lquote=strlen(lquote)}
754 $5 = 7
755 (@value{GDBP}) @b{p len_rquote=strlen(rquote)}
756 $6 = 9
757 @end smallexample
758
759 @noindent
760 Is that enough to fix the problem of using the new quotes with the
761 @code{m4} built-in @code{defn}? We can allow @code{m4} to continue
762 executing with the @code{c} (@code{continue}) command, and then try the
763 example that caused trouble initially:
764
765 @smallexample
766 (@value{GDBP}) @b{c}
767 Continuing.
768
769 @b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
770
771 baz
772 0000
773 @end smallexample
774
775 @noindent
776 Success! The new quotes now work just as well as the default ones. The
777 problem seems to have been just the two typos defining the wrong
778 lengths. We allow @code{m4} exit by giving it an EOF as input:
779
780 @smallexample
781 @b{C-d}
782 Program exited normally.
783 @end smallexample
784
785 @noindent
786 The message @samp{Program exited normally.} is from @value{GDBN}; it
787 indicates @code{m4} has finished executing. We can end our @value{GDBN}
788 session with the @value{GDBN} @code{quit} command.
789
790 @smallexample
791 (@value{GDBP}) @b{quit}
792 @end smallexample
793
794 @node Invocation
795 @chapter Getting In and Out of @value{GDBN}
796
797 This chapter discusses how to start @value{GDBN}, and how to get out of it.
798 The essentials are:
799 @itemize @bullet
800 @item
801 type @samp{@value{GDBP}} to start @value{GDBN}.
802 @item
803 type @kbd{quit} or @kbd{C-d} to exit.
804 @end itemize
805
806 @menu
807 * Invoking GDB:: How to start @value{GDBN}
808 * Quitting GDB:: How to quit @value{GDBN}
809 * Shell Commands:: How to use shell commands inside @value{GDBN}
810 @end menu
811
812 @node Invoking GDB
813 @section Invoking @value{GDBN}
814
815 Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
816 @value{GDBN} reads commands from the terminal until you tell it to exit.
817
818 You can also run @code{@value{GDBP}} with a variety of arguments and options,
819 to specify more of your debugging environment at the outset.
820
821 The command-line options described here are designed
822 to cover a variety of situations; in some environments, some of these
823 options may effectively be unavailable.
824
825 The most usual way to start @value{GDBN} is with one argument,
826 specifying an executable program:
827
828 @example
829 @value{GDBP} @var{program}
830 @end example
831
832 @noindent
833 You can also start with both an executable program and a core file
834 specified:
835
836 @example
837 @value{GDBP} @var{program} @var{core}
838 @end example
839
840 You can, instead, specify a process ID as a second argument, if you want
841 to debug a running process:
842
843 @example
844 @value{GDBP} @var{program} 1234
845 @end example
846
847 @noindent
848 would attach @value{GDBN} to process @code{1234} (unless you also have a file
849 named @file{1234}; @value{GDBN} does check for a core file first).
850
851 Taking advantage of the second command-line argument requires a fairly
852 complete operating system; when you use @value{GDBN} as a remote
853 debugger attached to a bare board, there may not be any notion of
854 ``process'', and there is often no way to get a core dump. @value{GDBN}
855 will warn you if it is unable to attach or to read core dumps.
856
857 You can optionally have @code{@value{GDBP}} pass any arguments after the
858 executable file to the inferior using @code{--args}. This option stops
859 option processing.
860 @example
861 gdb --args gcc -O2 -c foo.c
862 @end example
863 This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
864 @code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
865
866 You can run @code{@value{GDBP}} without printing the front material, which describes
867 @value{GDBN}'s non-warranty, by specifying @code{-silent}:
868
869 @smallexample
870 @value{GDBP} -silent
871 @end smallexample
872
873 @noindent
874 You can further control how @value{GDBN} starts up by using command-line
875 options. @value{GDBN} itself can remind you of the options available.
876
877 @noindent
878 Type
879
880 @example
881 @value{GDBP} -help
882 @end example
883
884 @noindent
885 to display all available options and briefly describe their use
886 (@samp{@value{GDBP} -h} is a shorter equivalent).
887
888 All options and command line arguments you give are processed
889 in sequential order. The order makes a difference when the
890 @samp{-x} option is used.
891
892
893 @menu
894 * File Options:: Choosing files
895 * Mode Options:: Choosing modes
896 @end menu
897
898 @node File Options
899 @subsection Choosing files
900
901 When @value{GDBN} starts, it reads any arguments other than options as
902 specifying an executable file and core file (or process ID). This is
903 the same as if the arguments were specified by the @samp{-se} and
904 @samp{-c} (or @samp{-p} options respectively. (@value{GDBN} reads the
905 first argument that does not have an associated option flag as
906 equivalent to the @samp{-se} option followed by that argument; and the
907 second argument that does not have an associated option flag, if any, as
908 equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
909 If the second argument begins with a decimal digit, @value{GDBN} will
910 first attempt to attach to it as a process, and if that fails, attempt
911 to open it as a corefile. If you have a corefile whose name begins with
912 a digit, you can prevent @value{GDBN} from treating it as a pid by
913 prefixing it with @file{./}, eg. @file{./12345}.
914
915 If @value{GDBN} has not been configured to included core file support,
916 such as for most embedded targets, then it will complain about a second
917 argument and ignore it.
918
919 Many options have both long and short forms; both are shown in the
920 following list. @value{GDBN} also recognizes the long forms if you truncate
921 them, so long as enough of the option is present to be unambiguous.
922 (If you prefer, you can flag option arguments with @samp{--} rather
923 than @samp{-}, though we illustrate the more usual convention.)
924
925 @c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
926 @c way, both those who look for -foo and --foo in the index, will find
927 @c it.
928
929 @table @code
930 @item -symbols @var{file}
931 @itemx -s @var{file}
932 @cindex @code{--symbols}
933 @cindex @code{-s}
934 Read symbol table from file @var{file}.
935
936 @item -exec @var{file}
937 @itemx -e @var{file}
938 @cindex @code{--exec}
939 @cindex @code{-e}
940 Use file @var{file} as the executable file to execute when appropriate,
941 and for examining pure data in conjunction with a core dump.
942
943 @item -se @var{file}
944 @cindex @code{--se}
945 Read symbol table from file @var{file} and use it as the executable
946 file.
947
948 @item -core @var{file}
949 @itemx -c @var{file}
950 @cindex @code{--core}
951 @cindex @code{-c}
952 Use file @var{file} as a core dump to examine.
953
954 @item -c @var{number}
955 @item -pid @var{number}
956 @itemx -p @var{number}
957 @cindex @code{--pid}
958 @cindex @code{-p}
959 Connect to process ID @var{number}, as with the @code{attach} command.
960 If there is no such process, @value{GDBN} will attempt to open a core
961 file named @var{number}.
962
963 @item -command @var{file}
964 @itemx -x @var{file}
965 @cindex @code{--command}
966 @cindex @code{-x}
967 Execute @value{GDBN} commands from file @var{file}. @xref{Command
968 Files,, Command files}.
969
970 @item -directory @var{directory}
971 @itemx -d @var{directory}
972 @cindex @code{--directory}
973 @cindex @code{-d}
974 Add @var{directory} to the path to search for source files.
975
976 @item -m
977 @itemx -mapped
978 @cindex @code{--mapped}
979 @cindex @code{-m}
980 @emph{Warning: this option depends on operating system facilities that are not
981 supported on all systems.}@*
982 If memory-mapped files are available on your system through the @code{mmap}
983 system call, you can use this option
984 to have @value{GDBN} write the symbols from your
985 program into a reusable file in the current directory. If the program you are debugging is
986 called @file{/tmp/fred}, the mapped symbol file is @file{/tmp/fred.syms}.
987 Future @value{GDBN} debugging sessions notice the presence of this file,
988 and can quickly map in symbol information from it, rather than reading
989 the symbol table from the executable program.
990
991 The @file{.syms} file is specific to the host machine where @value{GDBN}
992 is run. It holds an exact image of the internal @value{GDBN} symbol
993 table. It cannot be shared across multiple host platforms.
994
995 @item -r
996 @itemx -readnow
997 @cindex @code{--readnow}
998 @cindex @code{-r}
999 Read each symbol file's entire symbol table immediately, rather than
1000 the default, which is to read it incrementally as it is needed.
1001 This makes startup slower, but makes future operations faster.
1002
1003 @end table
1004
1005 You typically combine the @code{-mapped} and @code{-readnow} options in
1006 order to build a @file{.syms} file that contains complete symbol
1007 information. (@xref{Files,,Commands to specify files}, for information
1008 on @file{.syms} files.) A simple @value{GDBN} invocation to do nothing
1009 but build a @file{.syms} file for future use is:
1010
1011 @example
1012 gdb -batch -nx -mapped -readnow programname
1013 @end example
1014
1015 @node Mode Options
1016 @subsection Choosing modes
1017
1018 You can run @value{GDBN} in various alternative modes---for example, in
1019 batch mode or quiet mode.
1020
1021 @table @code
1022 @item -nx
1023 @itemx -n
1024 @cindex @code{--nx}
1025 @cindex @code{-n}
1026 Do not execute commands found in any initialization files. Normally,
1027 @value{GDBN} executes the commands in these files after all the command
1028 options and arguments have been processed. @xref{Command Files,,Command
1029 files}.
1030
1031 @item -quiet
1032 @itemx -silent
1033 @itemx -q
1034 @cindex @code{--quiet}
1035 @cindex @code{--silent}
1036 @cindex @code{-q}
1037 ``Quiet''. Do not print the introductory and copyright messages. These
1038 messages are also suppressed in batch mode.
1039
1040 @item -batch
1041 @cindex @code{--batch}
1042 Run in batch mode. Exit with status @code{0} after processing all the
1043 command files specified with @samp{-x} (and all commands from
1044 initialization files, if not inhibited with @samp{-n}). Exit with
1045 nonzero status if an error occurs in executing the @value{GDBN} commands
1046 in the command files.
1047
1048 Batch mode may be useful for running @value{GDBN} as a filter, for
1049 example to download and run a program on another computer; in order to
1050 make this more useful, the message
1051
1052 @example
1053 Program exited normally.
1054 @end example
1055
1056 @noindent
1057 (which is ordinarily issued whenever a program running under
1058 @value{GDBN} control terminates) is not issued when running in batch
1059 mode.
1060
1061 @item -nowindows
1062 @itemx -nw
1063 @cindex @code{--nowindows}
1064 @cindex @code{-nw}
1065 ``No windows''. If @value{GDBN} comes with a graphical user interface
1066 (GUI) built in, then this option tells @value{GDBN} to only use the command-line
1067 interface. If no GUI is available, this option has no effect.
1068
1069 @item -windows
1070 @itemx -w
1071 @cindex @code{--windows}
1072 @cindex @code{-w}
1073 If @value{GDBN} includes a GUI, then this option requires it to be
1074 used if possible.
1075
1076 @item -cd @var{directory}
1077 @cindex @code{--cd}
1078 Run @value{GDBN} using @var{directory} as its working directory,
1079 instead of the current directory.
1080
1081 @item -fullname
1082 @itemx -f
1083 @cindex @code{--fullname}
1084 @cindex @code{-f}
1085 @sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1086 subprocess. It tells @value{GDBN} to output the full file name and line
1087 number in a standard, recognizable fashion each time a stack frame is
1088 displayed (which includes each time your program stops). This
1089 recognizable format looks like two @samp{\032} characters, followed by
1090 the file name, line number and character position separated by colons,
1091 and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1092 @samp{\032} characters as a signal to display the source code for the
1093 frame.
1094
1095 @item -epoch
1096 @cindex @code{--epoch}
1097 The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1098 @value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1099 routines so as to allow Epoch to display values of expressions in a
1100 separate window.
1101
1102 @item -annotate @var{level}
1103 @cindex @code{--annotate}
1104 This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1105 effect is identical to using @samp{set annotate @var{level}}
1106 (@pxref{Annotations}).
1107 Annotation level controls how much information does @value{GDBN} print
1108 together with its prompt, values of expressions, source lines, and other
1109 types of output. Level 0 is the normal, level 1 is for use when
1110 @value{GDBN} is run as a subprocess of @sc{gnu} Emacs, level 2 is the
1111 maximum annotation suitable for programs that control @value{GDBN}.
1112
1113 @item -async
1114 @cindex @code{--async}
1115 Use the asynchronous event loop for the command-line interface.
1116 @value{GDBN} processes all events, such as user keyboard input, via a
1117 special event loop. This allows @value{GDBN} to accept and process user
1118 commands in parallel with the debugged process being
1119 run@footnote{@value{GDBN} built with @sc{djgpp} tools for
1120 MS-DOS/MS-Windows supports this mode of operation, but the event loop is
1121 suspended when the debuggee runs.}, so you don't need to wait for
1122 control to return to @value{GDBN} before you type the next command.
1123 (@emph{Note:} as of version 5.1, the target side of the asynchronous
1124 operation is not yet in place, so @samp{-async} does not work fully
1125 yet.)
1126 @c FIXME: when the target side of the event loop is done, the above NOTE
1127 @c should be removed.
1128
1129 When the standard input is connected to a terminal device, @value{GDBN}
1130 uses the asynchronous event loop by default, unless disabled by the
1131 @samp{-noasync} option.
1132
1133 @item -noasync
1134 @cindex @code{--noasync}
1135 Disable the asynchronous event loop for the command-line interface.
1136
1137 @item --args
1138 @cindex @code{--args}
1139 Change interpretation of command line so that arguments following the
1140 executable file are passed as command line arguments to the inferior.
1141 This option stops option processing.
1142
1143 @item -baud @var{bps}
1144 @itemx -b @var{bps}
1145 @cindex @code{--baud}
1146 @cindex @code{-b}
1147 Set the line speed (baud rate or bits per second) of any serial
1148 interface used by @value{GDBN} for remote debugging.
1149
1150 @item -tty @var{device}
1151 @itemx -t @var{device}
1152 @cindex @code{--tty}
1153 @cindex @code{-t}
1154 Run using @var{device} for your program's standard input and output.
1155 @c FIXME: kingdon thinks there is more to -tty. Investigate.
1156
1157 @c resolve the situation of these eventually
1158 @item -tui
1159 @cindex @code{--tui}
1160 Activate the Terminal User Interface when starting.
1161 The Terminal User Interface manages several text windows on the terminal,
1162 showing source, assembly, registers and @value{GDBN} command outputs
1163 (@pxref{TUI, ,@value{GDBN} Text User Interface}).
1164 Do not use this option if you run @value{GDBN} from Emacs
1165 (@pxref{Emacs, ,Using @value{GDBN} under @sc{gnu} Emacs}).
1166
1167 @c @item -xdb
1168 @c @cindex @code{--xdb}
1169 @c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1170 @c For information, see the file @file{xdb_trans.html}, which is usually
1171 @c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1172 @c systems.
1173
1174 @item -interpreter @var{interp}
1175 @cindex @code{--interpreter}
1176 Use the interpreter @var{interp} for interface with the controlling
1177 program or device. This option is meant to be set by programs which
1178 communicate with @value{GDBN} using it as a back end.
1179
1180 @samp{--interpreter=mi} (or @samp{--interpreter=mi1}) causes
1181 @value{GDBN} to use the @dfn{gdb/mi interface} (@pxref{GDB/MI, , The
1182 @sc{gdb/mi} Interface}). The older @sc{gdb/mi} interface, included in
1183 @value{GDBN} version 5.0 can be selected with @samp{--interpreter=mi0}.
1184
1185 @item -write
1186 @cindex @code{--write}
1187 Open the executable and core files for both reading and writing. This
1188 is equivalent to the @samp{set write on} command inside @value{GDBN}
1189 (@pxref{Patching}).
1190
1191 @item -statistics
1192 @cindex @code{--statistics}
1193 This option causes @value{GDBN} to print statistics about time and
1194 memory usage after it completes each command and returns to the prompt.
1195
1196 @item -version
1197 @cindex @code{--version}
1198 This option causes @value{GDBN} to print its version number and
1199 no-warranty blurb, and exit.
1200
1201 @end table
1202
1203 @node Quitting GDB
1204 @section Quitting @value{GDBN}
1205 @cindex exiting @value{GDBN}
1206 @cindex leaving @value{GDBN}
1207
1208 @table @code
1209 @kindex quit @r{[}@var{expression}@r{]}
1210 @kindex q @r{(@code{quit})}
1211 @item quit @r{[}@var{expression}@r{]}
1212 @itemx q
1213 To exit @value{GDBN}, use the @code{quit} command (abbreviated
1214 @code{q}), or type an end-of-file character (usually @kbd{C-d}). If you
1215 do not supply @var{expression}, @value{GDBN} will terminate normally;
1216 otherwise it will terminate using the result of @var{expression} as the
1217 error code.
1218 @end table
1219
1220 @cindex interrupt
1221 An interrupt (often @kbd{C-c}) does not exit from @value{GDBN}, but rather
1222 terminates the action of any @value{GDBN} command that is in progress and
1223 returns to @value{GDBN} command level. It is safe to type the interrupt
1224 character at any time because @value{GDBN} does not allow it to take effect
1225 until a time when it is safe.
1226
1227 If you have been using @value{GDBN} to control an attached process or
1228 device, you can release it with the @code{detach} command
1229 (@pxref{Attach, ,Debugging an already-running process}).
1230
1231 @node Shell Commands
1232 @section Shell commands
1233
1234 If you need to execute occasional shell commands during your
1235 debugging session, there is no need to leave or suspend @value{GDBN}; you can
1236 just use the @code{shell} command.
1237
1238 @table @code
1239 @kindex shell
1240 @cindex shell escape
1241 @item shell @var{command string}
1242 Invoke a standard shell to execute @var{command string}.
1243 If it exists, the environment variable @code{SHELL} determines which
1244 shell to run. Otherwise @value{GDBN} uses the default shell
1245 (@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
1246 @end table
1247
1248 The utility @code{make} is often needed in development environments.
1249 You do not have to use the @code{shell} command for this purpose in
1250 @value{GDBN}:
1251
1252 @table @code
1253 @kindex make
1254 @cindex calling make
1255 @item make @var{make-args}
1256 Execute the @code{make} program with the specified
1257 arguments. This is equivalent to @samp{shell make @var{make-args}}.
1258 @end table
1259
1260 @node Commands
1261 @chapter @value{GDBN} Commands
1262
1263 You can abbreviate a @value{GDBN} command to the first few letters of the command
1264 name, if that abbreviation is unambiguous; and you can repeat certain
1265 @value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1266 key to get @value{GDBN} to fill out the rest of a word in a command (or to
1267 show you the alternatives available, if there is more than one possibility).
1268
1269 @menu
1270 * Command Syntax:: How to give commands to @value{GDBN}
1271 * Completion:: Command completion
1272 * Help:: How to ask @value{GDBN} for help
1273 @end menu
1274
1275 @node Command Syntax
1276 @section Command syntax
1277
1278 A @value{GDBN} command is a single line of input. There is no limit on
1279 how long it can be. It starts with a command name, which is followed by
1280 arguments whose meaning depends on the command name. For example, the
1281 command @code{step} accepts an argument which is the number of times to
1282 step, as in @samp{step 5}. You can also use the @code{step} command
1283 with no arguments. Some commands do not allow any arguments.
1284
1285 @cindex abbreviation
1286 @value{GDBN} command names may always be truncated if that abbreviation is
1287 unambiguous. Other possible command abbreviations are listed in the
1288 documentation for individual commands. In some cases, even ambiguous
1289 abbreviations are allowed; for example, @code{s} is specially defined as
1290 equivalent to @code{step} even though there are other commands whose
1291 names start with @code{s}. You can test abbreviations by using them as
1292 arguments to the @code{help} command.
1293
1294 @cindex repeating commands
1295 @kindex RET @r{(repeat last command)}
1296 A blank line as input to @value{GDBN} (typing just @key{RET}) means to
1297 repeat the previous command. Certain commands (for example, @code{run})
1298 will not repeat this way; these are commands whose unintentional
1299 repetition might cause trouble and which you are unlikely to want to
1300 repeat.
1301
1302 The @code{list} and @code{x} commands, when you repeat them with
1303 @key{RET}, construct new arguments rather than repeating
1304 exactly as typed. This permits easy scanning of source or memory.
1305
1306 @value{GDBN} can also use @key{RET} in another way: to partition lengthy
1307 output, in a way similar to the common utility @code{more}
1308 (@pxref{Screen Size,,Screen size}). Since it is easy to press one
1309 @key{RET} too many in this situation, @value{GDBN} disables command
1310 repetition after any command that generates this sort of display.
1311
1312 @kindex # @r{(a comment)}
1313 @cindex comment
1314 Any text from a @kbd{#} to the end of the line is a comment; it does
1315 nothing. This is useful mainly in command files (@pxref{Command
1316 Files,,Command files}).
1317
1318 @cindex repeating command sequences
1319 @kindex C-o @r{(operate-and-get-next)}
1320 The @kbd{C-o} binding is useful for repeating a complex sequence of
1321 commands. This command accepts the current line, like @kbd{RET}, and
1322 then fetches the next line relative to the current line from the history
1323 for editing.
1324
1325 @node Completion
1326 @section Command completion
1327
1328 @cindex completion
1329 @cindex word completion
1330 @value{GDBN} can fill in the rest of a word in a command for you, if there is
1331 only one possibility; it can also show you what the valid possibilities
1332 are for the next word in a command, at any time. This works for @value{GDBN}
1333 commands, @value{GDBN} subcommands, and the names of symbols in your program.
1334
1335 Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1336 of a word. If there is only one possibility, @value{GDBN} fills in the
1337 word, and waits for you to finish the command (or press @key{RET} to
1338 enter it). For example, if you type
1339
1340 @c FIXME "@key" does not distinguish its argument sufficiently to permit
1341 @c complete accuracy in these examples; space introduced for clarity.
1342 @c If texinfo enhancements make it unnecessary, it would be nice to
1343 @c replace " @key" by "@key" in the following...
1344 @example
1345 (@value{GDBP}) info bre @key{TAB}
1346 @end example
1347
1348 @noindent
1349 @value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1350 the only @code{info} subcommand beginning with @samp{bre}:
1351
1352 @example
1353 (@value{GDBP}) info breakpoints
1354 @end example
1355
1356 @noindent
1357 You can either press @key{RET} at this point, to run the @code{info
1358 breakpoints} command, or backspace and enter something else, if
1359 @samp{breakpoints} does not look like the command you expected. (If you
1360 were sure you wanted @code{info breakpoints} in the first place, you
1361 might as well just type @key{RET} immediately after @samp{info bre},
1362 to exploit command abbreviations rather than command completion).
1363
1364 If there is more than one possibility for the next word when you press
1365 @key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1366 characters and try again, or just press @key{TAB} a second time;
1367 @value{GDBN} displays all the possible completions for that word. For
1368 example, you might want to set a breakpoint on a subroutine whose name
1369 begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1370 just sounds the bell. Typing @key{TAB} again displays all the
1371 function names in your program that begin with those characters, for
1372 example:
1373
1374 @example
1375 (@value{GDBP}) b make_ @key{TAB}
1376 @exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
1377 make_a_section_from_file make_environ
1378 make_abs_section make_function_type
1379 make_blockvector make_pointer_type
1380 make_cleanup make_reference_type
1381 make_command make_symbol_completion_list
1382 (@value{GDBP}) b make_
1383 @end example
1384
1385 @noindent
1386 After displaying the available possibilities, @value{GDBN} copies your
1387 partial input (@samp{b make_} in the example) so you can finish the
1388 command.
1389
1390 If you just want to see the list of alternatives in the first place, you
1391 can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
1392 means @kbd{@key{META} ?}. You can type this either by holding down a
1393 key designated as the @key{META} shift on your keyboard (if there is
1394 one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
1395
1396 @cindex quotes in commands
1397 @cindex completion of quoted strings
1398 Sometimes the string you need, while logically a ``word'', may contain
1399 parentheses or other characters that @value{GDBN} normally excludes from
1400 its notion of a word. To permit word completion to work in this
1401 situation, you may enclose words in @code{'} (single quote marks) in
1402 @value{GDBN} commands.
1403
1404 The most likely situation where you might need this is in typing the
1405 name of a C@t{++} function. This is because C@t{++} allows function
1406 overloading (multiple definitions of the same function, distinguished
1407 by argument type). For example, when you want to set a breakpoint you
1408 may need to distinguish whether you mean the version of @code{name}
1409 that takes an @code{int} parameter, @code{name(int)}, or the version
1410 that takes a @code{float} parameter, @code{name(float)}. To use the
1411 word-completion facilities in this situation, type a single quote
1412 @code{'} at the beginning of the function name. This alerts
1413 @value{GDBN} that it may need to consider more information than usual
1414 when you press @key{TAB} or @kbd{M-?} to request word completion:
1415
1416 @example
1417 (@value{GDBP}) b 'bubble( @kbd{M-?}
1418 bubble(double,double) bubble(int,int)
1419 (@value{GDBP}) b 'bubble(
1420 @end example
1421
1422 In some cases, @value{GDBN} can tell that completing a name requires using
1423 quotes. When this happens, @value{GDBN} inserts the quote for you (while
1424 completing as much as it can) if you do not type the quote in the first
1425 place:
1426
1427 @example
1428 (@value{GDBP}) b bub @key{TAB}
1429 @exdent @value{GDBN} alters your input line to the following, and rings a bell:
1430 (@value{GDBP}) b 'bubble(
1431 @end example
1432
1433 @noindent
1434 In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1435 you have not yet started typing the argument list when you ask for
1436 completion on an overloaded symbol.
1437
1438 For more information about overloaded functions, see @ref{C plus plus
1439 expressions, ,C@t{++} expressions}. You can use the command @code{set
1440 overload-resolution off} to disable overload resolution;
1441 see @ref{Debugging C plus plus, ,@value{GDBN} features for C@t{++}}.
1442
1443
1444 @node Help
1445 @section Getting help
1446 @cindex online documentation
1447 @kindex help
1448
1449 You can always ask @value{GDBN} itself for information on its commands,
1450 using the command @code{help}.
1451
1452 @table @code
1453 @kindex h @r{(@code{help})}
1454 @item help
1455 @itemx h
1456 You can use @code{help} (abbreviated @code{h}) with no arguments to
1457 display a short list of named classes of commands:
1458
1459 @smallexample
1460 (@value{GDBP}) help
1461 List of classes of commands:
1462
1463 aliases -- Aliases of other commands
1464 breakpoints -- Making program stop at certain points
1465 data -- Examining data
1466 files -- Specifying and examining files
1467 internals -- Maintenance commands
1468 obscure -- Obscure features
1469 running -- Running the program
1470 stack -- Examining the stack
1471 status -- Status inquiries
1472 support -- Support facilities
1473 tracepoints -- Tracing of program execution without@*
1474 stopping the program
1475 user-defined -- User-defined commands
1476
1477 Type "help" followed by a class name for a list of
1478 commands in that class.
1479 Type "help" followed by command name for full
1480 documentation.
1481 Command name abbreviations are allowed if unambiguous.
1482 (@value{GDBP})
1483 @end smallexample
1484 @c the above line break eliminates huge line overfull...
1485
1486 @item help @var{class}
1487 Using one of the general help classes as an argument, you can get a
1488 list of the individual commands in that class. For example, here is the
1489 help display for the class @code{status}:
1490
1491 @smallexample
1492 (@value{GDBP}) help status
1493 Status inquiries.
1494
1495 List of commands:
1496
1497 @c Line break in "show" line falsifies real output, but needed
1498 @c to fit in smallbook page size.
1499 info -- Generic command for showing things
1500 about the program being debugged
1501 show -- Generic command for showing things
1502 about the debugger
1503
1504 Type "help" followed by command name for full
1505 documentation.
1506 Command name abbreviations are allowed if unambiguous.
1507 (@value{GDBP})
1508 @end smallexample
1509
1510 @item help @var{command}
1511 With a command name as @code{help} argument, @value{GDBN} displays a
1512 short paragraph on how to use that command.
1513
1514 @kindex apropos
1515 @item apropos @var{args}
1516 The @code{apropos @var{args}} command searches through all of the @value{GDBN}
1517 commands, and their documentation, for the regular expression specified in
1518 @var{args}. It prints out all matches found. For example:
1519
1520 @smallexample
1521 apropos reload
1522 @end smallexample
1523
1524 @noindent
1525 results in:
1526
1527 @smallexample
1528 @c @group
1529 set symbol-reloading -- Set dynamic symbol table reloading
1530 multiple times in one run
1531 show symbol-reloading -- Show dynamic symbol table reloading
1532 multiple times in one run
1533 @c @end group
1534 @end smallexample
1535
1536 @kindex complete
1537 @item complete @var{args}
1538 The @code{complete @var{args}} command lists all the possible completions
1539 for the beginning of a command. Use @var{args} to specify the beginning of the
1540 command you want completed. For example:
1541
1542 @smallexample
1543 complete i
1544 @end smallexample
1545
1546 @noindent results in:
1547
1548 @smallexample
1549 @group
1550 if
1551 ignore
1552 info
1553 inspect
1554 @end group
1555 @end smallexample
1556
1557 @noindent This is intended for use by @sc{gnu} Emacs.
1558 @end table
1559
1560 In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1561 and @code{show} to inquire about the state of your program, or the state
1562 of @value{GDBN} itself. Each command supports many topics of inquiry; this
1563 manual introduces each of them in the appropriate context. The listings
1564 under @code{info} and under @code{show} in the Index point to
1565 all the sub-commands. @xref{Index}.
1566
1567 @c @group
1568 @table @code
1569 @kindex info
1570 @kindex i @r{(@code{info})}
1571 @item info
1572 This command (abbreviated @code{i}) is for describing the state of your
1573 program. For example, you can list the arguments given to your program
1574 with @code{info args}, list the registers currently in use with @code{info
1575 registers}, or list the breakpoints you have set with @code{info breakpoints}.
1576 You can get a complete list of the @code{info} sub-commands with
1577 @w{@code{help info}}.
1578
1579 @kindex set
1580 @item set
1581 You can assign the result of an expression to an environment variable with
1582 @code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1583 @code{set prompt $}.
1584
1585 @kindex show
1586 @item show
1587 In contrast to @code{info}, @code{show} is for describing the state of
1588 @value{GDBN} itself.
1589 You can change most of the things you can @code{show}, by using the
1590 related command @code{set}; for example, you can control what number
1591 system is used for displays with @code{set radix}, or simply inquire
1592 which is currently in use with @code{show radix}.
1593
1594 @kindex info set
1595 To display all the settable parameters and their current
1596 values, you can use @code{show} with no arguments; you may also use
1597 @code{info set}. Both commands produce the same display.
1598 @c FIXME: "info set" violates the rule that "info" is for state of
1599 @c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1600 @c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1601 @end table
1602 @c @end group
1603
1604 Here are three miscellaneous @code{show} subcommands, all of which are
1605 exceptional in lacking corresponding @code{set} commands:
1606
1607 @table @code
1608 @kindex show version
1609 @cindex version number
1610 @item show version
1611 Show what version of @value{GDBN} is running. You should include this
1612 information in @value{GDBN} bug-reports. If multiple versions of
1613 @value{GDBN} are in use at your site, you may need to determine which
1614 version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1615 commands are introduced, and old ones may wither away. Also, many
1616 system vendors ship variant versions of @value{GDBN}, and there are
1617 variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
1618 The version number is the same as the one announced when you start
1619 @value{GDBN}.
1620
1621 @kindex show copying
1622 @item show copying
1623 Display information about permission for copying @value{GDBN}.
1624
1625 @kindex show warranty
1626 @item show warranty
1627 Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
1628 if your version of @value{GDBN} comes with one.
1629
1630 @end table
1631
1632 @node Running
1633 @chapter Running Programs Under @value{GDBN}
1634
1635 When you run a program under @value{GDBN}, you must first generate
1636 debugging information when you compile it.
1637
1638 You may start @value{GDBN} with its arguments, if any, in an environment
1639 of your choice. If you are doing native debugging, you may redirect
1640 your program's input and output, debug an already running process, or
1641 kill a child process.
1642
1643 @menu
1644 * Compilation:: Compiling for debugging
1645 * Starting:: Starting your program
1646 * Arguments:: Your program's arguments
1647 * Environment:: Your program's environment
1648
1649 * Working Directory:: Your program's working directory
1650 * Input/Output:: Your program's input and output
1651 * Attach:: Debugging an already-running process
1652 * Kill Process:: Killing the child process
1653
1654 * Threads:: Debugging programs with multiple threads
1655 * Processes:: Debugging programs with multiple processes
1656 @end menu
1657
1658 @node Compilation
1659 @section Compiling for debugging
1660
1661 In order to debug a program effectively, you need to generate
1662 debugging information when you compile it. This debugging information
1663 is stored in the object file; it describes the data type of each
1664 variable or function and the correspondence between source line numbers
1665 and addresses in the executable code.
1666
1667 To request debugging information, specify the @samp{-g} option when you run
1668 the compiler.
1669
1670 Many C compilers are unable to handle the @samp{-g} and @samp{-O}
1671 options together. Using those compilers, you cannot generate optimized
1672 executables containing debugging information.
1673
1674 @value{NGCC}, the @sc{gnu} C compiler, supports @samp{-g} with or
1675 without @samp{-O}, making it possible to debug optimized code. We
1676 recommend that you @emph{always} use @samp{-g} whenever you compile a
1677 program. You may think your program is correct, but there is no sense
1678 in pushing your luck.
1679
1680 @cindex optimized code, debugging
1681 @cindex debugging optimized code
1682 When you debug a program compiled with @samp{-g -O}, remember that the
1683 optimizer is rearranging your code; the debugger shows you what is
1684 really there. Do not be too surprised when the execution path does not
1685 exactly match your source file! An extreme example: if you define a
1686 variable, but never use it, @value{GDBN} never sees that
1687 variable---because the compiler optimizes it out of existence.
1688
1689 Some things do not work as well with @samp{-g -O} as with just
1690 @samp{-g}, particularly on machines with instruction scheduling. If in
1691 doubt, recompile with @samp{-g} alone, and if this fixes the problem,
1692 please report it to us as a bug (including a test case!).
1693
1694 Older versions of the @sc{gnu} C compiler permitted a variant option
1695 @w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1696 format; if your @sc{gnu} C compiler has this option, do not use it.
1697
1698 @need 2000
1699 @node Starting
1700 @section Starting your program
1701 @cindex starting
1702 @cindex running
1703
1704 @table @code
1705 @kindex run
1706 @kindex r @r{(@code{run})}
1707 @item run
1708 @itemx r
1709 Use the @code{run} command to start your program under @value{GDBN}.
1710 You must first specify the program name (except on VxWorks) with an
1711 argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1712 @value{GDBN}}), or by using the @code{file} or @code{exec-file} command
1713 (@pxref{Files, ,Commands to specify files}).
1714
1715 @end table
1716
1717 If you are running your program in an execution environment that
1718 supports processes, @code{run} creates an inferior process and makes
1719 that process run your program. (In environments without processes,
1720 @code{run} jumps to the start of your program.)
1721
1722 The execution of a program is affected by certain information it
1723 receives from its superior. @value{GDBN} provides ways to specify this
1724 information, which you must do @emph{before} starting your program. (You
1725 can change it after starting your program, but such changes only affect
1726 your program the next time you start it.) This information may be
1727 divided into four categories:
1728
1729 @table @asis
1730 @item The @emph{arguments.}
1731 Specify the arguments to give your program as the arguments of the
1732 @code{run} command. If a shell is available on your target, the shell
1733 is used to pass the arguments, so that you may use normal conventions
1734 (such as wildcard expansion or variable substitution) in describing
1735 the arguments.
1736 In Unix systems, you can control which shell is used with the
1737 @code{SHELL} environment variable.
1738 @xref{Arguments, ,Your program's arguments}.
1739
1740 @item The @emph{environment.}
1741 Your program normally inherits its environment from @value{GDBN}, but you can
1742 use the @value{GDBN} commands @code{set environment} and @code{unset
1743 environment} to change parts of the environment that affect
1744 your program. @xref{Environment, ,Your program's environment}.
1745
1746 @item The @emph{working directory.}
1747 Your program inherits its working directory from @value{GDBN}. You can set
1748 the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
1749 @xref{Working Directory, ,Your program's working directory}.
1750
1751 @item The @emph{standard input and output.}
1752 Your program normally uses the same device for standard input and
1753 standard output as @value{GDBN} is using. You can redirect input and output
1754 in the @code{run} command line, or you can use the @code{tty} command to
1755 set a different device for your program.
1756 @xref{Input/Output, ,Your program's input and output}.
1757
1758 @cindex pipes
1759 @emph{Warning:} While input and output redirection work, you cannot use
1760 pipes to pass the output of the program you are debugging to another
1761 program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1762 wrong program.
1763 @end table
1764
1765 When you issue the @code{run} command, your program begins to execute
1766 immediately. @xref{Stopping, ,Stopping and continuing}, for discussion
1767 of how to arrange for your program to stop. Once your program has
1768 stopped, you may call functions in your program, using the @code{print}
1769 or @code{call} commands. @xref{Data, ,Examining Data}.
1770
1771 If the modification time of your symbol file has changed since the last
1772 time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1773 table, and reads it again. When it does this, @value{GDBN} tries to retain
1774 your current breakpoints.
1775
1776 @node Arguments
1777 @section Your program's arguments
1778
1779 @cindex arguments (to your program)
1780 The arguments to your program can be specified by the arguments of the
1781 @code{run} command.
1782 They are passed to a shell, which expands wildcard characters and
1783 performs redirection of I/O, and thence to your program. Your
1784 @code{SHELL} environment variable (if it exists) specifies what shell
1785 @value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
1786 the default shell (@file{/bin/sh} on Unix).
1787
1788 On non-Unix systems, the program is usually invoked directly by
1789 @value{GDBN}, which emulates I/O redirection via the appropriate system
1790 calls, and the wildcard characters are expanded by the startup code of
1791 the program, not by the shell.
1792
1793 @code{run} with no arguments uses the same arguments used by the previous
1794 @code{run}, or those set by the @code{set args} command.
1795
1796 @table @code
1797 @kindex set args
1798 @item set args
1799 Specify the arguments to be used the next time your program is run. If
1800 @code{set args} has no arguments, @code{run} executes your program
1801 with no arguments. Once you have run your program with arguments,
1802 using @code{set args} before the next @code{run} is the only way to run
1803 it again without arguments.
1804
1805 @kindex show args
1806 @item show args
1807 Show the arguments to give your program when it is started.
1808 @end table
1809
1810 @node Environment
1811 @section Your program's environment
1812
1813 @cindex environment (of your program)
1814 The @dfn{environment} consists of a set of environment variables and
1815 their values. Environment variables conventionally record such things as
1816 your user name, your home directory, your terminal type, and your search
1817 path for programs to run. Usually you set up environment variables with
1818 the shell and they are inherited by all the other programs you run. When
1819 debugging, it can be useful to try running your program with a modified
1820 environment without having to start @value{GDBN} over again.
1821
1822 @table @code
1823 @kindex path
1824 @item path @var{directory}
1825 Add @var{directory} to the front of the @code{PATH} environment variable
1826 (the search path for executables) that will be passed to your program.
1827 The value of @code{PATH} used by @value{GDBN} does not change.
1828 You may specify several directory names, separated by whitespace or by a
1829 system-dependent separator character (@samp{:} on Unix, @samp{;} on
1830 MS-DOS and MS-Windows). If @var{directory} is already in the path, it
1831 is moved to the front, so it is searched sooner.
1832
1833 You can use the string @samp{$cwd} to refer to whatever is the current
1834 working directory at the time @value{GDBN} searches the path. If you
1835 use @samp{.} instead, it refers to the directory where you executed the
1836 @code{path} command. @value{GDBN} replaces @samp{.} in the
1837 @var{directory} argument (with the current path) before adding
1838 @var{directory} to the search path.
1839 @c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
1840 @c document that, since repeating it would be a no-op.
1841
1842 @kindex show paths
1843 @item show paths
1844 Display the list of search paths for executables (the @code{PATH}
1845 environment variable).
1846
1847 @kindex show environment
1848 @item show environment @r{[}@var{varname}@r{]}
1849 Print the value of environment variable @var{varname} to be given to
1850 your program when it starts. If you do not supply @var{varname},
1851 print the names and values of all environment variables to be given to
1852 your program. You can abbreviate @code{environment} as @code{env}.
1853
1854 @kindex set environment
1855 @item set environment @var{varname} @r{[}=@var{value}@r{]}
1856 Set environment variable @var{varname} to @var{value}. The value
1857 changes for your program only, not for @value{GDBN} itself. @var{value} may
1858 be any string; the values of environment variables are just strings, and
1859 any interpretation is supplied by your program itself. The @var{value}
1860 parameter is optional; if it is eliminated, the variable is set to a
1861 null value.
1862 @c "any string" here does not include leading, trailing
1863 @c blanks. Gnu asks: does anyone care?
1864
1865 For example, this command:
1866
1867 @example
1868 set env USER = foo
1869 @end example
1870
1871 @noindent
1872 tells the debugged program, when subsequently run, that its user is named
1873 @samp{foo}. (The spaces around @samp{=} are used for clarity here; they
1874 are not actually required.)
1875
1876 @kindex unset environment
1877 @item unset environment @var{varname}
1878 Remove variable @var{varname} from the environment to be passed to your
1879 program. This is different from @samp{set env @var{varname} =};
1880 @code{unset environment} removes the variable from the environment,
1881 rather than assigning it an empty value.
1882 @end table
1883
1884 @emph{Warning:} On Unix systems, @value{GDBN} runs your program using
1885 the shell indicated
1886 by your @code{SHELL} environment variable if it exists (or
1887 @code{/bin/sh} if not). If your @code{SHELL} variable names a shell
1888 that runs an initialization file---such as @file{.cshrc} for C-shell, or
1889 @file{.bashrc} for BASH---any variables you set in that file affect
1890 your program. You may wish to move setting of environment variables to
1891 files that are only run when you sign on, such as @file{.login} or
1892 @file{.profile}.
1893
1894 @node Working Directory
1895 @section Your program's working directory
1896
1897 @cindex working directory (of your program)
1898 Each time you start your program with @code{run}, it inherits its
1899 working directory from the current working directory of @value{GDBN}.
1900 The @value{GDBN} working directory is initially whatever it inherited
1901 from its parent process (typically the shell), but you can specify a new
1902 working directory in @value{GDBN} with the @code{cd} command.
1903
1904 The @value{GDBN} working directory also serves as a default for the commands
1905 that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
1906 specify files}.
1907
1908 @table @code
1909 @kindex cd
1910 @item cd @var{directory}
1911 Set the @value{GDBN} working directory to @var{directory}.
1912
1913 @kindex pwd
1914 @item pwd
1915 Print the @value{GDBN} working directory.
1916 @end table
1917
1918 @node Input/Output
1919 @section Your program's input and output
1920
1921 @cindex redirection
1922 @cindex i/o
1923 @cindex terminal
1924 By default, the program you run under @value{GDBN} does input and output to
1925 the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
1926 to its own terminal modes to interact with you, but it records the terminal
1927 modes your program was using and switches back to them when you continue
1928 running your program.
1929
1930 @table @code
1931 @kindex info terminal
1932 @item info terminal
1933 Displays information recorded by @value{GDBN} about the terminal modes your
1934 program is using.
1935 @end table
1936
1937 You can redirect your program's input and/or output using shell
1938 redirection with the @code{run} command. For example,
1939
1940 @example
1941 run > outfile
1942 @end example
1943
1944 @noindent
1945 starts your program, diverting its output to the file @file{outfile}.
1946
1947 @kindex tty
1948 @cindex controlling terminal
1949 Another way to specify where your program should do input and output is
1950 with the @code{tty} command. This command accepts a file name as
1951 argument, and causes this file to be the default for future @code{run}
1952 commands. It also resets the controlling terminal for the child
1953 process, for future @code{run} commands. For example,
1954
1955 @example
1956 tty /dev/ttyb
1957 @end example
1958
1959 @noindent
1960 directs that processes started with subsequent @code{run} commands
1961 default to do input and output on the terminal @file{/dev/ttyb} and have
1962 that as their controlling terminal.
1963
1964 An explicit redirection in @code{run} overrides the @code{tty} command's
1965 effect on the input/output device, but not its effect on the controlling
1966 terminal.
1967
1968 When you use the @code{tty} command or redirect input in the @code{run}
1969 command, only the input @emph{for your program} is affected. The input
1970 for @value{GDBN} still comes from your terminal.
1971
1972 @node Attach
1973 @section Debugging an already-running process
1974 @kindex attach
1975 @cindex attach
1976
1977 @table @code
1978 @item attach @var{process-id}
1979 This command attaches to a running process---one that was started
1980 outside @value{GDBN}. (@code{info files} shows your active
1981 targets.) The command takes as argument a process ID. The usual way to
1982 find out the process-id of a Unix process is with the @code{ps} utility,
1983 or with the @samp{jobs -l} shell command.
1984
1985 @code{attach} does not repeat if you press @key{RET} a second time after
1986 executing the command.
1987 @end table
1988
1989 To use @code{attach}, your program must be running in an environment
1990 which supports processes; for example, @code{attach} does not work for
1991 programs on bare-board targets that lack an operating system. You must
1992 also have permission to send the process a signal.
1993
1994 When you use @code{attach}, the debugger finds the program running in
1995 the process first by looking in the current working directory, then (if
1996 the program is not found) by using the source file search path
1997 (@pxref{Source Path, ,Specifying source directories}). You can also use
1998 the @code{file} command to load the program. @xref{Files, ,Commands to
1999 Specify Files}.
2000
2001 The first thing @value{GDBN} does after arranging to debug the specified
2002 process is to stop it. You can examine and modify an attached process
2003 with all the @value{GDBN} commands that are ordinarily available when
2004 you start processes with @code{run}. You can insert breakpoints; you
2005 can step and continue; you can modify storage. If you would rather the
2006 process continue running, you may use the @code{continue} command after
2007 attaching @value{GDBN} to the process.
2008
2009 @table @code
2010 @kindex detach
2011 @item detach
2012 When you have finished debugging the attached process, you can use the
2013 @code{detach} command to release it from @value{GDBN} control. Detaching
2014 the process continues its execution. After the @code{detach} command,
2015 that process and @value{GDBN} become completely independent once more, and you
2016 are ready to @code{attach} another process or start one with @code{run}.
2017 @code{detach} does not repeat if you press @key{RET} again after
2018 executing the command.
2019 @end table
2020
2021 If you exit @value{GDBN} or use the @code{run} command while you have an
2022 attached process, you kill that process. By default, @value{GDBN} asks
2023 for confirmation if you try to do either of these things; you can
2024 control whether or not you need to confirm by using the @code{set
2025 confirm} command (@pxref{Messages/Warnings, ,Optional warnings and
2026 messages}).
2027
2028 @node Kill Process
2029 @section Killing the child process
2030
2031 @table @code
2032 @kindex kill
2033 @item kill
2034 Kill the child process in which your program is running under @value{GDBN}.
2035 @end table
2036
2037 This command is useful if you wish to debug a core dump instead of a
2038 running process. @value{GDBN} ignores any core dump file while your program
2039 is running.
2040
2041 On some operating systems, a program cannot be executed outside @value{GDBN}
2042 while you have breakpoints set on it inside @value{GDBN}. You can use the
2043 @code{kill} command in this situation to permit running your program
2044 outside the debugger.
2045
2046 The @code{kill} command is also useful if you wish to recompile and
2047 relink your program, since on many systems it is impossible to modify an
2048 executable file while it is running in a process. In this case, when you
2049 next type @code{run}, @value{GDBN} notices that the file has changed, and
2050 reads the symbol table again (while trying to preserve your current
2051 breakpoint settings).
2052
2053 @node Threads
2054 @section Debugging programs with multiple threads
2055
2056 @cindex threads of execution
2057 @cindex multiple threads
2058 @cindex switching threads
2059 In some operating systems, such as HP-UX and Solaris, a single program
2060 may have more than one @dfn{thread} of execution. The precise semantics
2061 of threads differ from one operating system to another, but in general
2062 the threads of a single program are akin to multiple processes---except
2063 that they share one address space (that is, they can all examine and
2064 modify the same variables). On the other hand, each thread has its own
2065 registers and execution stack, and perhaps private memory.
2066
2067 @value{GDBN} provides these facilities for debugging multi-thread
2068 programs:
2069
2070 @itemize @bullet
2071 @item automatic notification of new threads
2072 @item @samp{thread @var{threadno}}, a command to switch among threads
2073 @item @samp{info threads}, a command to inquire about existing threads
2074 @item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
2075 a command to apply a command to a list of threads
2076 @item thread-specific breakpoints
2077 @end itemize
2078
2079 @quotation
2080 @emph{Warning:} These facilities are not yet available on every
2081 @value{GDBN} configuration where the operating system supports threads.
2082 If your @value{GDBN} does not support threads, these commands have no
2083 effect. For example, a system without thread support shows no output
2084 from @samp{info threads}, and always rejects the @code{thread} command,
2085 like this:
2086
2087 @smallexample
2088 (@value{GDBP}) info threads
2089 (@value{GDBP}) thread 1
2090 Thread ID 1 not known. Use the "info threads" command to
2091 see the IDs of currently known threads.
2092 @end smallexample
2093 @c FIXME to implementors: how hard would it be to say "sorry, this GDB
2094 @c doesn't support threads"?
2095 @end quotation
2096
2097 @cindex focus of debugging
2098 @cindex current thread
2099 The @value{GDBN} thread debugging facility allows you to observe all
2100 threads while your program runs---but whenever @value{GDBN} takes
2101 control, one thread in particular is always the focus of debugging.
2102 This thread is called the @dfn{current thread}. Debugging commands show
2103 program information from the perspective of the current thread.
2104
2105 @cindex @code{New} @var{systag} message
2106 @cindex thread identifier (system)
2107 @c FIXME-implementors!! It would be more helpful if the [New...] message
2108 @c included GDB's numeric thread handle, so you could just go to that
2109 @c thread without first checking `info threads'.
2110 Whenever @value{GDBN} detects a new thread in your program, it displays
2111 the target system's identification for the thread with a message in the
2112 form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2113 whose form varies depending on the particular system. For example, on
2114 LynxOS, you might see
2115
2116 @example
2117 [New process 35 thread 27]
2118 @end example
2119
2120 @noindent
2121 when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2122 the @var{systag} is simply something like @samp{process 368}, with no
2123 further qualifier.
2124
2125 @c FIXME!! (1) Does the [New...] message appear even for the very first
2126 @c thread of a program, or does it only appear for the
2127 @c second---i.e., when it becomes obvious we have a multithread
2128 @c program?
2129 @c (2) *Is* there necessarily a first thread always? Or do some
2130 @c multithread systems permit starting a program with multiple
2131 @c threads ab initio?
2132
2133 @cindex thread number
2134 @cindex thread identifier (GDB)
2135 For debugging purposes, @value{GDBN} associates its own thread
2136 number---always a single integer---with each thread in your program.
2137
2138 @table @code
2139 @kindex info threads
2140 @item info threads
2141 Display a summary of all threads currently in your
2142 program. @value{GDBN} displays for each thread (in this order):
2143
2144 @enumerate
2145 @item the thread number assigned by @value{GDBN}
2146
2147 @item the target system's thread identifier (@var{systag})
2148
2149 @item the current stack frame summary for that thread
2150 @end enumerate
2151
2152 @noindent
2153 An asterisk @samp{*} to the left of the @value{GDBN} thread number
2154 indicates the current thread.
2155
2156 For example,
2157 @end table
2158 @c end table here to get a little more width for example
2159
2160 @smallexample
2161 (@value{GDBP}) info threads
2162 3 process 35 thread 27 0x34e5 in sigpause ()
2163 2 process 35 thread 23 0x34e5 in sigpause ()
2164 * 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
2165 at threadtest.c:68
2166 @end smallexample
2167
2168 On HP-UX systems:
2169
2170 @cindex thread number
2171 @cindex thread identifier (GDB)
2172 For debugging purposes, @value{GDBN} associates its own thread
2173 number---a small integer assigned in thread-creation order---with each
2174 thread in your program.
2175
2176 @cindex @code{New} @var{systag} message, on HP-UX
2177 @cindex thread identifier (system), on HP-UX
2178 @c FIXME-implementors!! It would be more helpful if the [New...] message
2179 @c included GDB's numeric thread handle, so you could just go to that
2180 @c thread without first checking `info threads'.
2181 Whenever @value{GDBN} detects a new thread in your program, it displays
2182 both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
2183 form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2184 whose form varies depending on the particular system. For example, on
2185 HP-UX, you see
2186
2187 @example
2188 [New thread 2 (system thread 26594)]
2189 @end example
2190
2191 @noindent
2192 when @value{GDBN} notices a new thread.
2193
2194 @table @code
2195 @kindex info threads
2196 @item info threads
2197 Display a summary of all threads currently in your
2198 program. @value{GDBN} displays for each thread (in this order):
2199
2200 @enumerate
2201 @item the thread number assigned by @value{GDBN}
2202
2203 @item the target system's thread identifier (@var{systag})
2204
2205 @item the current stack frame summary for that thread
2206 @end enumerate
2207
2208 @noindent
2209 An asterisk @samp{*} to the left of the @value{GDBN} thread number
2210 indicates the current thread.
2211
2212 For example,
2213 @end table
2214 @c end table here to get a little more width for example
2215
2216 @example
2217 (@value{GDBP}) info threads
2218 * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") \@*
2219 at quicksort.c:137
2220 2 system thread 26606 0x7b0030d8 in __ksleep () \@*
2221 from /usr/lib/libc.2
2222 1 system thread 27905 0x7b003498 in _brk () \@*
2223 from /usr/lib/libc.2
2224 @end example
2225
2226 @table @code
2227 @kindex thread @var{threadno}
2228 @item thread @var{threadno}
2229 Make thread number @var{threadno} the current thread. The command
2230 argument @var{threadno} is the internal @value{GDBN} thread number, as
2231 shown in the first field of the @samp{info threads} display.
2232 @value{GDBN} responds by displaying the system identifier of the thread
2233 you selected, and its current stack frame summary:
2234
2235 @smallexample
2236 @c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one
2237 (@value{GDBP}) thread 2
2238 [Switching to process 35 thread 23]
2239 0x34e5 in sigpause ()
2240 @end smallexample
2241
2242 @noindent
2243 As with the @samp{[New @dots{}]} message, the form of the text after
2244 @samp{Switching to} depends on your system's conventions for identifying
2245 threads.
2246
2247 @kindex thread apply
2248 @item thread apply [@var{threadno}] [@var{all}] @var{args}
2249 The @code{thread apply} command allows you to apply a command to one or
2250 more threads. Specify the numbers of the threads that you want affected
2251 with the command argument @var{threadno}. @var{threadno} is the internal
2252 @value{GDBN} thread number, as shown in the first field of the @samp{info
2253 threads} display. To apply a command to all threads, use
2254 @code{thread apply all} @var{args}.
2255 @end table
2256
2257 @cindex automatic thread selection
2258 @cindex switching threads automatically
2259 @cindex threads, automatic switching
2260 Whenever @value{GDBN} stops your program, due to a breakpoint or a
2261 signal, it automatically selects the thread where that breakpoint or
2262 signal happened. @value{GDBN} alerts you to the context switch with a
2263 message of the form @samp{[Switching to @var{systag}]} to identify the
2264 thread.
2265
2266 @xref{Thread Stops,,Stopping and starting multi-thread programs}, for
2267 more information about how @value{GDBN} behaves when you stop and start
2268 programs with multiple threads.
2269
2270 @xref{Set Watchpoints,,Setting watchpoints}, for information about
2271 watchpoints in programs with multiple threads.
2272
2273 @node Processes
2274 @section Debugging programs with multiple processes
2275
2276 @cindex fork, debugging programs which call
2277 @cindex multiple processes
2278 @cindex processes, multiple
2279 On most systems, @value{GDBN} has no special support for debugging
2280 programs which create additional processes using the @code{fork}
2281 function. When a program forks, @value{GDBN} will continue to debug the
2282 parent process and the child process will run unimpeded. If you have
2283 set a breakpoint in any code which the child then executes, the child
2284 will get a @code{SIGTRAP} signal which (unless it catches the signal)
2285 will cause it to terminate.
2286
2287 However, if you want to debug the child process there is a workaround
2288 which isn't too painful. Put a call to @code{sleep} in the code which
2289 the child process executes after the fork. It may be useful to sleep
2290 only if a certain environment variable is set, or a certain file exists,
2291 so that the delay need not occur when you don't want to run @value{GDBN}
2292 on the child. While the child is sleeping, use the @code{ps} program to
2293 get its process ID. Then tell @value{GDBN} (a new invocation of
2294 @value{GDBN} if you are also debugging the parent process) to attach to
2295 the child process (@pxref{Attach}). From that point on you can debug
2296 the child process just like any other process which you attached to.
2297
2298 On HP-UX (11.x and later only?), @value{GDBN} provides support for
2299 debugging programs that create additional processes using the
2300 @code{fork} or @code{vfork} function.
2301
2302 By default, when a program forks, @value{GDBN} will continue to debug
2303 the parent process and the child process will run unimpeded.
2304
2305 If you want to follow the child process instead of the parent process,
2306 use the command @w{@code{set follow-fork-mode}}.
2307
2308 @table @code
2309 @kindex set follow-fork-mode
2310 @item set follow-fork-mode @var{mode}
2311 Set the debugger response to a program call of @code{fork} or
2312 @code{vfork}. A call to @code{fork} or @code{vfork} creates a new
2313 process. The @var{mode} can be:
2314
2315 @table @code
2316 @item parent
2317 The original process is debugged after a fork. The child process runs
2318 unimpeded. This is the default.
2319
2320 @item child
2321 The new process is debugged after a fork. The parent process runs
2322 unimpeded.
2323
2324 @item ask
2325 The debugger will ask for one of the above choices.
2326 @end table
2327
2328 @item show follow-fork-mode
2329 Display the current debugger response to a @code{fork} or @code{vfork} call.
2330 @end table
2331
2332 If you ask to debug a child process and a @code{vfork} is followed by an
2333 @code{exec}, @value{GDBN} executes the new target up to the first
2334 breakpoint in the new target. If you have a breakpoint set on
2335 @code{main} in your original program, the breakpoint will also be set on
2336 the child process's @code{main}.
2337
2338 When a child process is spawned by @code{vfork}, you cannot debug the
2339 child or parent until an @code{exec} call completes.
2340
2341 If you issue a @code{run} command to @value{GDBN} after an @code{exec}
2342 call executes, the new target restarts. To restart the parent process,
2343 use the @code{file} command with the parent executable name as its
2344 argument.
2345
2346 You can use the @code{catch} command to make @value{GDBN} stop whenever
2347 a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
2348 Catchpoints, ,Setting catchpoints}.
2349
2350 @node Stopping
2351 @chapter Stopping and Continuing
2352
2353 The principal purposes of using a debugger are so that you can stop your
2354 program before it terminates; or so that, if your program runs into
2355 trouble, you can investigate and find out why.
2356
2357 Inside @value{GDBN}, your program may stop for any of several reasons,
2358 such as a signal, a breakpoint, or reaching a new line after a
2359 @value{GDBN} command such as @code{step}. You may then examine and
2360 change variables, set new breakpoints or remove old ones, and then
2361 continue execution. Usually, the messages shown by @value{GDBN} provide
2362 ample explanation of the status of your program---but you can also
2363 explicitly request this information at any time.
2364
2365 @table @code
2366 @kindex info program
2367 @item info program
2368 Display information about the status of your program: whether it is
2369 running or not, what process it is, and why it stopped.
2370 @end table
2371
2372 @menu
2373 * Breakpoints:: Breakpoints, watchpoints, and catchpoints
2374 * Continuing and Stepping:: Resuming execution
2375 * Signals:: Signals
2376 * Thread Stops:: Stopping and starting multi-thread programs
2377 @end menu
2378
2379 @node Breakpoints
2380 @section Breakpoints, watchpoints, and catchpoints
2381
2382 @cindex breakpoints
2383 A @dfn{breakpoint} makes your program stop whenever a certain point in
2384 the program is reached. For each breakpoint, you can add conditions to
2385 control in finer detail whether your program stops. You can set
2386 breakpoints with the @code{break} command and its variants (@pxref{Set
2387 Breaks, ,Setting breakpoints}), to specify the place where your program
2388 should stop by line number, function name or exact address in the
2389 program.
2390
2391 In HP-UX, SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can set
2392 breakpoints in shared libraries before the executable is run. There is
2393 a minor limitation on HP-UX systems: you must wait until the executable
2394 is run in order to set breakpoints in shared library routines that are
2395 not called directly by the program (for example, routines that are
2396 arguments in a @code{pthread_create} call).
2397
2398 @cindex watchpoints
2399 @cindex memory tracing
2400 @cindex breakpoint on memory address
2401 @cindex breakpoint on variable modification
2402 A @dfn{watchpoint} is a special breakpoint that stops your program
2403 when the value of an expression changes. You must use a different
2404 command to set watchpoints (@pxref{Set Watchpoints, ,Setting
2405 watchpoints}), but aside from that, you can manage a watchpoint like
2406 any other breakpoint: you enable, disable, and delete both breakpoints
2407 and watchpoints using the same commands.
2408
2409 You can arrange to have values from your program displayed automatically
2410 whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
2411 Automatic display}.
2412
2413 @cindex catchpoints
2414 @cindex breakpoint on events
2415 A @dfn{catchpoint} is another special breakpoint that stops your program
2416 when a certain kind of event occurs, such as the throwing of a C@t{++}
2417 exception or the loading of a library. As with watchpoints, you use a
2418 different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
2419 catchpoints}), but aside from that, you can manage a catchpoint like any
2420 other breakpoint. (To stop when your program receives a signal, use the
2421 @code{handle} command; see @ref{Signals, ,Signals}.)
2422
2423 @cindex breakpoint numbers
2424 @cindex numbers for breakpoints
2425 @value{GDBN} assigns a number to each breakpoint, watchpoint, or
2426 catchpoint when you create it; these numbers are successive integers
2427 starting with one. In many of the commands for controlling various
2428 features of breakpoints you use the breakpoint number to say which
2429 breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
2430 @dfn{disabled}; if disabled, it has no effect on your program until you
2431 enable it again.
2432
2433 @cindex breakpoint ranges
2434 @cindex ranges of breakpoints
2435 Some @value{GDBN} commands accept a range of breakpoints on which to
2436 operate. A breakpoint range is either a single breakpoint number, like
2437 @samp{5}, or two such numbers, in increasing order, separated by a
2438 hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
2439 all breakpoint in that range are operated on.
2440
2441 @menu
2442 * Set Breaks:: Setting breakpoints
2443 * Set Watchpoints:: Setting watchpoints
2444 * Set Catchpoints:: Setting catchpoints
2445 * Delete Breaks:: Deleting breakpoints
2446 * Disabling:: Disabling breakpoints
2447 * Conditions:: Break conditions
2448 * Break Commands:: Breakpoint command lists
2449 * Breakpoint Menus:: Breakpoint menus
2450 * Error in Breakpoints:: ``Cannot insert breakpoints''
2451 @end menu
2452
2453 @node Set Breaks
2454 @subsection Setting breakpoints
2455
2456 @c FIXME LMB what does GDB do if no code on line of breakpt?
2457 @c consider in particular declaration with/without initialization.
2458 @c
2459 @c FIXME 2 is there stuff on this already? break at fun start, already init?
2460
2461 @kindex break
2462 @kindex b @r{(@code{break})}
2463 @vindex $bpnum@r{, convenience variable}
2464 @cindex latest breakpoint
2465 Breakpoints are set with the @code{break} command (abbreviated
2466 @code{b}). The debugger convenience variable @samp{$bpnum} records the
2467 number of the breakpoint you've set most recently; see @ref{Convenience
2468 Vars,, Convenience variables}, for a discussion of what you can do with
2469 convenience variables.
2470
2471 You have several ways to say where the breakpoint should go.
2472
2473 @table @code
2474 @item break @var{function}
2475 Set a breakpoint at entry to function @var{function}.
2476 When using source languages that permit overloading of symbols, such as
2477 C@t{++}, @var{function} may refer to more than one possible place to break.
2478 @xref{Breakpoint Menus,,Breakpoint menus}, for a discussion of that situation.
2479
2480 @item break +@var{offset}
2481 @itemx break -@var{offset}
2482 Set a breakpoint some number of lines forward or back from the position
2483 at which execution stopped in the currently selected @dfn{stack frame}.
2484 (@xref{Frames, ,Frames}, for a description of stack frames.)
2485
2486 @item break @var{linenum}
2487 Set a breakpoint at line @var{linenum} in the current source file.
2488 The current source file is the last file whose source text was printed.
2489 The breakpoint will stop your program just before it executes any of the
2490 code on that line.
2491
2492 @item break @var{filename}:@var{linenum}
2493 Set a breakpoint at line @var{linenum} in source file @var{filename}.
2494
2495 @item break @var{filename}:@var{function}
2496 Set a breakpoint at entry to function @var{function} found in file
2497 @var{filename}. Specifying a file name as well as a function name is
2498 superfluous except when multiple files contain similarly named
2499 functions.
2500
2501 @item break *@var{address}
2502 Set a breakpoint at address @var{address}. You can use this to set
2503 breakpoints in parts of your program which do not have debugging
2504 information or source files.
2505
2506 @item break
2507 When called without any arguments, @code{break} sets a breakpoint at
2508 the next instruction to be executed in the selected stack frame
2509 (@pxref{Stack, ,Examining the Stack}). In any selected frame but the
2510 innermost, this makes your program stop as soon as control
2511 returns to that frame. This is similar to the effect of a
2512 @code{finish} command in the frame inside the selected frame---except
2513 that @code{finish} does not leave an active breakpoint. If you use
2514 @code{break} without an argument in the innermost frame, @value{GDBN} stops
2515 the next time it reaches the current location; this may be useful
2516 inside loops.
2517
2518 @value{GDBN} normally ignores breakpoints when it resumes execution, until at
2519 least one instruction has been executed. If it did not do this, you
2520 would be unable to proceed past a breakpoint without first disabling the
2521 breakpoint. This rule applies whether or not the breakpoint already
2522 existed when your program stopped.
2523
2524 @item break @dots{} if @var{cond}
2525 Set a breakpoint with condition @var{cond}; evaluate the expression
2526 @var{cond} each time the breakpoint is reached, and stop only if the
2527 value is nonzero---that is, if @var{cond} evaluates as true.
2528 @samp{@dots{}} stands for one of the possible arguments described
2529 above (or no argument) specifying where to break. @xref{Conditions,
2530 ,Break conditions}, for more information on breakpoint conditions.
2531
2532 @kindex tbreak
2533 @item tbreak @var{args}
2534 Set a breakpoint enabled only for one stop. @var{args} are the
2535 same as for the @code{break} command, and the breakpoint is set in the same
2536 way, but the breakpoint is automatically deleted after the first time your
2537 program stops there. @xref{Disabling, ,Disabling breakpoints}.
2538
2539 @kindex hbreak
2540 @item hbreak @var{args}
2541 Set a hardware-assisted breakpoint. @var{args} are the same as for the
2542 @code{break} command and the breakpoint is set in the same way, but the
2543 breakpoint requires hardware support and some target hardware may not
2544 have this support. The main purpose of this is EPROM/ROM code
2545 debugging, so you can set a breakpoint at an instruction without
2546 changing the instruction. This can be used with the new trap-generation
2547 provided by SPARClite DSU and some x86-based targets. These targets
2548 will generate traps when a program accesses some data or instruction
2549 address that is assigned to the debug registers. However the hardware
2550 breakpoint registers can take a limited number of breakpoints. For
2551 example, on the DSU, only two data breakpoints can be set at a time, and
2552 @value{GDBN} will reject this command if more than two are used. Delete
2553 or disable unused hardware breakpoints before setting new ones
2554 (@pxref{Disabling, ,Disabling}). @xref{Conditions, ,Break conditions}.
2555
2556 @kindex thbreak
2557 @item thbreak @var{args}
2558 Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
2559 are the same as for the @code{hbreak} command and the breakpoint is set in
2560 the same way. However, like the @code{tbreak} command,
2561 the breakpoint is automatically deleted after the
2562 first time your program stops there. Also, like the @code{hbreak}
2563 command, the breakpoint requires hardware support and some target hardware
2564 may not have this support. @xref{Disabling, ,Disabling breakpoints}.
2565 See also @ref{Conditions, ,Break conditions}.
2566
2567 @kindex rbreak
2568 @cindex regular expression
2569 @item rbreak @var{regex}
2570 Set breakpoints on all functions matching the regular expression
2571 @var{regex}. This command sets an unconditional breakpoint on all
2572 matches, printing a list of all breakpoints it set. Once these
2573 breakpoints are set, they are treated just like the breakpoints set with
2574 the @code{break} command. You can delete them, disable them, or make
2575 them conditional the same way as any other breakpoint.
2576
2577 The syntax of the regular expression is the standard one used with tools
2578 like @file{grep}. Note that this is different from the syntax used by
2579 shells, so for instance @code{foo*} matches all functions that include
2580 an @code{fo} followed by zero or more @code{o}s. There is an implicit
2581 @code{.*} leading and trailing the regular expression you supply, so to
2582 match only functions that begin with @code{foo}, use @code{^foo}.
2583
2584 When debugging C@t{++} programs, @code{rbreak} is useful for setting
2585 breakpoints on overloaded functions that are not members of any special
2586 classes.
2587
2588 @kindex info breakpoints
2589 @cindex @code{$_} and @code{info breakpoints}
2590 @item info breakpoints @r{[}@var{n}@r{]}
2591 @itemx info break @r{[}@var{n}@r{]}
2592 @itemx info watchpoints @r{[}@var{n}@r{]}
2593 Print a table of all breakpoints, watchpoints, and catchpoints set and
2594 not deleted, with the following columns for each breakpoint:
2595
2596 @table @emph
2597 @item Breakpoint Numbers
2598 @item Type
2599 Breakpoint, watchpoint, or catchpoint.
2600 @item Disposition
2601 Whether the breakpoint is marked to be disabled or deleted when hit.
2602 @item Enabled or Disabled
2603 Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
2604 that are not enabled.
2605 @item Address
2606 Where the breakpoint is in your program, as a memory address.
2607 @item What
2608 Where the breakpoint is in the source for your program, as a file and
2609 line number.
2610 @end table
2611
2612 @noindent
2613 If a breakpoint is conditional, @code{info break} shows the condition on
2614 the line following the affected breakpoint; breakpoint commands, if any,
2615 are listed after that.
2616
2617 @noindent
2618 @code{info break} with a breakpoint
2619 number @var{n} as argument lists only that breakpoint. The
2620 convenience variable @code{$_} and the default examining-address for
2621 the @code{x} command are set to the address of the last breakpoint
2622 listed (@pxref{Memory, ,Examining memory}).
2623
2624 @noindent
2625 @code{info break} displays a count of the number of times the breakpoint
2626 has been hit. This is especially useful in conjunction with the
2627 @code{ignore} command. You can ignore a large number of breakpoint
2628 hits, look at the breakpoint info to see how many times the breakpoint
2629 was hit, and then run again, ignoring one less than that number. This
2630 will get you quickly to the last hit of that breakpoint.
2631 @end table
2632
2633 @value{GDBN} allows you to set any number of breakpoints at the same place in
2634 your program. There is nothing silly or meaningless about this. When
2635 the breakpoints are conditional, this is even useful
2636 (@pxref{Conditions, ,Break conditions}).
2637
2638 @cindex negative breakpoint numbers
2639 @cindex internal @value{GDBN} breakpoints
2640 @value{GDBN} itself sometimes sets breakpoints in your program for
2641 special purposes, such as proper handling of @code{longjmp} (in C
2642 programs). These internal breakpoints are assigned negative numbers,
2643 starting with @code{-1}; @samp{info breakpoints} does not display them.
2644 You can see these breakpoints with the @value{GDBN} maintenance command
2645 @samp{maint info breakpoints} (@pxref{maint info breakpoints}).
2646
2647
2648 @node Set Watchpoints
2649 @subsection Setting watchpoints
2650
2651 @cindex setting watchpoints
2652 @cindex software watchpoints
2653 @cindex hardware watchpoints
2654 You can use a watchpoint to stop execution whenever the value of an
2655 expression changes, without having to predict a particular place where
2656 this may happen.
2657
2658 Depending on your system, watchpoints may be implemented in software or
2659 hardware. @value{GDBN} does software watchpointing by single-stepping your
2660 program and testing the variable's value each time, which is hundreds of
2661 times slower than normal execution. (But this may still be worth it, to
2662 catch errors where you have no clue what part of your program is the
2663 culprit.)
2664
2665 On some systems, such as HP-UX, Linux and some other x86-based targets,
2666 @value{GDBN} includes support for
2667 hardware watchpoints, which do not slow down the running of your
2668 program.
2669
2670 @table @code
2671 @kindex watch
2672 @item watch @var{expr}
2673 Set a watchpoint for an expression. @value{GDBN} will break when @var{expr}
2674 is written into by the program and its value changes.
2675
2676 @kindex rwatch
2677 @item rwatch @var{expr}
2678 Set a watchpoint that will break when watch @var{expr} is read by the program.
2679
2680 @kindex awatch
2681 @item awatch @var{expr}
2682 Set a watchpoint that will break when @var{expr} is either read or written into
2683 by the program.
2684
2685 @kindex info watchpoints
2686 @item info watchpoints
2687 This command prints a list of watchpoints, breakpoints, and catchpoints;
2688 it is the same as @code{info break}.
2689 @end table
2690
2691 @value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
2692 watchpoints execute very quickly, and the debugger reports a change in
2693 value at the exact instruction where the change occurs. If @value{GDBN}
2694 cannot set a hardware watchpoint, it sets a software watchpoint, which
2695 executes more slowly and reports the change in value at the next
2696 statement, not the instruction, after the change occurs.
2697
2698 When you issue the @code{watch} command, @value{GDBN} reports
2699
2700 @example
2701 Hardware watchpoint @var{num}: @var{expr}
2702 @end example
2703
2704 @noindent
2705 if it was able to set a hardware watchpoint.
2706
2707 Currently, the @code{awatch} and @code{rwatch} commands can only set
2708 hardware watchpoints, because accesses to data that don't change the
2709 value of the watched expression cannot be detected without examining
2710 every instruction as it is being executed, and @value{GDBN} does not do
2711 that currently. If @value{GDBN} finds that it is unable to set a
2712 hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
2713 will print a message like this:
2714
2715 @smallexample
2716 Expression cannot be implemented with read/access watchpoint.
2717 @end smallexample
2718
2719 Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
2720 data type of the watched expression is wider than what a hardware
2721 watchpoint on the target machine can handle. For example, some systems
2722 can only watch regions that are up to 4 bytes wide; on such systems you
2723 cannot set hardware watchpoints for an expression that yields a
2724 double-precision floating-point number (which is typically 8 bytes
2725 wide). As a work-around, it might be possible to break the large region
2726 into a series of smaller ones and watch them with separate watchpoints.
2727
2728 If you set too many hardware watchpoints, @value{GDBN} might be unable
2729 to insert all of them when you resume the execution of your program.
2730 Since the precise number of active watchpoints is unknown until such
2731 time as the program is about to be resumed, @value{GDBN} might not be
2732 able to warn you about this when you set the watchpoints, and the
2733 warning will be printed only when the program is resumed:
2734
2735 @smallexample
2736 Hardware watchpoint @var{num}: Could not insert watchpoint
2737 @end smallexample
2738
2739 @noindent
2740 If this happens, delete or disable some of the watchpoints.
2741
2742 The SPARClite DSU will generate traps when a program accesses some data
2743 or instruction address that is assigned to the debug registers. For the
2744 data addresses, DSU facilitates the @code{watch} command. However the
2745 hardware breakpoint registers can only take two data watchpoints, and
2746 both watchpoints must be the same kind. For example, you can set two
2747 watchpoints with @code{watch} commands, two with @code{rwatch} commands,
2748 @strong{or} two with @code{awatch} commands, but you cannot set one
2749 watchpoint with one command and the other with a different command.
2750 @value{GDBN} will reject the command if you try to mix watchpoints.
2751 Delete or disable unused watchpoint commands before setting new ones.
2752
2753 If you call a function interactively using @code{print} or @code{call},
2754 any watchpoints you have set will be inactive until @value{GDBN} reaches another
2755 kind of breakpoint or the call completes.
2756
2757 @value{GDBN} automatically deletes watchpoints that watch local
2758 (automatic) variables, or expressions that involve such variables, when
2759 they go out of scope, that is, when the execution leaves the block in
2760 which these variables were defined. In particular, when the program
2761 being debugged terminates, @emph{all} local variables go out of scope,
2762 and so only watchpoints that watch global variables remain set. If you
2763 rerun the program, you will need to set all such watchpoints again. One
2764 way of doing that would be to set a code breakpoint at the entry to the
2765 @code{main} function and when it breaks, set all the watchpoints.
2766
2767 @quotation
2768 @cindex watchpoints and threads
2769 @cindex threads and watchpoints
2770 @emph{Warning:} In multi-thread programs, watchpoints have only limited
2771 usefulness. With the current watchpoint implementation, @value{GDBN}
2772 can only watch the value of an expression @emph{in a single thread}. If
2773 you are confident that the expression can only change due to the current
2774 thread's activity (and if you are also confident that no other thread
2775 can become current), then you can use watchpoints as usual. However,
2776 @value{GDBN} may not notice when a non-current thread's activity changes
2777 the expression.
2778
2779 @c FIXME: this is almost identical to the previous paragraph.
2780 @emph{HP-UX Warning:} In multi-thread programs, software watchpoints
2781 have only limited usefulness. If @value{GDBN} creates a software
2782 watchpoint, it can only watch the value of an expression @emph{in a
2783 single thread}. If you are confident that the expression can only
2784 change due to the current thread's activity (and if you are also
2785 confident that no other thread can become current), then you can use
2786 software watchpoints as usual. However, @value{GDBN} may not notice
2787 when a non-current thread's activity changes the expression. (Hardware
2788 watchpoints, in contrast, watch an expression in all threads.)
2789 @end quotation
2790
2791 @node Set Catchpoints
2792 @subsection Setting catchpoints
2793 @cindex catchpoints, setting
2794 @cindex exception handlers
2795 @cindex event handling
2796
2797 You can use @dfn{catchpoints} to cause the debugger to stop for certain
2798 kinds of program events, such as C@t{++} exceptions or the loading of a
2799 shared library. Use the @code{catch} command to set a catchpoint.
2800
2801 @table @code
2802 @kindex catch
2803 @item catch @var{event}
2804 Stop when @var{event} occurs. @var{event} can be any of the following:
2805 @table @code
2806 @item throw
2807 @kindex catch throw
2808 The throwing of a C@t{++} exception.
2809
2810 @item catch
2811 @kindex catch catch
2812 The catching of a C@t{++} exception.
2813
2814 @item exec
2815 @kindex catch exec
2816 A call to @code{exec}. This is currently only available for HP-UX.
2817
2818 @item fork
2819 @kindex catch fork
2820 A call to @code{fork}. This is currently only available for HP-UX.
2821
2822 @item vfork
2823 @kindex catch vfork
2824 A call to @code{vfork}. This is currently only available for HP-UX.
2825
2826 @item load
2827 @itemx load @var{libname}
2828 @kindex catch load
2829 The dynamic loading of any shared library, or the loading of the library
2830 @var{libname}. This is currently only available for HP-UX.
2831
2832 @item unload
2833 @itemx unload @var{libname}
2834 @kindex catch unload
2835 The unloading of any dynamically loaded shared library, or the unloading
2836 of the library @var{libname}. This is currently only available for HP-UX.
2837 @end table
2838
2839 @item tcatch @var{event}
2840 Set a catchpoint that is enabled only for one stop. The catchpoint is
2841 automatically deleted after the first time the event is caught.
2842
2843 @end table
2844
2845 Use the @code{info break} command to list the current catchpoints.
2846
2847 There are currently some limitations to C@t{++} exception handling
2848 (@code{catch throw} and @code{catch catch}) in @value{GDBN}:
2849
2850 @itemize @bullet
2851 @item
2852 If you call a function interactively, @value{GDBN} normally returns
2853 control to you when the function has finished executing. If the call
2854 raises an exception, however, the call may bypass the mechanism that
2855 returns control to you and cause your program either to abort or to
2856 simply continue running until it hits a breakpoint, catches a signal
2857 that @value{GDBN} is listening for, or exits. This is the case even if
2858 you set a catchpoint for the exception; catchpoints on exceptions are
2859 disabled within interactive calls.
2860
2861 @item
2862 You cannot raise an exception interactively.
2863
2864 @item
2865 You cannot install an exception handler interactively.
2866 @end itemize
2867
2868 @cindex raise exceptions
2869 Sometimes @code{catch} is not the best way to debug exception handling:
2870 if you need to know exactly where an exception is raised, it is better to
2871 stop @emph{before} the exception handler is called, since that way you
2872 can see the stack before any unwinding takes place. If you set a
2873 breakpoint in an exception handler instead, it may not be easy to find
2874 out where the exception was raised.
2875
2876 To stop just before an exception handler is called, you need some
2877 knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
2878 raised by calling a library function named @code{__raise_exception}
2879 which has the following ANSI C interface:
2880
2881 @example
2882 /* @var{addr} is where the exception identifier is stored.
2883 @var{id} is the exception identifier. */
2884 void __raise_exception (void **addr, void *id);
2885 @end example
2886
2887 @noindent
2888 To make the debugger catch all exceptions before any stack
2889 unwinding takes place, set a breakpoint on @code{__raise_exception}
2890 (@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions}).
2891
2892 With a conditional breakpoint (@pxref{Conditions, ,Break conditions})
2893 that depends on the value of @var{id}, you can stop your program when
2894 a specific exception is raised. You can use multiple conditional
2895 breakpoints to stop your program when any of a number of exceptions are
2896 raised.
2897
2898
2899 @node Delete Breaks
2900 @subsection Deleting breakpoints
2901
2902 @cindex clearing breakpoints, watchpoints, catchpoints
2903 @cindex deleting breakpoints, watchpoints, catchpoints
2904 It is often necessary to eliminate a breakpoint, watchpoint, or
2905 catchpoint once it has done its job and you no longer want your program
2906 to stop there. This is called @dfn{deleting} the breakpoint. A
2907 breakpoint that has been deleted no longer exists; it is forgotten.
2908
2909 With the @code{clear} command you can delete breakpoints according to
2910 where they are in your program. With the @code{delete} command you can
2911 delete individual breakpoints, watchpoints, or catchpoints by specifying
2912 their breakpoint numbers.
2913
2914 It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
2915 automatically ignores breakpoints on the first instruction to be executed
2916 when you continue execution without changing the execution address.
2917
2918 @table @code
2919 @kindex clear
2920 @item clear
2921 Delete any breakpoints at the next instruction to be executed in the
2922 selected stack frame (@pxref{Selection, ,Selecting a frame}). When
2923 the innermost frame is selected, this is a good way to delete a
2924 breakpoint where your program just stopped.
2925
2926 @item clear @var{function}
2927 @itemx clear @var{filename}:@var{function}
2928 Delete any breakpoints set at entry to the function @var{function}.
2929
2930 @item clear @var{linenum}
2931 @itemx clear @var{filename}:@var{linenum}
2932 Delete any breakpoints set at or within the code of the specified line.
2933
2934 @cindex delete breakpoints
2935 @kindex delete
2936 @kindex d @r{(@code{delete})}
2937 @item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2938 Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
2939 ranges specified as arguments. If no argument is specified, delete all
2940 breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
2941 confirm off}). You can abbreviate this command as @code{d}.
2942 @end table
2943
2944 @node Disabling
2945 @subsection Disabling breakpoints
2946
2947 @kindex disable breakpoints
2948 @kindex enable breakpoints
2949 Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
2950 prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
2951 it had been deleted, but remembers the information on the breakpoint so
2952 that you can @dfn{enable} it again later.
2953
2954 You disable and enable breakpoints, watchpoints, and catchpoints with
2955 the @code{enable} and @code{disable} commands, optionally specifying one
2956 or more breakpoint numbers as arguments. Use @code{info break} or
2957 @code{info watch} to print a list of breakpoints, watchpoints, and
2958 catchpoints if you do not know which numbers to use.
2959
2960 A breakpoint, watchpoint, or catchpoint can have any of four different
2961 states of enablement:
2962
2963 @itemize @bullet
2964 @item
2965 Enabled. The breakpoint stops your program. A breakpoint set
2966 with the @code{break} command starts out in this state.
2967 @item
2968 Disabled. The breakpoint has no effect on your program.
2969 @item
2970 Enabled once. The breakpoint stops your program, but then becomes
2971 disabled.
2972 @item
2973 Enabled for deletion. The breakpoint stops your program, but
2974 immediately after it does so it is deleted permanently. A breakpoint
2975 set with the @code{tbreak} command starts out in this state.
2976 @end itemize
2977
2978 You can use the following commands to enable or disable breakpoints,
2979 watchpoints, and catchpoints:
2980
2981 @table @code
2982 @kindex disable breakpoints
2983 @kindex disable
2984 @kindex dis @r{(@code{disable})}
2985 @item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2986 Disable the specified breakpoints---or all breakpoints, if none are
2987 listed. A disabled breakpoint has no effect but is not forgotten. All
2988 options such as ignore-counts, conditions and commands are remembered in
2989 case the breakpoint is enabled again later. You may abbreviate
2990 @code{disable} as @code{dis}.
2991
2992 @kindex enable breakpoints
2993 @kindex enable
2994 @item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2995 Enable the specified breakpoints (or all defined breakpoints). They
2996 become effective once again in stopping your program.
2997
2998 @item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
2999 Enable the specified breakpoints temporarily. @value{GDBN} disables any
3000 of these breakpoints immediately after stopping your program.
3001
3002 @item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
3003 Enable the specified breakpoints to work once, then die. @value{GDBN}
3004 deletes any of these breakpoints as soon as your program stops there.
3005 @end table
3006
3007 @c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
3008 @c confusing: tbreak is also initially enabled.
3009 Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
3010 ,Setting breakpoints}), breakpoints that you set are initially enabled;
3011 subsequently, they become disabled or enabled only when you use one of
3012 the commands above. (The command @code{until} can set and delete a
3013 breakpoint of its own, but it does not change the state of your other
3014 breakpoints; see @ref{Continuing and Stepping, ,Continuing and
3015 stepping}.)
3016
3017 @node Conditions
3018 @subsection Break conditions
3019 @cindex conditional breakpoints
3020 @cindex breakpoint conditions
3021
3022 @c FIXME what is scope of break condition expr? Context where wanted?
3023 @c in particular for a watchpoint?
3024 The simplest sort of breakpoint breaks every time your program reaches a
3025 specified place. You can also specify a @dfn{condition} for a
3026 breakpoint. A condition is just a Boolean expression in your
3027 programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
3028 a condition evaluates the expression each time your program reaches it,
3029 and your program stops only if the condition is @emph{true}.
3030
3031 This is the converse of using assertions for program validation; in that
3032 situation, you want to stop when the assertion is violated---that is,
3033 when the condition is false. In C, if you want to test an assertion expressed
3034 by the condition @var{assert}, you should set the condition
3035 @samp{! @var{assert}} on the appropriate breakpoint.
3036
3037 Conditions are also accepted for watchpoints; you may not need them,
3038 since a watchpoint is inspecting the value of an expression anyhow---but
3039 it might be simpler, say, to just set a watchpoint on a variable name,
3040 and specify a condition that tests whether the new value is an interesting
3041 one.
3042
3043 Break conditions can have side effects, and may even call functions in
3044 your program. This can be useful, for example, to activate functions
3045 that log program progress, or to use your own print functions to
3046 format special data structures. The effects are completely predictable
3047 unless there is another enabled breakpoint at the same address. (In
3048 that case, @value{GDBN} might see the other breakpoint first and stop your
3049 program without checking the condition of this one.) Note that
3050 breakpoint commands are usually more convenient and flexible than break
3051 conditions for the
3052 purpose of performing side effects when a breakpoint is reached
3053 (@pxref{Break Commands, ,Breakpoint command lists}).
3054
3055 Break conditions can be specified when a breakpoint is set, by using
3056 @samp{if} in the arguments to the @code{break} command. @xref{Set
3057 Breaks, ,Setting breakpoints}. They can also be changed at any time
3058 with the @code{condition} command.
3059
3060 You can also use the @code{if} keyword with the @code{watch} command.
3061 The @code{catch} command does not recognize the @code{if} keyword;
3062 @code{condition} is the only way to impose a further condition on a
3063 catchpoint.
3064
3065 @table @code
3066 @kindex condition
3067 @item condition @var{bnum} @var{expression}
3068 Specify @var{expression} as the break condition for breakpoint,
3069 watchpoint, or catchpoint number @var{bnum}. After you set a condition,
3070 breakpoint @var{bnum} stops your program only if the value of
3071 @var{expression} is true (nonzero, in C). When you use
3072 @code{condition}, @value{GDBN} checks @var{expression} immediately for
3073 syntactic correctness, and to determine whether symbols in it have
3074 referents in the context of your breakpoint. If @var{expression} uses
3075 symbols not referenced in the context of the breakpoint, @value{GDBN}
3076 prints an error message:
3077
3078 @example
3079 No symbol "foo" in current context.
3080 @end example
3081
3082 @noindent
3083 @value{GDBN} does
3084 not actually evaluate @var{expression} at the time the @code{condition}
3085 command (or a command that sets a breakpoint with a condition, like
3086 @code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
3087
3088 @item condition @var{bnum}
3089 Remove the condition from breakpoint number @var{bnum}. It becomes
3090 an ordinary unconditional breakpoint.
3091 @end table
3092
3093 @cindex ignore count (of breakpoint)
3094 A special case of a breakpoint condition is to stop only when the
3095 breakpoint has been reached a certain number of times. This is so
3096 useful that there is a special way to do it, using the @dfn{ignore
3097 count} of the breakpoint. Every breakpoint has an ignore count, which
3098 is an integer. Most of the time, the ignore count is zero, and
3099 therefore has no effect. But if your program reaches a breakpoint whose
3100 ignore count is positive, then instead of stopping, it just decrements
3101 the ignore count by one and continues. As a result, if the ignore count
3102 value is @var{n}, the breakpoint does not stop the next @var{n} times
3103 your program reaches it.
3104
3105 @table @code
3106 @kindex ignore
3107 @item ignore @var{bnum} @var{count}
3108 Set the ignore count of breakpoint number @var{bnum} to @var{count}.
3109 The next @var{count} times the breakpoint is reached, your program's
3110 execution does not stop; other than to decrement the ignore count, @value{GDBN}
3111 takes no action.
3112
3113 To make the breakpoint stop the next time it is reached, specify
3114 a count of zero.
3115
3116 When you use @code{continue} to resume execution of your program from a
3117 breakpoint, you can specify an ignore count directly as an argument to
3118 @code{continue}, rather than using @code{ignore}. @xref{Continuing and
3119 Stepping,,Continuing and stepping}.
3120
3121 If a breakpoint has a positive ignore count and a condition, the
3122 condition is not checked. Once the ignore count reaches zero,
3123 @value{GDBN} resumes checking the condition.
3124
3125 You could achieve the effect of the ignore count with a condition such
3126 as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
3127 is decremented each time. @xref{Convenience Vars, ,Convenience
3128 variables}.
3129 @end table
3130
3131 Ignore counts apply to breakpoints, watchpoints, and catchpoints.
3132
3133
3134 @node Break Commands
3135 @subsection Breakpoint command lists
3136
3137 @cindex breakpoint commands
3138 You can give any breakpoint (or watchpoint or catchpoint) a series of
3139 commands to execute when your program stops due to that breakpoint. For
3140 example, you might want to print the values of certain expressions, or
3141 enable other breakpoints.
3142
3143 @table @code
3144 @kindex commands
3145 @kindex end
3146 @item commands @r{[}@var{bnum}@r{]}
3147 @itemx @dots{} @var{command-list} @dots{}
3148 @itemx end
3149 Specify a list of commands for breakpoint number @var{bnum}. The commands
3150 themselves appear on the following lines. Type a line containing just
3151 @code{end} to terminate the commands.
3152
3153 To remove all commands from a breakpoint, type @code{commands} and
3154 follow it immediately with @code{end}; that is, give no commands.
3155
3156 With no @var{bnum} argument, @code{commands} refers to the last
3157 breakpoint, watchpoint, or catchpoint set (not to the breakpoint most
3158 recently encountered).
3159 @end table
3160
3161 Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
3162 disabled within a @var{command-list}.
3163
3164 You can use breakpoint commands to start your program up again. Simply
3165 use the @code{continue} command, or @code{step}, or any other command
3166 that resumes execution.
3167
3168 Any other commands in the command list, after a command that resumes
3169 execution, are ignored. This is because any time you resume execution
3170 (even with a simple @code{next} or @code{step}), you may encounter
3171 another breakpoint---which could have its own command list, leading to
3172 ambiguities about which list to execute.
3173
3174 @kindex silent
3175 If the first command you specify in a command list is @code{silent}, the
3176 usual message about stopping at a breakpoint is not printed. This may
3177 be desirable for breakpoints that are to print a specific message and
3178 then continue. If none of the remaining commands print anything, you
3179 see no sign that the breakpoint was reached. @code{silent} is
3180 meaningful only at the beginning of a breakpoint command list.
3181
3182 The commands @code{echo}, @code{output}, and @code{printf} allow you to
3183 print precisely controlled output, and are often useful in silent
3184 breakpoints. @xref{Output, ,Commands for controlled output}.
3185
3186 For example, here is how you could use breakpoint commands to print the
3187 value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
3188
3189 @example
3190 break foo if x>0
3191 commands
3192 silent
3193 printf "x is %d\n",x
3194 cont
3195 end
3196 @end example
3197
3198 One application for breakpoint commands is to compensate for one bug so
3199 you can test for another. Put a breakpoint just after the erroneous line
3200 of code, give it a condition to detect the case in which something
3201 erroneous has been done, and give it commands to assign correct values
3202 to any variables that need them. End with the @code{continue} command
3203 so that your program does not stop, and start with the @code{silent}
3204 command so that no output is produced. Here is an example:
3205
3206 @example
3207 break 403
3208 commands
3209 silent
3210 set x = y + 4
3211 cont
3212 end
3213 @end example
3214
3215 @node Breakpoint Menus
3216 @subsection Breakpoint menus
3217 @cindex overloading
3218 @cindex symbol overloading
3219
3220 Some programming languages (notably C@t{++}) permit a single function name
3221 to be defined several times, for application in different contexts.
3222 This is called @dfn{overloading}. When a function name is overloaded,
3223 @samp{break @var{function}} is not enough to tell @value{GDBN} where you want
3224 a breakpoint. If you realize this is a problem, you can use
3225 something like @samp{break @var{function}(@var{types})} to specify which
3226 particular version of the function you want. Otherwise, @value{GDBN} offers
3227 you a menu of numbered choices for different possible breakpoints, and
3228 waits for your selection with the prompt @samp{>}. The first two
3229 options are always @samp{[0] cancel} and @samp{[1] all}. Typing @kbd{1}
3230 sets a breakpoint at each definition of @var{function}, and typing
3231 @kbd{0} aborts the @code{break} command without setting any new
3232 breakpoints.
3233
3234 For example, the following session excerpt shows an attempt to set a
3235 breakpoint at the overloaded symbol @code{String::after}.
3236 We choose three particular definitions of that function name:
3237
3238 @c FIXME! This is likely to change to show arg type lists, at least
3239 @smallexample
3240 @group
3241 (@value{GDBP}) b String::after
3242 [0] cancel
3243 [1] all
3244 [2] file:String.cc; line number:867
3245 [3] file:String.cc; line number:860
3246 [4] file:String.cc; line number:875
3247 [5] file:String.cc; line number:853
3248 [6] file:String.cc; line number:846
3249 [7] file:String.cc; line number:735
3250 > 2 4 6
3251 Breakpoint 1 at 0xb26c: file String.cc, line 867.
3252 Breakpoint 2 at 0xb344: file String.cc, line 875.
3253 Breakpoint 3 at 0xafcc: file String.cc, line 846.
3254 Multiple breakpoints were set.
3255 Use the "delete" command to delete unwanted
3256 breakpoints.
3257 (@value{GDBP})
3258 @end group
3259 @end smallexample
3260
3261 @c @ifclear BARETARGET
3262 @node Error in Breakpoints
3263 @subsection ``Cannot insert breakpoints''
3264 @c
3265 @c FIXME!! 14/6/95 Is there a real example of this? Let's use it.
3266 @c
3267 Under some operating systems, breakpoints cannot be used in a program if
3268 any other process is running that program. In this situation,
3269 attempting to run or continue a program with a breakpoint causes
3270 @value{GDBN} to print an error message:
3271
3272 @example
3273 Cannot insert breakpoints.
3274 The same program may be running in another process.
3275 @end example
3276
3277 When this happens, you have three ways to proceed:
3278
3279 @enumerate
3280 @item
3281 Remove or disable the breakpoints, then continue.
3282
3283 @item
3284 Suspend @value{GDBN}, and copy the file containing your program to a new
3285 name. Resume @value{GDBN} and use the @code{exec-file} command to specify
3286 that @value{GDBN} should run your program under that name.
3287 Then start your program again.
3288
3289 @item
3290 Relink your program so that the text segment is nonsharable, using the
3291 linker option @samp{-N}. The operating system limitation may not apply
3292 to nonsharable executables.
3293 @end enumerate
3294 @c @end ifclear
3295
3296 A similar message can be printed if you request too many active
3297 hardware-assisted breakpoints and watchpoints:
3298
3299 @c FIXME: the precise wording of this message may change; the relevant
3300 @c source change is not committed yet (Sep 3, 1999).
3301 @smallexample
3302 Stopped; cannot insert breakpoints.
3303 You may have requested too many hardware breakpoints and watchpoints.
3304 @end smallexample
3305
3306 @noindent
3307 This message is printed when you attempt to resume the program, since
3308 only then @value{GDBN} knows exactly how many hardware breakpoints and
3309 watchpoints it needs to insert.
3310
3311 When this message is printed, you need to disable or remove some of the
3312 hardware-assisted breakpoints and watchpoints, and then continue.
3313
3314
3315 @node Continuing and Stepping
3316 @section Continuing and stepping
3317
3318 @cindex stepping
3319 @cindex continuing
3320 @cindex resuming execution
3321 @dfn{Continuing} means resuming program execution until your program
3322 completes normally. In contrast, @dfn{stepping} means executing just
3323 one more ``step'' of your program, where ``step'' may mean either one
3324 line of source code, or one machine instruction (depending on what
3325 particular command you use). Either when continuing or when stepping,
3326 your program may stop even sooner, due to a breakpoint or a signal. (If
3327 it stops due to a signal, you may want to use @code{handle}, or use
3328 @samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
3329
3330 @table @code
3331 @kindex continue
3332 @kindex c @r{(@code{continue})}
3333 @kindex fg @r{(resume foreground execution)}
3334 @item continue @r{[}@var{ignore-count}@r{]}
3335 @itemx c @r{[}@var{ignore-count}@r{]}
3336 @itemx fg @r{[}@var{ignore-count}@r{]}
3337 Resume program execution, at the address where your program last stopped;
3338 any breakpoints set at that address are bypassed. The optional argument
3339 @var{ignore-count} allows you to specify a further number of times to
3340 ignore a breakpoint at this location; its effect is like that of
3341 @code{ignore} (@pxref{Conditions, ,Break conditions}).
3342
3343 The argument @var{ignore-count} is meaningful only when your program
3344 stopped due to a breakpoint. At other times, the argument to
3345 @code{continue} is ignored.
3346
3347 The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
3348 debugged program is deemed to be the foreground program) are provided
3349 purely for convenience, and have exactly the same behavior as
3350 @code{continue}.
3351 @end table
3352
3353 To resume execution at a different place, you can use @code{return}
3354 (@pxref{Returning, ,Returning from a function}) to go back to the
3355 calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
3356 different address}) to go to an arbitrary location in your program.
3357
3358 A typical technique for using stepping is to set a breakpoint
3359 (@pxref{Breakpoints, ,Breakpoints; watchpoints; and catchpoints}) at the
3360 beginning of the function or the section of your program where a problem
3361 is believed to lie, run your program until it stops at that breakpoint,
3362 and then step through the suspect area, examining the variables that are
3363 interesting, until you see the problem happen.
3364
3365 @table @code
3366 @kindex step
3367 @kindex s @r{(@code{step})}
3368 @item step
3369 Continue running your program until control reaches a different source
3370 line, then stop it and return control to @value{GDBN}. This command is
3371 abbreviated @code{s}.
3372
3373 @quotation
3374 @c "without debugging information" is imprecise; actually "without line
3375 @c numbers in the debugging information". (gcc -g1 has debugging info but
3376 @c not line numbers). But it seems complex to try to make that
3377 @c distinction here.
3378 @emph{Warning:} If you use the @code{step} command while control is
3379 within a function that was compiled without debugging information,
3380 execution proceeds until control reaches a function that does have
3381 debugging information. Likewise, it will not step into a function which
3382 is compiled without debugging information. To step through functions
3383 without debugging information, use the @code{stepi} command, described
3384 below.
3385 @end quotation
3386
3387 The @code{step} command only stops at the first instruction of a source
3388 line. This prevents the multiple stops that could otherwise occur in
3389 @code{switch} statements, @code{for} loops, etc. @code{step} continues
3390 to stop if a function that has debugging information is called within
3391 the line. In other words, @code{step} @emph{steps inside} any functions
3392 called within the line.
3393
3394 Also, the @code{step} command only enters a function if there is line
3395 number information for the function. Otherwise it acts like the
3396 @code{next} command. This avoids problems when using @code{cc -gl}
3397 on MIPS machines. Previously, @code{step} entered subroutines if there
3398 was any debugging information about the routine.
3399
3400 @item step @var{count}
3401 Continue running as in @code{step}, but do so @var{count} times. If a
3402 breakpoint is reached, or a signal not related to stepping occurs before
3403 @var{count} steps, stepping stops right away.
3404
3405 @kindex next
3406 @kindex n @r{(@code{next})}
3407 @item next @r{[}@var{count}@r{]}
3408 Continue to the next source line in the current (innermost) stack frame.
3409 This is similar to @code{step}, but function calls that appear within
3410 the line of code are executed without stopping. Execution stops when
3411 control reaches a different line of code at the original stack level
3412 that was executing when you gave the @code{next} command. This command
3413 is abbreviated @code{n}.
3414
3415 An argument @var{count} is a repeat count, as for @code{step}.
3416
3417
3418 @c FIX ME!! Do we delete this, or is there a way it fits in with
3419 @c the following paragraph? --- Vctoria
3420 @c
3421 @c @code{next} within a function that lacks debugging information acts like
3422 @c @code{step}, but any function calls appearing within the code of the
3423 @c function are executed without stopping.
3424
3425 The @code{next} command only stops at the first instruction of a
3426 source line. This prevents multiple stops that could otherwise occur in
3427 @code{switch} statements, @code{for} loops, etc.
3428
3429 @kindex set step-mode
3430 @item set step-mode
3431 @cindex functions without line info, and stepping
3432 @cindex stepping into functions with no line info
3433 @itemx set step-mode on
3434 The @code{set step-mode on} command causes the @code{step} command to
3435 stop at the first instruction of a function which contains no debug line
3436 information rather than stepping over it.
3437
3438 This is useful in cases where you may be interested in inspecting the
3439 machine instructions of a function which has no symbolic info and do not
3440 want @value{GDBN} to automatically skip over this function.
3441
3442 @item set step-mode off
3443 Causes the @code{step} command to step over any functions which contains no
3444 debug information. This is the default.
3445
3446 @kindex finish
3447 @item finish
3448 Continue running until just after function in the selected stack frame
3449 returns. Print the returned value (if any).
3450
3451 Contrast this with the @code{return} command (@pxref{Returning,
3452 ,Returning from a function}).
3453
3454 @kindex until
3455 @kindex u @r{(@code{until})}
3456 @item until
3457 @itemx u
3458 Continue running until a source line past the current line, in the
3459 current stack frame, is reached. This command is used to avoid single
3460 stepping through a loop more than once. It is like the @code{next}
3461 command, except that when @code{until} encounters a jump, it
3462 automatically continues execution until the program counter is greater
3463 than the address of the jump.
3464
3465 This means that when you reach the end of a loop after single stepping
3466 though it, @code{until} makes your program continue execution until it
3467 exits the loop. In contrast, a @code{next} command at the end of a loop
3468 simply steps back to the beginning of the loop, which forces you to step
3469 through the next iteration.
3470
3471 @code{until} always stops your program if it attempts to exit the current
3472 stack frame.
3473
3474 @code{until} may produce somewhat counterintuitive results if the order
3475 of machine code does not match the order of the source lines. For
3476 example, in the following excerpt from a debugging session, the @code{f}
3477 (@code{frame}) command shows that execution is stopped at line
3478 @code{206}; yet when we use @code{until}, we get to line @code{195}:
3479
3480 @example
3481 (@value{GDBP}) f
3482 #0 main (argc=4, argv=0xf7fffae8) at m4.c:206
3483 206 expand_input();
3484 (@value{GDBP}) until
3485 195 for ( ; argc > 0; NEXTARG) @{
3486 @end example
3487
3488 This happened because, for execution efficiency, the compiler had
3489 generated code for the loop closure test at the end, rather than the
3490 start, of the loop---even though the test in a C @code{for}-loop is
3491 written before the body of the loop. The @code{until} command appeared
3492 to step back to the beginning of the loop when it advanced to this
3493 expression; however, it has not really gone to an earlier
3494 statement---not in terms of the actual machine code.
3495
3496 @code{until} with no argument works by means of single
3497 instruction stepping, and hence is slower than @code{until} with an
3498 argument.
3499
3500 @item until @var{location}
3501 @itemx u @var{location}
3502 Continue running your program until either the specified location is
3503 reached, or the current stack frame returns. @var{location} is any of
3504 the forms of argument acceptable to @code{break} (@pxref{Set Breaks,
3505 ,Setting breakpoints}). This form of the command uses breakpoints,
3506 and hence is quicker than @code{until} without an argument.
3507
3508 @kindex stepi
3509 @kindex si @r{(@code{stepi})}
3510 @item stepi
3511 @itemx stepi @var{arg}
3512 @itemx si
3513 Execute one machine instruction, then stop and return to the debugger.
3514
3515 It is often useful to do @samp{display/i $pc} when stepping by machine
3516 instructions. This makes @value{GDBN} automatically display the next
3517 instruction to be executed, each time your program stops. @xref{Auto
3518 Display,, Automatic display}.
3519
3520 An argument is a repeat count, as in @code{step}.
3521
3522 @need 750
3523 @kindex nexti
3524 @kindex ni @r{(@code{nexti})}
3525 @item nexti
3526 @itemx nexti @var{arg}
3527 @itemx ni
3528 Execute one machine instruction, but if it is a function call,
3529 proceed until the function returns.
3530
3531 An argument is a repeat count, as in @code{next}.
3532 @end table
3533
3534 @node Signals
3535 @section Signals
3536 @cindex signals
3537
3538 A signal is an asynchronous event that can happen in a program. The
3539 operating system defines the possible kinds of signals, and gives each
3540 kind a name and a number. For example, in Unix @code{SIGINT} is the
3541 signal a program gets when you type an interrupt character (often @kbd{C-c});
3542 @code{SIGSEGV} is the signal a program gets from referencing a place in
3543 memory far away from all the areas in use; @code{SIGALRM} occurs when
3544 the alarm clock timer goes off (which happens only if your program has
3545 requested an alarm).
3546
3547 @cindex fatal signals
3548 Some signals, including @code{SIGALRM}, are a normal part of the
3549 functioning of your program. Others, such as @code{SIGSEGV}, indicate
3550 errors; these signals are @dfn{fatal} (they kill your program immediately) if the
3551 program has not specified in advance some other way to handle the signal.
3552 @code{SIGINT} does not indicate an error in your program, but it is normally
3553 fatal so it can carry out the purpose of the interrupt: to kill the program.
3554
3555 @value{GDBN} has the ability to detect any occurrence of a signal in your
3556 program. You can tell @value{GDBN} in advance what to do for each kind of
3557 signal.
3558
3559 @cindex handling signals
3560 Normally, @value{GDBN} is set up to let the non-erroneous signals like
3561 @code{SIGALRM} be silently passed to your program
3562 (so as not to interfere with their role in the program's functioning)
3563 but to stop your program immediately whenever an error signal happens.
3564 You can change these settings with the @code{handle} command.
3565
3566 @table @code
3567 @kindex info signals
3568 @item info signals
3569 @itemx info handle
3570 Print a table of all the kinds of signals and how @value{GDBN} has been told to
3571 handle each one. You can use this to see the signal numbers of all
3572 the defined types of signals.
3573
3574 @code{info handle} is an alias for @code{info signals}.
3575
3576 @kindex handle
3577 @item handle @var{signal} @var{keywords}@dots{}
3578 Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
3579 can be the number of a signal or its name (with or without the
3580 @samp{SIG} at the beginning); a list of signal numbers of the form
3581 @samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
3582 known signals. The @var{keywords} say what change to make.
3583 @end table
3584
3585 @c @group
3586 The keywords allowed by the @code{handle} command can be abbreviated.
3587 Their full names are:
3588
3589 @table @code
3590 @item nostop
3591 @value{GDBN} should not stop your program when this signal happens. It may
3592 still print a message telling you that the signal has come in.
3593
3594 @item stop
3595 @value{GDBN} should stop your program when this signal happens. This implies
3596 the @code{print} keyword as well.
3597
3598 @item print
3599 @value{GDBN} should print a message when this signal happens.
3600
3601 @item noprint
3602 @value{GDBN} should not mention the occurrence of the signal at all. This
3603 implies the @code{nostop} keyword as well.
3604
3605 @item pass
3606 @itemx noignore
3607 @value{GDBN} should allow your program to see this signal; your program
3608 can handle the signal, or else it may terminate if the signal is fatal
3609 and not handled. @code{pass} and @code{noignore} are synonyms.
3610
3611 @item nopass
3612 @itemx ignore
3613 @value{GDBN} should not allow your program to see this signal.
3614 @code{nopass} and @code{ignore} are synonyms.
3615 @end table
3616 @c @end group
3617
3618 When a signal stops your program, the signal is not visible to the
3619 program until you
3620 continue. Your program sees the signal then, if @code{pass} is in
3621 effect for the signal in question @emph{at that time}. In other words,
3622 after @value{GDBN} reports a signal, you can use the @code{handle}
3623 command with @code{pass} or @code{nopass} to control whether your
3624 program sees that signal when you continue.
3625
3626 The default is set to @code{nostop}, @code{noprint}, @code{pass} for
3627 non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
3628 @code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
3629 erroneous signals.
3630
3631 You can also use the @code{signal} command to prevent your program from
3632 seeing a signal, or cause it to see a signal it normally would not see,
3633 or to give it any signal at any time. For example, if your program stopped
3634 due to some sort of memory reference error, you might store correct
3635 values into the erroneous variables and continue, hoping to see more
3636 execution; but your program would probably terminate immediately as
3637 a result of the fatal signal once it saw the signal. To prevent this,
3638 you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
3639 program a signal}.
3640
3641 @node Thread Stops
3642 @section Stopping and starting multi-thread programs
3643
3644 When your program has multiple threads (@pxref{Threads,, Debugging
3645 programs with multiple threads}), you can choose whether to set
3646 breakpoints on all threads, or on a particular thread.
3647
3648 @table @code
3649 @cindex breakpoints and threads
3650 @cindex thread breakpoints
3651 @kindex break @dots{} thread @var{threadno}
3652 @item break @var{linespec} thread @var{threadno}
3653 @itemx break @var{linespec} thread @var{threadno} if @dots{}
3654 @var{linespec} specifies source lines; there are several ways of
3655 writing them, but the effect is always to specify some source line.
3656
3657 Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
3658 to specify that you only want @value{GDBN} to stop the program when a
3659 particular thread reaches this breakpoint. @var{threadno} is one of the
3660 numeric thread identifiers assigned by @value{GDBN}, shown in the first
3661 column of the @samp{info threads} display.
3662
3663 If you do not specify @samp{thread @var{threadno}} when you set a
3664 breakpoint, the breakpoint applies to @emph{all} threads of your
3665 program.
3666
3667 You can use the @code{thread} qualifier on conditional breakpoints as
3668 well; in this case, place @samp{thread @var{threadno}} before the
3669 breakpoint condition, like this:
3670
3671 @smallexample
3672 (@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
3673 @end smallexample
3674
3675 @end table
3676
3677 @cindex stopped threads
3678 @cindex threads, stopped
3679 Whenever your program stops under @value{GDBN} for any reason,
3680 @emph{all} threads of execution stop, not just the current thread. This
3681 allows you to examine the overall state of the program, including
3682 switching between threads, without worrying that things may change
3683 underfoot.
3684
3685 @cindex continuing threads
3686 @cindex threads, continuing
3687 Conversely, whenever you restart the program, @emph{all} threads start
3688 executing. @emph{This is true even when single-stepping} with commands
3689 like @code{step} or @code{next}.
3690
3691 In particular, @value{GDBN} cannot single-step all threads in lockstep.
3692 Since thread scheduling is up to your debugging target's operating
3693 system (not controlled by @value{GDBN}), other threads may
3694 execute more than one statement while the current thread completes a
3695 single step. Moreover, in general other threads stop in the middle of a
3696 statement, rather than at a clean statement boundary, when the program
3697 stops.
3698
3699 You might even find your program stopped in another thread after
3700 continuing or even single-stepping. This happens whenever some other
3701 thread runs into a breakpoint, a signal, or an exception before the
3702 first thread completes whatever you requested.
3703
3704 On some OSes, you can lock the OS scheduler and thus allow only a single
3705 thread to run.
3706
3707 @table @code
3708 @item set scheduler-locking @var{mode}
3709 Set the scheduler locking mode. If it is @code{off}, then there is no
3710 locking and any thread may run at any time. If @code{on}, then only the
3711 current thread may run when the inferior is resumed. The @code{step}
3712 mode optimizes for single-stepping. It stops other threads from
3713 ``seizing the prompt'' by preempting the current thread while you are
3714 stepping. Other threads will only rarely (or never) get a chance to run
3715 when you step. They are more likely to run when you @samp{next} over a
3716 function call, and they are completely free to run when you use commands
3717 like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
3718 thread hits a breakpoint during its timeslice, they will never steal the
3719 @value{GDBN} prompt away from the thread that you are debugging.
3720
3721 @item show scheduler-locking
3722 Display the current scheduler locking mode.
3723 @end table
3724
3725
3726 @node Stack
3727 @chapter Examining the Stack
3728
3729 When your program has stopped, the first thing you need to know is where it
3730 stopped and how it got there.
3731
3732 @cindex call stack
3733 Each time your program performs a function call, information about the call
3734 is generated.
3735 That information includes the location of the call in your program,
3736 the arguments of the call,
3737 and the local variables of the function being called.
3738 The information is saved in a block of data called a @dfn{stack frame}.
3739 The stack frames are allocated in a region of memory called the @dfn{call
3740 stack}.
3741
3742 When your program stops, the @value{GDBN} commands for examining the
3743 stack allow you to see all of this information.
3744
3745 @cindex selected frame
3746 One of the stack frames is @dfn{selected} by @value{GDBN} and many
3747 @value{GDBN} commands refer implicitly to the selected frame. In
3748 particular, whenever you ask @value{GDBN} for the value of a variable in
3749 your program, the value is found in the selected frame. There are
3750 special @value{GDBN} commands to select whichever frame you are
3751 interested in. @xref{Selection, ,Selecting a frame}.
3752
3753 When your program stops, @value{GDBN} automatically selects the
3754 currently executing frame and describes it briefly, similar to the
3755 @code{frame} command (@pxref{Frame Info, ,Information about a frame}).
3756
3757 @menu
3758 * Frames:: Stack frames
3759 * Backtrace:: Backtraces
3760 * Selection:: Selecting a frame
3761 * Frame Info:: Information on a frame
3762
3763 @end menu
3764
3765 @node Frames
3766 @section Stack frames
3767
3768 @cindex frame, definition
3769 @cindex stack frame
3770 The call stack is divided up into contiguous pieces called @dfn{stack
3771 frames}, or @dfn{frames} for short; each frame is the data associated
3772 with one call to one function. The frame contains the arguments given
3773 to the function, the function's local variables, and the address at
3774 which the function is executing.
3775
3776 @cindex initial frame
3777 @cindex outermost frame
3778 @cindex innermost frame
3779 When your program is started, the stack has only one frame, that of the
3780 function @code{main}. This is called the @dfn{initial} frame or the
3781 @dfn{outermost} frame. Each time a function is called, a new frame is
3782 made. Each time a function returns, the frame for that function invocation
3783 is eliminated. If a function is recursive, there can be many frames for
3784 the same function. The frame for the function in which execution is
3785 actually occurring is called the @dfn{innermost} frame. This is the most
3786 recently created of all the stack frames that still exist.
3787
3788 @cindex frame pointer
3789 Inside your program, stack frames are identified by their addresses. A
3790 stack frame consists of many bytes, each of which has its own address; each
3791 kind of computer has a convention for choosing one byte whose
3792 address serves as the address of the frame. Usually this address is kept
3793 in a register called the @dfn{frame pointer register} while execution is
3794 going on in that frame.
3795
3796 @cindex frame number
3797 @value{GDBN} assigns numbers to all existing stack frames, starting with
3798 zero for the innermost frame, one for the frame that called it,
3799 and so on upward. These numbers do not really exist in your program;
3800 they are assigned by @value{GDBN} to give you a way of designating stack
3801 frames in @value{GDBN} commands.
3802
3803 @c The -fomit-frame-pointer below perennially causes hbox overflow
3804 @c underflow problems.
3805 @cindex frameless execution
3806 Some compilers provide a way to compile functions so that they operate
3807 without stack frames. (For example, the @value{GCC} option
3808 @example
3809 @samp{-fomit-frame-pointer}
3810 @end example
3811 generates functions without a frame.)
3812 This is occasionally done with heavily used library functions to save
3813 the frame setup time. @value{GDBN} has limited facilities for dealing
3814 with these function invocations. If the innermost function invocation
3815 has no stack frame, @value{GDBN} nevertheless regards it as though
3816 it had a separate frame, which is numbered zero as usual, allowing
3817 correct tracing of the function call chain. However, @value{GDBN} has
3818 no provision for frameless functions elsewhere in the stack.
3819
3820 @table @code
3821 @kindex frame@r{, command}
3822 @cindex current stack frame
3823 @item frame @var{args}
3824 The @code{frame} command allows you to move from one stack frame to another,
3825 and to print the stack frame you select. @var{args} may be either the
3826 address of the frame or the stack frame number. Without an argument,
3827 @code{frame} prints the current stack frame.
3828
3829 @kindex select-frame
3830 @cindex selecting frame silently
3831 @item select-frame
3832 The @code{select-frame} command allows you to move from one stack frame
3833 to another without printing the frame. This is the silent version of
3834 @code{frame}.
3835 @end table
3836
3837 @node Backtrace
3838 @section Backtraces
3839
3840 @cindex backtraces
3841 @cindex tracebacks
3842 @cindex stack traces
3843 A backtrace is a summary of how your program got where it is. It shows one
3844 line per frame, for many frames, starting with the currently executing
3845 frame (frame zero), followed by its caller (frame one), and on up the
3846 stack.
3847
3848 @table @code
3849 @kindex backtrace
3850 @kindex bt @r{(@code{backtrace})}
3851 @item backtrace
3852 @itemx bt
3853 Print a backtrace of the entire stack: one line per frame for all
3854 frames in the stack.
3855
3856 You can stop the backtrace at any time by typing the system interrupt
3857 character, normally @kbd{C-c}.
3858
3859 @item backtrace @var{n}
3860 @itemx bt @var{n}
3861 Similar, but print only the innermost @var{n} frames.
3862
3863 @item backtrace -@var{n}
3864 @itemx bt -@var{n}
3865 Similar, but print only the outermost @var{n} frames.
3866 @end table
3867
3868 @kindex where
3869 @kindex info stack
3870 @kindex info s @r{(@code{info stack})}
3871 The names @code{where} and @code{info stack} (abbreviated @code{info s})
3872 are additional aliases for @code{backtrace}.
3873
3874 Each line in the backtrace shows the frame number and the function name.
3875 The program counter value is also shown---unless you use @code{set
3876 print address off}. The backtrace also shows the source file name and
3877 line number, as well as the arguments to the function. The program
3878 counter value is omitted if it is at the beginning of the code for that
3879 line number.
3880
3881 Here is an example of a backtrace. It was made with the command
3882 @samp{bt 3}, so it shows the innermost three frames.
3883
3884 @smallexample
3885 @group
3886 #0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
3887 at builtin.c:993
3888 #1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
3889 #2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
3890 at macro.c:71
3891 (More stack frames follow...)
3892 @end group
3893 @end smallexample
3894
3895 @noindent
3896 The display for frame zero does not begin with a program counter
3897 value, indicating that your program has stopped at the beginning of the
3898 code for line @code{993} of @code{builtin.c}.
3899
3900 @node Selection
3901 @section Selecting a frame
3902
3903 Most commands for examining the stack and other data in your program work on
3904 whichever stack frame is selected at the moment. Here are the commands for
3905 selecting a stack frame; all of them finish by printing a brief description
3906 of the stack frame just selected.
3907
3908 @table @code
3909 @kindex frame@r{, selecting}
3910 @kindex f @r{(@code{frame})}
3911 @item frame @var{n}
3912 @itemx f @var{n}
3913 Select frame number @var{n}. Recall that frame zero is the innermost
3914 (currently executing) frame, frame one is the frame that called the
3915 innermost one, and so on. The highest-numbered frame is the one for
3916 @code{main}.
3917
3918 @item frame @var{addr}
3919 @itemx f @var{addr}
3920 Select the frame at address @var{addr}. This is useful mainly if the
3921 chaining of stack frames has been damaged by a bug, making it
3922 impossible for @value{GDBN} to assign numbers properly to all frames. In
3923 addition, this can be useful when your program has multiple stacks and
3924 switches between them.
3925
3926 On the SPARC architecture, @code{frame} needs two addresses to
3927 select an arbitrary frame: a frame pointer and a stack pointer.
3928
3929 On the MIPS and Alpha architecture, it needs two addresses: a stack
3930 pointer and a program counter.
3931
3932 On the 29k architecture, it needs three addresses: a register stack
3933 pointer, a program counter, and a memory stack pointer.
3934 @c note to future updaters: this is conditioned on a flag
3935 @c SETUP_ARBITRARY_FRAME in the tm-*.h files. The above is up to date
3936 @c as of 27 Jan 1994.
3937
3938 @kindex up
3939 @item up @var{n}
3940 Move @var{n} frames up the stack. For positive numbers @var{n}, this
3941 advances toward the outermost frame, to higher frame numbers, to frames
3942 that have existed longer. @var{n} defaults to one.
3943
3944 @kindex down
3945 @kindex do @r{(@code{down})}
3946 @item down @var{n}
3947 Move @var{n} frames down the stack. For positive numbers @var{n}, this
3948 advances toward the innermost frame, to lower frame numbers, to frames
3949 that were created more recently. @var{n} defaults to one. You may
3950 abbreviate @code{down} as @code{do}.
3951 @end table
3952
3953 All of these commands end by printing two lines of output describing the
3954 frame. The first line shows the frame number, the function name, the
3955 arguments, and the source file and line number of execution in that
3956 frame. The second line shows the text of that source line.
3957
3958 @need 1000
3959 For example:
3960
3961 @smallexample
3962 @group
3963 (@value{GDBP}) up
3964 #1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
3965 at env.c:10
3966 10 read_input_file (argv[i]);
3967 @end group
3968 @end smallexample
3969
3970 After such a printout, the @code{list} command with no arguments
3971 prints ten lines centered on the point of execution in the frame.
3972 @xref{List, ,Printing source lines}.
3973
3974 @table @code
3975 @kindex down-silently
3976 @kindex up-silently
3977 @item up-silently @var{n}
3978 @itemx down-silently @var{n}
3979 These two commands are variants of @code{up} and @code{down},
3980 respectively; they differ in that they do their work silently, without
3981 causing display of the new frame. They are intended primarily for use
3982 in @value{GDBN} command scripts, where the output might be unnecessary and
3983 distracting.
3984 @end table
3985
3986 @node Frame Info
3987 @section Information about a frame
3988
3989 There are several other commands to print information about the selected
3990 stack frame.
3991
3992 @table @code
3993 @item frame
3994 @itemx f
3995 When used without any argument, this command does not change which
3996 frame is selected, but prints a brief description of the currently
3997 selected stack frame. It can be abbreviated @code{f}. With an
3998 argument, this command is used to select a stack frame.
3999 @xref{Selection, ,Selecting a frame}.
4000
4001 @kindex info frame
4002 @kindex info f @r{(@code{info frame})}
4003 @item info frame
4004 @itemx info f
4005 This command prints a verbose description of the selected stack frame,
4006 including:
4007
4008 @itemize @bullet
4009 @item
4010 the address of the frame
4011 @item
4012 the address of the next frame down (called by this frame)
4013 @item
4014 the address of the next frame up (caller of this frame)
4015 @item
4016 the language in which the source code corresponding to this frame is written
4017 @item
4018 the address of the frame's arguments
4019 @item
4020 the address of the frame's local variables
4021 @item
4022 the program counter saved in it (the address of execution in the caller frame)
4023 @item
4024 which registers were saved in the frame
4025 @end itemize
4026
4027 @noindent The verbose description is useful when
4028 something has gone wrong that has made the stack format fail to fit
4029 the usual conventions.
4030
4031 @item info frame @var{addr}
4032 @itemx info f @var{addr}
4033 Print a verbose description of the frame at address @var{addr}, without
4034 selecting that frame. The selected frame remains unchanged by this
4035 command. This requires the same kind of address (more than one for some
4036 architectures) that you specify in the @code{frame} command.
4037 @xref{Selection, ,Selecting a frame}.
4038
4039 @kindex info args
4040 @item info args
4041 Print the arguments of the selected frame, each on a separate line.
4042
4043 @item info locals
4044 @kindex info locals
4045 Print the local variables of the selected frame, each on a separate
4046 line. These are all variables (declared either static or automatic)
4047 accessible at the point of execution of the selected frame.
4048
4049 @kindex info catch
4050 @cindex catch exceptions, list active handlers
4051 @cindex exception handlers, how to list
4052 @item info catch
4053 Print a list of all the exception handlers that are active in the
4054 current stack frame at the current point of execution. To see other
4055 exception handlers, visit the associated frame (using the @code{up},
4056 @code{down}, or @code{frame} commands); then type @code{info catch}.
4057 @xref{Set Catchpoints, , Setting catchpoints}.
4058
4059 @end table
4060
4061
4062 @node Source
4063 @chapter Examining Source Files
4064
4065 @value{GDBN} can print parts of your program's source, since the debugging
4066 information recorded in the program tells @value{GDBN} what source files were
4067 used to build it. When your program stops, @value{GDBN} spontaneously prints
4068 the line where it stopped. Likewise, when you select a stack frame
4069 (@pxref{Selection, ,Selecting a frame}), @value{GDBN} prints the line where
4070 execution in that frame has stopped. You can print other portions of
4071 source files by explicit command.
4072
4073 If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
4074 prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
4075 @value{GDBN} under @sc{gnu} Emacs}.
4076
4077 @menu
4078 * List:: Printing source lines
4079 * Search:: Searching source files
4080 * Source Path:: Specifying source directories
4081 * Machine Code:: Source and machine code
4082 @end menu
4083
4084 @node List
4085 @section Printing source lines
4086
4087 @kindex list
4088 @kindex l @r{(@code{list})}
4089 To print lines from a source file, use the @code{list} command
4090 (abbreviated @code{l}). By default, ten lines are printed.
4091 There are several ways to specify what part of the file you want to print.
4092
4093 Here are the forms of the @code{list} command most commonly used:
4094
4095 @table @code
4096 @item list @var{linenum}
4097 Print lines centered around line number @var{linenum} in the
4098 current source file.
4099
4100 @item list @var{function}
4101 Print lines centered around the beginning of function
4102 @var{function}.
4103
4104 @item list
4105 Print more lines. If the last lines printed were printed with a
4106 @code{list} command, this prints lines following the last lines
4107 printed; however, if the last line printed was a solitary line printed
4108 as part of displaying a stack frame (@pxref{Stack, ,Examining the
4109 Stack}), this prints lines centered around that line.
4110
4111 @item list -
4112 Print lines just before the lines last printed.
4113 @end table
4114
4115 By default, @value{GDBN} prints ten source lines with any of these forms of
4116 the @code{list} command. You can change this using @code{set listsize}:
4117
4118 @table @code
4119 @kindex set listsize
4120 @item set listsize @var{count}
4121 Make the @code{list} command display @var{count} source lines (unless
4122 the @code{list} argument explicitly specifies some other number).
4123
4124 @kindex show listsize
4125 @item show listsize
4126 Display the number of lines that @code{list} prints.
4127 @end table
4128
4129 Repeating a @code{list} command with @key{RET} discards the argument,
4130 so it is equivalent to typing just @code{list}. This is more useful
4131 than listing the same lines again. An exception is made for an
4132 argument of @samp{-}; that argument is preserved in repetition so that
4133 each repetition moves up in the source file.
4134
4135 @cindex linespec
4136 In general, the @code{list} command expects you to supply zero, one or two
4137 @dfn{linespecs}. Linespecs specify source lines; there are several ways
4138 of writing them, but the effect is always to specify some source line.
4139 Here is a complete description of the possible arguments for @code{list}:
4140
4141 @table @code
4142 @item list @var{linespec}
4143 Print lines centered around the line specified by @var{linespec}.
4144
4145 @item list @var{first},@var{last}
4146 Print lines from @var{first} to @var{last}. Both arguments are
4147 linespecs.
4148
4149 @item list ,@var{last}
4150 Print lines ending with @var{last}.
4151
4152 @item list @var{first},
4153 Print lines starting with @var{first}.
4154
4155 @item list +
4156 Print lines just after the lines last printed.
4157
4158 @item list -
4159 Print lines just before the lines last printed.
4160
4161 @item list
4162 As described in the preceding table.
4163 @end table
4164
4165 Here are the ways of specifying a single source line---all the
4166 kinds of linespec.
4167
4168 @table @code
4169 @item @var{number}
4170 Specifies line @var{number} of the current source file.
4171 When a @code{list} command has two linespecs, this refers to
4172 the same source file as the first linespec.
4173
4174 @item +@var{offset}
4175 Specifies the line @var{offset} lines after the last line printed.
4176 When used as the second linespec in a @code{list} command that has
4177 two, this specifies the line @var{offset} lines down from the
4178 first linespec.
4179
4180 @item -@var{offset}
4181 Specifies the line @var{offset} lines before the last line printed.
4182
4183 @item @var{filename}:@var{number}
4184 Specifies line @var{number} in the source file @var{filename}.
4185
4186 @item @var{function}
4187 Specifies the line that begins the body of the function @var{function}.
4188 For example: in C, this is the line with the open brace.
4189
4190 @item @var{filename}:@var{function}
4191 Specifies the line of the open-brace that begins the body of the
4192 function @var{function} in the file @var{filename}. You only need the
4193 file name with a function name to avoid ambiguity when there are
4194 identically named functions in different source files.
4195
4196 @item *@var{address}
4197 Specifies the line containing the program address @var{address}.
4198 @var{address} may be any expression.
4199 @end table
4200
4201 @node Search
4202 @section Searching source files
4203 @cindex searching
4204 @kindex reverse-search
4205
4206 There are two commands for searching through the current source file for a
4207 regular expression.
4208
4209 @table @code
4210 @kindex search
4211 @kindex forward-search
4212 @item forward-search @var{regexp}
4213 @itemx search @var{regexp}
4214 The command @samp{forward-search @var{regexp}} checks each line,
4215 starting with the one following the last line listed, for a match for
4216 @var{regexp}. It lists the line that is found. You can use the
4217 synonym @samp{search @var{regexp}} or abbreviate the command name as
4218 @code{fo}.
4219
4220 @item reverse-search @var{regexp}
4221 The command @samp{reverse-search @var{regexp}} checks each line, starting
4222 with the one before the last line listed and going backward, for a match
4223 for @var{regexp}. It lists the line that is found. You can abbreviate
4224 this command as @code{rev}.
4225 @end table
4226
4227 @node Source Path
4228 @section Specifying source directories
4229
4230 @cindex source path
4231 @cindex directories for source files
4232 Executable programs sometimes do not record the directories of the source
4233 files from which they were compiled, just the names. Even when they do,
4234 the directories could be moved between the compilation and your debugging
4235 session. @value{GDBN} has a list of directories to search for source files;
4236 this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
4237 it tries all the directories in the list, in the order they are present
4238 in the list, until it finds a file with the desired name. Note that
4239 the executable search path is @emph{not} used for this purpose. Neither is
4240 the current working directory, unless it happens to be in the source
4241 path.
4242
4243 If @value{GDBN} cannot find a source file in the source path, and the
4244 object program records a directory, @value{GDBN} tries that directory
4245 too. If the source path is empty, and there is no record of the
4246 compilation directory, @value{GDBN} looks in the current directory as a
4247 last resort.
4248
4249 Whenever you reset or rearrange the source path, @value{GDBN} clears out
4250 any information it has cached about where source files are found and where
4251 each line is in the file.
4252
4253 @kindex directory
4254 @kindex dir
4255 When you start @value{GDBN}, its source path includes only @samp{cdir}
4256 and @samp{cwd}, in that order.
4257 To add other directories, use the @code{directory} command.
4258
4259 @table @code
4260 @item directory @var{dirname} @dots{}
4261 @item dir @var{dirname} @dots{}
4262 Add directory @var{dirname} to the front of the source path. Several
4263 directory names may be given to this command, separated by @samp{:}
4264 (@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
4265 part of absolute file names) or
4266 whitespace. You may specify a directory that is already in the source
4267 path; this moves it forward, so @value{GDBN} searches it sooner.
4268
4269 @kindex cdir
4270 @kindex cwd
4271 @vindex $cdir@r{, convenience variable}
4272 @vindex $cwdr@r{, convenience variable}
4273 @cindex compilation directory
4274 @cindex current directory
4275 @cindex working directory
4276 @cindex directory, current
4277 @cindex directory, compilation
4278 You can use the string @samp{$cdir} to refer to the compilation
4279 directory (if one is recorded), and @samp{$cwd} to refer to the current
4280 working directory. @samp{$cwd} is not the same as @samp{.}---the former
4281 tracks the current working directory as it changes during your @value{GDBN}
4282 session, while the latter is immediately expanded to the current
4283 directory at the time you add an entry to the source path.
4284
4285 @item directory
4286 Reset the source path to empty again. This requires confirmation.
4287
4288 @c RET-repeat for @code{directory} is explicitly disabled, but since
4289 @c repeating it would be a no-op we do not say that. (thanks to RMS)
4290
4291 @item show directories
4292 @kindex show directories
4293 Print the source path: show which directories it contains.
4294 @end table
4295
4296 If your source path is cluttered with directories that are no longer of
4297 interest, @value{GDBN} may sometimes cause confusion by finding the wrong
4298 versions of source. You can correct the situation as follows:
4299
4300 @enumerate
4301 @item
4302 Use @code{directory} with no argument to reset the source path to empty.
4303
4304 @item
4305 Use @code{directory} with suitable arguments to reinstall the
4306 directories you want in the source path. You can add all the
4307 directories in one command.
4308 @end enumerate
4309
4310 @node Machine Code
4311 @section Source and machine code
4312
4313 You can use the command @code{info line} to map source lines to program
4314 addresses (and vice versa), and the command @code{disassemble} to display
4315 a range of addresses as machine instructions. When run under @sc{gnu} Emacs
4316 mode, the @code{info line} command causes the arrow to point to the
4317 line specified. Also, @code{info line} prints addresses in symbolic form as
4318 well as hex.
4319
4320 @table @code
4321 @kindex info line
4322 @item info line @var{linespec}
4323 Print the starting and ending addresses of the compiled code for
4324 source line @var{linespec}. You can specify source lines in any of
4325 the ways understood by the @code{list} command (@pxref{List, ,Printing
4326 source lines}).
4327 @end table
4328
4329 For example, we can use @code{info line} to discover the location of
4330 the object code for the first line of function
4331 @code{m4_changequote}:
4332
4333 @c FIXME: I think this example should also show the addresses in
4334 @c symbolic form, as they usually would be displayed.
4335 @smallexample
4336 (@value{GDBP}) info line m4_changequote
4337 Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
4338 @end smallexample
4339
4340 @noindent
4341 We can also inquire (using @code{*@var{addr}} as the form for
4342 @var{linespec}) what source line covers a particular address:
4343 @smallexample
4344 (@value{GDBP}) info line *0x63ff
4345 Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
4346 @end smallexample
4347
4348 @cindex @code{$_} and @code{info line}
4349 @kindex x@r{(examine), and} info line
4350 After @code{info line}, the default address for the @code{x} command
4351 is changed to the starting address of the line, so that @samp{x/i} is
4352 sufficient to begin examining the machine code (@pxref{Memory,
4353 ,Examining memory}). Also, this address is saved as the value of the
4354 convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
4355 variables}).
4356
4357 @table @code
4358 @kindex disassemble
4359 @cindex assembly instructions
4360 @cindex instructions, assembly
4361 @cindex machine instructions
4362 @cindex listing machine instructions
4363 @item disassemble
4364 This specialized command dumps a range of memory as machine
4365 instructions. The default memory range is the function surrounding the
4366 program counter of the selected frame. A single argument to this
4367 command is a program counter value; @value{GDBN} dumps the function
4368 surrounding this value. Two arguments specify a range of addresses
4369 (first inclusive, second exclusive) to dump.
4370 @end table
4371
4372 The following example shows the disassembly of a range of addresses of
4373 HP PA-RISC 2.0 code:
4374
4375 @smallexample
4376 (@value{GDBP}) disas 0x32c4 0x32e4
4377 Dump of assembler code from 0x32c4 to 0x32e4:
4378 0x32c4 <main+204>: addil 0,dp
4379 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
4380 0x32cc <main+212>: ldil 0x3000,r31
4381 0x32d0 <main+216>: ble 0x3f8(sr4,r31)
4382 0x32d4 <main+220>: ldo 0(r31),rp
4383 0x32d8 <main+224>: addil -0x800,dp
4384 0x32dc <main+228>: ldo 0x588(r1),r26
4385 0x32e0 <main+232>: ldil 0x3000,r31
4386 End of assembler dump.
4387 @end smallexample
4388
4389 Some architectures have more than one commonly-used set of instruction
4390 mnemonics or other syntax.
4391
4392 @table @code
4393 @kindex set disassembly-flavor
4394 @cindex assembly instructions
4395 @cindex instructions, assembly
4396 @cindex machine instructions
4397 @cindex listing machine instructions
4398 @cindex Intel disassembly flavor
4399 @cindex AT&T disassembly flavor
4400 @item set disassembly-flavor @var{instruction-set}
4401 Select the instruction set to use when disassembling the
4402 program via the @code{disassemble} or @code{x/i} commands.
4403
4404 Currently this command is only defined for the Intel x86 family. You
4405 can set @var{instruction-set} to either @code{intel} or @code{att}.
4406 The default is @code{att}, the AT&T flavor used by default by Unix
4407 assemblers for x86-based targets.
4408 @end table
4409
4410
4411 @node Data
4412 @chapter Examining Data
4413
4414 @cindex printing data
4415 @cindex examining data
4416 @kindex print
4417 @kindex inspect
4418 @c "inspect" is not quite a synonym if you are using Epoch, which we do not
4419 @c document because it is nonstandard... Under Epoch it displays in a
4420 @c different window or something like that.
4421 The usual way to examine data in your program is with the @code{print}
4422 command (abbreviated @code{p}), or its synonym @code{inspect}. It
4423 evaluates and prints the value of an expression of the language your
4424 program is written in (@pxref{Languages, ,Using @value{GDBN} with
4425 Different Languages}).
4426
4427 @table @code
4428 @item print @var{expr}
4429 @itemx print /@var{f} @var{expr}
4430 @var{expr} is an expression (in the source language). By default the
4431 value of @var{expr} is printed in a format appropriate to its data type;
4432 you can choose a different format by specifying @samp{/@var{f}}, where
4433 @var{f} is a letter specifying the format; see @ref{Output Formats,,Output
4434 formats}.
4435
4436 @item print
4437 @itemx print /@var{f}
4438 If you omit @var{expr}, @value{GDBN} displays the last value again (from the
4439 @dfn{value history}; @pxref{Value History, ,Value history}). This allows you to
4440 conveniently inspect the same value in an alternative format.
4441 @end table
4442
4443 A more low-level way of examining data is with the @code{x} command.
4444 It examines data in memory at a specified address and prints it in a
4445 specified format. @xref{Memory, ,Examining memory}.
4446
4447 If you are interested in information about types, or about how the
4448 fields of a struct or a class are declared, use the @code{ptype @var{exp}}
4449 command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
4450 Table}.
4451
4452 @menu
4453 * Expressions:: Expressions
4454 * Variables:: Program variables
4455 * Arrays:: Artificial arrays
4456 * Output Formats:: Output formats
4457 * Memory:: Examining memory
4458 * Auto Display:: Automatic display
4459 * Print Settings:: Print settings
4460 * Value History:: Value history
4461 * Convenience Vars:: Convenience variables
4462 * Registers:: Registers
4463 * Floating Point Hardware:: Floating point hardware
4464 * Memory Region Attributes:: Memory region attributes
4465 @end menu
4466
4467 @node Expressions
4468 @section Expressions
4469
4470 @cindex expressions
4471 @code{print} and many other @value{GDBN} commands accept an expression and
4472 compute its value. Any kind of constant, variable or operator defined
4473 by the programming language you are using is valid in an expression in
4474 @value{GDBN}. This includes conditional expressions, function calls, casts
4475 and string constants. It unfortunately does not include symbols defined
4476 by preprocessor @code{#define} commands.
4477
4478 @value{GDBN} supports array constants in expressions input by
4479 the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
4480 you can use the command @code{print @{1, 2, 3@}} to build up an array in
4481 memory that is @code{malloc}ed in the target program.
4482
4483 Because C is so widespread, most of the expressions shown in examples in
4484 this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
4485 Languages}, for information on how to use expressions in other
4486 languages.
4487
4488 In this section, we discuss operators that you can use in @value{GDBN}
4489 expressions regardless of your programming language.
4490
4491 Casts are supported in all languages, not just in C, because it is so
4492 useful to cast a number into a pointer in order to examine a structure
4493 at that address in memory.
4494 @c FIXME: casts supported---Mod2 true?
4495
4496 @value{GDBN} supports these operators, in addition to those common
4497 to programming languages:
4498
4499 @table @code
4500 @item @@
4501 @samp{@@} is a binary operator for treating parts of memory as arrays.
4502 @xref{Arrays, ,Artificial arrays}, for more information.
4503
4504 @item ::
4505 @samp{::} allows you to specify a variable in terms of the file or
4506 function where it is defined. @xref{Variables, ,Program variables}.
4507
4508 @cindex @{@var{type}@}
4509 @cindex type casting memory
4510 @cindex memory, viewing as typed object
4511 @cindex casts, to view memory
4512 @item @{@var{type}@} @var{addr}
4513 Refers to an object of type @var{type} stored at address @var{addr} in
4514 memory. @var{addr} may be any expression whose value is an integer or
4515 pointer (but parentheses are required around binary operators, just as in
4516 a cast). This construct is allowed regardless of what kind of data is
4517 normally supposed to reside at @var{addr}.
4518 @end table
4519
4520 @node Variables
4521 @section Program variables
4522
4523 The most common kind of expression to use is the name of a variable
4524 in your program.
4525
4526 Variables in expressions are understood in the selected stack frame
4527 (@pxref{Selection, ,Selecting a frame}); they must be either:
4528
4529 @itemize @bullet
4530 @item
4531 global (or file-static)
4532 @end itemize
4533
4534 @noindent or
4535
4536 @itemize @bullet
4537 @item
4538 visible according to the scope rules of the
4539 programming language from the point of execution in that frame
4540 @end itemize
4541
4542 @noindent This means that in the function
4543
4544 @example
4545 foo (a)
4546 int a;
4547 @{
4548 bar (a);
4549 @{
4550 int b = test ();
4551 bar (b);
4552 @}
4553 @}
4554 @end example
4555
4556 @noindent
4557 you can examine and use the variable @code{a} whenever your program is
4558 executing within the function @code{foo}, but you can only use or
4559 examine the variable @code{b} while your program is executing inside
4560 the block where @code{b} is declared.
4561
4562 @cindex variable name conflict
4563 There is an exception: you can refer to a variable or function whose
4564 scope is a single source file even if the current execution point is not
4565 in this file. But it is possible to have more than one such variable or
4566 function with the same name (in different source files). If that
4567 happens, referring to that name has unpredictable effects. If you wish,
4568 you can specify a static variable in a particular function or file,
4569 using the colon-colon notation:
4570
4571 @cindex colon-colon, context for variables/functions
4572 @iftex
4573 @c info cannot cope with a :: index entry, but why deprive hard copy readers?
4574 @cindex @code{::}, context for variables/functions
4575 @end iftex
4576 @example
4577 @var{file}::@var{variable}
4578 @var{function}::@var{variable}
4579 @end example
4580
4581 @noindent
4582 Here @var{file} or @var{function} is the name of the context for the
4583 static @var{variable}. In the case of file names, you can use quotes to
4584 make sure @value{GDBN} parses the file name as a single word---for example,
4585 to print a global value of @code{x} defined in @file{f2.c}:
4586
4587 @example
4588 (@value{GDBP}) p 'f2.c'::x
4589 @end example
4590
4591 @cindex C@t{++} scope resolution
4592 This use of @samp{::} is very rarely in conflict with the very similar
4593 use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
4594 scope resolution operator in @value{GDBN} expressions.
4595 @c FIXME: Um, so what happens in one of those rare cases where it's in
4596 @c conflict?? --mew
4597
4598 @cindex wrong values
4599 @cindex variable values, wrong
4600 @quotation
4601 @emph{Warning:} Occasionally, a local variable may appear to have the
4602 wrong value at certain points in a function---just after entry to a new
4603 scope, and just before exit.
4604 @end quotation
4605 You may see this problem when you are stepping by machine instructions.
4606 This is because, on most machines, it takes more than one instruction to
4607 set up a stack frame (including local variable definitions); if you are
4608 stepping by machine instructions, variables may appear to have the wrong
4609 values until the stack frame is completely built. On exit, it usually
4610 also takes more than one machine instruction to destroy a stack frame;
4611 after you begin stepping through that group of instructions, local
4612 variable definitions may be gone.
4613
4614 This may also happen when the compiler does significant optimizations.
4615 To be sure of always seeing accurate values, turn off all optimization
4616 when compiling.
4617
4618 @cindex ``No symbol "foo" in current context''
4619 Another possible effect of compiler optimizations is to optimize
4620 unused variables out of existence, or assign variables to registers (as
4621 opposed to memory addresses). Depending on the support for such cases
4622 offered by the debug info format used by the compiler, @value{GDBN}
4623 might not be able to display values for such local variables. If that
4624 happens, @value{GDBN} will print a message like this:
4625
4626 @example
4627 No symbol "foo" in current context.
4628 @end example
4629
4630 To solve such problems, either recompile without optimizations, or use a
4631 different debug info format, if the compiler supports several such
4632 formats. For example, @value{NGCC}, the @sc{gnu} C/C@t{++} compiler usually
4633 supports the @samp{-gstabs} option. @samp{-gstabs} produces debug info
4634 in a format that is superior to formats such as COFF. You may be able
4635 to use DWARF2 (@samp{-gdwarf-2}), which is also an effective form for
4636 debug info. See @ref{Debugging Options,,Options for Debugging Your
4637 Program or @sc{gnu} CC, gcc.info, Using @sc{gnu} CC}, for more
4638 information.
4639
4640
4641 @node Arrays
4642 @section Artificial arrays
4643
4644 @cindex artificial array
4645 @kindex @@@r{, referencing memory as an array}
4646 It is often useful to print out several successive objects of the
4647 same type in memory; a section of an array, or an array of
4648 dynamically determined size for which only a pointer exists in the
4649 program.
4650
4651 You can do this by referring to a contiguous span of memory as an
4652 @dfn{artificial array}, using the binary operator @samp{@@}. The left
4653 operand of @samp{@@} should be the first element of the desired array
4654 and be an individual object. The right operand should be the desired length
4655 of the array. The result is an array value whose elements are all of
4656 the type of the left argument. The first element is actually the left
4657 argument; the second element comes from bytes of memory immediately
4658 following those that hold the first element, and so on. Here is an
4659 example. If a program says
4660
4661 @example
4662 int *array = (int *) malloc (len * sizeof (int));
4663 @end example
4664
4665 @noindent
4666 you can print the contents of @code{array} with
4667
4668 @example
4669 p *array@@len
4670 @end example
4671
4672 The left operand of @samp{@@} must reside in memory. Array values made
4673 with @samp{@@} in this way behave just like other arrays in terms of
4674 subscripting, and are coerced to pointers when used in expressions.
4675 Artificial arrays most often appear in expressions via the value history
4676 (@pxref{Value History, ,Value history}), after printing one out.
4677
4678 Another way to create an artificial array is to use a cast.
4679 This re-interprets a value as if it were an array.
4680 The value need not be in memory:
4681 @example
4682 (@value{GDBP}) p/x (short[2])0x12345678
4683 $1 = @{0x1234, 0x5678@}
4684 @end example
4685
4686 As a convenience, if you leave the array length out (as in
4687 @samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
4688 the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
4689 @example
4690 (@value{GDBP}) p/x (short[])0x12345678
4691 $2 = @{0x1234, 0x5678@}
4692 @end example
4693
4694 Sometimes the artificial array mechanism is not quite enough; in
4695 moderately complex data structures, the elements of interest may not
4696 actually be adjacent---for example, if you are interested in the values
4697 of pointers in an array. One useful work-around in this situation is
4698 to use a convenience variable (@pxref{Convenience Vars, ,Convenience
4699 variables}) as a counter in an expression that prints the first
4700 interesting value, and then repeat that expression via @key{RET}. For
4701 instance, suppose you have an array @code{dtab} of pointers to
4702 structures, and you are interested in the values of a field @code{fv}
4703 in each structure. Here is an example of what you might type:
4704
4705 @example
4706 set $i = 0
4707 p dtab[$i++]->fv
4708 @key{RET}
4709 @key{RET}
4710 @dots{}
4711 @end example
4712
4713 @node Output Formats
4714 @section Output formats
4715
4716 @cindex formatted output
4717 @cindex output formats
4718 By default, @value{GDBN} prints a value according to its data type. Sometimes
4719 this is not what you want. For example, you might want to print a number
4720 in hex, or a pointer in decimal. Or you might want to view data in memory
4721 at a certain address as a character string or as an instruction. To do
4722 these things, specify an @dfn{output format} when you print a value.
4723
4724 The simplest use of output formats is to say how to print a value
4725 already computed. This is done by starting the arguments of the
4726 @code{print} command with a slash and a format letter. The format
4727 letters supported are:
4728
4729 @table @code
4730 @item x
4731 Regard the bits of the value as an integer, and print the integer in
4732 hexadecimal.
4733
4734 @item d
4735 Print as integer in signed decimal.
4736
4737 @item u
4738 Print as integer in unsigned decimal.
4739
4740 @item o
4741 Print as integer in octal.
4742
4743 @item t
4744 Print as integer in binary. The letter @samp{t} stands for ``two''.
4745 @footnote{@samp{b} cannot be used because these format letters are also
4746 used with the @code{x} command, where @samp{b} stands for ``byte'';
4747 see @ref{Memory,,Examining memory}.}
4748
4749 @item a
4750 @cindex unknown address, locating
4751 @cindex locate address
4752 Print as an address, both absolute in hexadecimal and as an offset from
4753 the nearest preceding symbol. You can use this format used to discover
4754 where (in what function) an unknown address is located:
4755
4756 @example
4757 (@value{GDBP}) p/a 0x54320
4758 $3 = 0x54320 <_initialize_vx+396>
4759 @end example
4760
4761 @noindent
4762 The command @code{info symbol 0x54320} yields similar results.
4763 @xref{Symbols, info symbol}.
4764
4765 @item c
4766 Regard as an integer and print it as a character constant.
4767
4768 @item f
4769 Regard the bits of the value as a floating point number and print
4770 using typical floating point syntax.
4771 @end table
4772
4773 For example, to print the program counter in hex (@pxref{Registers}), type
4774
4775 @example
4776 p/x $pc
4777 @end example
4778
4779 @noindent
4780 Note that no space is required before the slash; this is because command
4781 names in @value{GDBN} cannot contain a slash.
4782
4783 To reprint the last value in the value history with a different format,
4784 you can use the @code{print} command with just a format and no
4785 expression. For example, @samp{p/x} reprints the last value in hex.
4786
4787 @node Memory
4788 @section Examining memory
4789
4790 You can use the command @code{x} (for ``examine'') to examine memory in
4791 any of several formats, independently of your program's data types.
4792
4793 @cindex examining memory
4794 @table @code
4795 @kindex x @r{(examine memory)}
4796 @item x/@var{nfu} @var{addr}
4797 @itemx x @var{addr}
4798 @itemx x
4799 Use the @code{x} command to examine memory.
4800 @end table
4801
4802 @var{n}, @var{f}, and @var{u} are all optional parameters that specify how
4803 much memory to display and how to format it; @var{addr} is an
4804 expression giving the address where you want to start displaying memory.
4805 If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
4806 Several commands set convenient defaults for @var{addr}.
4807
4808 @table @r
4809 @item @var{n}, the repeat count
4810 The repeat count is a decimal integer; the default is 1. It specifies
4811 how much memory (counting by units @var{u}) to display.
4812 @c This really is **decimal**; unaffected by 'set radix' as of GDB
4813 @c 4.1.2.
4814
4815 @item @var{f}, the display format
4816 The display format is one of the formats used by @code{print},
4817 @samp{s} (null-terminated string), or @samp{i} (machine instruction).
4818 The default is @samp{x} (hexadecimal) initially.
4819 The default changes each time you use either @code{x} or @code{print}.
4820
4821 @item @var{u}, the unit size
4822 The unit size is any of
4823
4824 @table @code
4825 @item b
4826 Bytes.
4827 @item h
4828 Halfwords (two bytes).
4829 @item w
4830 Words (four bytes). This is the initial default.
4831 @item g
4832 Giant words (eight bytes).
4833 @end table
4834
4835 Each time you specify a unit size with @code{x}, that size becomes the
4836 default unit the next time you use @code{x}. (For the @samp{s} and
4837 @samp{i} formats, the unit size is ignored and is normally not written.)
4838
4839 @item @var{addr}, starting display address
4840 @var{addr} is the address where you want @value{GDBN} to begin displaying
4841 memory. The expression need not have a pointer value (though it may);
4842 it is always interpreted as an integer address of a byte of memory.
4843 @xref{Expressions, ,Expressions}, for more information on expressions. The default for
4844 @var{addr} is usually just after the last address examined---but several
4845 other commands also set the default address: @code{info breakpoints} (to
4846 the address of the last breakpoint listed), @code{info line} (to the
4847 starting address of a line), and @code{print} (if you use it to display
4848 a value from memory).
4849 @end table
4850
4851 For example, @samp{x/3uh 0x54320} is a request to display three halfwords
4852 (@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
4853 starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
4854 words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
4855 @pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
4856
4857 Since the letters indicating unit sizes are all distinct from the
4858 letters specifying output formats, you do not have to remember whether
4859 unit size or format comes first; either order works. The output
4860 specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
4861 (However, the count @var{n} must come first; @samp{wx4} does not work.)
4862
4863 Even though the unit size @var{u} is ignored for the formats @samp{s}
4864 and @samp{i}, you might still want to use a count @var{n}; for example,
4865 @samp{3i} specifies that you want to see three machine instructions,
4866 including any operands. The command @code{disassemble} gives an
4867 alternative way of inspecting machine instructions; see @ref{Machine
4868 Code,,Source and machine code}.
4869
4870 All the defaults for the arguments to @code{x} are designed to make it
4871 easy to continue scanning memory with minimal specifications each time
4872 you use @code{x}. For example, after you have inspected three machine
4873 instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
4874 with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
4875 the repeat count @var{n} is used again; the other arguments default as
4876 for successive uses of @code{x}.
4877
4878 @cindex @code{$_}, @code{$__}, and value history
4879 The addresses and contents printed by the @code{x} command are not saved
4880 in the value history because there is often too much of them and they
4881 would get in the way. Instead, @value{GDBN} makes these values available for
4882 subsequent use in expressions as values of the convenience variables
4883 @code{$_} and @code{$__}. After an @code{x} command, the last address
4884 examined is available for use in expressions in the convenience variable
4885 @code{$_}. The contents of that address, as examined, are available in
4886 the convenience variable @code{$__}.
4887
4888 If the @code{x} command has a repeat count, the address and contents saved
4889 are from the last memory unit printed; this is not the same as the last
4890 address printed if several units were printed on the last line of output.
4891
4892 @node Auto Display
4893 @section Automatic display
4894 @cindex automatic display
4895 @cindex display of expressions
4896
4897 If you find that you want to print the value of an expression frequently
4898 (to see how it changes), you might want to add it to the @dfn{automatic
4899 display list} so that @value{GDBN} prints its value each time your program stops.
4900 Each expression added to the list is given a number to identify it;
4901 to remove an expression from the list, you specify that number.
4902 The automatic display looks like this:
4903
4904 @example
4905 2: foo = 38
4906 3: bar[5] = (struct hack *) 0x3804
4907 @end example
4908
4909 @noindent
4910 This display shows item numbers, expressions and their current values. As with
4911 displays you request manually using @code{x} or @code{print}, you can
4912 specify the output format you prefer; in fact, @code{display} decides
4913 whether to use @code{print} or @code{x} depending on how elaborate your
4914 format specification is---it uses @code{x} if you specify a unit size,
4915 or one of the two formats (@samp{i} and @samp{s}) that are only
4916 supported by @code{x}; otherwise it uses @code{print}.
4917
4918 @table @code
4919 @kindex display
4920 @item display @var{expr}
4921 Add the expression @var{expr} to the list of expressions to display
4922 each time your program stops. @xref{Expressions, ,Expressions}.
4923
4924 @code{display} does not repeat if you press @key{RET} again after using it.
4925
4926 @item display/@var{fmt} @var{expr}
4927 For @var{fmt} specifying only a display format and not a size or
4928 count, add the expression @var{expr} to the auto-display list but
4929 arrange to display it each time in the specified format @var{fmt}.
4930 @xref{Output Formats,,Output formats}.
4931
4932 @item display/@var{fmt} @var{addr}
4933 For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
4934 number of units, add the expression @var{addr} as a memory address to
4935 be examined each time your program stops. Examining means in effect
4936 doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining memory}.
4937 @end table
4938
4939 For example, @samp{display/i $pc} can be helpful, to see the machine
4940 instruction about to be executed each time execution stops (@samp{$pc}
4941 is a common name for the program counter; @pxref{Registers, ,Registers}).
4942
4943 @table @code
4944 @kindex delete display
4945 @kindex undisplay
4946 @item undisplay @var{dnums}@dots{}
4947 @itemx delete display @var{dnums}@dots{}
4948 Remove item numbers @var{dnums} from the list of expressions to display.
4949
4950 @code{undisplay} does not repeat if you press @key{RET} after using it.
4951 (Otherwise you would just get the error @samp{No display number @dots{}}.)
4952
4953 @kindex disable display
4954 @item disable display @var{dnums}@dots{}
4955 Disable the display of item numbers @var{dnums}. A disabled display
4956 item is not printed automatically, but is not forgotten. It may be
4957 enabled again later.
4958
4959 @kindex enable display
4960 @item enable display @var{dnums}@dots{}
4961 Enable display of item numbers @var{dnums}. It becomes effective once
4962 again in auto display of its expression, until you specify otherwise.
4963
4964 @item display
4965 Display the current values of the expressions on the list, just as is
4966 done when your program stops.
4967
4968 @kindex info display
4969 @item info display
4970 Print the list of expressions previously set up to display
4971 automatically, each one with its item number, but without showing the
4972 values. This includes disabled expressions, which are marked as such.
4973 It also includes expressions which would not be displayed right now
4974 because they refer to automatic variables not currently available.
4975 @end table
4976
4977 If a display expression refers to local variables, then it does not make
4978 sense outside the lexical context for which it was set up. Such an
4979 expression is disabled when execution enters a context where one of its
4980 variables is not defined. For example, if you give the command
4981 @code{display last_char} while inside a function with an argument
4982 @code{last_char}, @value{GDBN} displays this argument while your program
4983 continues to stop inside that function. When it stops elsewhere---where
4984 there is no variable @code{last_char}---the display is disabled
4985 automatically. The next time your program stops where @code{last_char}
4986 is meaningful, you can enable the display expression once again.
4987
4988 @node Print Settings
4989 @section Print settings
4990
4991 @cindex format options
4992 @cindex print settings
4993 @value{GDBN} provides the following ways to control how arrays, structures,
4994 and symbols are printed.
4995
4996 @noindent
4997 These settings are useful for debugging programs in any language:
4998
4999 @table @code
5000 @kindex set print address
5001 @item set print address
5002 @itemx set print address on
5003 @value{GDBN} prints memory addresses showing the location of stack
5004 traces, structure values, pointer values, breakpoints, and so forth,
5005 even when it also displays the contents of those addresses. The default
5006 is @code{on}. For example, this is what a stack frame display looks like with
5007 @code{set print address on}:
5008
5009 @smallexample
5010 @group
5011 (@value{GDBP}) f
5012 #0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
5013 at input.c:530
5014 530 if (lquote != def_lquote)
5015 @end group
5016 @end smallexample
5017
5018 @item set print address off
5019 Do not print addresses when displaying their contents. For example,
5020 this is the same stack frame displayed with @code{set print address off}:
5021
5022 @smallexample
5023 @group
5024 (@value{GDBP}) set print addr off
5025 (@value{GDBP}) f
5026 #0 set_quotes (lq="<<", rq=">>") at input.c:530
5027 530 if (lquote != def_lquote)
5028 @end group
5029 @end smallexample
5030
5031 You can use @samp{set print address off} to eliminate all machine
5032 dependent displays from the @value{GDBN} interface. For example, with
5033 @code{print address off}, you should get the same text for backtraces on
5034 all machines---whether or not they involve pointer arguments.
5035
5036 @kindex show print address
5037 @item show print address
5038 Show whether or not addresses are to be printed.
5039 @end table
5040
5041 When @value{GDBN} prints a symbolic address, it normally prints the
5042 closest earlier symbol plus an offset. If that symbol does not uniquely
5043 identify the address (for example, it is a name whose scope is a single
5044 source file), you may need to clarify. One way to do this is with
5045 @code{info line}, for example @samp{info line *0x4537}. Alternately,
5046 you can set @value{GDBN} to print the source file and line number when
5047 it prints a symbolic address:
5048
5049 @table @code
5050 @kindex set print symbol-filename
5051 @item set print symbol-filename on
5052 Tell @value{GDBN} to print the source file name and line number of a
5053 symbol in the symbolic form of an address.
5054
5055 @item set print symbol-filename off
5056 Do not print source file name and line number of a symbol. This is the
5057 default.
5058
5059 @kindex show print symbol-filename
5060 @item show print symbol-filename
5061 Show whether or not @value{GDBN} will print the source file name and
5062 line number of a symbol in the symbolic form of an address.
5063 @end table
5064
5065 Another situation where it is helpful to show symbol filenames and line
5066 numbers is when disassembling code; @value{GDBN} shows you the line
5067 number and source file that corresponds to each instruction.
5068
5069 Also, you may wish to see the symbolic form only if the address being
5070 printed is reasonably close to the closest earlier symbol:
5071
5072 @table @code
5073 @kindex set print max-symbolic-offset
5074 @item set print max-symbolic-offset @var{max-offset}
5075 Tell @value{GDBN} to only display the symbolic form of an address if the
5076 offset between the closest earlier symbol and the address is less than
5077 @var{max-offset}. The default is 0, which tells @value{GDBN}
5078 to always print the symbolic form of an address if any symbol precedes it.
5079
5080 @kindex show print max-symbolic-offset
5081 @item show print max-symbolic-offset
5082 Ask how large the maximum offset is that @value{GDBN} prints in a
5083 symbolic address.
5084 @end table
5085
5086 @cindex wild pointer, interpreting
5087 @cindex pointer, finding referent
5088 If you have a pointer and you are not sure where it points, try
5089 @samp{set print symbol-filename on}. Then you can determine the name
5090 and source file location of the variable where it points, using
5091 @samp{p/a @var{pointer}}. This interprets the address in symbolic form.
5092 For example, here @value{GDBN} shows that a variable @code{ptt} points
5093 at another variable @code{t}, defined in @file{hi2.c}:
5094
5095 @example
5096 (@value{GDBP}) set print symbol-filename on
5097 (@value{GDBP}) p/a ptt
5098 $4 = 0xe008 <t in hi2.c>
5099 @end example
5100
5101 @quotation
5102 @emph{Warning:} For pointers that point to a local variable, @samp{p/a}
5103 does not show the symbol name and filename of the referent, even with
5104 the appropriate @code{set print} options turned on.
5105 @end quotation
5106
5107 Other settings control how different kinds of objects are printed:
5108
5109 @table @code
5110 @kindex set print array
5111 @item set print array
5112 @itemx set print array on
5113 Pretty print arrays. This format is more convenient to read,
5114 but uses more space. The default is off.
5115
5116 @item set print array off
5117 Return to compressed format for arrays.
5118
5119 @kindex show print array
5120 @item show print array
5121 Show whether compressed or pretty format is selected for displaying
5122 arrays.
5123
5124 @kindex set print elements
5125 @item set print elements @var{number-of-elements}
5126 Set a limit on how many elements of an array @value{GDBN} will print.
5127 If @value{GDBN} is printing a large array, it stops printing after it has
5128 printed the number of elements set by the @code{set print elements} command.
5129 This limit also applies to the display of strings.
5130 When @value{GDBN} starts, this limit is set to 200.
5131 Setting @var{number-of-elements} to zero means that the printing is unlimited.
5132
5133 @kindex show print elements
5134 @item show print elements
5135 Display the number of elements of a large array that @value{GDBN} will print.
5136 If the number is 0, then the printing is unlimited.
5137
5138 @kindex set print null-stop
5139 @item set print null-stop
5140 Cause @value{GDBN} to stop printing the characters of an array when the first
5141 @sc{null} is encountered. This is useful when large arrays actually
5142 contain only short strings.
5143 The default is off.
5144
5145 @kindex set print pretty
5146 @item set print pretty on
5147 Cause @value{GDBN} to print structures in an indented format with one member
5148 per line, like this:
5149
5150 @smallexample
5151 @group
5152 $1 = @{
5153 next = 0x0,
5154 flags = @{
5155 sweet = 1,
5156 sour = 1
5157 @},
5158 meat = 0x54 "Pork"
5159 @}
5160 @end group
5161 @end smallexample
5162
5163 @item set print pretty off
5164 Cause @value{GDBN} to print structures in a compact format, like this:
5165
5166 @smallexample
5167 @group
5168 $1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
5169 meat = 0x54 "Pork"@}
5170 @end group
5171 @end smallexample
5172
5173 @noindent
5174 This is the default format.
5175
5176 @kindex show print pretty
5177 @item show print pretty
5178 Show which format @value{GDBN} is using to print structures.
5179
5180 @kindex set print sevenbit-strings
5181 @item set print sevenbit-strings on
5182 Print using only seven-bit characters; if this option is set,
5183 @value{GDBN} displays any eight-bit characters (in strings or
5184 character values) using the notation @code{\}@var{nnn}. This setting is
5185 best if you are working in English (@sc{ascii}) and you use the
5186 high-order bit of characters as a marker or ``meta'' bit.
5187
5188 @item set print sevenbit-strings off
5189 Print full eight-bit characters. This allows the use of more
5190 international character sets, and is the default.
5191
5192 @kindex show print sevenbit-strings
5193 @item show print sevenbit-strings
5194 Show whether or not @value{GDBN} is printing only seven-bit characters.
5195
5196 @kindex set print union
5197 @item set print union on
5198 Tell @value{GDBN} to print unions which are contained in structures. This
5199 is the default setting.
5200
5201 @item set print union off
5202 Tell @value{GDBN} not to print unions which are contained in structures.
5203
5204 @kindex show print union
5205 @item show print union
5206 Ask @value{GDBN} whether or not it will print unions which are contained in
5207 structures.
5208
5209 For example, given the declarations
5210
5211 @smallexample
5212 typedef enum @{Tree, Bug@} Species;
5213 typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5214 typedef enum @{Caterpillar, Cocoon, Butterfly@}
5215 Bug_forms;
5216
5217 struct thing @{
5218 Species it;
5219 union @{
5220 Tree_forms tree;
5221 Bug_forms bug;
5222 @} form;
5223 @};
5224
5225 struct thing foo = @{Tree, @{Acorn@}@};
5226 @end smallexample
5227
5228 @noindent
5229 with @code{set print union on} in effect @samp{p foo} would print
5230
5231 @smallexample
5232 $1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
5233 @end smallexample
5234
5235 @noindent
5236 and with @code{set print union off} in effect it would print
5237
5238 @smallexample
5239 $1 = @{it = Tree, form = @{...@}@}
5240 @end smallexample
5241 @end table
5242
5243 @need 1000
5244 @noindent
5245 These settings are of interest when debugging C@t{++} programs:
5246
5247 @table @code
5248 @cindex demangling
5249 @kindex set print demangle
5250 @item set print demangle
5251 @itemx set print demangle on
5252 Print C@t{++} names in their source form rather than in the encoded
5253 (``mangled'') form passed to the assembler and linker for type-safe
5254 linkage. The default is on.
5255
5256 @kindex show print demangle
5257 @item show print demangle
5258 Show whether C@t{++} names are printed in mangled or demangled form.
5259
5260 @kindex set print asm-demangle
5261 @item set print asm-demangle
5262 @itemx set print asm-demangle on
5263 Print C@t{++} names in their source form rather than their mangled form, even
5264 in assembler code printouts such as instruction disassemblies.
5265 The default is off.
5266
5267 @kindex show print asm-demangle
5268 @item show print asm-demangle
5269 Show whether C@t{++} names in assembly listings are printed in mangled
5270 or demangled form.
5271
5272 @kindex set demangle-style
5273 @cindex C@t{++} symbol decoding style
5274 @cindex symbol decoding style, C@t{++}
5275 @item set demangle-style @var{style}
5276 Choose among several encoding schemes used by different compilers to
5277 represent C@t{++} names. The choices for @var{style} are currently:
5278
5279 @table @code
5280 @item auto
5281 Allow @value{GDBN} to choose a decoding style by inspecting your program.
5282
5283 @item gnu
5284 Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
5285 This is the default.
5286
5287 @item hp
5288 Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
5289
5290 @item lucid
5291 Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
5292
5293 @item arm
5294 Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
5295 @strong{Warning:} this setting alone is not sufficient to allow
5296 debugging @code{cfront}-generated executables. @value{GDBN} would
5297 require further enhancement to permit that.
5298
5299 @end table
5300 If you omit @var{style}, you will see a list of possible formats.
5301
5302 @kindex show demangle-style
5303 @item show demangle-style
5304 Display the encoding style currently in use for decoding C@t{++} symbols.
5305
5306 @kindex set print object
5307 @item set print object
5308 @itemx set print object on
5309 When displaying a pointer to an object, identify the @emph{actual}
5310 (derived) type of the object rather than the @emph{declared} type, using
5311 the virtual function table.
5312
5313 @item set print object off
5314 Display only the declared type of objects, without reference to the
5315 virtual function table. This is the default setting.
5316
5317 @kindex show print object
5318 @item show print object
5319 Show whether actual, or declared, object types are displayed.
5320
5321 @kindex set print static-members
5322 @item set print static-members
5323 @itemx set print static-members on
5324 Print static members when displaying a C@t{++} object. The default is on.
5325
5326 @item set print static-members off
5327 Do not print static members when displaying a C@t{++} object.
5328
5329 @kindex show print static-members
5330 @item show print static-members
5331 Show whether C@t{++} static members are printed, or not.
5332
5333 @c These don't work with HP ANSI C++ yet.
5334 @kindex set print vtbl
5335 @item set print vtbl
5336 @itemx set print vtbl on
5337 Pretty print C@t{++} virtual function tables. The default is off.
5338 (The @code{vtbl} commands do not work on programs compiled with the HP
5339 ANSI C@t{++} compiler (@code{aCC}).)
5340
5341 @item set print vtbl off
5342 Do not pretty print C@t{++} virtual function tables.
5343
5344 @kindex show print vtbl
5345 @item show print vtbl
5346 Show whether C@t{++} virtual function tables are pretty printed, or not.
5347 @end table
5348
5349 @node Value History
5350 @section Value history
5351
5352 @cindex value history
5353 Values printed by the @code{print} command are saved in the @value{GDBN}
5354 @dfn{value history}. This allows you to refer to them in other expressions.
5355 Values are kept until the symbol table is re-read or discarded
5356 (for example with the @code{file} or @code{symbol-file} commands).
5357 When the symbol table changes, the value history is discarded,
5358 since the values may contain pointers back to the types defined in the
5359 symbol table.
5360
5361 @cindex @code{$}
5362 @cindex @code{$$}
5363 @cindex history number
5364 The values printed are given @dfn{history numbers} by which you can
5365 refer to them. These are successive integers starting with one.
5366 @code{print} shows you the history number assigned to a value by
5367 printing @samp{$@var{num} = } before the value; here @var{num} is the
5368 history number.
5369
5370 To refer to any previous value, use @samp{$} followed by the value's
5371 history number. The way @code{print} labels its output is designed to
5372 remind you of this. Just @code{$} refers to the most recent value in
5373 the history, and @code{$$} refers to the value before that.
5374 @code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
5375 is the value just prior to @code{$$}, @code{$$1} is equivalent to
5376 @code{$$}, and @code{$$0} is equivalent to @code{$}.
5377
5378 For example, suppose you have just printed a pointer to a structure and
5379 want to see the contents of the structure. It suffices to type
5380
5381 @example
5382 p *$
5383 @end example
5384
5385 If you have a chain of structures where the component @code{next} points
5386 to the next one, you can print the contents of the next one with this:
5387
5388 @example
5389 p *$.next
5390 @end example
5391
5392 @noindent
5393 You can print successive links in the chain by repeating this
5394 command---which you can do by just typing @key{RET}.
5395
5396 Note that the history records values, not expressions. If the value of
5397 @code{x} is 4 and you type these commands:
5398
5399 @example
5400 print x
5401 set x=5
5402 @end example
5403
5404 @noindent
5405 then the value recorded in the value history by the @code{print} command
5406 remains 4 even though the value of @code{x} has changed.
5407
5408 @table @code
5409 @kindex show values
5410 @item show values
5411 Print the last ten values in the value history, with their item numbers.
5412 This is like @samp{p@ $$9} repeated ten times, except that @code{show
5413 values} does not change the history.
5414
5415 @item show values @var{n}
5416 Print ten history values centered on history item number @var{n}.
5417
5418 @item show values +
5419 Print ten history values just after the values last printed. If no more
5420 values are available, @code{show values +} produces no display.
5421 @end table
5422
5423 Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
5424 same effect as @samp{show values +}.
5425
5426 @node Convenience Vars
5427 @section Convenience variables
5428
5429 @cindex convenience variables
5430 @value{GDBN} provides @dfn{convenience variables} that you can use within
5431 @value{GDBN} to hold on to a value and refer to it later. These variables
5432 exist entirely within @value{GDBN}; they are not part of your program, and
5433 setting a convenience variable has no direct effect on further execution
5434 of your program. That is why you can use them freely.
5435
5436 Convenience variables are prefixed with @samp{$}. Any name preceded by
5437 @samp{$} can be used for a convenience variable, unless it is one of
5438 the predefined machine-specific register names (@pxref{Registers, ,Registers}).
5439 (Value history references, in contrast, are @emph{numbers} preceded
5440 by @samp{$}. @xref{Value History, ,Value history}.)
5441
5442 You can save a value in a convenience variable with an assignment
5443 expression, just as you would set a variable in your program.
5444 For example:
5445
5446 @example
5447 set $foo = *object_ptr
5448 @end example
5449
5450 @noindent
5451 would save in @code{$foo} the value contained in the object pointed to by
5452 @code{object_ptr}.
5453
5454 Using a convenience variable for the first time creates it, but its
5455 value is @code{void} until you assign a new value. You can alter the
5456 value with another assignment at any time.
5457
5458 Convenience variables have no fixed types. You can assign a convenience
5459 variable any type of value, including structures and arrays, even if
5460 that variable already has a value of a different type. The convenience
5461 variable, when used as an expression, has the type of its current value.
5462
5463 @table @code
5464 @kindex show convenience
5465 @item show convenience
5466 Print a list of convenience variables used so far, and their values.
5467 Abbreviated @code{show conv}.
5468 @end table
5469
5470 One of the ways to use a convenience variable is as a counter to be
5471 incremented or a pointer to be advanced. For example, to print
5472 a field from successive elements of an array of structures:
5473
5474 @example
5475 set $i = 0
5476 print bar[$i++]->contents
5477 @end example
5478
5479 @noindent
5480 Repeat that command by typing @key{RET}.
5481
5482 Some convenience variables are created automatically by @value{GDBN} and given
5483 values likely to be useful.
5484
5485 @table @code
5486 @vindex $_@r{, convenience variable}
5487 @item $_
5488 The variable @code{$_} is automatically set by the @code{x} command to
5489 the last address examined (@pxref{Memory, ,Examining memory}). Other
5490 commands which provide a default address for @code{x} to examine also
5491 set @code{$_} to that address; these commands include @code{info line}
5492 and @code{info breakpoint}. The type of @code{$_} is @code{void *}
5493 except when set by the @code{x} command, in which case it is a pointer
5494 to the type of @code{$__}.
5495
5496 @vindex $__@r{, convenience variable}
5497 @item $__
5498 The variable @code{$__} is automatically set by the @code{x} command
5499 to the value found in the last address examined. Its type is chosen
5500 to match the format in which the data was printed.
5501
5502 @item $_exitcode
5503 @vindex $_exitcode@r{, convenience variable}
5504 The variable @code{$_exitcode} is automatically set to the exit code when
5505 the program being debugged terminates.
5506 @end table
5507
5508 On HP-UX systems, if you refer to a function or variable name that
5509 begins with a dollar sign, @value{GDBN} searches for a user or system
5510 name first, before it searches for a convenience variable.
5511
5512 @node Registers
5513 @section Registers
5514
5515 @cindex registers
5516 You can refer to machine register contents, in expressions, as variables
5517 with names starting with @samp{$}. The names of registers are different
5518 for each machine; use @code{info registers} to see the names used on
5519 your machine.
5520
5521 @table @code
5522 @kindex info registers
5523 @item info registers
5524 Print the names and values of all registers except floating-point
5525 registers (in the selected stack frame).
5526
5527 @kindex info all-registers
5528 @cindex floating point registers
5529 @item info all-registers
5530 Print the names and values of all registers, including floating-point
5531 registers.
5532
5533 @item info registers @var{regname} @dots{}
5534 Print the @dfn{relativized} value of each specified register @var{regname}.
5535 As discussed in detail below, register values are normally relative to
5536 the selected stack frame. @var{regname} may be any register name valid on
5537 the machine you are using, with or without the initial @samp{$}.
5538 @end table
5539
5540 @value{GDBN} has four ``standard'' register names that are available (in
5541 expressions) on most machines---whenever they do not conflict with an
5542 architecture's canonical mnemonics for registers. The register names
5543 @code{$pc} and @code{$sp} are used for the program counter register and
5544 the stack pointer. @code{$fp} is used for a register that contains a
5545 pointer to the current stack frame, and @code{$ps} is used for a
5546 register that contains the processor status. For example,
5547 you could print the program counter in hex with
5548
5549 @example
5550 p/x $pc
5551 @end example
5552
5553 @noindent
5554 or print the instruction to be executed next with
5555
5556 @example
5557 x/i $pc
5558 @end example
5559
5560 @noindent
5561 or add four to the stack pointer@footnote{This is a way of removing
5562 one word from the stack, on machines where stacks grow downward in
5563 memory (most machines, nowadays). This assumes that the innermost
5564 stack frame is selected; setting @code{$sp} is not allowed when other
5565 stack frames are selected. To pop entire frames off the stack,
5566 regardless of machine architecture, use @code{return};
5567 see @ref{Returning, ,Returning from a function}.} with
5568
5569 @example
5570 set $sp += 4
5571 @end example
5572
5573 Whenever possible, these four standard register names are available on
5574 your machine even though the machine has different canonical mnemonics,
5575 so long as there is no conflict. The @code{info registers} command
5576 shows the canonical names. For example, on the SPARC, @code{info
5577 registers} displays the processor status register as @code{$psr} but you
5578 can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
5579 is an alias for the @sc{eflags} register.
5580
5581 @value{GDBN} always considers the contents of an ordinary register as an
5582 integer when the register is examined in this way. Some machines have
5583 special registers which can hold nothing but floating point; these
5584 registers are considered to have floating point values. There is no way
5585 to refer to the contents of an ordinary register as floating point value
5586 (although you can @emph{print} it as a floating point value with
5587 @samp{print/f $@var{regname}}).
5588
5589 Some registers have distinct ``raw'' and ``virtual'' data formats. This
5590 means that the data format in which the register contents are saved by
5591 the operating system is not the same one that your program normally
5592 sees. For example, the registers of the 68881 floating point
5593 coprocessor are always saved in ``extended'' (raw) format, but all C
5594 programs expect to work with ``double'' (virtual) format. In such
5595 cases, @value{GDBN} normally works with the virtual format only (the format
5596 that makes sense for your program), but the @code{info registers} command
5597 prints the data in both formats.
5598
5599 Normally, register values are relative to the selected stack frame
5600 (@pxref{Selection, ,Selecting a frame}). This means that you get the
5601 value that the register would contain if all stack frames farther in
5602 were exited and their saved registers restored. In order to see the
5603 true contents of hardware registers, you must select the innermost
5604 frame (with @samp{frame 0}).
5605
5606 However, @value{GDBN} must deduce where registers are saved, from the machine
5607 code generated by your compiler. If some registers are not saved, or if
5608 @value{GDBN} is unable to locate the saved registers, the selected stack
5609 frame makes no difference.
5610
5611 @node Floating Point Hardware
5612 @section Floating point hardware
5613 @cindex floating point
5614
5615 Depending on the configuration, @value{GDBN} may be able to give
5616 you more information about the status of the floating point hardware.
5617
5618 @table @code
5619 @kindex info float
5620 @item info float
5621 Display hardware-dependent information about the floating
5622 point unit. The exact contents and layout vary depending on the
5623 floating point chip. Currently, @samp{info float} is supported on
5624 the ARM and x86 machines.
5625 @end table
5626
5627 @node Memory Region Attributes
5628 @section Memory Region Attributes
5629 @cindex memory region attributes
5630
5631 @dfn{Memory region attributes} allow you to describe special handling
5632 required by regions of your target's memory. @value{GDBN} uses attributes
5633 to determine whether to allow certain types of memory accesses; whether to
5634 use specific width accesses; and whether to cache target memory.
5635
5636 Defined memory regions can be individually enabled and disabled. When a
5637 memory region is disabled, @value{GDBN} uses the default attributes when
5638 accessing memory in that region. Similarly, if no memory regions have
5639 been defined, @value{GDBN} uses the default attributes when accessing
5640 all memory.
5641
5642 When a memory region is defined, it is given a number to identify it;
5643 to enable, disable, or remove a memory region, you specify that number.
5644
5645 @table @code
5646 @kindex mem
5647 @item mem @var{address1} @var{address1} @var{attributes}@dots{}
5648 Define memory region bounded by @var{address1} and @var{address2}
5649 with attributes @var{attributes}@dots{}.
5650
5651 @kindex delete mem
5652 @item delete mem @var{nums}@dots{}
5653 Remove memory region numbers @var{nums}.
5654
5655 @kindex disable mem
5656 @item disable mem @var{nums}@dots{}
5657 Disable memory region numbers @var{nums}.
5658 A disabled memory region is not forgotten.
5659 It may be enabled again later.
5660
5661 @kindex enable mem
5662 @item enable mem @var{nums}@dots{}
5663 Enable memory region numbers @var{nums}.
5664
5665 @kindex info mem
5666 @item info mem
5667 Print a table of all defined memory regions, with the following columns
5668 for each region.
5669
5670 @table @emph
5671 @item Memory Region Number
5672 @item Enabled or Disabled.
5673 Enabled memory regions are marked with @samp{y}.
5674 Disabled memory regions are marked with @samp{n}.
5675
5676 @item Lo Address
5677 The address defining the inclusive lower bound of the memory region.
5678
5679 @item Hi Address
5680 The address defining the exclusive upper bound of the memory region.
5681
5682 @item Attributes
5683 The list of attributes set for this memory region.
5684 @end table
5685 @end table
5686
5687
5688 @subsection Attributes
5689
5690 @subsubsection Memory Access Mode
5691 The access mode attributes set whether @value{GDBN} may make read or
5692 write accesses to a memory region.
5693
5694 While these attributes prevent @value{GDBN} from performing invalid
5695 memory accesses, they do nothing to prevent the target system, I/O DMA,
5696 etc. from accessing memory.
5697
5698 @table @code
5699 @item ro
5700 Memory is read only.
5701 @item wo
5702 Memory is write only.
5703 @item rw
5704 Memory is read/write (default).
5705 @end table
5706
5707 @subsubsection Memory Access Size
5708 The acccess size attributes tells @value{GDBN} to use specific sized
5709 accesses in the memory region. Often memory mapped device registers
5710 require specific sized accesses. If no access size attribute is
5711 specified, @value{GDBN} may use accesses of any size.
5712
5713 @table @code
5714 @item 8
5715 Use 8 bit memory accesses.
5716 @item 16
5717 Use 16 bit memory accesses.
5718 @item 32
5719 Use 32 bit memory accesses.
5720 @item 64
5721 Use 64 bit memory accesses.
5722 @end table
5723
5724 @c @subsubsection Hardware/Software Breakpoints
5725 @c The hardware/software breakpoint attributes set whether @value{GDBN}
5726 @c will use hardware or software breakpoints for the internal breakpoints
5727 @c used by the step, next, finish, until, etc. commands.
5728 @c
5729 @c @table @code
5730 @c @item hwbreak
5731 @c Always use hardware breakpoints
5732 @c @item swbreak (default)
5733 @c @end table
5734
5735 @subsubsection Data Cache
5736 The data cache attributes set whether @value{GDBN} will cache target
5737 memory. While this generally improves performance by reducing debug
5738 protocol overhead, it can lead to incorrect results because @value{GDBN}
5739 does not know about volatile variables or memory mapped device
5740 registers.
5741
5742 @table @code
5743 @item cache
5744 Enable @value{GDBN} to cache target memory.
5745 @item nocache (default)
5746 Disable @value{GDBN} from caching target memory.
5747 @end table
5748
5749 @c @subsubsection Memory Write Verification
5750 @c The memory write verification attributes set whether @value{GDBN}
5751 @c will re-reads data after each write to verify the write was successful.
5752 @c
5753 @c @table @code
5754 @c @item verify
5755 @c @item noverify (default)
5756 @c @end table
5757
5758 @node Tracepoints
5759 @chapter Tracepoints
5760 @c This chapter is based on the documentation written by Michael
5761 @c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
5762
5763 @cindex tracepoints
5764 In some applications, it is not feasible for the debugger to interrupt
5765 the program's execution long enough for the developer to learn
5766 anything helpful about its behavior. If the program's correctness
5767 depends on its real-time behavior, delays introduced by a debugger
5768 might cause the program to change its behavior drastically, or perhaps
5769 fail, even when the code itself is correct. It is useful to be able
5770 to observe the program's behavior without interrupting it.
5771
5772 Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
5773 specify locations in the program, called @dfn{tracepoints}, and
5774 arbitrary expressions to evaluate when those tracepoints are reached.
5775 Later, using the @code{tfind} command, you can examine the values
5776 those expressions had when the program hit the tracepoints. The
5777 expressions may also denote objects in memory---structures or arrays,
5778 for example---whose values @value{GDBN} should record; while visiting
5779 a particular tracepoint, you may inspect those objects as if they were
5780 in memory at that moment. However, because @value{GDBN} records these
5781 values without interacting with you, it can do so quickly and
5782 unobtrusively, hopefully not disturbing the program's behavior.
5783
5784 The tracepoint facility is currently available only for remote
5785 targets. @xref{Targets}. In addition, your remote target must know how
5786 to collect trace data. This functionality is implemented in the remote
5787 stub; however, none of the stubs distributed with @value{GDBN} support
5788 tracepoints as of this writing.
5789
5790 This chapter describes the tracepoint commands and features.
5791
5792 @menu
5793 * Set Tracepoints::
5794 * Analyze Collected Data::
5795 * Tracepoint Variables::
5796 @end menu
5797
5798 @node Set Tracepoints
5799 @section Commands to Set Tracepoints
5800
5801 Before running such a @dfn{trace experiment}, an arbitrary number of
5802 tracepoints can be set. Like a breakpoint (@pxref{Set Breaks}), a
5803 tracepoint has a number assigned to it by @value{GDBN}. Like with
5804 breakpoints, tracepoint numbers are successive integers starting from
5805 one. Many of the commands associated with tracepoints take the
5806 tracepoint number as their argument, to identify which tracepoint to
5807 work on.
5808
5809 For each tracepoint, you can specify, in advance, some arbitrary set
5810 of data that you want the target to collect in the trace buffer when
5811 it hits that tracepoint. The collected data can include registers,
5812 local variables, or global data. Later, you can use @value{GDBN}
5813 commands to examine the values these data had at the time the
5814 tracepoint was hit.
5815
5816 This section describes commands to set tracepoints and associated
5817 conditions and actions.
5818
5819 @menu
5820 * Create and Delete Tracepoints::
5821 * Enable and Disable Tracepoints::
5822 * Tracepoint Passcounts::
5823 * Tracepoint Actions::
5824 * Listing Tracepoints::
5825 * Starting and Stopping Trace Experiment::
5826 @end menu
5827
5828 @node Create and Delete Tracepoints
5829 @subsection Create and Delete Tracepoints
5830
5831 @table @code
5832 @cindex set tracepoint
5833 @kindex trace
5834 @item trace
5835 The @code{trace} command is very similar to the @code{break} command.
5836 Its argument can be a source line, a function name, or an address in
5837 the target program. @xref{Set Breaks}. The @code{trace} command
5838 defines a tracepoint, which is a point in the target program where the
5839 debugger will briefly stop, collect some data, and then allow the
5840 program to continue. Setting a tracepoint or changing its commands
5841 doesn't take effect until the next @code{tstart} command; thus, you
5842 cannot change the tracepoint attributes once a trace experiment is
5843 running.
5844
5845 Here are some examples of using the @code{trace} command:
5846
5847 @smallexample
5848 (@value{GDBP}) @b{trace foo.c:121} // a source file and line number
5849
5850 (@value{GDBP}) @b{trace +2} // 2 lines forward
5851
5852 (@value{GDBP}) @b{trace my_function} // first source line of function
5853
5854 (@value{GDBP}) @b{trace *my_function} // EXACT start address of function
5855
5856 (@value{GDBP}) @b{trace *0x2117c4} // an address
5857 @end smallexample
5858
5859 @noindent
5860 You can abbreviate @code{trace} as @code{tr}.
5861
5862 @vindex $tpnum
5863 @cindex last tracepoint number
5864 @cindex recent tracepoint number
5865 @cindex tracepoint number
5866 The convenience variable @code{$tpnum} records the tracepoint number
5867 of the most recently set tracepoint.
5868
5869 @kindex delete tracepoint
5870 @cindex tracepoint deletion
5871 @item delete tracepoint @r{[}@var{num}@r{]}
5872 Permanently delete one or more tracepoints. With no argument, the
5873 default is to delete all tracepoints.
5874
5875 Examples:
5876
5877 @smallexample
5878 (@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
5879
5880 (@value{GDBP}) @b{delete trace} // remove all tracepoints
5881 @end smallexample
5882
5883 @noindent
5884 You can abbreviate this command as @code{del tr}.
5885 @end table
5886
5887 @node Enable and Disable Tracepoints
5888 @subsection Enable and Disable Tracepoints
5889
5890 @table @code
5891 @kindex disable tracepoint
5892 @item disable tracepoint @r{[}@var{num}@r{]}
5893 Disable tracepoint @var{num}, or all tracepoints if no argument
5894 @var{num} is given. A disabled tracepoint will have no effect during
5895 the next trace experiment, but it is not forgotten. You can re-enable
5896 a disabled tracepoint using the @code{enable tracepoint} command.
5897
5898 @kindex enable tracepoint
5899 @item enable tracepoint @r{[}@var{num}@r{]}
5900 Enable tracepoint @var{num}, or all tracepoints. The enabled
5901 tracepoints will become effective the next time a trace experiment is
5902 run.
5903 @end table
5904
5905 @node Tracepoint Passcounts
5906 @subsection Tracepoint Passcounts
5907
5908 @table @code
5909 @kindex passcount
5910 @cindex tracepoint pass count
5911 @item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
5912 Set the @dfn{passcount} of a tracepoint. The passcount is a way to
5913 automatically stop a trace experiment. If a tracepoint's passcount is
5914 @var{n}, then the trace experiment will be automatically stopped on
5915 the @var{n}'th time that tracepoint is hit. If the tracepoint number
5916 @var{num} is not specified, the @code{passcount} command sets the
5917 passcount of the most recently defined tracepoint. If no passcount is
5918 given, the trace experiment will run until stopped explicitly by the
5919 user.
5920
5921 Examples:
5922
5923 @smallexample
5924 (@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
5925 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
5926
5927 (@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
5928 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
5929 (@value{GDBP}) @b{trace foo}
5930 (@value{GDBP}) @b{pass 3}
5931 (@value{GDBP}) @b{trace bar}
5932 (@value{GDBP}) @b{pass 2}
5933 (@value{GDBP}) @b{trace baz}
5934 (@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
5935 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
5936 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
5937 @exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
5938 @end smallexample
5939 @end table
5940
5941 @node Tracepoint Actions
5942 @subsection Tracepoint Action Lists
5943
5944 @table @code
5945 @kindex actions
5946 @cindex tracepoint actions
5947 @item actions @r{[}@var{num}@r{]}
5948 This command will prompt for a list of actions to be taken when the
5949 tracepoint is hit. If the tracepoint number @var{num} is not
5950 specified, this command sets the actions for the one that was most
5951 recently defined (so that you can define a tracepoint and then say
5952 @code{actions} without bothering about its number). You specify the
5953 actions themselves on the following lines, one action at a time, and
5954 terminate the actions list with a line containing just @code{end}. So
5955 far, the only defined actions are @code{collect} and
5956 @code{while-stepping}.
5957
5958 @cindex remove actions from a tracepoint
5959 To remove all actions from a tracepoint, type @samp{actions @var{num}}
5960 and follow it immediately with @samp{end}.
5961
5962 @smallexample
5963 (@value{GDBP}) @b{collect @var{data}} // collect some data
5964
5965 (@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
5966
5967 (@value{GDBP}) @b{end} // signals the end of actions.
5968 @end smallexample
5969
5970 In the following example, the action list begins with @code{collect}
5971 commands indicating the things to be collected when the tracepoint is
5972 hit. Then, in order to single-step and collect additional data
5973 following the tracepoint, a @code{while-stepping} command is used,
5974 followed by the list of things to be collected while stepping. The
5975 @code{while-stepping} command is terminated by its own separate
5976 @code{end} command. Lastly, the action list is terminated by an
5977 @code{end} command.
5978
5979 @smallexample
5980 (@value{GDBP}) @b{trace foo}
5981 (@value{GDBP}) @b{actions}
5982 Enter actions for tracepoint 1, one per line:
5983 > collect bar,baz
5984 > collect $regs
5985 > while-stepping 12
5986 > collect $fp, $sp
5987 > end
5988 end
5989 @end smallexample
5990
5991 @kindex collect @r{(tracepoints)}
5992 @item collect @var{expr1}, @var{expr2}, @dots{}
5993 Collect values of the given expressions when the tracepoint is hit.
5994 This command accepts a comma-separated list of any valid expressions.
5995 In addition to global, static, or local variables, the following
5996 special arguments are supported:
5997
5998 @table @code
5999 @item $regs
6000 collect all registers
6001
6002 @item $args
6003 collect all function arguments
6004
6005 @item $locals
6006 collect all local variables.
6007 @end table
6008
6009 You can give several consecutive @code{collect} commands, each one
6010 with a single argument, or one @code{collect} command with several
6011 arguments separated by commas: the effect is the same.
6012
6013 The command @code{info scope} (@pxref{Symbols, info scope}) is
6014 particularly useful for figuring out what data to collect.
6015
6016 @kindex while-stepping @r{(tracepoints)}
6017 @item while-stepping @var{n}
6018 Perform @var{n} single-step traces after the tracepoint, collecting
6019 new data at each step. The @code{while-stepping} command is
6020 followed by the list of what to collect while stepping (followed by
6021 its own @code{end} command):
6022
6023 @smallexample
6024 > while-stepping 12
6025 > collect $regs, myglobal
6026 > end
6027 >
6028 @end smallexample
6029
6030 @noindent
6031 You may abbreviate @code{while-stepping} as @code{ws} or
6032 @code{stepping}.
6033 @end table
6034
6035 @node Listing Tracepoints
6036 @subsection Listing Tracepoints
6037
6038 @table @code
6039 @kindex info tracepoints
6040 @cindex information about tracepoints
6041 @item info tracepoints @r{[}@var{num}@r{]}
6042 Display information about the tracepoint @var{num}. If you don't specify
6043 a tracepoint number, displays information about all the tracepoints
6044 defined so far. For each tracepoint, the following information is
6045 shown:
6046
6047 @itemize @bullet
6048 @item
6049 its number
6050 @item
6051 whether it is enabled or disabled
6052 @item
6053 its address
6054 @item
6055 its passcount as given by the @code{passcount @var{n}} command
6056 @item
6057 its step count as given by the @code{while-stepping @var{n}} command
6058 @item
6059 where in the source files is the tracepoint set
6060 @item
6061 its action list as given by the @code{actions} command
6062 @end itemize
6063
6064 @smallexample
6065 (@value{GDBP}) @b{info trace}
6066 Num Enb Address PassC StepC What
6067 1 y 0x002117c4 0 0 <gdb_asm>
6068 2 y 0x0020dc64 0 0 in g_test at g_test.c:1375
6069 3 y 0x0020b1f4 0 0 in get_data at ../foo.c:41
6070 (@value{GDBP})
6071 @end smallexample
6072
6073 @noindent
6074 This command can be abbreviated @code{info tp}.
6075 @end table
6076
6077 @node Starting and Stopping Trace Experiment
6078 @subsection Starting and Stopping Trace Experiment
6079
6080 @table @code
6081 @kindex tstart
6082 @cindex start a new trace experiment
6083 @cindex collected data discarded
6084 @item tstart
6085 This command takes no arguments. It starts the trace experiment, and
6086 begins collecting data. This has the side effect of discarding all
6087 the data collected in the trace buffer during the previous trace
6088 experiment.
6089
6090 @kindex tstop
6091 @cindex stop a running trace experiment
6092 @item tstop
6093 This command takes no arguments. It ends the trace experiment, and
6094 stops collecting data.
6095
6096 @strong{Note:} a trace experiment and data collection may stop
6097 automatically if any tracepoint's passcount is reached
6098 (@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
6099
6100 @kindex tstatus
6101 @cindex status of trace data collection
6102 @cindex trace experiment, status of
6103 @item tstatus
6104 This command displays the status of the current trace data
6105 collection.
6106 @end table
6107
6108 Here is an example of the commands we described so far:
6109
6110 @smallexample
6111 (@value{GDBP}) @b{trace gdb_c_test}
6112 (@value{GDBP}) @b{actions}
6113 Enter actions for tracepoint #1, one per line.
6114 > collect $regs,$locals,$args
6115 > while-stepping 11
6116 > collect $regs
6117 > end
6118 > end
6119 (@value{GDBP}) @b{tstart}
6120 [time passes @dots{}]
6121 (@value{GDBP}) @b{tstop}
6122 @end smallexample
6123
6124
6125 @node Analyze Collected Data
6126 @section Using the collected data
6127
6128 After the tracepoint experiment ends, you use @value{GDBN} commands
6129 for examining the trace data. The basic idea is that each tracepoint
6130 collects a trace @dfn{snapshot} every time it is hit and another
6131 snapshot every time it single-steps. All these snapshots are
6132 consecutively numbered from zero and go into a buffer, and you can
6133 examine them later. The way you examine them is to @dfn{focus} on a
6134 specific trace snapshot. When the remote stub is focused on a trace
6135 snapshot, it will respond to all @value{GDBN} requests for memory and
6136 registers by reading from the buffer which belongs to that snapshot,
6137 rather than from @emph{real} memory or registers of the program being
6138 debugged. This means that @strong{all} @value{GDBN} commands
6139 (@code{print}, @code{info registers}, @code{backtrace}, etc.) will
6140 behave as if we were currently debugging the program state as it was
6141 when the tracepoint occurred. Any requests for data that are not in
6142 the buffer will fail.
6143
6144 @menu
6145 * tfind:: How to select a trace snapshot
6146 * tdump:: How to display all data for a snapshot
6147 * save-tracepoints:: How to save tracepoints for a future run
6148 @end menu
6149
6150 @node tfind
6151 @subsection @code{tfind @var{n}}
6152
6153 @kindex tfind
6154 @cindex select trace snapshot
6155 @cindex find trace snapshot
6156 The basic command for selecting a trace snapshot from the buffer is
6157 @code{tfind @var{n}}, which finds trace snapshot number @var{n},
6158 counting from zero. If no argument @var{n} is given, the next
6159 snapshot is selected.
6160
6161 Here are the various forms of using the @code{tfind} command.
6162
6163 @table @code
6164 @item tfind start
6165 Find the first snapshot in the buffer. This is a synonym for
6166 @code{tfind 0} (since 0 is the number of the first snapshot).
6167
6168 @item tfind none
6169 Stop debugging trace snapshots, resume @emph{live} debugging.
6170
6171 @item tfind end
6172 Same as @samp{tfind none}.
6173
6174 @item tfind
6175 No argument means find the next trace snapshot.
6176
6177 @item tfind -
6178 Find the previous trace snapshot before the current one. This permits
6179 retracing earlier steps.
6180
6181 @item tfind tracepoint @var{num}
6182 Find the next snapshot associated with tracepoint @var{num}. Search
6183 proceeds forward from the last examined trace snapshot. If no
6184 argument @var{num} is given, it means find the next snapshot collected
6185 for the same tracepoint as the current snapshot.
6186
6187 @item tfind pc @var{addr}
6188 Find the next snapshot associated with the value @var{addr} of the
6189 program counter. Search proceeds forward from the last examined trace
6190 snapshot. If no argument @var{addr} is given, it means find the next
6191 snapshot with the same value of PC as the current snapshot.
6192
6193 @item tfind outside @var{addr1}, @var{addr2}
6194 Find the next snapshot whose PC is outside the given range of
6195 addresses.
6196
6197 @item tfind range @var{addr1}, @var{addr2}
6198 Find the next snapshot whose PC is between @var{addr1} and
6199 @var{addr2}. @c FIXME: Is the range inclusive or exclusive?
6200
6201 @item tfind line @r{[}@var{file}:@r{]}@var{n}
6202 Find the next snapshot associated with the source line @var{n}. If
6203 the optional argument @var{file} is given, refer to line @var{n} in
6204 that source file. Search proceeds forward from the last examined
6205 trace snapshot. If no argument @var{n} is given, it means find the
6206 next line other than the one currently being examined; thus saying
6207 @code{tfind line} repeatedly can appear to have the same effect as
6208 stepping from line to line in a @emph{live} debugging session.
6209 @end table
6210
6211 The default arguments for the @code{tfind} commands are specifically
6212 designed to make it easy to scan through the trace buffer. For
6213 instance, @code{tfind} with no argument selects the next trace
6214 snapshot, and @code{tfind -} with no argument selects the previous
6215 trace snapshot. So, by giving one @code{tfind} command, and then
6216 simply hitting @key{RET} repeatedly you can examine all the trace
6217 snapshots in order. Or, by saying @code{tfind -} and then hitting
6218 @key{RET} repeatedly you can examine the snapshots in reverse order.
6219 The @code{tfind line} command with no argument selects the snapshot
6220 for the next source line executed. The @code{tfind pc} command with
6221 no argument selects the next snapshot with the same program counter
6222 (PC) as the current frame. The @code{tfind tracepoint} command with
6223 no argument selects the next trace snapshot collected by the same
6224 tracepoint as the current one.
6225
6226 In addition to letting you scan through the trace buffer manually,
6227 these commands make it easy to construct @value{GDBN} scripts that
6228 scan through the trace buffer and print out whatever collected data
6229 you are interested in. Thus, if we want to examine the PC, FP, and SP
6230 registers from each trace frame in the buffer, we can say this:
6231
6232 @smallexample
6233 (@value{GDBP}) @b{tfind start}
6234 (@value{GDBP}) @b{while ($trace_frame != -1)}
6235 > printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
6236 $trace_frame, $pc, $sp, $fp
6237 > tfind
6238 > end
6239
6240 Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
6241 Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
6242 Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
6243 Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
6244 Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
6245 Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
6246 Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
6247 Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
6248 Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
6249 Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
6250 Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
6251 @end smallexample
6252
6253 Or, if we want to examine the variable @code{X} at each source line in
6254 the buffer:
6255
6256 @smallexample
6257 (@value{GDBP}) @b{tfind start}
6258 (@value{GDBP}) @b{while ($trace_frame != -1)}
6259 > printf "Frame %d, X == %d\n", $trace_frame, X
6260 > tfind line
6261 > end
6262
6263 Frame 0, X = 1
6264 Frame 7, X = 2
6265 Frame 13, X = 255
6266 @end smallexample
6267
6268 @node tdump
6269 @subsection @code{tdump}
6270 @kindex tdump
6271 @cindex dump all data collected at tracepoint
6272 @cindex tracepoint data, display
6273
6274 This command takes no arguments. It prints all the data collected at
6275 the current trace snapshot.
6276
6277 @smallexample
6278 (@value{GDBP}) @b{trace 444}
6279 (@value{GDBP}) @b{actions}
6280 Enter actions for tracepoint #2, one per line:
6281 > collect $regs, $locals, $args, gdb_long_test
6282 > end
6283
6284 (@value{GDBP}) @b{tstart}
6285
6286 (@value{GDBP}) @b{tfind line 444}
6287 #0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
6288 at gdb_test.c:444
6289 444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
6290
6291 (@value{GDBP}) @b{tdump}
6292 Data collected at tracepoint 2, trace frame 1:
6293 d0 0xc4aa0085 -995491707
6294 d1 0x18 24
6295 d2 0x80 128
6296 d3 0x33 51
6297 d4 0x71aea3d 119204413
6298 d5 0x22 34
6299 d6 0xe0 224
6300 d7 0x380035 3670069
6301 a0 0x19e24a 1696330
6302 a1 0x3000668 50333288
6303 a2 0x100 256
6304 a3 0x322000 3284992
6305 a4 0x3000698 50333336
6306 a5 0x1ad3cc 1758156
6307 fp 0x30bf3c 0x30bf3c
6308 sp 0x30bf34 0x30bf34
6309 ps 0x0 0
6310 pc 0x20b2c8 0x20b2c8
6311 fpcontrol 0x0 0
6312 fpstatus 0x0 0
6313 fpiaddr 0x0 0
6314 p = 0x20e5b4 "gdb-test"
6315 p1 = (void *) 0x11
6316 p2 = (void *) 0x22
6317 p3 = (void *) 0x33
6318 p4 = (void *) 0x44
6319 p5 = (void *) 0x55
6320 p6 = (void *) 0x66
6321 gdb_long_test = 17 '\021'
6322
6323 (@value{GDBP})
6324 @end smallexample
6325
6326 @node save-tracepoints
6327 @subsection @code{save-tracepoints @var{filename}}
6328 @kindex save-tracepoints
6329 @cindex save tracepoints for future sessions
6330
6331 This command saves all current tracepoint definitions together with
6332 their actions and passcounts, into a file @file{@var{filename}}
6333 suitable for use in a later debugging session. To read the saved
6334 tracepoint definitions, use the @code{source} command (@pxref{Command
6335 Files}).
6336
6337 @node Tracepoint Variables
6338 @section Convenience Variables for Tracepoints
6339 @cindex tracepoint variables
6340 @cindex convenience variables for tracepoints
6341
6342 @table @code
6343 @vindex $trace_frame
6344 @item (int) $trace_frame
6345 The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
6346 snapshot is selected.
6347
6348 @vindex $tracepoint
6349 @item (int) $tracepoint
6350 The tracepoint for the current trace snapshot.
6351
6352 @vindex $trace_line
6353 @item (int) $trace_line
6354 The line number for the current trace snapshot.
6355
6356 @vindex $trace_file
6357 @item (char []) $trace_file
6358 The source file for the current trace snapshot.
6359
6360 @vindex $trace_func
6361 @item (char []) $trace_func
6362 The name of the function containing @code{$tracepoint}.
6363 @end table
6364
6365 Note: @code{$trace_file} is not suitable for use in @code{printf},
6366 use @code{output} instead.
6367
6368 Here's a simple example of using these convenience variables for
6369 stepping through all the trace snapshots and printing some of their
6370 data.
6371
6372 @smallexample
6373 (@value{GDBP}) @b{tfind start}
6374
6375 (@value{GDBP}) @b{while $trace_frame != -1}
6376 > output $trace_file
6377 > printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
6378 > tfind
6379 > end
6380 @end smallexample
6381
6382 @node Overlays
6383 @chapter Debugging Programs That Use Overlays
6384 @cindex overlays
6385
6386 If your program is too large to fit completely in your target system's
6387 memory, you can sometimes use @dfn{overlays} to work around this
6388 problem. @value{GDBN} provides some support for debugging programs that
6389 use overlays.
6390
6391 @menu
6392 * How Overlays Work:: A general explanation of overlays.
6393 * Overlay Commands:: Managing overlays in @value{GDBN}.
6394 * Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
6395 mapped by asking the inferior.
6396 * Overlay Sample Program:: A sample program using overlays.
6397 @end menu
6398
6399 @node How Overlays Work
6400 @section How Overlays Work
6401 @cindex mapped overlays
6402 @cindex unmapped overlays
6403 @cindex load address, overlay's
6404 @cindex mapped address
6405 @cindex overlay area
6406
6407 Suppose you have a computer whose instruction address space is only 64
6408 kilobytes long, but which has much more memory which can be accessed by
6409 other means: special instructions, segment registers, or memory
6410 management hardware, for example. Suppose further that you want to
6411 adapt a program which is larger than 64 kilobytes to run on this system.
6412
6413 One solution is to identify modules of your program which are relatively
6414 independent, and need not call each other directly; call these modules
6415 @dfn{overlays}. Separate the overlays from the main program, and place
6416 their machine code in the larger memory. Place your main program in
6417 instruction memory, but leave at least enough space there to hold the
6418 largest overlay as well.
6419
6420 Now, to call a function located in an overlay, you must first copy that
6421 overlay's machine code from the large memory into the space set aside
6422 for it in the instruction memory, and then jump to its entry point
6423 there.
6424
6425 @example
6426 @group
6427 Data Instruction Larger
6428 Address Space Address Space Address Space
6429 +-----------+ +-----------+ +-----------+
6430 | | | | | |
6431 +-----------+ +-----------+ +-----------+<-- overlay 1
6432 | program | | main | | | load address
6433 | variables | | program | | overlay 1 |
6434 | and heap | | | ,---| |
6435 +-----------+ | | | | |
6436 | | +-----------+ | +-----------+
6437 +-----------+ | | | | |
6438 mapped --->+-----------+ / +-----------+<-- overlay 2
6439 address | overlay | <-' | overlay 2 | load address
6440 | area | <-----| |
6441 | | <---. +-----------+
6442 | | | | |
6443 +-----------+ | | |
6444 | | | +-----------+<-- overlay 3
6445 +-----------+ `--| | load address
6446 | overlay 3 |
6447 | |
6448 +-----------+
6449 | |
6450 +-----------+
6451
6452 To map an overlay, copy its code from the larger address space
6453 to the instruction address space. Since the overlays shown here
6454 all use the same mapped address, only one may be mapped at a time.
6455 @end group
6456 @end example
6457
6458 This diagram shows a system with separate data and instruction address
6459 spaces. For a system with a single address space for data and
6460 instructions, the diagram would be similar, except that the program
6461 variables and heap would share an address space with the main program
6462 and the overlay area.
6463
6464 An overlay loaded into instruction memory and ready for use is called a
6465 @dfn{mapped} overlay; its @dfn{mapped address} is its address in the
6466 instruction memory. An overlay not present (or only partially present)
6467 in instruction memory is called @dfn{unmapped}; its @dfn{load address}
6468 is its address in the larger memory. The mapped address is also called
6469 the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
6470 called the @dfn{load memory address}, or @dfn{LMA}.
6471
6472 Unfortunately, overlays are not a completely transparent way to adapt a
6473 program to limited instruction memory. They introduce a new set of
6474 global constraints you must keep in mind as you design your program:
6475
6476 @itemize @bullet
6477
6478 @item
6479 Before calling or returning to a function in an overlay, your program
6480 must make sure that overlay is actually mapped. Otherwise, the call or
6481 return will transfer control to the right address, but in the wrong
6482 overlay, and your program will probably crash.
6483
6484 @item
6485 If the process of mapping an overlay is expensive on your system, you
6486 will need to choose your overlays carefully to minimize their effect on
6487 your program's performance.
6488
6489 @item
6490 The executable file you load onto your system must contain each
6491 overlay's instructions, appearing at the overlay's load address, not its
6492 mapped address. However, each overlay's instructions must be relocated
6493 and its symbols defined as if the overlay were at its mapped address.
6494 You can use GNU linker scripts to specify different load and relocation
6495 addresses for pieces of your program; see @ref{Overlay Description,,,
6496 ld.info, Using ld: the GNU linker}.
6497
6498 @item
6499 The procedure for loading executable files onto your system must be able
6500 to load their contents into the larger address space as well as the
6501 instruction and data spaces.
6502
6503 @end itemize
6504
6505 The overlay system described above is rather simple, and could be
6506 improved in many ways:
6507
6508 @itemize @bullet
6509
6510 @item
6511 If your system has suitable bank switch registers or memory management
6512 hardware, you could use those facilities to make an overlay's load area
6513 contents simply appear at their mapped address in instruction space.
6514 This would probably be faster than copying the overlay to its mapped
6515 area in the usual way.
6516
6517 @item
6518 If your overlays are small enough, you could set aside more than one
6519 overlay area, and have more than one overlay mapped at a time.
6520
6521 @item
6522 You can use overlays to manage data, as well as instructions. In
6523 general, data overlays are even less transparent to your design than
6524 code overlays: whereas code overlays only require care when you call or
6525 return to functions, data overlays require care every time you access
6526 the data. Also, if you change the contents of a data overlay, you
6527 must copy its contents back out to its load address before you can copy a
6528 different data overlay into the same mapped area.
6529
6530 @end itemize
6531
6532
6533 @node Overlay Commands
6534 @section Overlay Commands
6535
6536 To use @value{GDBN}'s overlay support, each overlay in your program must
6537 correspond to a separate section of the executable file. The section's
6538 virtual memory address and load memory address must be the overlay's
6539 mapped and load addresses. Identifying overlays with sections allows
6540 @value{GDBN} to determine the appropriate address of a function or
6541 variable, depending on whether the overlay is mapped or not.
6542
6543 @value{GDBN}'s overlay commands all start with the word @code{overlay};
6544 you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
6545
6546 @table @code
6547 @item overlay off
6548 @kindex overlay off
6549 Disable @value{GDBN}'s overlay support. When overlay support is
6550 disabled, @value{GDBN} assumes that all functions and variables are
6551 always present at their mapped addresses. By default, @value{GDBN}'s
6552 overlay support is disabled.
6553
6554 @item overlay manual
6555 @kindex overlay manual
6556 @cindex manual overlay debugging
6557 Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
6558 relies on you to tell it which overlays are mapped, and which are not,
6559 using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
6560 commands described below.
6561
6562 @item overlay map-overlay @var{overlay}
6563 @itemx overlay map @var{overlay}
6564 @kindex overlay map-overlay
6565 @cindex map an overlay
6566 Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
6567 be the name of the object file section containing the overlay. When an
6568 overlay is mapped, @value{GDBN} assumes it can find the overlay's
6569 functions and variables at their mapped addresses. @value{GDBN} assumes
6570 that any other overlays whose mapped ranges overlap that of
6571 @var{overlay} are now unmapped.
6572
6573 @item overlay unmap-overlay @var{overlay}
6574 @itemx overlay unmap @var{overlay}
6575 @kindex overlay unmap-overlay
6576 @cindex unmap an overlay
6577 Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
6578 must be the name of the object file section containing the overlay.
6579 When an overlay is unmapped, @value{GDBN} assumes it can find the
6580 overlay's functions and variables at their load addresses.
6581
6582 @item overlay auto
6583 @kindex overlay auto
6584 Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
6585 consults a data structure the overlay manager maintains in the inferior
6586 to see which overlays are mapped. For details, see @ref{Automatic
6587 Overlay Debugging}.
6588
6589 @item overlay load-target
6590 @itemx overlay load
6591 @kindex overlay load-target
6592 @cindex reloading the overlay table
6593 Re-read the overlay table from the inferior. Normally, @value{GDBN}
6594 re-reads the table @value{GDBN} automatically each time the inferior
6595 stops, so this command should only be necessary if you have changed the
6596 overlay mapping yourself using @value{GDBN}. This command is only
6597 useful when using automatic overlay debugging.
6598
6599 @item overlay list-overlays
6600 @itemx overlay list
6601 @cindex listing mapped overlays
6602 Display a list of the overlays currently mapped, along with their mapped
6603 addresses, load addresses, and sizes.
6604
6605 @end table
6606
6607 Normally, when @value{GDBN} prints a code address, it includes the name
6608 of the function the address falls in:
6609
6610 @example
6611 (gdb) print main
6612 $3 = @{int ()@} 0x11a0 <main>
6613 @end example
6614 @noindent
6615 When overlay debugging is enabled, @value{GDBN} recognizes code in
6616 unmapped overlays, and prints the names of unmapped functions with
6617 asterisks around them. For example, if @code{foo} is a function in an
6618 unmapped overlay, @value{GDBN} prints it this way:
6619
6620 @example
6621 (gdb) overlay list
6622 No sections are mapped.
6623 (gdb) print foo
6624 $5 = @{int (int)@} 0x100000 <*foo*>
6625 @end example
6626 @noindent
6627 When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
6628 name normally:
6629
6630 @example
6631 (gdb) overlay list
6632 Section .ov.foo.text, loaded at 0x100000 - 0x100034,
6633 mapped at 0x1016 - 0x104a
6634 (gdb) print foo
6635 $6 = @{int (int)@} 0x1016 <foo>
6636 @end example
6637
6638 When overlay debugging is enabled, @value{GDBN} can find the correct
6639 address for functions and variables in an overlay, whether or not the
6640 overlay is mapped. This allows most @value{GDBN} commands, like
6641 @code{break} and @code{disassemble}, to work normally, even on unmapped
6642 code. However, @value{GDBN}'s breakpoint support has some limitations:
6643
6644 @itemize @bullet
6645 @item
6646 @cindex breakpoints in overlays
6647 @cindex overlays, setting breakpoints in
6648 You can set breakpoints in functions in unmapped overlays, as long as
6649 @value{GDBN} can write to the overlay at its load address.
6650 @item
6651 @value{GDBN} can not set hardware or simulator-based breakpoints in
6652 unmapped overlays. However, if you set a breakpoint at the end of your
6653 overlay manager (and tell @value{GDBN} which overlays are now mapped, if
6654 you are using manual overlay management), @value{GDBN} will re-set its
6655 breakpoints properly.
6656 @end itemize
6657
6658
6659 @node Automatic Overlay Debugging
6660 @section Automatic Overlay Debugging
6661 @cindex automatic overlay debugging
6662
6663 @value{GDBN} can automatically track which overlays are mapped and which
6664 are not, given some simple co-operation from the overlay manager in the
6665 inferior. If you enable automatic overlay debugging with the
6666 @code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
6667 looks in the inferior's memory for certain variables describing the
6668 current state of the overlays.
6669
6670 Here are the variables your overlay manager must define to support
6671 @value{GDBN}'s automatic overlay debugging:
6672
6673 @table @asis
6674
6675 @item @code{_ovly_table}:
6676 This variable must be an array of the following structures:
6677
6678 @example
6679 struct
6680 @{
6681 /* The overlay's mapped address. */
6682 unsigned long vma;
6683
6684 /* The size of the overlay, in bytes. */
6685 unsigned long size;
6686
6687 /* The overlay's load address. */
6688 unsigned long lma;
6689
6690 /* Non-zero if the overlay is currently mapped;
6691 zero otherwise. */
6692 unsigned long mapped;
6693 @}
6694 @end example
6695
6696 @item @code{_novlys}:
6697 This variable must be a four-byte signed integer, holding the total
6698 number of elements in @code{_ovly_table}.
6699
6700 @end table
6701
6702 To decide whether a particular overlay is mapped or not, @value{GDBN}
6703 looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
6704 @code{lma} members equal the VMA and LMA of the overlay's section in the
6705 executable file. When @value{GDBN} finds a matching entry, it consults
6706 the entry's @code{mapped} member to determine whether the overlay is
6707 currently mapped.
6708
6709
6710 @node Overlay Sample Program
6711 @section Overlay Sample Program
6712 @cindex overlay example program
6713
6714 When linking a program which uses overlays, you must place the overlays
6715 at their load addresses, while relocating them to run at their mapped
6716 addresses. To do this, you must write a linker script (@pxref{Overlay
6717 Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
6718 since linker scripts are specific to a particular host system, target
6719 architecture, and target memory layout, this manual cannot provide
6720 portable sample code demonstrating @value{GDBN}'s overlay support.
6721
6722 However, the @value{GDBN} source distribution does contain an overlaid
6723 program, with linker scripts for a few systems, as part of its test
6724 suite. The program consists of the following files from
6725 @file{gdb/testsuite/gdb.base}:
6726
6727 @table @file
6728 @item overlays.c
6729 The main program file.
6730 @item ovlymgr.c
6731 A simple overlay manager, used by @file{overlays.c}.
6732 @item foo.c
6733 @itemx bar.c
6734 @itemx baz.c
6735 @itemx grbx.c
6736 Overlay modules, loaded and used by @file{overlays.c}.
6737 @item d10v.ld
6738 @itemx m32r.ld
6739 Linker scripts for linking the test program on the @code{d10v-elf}
6740 and @code{m32r-elf} targets.
6741 @end table
6742
6743 You can build the test program using the @code{d10v-elf} GCC
6744 cross-compiler like this:
6745
6746 @example
6747 $ d10v-elf-gcc -g -c overlays.c
6748 $ d10v-elf-gcc -g -c ovlymgr.c
6749 $ d10v-elf-gcc -g -c foo.c
6750 $ d10v-elf-gcc -g -c bar.c
6751 $ d10v-elf-gcc -g -c baz.c
6752 $ d10v-elf-gcc -g -c grbx.c
6753 $ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
6754 baz.o grbx.o -Wl,-Td10v.ld -o overlays
6755 @end example
6756
6757 The build process is identical for any other architecture, except that
6758 you must substitute the appropriate compiler and linker script for the
6759 target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
6760
6761
6762 @node Languages
6763 @chapter Using @value{GDBN} with Different Languages
6764 @cindex languages
6765
6766 Although programming languages generally have common aspects, they are
6767 rarely expressed in the same manner. For instance, in ANSI C,
6768 dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
6769 Modula-2, it is accomplished by @code{p^}. Values can also be
6770 represented (and displayed) differently. Hex numbers in C appear as
6771 @samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
6772
6773 @cindex working language
6774 Language-specific information is built into @value{GDBN} for some languages,
6775 allowing you to express operations like the above in your program's
6776 native language, and allowing @value{GDBN} to output values in a manner
6777 consistent with the syntax of your program's native language. The
6778 language you use to build expressions is called the @dfn{working
6779 language}.
6780
6781 @menu
6782 * Setting:: Switching between source languages
6783 * Show:: Displaying the language
6784 * Checks:: Type and range checks
6785 * Support:: Supported languages
6786 @end menu
6787
6788 @node Setting
6789 @section Switching between source languages
6790
6791 There are two ways to control the working language---either have @value{GDBN}
6792 set it automatically, or select it manually yourself. You can use the
6793 @code{set language} command for either purpose. On startup, @value{GDBN}
6794 defaults to setting the language automatically. The working language is
6795 used to determine how expressions you type are interpreted, how values
6796 are printed, etc.
6797
6798 In addition to the working language, every source file that
6799 @value{GDBN} knows about has its own working language. For some object
6800 file formats, the compiler might indicate which language a particular
6801 source file is in. However, most of the time @value{GDBN} infers the
6802 language from the name of the file. The language of a source file
6803 controls whether C@t{++} names are demangled---this way @code{backtrace} can
6804 show each frame appropriately for its own language. There is no way to
6805 set the language of a source file from within @value{GDBN}, but you can
6806 set the language associated with a filename extension. @xref{Show, ,
6807 Displaying the language}.
6808
6809 This is most commonly a problem when you use a program, such
6810 as @code{cfront} or @code{f2c}, that generates C but is written in
6811 another language. In that case, make the
6812 program use @code{#line} directives in its C output; that way
6813 @value{GDBN} will know the correct language of the source code of the original
6814 program, and will display that source code, not the generated C code.
6815
6816 @menu
6817 * Filenames:: Filename extensions and languages.
6818 * Manually:: Setting the working language manually
6819 * Automatically:: Having @value{GDBN} infer the source language
6820 @end menu
6821
6822 @node Filenames
6823 @subsection List of filename extensions and languages
6824
6825 If a source file name ends in one of the following extensions, then
6826 @value{GDBN} infers that its language is the one indicated.
6827
6828 @table @file
6829
6830 @item .c
6831 C source file
6832
6833 @item .C
6834 @itemx .cc
6835 @itemx .cp
6836 @itemx .cpp
6837 @itemx .cxx
6838 @itemx .c++
6839 C@t{++} source file
6840
6841 @item .f
6842 @itemx .F
6843 Fortran source file
6844
6845 @item .ch
6846 @itemx .c186
6847 @itemx .c286
6848 CHILL source file
6849
6850 @item .mod
6851 Modula-2 source file
6852
6853 @item .s
6854 @itemx .S
6855 Assembler source file. This actually behaves almost like C, but
6856 @value{GDBN} does not skip over function prologues when stepping.
6857 @end table
6858
6859 In addition, you may set the language associated with a filename
6860 extension. @xref{Show, , Displaying the language}.
6861
6862 @node Manually
6863 @subsection Setting the working language
6864
6865 If you allow @value{GDBN} to set the language automatically,
6866 expressions are interpreted the same way in your debugging session and
6867 your program.
6868
6869 @kindex set language
6870 If you wish, you may set the language manually. To do this, issue the
6871 command @samp{set language @var{lang}}, where @var{lang} is the name of
6872 a language, such as
6873 @code{c} or @code{modula-2}.
6874 For a list of the supported languages, type @samp{set language}.
6875
6876 Setting the language manually prevents @value{GDBN} from updating the working
6877 language automatically. This can lead to confusion if you try
6878 to debug a program when the working language is not the same as the
6879 source language, when an expression is acceptable to both
6880 languages---but means different things. For instance, if the current
6881 source file were written in C, and @value{GDBN} was parsing Modula-2, a
6882 command such as:
6883
6884 @example
6885 print a = b + c
6886 @end example
6887
6888 @noindent
6889 might not have the effect you intended. In C, this means to add
6890 @code{b} and @code{c} and place the result in @code{a}. The result
6891 printed would be the value of @code{a}. In Modula-2, this means to compare
6892 @code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
6893
6894 @node Automatically
6895 @subsection Having @value{GDBN} infer the source language
6896
6897 To have @value{GDBN} set the working language automatically, use
6898 @samp{set language local} or @samp{set language auto}. @value{GDBN}
6899 then infers the working language. That is, when your program stops in a
6900 frame (usually by encountering a breakpoint), @value{GDBN} sets the
6901 working language to the language recorded for the function in that
6902 frame. If the language for a frame is unknown (that is, if the function
6903 or block corresponding to the frame was defined in a source file that
6904 does not have a recognized extension), the current working language is
6905 not changed, and @value{GDBN} issues a warning.
6906
6907 This may not seem necessary for most programs, which are written
6908 entirely in one source language. However, program modules and libraries
6909 written in one source language can be used by a main program written in
6910 a different source language. Using @samp{set language auto} in this
6911 case frees you from having to set the working language manually.
6912
6913 @node Show
6914 @section Displaying the language
6915
6916 The following commands help you find out which language is the
6917 working language, and also what language source files were written in.
6918
6919 @kindex show language
6920 @kindex info frame@r{, show the source language}
6921 @kindex info source@r{, show the source language}
6922 @table @code
6923 @item show language
6924 Display the current working language. This is the
6925 language you can use with commands such as @code{print} to
6926 build and compute expressions that may involve variables in your program.
6927
6928 @item info frame
6929 Display the source language for this frame. This language becomes the
6930 working language if you use an identifier from this frame.
6931 @xref{Frame Info, ,Information about a frame}, to identify the other
6932 information listed here.
6933
6934 @item info source
6935 Display the source language of this source file.
6936 @xref{Symbols, ,Examining the Symbol Table}, to identify the other
6937 information listed here.
6938 @end table
6939
6940 In unusual circumstances, you may have source files with extensions
6941 not in the standard list. You can then set the extension associated
6942 with a language explicitly:
6943
6944 @kindex set extension-language
6945 @kindex info extensions
6946 @table @code
6947 @item set extension-language @var{.ext} @var{language}
6948 Set source files with extension @var{.ext} to be assumed to be in
6949 the source language @var{language}.
6950
6951 @item info extensions
6952 List all the filename extensions and the associated languages.
6953 @end table
6954
6955 @node Checks
6956 @section Type and range checking
6957
6958 @quotation
6959 @emph{Warning:} In this release, the @value{GDBN} commands for type and range
6960 checking are included, but they do not yet have any effect. This
6961 section documents the intended facilities.
6962 @end quotation
6963 @c FIXME remove warning when type/range code added
6964
6965 Some languages are designed to guard you against making seemingly common
6966 errors through a series of compile- and run-time checks. These include
6967 checking the type of arguments to functions and operators, and making
6968 sure mathematical overflows are caught at run time. Checks such as
6969 these help to ensure a program's correctness once it has been compiled
6970 by eliminating type mismatches, and providing active checks for range
6971 errors when your program is running.
6972
6973 @value{GDBN} can check for conditions like the above if you wish.
6974 Although @value{GDBN} does not check the statements in your program, it
6975 can check expressions entered directly into @value{GDBN} for evaluation via
6976 the @code{print} command, for example. As with the working language,
6977 @value{GDBN} can also decide whether or not to check automatically based on
6978 your program's source language. @xref{Support, ,Supported languages},
6979 for the default settings of supported languages.
6980
6981 @menu
6982 * Type Checking:: An overview of type checking
6983 * Range Checking:: An overview of range checking
6984 @end menu
6985
6986 @cindex type checking
6987 @cindex checks, type
6988 @node Type Checking
6989 @subsection An overview of type checking
6990
6991 Some languages, such as Modula-2, are strongly typed, meaning that the
6992 arguments to operators and functions have to be of the correct type,
6993 otherwise an error occurs. These checks prevent type mismatch
6994 errors from ever causing any run-time problems. For example,
6995
6996 @smallexample
6997 1 + 2 @result{} 3
6998 @exdent but
6999 @error{} 1 + 2.3
7000 @end smallexample
7001
7002 The second example fails because the @code{CARDINAL} 1 is not
7003 type-compatible with the @code{REAL} 2.3.
7004
7005 For the expressions you use in @value{GDBN} commands, you can tell the
7006 @value{GDBN} type checker to skip checking;
7007 to treat any mismatches as errors and abandon the expression;
7008 or to only issue warnings when type mismatches occur,
7009 but evaluate the expression anyway. When you choose the last of
7010 these, @value{GDBN} evaluates expressions like the second example above, but
7011 also issues a warning.
7012
7013 Even if you turn type checking off, there may be other reasons
7014 related to type that prevent @value{GDBN} from evaluating an expression.
7015 For instance, @value{GDBN} does not know how to add an @code{int} and
7016 a @code{struct foo}. These particular type errors have nothing to do
7017 with the language in use, and usually arise from expressions, such as
7018 the one described above, which make little sense to evaluate anyway.
7019
7020 Each language defines to what degree it is strict about type. For
7021 instance, both Modula-2 and C require the arguments to arithmetical
7022 operators to be numbers. In C, enumerated types and pointers can be
7023 represented as numbers, so that they are valid arguments to mathematical
7024 operators. @xref{Support, ,Supported languages}, for further
7025 details on specific languages.
7026
7027 @value{GDBN} provides some additional commands for controlling the type checker:
7028
7029 @kindex set check@r{, type}
7030 @kindex set check type
7031 @kindex show check type
7032 @table @code
7033 @item set check type auto
7034 Set type checking on or off based on the current working language.
7035 @xref{Support, ,Supported languages}, for the default settings for
7036 each language.
7037
7038 @item set check type on
7039 @itemx set check type off
7040 Set type checking on or off, overriding the default setting for the
7041 current working language. Issue a warning if the setting does not
7042 match the language default. If any type mismatches occur in
7043 evaluating an expression while type checking is on, @value{GDBN} prints a
7044 message and aborts evaluation of the expression.
7045
7046 @item set check type warn
7047 Cause the type checker to issue warnings, but to always attempt to
7048 evaluate the expression. Evaluating the expression may still
7049 be impossible for other reasons. For example, @value{GDBN} cannot add
7050 numbers and structures.
7051
7052 @item show type
7053 Show the current setting of the type checker, and whether or not @value{GDBN}
7054 is setting it automatically.
7055 @end table
7056
7057 @cindex range checking
7058 @cindex checks, range
7059 @node Range Checking
7060 @subsection An overview of range checking
7061
7062 In some languages (such as Modula-2), it is an error to exceed the
7063 bounds of a type; this is enforced with run-time checks. Such range
7064 checking is meant to ensure program correctness by making sure
7065 computations do not overflow, or indices on an array element access do
7066 not exceed the bounds of the array.
7067
7068 For expressions you use in @value{GDBN} commands, you can tell
7069 @value{GDBN} to treat range errors in one of three ways: ignore them,
7070 always treat them as errors and abandon the expression, or issue
7071 warnings but evaluate the expression anyway.
7072
7073 A range error can result from numerical overflow, from exceeding an
7074 array index bound, or when you type a constant that is not a member
7075 of any type. Some languages, however, do not treat overflows as an
7076 error. In many implementations of C, mathematical overflow causes the
7077 result to ``wrap around'' to lower values---for example, if @var{m} is
7078 the largest integer value, and @var{s} is the smallest, then
7079
7080 @example
7081 @var{m} + 1 @result{} @var{s}
7082 @end example
7083
7084 This, too, is specific to individual languages, and in some cases
7085 specific to individual compilers or machines. @xref{Support, ,
7086 Supported languages}, for further details on specific languages.
7087
7088 @value{GDBN} provides some additional commands for controlling the range checker:
7089
7090 @kindex set check@r{, range}
7091 @kindex set check range
7092 @kindex show check range
7093 @table @code
7094 @item set check range auto
7095 Set range checking on or off based on the current working language.
7096 @xref{Support, ,Supported languages}, for the default settings for
7097 each language.
7098
7099 @item set check range on
7100 @itemx set check range off
7101 Set range checking on or off, overriding the default setting for the
7102 current working language. A warning is issued if the setting does not
7103 match the language default. If a range error occurs and range checking is on,
7104 then a message is printed and evaluation of the expression is aborted.
7105
7106 @item set check range warn
7107 Output messages when the @value{GDBN} range checker detects a range error,
7108 but attempt to evaluate the expression anyway. Evaluating the
7109 expression may still be impossible for other reasons, such as accessing
7110 memory that the process does not own (a typical example from many Unix
7111 systems).
7112
7113 @item show range
7114 Show the current setting of the range checker, and whether or not it is
7115 being set automatically by @value{GDBN}.
7116 @end table
7117
7118 @node Support
7119 @section Supported languages
7120
7121 @value{GDBN} supports C, C@t{++}, Fortran, Java, Chill, assembly, and Modula-2.
7122 @c This is false ...
7123 Some @value{GDBN} features may be used in expressions regardless of the
7124 language you use: the @value{GDBN} @code{@@} and @code{::} operators,
7125 and the @samp{@{type@}addr} construct (@pxref{Expressions,
7126 ,Expressions}) can be used with the constructs of any supported
7127 language.
7128
7129 The following sections detail to what degree each source language is
7130 supported by @value{GDBN}. These sections are not meant to be language
7131 tutorials or references, but serve only as a reference guide to what the
7132 @value{GDBN} expression parser accepts, and what input and output
7133 formats should look like for different languages. There are many good
7134 books written on each of these languages; please look to these for a
7135 language reference or tutorial.
7136
7137 @menu
7138 * C:: C and C@t{++}
7139 * Modula-2:: Modula-2
7140 * Chill:: Chill
7141 @end menu
7142
7143 @node C
7144 @subsection C and C@t{++}
7145
7146 @cindex C and C@t{++}
7147 @cindex expressions in C or C@t{++}
7148
7149 Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
7150 to both languages. Whenever this is the case, we discuss those languages
7151 together.
7152
7153 @cindex C@t{++}
7154 @cindex @code{g++}, @sc{gnu} C@t{++} compiler
7155 @cindex @sc{gnu} C@t{++}
7156 The C@t{++} debugging facilities are jointly implemented by the C@t{++}
7157 compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
7158 effectively, you must compile your C@t{++} programs with a supported
7159 C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
7160 compiler (@code{aCC}).
7161
7162 For best results when using @sc{gnu} C@t{++}, use the stabs debugging
7163 format. You can select that format explicitly with the @code{g++}
7164 command-line options @samp{-gstabs} or @samp{-gstabs+}. See
7165 @ref{Debugging Options,,Options for Debugging Your Program or @sc{gnu}
7166 CC, gcc.info, Using @sc{gnu} CC}, for more information.
7167
7168 @menu
7169 * C Operators:: C and C@t{++} operators
7170 * C Constants:: C and C@t{++} constants
7171 * C plus plus expressions:: C@t{++} expressions
7172 * C Defaults:: Default settings for C and C@t{++}
7173 * C Checks:: C and C@t{++} type and range checks
7174 * Debugging C:: @value{GDBN} and C
7175 * Debugging C plus plus:: @value{GDBN} features for C@t{++}
7176 @end menu
7177
7178 @node C Operators
7179 @subsubsection C and C@t{++} operators
7180
7181 @cindex C and C@t{++} operators
7182
7183 Operators must be defined on values of specific types. For instance,
7184 @code{+} is defined on numbers, but not on structures. Operators are
7185 often defined on groups of types.
7186
7187 For the purposes of C and C@t{++}, the following definitions hold:
7188
7189 @itemize @bullet
7190
7191 @item
7192 @emph{Integral types} include @code{int} with any of its storage-class
7193 specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
7194
7195 @item
7196 @emph{Floating-point types} include @code{float}, @code{double}, and
7197 @code{long double} (if supported by the target platform).
7198
7199 @item
7200 @emph{Pointer types} include all types defined as @code{(@var{type} *)}.
7201
7202 @item
7203 @emph{Scalar types} include all of the above.
7204
7205 @end itemize
7206
7207 @noindent
7208 The following operators are supported. They are listed here
7209 in order of increasing precedence:
7210
7211 @table @code
7212 @item ,
7213 The comma or sequencing operator. Expressions in a comma-separated list
7214 are evaluated from left to right, with the result of the entire
7215 expression being the last expression evaluated.
7216
7217 @item =
7218 Assignment. The value of an assignment expression is the value
7219 assigned. Defined on scalar types.
7220
7221 @item @var{op}=
7222 Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
7223 and translated to @w{@code{@var{a} = @var{a op b}}}.
7224 @w{@code{@var{op}=}} and @code{=} have the same precedence.
7225 @var{op} is any one of the operators @code{|}, @code{^}, @code{&},
7226 @code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
7227
7228 @item ?:
7229 The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
7230 of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
7231 integral type.
7232
7233 @item ||
7234 Logical @sc{or}. Defined on integral types.
7235
7236 @item &&
7237 Logical @sc{and}. Defined on integral types.
7238
7239 @item |
7240 Bitwise @sc{or}. Defined on integral types.
7241
7242 @item ^
7243 Bitwise exclusive-@sc{or}. Defined on integral types.
7244
7245 @item &
7246 Bitwise @sc{and}. Defined on integral types.
7247
7248 @item ==@r{, }!=
7249 Equality and inequality. Defined on scalar types. The value of these
7250 expressions is 0 for false and non-zero for true.
7251
7252 @item <@r{, }>@r{, }<=@r{, }>=
7253 Less than, greater than, less than or equal, greater than or equal.
7254 Defined on scalar types. The value of these expressions is 0 for false
7255 and non-zero for true.
7256
7257 @item <<@r{, }>>
7258 left shift, and right shift. Defined on integral types.
7259
7260 @item @@
7261 The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
7262
7263 @item +@r{, }-
7264 Addition and subtraction. Defined on integral types, floating-point types and
7265 pointer types.
7266
7267 @item *@r{, }/@r{, }%
7268 Multiplication, division, and modulus. Multiplication and division are
7269 defined on integral and floating-point types. Modulus is defined on
7270 integral types.
7271
7272 @item ++@r{, }--
7273 Increment and decrement. When appearing before a variable, the
7274 operation is performed before the variable is used in an expression;
7275 when appearing after it, the variable's value is used before the
7276 operation takes place.
7277
7278 @item *
7279 Pointer dereferencing. Defined on pointer types. Same precedence as
7280 @code{++}.
7281
7282 @item &
7283 Address operator. Defined on variables. Same precedence as @code{++}.
7284
7285 For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
7286 allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
7287 (or, if you prefer, simply @samp{&&@var{ref}}) to examine the address
7288 where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
7289 stored.
7290
7291 @item -
7292 Negative. Defined on integral and floating-point types. Same
7293 precedence as @code{++}.
7294
7295 @item !
7296 Logical negation. Defined on integral types. Same precedence as
7297 @code{++}.
7298
7299 @item ~
7300 Bitwise complement operator. Defined on integral types. Same precedence as
7301 @code{++}.
7302
7303
7304 @item .@r{, }->
7305 Structure member, and pointer-to-structure member. For convenience,
7306 @value{GDBN} regards the two as equivalent, choosing whether to dereference a
7307 pointer based on the stored type information.
7308 Defined on @code{struct} and @code{union} data.
7309
7310 @item .*@r{, }->*
7311 Dereferences of pointers to members.
7312
7313 @item []
7314 Array indexing. @code{@var{a}[@var{i}]} is defined as
7315 @code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
7316
7317 @item ()
7318 Function parameter list. Same precedence as @code{->}.
7319
7320 @item ::
7321 C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7322 and @code{class} types.
7323
7324 @item ::
7325 Doubled colons also represent the @value{GDBN} scope operator
7326 (@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
7327 above.
7328 @end table
7329
7330 If an operator is redefined in the user code, @value{GDBN} usually
7331 attempts to invoke the redefined version instead of using the operator's
7332 predefined meaning.
7333
7334 @menu
7335 * C Constants::
7336 @end menu
7337
7338 @node C Constants
7339 @subsubsection C and C@t{++} constants
7340
7341 @cindex C and C@t{++} constants
7342
7343 @value{GDBN} allows you to express the constants of C and C@t{++} in the
7344 following ways:
7345
7346 @itemize @bullet
7347 @item
7348 Integer constants are a sequence of digits. Octal constants are
7349 specified by a leading @samp{0} (i.e. zero), and hexadecimal constants by
7350 a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
7351 @samp{l}, specifying that the constant should be treated as a
7352 @code{long} value.
7353
7354 @item
7355 Floating point constants are a sequence of digits, followed by a decimal
7356 point, followed by a sequence of digits, and optionally followed by an
7357 exponent. An exponent is of the form:
7358 @samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
7359 sequence of digits. The @samp{+} is optional for positive exponents.
7360 A floating-point constant may also end with a letter @samp{f} or
7361 @samp{F}, specifying that the constant should be treated as being of
7362 the @code{float} (as opposed to the default @code{double}) type; or with
7363 a letter @samp{l} or @samp{L}, which specifies a @code{long double}
7364 constant.
7365
7366 @item
7367 Enumerated constants consist of enumerated identifiers, or their
7368 integral equivalents.
7369
7370 @item
7371 Character constants are a single character surrounded by single quotes
7372 (@code{'}), or a number---the ordinal value of the corresponding character
7373 (usually its @sc{ascii} value). Within quotes, the single character may
7374 be represented by a letter or by @dfn{escape sequences}, which are of
7375 the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
7376 of the character's ordinal value; or of the form @samp{\@var{x}}, where
7377 @samp{@var{x}} is a predefined special character---for example,
7378 @samp{\n} for newline.
7379
7380 @item
7381 String constants are a sequence of character constants surrounded by
7382 double quotes (@code{"}). Any valid character constant (as described
7383 above) may appear. Double quotes within the string must be preceded by
7384 a backslash, so for instance @samp{"a\"b'c"} is a string of five
7385 characters.
7386
7387 @item
7388 Pointer constants are an integral value. You can also write pointers
7389 to constants using the C operator @samp{&}.
7390
7391 @item
7392 Array constants are comma-separated lists surrounded by braces @samp{@{}
7393 and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
7394 integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
7395 and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
7396 @end itemize
7397
7398 @menu
7399 * C plus plus expressions::
7400 * C Defaults::
7401 * C Checks::
7402
7403 * Debugging C::
7404 @end menu
7405
7406 @node C plus plus expressions
7407 @subsubsection C@t{++} expressions
7408
7409 @cindex expressions in C@t{++}
7410 @value{GDBN} expression handling can interpret most C@t{++} expressions.
7411
7412 @cindex C@t{++} support, not in @sc{coff}
7413 @cindex @sc{coff} versus C@t{++}
7414 @cindex C@t{++} and object formats
7415 @cindex object formats and C@t{++}
7416 @cindex a.out and C@t{++}
7417 @cindex @sc{ecoff} and C@t{++}
7418 @cindex @sc{xcoff} and C@t{++}
7419 @cindex @sc{elf}/stabs and C@t{++}
7420 @cindex @sc{elf}/@sc{dwarf} and C@t{++}
7421 @c FIXME!! GDB may eventually be able to debug C++ using DWARF; check
7422 @c periodically whether this has happened...
7423 @quotation
7424 @emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use the
7425 proper compiler. Typically, C@t{++} debugging depends on the use of
7426 additional debugging information in the symbol table, and thus requires
7427 special support. In particular, if your compiler generates a.out, MIPS
7428 @sc{ecoff}, RS/6000 @sc{xcoff}, or @sc{elf} with stabs extensions to the
7429 symbol table, these facilities are all available. (With @sc{gnu} CC,
7430 you can use the @samp{-gstabs} option to request stabs debugging
7431 extensions explicitly.) Where the object code format is standard
7432 @sc{coff} or @sc{dwarf} in @sc{elf}, on the other hand, most of the C@t{++}
7433 support in @value{GDBN} does @emph{not} work.
7434 @end quotation
7435
7436 @enumerate
7437
7438 @cindex member functions
7439 @item
7440 Member function calls are allowed; you can use expressions like
7441
7442 @example
7443 count = aml->GetOriginal(x, y)
7444 @end example
7445
7446 @vindex this@r{, inside C@t{++} member functions}
7447 @cindex namespace in C@t{++}
7448 @item
7449 While a member function is active (in the selected stack frame), your
7450 expressions have the same namespace available as the member function;
7451 that is, @value{GDBN} allows implicit references to the class instance
7452 pointer @code{this} following the same rules as C@t{++}.
7453
7454 @cindex call overloaded functions
7455 @cindex overloaded functions, calling
7456 @cindex type conversions in C@t{++}
7457 @item
7458 You can call overloaded functions; @value{GDBN} resolves the function
7459 call to the right definition, with some restrictions. @value{GDBN} does not
7460 perform overload resolution involving user-defined type conversions,
7461 calls to constructors, or instantiations of templates that do not exist
7462 in the program. It also cannot handle ellipsis argument lists or
7463 default arguments.
7464
7465 It does perform integral conversions and promotions, floating-point
7466 promotions, arithmetic conversions, pointer conversions, conversions of
7467 class objects to base classes, and standard conversions such as those of
7468 functions or arrays to pointers; it requires an exact match on the
7469 number of function arguments.
7470
7471 Overload resolution is always performed, unless you have specified
7472 @code{set overload-resolution off}. @xref{Debugging C plus plus,
7473 ,@value{GDBN} features for C@t{++}}.
7474
7475 You must specify @code{set overload-resolution off} in order to use an
7476 explicit function signature to call an overloaded function, as in
7477 @smallexample
7478 p 'foo(char,int)'('x', 13)
7479 @end smallexample
7480
7481 The @value{GDBN} command-completion facility can simplify this;
7482 see @ref{Completion, ,Command completion}.
7483
7484 @cindex reference declarations
7485 @item
7486 @value{GDBN} understands variables declared as C@t{++} references; you can use
7487 them in expressions just as you do in C@t{++} source---they are automatically
7488 dereferenced.
7489
7490 In the parameter list shown when @value{GDBN} displays a frame, the values of
7491 reference variables are not displayed (unlike other variables); this
7492 avoids clutter, since references are often used for large structures.
7493 The @emph{address} of a reference variable is always shown, unless
7494 you have specified @samp{set print address off}.
7495
7496 @item
7497 @value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
7498 expressions can use it just as expressions in your program do. Since
7499 one scope may be defined in another, you can use @code{::} repeatedly if
7500 necessary, for example in an expression like
7501 @samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
7502 resolving name scope by reference to source files, in both C and C@t{++}
7503 debugging (@pxref{Variables, ,Program variables}).
7504 @end enumerate
7505
7506 In addition, when used with HP's C@t{++} compiler, @value{GDBN} supports
7507 calling virtual functions correctly, printing out virtual bases of
7508 objects, calling functions in a base subobject, casting objects, and
7509 invoking user-defined operators.
7510
7511 @node C Defaults
7512 @subsubsection C and C@t{++} defaults
7513
7514 @cindex C and C@t{++} defaults
7515
7516 If you allow @value{GDBN} to set type and range checking automatically, they
7517 both default to @code{off} whenever the working language changes to
7518 C or C@t{++}. This happens regardless of whether you or @value{GDBN}
7519 selects the working language.
7520
7521 If you allow @value{GDBN} to set the language automatically, it
7522 recognizes source files whose names end with @file{.c}, @file{.C}, or
7523 @file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
7524 these files, it sets the working language to C or C@t{++}.
7525 @xref{Automatically, ,Having @value{GDBN} infer the source language},
7526 for further details.
7527
7528 @c Type checking is (a) primarily motivated by Modula-2, and (b)
7529 @c unimplemented. If (b) changes, it might make sense to let this node
7530 @c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7531
7532 @node C Checks
7533 @subsubsection C and C@t{++} type and range checks
7534
7535 @cindex C and C@t{++} checks
7536
7537 By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
7538 is not used. However, if you turn type checking on, @value{GDBN}
7539 considers two variables type equivalent if:
7540
7541 @itemize @bullet
7542 @item
7543 The two variables are structured and have the same structure, union, or
7544 enumerated tag.
7545
7546 @item
7547 The two variables have the same type name, or types that have been
7548 declared equivalent through @code{typedef}.
7549
7550 @ignore
7551 @c leaving this out because neither J Gilmore nor R Pesch understand it.
7552 @c FIXME--beers?
7553 @item
7554 The two @code{struct}, @code{union}, or @code{enum} variables are
7555 declared in the same declaration. (Note: this may not be true for all C
7556 compilers.)
7557 @end ignore
7558 @end itemize
7559
7560 Range checking, if turned on, is done on mathematical operations. Array
7561 indices are not checked, since they are often used to index a pointer
7562 that is not itself an array.
7563
7564 @node Debugging C
7565 @subsubsection @value{GDBN} and C
7566
7567 The @code{set print union} and @code{show print union} commands apply to
7568 the @code{union} type. When set to @samp{on}, any @code{union} that is
7569 inside a @code{struct} or @code{class} is also printed. Otherwise, it
7570 appears as @samp{@{...@}}.
7571
7572 The @code{@@} operator aids in the debugging of dynamic arrays, formed
7573 with pointers and a memory allocation function. @xref{Expressions,
7574 ,Expressions}.
7575
7576 @menu
7577 * Debugging C plus plus::
7578 @end menu
7579
7580 @node Debugging C plus plus
7581 @subsubsection @value{GDBN} features for C@t{++}
7582
7583 @cindex commands for C@t{++}
7584
7585 Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
7586 designed specifically for use with C@t{++}. Here is a summary:
7587
7588 @table @code
7589 @cindex break in overloaded functions
7590 @item @r{breakpoint menus}
7591 When you want a breakpoint in a function whose name is overloaded,
7592 @value{GDBN} breakpoint menus help you specify which function definition
7593 you want. @xref{Breakpoint Menus,,Breakpoint menus}.
7594
7595 @cindex overloading in C@t{++}
7596 @item rbreak @var{regex}
7597 Setting breakpoints using regular expressions is helpful for setting
7598 breakpoints on overloaded functions that are not members of any special
7599 classes.
7600 @xref{Set Breaks, ,Setting breakpoints}.
7601
7602 @cindex C@t{++} exception handling
7603 @item catch throw
7604 @itemx catch catch
7605 Debug C@t{++} exception handling using these commands. @xref{Set
7606 Catchpoints, , Setting catchpoints}.
7607
7608 @cindex inheritance
7609 @item ptype @var{typename}
7610 Print inheritance relationships as well as other information for type
7611 @var{typename}.
7612 @xref{Symbols, ,Examining the Symbol Table}.
7613
7614 @cindex C@t{++} symbol display
7615 @item set print demangle
7616 @itemx show print demangle
7617 @itemx set print asm-demangle
7618 @itemx show print asm-demangle
7619 Control whether C@t{++} symbols display in their source form, both when
7620 displaying code as C@t{++} source and when displaying disassemblies.
7621 @xref{Print Settings, ,Print settings}.
7622
7623 @item set print object
7624 @itemx show print object
7625 Choose whether to print derived (actual) or declared types of objects.
7626 @xref{Print Settings, ,Print settings}.
7627
7628 @item set print vtbl
7629 @itemx show print vtbl
7630 Control the format for printing virtual function tables.
7631 @xref{Print Settings, ,Print settings}.
7632 (The @code{vtbl} commands do not work on programs compiled with the HP
7633 ANSI C@t{++} compiler (@code{aCC}).)
7634
7635 @kindex set overload-resolution
7636 @cindex overloaded functions, overload resolution
7637 @item set overload-resolution on
7638 Enable overload resolution for C@t{++} expression evaluation. The default
7639 is on. For overloaded functions, @value{GDBN} evaluates the arguments
7640 and searches for a function whose signature matches the argument types,
7641 using the standard C@t{++} conversion rules (see @ref{C plus plus expressions, ,C@t{++}
7642 expressions}, for details). If it cannot find a match, it emits a
7643 message.
7644
7645 @item set overload-resolution off
7646 Disable overload resolution for C@t{++} expression evaluation. For
7647 overloaded functions that are not class member functions, @value{GDBN}
7648 chooses the first function of the specified name that it finds in the
7649 symbol table, whether or not its arguments are of the correct type. For
7650 overloaded functions that are class member functions, @value{GDBN}
7651 searches for a function whose signature @emph{exactly} matches the
7652 argument types.
7653
7654 @item @r{Overloaded symbol names}
7655 You can specify a particular definition of an overloaded symbol, using
7656 the same notation that is used to declare such symbols in C@t{++}: type
7657 @code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
7658 also use the @value{GDBN} command-line word completion facilities to list the
7659 available choices, or to finish the type list for you.
7660 @xref{Completion,, Command completion}, for details on how to do this.
7661 @end table
7662
7663 @node Modula-2
7664 @subsection Modula-2
7665
7666 @cindex Modula-2, @value{GDBN} support
7667
7668 The extensions made to @value{GDBN} to support Modula-2 only support
7669 output from the @sc{gnu} Modula-2 compiler (which is currently being
7670 developed). Other Modula-2 compilers are not currently supported, and
7671 attempting to debug executables produced by them is most likely
7672 to give an error as @value{GDBN} reads in the executable's symbol
7673 table.
7674
7675 @cindex expressions in Modula-2
7676 @menu
7677 * M2 Operators:: Built-in operators
7678 * Built-In Func/Proc:: Built-in functions and procedures
7679 * M2 Constants:: Modula-2 constants
7680 * M2 Defaults:: Default settings for Modula-2
7681 * Deviations:: Deviations from standard Modula-2
7682 * M2 Checks:: Modula-2 type and range checks
7683 * M2 Scope:: The scope operators @code{::} and @code{.}
7684 * GDB/M2:: @value{GDBN} and Modula-2
7685 @end menu
7686
7687 @node M2 Operators
7688 @subsubsection Operators
7689 @cindex Modula-2 operators
7690
7691 Operators must be defined on values of specific types. For instance,
7692 @code{+} is defined on numbers, but not on structures. Operators are
7693 often defined on groups of types. For the purposes of Modula-2, the
7694 following definitions hold:
7695
7696 @itemize @bullet
7697
7698 @item
7699 @emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
7700 their subranges.
7701
7702 @item
7703 @emph{Character types} consist of @code{CHAR} and its subranges.
7704
7705 @item
7706 @emph{Floating-point types} consist of @code{REAL}.
7707
7708 @item
7709 @emph{Pointer types} consist of anything declared as @code{POINTER TO
7710 @var{type}}.
7711
7712 @item
7713 @emph{Scalar types} consist of all of the above.
7714
7715 @item
7716 @emph{Set types} consist of @code{SET} and @code{BITSET} types.
7717
7718 @item
7719 @emph{Boolean types} consist of @code{BOOLEAN}.
7720 @end itemize
7721
7722 @noindent
7723 The following operators are supported, and appear in order of
7724 increasing precedence:
7725
7726 @table @code
7727 @item ,
7728 Function argument or array index separator.
7729
7730 @item :=
7731 Assignment. The value of @var{var} @code{:=} @var{value} is
7732 @var{value}.
7733
7734 @item <@r{, }>
7735 Less than, greater than on integral, floating-point, or enumerated
7736 types.
7737
7738 @item <=@r{, }>=
7739 Less than or equal to, greater than or equal to
7740 on integral, floating-point and enumerated types, or set inclusion on
7741 set types. Same precedence as @code{<}.
7742
7743 @item =@r{, }<>@r{, }#
7744 Equality and two ways of expressing inequality, valid on scalar types.
7745 Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
7746 available for inequality, since @code{#} conflicts with the script
7747 comment character.
7748
7749 @item IN
7750 Set membership. Defined on set types and the types of their members.
7751 Same precedence as @code{<}.
7752
7753 @item OR
7754 Boolean disjunction. Defined on boolean types.
7755
7756 @item AND@r{, }&
7757 Boolean conjunction. Defined on boolean types.
7758
7759 @item @@
7760 The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
7761
7762 @item +@r{, }-
7763 Addition and subtraction on integral and floating-point types, or union
7764 and difference on set types.
7765
7766 @item *
7767 Multiplication on integral and floating-point types, or set intersection
7768 on set types.
7769
7770 @item /
7771 Division on floating-point types, or symmetric set difference on set
7772 types. Same precedence as @code{*}.
7773
7774 @item DIV@r{, }MOD
7775 Integer division and remainder. Defined on integral types. Same
7776 precedence as @code{*}.
7777
7778 @item -
7779 Negative. Defined on @code{INTEGER} and @code{REAL} data.
7780
7781 @item ^
7782 Pointer dereferencing. Defined on pointer types.
7783
7784 @item NOT
7785 Boolean negation. Defined on boolean types. Same precedence as
7786 @code{^}.
7787
7788 @item .
7789 @code{RECORD} field selector. Defined on @code{RECORD} data. Same
7790 precedence as @code{^}.
7791
7792 @item []
7793 Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
7794
7795 @item ()
7796 Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
7797 as @code{^}.
7798
7799 @item ::@r{, }.
7800 @value{GDBN} and Modula-2 scope operators.
7801 @end table
7802
7803 @quotation
7804 @emph{Warning:} Sets and their operations are not yet supported, so @value{GDBN}
7805 treats the use of the operator @code{IN}, or the use of operators
7806 @code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
7807 @code{<=}, and @code{>=} on sets as an error.
7808 @end quotation
7809
7810
7811 @node Built-In Func/Proc
7812 @subsubsection Built-in functions and procedures
7813 @cindex Modula-2 built-ins
7814
7815 Modula-2 also makes available several built-in procedures and functions.
7816 In describing these, the following metavariables are used:
7817
7818 @table @var
7819
7820 @item a
7821 represents an @code{ARRAY} variable.
7822
7823 @item c
7824 represents a @code{CHAR} constant or variable.
7825
7826 @item i
7827 represents a variable or constant of integral type.
7828
7829 @item m
7830 represents an identifier that belongs to a set. Generally used in the
7831 same function with the metavariable @var{s}. The type of @var{s} should
7832 be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
7833
7834 @item n
7835 represents a variable or constant of integral or floating-point type.
7836
7837 @item r
7838 represents a variable or constant of floating-point type.
7839
7840 @item t
7841 represents a type.
7842
7843 @item v
7844 represents a variable.
7845
7846 @item x
7847 represents a variable or constant of one of many types. See the
7848 explanation of the function for details.
7849 @end table
7850
7851 All Modula-2 built-in procedures also return a result, described below.
7852
7853 @table @code
7854 @item ABS(@var{n})
7855 Returns the absolute value of @var{n}.
7856
7857 @item CAP(@var{c})
7858 If @var{c} is a lower case letter, it returns its upper case
7859 equivalent, otherwise it returns its argument.
7860
7861 @item CHR(@var{i})
7862 Returns the character whose ordinal value is @var{i}.
7863
7864 @item DEC(@var{v})
7865 Decrements the value in the variable @var{v} by one. Returns the new value.
7866
7867 @item DEC(@var{v},@var{i})
7868 Decrements the value in the variable @var{v} by @var{i}. Returns the
7869 new value.
7870
7871 @item EXCL(@var{m},@var{s})
7872 Removes the element @var{m} from the set @var{s}. Returns the new
7873 set.
7874
7875 @item FLOAT(@var{i})
7876 Returns the floating point equivalent of the integer @var{i}.
7877
7878 @item HIGH(@var{a})
7879 Returns the index of the last member of @var{a}.
7880
7881 @item INC(@var{v})
7882 Increments the value in the variable @var{v} by one. Returns the new value.
7883
7884 @item INC(@var{v},@var{i})
7885 Increments the value in the variable @var{v} by @var{i}. Returns the
7886 new value.
7887
7888 @item INCL(@var{m},@var{s})
7889 Adds the element @var{m} to the set @var{s} if it is not already
7890 there. Returns the new set.
7891
7892 @item MAX(@var{t})
7893 Returns the maximum value of the type @var{t}.
7894
7895 @item MIN(@var{t})
7896 Returns the minimum value of the type @var{t}.
7897
7898 @item ODD(@var{i})
7899 Returns boolean TRUE if @var{i} is an odd number.
7900
7901 @item ORD(@var{x})
7902 Returns the ordinal value of its argument. For example, the ordinal
7903 value of a character is its @sc{ascii} value (on machines supporting the
7904 @sc{ascii} character set). @var{x} must be of an ordered type, which include
7905 integral, character and enumerated types.
7906
7907 @item SIZE(@var{x})
7908 Returns the size of its argument. @var{x} can be a variable or a type.
7909
7910 @item TRUNC(@var{r})
7911 Returns the integral part of @var{r}.
7912
7913 @item VAL(@var{t},@var{i})
7914 Returns the member of the type @var{t} whose ordinal value is @var{i}.
7915 @end table
7916
7917 @quotation
7918 @emph{Warning:} Sets and their operations are not yet supported, so
7919 @value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
7920 an error.
7921 @end quotation
7922
7923 @cindex Modula-2 constants
7924 @node M2 Constants
7925 @subsubsection Constants
7926
7927 @value{GDBN} allows you to express the constants of Modula-2 in the following
7928 ways:
7929
7930 @itemize @bullet
7931
7932 @item
7933 Integer constants are simply a sequence of digits. When used in an
7934 expression, a constant is interpreted to be type-compatible with the
7935 rest of the expression. Hexadecimal integers are specified by a
7936 trailing @samp{H}, and octal integers by a trailing @samp{B}.
7937
7938 @item
7939 Floating point constants appear as a sequence of digits, followed by a
7940 decimal point and another sequence of digits. An optional exponent can
7941 then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
7942 @samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
7943 digits of the floating point constant must be valid decimal (base 10)
7944 digits.
7945
7946 @item
7947 Character constants consist of a single character enclosed by a pair of
7948 like quotes, either single (@code{'}) or double (@code{"}). They may
7949 also be expressed by their ordinal value (their @sc{ascii} value, usually)
7950 followed by a @samp{C}.
7951
7952 @item
7953 String constants consist of a sequence of characters enclosed by a
7954 pair of like quotes, either single (@code{'}) or double (@code{"}).
7955 Escape sequences in the style of C are also allowed. @xref{C
7956 Constants, ,C and C@t{++} constants}, for a brief explanation of escape
7957 sequences.
7958
7959 @item
7960 Enumerated constants consist of an enumerated identifier.
7961
7962 @item
7963 Boolean constants consist of the identifiers @code{TRUE} and
7964 @code{FALSE}.
7965
7966 @item
7967 Pointer constants consist of integral values only.
7968
7969 @item
7970 Set constants are not yet supported.
7971 @end itemize
7972
7973 @node M2 Defaults
7974 @subsubsection Modula-2 defaults
7975 @cindex Modula-2 defaults
7976
7977 If type and range checking are set automatically by @value{GDBN}, they
7978 both default to @code{on} whenever the working language changes to
7979 Modula-2. This happens regardless of whether you or @value{GDBN}
7980 selected the working language.
7981
7982 If you allow @value{GDBN} to set the language automatically, then entering
7983 code compiled from a file whose name ends with @file{.mod} sets the
7984 working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} set
7985 the language automatically}, for further details.
7986
7987 @node Deviations
7988 @subsubsection Deviations from standard Modula-2
7989 @cindex Modula-2, deviations from
7990
7991 A few changes have been made to make Modula-2 programs easier to debug.
7992 This is done primarily via loosening its type strictness:
7993
7994 @itemize @bullet
7995 @item
7996 Unlike in standard Modula-2, pointer constants can be formed by
7997 integers. This allows you to modify pointer variables during
7998 debugging. (In standard Modula-2, the actual address contained in a
7999 pointer variable is hidden from you; it can only be modified
8000 through direct assignment to another pointer variable or expression that
8001 returned a pointer.)
8002
8003 @item
8004 C escape sequences can be used in strings and characters to represent
8005 non-printable characters. @value{GDBN} prints out strings with these
8006 escape sequences embedded. Single non-printable characters are
8007 printed using the @samp{CHR(@var{nnn})} format.
8008
8009 @item
8010 The assignment operator (@code{:=}) returns the value of its right-hand
8011 argument.
8012
8013 @item
8014 All built-in procedures both modify @emph{and} return their argument.
8015 @end itemize
8016
8017 @node M2 Checks
8018 @subsubsection Modula-2 type and range checks
8019 @cindex Modula-2 checks
8020
8021 @quotation
8022 @emph{Warning:} in this release, @value{GDBN} does not yet perform type or
8023 range checking.
8024 @end quotation
8025 @c FIXME remove warning when type/range checks added
8026
8027 @value{GDBN} considers two Modula-2 variables type equivalent if:
8028
8029 @itemize @bullet
8030 @item
8031 They are of types that have been declared equivalent via a @code{TYPE
8032 @var{t1} = @var{t2}} statement
8033
8034 @item
8035 They have been declared on the same line. (Note: This is true of the
8036 @sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
8037 @end itemize
8038
8039 As long as type checking is enabled, any attempt to combine variables
8040 whose types are not equivalent is an error.
8041
8042 Range checking is done on all mathematical operations, assignment, array
8043 index bounds, and all built-in functions and procedures.
8044
8045 @node M2 Scope
8046 @subsubsection The scope operators @code{::} and @code{.}
8047 @cindex scope
8048 @cindex @code{.}, Modula-2 scope operator
8049 @cindex colon, doubled as scope operator
8050 @ifinfo
8051 @vindex colon-colon@r{, in Modula-2}
8052 @c Info cannot handle :: but TeX can.
8053 @end ifinfo
8054 @iftex
8055 @vindex ::@r{, in Modula-2}
8056 @end iftex
8057
8058 There are a few subtle differences between the Modula-2 scope operator
8059 (@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
8060 similar syntax:
8061
8062 @example
8063
8064 @var{module} . @var{id}
8065 @var{scope} :: @var{id}
8066 @end example
8067
8068 @noindent
8069 where @var{scope} is the name of a module or a procedure,
8070 @var{module} the name of a module, and @var{id} is any declared
8071 identifier within your program, except another module.
8072
8073 Using the @code{::} operator makes @value{GDBN} search the scope
8074 specified by @var{scope} for the identifier @var{id}. If it is not
8075 found in the specified scope, then @value{GDBN} searches all scopes
8076 enclosing the one specified by @var{scope}.
8077
8078 Using the @code{.} operator makes @value{GDBN} search the current scope for
8079 the identifier specified by @var{id} that was imported from the
8080 definition module specified by @var{module}. With this operator, it is
8081 an error if the identifier @var{id} was not imported from definition
8082 module @var{module}, or if @var{id} is not an identifier in
8083 @var{module}.
8084
8085 @node GDB/M2
8086 @subsubsection @value{GDBN} and Modula-2
8087
8088 Some @value{GDBN} commands have little use when debugging Modula-2 programs.
8089 Five subcommands of @code{set print} and @code{show print} apply
8090 specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
8091 @samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
8092 apply to C@t{++}, and the last to the C @code{union} type, which has no direct
8093 analogue in Modula-2.
8094
8095 The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
8096 with any language, is not useful with Modula-2. Its
8097 intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
8098 created in Modula-2 as they can in C or C@t{++}. However, because an
8099 address can be specified by an integral constant, the construct
8100 @samp{@{@var{type}@}@var{adrexp}} is still useful.
8101
8102 @cindex @code{#} in Modula-2
8103 In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
8104 interpreted as the beginning of a comment. Use @code{<>} instead.
8105
8106 @node Chill
8107 @subsection Chill
8108
8109 The extensions made to @value{GDBN} to support Chill only support output
8110 from the @sc{gnu} Chill compiler. Other Chill compilers are not currently
8111 supported, and attempting to debug executables produced by them is most
8112 likely to give an error as @value{GDBN} reads in the executable's symbol
8113 table.
8114
8115 @c This used to say "... following Chill related topics ...", but since
8116 @c menus are not shown in the printed manual, it would look awkward.
8117 This section covers the Chill related topics and the features
8118 of @value{GDBN} which support these topics.
8119
8120 @menu
8121 * How modes are displayed:: How modes are displayed
8122 * Locations:: Locations and their accesses
8123 * Values and their Operations:: Values and their Operations
8124 * Chill type and range checks::
8125 * Chill defaults::
8126 @end menu
8127
8128 @node How modes are displayed
8129 @subsubsection How modes are displayed
8130
8131 The Chill Datatype- (Mode) support of @value{GDBN} is directly related
8132 with the functionality of the @sc{gnu} Chill compiler, and therefore deviates
8133 slightly from the standard specification of the Chill language. The
8134 provided modes are:
8135
8136 @c FIXME: this @table's contents effectively disable @code by using @r
8137 @c on every @item. So why does it need @code?
8138 @table @code
8139 @item @r{@emph{Discrete modes:}}
8140 @itemize @bullet
8141 @item
8142 @emph{Integer Modes} which are predefined by @code{BYTE, UBYTE, INT,
8143 UINT, LONG, ULONG},
8144 @item
8145 @emph{Boolean Mode} which is predefined by @code{BOOL},
8146 @item
8147 @emph{Character Mode} which is predefined by @code{CHAR},
8148 @item
8149 @emph{Set Mode} which is displayed by the keyword @code{SET}.
8150 @smallexample
8151 (@value{GDBP}) ptype x
8152 type = SET (karli = 10, susi = 20, fritzi = 100)
8153 @end smallexample
8154 If the type is an unnumbered set the set element values are omitted.
8155 @item
8156 @emph{Range Mode} which is displayed by
8157 @smallexample
8158 @code{type = <basemode>(<lower bound> : <upper bound>)}
8159 @end smallexample
8160 where @code{<lower bound>, <upper bound>} can be of any discrete literal
8161 expression (e.g. set element names).
8162 @end itemize
8163
8164 @item @r{@emph{Powerset Mode:}}
8165 A Powerset Mode is displayed by the keyword @code{POWERSET} followed by
8166 the member mode of the powerset. The member mode can be any discrete mode.
8167 @smallexample
8168 (@value{GDBP}) ptype x
8169 type = POWERSET SET (egon, hugo, otto)
8170 @end smallexample
8171
8172 @item @r{@emph{Reference Modes:}}
8173 @itemize @bullet
8174 @item
8175 @emph{Bound Reference Mode} which is displayed by the keyword @code{REF}
8176 followed by the mode name to which the reference is bound.
8177 @item
8178 @emph{Free Reference Mode} which is displayed by the keyword @code{PTR}.
8179 @end itemize
8180
8181 @item @r{@emph{Procedure mode}}
8182 The procedure mode is displayed by @code{type = PROC(<parameter list>)
8183 <return mode> EXCEPTIONS (<exception list>)}. The @code{<parameter
8184 list>} is a list of the parameter modes. @code{<return mode>} indicates
8185 the mode of the result of the procedure if any. The exceptionlist lists
8186 all possible exceptions which can be raised by the procedure.
8187
8188 @ignore
8189 @item @r{@emph{Instance mode}}
8190 The instance mode is represented by a structure, which has a static
8191 type, and is therefore not really of interest.
8192 @end ignore
8193
8194 @item @r{@emph{Synchronization Modes:}}
8195 @itemize @bullet
8196 @item
8197 @emph{Event Mode} which is displayed by
8198 @smallexample
8199 @code{EVENT (<event length>)}
8200 @end smallexample
8201 where @code{(<event length>)} is optional.
8202 @item
8203 @emph{Buffer Mode} which is displayed by
8204 @smallexample
8205 @code{BUFFER (<buffer length>)<buffer element mode>}
8206 @end smallexample
8207 where @code{(<buffer length>)} is optional.
8208 @end itemize
8209
8210 @item @r{@emph{Timing Modes:}}
8211 @itemize @bullet
8212 @item
8213 @emph{Duration Mode} which is predefined by @code{DURATION}
8214 @item
8215 @emph{Absolute Time Mode} which is predefined by @code{TIME}
8216 @end itemize
8217
8218 @item @r{@emph{Real Modes:}}
8219 Real Modes are predefined with @code{REAL} and @code{LONG_REAL}.
8220
8221 @item @r{@emph{String Modes:}}
8222 @itemize @bullet
8223 @item
8224 @emph{Character String Mode} which is displayed by
8225 @smallexample
8226 @code{CHARS(<string length>)}
8227 @end smallexample
8228 followed by the keyword @code{VARYING} if the String Mode is a varying
8229 mode
8230 @item
8231 @emph{Bit String Mode} which is displayed by
8232 @smallexample
8233 @code{BOOLS(<string
8234 length>)}
8235 @end smallexample
8236 @end itemize
8237
8238 @item @r{@emph{Array Mode:}}
8239 The Array Mode is displayed by the keyword @code{ARRAY(<range>)}
8240 followed by the element mode (which may in turn be an array mode).
8241 @smallexample
8242 (@value{GDBP}) ptype x
8243 type = ARRAY (1:42)
8244 ARRAY (1:20)
8245 SET (karli = 10, susi = 20, fritzi = 100)
8246 @end smallexample
8247
8248 @item @r{@emph{Structure Mode}}
8249 The Structure mode is displayed by the keyword @code{STRUCT(<field
8250 list>)}. The @code{<field list>} consists of names and modes of fields
8251 of the structure. Variant structures have the keyword @code{CASE <field>
8252 OF <variant fields> ESAC} in their field list. Since the current version
8253 of the GNU Chill compiler doesn't implement tag processing (no runtime
8254 checks of variant fields, and therefore no debugging info), the output
8255 always displays all variant fields.
8256 @smallexample
8257 (@value{GDBP}) ptype str
8258 type = STRUCT (
8259 as x,
8260 bs x,
8261 CASE bs OF
8262 (karli):
8263 cs a
8264 (ott):
8265 ds x
8266 ESAC
8267 )
8268 @end smallexample
8269 @end table
8270
8271 @node Locations
8272 @subsubsection Locations and their accesses
8273
8274 A location in Chill is an object which can contain values.
8275
8276 A value of a location is generally accessed by the (declared) name of
8277 the location. The output conforms to the specification of values in
8278 Chill programs. How values are specified
8279 is the topic of the next section, @ref{Values and their Operations}.
8280
8281 The pseudo-location @code{RESULT} (or @code{result}) can be used to
8282 display or change the result of a currently-active procedure:
8283
8284 @smallexample
8285 set result := EXPR
8286 @end smallexample
8287
8288 @noindent
8289 This does the same as the Chill action @code{RESULT EXPR} (which
8290 is not available in @value{GDBN}).
8291
8292 Values of reference mode locations are printed by @code{PTR(<hex
8293 value>)} in case of a free reference mode, and by @code{(REF <reference
8294 mode>) (<hex-value>)} in case of a bound reference. @code{<hex value>}
8295 represents the address where the reference points to. To access the
8296 value of the location referenced by the pointer, use the dereference
8297 operator @samp{->}.
8298
8299 Values of procedure mode locations are displayed by
8300 @smallexample
8301 @code{@{ PROC
8302 (<argument modes> ) <return mode> @} <address> <name of procedure
8303 location>}
8304 @end smallexample
8305 @code{<argument modes>} is a list of modes according to the parameter
8306 specification of the procedure and @code{<address>} shows the address of
8307 the entry point.
8308
8309 @ignore
8310 Locations of instance modes are displayed just like a structure with two
8311 fields specifying the @emph{process type} and the @emph{copy number} of
8312 the investigated instance location@footnote{This comes from the current
8313 implementation of instances. They are implemented as a structure (no
8314 na). The output should be something like @code{[<name of the process>;
8315 <instance number>]}.}. The field names are @code{__proc_type} and
8316 @code{__proc_copy}.
8317
8318 Locations of synchronization modes are displayed like a structure with
8319 the field name @code{__event_data} in case of a event mode location, and
8320 like a structure with the field @code{__buffer_data} in case of a buffer
8321 mode location (refer to previous paragraph).
8322
8323 Structure Mode locations are printed by @code{[.<field name>: <value>,
8324 ...]}. The @code{<field name>} corresponds to the structure mode
8325 definition and the layout of @code{<value>} varies depending of the mode
8326 of the field. If the investigated structure mode location is of variant
8327 structure mode, the variant parts of the structure are enclosed in curled
8328 braces (@samp{@{@}}). Fields enclosed by @samp{@{,@}} are residing
8329 on the same memory location and represent the current values of the
8330 memory location in their specific modes. Since no tag processing is done
8331 all variants are displayed. A variant field is printed by
8332 @code{(<variant name>) = .<field name>: <value>}. (who implements the
8333 stuff ???)
8334 @smallexample
8335 (@value{GDBP}) print str1 $4 = [.as: 0, .bs: karli, .<TAG>: { (karli) =
8336 [.cs: []], (susi) = [.ds: susi]}]
8337 @end smallexample
8338 @end ignore
8339
8340 Substructures of string mode-, array mode- or structure mode-values
8341 (e.g. array slices, fields of structure locations) are accessed using
8342 certain operations which are described in the next section, @ref{Values
8343 and their Operations}.
8344
8345 A location value may be interpreted as having a different mode using the
8346 location conversion. This mode conversion is written as @code{<mode
8347 name>(<location>)}. The user has to consider that the sizes of the modes
8348 have to be equal otherwise an error occurs. Furthermore, no range
8349 checking of the location against the destination mode is performed, and
8350 therefore the result can be quite confusing.
8351
8352 @smallexample
8353 (@value{GDBP}) print int (s(3 up 4)) XXX TO be filled in !! XXX
8354 @end smallexample
8355
8356 @node Values and their Operations
8357 @subsubsection Values and their Operations
8358
8359 Values are used to alter locations, to investigate complex structures in
8360 more detail or to filter relevant information out of a large amount of
8361 data. There are several (mode dependent) operations defined which enable
8362 such investigations. These operations are not only applicable to
8363 constant values but also to locations, which can become quite useful
8364 when debugging complex structures. During parsing the command line
8365 (e.g. evaluating an expression) @value{GDBN} treats location names as
8366 the values behind these locations.
8367
8368 This section describes how values have to be specified and which
8369 operations are legal to be used with such values.
8370
8371 @table @code
8372 @item Literal Values
8373 Literal values are specified in the same manner as in @sc{gnu} Chill programs.
8374 For detailed specification refer to the @sc{gnu} Chill implementation Manual
8375 chapter 1.5.
8376 @c FIXME: if the Chill Manual is a Texinfo documents, the above should
8377 @c be converted to a @ref.
8378
8379 @ignore
8380 @itemize @bullet
8381 @item
8382 @emph{Integer Literals} are specified in the same manner as in Chill
8383 programs (refer to the Chill Standard z200/88 chpt 5.2.4.2)
8384 @item
8385 @emph{Boolean Literals} are defined by @code{TRUE} and @code{FALSE}.
8386 @item
8387 @emph{Character Literals} are defined by @code{'<character>'}. (e.g.
8388 @code{'M'})
8389 @item
8390 @emph{Set Literals} are defined by a name which was specified in a set
8391 mode. The value delivered by a Set Literal is the set value. This is
8392 comparable to an enumeration in C/C@t{++} language.
8393 @item
8394 @emph{Emptiness Literal} is predefined by @code{NULL}. The value of the
8395 emptiness literal delivers either the empty reference value, the empty
8396 procedure value or the empty instance value.
8397
8398 @item
8399 @emph{Character String Literals} are defined by a sequence of characters
8400 enclosed in single- or double quotes. If a single- or double quote has
8401 to be part of the string literal it has to be stuffed (specified twice).
8402 @item
8403 @emph{Bitstring Literals} are specified in the same manner as in Chill
8404 programs (refer z200/88 chpt 5.2.4.8).
8405 @item
8406 @emph{Floating point literals} are specified in the same manner as in
8407 (gnu-)Chill programs (refer @sc{gnu} Chill implementation Manual chapter 1.5).
8408 @end itemize
8409 @end ignore
8410
8411 @item Tuple Values
8412 A tuple is specified by @code{<mode name>[<tuple>]}, where @code{<mode
8413 name>} can be omitted if the mode of the tuple is unambiguous. This
8414 unambiguity is derived from the context of a evaluated expression.
8415 @code{<tuple>} can be one of the following:
8416
8417 @itemize @bullet
8418 @item @emph{Powerset Tuple}
8419 @item @emph{Array Tuple}
8420 @item @emph{Structure Tuple}
8421 Powerset tuples, array tuples and structure tuples are specified in the
8422 same manner as in Chill programs refer to z200/88 chpt 5.2.5.
8423 @end itemize
8424
8425 @item String Element Value
8426 A string element value is specified by
8427 @smallexample
8428 @code{<string value>(<index>)}
8429 @end smallexample
8430 where @code{<index>} is a integer expression. It delivers a character
8431 value which is equivalent to the character indexed by @code{<index>} in
8432 the string.
8433
8434 @item String Slice Value
8435 A string slice value is specified by @code{<string value>(<slice
8436 spec>)}, where @code{<slice spec>} can be either a range of integer
8437 expressions or specified by @code{<start expr> up <size>}.
8438 @code{<size>} denotes the number of elements which the slice contains.
8439 The delivered value is a string value, which is part of the specified
8440 string.
8441
8442 @item Array Element Values
8443 An array element value is specified by @code{<array value>(<expr>)} and
8444 delivers a array element value of the mode of the specified array.
8445
8446 @item Array Slice Values
8447 An array slice is specified by @code{<array value>(<slice spec>)}, where
8448 @code{<slice spec>} can be either a range specified by expressions or by
8449 @code{<start expr> up <size>}. @code{<size>} denotes the number of
8450 arrayelements the slice contains. The delivered value is an array value
8451 which is part of the specified array.
8452
8453 @item Structure Field Values
8454 A structure field value is derived by @code{<structure value>.<field
8455 name>}, where @code{<field name>} indicates the name of a field specified
8456 in the mode definition of the structure. The mode of the delivered value
8457 corresponds to this mode definition in the structure definition.
8458
8459 @item Procedure Call Value
8460 The procedure call value is derived from the return value of the
8461 procedure@footnote{If a procedure call is used for instance in an
8462 expression, then this procedure is called with all its side
8463 effects. This can lead to confusing results if used carelessly.}.
8464
8465 Values of duration mode locations are represented by @code{ULONG} literals.
8466
8467 Values of time mode locations appear as
8468 @smallexample
8469 @code{TIME(<secs>:<nsecs>)}
8470 @end smallexample
8471
8472
8473 @ignore
8474 This is not implemented yet:
8475 @item Built-in Value
8476 @noindent
8477 The following built in functions are provided:
8478
8479 @table @code
8480 @item @code{ADDR()}
8481 @item @code{NUM()}
8482 @item @code{PRED()}
8483 @item @code{SUCC()}
8484 @item @code{ABS()}
8485 @item @code{CARD()}
8486 @item @code{MAX()}
8487 @item @code{MIN()}
8488 @item @code{SIZE()}
8489 @item @code{UPPER()}
8490 @item @code{LOWER()}
8491 @item @code{LENGTH()}
8492 @item @code{SIN()}
8493 @item @code{COS()}
8494 @item @code{TAN()}
8495 @item @code{ARCSIN()}
8496 @item @code{ARCCOS()}
8497 @item @code{ARCTAN()}
8498 @item @code{EXP()}
8499 @item @code{LN()}
8500 @item @code{LOG()}
8501 @item @code{SQRT()}
8502 @end table
8503
8504 For a detailed description refer to the GNU Chill implementation manual
8505 chapter 1.6.
8506 @end ignore
8507
8508 @item Zero-adic Operator Value
8509 The zero-adic operator value is derived from the instance value for the
8510 current active process.
8511
8512 @item Expression Values
8513 The value delivered by an expression is the result of the evaluation of
8514 the specified expression. If there are error conditions (mode
8515 incompatibility, etc.) the evaluation of expressions is aborted with a
8516 corresponding error message. Expressions may be parenthesised which
8517 causes the evaluation of this expression before any other expression
8518 which uses the result of the parenthesised expression. The following
8519 operators are supported by @value{GDBN}:
8520
8521 @table @code
8522 @item @code{OR, ORIF, XOR}
8523 @itemx @code{AND, ANDIF}
8524 @itemx @code{NOT}
8525 Logical operators defined over operands of boolean mode.
8526
8527 @item @code{=, /=}
8528 Equality and inequality operators defined over all modes.
8529
8530 @item @code{>, >=}
8531 @itemx @code{<, <=}
8532 Relational operators defined over predefined modes.
8533
8534 @item @code{+, -}
8535 @itemx @code{*, /, MOD, REM}
8536 Arithmetic operators defined over predefined modes.
8537
8538 @item @code{-}
8539 Change sign operator.
8540
8541 @item @code{//}
8542 String concatenation operator.
8543
8544 @item @code{()}
8545 String repetition operator.
8546
8547 @item @code{->}
8548 Referenced location operator which can be used either to take the
8549 address of a location (@code{->loc}), or to dereference a reference
8550 location (@code{loc->}).
8551
8552 @item @code{OR, XOR}
8553 @itemx @code{AND}
8554 @itemx @code{NOT}
8555 Powerset and bitstring operators.
8556
8557 @item @code{>, >=}
8558 @itemx @code{<, <=}
8559 Powerset inclusion operators.
8560
8561 @item @code{IN}
8562 Membership operator.
8563 @end table
8564 @end table
8565
8566 @node Chill type and range checks
8567 @subsubsection Chill type and range checks
8568
8569 @value{GDBN} considers two Chill variables mode equivalent if the sizes
8570 of the two modes are equal. This rule applies recursively to more
8571 complex datatypes which means that complex modes are treated
8572 equivalent if all element modes (which also can be complex modes like
8573 structures, arrays, etc.) have the same size.
8574
8575 Range checking is done on all mathematical operations, assignment, array
8576 index bounds and all built in procedures.
8577
8578 Strong type checks are forced using the @value{GDBN} command @code{set
8579 check strong}. This enforces strong type and range checks on all
8580 operations where Chill constructs are used (expressions, built in
8581 functions, etc.) in respect to the semantics as defined in the z.200
8582 language specification.
8583
8584 All checks can be disabled by the @value{GDBN} command @code{set check
8585 off}.
8586
8587 @ignore
8588 @c Deviations from the Chill Standard Z200/88
8589 see last paragraph ?
8590 @end ignore
8591
8592 @node Chill defaults
8593 @subsubsection Chill defaults
8594
8595 If type and range checking are set automatically by @value{GDBN}, they
8596 both default to @code{on} whenever the working language changes to
8597 Chill. This happens regardless of whether you or @value{GDBN}
8598 selected the working language.
8599
8600 If you allow @value{GDBN} to set the language automatically, then entering
8601 code compiled from a file whose name ends with @file{.ch} sets the
8602 working language to Chill. @xref{Automatically, ,Having @value{GDBN} set
8603 the language automatically}, for further details.
8604
8605 @node Symbols
8606 @chapter Examining the Symbol Table
8607
8608 The commands described in this chapter allow you to inquire about the
8609 symbols (names of variables, functions and types) defined in your
8610 program. This information is inherent in the text of your program and
8611 does not change as your program executes. @value{GDBN} finds it in your
8612 program's symbol table, in the file indicated when you started @value{GDBN}
8613 (@pxref{File Options, ,Choosing files}), or by one of the
8614 file-management commands (@pxref{Files, ,Commands to specify files}).
8615
8616 @cindex symbol names
8617 @cindex names of symbols
8618 @cindex quoting names
8619 Occasionally, you may need to refer to symbols that contain unusual
8620 characters, which @value{GDBN} ordinarily treats as word delimiters. The
8621 most frequent case is in referring to static variables in other
8622 source files (@pxref{Variables,,Program variables}). File names
8623 are recorded in object files as debugging symbols, but @value{GDBN} would
8624 ordinarily parse a typical file name, like @file{foo.c}, as the three words
8625 @samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
8626 @samp{foo.c} as a single symbol, enclose it in single quotes; for example,
8627
8628 @example
8629 p 'foo.c'::x
8630 @end example
8631
8632 @noindent
8633 looks up the value of @code{x} in the scope of the file @file{foo.c}.
8634
8635 @table @code
8636 @kindex info address
8637 @cindex address of a symbol
8638 @item info address @var{symbol}
8639 Describe where the data for @var{symbol} is stored. For a register
8640 variable, this says which register it is kept in. For a non-register
8641 local variable, this prints the stack-frame offset at which the variable
8642 is always stored.
8643
8644 Note the contrast with @samp{print &@var{symbol}}, which does not work
8645 at all for a register variable, and for a stack local variable prints
8646 the exact address of the current instantiation of the variable.
8647
8648 @kindex info symbol
8649 @cindex symbol from address
8650 @item info symbol @var{addr}
8651 Print the name of a symbol which is stored at the address @var{addr}.
8652 If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
8653 nearest symbol and an offset from it:
8654
8655 @example
8656 (@value{GDBP}) info symbol 0x54320
8657 _initialize_vx + 396 in section .text
8658 @end example
8659
8660 @noindent
8661 This is the opposite of the @code{info address} command. You can use
8662 it to find out the name of a variable or a function given its address.
8663
8664 @kindex whatis
8665 @item whatis @var{expr}
8666 Print the data type of expression @var{expr}. @var{expr} is not
8667 actually evaluated, and any side-effecting operations (such as
8668 assignments or function calls) inside it do not take place.
8669 @xref{Expressions, ,Expressions}.
8670
8671 @item whatis
8672 Print the data type of @code{$}, the last value in the value history.
8673
8674 @kindex ptype
8675 @item ptype @var{typename}
8676 Print a description of data type @var{typename}. @var{typename} may be
8677 the name of a type, or for C code it may have the form @samp{class
8678 @var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
8679 @var{union-tag}} or @samp{enum @var{enum-tag}}.
8680
8681 @item ptype @var{expr}
8682 @itemx ptype
8683 Print a description of the type of expression @var{expr}. @code{ptype}
8684 differs from @code{whatis} by printing a detailed description, instead
8685 of just the name of the type.
8686
8687 For example, for this variable declaration:
8688
8689 @example
8690 struct complex @{double real; double imag;@} v;
8691 @end example
8692
8693 @noindent
8694 the two commands give this output:
8695
8696 @example
8697 @group
8698 (@value{GDBP}) whatis v
8699 type = struct complex
8700 (@value{GDBP}) ptype v
8701 type = struct complex @{
8702 double real;
8703 double imag;
8704 @}
8705 @end group
8706 @end example
8707
8708 @noindent
8709 As with @code{whatis}, using @code{ptype} without an argument refers to
8710 the type of @code{$}, the last value in the value history.
8711
8712 @kindex info types
8713 @item info types @var{regexp}
8714 @itemx info types
8715 Print a brief description of all types whose names match @var{regexp}
8716 (or all types in your program, if you supply no argument). Each
8717 complete typename is matched as though it were a complete line; thus,
8718 @samp{i type value} gives information on all types in your program whose
8719 names include the string @code{value}, but @samp{i type ^value$} gives
8720 information only on types whose complete name is @code{value}.
8721
8722 This command differs from @code{ptype} in two ways: first, like
8723 @code{whatis}, it does not print a detailed description; second, it
8724 lists all source files where a type is defined.
8725
8726 @kindex info scope
8727 @cindex local variables
8728 @item info scope @var{addr}
8729 List all the variables local to a particular scope. This command
8730 accepts a location---a function name, a source line, or an address
8731 preceded by a @samp{*}, and prints all the variables local to the
8732 scope defined by that location. For example:
8733
8734 @smallexample
8735 (@value{GDBP}) @b{info scope command_line_handler}
8736 Scope for command_line_handler:
8737 Symbol rl is an argument at stack/frame offset 8, length 4.
8738 Symbol linebuffer is in static storage at address 0x150a18, length 4.
8739 Symbol linelength is in static storage at address 0x150a1c, length 4.
8740 Symbol p is a local variable in register $esi, length 4.
8741 Symbol p1 is a local variable in register $ebx, length 4.
8742 Symbol nline is a local variable in register $edx, length 4.
8743 Symbol repeat is a local variable at frame offset -8, length 4.
8744 @end smallexample
8745
8746 @noindent
8747 This command is especially useful for determining what data to collect
8748 during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
8749 collect}.
8750
8751 @kindex info source
8752 @item info source
8753 Show the name of the current source file---that is, the source file for
8754 the function containing the current point of execution---and the language
8755 it was written in.
8756
8757 @kindex info sources
8758 @item info sources
8759 Print the names of all source files in your program for which there is
8760 debugging information, organized into two lists: files whose symbols
8761 have already been read, and files whose symbols will be read when needed.
8762
8763 @kindex info functions
8764 @item info functions
8765 Print the names and data types of all defined functions.
8766
8767 @item info functions @var{regexp}
8768 Print the names and data types of all defined functions
8769 whose names contain a match for regular expression @var{regexp}.
8770 Thus, @samp{info fun step} finds all functions whose names
8771 include @code{step}; @samp{info fun ^step} finds those whose names
8772 start with @code{step}. If a function name contains characters
8773 that conflict with the regular expression language (eg.
8774 @samp{operator*()}), they may be quoted with a backslash.
8775
8776 @kindex info variables
8777 @item info variables
8778 Print the names and data types of all variables that are declared
8779 outside of functions (i.e., excluding local variables).
8780
8781 @item info variables @var{regexp}
8782 Print the names and data types of all variables (except for local
8783 variables) whose names contain a match for regular expression
8784 @var{regexp}.
8785
8786 @ignore
8787 This was never implemented.
8788 @kindex info methods
8789 @item info methods
8790 @itemx info methods @var{regexp}
8791 The @code{info methods} command permits the user to examine all defined
8792 methods within C@t{++} program, or (with the @var{regexp} argument) a
8793 specific set of methods found in the various C@t{++} classes. Many
8794 C@t{++} classes provide a large number of methods. Thus, the output
8795 from the @code{ptype} command can be overwhelming and hard to use. The
8796 @code{info-methods} command filters the methods, printing only those
8797 which match the regular-expression @var{regexp}.
8798 @end ignore
8799
8800 @cindex reloading symbols
8801 Some systems allow individual object files that make up your program to
8802 be replaced without stopping and restarting your program. For example,
8803 in VxWorks you can simply recompile a defective object file and keep on
8804 running. If you are running on one of these systems, you can allow
8805 @value{GDBN} to reload the symbols for automatically relinked modules:
8806
8807 @table @code
8808 @kindex set symbol-reloading
8809 @item set symbol-reloading on
8810 Replace symbol definitions for the corresponding source file when an
8811 object file with a particular name is seen again.
8812
8813 @item set symbol-reloading off
8814 Do not replace symbol definitions when encountering object files of the
8815 same name more than once. This is the default state; if you are not
8816 running on a system that permits automatic relinking of modules, you
8817 should leave @code{symbol-reloading} off, since otherwise @value{GDBN}
8818 may discard symbols when linking large programs, that may contain
8819 several modules (from different directories or libraries) with the same
8820 name.
8821
8822 @kindex show symbol-reloading
8823 @item show symbol-reloading
8824 Show the current @code{on} or @code{off} setting.
8825 @end table
8826
8827 @kindex set opaque-type-resolution
8828 @item set opaque-type-resolution on
8829 Tell @value{GDBN} to resolve opaque types. An opaque type is a type
8830 declared as a pointer to a @code{struct}, @code{class}, or
8831 @code{union}---for example, @code{struct MyType *}---that is used in one
8832 source file although the full declaration of @code{struct MyType} is in
8833 another source file. The default is on.
8834
8835 A change in the setting of this subcommand will not take effect until
8836 the next time symbols for a file are loaded.
8837
8838 @item set opaque-type-resolution off
8839 Tell @value{GDBN} not to resolve opaque types. In this case, the type
8840 is printed as follows:
8841 @smallexample
8842 @{<no data fields>@}
8843 @end smallexample
8844
8845 @kindex show opaque-type-resolution
8846 @item show opaque-type-resolution
8847 Show whether opaque types are resolved or not.
8848
8849 @kindex maint print symbols
8850 @cindex symbol dump
8851 @kindex maint print psymbols
8852 @cindex partial symbol dump
8853 @item maint print symbols @var{filename}
8854 @itemx maint print psymbols @var{filename}
8855 @itemx maint print msymbols @var{filename}
8856 Write a dump of debugging symbol data into the file @var{filename}.
8857 These commands are used to debug the @value{GDBN} symbol-reading code. Only
8858 symbols with debugging data are included. If you use @samp{maint print
8859 symbols}, @value{GDBN} includes all the symbols for which it has already
8860 collected full details: that is, @var{filename} reflects symbols for
8861 only those files whose symbols @value{GDBN} has read. You can use the
8862 command @code{info sources} to find out which files these are. If you
8863 use @samp{maint print psymbols} instead, the dump shows information about
8864 symbols that @value{GDBN} only knows partially---that is, symbols defined in
8865 files that @value{GDBN} has skimmed, but not yet read completely. Finally,
8866 @samp{maint print msymbols} dumps just the minimal symbol information
8867 required for each object file from which @value{GDBN} has read some symbols.
8868 @xref{Files, ,Commands to specify files}, for a discussion of how
8869 @value{GDBN} reads symbols (in the description of @code{symbol-file}).
8870 @end table
8871
8872 @node Altering
8873 @chapter Altering Execution
8874
8875 Once you think you have found an error in your program, you might want to
8876 find out for certain whether correcting the apparent error would lead to
8877 correct results in the rest of the run. You can find the answer by
8878 experiment, using the @value{GDBN} features for altering execution of the
8879 program.
8880
8881 For example, you can store new values into variables or memory
8882 locations, give your program a signal, restart it at a different
8883 address, or even return prematurely from a function.
8884
8885 @menu
8886 * Assignment:: Assignment to variables
8887 * Jumping:: Continuing at a different address
8888 * Signaling:: Giving your program a signal
8889 * Returning:: Returning from a function
8890 * Calling:: Calling your program's functions
8891 * Patching:: Patching your program
8892 @end menu
8893
8894 @node Assignment
8895 @section Assignment to variables
8896
8897 @cindex assignment
8898 @cindex setting variables
8899 To alter the value of a variable, evaluate an assignment expression.
8900 @xref{Expressions, ,Expressions}. For example,
8901
8902 @example
8903 print x=4
8904 @end example
8905
8906 @noindent
8907 stores the value 4 into the variable @code{x}, and then prints the
8908 value of the assignment expression (which is 4).
8909 @xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
8910 information on operators in supported languages.
8911
8912 @kindex set variable
8913 @cindex variables, setting
8914 If you are not interested in seeing the value of the assignment, use the
8915 @code{set} command instead of the @code{print} command. @code{set} is
8916 really the same as @code{print} except that the expression's value is
8917 not printed and is not put in the value history (@pxref{Value History,
8918 ,Value history}). The expression is evaluated only for its effects.
8919
8920 If the beginning of the argument string of the @code{set} command
8921 appears identical to a @code{set} subcommand, use the @code{set
8922 variable} command instead of just @code{set}. This command is identical
8923 to @code{set} except for its lack of subcommands. For example, if your
8924 program has a variable @code{width}, you get an error if you try to set
8925 a new value with just @samp{set width=13}, because @value{GDBN} has the
8926 command @code{set width}:
8927
8928 @example
8929 (@value{GDBP}) whatis width
8930 type = double
8931 (@value{GDBP}) p width
8932 $4 = 13
8933 (@value{GDBP}) set width=47
8934 Invalid syntax in expression.
8935 @end example
8936
8937 @noindent
8938 The invalid expression, of course, is @samp{=47}. In
8939 order to actually set the program's variable @code{width}, use
8940
8941 @example
8942 (@value{GDBP}) set var width=47
8943 @end example
8944
8945 Because the @code{set} command has many subcommands that can conflict
8946 with the names of program variables, it is a good idea to use the
8947 @code{set variable} command instead of just @code{set}. For example, if
8948 your program has a variable @code{g}, you run into problems if you try
8949 to set a new value with just @samp{set g=4}, because @value{GDBN} has
8950 the command @code{set gnutarget}, abbreviated @code{set g}:
8951
8952 @example
8953 @group
8954 (@value{GDBP}) whatis g
8955 type = double
8956 (@value{GDBP}) p g
8957 $1 = 1
8958 (@value{GDBP}) set g=4
8959 (@value{GDBP}) p g
8960 $2 = 1
8961 (@value{GDBP}) r
8962 The program being debugged has been started already.
8963 Start it from the beginning? (y or n) y
8964 Starting program: /home/smith/cc_progs/a.out
8965 "/home/smith/cc_progs/a.out": can't open to read symbols:
8966 Invalid bfd target.
8967 (@value{GDBP}) show g
8968 The current BFD target is "=4".
8969 @end group
8970 @end example
8971
8972 @noindent
8973 The program variable @code{g} did not change, and you silently set the
8974 @code{gnutarget} to an invalid value. In order to set the variable
8975 @code{g}, use
8976
8977 @example
8978 (@value{GDBP}) set var g=4
8979 @end example
8980
8981 @value{GDBN} allows more implicit conversions in assignments than C; you can
8982 freely store an integer value into a pointer variable or vice versa,
8983 and you can convert any structure to any other structure that is the
8984 same length or shorter.
8985 @comment FIXME: how do structs align/pad in these conversions?
8986 @comment /doc@cygnus.com 18dec1990
8987
8988 To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
8989 construct to generate a value of specified type at a specified address
8990 (@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
8991 to memory location @code{0x83040} as an integer (which implies a certain size
8992 and representation in memory), and
8993
8994 @example
8995 set @{int@}0x83040 = 4
8996 @end example
8997
8998 @noindent
8999 stores the value 4 into that memory location.
9000
9001 @node Jumping
9002 @section Continuing at a different address
9003
9004 Ordinarily, when you continue your program, you do so at the place where
9005 it stopped, with the @code{continue} command. You can instead continue at
9006 an address of your own choosing, with the following commands:
9007
9008 @table @code
9009 @kindex jump
9010 @item jump @var{linespec}
9011 Resume execution at line @var{linespec}. Execution stops again
9012 immediately if there is a breakpoint there. @xref{List, ,Printing
9013 source lines}, for a description of the different forms of
9014 @var{linespec}. It is common practice to use the @code{tbreak} command
9015 in conjunction with @code{jump}. @xref{Set Breaks, ,Setting
9016 breakpoints}.
9017
9018 The @code{jump} command does not change the current stack frame, or
9019 the stack pointer, or the contents of any memory location or any
9020 register other than the program counter. If line @var{linespec} is in
9021 a different function from the one currently executing, the results may
9022 be bizarre if the two functions expect different patterns of arguments or
9023 of local variables. For this reason, the @code{jump} command requests
9024 confirmation if the specified line is not in the function currently
9025 executing. However, even bizarre results are predictable if you are
9026 well acquainted with the machine-language code of your program.
9027
9028 @item jump *@var{address}
9029 Resume execution at the instruction at address @var{address}.
9030 @end table
9031
9032 @c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
9033 On many systems, you can get much the same effect as the @code{jump}
9034 command by storing a new value into the register @code{$pc}. The
9035 difference is that this does not start your program running; it only
9036 changes the address of where it @emph{will} run when you continue. For
9037 example,
9038
9039 @example
9040 set $pc = 0x485
9041 @end example
9042
9043 @noindent
9044 makes the next @code{continue} command or stepping command execute at
9045 address @code{0x485}, rather than at the address where your program stopped.
9046 @xref{Continuing and Stepping, ,Continuing and stepping}.
9047
9048 The most common occasion to use the @code{jump} command is to back
9049 up---perhaps with more breakpoints set---over a portion of a program
9050 that has already executed, in order to examine its execution in more
9051 detail.
9052
9053 @c @group
9054 @node Signaling
9055 @section Giving your program a signal
9056
9057 @table @code
9058 @kindex signal
9059 @item signal @var{signal}
9060 Resume execution where your program stopped, but immediately give it the
9061 signal @var{signal}. @var{signal} can be the name or the number of a
9062 signal. For example, on many systems @code{signal 2} and @code{signal
9063 SIGINT} are both ways of sending an interrupt signal.
9064
9065 Alternatively, if @var{signal} is zero, continue execution without
9066 giving a signal. This is useful when your program stopped on account of
9067 a signal and would ordinary see the signal when resumed with the
9068 @code{continue} command; @samp{signal 0} causes it to resume without a
9069 signal.
9070
9071 @code{signal} does not repeat when you press @key{RET} a second time
9072 after executing the command.
9073 @end table
9074 @c @end group
9075
9076 Invoking the @code{signal} command is not the same as invoking the
9077 @code{kill} utility from the shell. Sending a signal with @code{kill}
9078 causes @value{GDBN} to decide what to do with the signal depending on
9079 the signal handling tables (@pxref{Signals}). The @code{signal} command
9080 passes the signal directly to your program.
9081
9082
9083 @node Returning
9084 @section Returning from a function
9085
9086 @table @code
9087 @cindex returning from a function
9088 @kindex return
9089 @item return
9090 @itemx return @var{expression}
9091 You can cancel execution of a function call with the @code{return}
9092 command. If you give an
9093 @var{expression} argument, its value is used as the function's return
9094 value.
9095 @end table
9096
9097 When you use @code{return}, @value{GDBN} discards the selected stack frame
9098 (and all frames within it). You can think of this as making the
9099 discarded frame return prematurely. If you wish to specify a value to
9100 be returned, give that value as the argument to @code{return}.
9101
9102 This pops the selected stack frame (@pxref{Selection, ,Selecting a
9103 frame}), and any other frames inside of it, leaving its caller as the
9104 innermost remaining frame. That frame becomes selected. The
9105 specified value is stored in the registers used for returning values
9106 of functions.
9107
9108 The @code{return} command does not resume execution; it leaves the
9109 program stopped in the state that would exist if the function had just
9110 returned. In contrast, the @code{finish} command (@pxref{Continuing
9111 and Stepping, ,Continuing and stepping}) resumes execution until the
9112 selected stack frame returns naturally.
9113
9114 @node Calling
9115 @section Calling program functions
9116
9117 @cindex calling functions
9118 @kindex call
9119 @table @code
9120 @item call @var{expr}
9121 Evaluate the expression @var{expr} without displaying @code{void}
9122 returned values.
9123 @end table
9124
9125 You can use this variant of the @code{print} command if you want to
9126 execute a function from your program, but without cluttering the output
9127 with @code{void} returned values. If the result is not void, it
9128 is printed and saved in the value history.
9129
9130 @c OBSOLETE For the A29K, a user-controlled variable @code{call_scratch_address},
9131 @c OBSOLETE specifies the location of a scratch area to be used when @value{GDBN}
9132 @c OBSOLETE calls a function in the target. This is necessary because the usual
9133 @c OBSOLETE method of putting the scratch area on the stack does not work in systems
9134 @c OBSOLETE that have separate instruction and data spaces.
9135
9136 @node Patching
9137 @section Patching programs
9138
9139 @cindex patching binaries
9140 @cindex writing into executables
9141 @cindex writing into corefiles
9142
9143 By default, @value{GDBN} opens the file containing your program's
9144 executable code (or the corefile) read-only. This prevents accidental
9145 alterations to machine code; but it also prevents you from intentionally
9146 patching your program's binary.
9147
9148 If you'd like to be able to patch the binary, you can specify that
9149 explicitly with the @code{set write} command. For example, you might
9150 want to turn on internal debugging flags, or even to make emergency
9151 repairs.
9152
9153 @table @code
9154 @kindex set write
9155 @item set write on
9156 @itemx set write off
9157 If you specify @samp{set write on}, @value{GDBN} opens executable and
9158 core files for both reading and writing; if you specify @samp{set write
9159 off} (the default), @value{GDBN} opens them read-only.
9160
9161 If you have already loaded a file, you must load it again (using the
9162 @code{exec-file} or @code{core-file} command) after changing @code{set
9163 write}, for your new setting to take effect.
9164
9165 @item show write
9166 @kindex show write
9167 Display whether executable files and core files are opened for writing
9168 as well as reading.
9169 @end table
9170
9171 @node GDB Files
9172 @chapter @value{GDBN} Files
9173
9174 @value{GDBN} needs to know the file name of the program to be debugged,
9175 both in order to read its symbol table and in order to start your
9176 program. To debug a core dump of a previous run, you must also tell
9177 @value{GDBN} the name of the core dump file.
9178
9179 @menu
9180 * Files:: Commands to specify files
9181 * Symbol Errors:: Errors reading symbol files
9182 @end menu
9183
9184 @node Files
9185 @section Commands to specify files
9186
9187 @cindex symbol table
9188 @cindex core dump file
9189
9190 You may want to specify executable and core dump file names. The usual
9191 way to do this is at start-up time, using the arguments to
9192 @value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
9193 Out of @value{GDBN}}).
9194
9195 Occasionally it is necessary to change to a different file during a
9196 @value{GDBN} session. Or you may run @value{GDBN} and forget to specify
9197 a file you want to use. In these situations the @value{GDBN} commands
9198 to specify new files are useful.
9199
9200 @table @code
9201 @cindex executable file
9202 @kindex file
9203 @item file @var{filename}
9204 Use @var{filename} as the program to be debugged. It is read for its
9205 symbols and for the contents of pure memory. It is also the program
9206 executed when you use the @code{run} command. If you do not specify a
9207 directory and the file is not found in the @value{GDBN} working directory,
9208 @value{GDBN} uses the environment variable @code{PATH} as a list of
9209 directories to search, just as the shell does when looking for a program
9210 to run. You can change the value of this variable, for both @value{GDBN}
9211 and your program, using the @code{path} command.
9212
9213 On systems with memory-mapped files, an auxiliary file named
9214 @file{@var{filename}.syms} may hold symbol table information for
9215 @var{filename}. If so, @value{GDBN} maps in the symbol table from
9216 @file{@var{filename}.syms}, starting up more quickly. See the
9217 descriptions of the file options @samp{-mapped} and @samp{-readnow}
9218 (available on the command line, and with the commands @code{file},
9219 @code{symbol-file}, or @code{add-symbol-file}, described below),
9220 for more information.
9221
9222 @item file
9223 @code{file} with no argument makes @value{GDBN} discard any information it
9224 has on both executable file and the symbol table.
9225
9226 @kindex exec-file
9227 @item exec-file @r{[} @var{filename} @r{]}
9228 Specify that the program to be run (but not the symbol table) is found
9229 in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
9230 if necessary to locate your program. Omitting @var{filename} means to
9231 discard information on the executable file.
9232
9233 @kindex symbol-file
9234 @item symbol-file @r{[} @var{filename} @r{]}
9235 Read symbol table information from file @var{filename}. @code{PATH} is
9236 searched when necessary. Use the @code{file} command to get both symbol
9237 table and program to run from the same file.
9238
9239 @code{symbol-file} with no argument clears out @value{GDBN} information on your
9240 program's symbol table.
9241
9242 The @code{symbol-file} command causes @value{GDBN} to forget the contents
9243 of its convenience variables, the value history, and all breakpoints and
9244 auto-display expressions. This is because they may contain pointers to
9245 the internal data recording symbols and data types, which are part of
9246 the old symbol table data being discarded inside @value{GDBN}.
9247
9248 @code{symbol-file} does not repeat if you press @key{RET} again after
9249 executing it once.
9250
9251 When @value{GDBN} is configured for a particular environment, it
9252 understands debugging information in whatever format is the standard
9253 generated for that environment; you may use either a @sc{gnu} compiler, or
9254 other compilers that adhere to the local conventions.
9255 Best results are usually obtained from @sc{gnu} compilers; for example,
9256 using @code{@value{GCC}} you can generate debugging information for
9257 optimized code.
9258
9259 For most kinds of object files, with the exception of old SVR3 systems
9260 using COFF, the @code{symbol-file} command does not normally read the
9261 symbol table in full right away. Instead, it scans the symbol table
9262 quickly to find which source files and which symbols are present. The
9263 details are read later, one source file at a time, as they are needed.
9264
9265 The purpose of this two-stage reading strategy is to make @value{GDBN}
9266 start up faster. For the most part, it is invisible except for
9267 occasional pauses while the symbol table details for a particular source
9268 file are being read. (The @code{set verbose} command can turn these
9269 pauses into messages if desired. @xref{Messages/Warnings, ,Optional
9270 warnings and messages}.)
9271
9272 We have not implemented the two-stage strategy for COFF yet. When the
9273 symbol table is stored in COFF format, @code{symbol-file} reads the
9274 symbol table data in full right away. Note that ``stabs-in-COFF''
9275 still does the two-stage strategy, since the debug info is actually
9276 in stabs format.
9277
9278 @kindex readnow
9279 @cindex reading symbols immediately
9280 @cindex symbols, reading immediately
9281 @kindex mapped
9282 @cindex memory-mapped symbol file
9283 @cindex saving symbol table
9284 @item symbol-file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9285 @itemx file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9286 You can override the @value{GDBN} two-stage strategy for reading symbol
9287 tables by using the @samp{-readnow} option with any of the commands that
9288 load symbol table information, if you want to be sure @value{GDBN} has the
9289 entire symbol table available.
9290
9291 If memory-mapped files are available on your system through the
9292 @code{mmap} system call, you can use another option, @samp{-mapped}, to
9293 cause @value{GDBN} to write the symbols for your program into a reusable
9294 file. Future @value{GDBN} debugging sessions map in symbol information
9295 from this auxiliary symbol file (if the program has not changed), rather
9296 than spending time reading the symbol table from the executable
9297 program. Using the @samp{-mapped} option has the same effect as
9298 starting @value{GDBN} with the @samp{-mapped} command-line option.
9299
9300 You can use both options together, to make sure the auxiliary symbol
9301 file has all the symbol information for your program.
9302
9303 The auxiliary symbol file for a program called @var{myprog} is called
9304 @samp{@var{myprog}.syms}. Once this file exists (so long as it is newer
9305 than the corresponding executable), @value{GDBN} always attempts to use
9306 it when you debug @var{myprog}; no special options or commands are
9307 needed.
9308
9309 The @file{.syms} file is specific to the host machine where you run
9310 @value{GDBN}. It holds an exact image of the internal @value{GDBN}
9311 symbol table. It cannot be shared across multiple host platforms.
9312
9313 @c FIXME: for now no mention of directories, since this seems to be in
9314 @c flux. 13mar1992 status is that in theory GDB would look either in
9315 @c current dir or in same dir as myprog; but issues like competing
9316 @c GDB's, or clutter in system dirs, mean that in practice right now
9317 @c only current dir is used. FFish says maybe a special GDB hierarchy
9318 @c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
9319 @c files.
9320
9321 @kindex core
9322 @kindex core-file
9323 @item core-file @r{[} @var{filename} @r{]}
9324 Specify the whereabouts of a core dump file to be used as the ``contents
9325 of memory''. Traditionally, core files contain only some parts of the
9326 address space of the process that generated them; @value{GDBN} can access the
9327 executable file itself for other parts.
9328
9329 @code{core-file} with no argument specifies that no core file is
9330 to be used.
9331
9332 Note that the core file is ignored when your program is actually running
9333 under @value{GDBN}. So, if you have been running your program and you
9334 wish to debug a core file instead, you must kill the subprocess in which
9335 the program is running. To do this, use the @code{kill} command
9336 (@pxref{Kill Process, ,Killing the child process}).
9337
9338 @kindex add-symbol-file
9339 @cindex dynamic linking
9340 @item add-symbol-file @var{filename} @var{address}
9341 @itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9342 @itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address} @dots{}
9343 The @code{add-symbol-file} command reads additional symbol table
9344 information from the file @var{filename}. You would use this command
9345 when @var{filename} has been dynamically loaded (by some other means)
9346 into the program that is running. @var{address} should be the memory
9347 address at which the file has been loaded; @value{GDBN} cannot figure
9348 this out for itself. You can additionally specify an arbitrary number
9349 of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
9350 section name and base address for that section. You can specify any
9351 @var{address} as an expression.
9352
9353 The symbol table of the file @var{filename} is added to the symbol table
9354 originally read with the @code{symbol-file} command. You can use the
9355 @code{add-symbol-file} command any number of times; the new symbol data
9356 thus read keeps adding to the old. To discard all old symbol data
9357 instead, use the @code{symbol-file} command without any arguments.
9358
9359 @cindex relocatable object files, reading symbols from
9360 @cindex object files, relocatable, reading symbols from
9361 @cindex reading symbols from relocatable object files
9362 @cindex symbols, reading from relocatable object files
9363 @cindex @file{.o} files, reading symbols from
9364 Although @var{filename} is typically a shared library file, an
9365 executable file, or some other object file which has been fully
9366 relocated for loading into a process, you can also load symbolic
9367 information from relocatable @file{.o} files, as long as:
9368
9369 @itemize @bullet
9370 @item
9371 the file's symbolic information refers only to linker symbols defined in
9372 that file, not to symbols defined by other object files,
9373 @item
9374 every section the file's symbolic information refers to has actually
9375 been loaded into the inferior, as it appears in the file, and
9376 @item
9377 you can determine the address at which every section was loaded, and
9378 provide these to the @code{add-symbol-file} command.
9379 @end itemize
9380
9381 @noindent
9382 Some embedded operating systems, like Sun Chorus and VxWorks, can load
9383 relocatable files into an already running program; such systems
9384 typically make the requirements above easy to meet. However, it's
9385 important to recognize that many native systems use complex link
9386 procedures (@code{.linkonce} section factoring and C++ constructor table
9387 assembly, for example) that make the requirements difficult to meet. In
9388 general, one cannot assume that using @code{add-symbol-file} to read a
9389 relocatable object file's symbolic information will have the same effect
9390 as linking the relocatable object file into the program in the normal
9391 way.
9392
9393 @code{add-symbol-file} does not repeat if you press @key{RET} after using it.
9394
9395 You can use the @samp{-mapped} and @samp{-readnow} options just as with
9396 the @code{symbol-file} command, to change how @value{GDBN} manages the symbol
9397 table information for @var{filename}.
9398
9399 @kindex add-shared-symbol-file
9400 @item add-shared-symbol-file
9401 The @code{add-shared-symbol-file} command can be used only under Harris' CXUX
9402 operating system for the Motorola 88k. @value{GDBN} automatically looks for
9403 shared libraries, however if @value{GDBN} does not find yours, you can run
9404 @code{add-shared-symbol-file}. It takes no arguments.
9405
9406 @kindex section
9407 @item section
9408 The @code{section} command changes the base address of section SECTION of
9409 the exec file to ADDR. This can be used if the exec file does not contain
9410 section addresses, (such as in the a.out format), or when the addresses
9411 specified in the file itself are wrong. Each section must be changed
9412 separately. The @code{info files} command, described below, lists all
9413 the sections and their addresses.
9414
9415 @kindex info files
9416 @kindex info target
9417 @item info files
9418 @itemx info target
9419 @code{info files} and @code{info target} are synonymous; both print the
9420 current target (@pxref{Targets, ,Specifying a Debugging Target}),
9421 including the names of the executable and core dump files currently in
9422 use by @value{GDBN}, and the files from which symbols were loaded. The
9423 command @code{help target} lists all possible targets rather than
9424 current ones.
9425
9426 @kindex maint info sections
9427 @item maint info sections
9428 Another command that can give you extra information about program sections
9429 is @code{maint info sections}. In addition to the section information
9430 displayed by @code{info files}, this command displays the flags and file
9431 offset of each section in the executable and core dump files. In addition,
9432 @code{maint info sections} provides the following command options (which
9433 may be arbitrarily combined):
9434
9435 @table @code
9436 @item ALLOBJ
9437 Display sections for all loaded object files, including shared libraries.
9438 @item @var{sections}
9439 Display info only for named @var{sections}.
9440 @item @var{section-flags}
9441 Display info only for sections for which @var{section-flags} are true.
9442 The section flags that @value{GDBN} currently knows about are:
9443 @table @code
9444 @item ALLOC
9445 Section will have space allocated in the process when loaded.
9446 Set for all sections except those containing debug information.
9447 @item LOAD
9448 Section will be loaded from the file into the child process memory.
9449 Set for pre-initialized code and data, clear for @code{.bss} sections.
9450 @item RELOC
9451 Section needs to be relocated before loading.
9452 @item READONLY
9453 Section cannot be modified by the child process.
9454 @item CODE
9455 Section contains executable code only.
9456 @item DATA
9457 Section contains data only (no executable code).
9458 @item ROM
9459 Section will reside in ROM.
9460 @item CONSTRUCTOR
9461 Section contains data for constructor/destructor lists.
9462 @item HAS_CONTENTS
9463 Section is not empty.
9464 @item NEVER_LOAD
9465 An instruction to the linker to not output the section.
9466 @item COFF_SHARED_LIBRARY
9467 A notification to the linker that the section contains
9468 COFF shared library information.
9469 @item IS_COMMON
9470 Section contains common symbols.
9471 @end table
9472 @end table
9473 @end table
9474
9475 All file-specifying commands allow both absolute and relative file names
9476 as arguments. @value{GDBN} always converts the file name to an absolute file
9477 name and remembers it that way.
9478
9479 @cindex shared libraries
9480 @value{GDBN} supports HP-UX, SunOS, SVr4, Irix 5, and IBM RS/6000 shared
9481 libraries.
9482
9483 @value{GDBN} automatically loads symbol definitions from shared libraries
9484 when you use the @code{run} command, or when you examine a core file.
9485 (Before you issue the @code{run} command, @value{GDBN} does not understand
9486 references to a function in a shared library, however---unless you are
9487 debugging a core file).
9488
9489 On HP-UX, if the program loads a library explicitly, @value{GDBN}
9490 automatically loads the symbols at the time of the @code{shl_load} call.
9491
9492 @c FIXME: some @value{GDBN} release may permit some refs to undef
9493 @c FIXME...symbols---eg in a break cmd---assuming they are from a shared
9494 @c FIXME...lib; check this from time to time when updating manual
9495
9496 There are times, however, when you may wish to not automatically load
9497 symbol definitions from shared libraries, such as when they are
9498 particularly large or there are many of them.
9499
9500 To control the automatic loading of shared library symbols, use the
9501 commands:
9502
9503 @table @code
9504 @kindex set auto-solib-add
9505 @item set auto-solib-add @var{mode}
9506 If @var{mode} is @code{on}, symbols from all shared object libraries
9507 will be loaded automatically when the inferior begins execution, you
9508 attach to an independently started inferior, or when the dynamic linker
9509 informs @value{GDBN} that a new library has been loaded. If @var{mode}
9510 is @code{off}, symbols must be loaded manually, using the
9511 @code{sharedlibrary} command. The default value is @code{on}.
9512
9513 @kindex show auto-solib-add
9514 @item show auto-solib-add
9515 Display the current autoloading mode.
9516 @end table
9517
9518 To explicitly load shared library symbols, use the @code{sharedlibrary}
9519 command:
9520
9521 @table @code
9522 @kindex info sharedlibrary
9523 @kindex info share
9524 @item info share
9525 @itemx info sharedlibrary
9526 Print the names of the shared libraries which are currently loaded.
9527
9528 @kindex sharedlibrary
9529 @kindex share
9530 @item sharedlibrary @var{regex}
9531 @itemx share @var{regex}
9532 Load shared object library symbols for files matching a
9533 Unix regular expression.
9534 As with files loaded automatically, it only loads shared libraries
9535 required by your program for a core file or after typing @code{run}. If
9536 @var{regex} is omitted all shared libraries required by your program are
9537 loaded.
9538 @end table
9539
9540 On some systems, such as HP-UX systems, @value{GDBN} supports
9541 autoloading shared library symbols until a limiting threshold size is
9542 reached. This provides the benefit of allowing autoloading to remain on
9543 by default, but avoids autoloading excessively large shared libraries,
9544 up to a threshold that is initially set, but which you can modify if you
9545 wish.
9546
9547 Beyond that threshold, symbols from shared libraries must be explicitly
9548 loaded. To load these symbols, use the command @code{sharedlibrary
9549 @var{filename}}. The base address of the shared library is determined
9550 automatically by @value{GDBN} and need not be specified.
9551
9552 To display or set the threshold, use the commands:
9553
9554 @table @code
9555 @kindex set auto-solib-limit
9556 @item set auto-solib-limit @var{threshold}
9557 Set the autoloading size threshold, in an integral number of megabytes.
9558 If @var{threshold} is nonzero and shared library autoloading is enabled,
9559 symbols from all shared object libraries will be loaded until the total
9560 size of the loaded shared library symbols exceeds this threshold.
9561 Otherwise, symbols must be loaded manually, using the
9562 @code{sharedlibrary} command. The default threshold is 100 (i.e. 100
9563 Mb).
9564
9565 @kindex show auto-solib-limit
9566 @item show auto-solib-limit
9567 Display the current autoloading size threshold, in megabytes.
9568 @end table
9569
9570 @node Symbol Errors
9571 @section Errors reading symbol files
9572
9573 While reading a symbol file, @value{GDBN} occasionally encounters problems,
9574 such as symbol types it does not recognize, or known bugs in compiler
9575 output. By default, @value{GDBN} does not notify you of such problems, since
9576 they are relatively common and primarily of interest to people
9577 debugging compilers. If you are interested in seeing information
9578 about ill-constructed symbol tables, you can either ask @value{GDBN} to print
9579 only one message about each such type of problem, no matter how many
9580 times the problem occurs; or you can ask @value{GDBN} to print more messages,
9581 to see how many times the problems occur, with the @code{set
9582 complaints} command (@pxref{Messages/Warnings, ,Optional warnings and
9583 messages}).
9584
9585 The messages currently printed, and their meanings, include:
9586
9587 @table @code
9588 @item inner block not inside outer block in @var{symbol}
9589
9590 The symbol information shows where symbol scopes begin and end
9591 (such as at the start of a function or a block of statements). This
9592 error indicates that an inner scope block is not fully contained
9593 in its outer scope blocks.
9594
9595 @value{GDBN} circumvents the problem by treating the inner block as if it had
9596 the same scope as the outer block. In the error message, @var{symbol}
9597 may be shown as ``@code{(don't know)}'' if the outer block is not a
9598 function.
9599
9600 @item block at @var{address} out of order
9601
9602 The symbol information for symbol scope blocks should occur in
9603 order of increasing addresses. This error indicates that it does not
9604 do so.
9605
9606 @value{GDBN} does not circumvent this problem, and has trouble
9607 locating symbols in the source file whose symbols it is reading. (You
9608 can often determine what source file is affected by specifying
9609 @code{set verbose on}. @xref{Messages/Warnings, ,Optional warnings and
9610 messages}.)
9611
9612 @item bad block start address patched
9613
9614 The symbol information for a symbol scope block has a start address
9615 smaller than the address of the preceding source line. This is known
9616 to occur in the SunOS 4.1.1 (and earlier) C compiler.
9617
9618 @value{GDBN} circumvents the problem by treating the symbol scope block as
9619 starting on the previous source line.
9620
9621 @item bad string table offset in symbol @var{n}
9622
9623 @cindex foo
9624 Symbol number @var{n} contains a pointer into the string table which is
9625 larger than the size of the string table.
9626
9627 @value{GDBN} circumvents the problem by considering the symbol to have the
9628 name @code{foo}, which may cause other problems if many symbols end up
9629 with this name.
9630
9631 @item unknown symbol type @code{0x@var{nn}}
9632
9633 The symbol information contains new data types that @value{GDBN} does
9634 not yet know how to read. @code{0x@var{nn}} is the symbol type of the
9635 uncomprehended information, in hexadecimal.
9636
9637 @value{GDBN} circumvents the error by ignoring this symbol information.
9638 This usually allows you to debug your program, though certain symbols
9639 are not accessible. If you encounter such a problem and feel like
9640 debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
9641 on @code{complain}, then go up to the function @code{read_dbx_symtab}
9642 and examine @code{*bufp} to see the symbol.
9643
9644 @item stub type has NULL name
9645
9646 @value{GDBN} could not find the full definition for a struct or class.
9647
9648 @item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
9649 The symbol information for a C@t{++} member function is missing some
9650 information that recent versions of the compiler should have output for
9651 it.
9652
9653 @item info mismatch between compiler and debugger
9654
9655 @value{GDBN} could not parse a type specification output by the compiler.
9656
9657 @end table
9658
9659 @node Targets
9660 @chapter Specifying a Debugging Target
9661
9662 @cindex debugging target
9663 @kindex target
9664
9665 A @dfn{target} is the execution environment occupied by your program.
9666
9667 Often, @value{GDBN} runs in the same host environment as your program;
9668 in that case, the debugging target is specified as a side effect when
9669 you use the @code{file} or @code{core} commands. When you need more
9670 flexibility---for example, running @value{GDBN} on a physically separate
9671 host, or controlling a standalone system over a serial port or a
9672 realtime system over a TCP/IP connection---you can use the @code{target}
9673 command to specify one of the target types configured for @value{GDBN}
9674 (@pxref{Target Commands, ,Commands for managing targets}).
9675
9676 @menu
9677 * Active Targets:: Active targets
9678 * Target Commands:: Commands for managing targets
9679 * Byte Order:: Choosing target byte order
9680 * Remote:: Remote debugging
9681 * KOD:: Kernel Object Display
9682
9683 @end menu
9684
9685 @node Active Targets
9686 @section Active targets
9687
9688 @cindex stacking targets
9689 @cindex active targets
9690 @cindex multiple targets
9691
9692 There are three classes of targets: processes, core files, and
9693 executable files. @value{GDBN} can work concurrently on up to three
9694 active targets, one in each class. This allows you to (for example)
9695 start a process and inspect its activity without abandoning your work on
9696 a core file.
9697
9698 For example, if you execute @samp{gdb a.out}, then the executable file
9699 @code{a.out} is the only active target. If you designate a core file as
9700 well---presumably from a prior run that crashed and coredumped---then
9701 @value{GDBN} has two active targets and uses them in tandem, looking
9702 first in the corefile target, then in the executable file, to satisfy
9703 requests for memory addresses. (Typically, these two classes of target
9704 are complementary, since core files contain only a program's
9705 read-write memory---variables and so on---plus machine status, while
9706 executable files contain only the program text and initialized data.)
9707
9708 When you type @code{run}, your executable file becomes an active process
9709 target as well. When a process target is active, all @value{GDBN}
9710 commands requesting memory addresses refer to that target; addresses in
9711 an active core file or executable file target are obscured while the
9712 process target is active.
9713
9714 Use the @code{core-file} and @code{exec-file} commands to select a new
9715 core file or executable target (@pxref{Files, ,Commands to specify
9716 files}). To specify as a target a process that is already running, use
9717 the @code{attach} command (@pxref{Attach, ,Debugging an already-running
9718 process}).
9719
9720 @node Target Commands
9721 @section Commands for managing targets
9722
9723 @table @code
9724 @item target @var{type} @var{parameters}
9725 Connects the @value{GDBN} host environment to a target machine or
9726 process. A target is typically a protocol for talking to debugging
9727 facilities. You use the argument @var{type} to specify the type or
9728 protocol of the target machine.
9729
9730 Further @var{parameters} are interpreted by the target protocol, but
9731 typically include things like device names or host names to connect
9732 with, process numbers, and baud rates.
9733
9734 The @code{target} command does not repeat if you press @key{RET} again
9735 after executing the command.
9736
9737 @kindex help target
9738 @item help target
9739 Displays the names of all targets available. To display targets
9740 currently selected, use either @code{info target} or @code{info files}
9741 (@pxref{Files, ,Commands to specify files}).
9742
9743 @item help target @var{name}
9744 Describe a particular target, including any parameters necessary to
9745 select it.
9746
9747 @kindex set gnutarget
9748 @item set gnutarget @var{args}
9749 @value{GDBN} uses its own library BFD to read your files. @value{GDBN}
9750 knows whether it is reading an @dfn{executable},
9751 a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
9752 with the @code{set gnutarget} command. Unlike most @code{target} commands,
9753 with @code{gnutarget} the @code{target} refers to a program, not a machine.
9754
9755 @quotation
9756 @emph{Warning:} To specify a file format with @code{set gnutarget},
9757 you must know the actual BFD name.
9758 @end quotation
9759
9760 @noindent
9761 @xref{Files, , Commands to specify files}.
9762
9763 @kindex show gnutarget
9764 @item show gnutarget
9765 Use the @code{show gnutarget} command to display what file format
9766 @code{gnutarget} is set to read. If you have not set @code{gnutarget},
9767 @value{GDBN} will determine the file format for each file automatically,
9768 and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
9769 @end table
9770
9771 Here are some common targets (available, or not, depending on the GDB
9772 configuration):
9773
9774 @table @code
9775 @kindex target exec
9776 @item target exec @var{program}
9777 An executable file. @samp{target exec @var{program}} is the same as
9778 @samp{exec-file @var{program}}.
9779
9780 @kindex target core
9781 @item target core @var{filename}
9782 A core dump file. @samp{target core @var{filename}} is the same as
9783 @samp{core-file @var{filename}}.
9784
9785 @kindex target remote
9786 @item target remote @var{dev}
9787 Remote serial target in GDB-specific protocol. The argument @var{dev}
9788 specifies what serial device to use for the connection (e.g.
9789 @file{/dev/ttya}). @xref{Remote, ,Remote debugging}. @code{target remote}
9790 supports the @code{load} command. This is only useful if you have
9791 some other way of getting the stub to the target system, and you can put
9792 it somewhere in memory where it won't get clobbered by the download.
9793
9794 @kindex target sim
9795 @item target sim
9796 Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
9797 In general,
9798 @example
9799 target sim
9800 load
9801 run
9802 @end example
9803 @noindent
9804 works; however, you cannot assume that a specific memory map, device
9805 drivers, or even basic I/O is available, although some simulators do
9806 provide these. For info about any processor-specific simulator details,
9807 see the appropriate section in @ref{Embedded Processors, ,Embedded
9808 Processors}.
9809
9810 @end table
9811
9812 Some configurations may include these targets as well:
9813
9814 @table @code
9815
9816 @kindex target nrom
9817 @item target nrom @var{dev}
9818 NetROM ROM emulator. This target only supports downloading.
9819
9820 @end table
9821
9822 Different targets are available on different configurations of @value{GDBN};
9823 your configuration may have more or fewer targets.
9824
9825 Many remote targets require you to download the executable's code
9826 once you've successfully established a connection.
9827
9828 @table @code
9829
9830 @kindex load @var{filename}
9831 @item load @var{filename}
9832 Depending on what remote debugging facilities are configured into
9833 @value{GDBN}, the @code{load} command may be available. Where it exists, it
9834 is meant to make @var{filename} (an executable) available for debugging
9835 on the remote system---by downloading, or dynamic linking, for example.
9836 @code{load} also records the @var{filename} symbol table in @value{GDBN}, like
9837 the @code{add-symbol-file} command.
9838
9839 If your @value{GDBN} does not have a @code{load} command, attempting to
9840 execute it gets the error message ``@code{You can't do that when your
9841 target is @dots{}}''
9842
9843 The file is loaded at whatever address is specified in the executable.
9844 For some object file formats, you can specify the load address when you
9845 link the program; for other formats, like a.out, the object file format
9846 specifies a fixed address.
9847 @c FIXME! This would be a good place for an xref to the GNU linker doc.
9848
9849 @code{load} does not repeat if you press @key{RET} again after using it.
9850 @end table
9851
9852 @node Byte Order
9853 @section Choosing target byte order
9854
9855 @cindex choosing target byte order
9856 @cindex target byte order
9857
9858 Some types of processors, such as the MIPS, PowerPC, and Hitachi SH,
9859 offer the ability to run either big-endian or little-endian byte
9860 orders. Usually the executable or symbol will include a bit to
9861 designate the endian-ness, and you will not need to worry about
9862 which to use. However, you may still find it useful to adjust
9863 @value{GDBN}'s idea of processor endian-ness manually.
9864
9865 @table @code
9866 @kindex set endian big
9867 @item set endian big
9868 Instruct @value{GDBN} to assume the target is big-endian.
9869
9870 @kindex set endian little
9871 @item set endian little
9872 Instruct @value{GDBN} to assume the target is little-endian.
9873
9874 @kindex set endian auto
9875 @item set endian auto
9876 Instruct @value{GDBN} to use the byte order associated with the
9877 executable.
9878
9879 @item show endian
9880 Display @value{GDBN}'s current idea of the target byte order.
9881
9882 @end table
9883
9884 Note that these commands merely adjust interpretation of symbolic
9885 data on the host, and that they have absolutely no effect on the
9886 target system.
9887
9888 @node Remote
9889 @section Remote debugging
9890 @cindex remote debugging
9891
9892 If you are trying to debug a program running on a machine that cannot run
9893 @value{GDBN} in the usual way, it is often useful to use remote debugging.
9894 For example, you might use remote debugging on an operating system kernel,
9895 or on a small system which does not have a general purpose operating system
9896 powerful enough to run a full-featured debugger.
9897
9898 Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
9899 to make this work with particular debugging targets. In addition,
9900 @value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
9901 but not specific to any particular target system) which you can use if you
9902 write the remote stubs---the code that runs on the remote system to
9903 communicate with @value{GDBN}.
9904
9905 Other remote targets may be available in your
9906 configuration of @value{GDBN}; use @code{help target} to list them.
9907
9908 @node KOD
9909 @section Kernel Object Display
9910
9911 @cindex kernel object display
9912 @cindex kernel object
9913 @cindex KOD
9914
9915 Some targets support kernel object display. Using this facility,
9916 @value{GDBN} communicates specially with the underlying operating system
9917 and can display information about operating system-level objects such as
9918 mutexes and other synchronization objects. Exactly which objects can be
9919 displayed is determined on a per-OS basis.
9920
9921 Use the @code{set os} command to set the operating system. This tells
9922 @value{GDBN} which kernel object display module to initialize:
9923
9924 @example
9925 (@value{GDBP}) set os cisco
9926 @end example
9927
9928 If @code{set os} succeeds, @value{GDBN} will display some information
9929 about the operating system, and will create a new @code{info} command
9930 which can be used to query the target. The @code{info} command is named
9931 after the operating system:
9932
9933 @example
9934 (@value{GDBP}) info cisco
9935 List of Cisco Kernel Objects
9936 Object Description
9937 any Any and all objects
9938 @end example
9939
9940 Further subcommands can be used to query about particular objects known
9941 by the kernel.
9942
9943 There is currently no way to determine whether a given operating system
9944 is supported other than to try it.
9945
9946
9947 @node Remote Debugging
9948 @chapter Debugging remote programs
9949
9950 @menu
9951 * Server:: Using the gdbserver program
9952 * NetWare:: Using the gdbserve.nlm program
9953 * remote stub:: Implementing a remote stub
9954 @end menu
9955
9956 @node Server
9957 @section Using the @code{gdbserver} program
9958
9959 @kindex gdbserver
9960 @cindex remote connection without stubs
9961 @code{gdbserver} is a control program for Unix-like systems, which
9962 allows you to connect your program with a remote @value{GDBN} via
9963 @code{target remote}---but without linking in the usual debugging stub.
9964
9965 @code{gdbserver} is not a complete replacement for the debugging stubs,
9966 because it requires essentially the same operating-system facilities
9967 that @value{GDBN} itself does. In fact, a system that can run
9968 @code{gdbserver} to connect to a remote @value{GDBN} could also run
9969 @value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
9970 because it is a much smaller program than @value{GDBN} itself. It is
9971 also easier to port than all of @value{GDBN}, so you may be able to get
9972 started more quickly on a new system by using @code{gdbserver}.
9973 Finally, if you develop code for real-time systems, you may find that
9974 the tradeoffs involved in real-time operation make it more convenient to
9975 do as much development work as possible on another system, for example
9976 by cross-compiling. You can use @code{gdbserver} to make a similar
9977 choice for debugging.
9978
9979 @value{GDBN} and @code{gdbserver} communicate via either a serial line
9980 or a TCP connection, using the standard @value{GDBN} remote serial
9981 protocol.
9982
9983 @table @emph
9984 @item On the target machine,
9985 you need to have a copy of the program you want to debug.
9986 @code{gdbserver} does not need your program's symbol table, so you can
9987 strip the program if necessary to save space. @value{GDBN} on the host
9988 system does all the symbol handling.
9989
9990 To use the server, you must tell it how to communicate with @value{GDBN};
9991 the name of your program; and the arguments for your program. The
9992 syntax is:
9993
9994 @smallexample
9995 target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
9996 @end smallexample
9997
9998 @var{comm} is either a device name (to use a serial line) or a TCP
9999 hostname and portnumber. For example, to debug Emacs with the argument
10000 @samp{foo.txt} and communicate with @value{GDBN} over the serial port
10001 @file{/dev/com1}:
10002
10003 @smallexample
10004 target> gdbserver /dev/com1 emacs foo.txt
10005 @end smallexample
10006
10007 @code{gdbserver} waits passively for the host @value{GDBN} to communicate
10008 with it.
10009
10010 To use a TCP connection instead of a serial line:
10011
10012 @smallexample
10013 target> gdbserver host:2345 emacs foo.txt
10014 @end smallexample
10015
10016 The only difference from the previous example is the first argument,
10017 specifying that you are communicating with the host @value{GDBN} via
10018 TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
10019 expect a TCP connection from machine @samp{host} to local TCP port 2345.
10020 (Currently, the @samp{host} part is ignored.) You can choose any number
10021 you want for the port number as long as it does not conflict with any
10022 TCP ports already in use on the target system (for example, @code{23} is
10023 reserved for @code{telnet}).@footnote{If you choose a port number that
10024 conflicts with another service, @code{gdbserver} prints an error message
10025 and exits.} You must use the same port number with the host @value{GDBN}
10026 @code{target remote} command.
10027
10028 @item On the @value{GDBN} host machine,
10029 you need an unstripped copy of your program, since @value{GDBN} needs
10030 symbols and debugging information. Start up @value{GDBN} as usual,
10031 using the name of the local copy of your program as the first argument.
10032 (You may also need the @w{@samp{--baud}} option if the serial line is
10033 running at anything other than 9600@dmn{bps}.) After that, use @code{target
10034 remote} to establish communications with @code{gdbserver}. Its argument
10035 is either a device name (usually a serial device, like
10036 @file{/dev/ttyb}), or a TCP port descriptor in the form
10037 @code{@var{host}:@var{PORT}}. For example:
10038
10039 @smallexample
10040 (@value{GDBP}) target remote /dev/ttyb
10041 @end smallexample
10042
10043 @noindent
10044 communicates with the server via serial line @file{/dev/ttyb}, and
10045
10046 @smallexample
10047 (@value{GDBP}) target remote the-target:2345
10048 @end smallexample
10049
10050 @noindent
10051 communicates via a TCP connection to port 2345 on host @w{@file{the-target}}.
10052 For TCP connections, you must start up @code{gdbserver} prior to using
10053 the @code{target remote} command. Otherwise you may get an error whose
10054 text depends on the host system, but which usually looks something like
10055 @samp{Connection refused}.
10056 @end table
10057
10058 @node NetWare
10059 @section Using the @code{gdbserve.nlm} program
10060
10061 @kindex gdbserve.nlm
10062 @code{gdbserve.nlm} is a control program for NetWare systems, which
10063 allows you to connect your program with a remote @value{GDBN} via
10064 @code{target remote}.
10065
10066 @value{GDBN} and @code{gdbserve.nlm} communicate via a serial line,
10067 using the standard @value{GDBN} remote serial protocol.
10068
10069 @table @emph
10070 @item On the target machine,
10071 you need to have a copy of the program you want to debug.
10072 @code{gdbserve.nlm} does not need your program's symbol table, so you
10073 can strip the program if necessary to save space. @value{GDBN} on the
10074 host system does all the symbol handling.
10075
10076 To use the server, you must tell it how to communicate with
10077 @value{GDBN}; the name of your program; and the arguments for your
10078 program. The syntax is:
10079
10080 @smallexample
10081 load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
10082 [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
10083 @end smallexample
10084
10085 @var{board} and @var{port} specify the serial line; @var{baud} specifies
10086 the baud rate used by the connection. @var{port} and @var{node} default
10087 to 0, @var{baud} defaults to 9600@dmn{bps}.
10088
10089 For example, to debug Emacs with the argument @samp{foo.txt}and
10090 communicate with @value{GDBN} over serial port number 2 or board 1
10091 using a 19200@dmn{bps} connection:
10092
10093 @smallexample
10094 load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
10095 @end smallexample
10096
10097 @item On the @value{GDBN} host machine,
10098 you need an unstripped copy of your program, since @value{GDBN} needs
10099 symbols and debugging information. Start up @value{GDBN} as usual,
10100 using the name of the local copy of your program as the first argument.
10101 (You may also need the @w{@samp{--baud}} option if the serial line is
10102 running at anything other than 9600@dmn{bps}. After that, use @code{target
10103 remote} to establish communications with @code{gdbserve.nlm}. Its
10104 argument is a device name (usually a serial device, like
10105 @file{/dev/ttyb}). For example:
10106
10107 @smallexample
10108 (@value{GDBP}) target remote /dev/ttyb
10109 @end smallexample
10110
10111 @noindent
10112 communications with the server via serial line @file{/dev/ttyb}.
10113 @end table
10114
10115 @node remote stub
10116 @section Implementing a remote stub
10117
10118 @cindex debugging stub, example
10119 @cindex remote stub, example
10120 @cindex stub example, remote debugging
10121 The stub files provided with @value{GDBN} implement the target side of the
10122 communication protocol, and the @value{GDBN} side is implemented in the
10123 @value{GDBN} source file @file{remote.c}. Normally, you can simply allow
10124 these subroutines to communicate, and ignore the details. (If you're
10125 implementing your own stub file, you can still ignore the details: start
10126 with one of the existing stub files. @file{sparc-stub.c} is the best
10127 organized, and therefore the easiest to read.)
10128
10129 @cindex remote serial debugging, overview
10130 To debug a program running on another machine (the debugging
10131 @dfn{target} machine), you must first arrange for all the usual
10132 prerequisites for the program to run by itself. For example, for a C
10133 program, you need:
10134
10135 @enumerate
10136 @item
10137 A startup routine to set up the C runtime environment; these usually
10138 have a name like @file{crt0}. The startup routine may be supplied by
10139 your hardware supplier, or you may have to write your own.
10140
10141 @item
10142 A C subroutine library to support your program's
10143 subroutine calls, notably managing input and output.
10144
10145 @item
10146 A way of getting your program to the other machine---for example, a
10147 download program. These are often supplied by the hardware
10148 manufacturer, but you may have to write your own from hardware
10149 documentation.
10150 @end enumerate
10151
10152 The next step is to arrange for your program to use a serial port to
10153 communicate with the machine where @value{GDBN} is running (the @dfn{host}
10154 machine). In general terms, the scheme looks like this:
10155
10156 @table @emph
10157 @item On the host,
10158 @value{GDBN} already understands how to use this protocol; when everything
10159 else is set up, you can simply use the @samp{target remote} command
10160 (@pxref{Targets,,Specifying a Debugging Target}).
10161
10162 @item On the target,
10163 you must link with your program a few special-purpose subroutines that
10164 implement the @value{GDBN} remote serial protocol. The file containing these
10165 subroutines is called a @dfn{debugging stub}.
10166
10167 On certain remote targets, you can use an auxiliary program
10168 @code{gdbserver} instead of linking a stub into your program.
10169 @xref{Server,,Using the @code{gdbserver} program}, for details.
10170 @end table
10171
10172 The debugging stub is specific to the architecture of the remote
10173 machine; for example, use @file{sparc-stub.c} to debug programs on
10174 @sc{sparc} boards.
10175
10176 @cindex remote serial stub list
10177 These working remote stubs are distributed with @value{GDBN}:
10178
10179 @table @code
10180
10181 @item i386-stub.c
10182 @cindex @file{i386-stub.c}
10183 @cindex Intel
10184 @cindex i386
10185 For Intel 386 and compatible architectures.
10186
10187 @item m68k-stub.c
10188 @cindex @file{m68k-stub.c}
10189 @cindex Motorola 680x0
10190 @cindex m680x0
10191 For Motorola 680x0 architectures.
10192
10193 @item sh-stub.c
10194 @cindex @file{sh-stub.c}
10195 @cindex Hitachi
10196 @cindex SH
10197 For Hitachi SH architectures.
10198
10199 @item sparc-stub.c
10200 @cindex @file{sparc-stub.c}
10201 @cindex Sparc
10202 For @sc{sparc} architectures.
10203
10204 @item sparcl-stub.c
10205 @cindex @file{sparcl-stub.c}
10206 @cindex Fujitsu
10207 @cindex SparcLite
10208 For Fujitsu @sc{sparclite} architectures.
10209
10210 @end table
10211
10212 The @file{README} file in the @value{GDBN} distribution may list other
10213 recently added stubs.
10214
10215 @menu
10216 * Stub Contents:: What the stub can do for you
10217 * Bootstrapping:: What you must do for the stub
10218 * Debug Session:: Putting it all together
10219 @end menu
10220
10221 @node Stub Contents
10222 @subsection What the stub can do for you
10223
10224 @cindex remote serial stub
10225 The debugging stub for your architecture supplies these three
10226 subroutines:
10227
10228 @table @code
10229 @item set_debug_traps
10230 @kindex set_debug_traps
10231 @cindex remote serial stub, initialization
10232 This routine arranges for @code{handle_exception} to run when your
10233 program stops. You must call this subroutine explicitly near the
10234 beginning of your program.
10235
10236 @item handle_exception
10237 @kindex handle_exception
10238 @cindex remote serial stub, main routine
10239 This is the central workhorse, but your program never calls it
10240 explicitly---the setup code arranges for @code{handle_exception} to
10241 run when a trap is triggered.
10242
10243 @code{handle_exception} takes control when your program stops during
10244 execution (for example, on a breakpoint), and mediates communications
10245 with @value{GDBN} on the host machine. This is where the communications
10246 protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
10247 representative on the target machine. It begins by sending summary
10248 information on the state of your program, then continues to execute,
10249 retrieving and transmitting any information @value{GDBN} needs, until you
10250 execute a @value{GDBN} command that makes your program resume; at that point,
10251 @code{handle_exception} returns control to your own code on the target
10252 machine.
10253
10254 @item breakpoint
10255 @cindex @code{breakpoint} subroutine, remote
10256 Use this auxiliary subroutine to make your program contain a
10257 breakpoint. Depending on the particular situation, this may be the only
10258 way for @value{GDBN} to get control. For instance, if your target
10259 machine has some sort of interrupt button, you won't need to call this;
10260 pressing the interrupt button transfers control to
10261 @code{handle_exception}---in effect, to @value{GDBN}. On some machines,
10262 simply receiving characters on the serial port may also trigger a trap;
10263 again, in that situation, you don't need to call @code{breakpoint} from
10264 your own program---simply running @samp{target remote} from the host
10265 @value{GDBN} session gets control.
10266
10267 Call @code{breakpoint} if none of these is true, or if you simply want
10268 to make certain your program stops at a predetermined point for the
10269 start of your debugging session.
10270 @end table
10271
10272 @node Bootstrapping
10273 @subsection What you must do for the stub
10274
10275 @cindex remote stub, support routines
10276 The debugging stubs that come with @value{GDBN} are set up for a particular
10277 chip architecture, but they have no information about the rest of your
10278 debugging target machine.
10279
10280 First of all you need to tell the stub how to communicate with the
10281 serial port.
10282
10283 @table @code
10284 @item int getDebugChar()
10285 @kindex getDebugChar
10286 Write this subroutine to read a single character from the serial port.
10287 It may be identical to @code{getchar} for your target system; a
10288 different name is used to allow you to distinguish the two if you wish.
10289
10290 @item void putDebugChar(int)
10291 @kindex putDebugChar
10292 Write this subroutine to write a single character to the serial port.
10293 It may be identical to @code{putchar} for your target system; a
10294 different name is used to allow you to distinguish the two if you wish.
10295 @end table
10296
10297 @cindex control C, and remote debugging
10298 @cindex interrupting remote targets
10299 If you want @value{GDBN} to be able to stop your program while it is
10300 running, you need to use an interrupt-driven serial driver, and arrange
10301 for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
10302 character). That is the character which @value{GDBN} uses to tell the
10303 remote system to stop.
10304
10305 Getting the debugging target to return the proper status to @value{GDBN}
10306 probably requires changes to the standard stub; one quick and dirty way
10307 is to just execute a breakpoint instruction (the ``dirty'' part is that
10308 @value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
10309
10310 Other routines you need to supply are:
10311
10312 @table @code
10313 @item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
10314 @kindex exceptionHandler
10315 Write this function to install @var{exception_address} in the exception
10316 handling tables. You need to do this because the stub does not have any
10317 way of knowing what the exception handling tables on your target system
10318 are like (for example, the processor's table might be in @sc{rom},
10319 containing entries which point to a table in @sc{ram}).
10320 @var{exception_number} is the exception number which should be changed;
10321 its meaning is architecture-dependent (for example, different numbers
10322 might represent divide by zero, misaligned access, etc). When this
10323 exception occurs, control should be transferred directly to
10324 @var{exception_address}, and the processor state (stack, registers,
10325 and so on) should be just as it is when a processor exception occurs. So if
10326 you want to use a jump instruction to reach @var{exception_address}, it
10327 should be a simple jump, not a jump to subroutine.
10328
10329 For the 386, @var{exception_address} should be installed as an interrupt
10330 gate so that interrupts are masked while the handler runs. The gate
10331 should be at privilege level 0 (the most privileged level). The
10332 @sc{sparc} and 68k stubs are able to mask interrupts themselves without
10333 help from @code{exceptionHandler}.
10334
10335 @item void flush_i_cache()
10336 @kindex flush_i_cache
10337 On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
10338 instruction cache, if any, on your target machine. If there is no
10339 instruction cache, this subroutine may be a no-op.
10340
10341 On target machines that have instruction caches, @value{GDBN} requires this
10342 function to make certain that the state of your program is stable.
10343 @end table
10344
10345 @noindent
10346 You must also make sure this library routine is available:
10347
10348 @table @code
10349 @item void *memset(void *, int, int)
10350 @kindex memset
10351 This is the standard library function @code{memset} that sets an area of
10352 memory to a known value. If you have one of the free versions of
10353 @code{libc.a}, @code{memset} can be found there; otherwise, you must
10354 either obtain it from your hardware manufacturer, or write your own.
10355 @end table
10356
10357 If you do not use the GNU C compiler, you may need other standard
10358 library subroutines as well; this varies from one stub to another,
10359 but in general the stubs are likely to use any of the common library
10360 subroutines which @code{@value{GCC}} generates as inline code.
10361
10362
10363 @node Debug Session
10364 @subsection Putting it all together
10365
10366 @cindex remote serial debugging summary
10367 In summary, when your program is ready to debug, you must follow these
10368 steps.
10369
10370 @enumerate
10371 @item
10372 Make sure you have defined the supporting low-level routines
10373 (@pxref{Bootstrapping,,What you must do for the stub}):
10374 @display
10375 @code{getDebugChar}, @code{putDebugChar},
10376 @code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
10377 @end display
10378
10379 @item
10380 Insert these lines near the top of your program:
10381
10382 @example
10383 set_debug_traps();
10384 breakpoint();
10385 @end example
10386
10387 @item
10388 For the 680x0 stub only, you need to provide a variable called
10389 @code{exceptionHook}. Normally you just use:
10390
10391 @example
10392 void (*exceptionHook)() = 0;
10393 @end example
10394
10395 @noindent
10396 but if before calling @code{set_debug_traps}, you set it to point to a
10397 function in your program, that function is called when
10398 @code{@value{GDBN}} continues after stopping on a trap (for example, bus
10399 error). The function indicated by @code{exceptionHook} is called with
10400 one parameter: an @code{int} which is the exception number.
10401
10402 @item
10403 Compile and link together: your program, the @value{GDBN} debugging stub for
10404 your target architecture, and the supporting subroutines.
10405
10406 @item
10407 Make sure you have a serial connection between your target machine and
10408 the @value{GDBN} host, and identify the serial port on the host.
10409
10410 @item
10411 @c The "remote" target now provides a `load' command, so we should
10412 @c document that. FIXME.
10413 Download your program to your target machine (or get it there by
10414 whatever means the manufacturer provides), and start it.
10415
10416 @item
10417 To start remote debugging, run @value{GDBN} on the host machine, and specify
10418 as an executable file the program that is running in the remote machine.
10419 This tells @value{GDBN} how to find your program's symbols and the contents
10420 of its pure text.
10421
10422 @item
10423 @cindex serial line, @code{target remote}
10424 Establish communication using the @code{target remote} command.
10425 Its argument specifies how to communicate with the target
10426 machine---either via a devicename attached to a direct serial line, or a
10427 TCP port (usually to a terminal server which in turn has a serial line
10428 to the target). For example, to use a serial line connected to the
10429 device named @file{/dev/ttyb}:
10430
10431 @example
10432 target remote /dev/ttyb
10433 @end example
10434
10435 @cindex TCP port, @code{target remote}
10436 To use a TCP connection, use an argument of the form
10437 @code{@var{host}:port}. For example, to connect to port 2828 on a
10438 terminal server named @code{manyfarms}:
10439
10440 @example
10441 target remote manyfarms:2828
10442 @end example
10443
10444 If your remote target is actually running on the same machine as
10445 your debugger session (e.g.@: a simulator of your target running on
10446 the same host), you can omit the hostname. For example, to connect
10447 to port 1234 on your local machine:
10448
10449 @example
10450 target remote :1234
10451 @end example
10452 @noindent
10453
10454 Note that the colon is still required here.
10455 @end enumerate
10456
10457 Now you can use all the usual commands to examine and change data and to
10458 step and continue the remote program.
10459
10460 To resume the remote program and stop debugging it, use the @code{detach}
10461 command.
10462
10463 @cindex interrupting remote programs
10464 @cindex remote programs, interrupting
10465 Whenever @value{GDBN} is waiting for the remote program, if you type the
10466 interrupt character (often @key{C-C}), @value{GDBN} attempts to stop the
10467 program. This may or may not succeed, depending in part on the hardware
10468 and the serial drivers the remote system uses. If you type the
10469 interrupt character once again, @value{GDBN} displays this prompt:
10470
10471 @example
10472 Interrupted while waiting for the program.
10473 Give up (and stop debugging it)? (y or n)
10474 @end example
10475
10476 If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
10477 (If you decide you want to try again later, you can use @samp{target
10478 remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
10479 goes back to waiting.
10480
10481
10482 @node Configurations
10483 @chapter Configuration-Specific Information
10484
10485 While nearly all @value{GDBN} commands are available for all native and
10486 cross versions of the debugger, there are some exceptions. This chapter
10487 describes things that are only available in certain configurations.
10488
10489 There are three major categories of configurations: native
10490 configurations, where the host and target are the same, embedded
10491 operating system configurations, which are usually the same for several
10492 different processor architectures, and bare embedded processors, which
10493 are quite different from each other.
10494
10495 @menu
10496 * Native::
10497 * Embedded OS::
10498 * Embedded Processors::
10499 * Architectures::
10500 @end menu
10501
10502 @node Native
10503 @section Native
10504
10505 This section describes details specific to particular native
10506 configurations.
10507
10508 @menu
10509 * HP-UX:: HP-UX
10510 * SVR4 Process Information:: SVR4 process information
10511 * DJGPP Native:: Features specific to the DJGPP port
10512 @end menu
10513
10514 @node HP-UX
10515 @subsection HP-UX
10516
10517 On HP-UX systems, if you refer to a function or variable name that
10518 begins with a dollar sign, @value{GDBN} searches for a user or system
10519 name first, before it searches for a convenience variable.
10520
10521 @node SVR4 Process Information
10522 @subsection SVR4 process information
10523
10524 @kindex /proc
10525 @cindex process image
10526
10527 Many versions of SVR4 provide a facility called @samp{/proc} that can be
10528 used to examine the image of a running process using file-system
10529 subroutines. If @value{GDBN} is configured for an operating system with
10530 this facility, the command @code{info proc} is available to report on
10531 several kinds of information about the process running your program.
10532 @code{info proc} works only on SVR4 systems that include the
10533 @code{procfs} code. This includes OSF/1 (Digital Unix), Solaris, Irix,
10534 and Unixware, but not HP-UX or Linux, for example.
10535
10536 @table @code
10537 @kindex info proc
10538 @item info proc
10539 Summarize available information about the process.
10540
10541 @kindex info proc mappings
10542 @item info proc mappings
10543 Report on the address ranges accessible in the program, with information
10544 on whether your program may read, write, or execute each range.
10545 @ignore
10546 @comment These sub-options of 'info proc' were not included when
10547 @comment procfs.c was re-written. Keep their descriptions around
10548 @comment against the day when someone finds the time to put them back in.
10549 @kindex info proc times
10550 @item info proc times
10551 Starting time, user CPU time, and system CPU time for your program and
10552 its children.
10553
10554 @kindex info proc id
10555 @item info proc id
10556 Report on the process IDs related to your program: its own process ID,
10557 the ID of its parent, the process group ID, and the session ID.
10558
10559 @kindex info proc status
10560 @item info proc status
10561 General information on the state of the process. If the process is
10562 stopped, this report includes the reason for stopping, and any signal
10563 received.
10564
10565 @item info proc all
10566 Show all the above information about the process.
10567 @end ignore
10568 @end table
10569
10570 @node DJGPP Native
10571 @subsection Features for Debugging @sc{djgpp} Programs
10572 @cindex @sc{djgpp} debugging
10573 @cindex native @sc{djgpp} debugging
10574 @cindex MS-DOS-specific commands
10575
10576 @sc{djgpp} is the port of @sc{gnu} development tools to MS-DOS and
10577 MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
10578 that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
10579 top of real-mode DOS systems and their emulations.
10580
10581 @value{GDBN} supports native debugging of @sc{djgpp} programs, and
10582 defines a few commands specific to the @sc{djgpp} port. This
10583 subsection describes those commands.
10584
10585 @table @code
10586 @kindex info dos
10587 @item info dos
10588 This is a prefix of @sc{djgpp}-specific commands which print
10589 information about the target system and important OS structures.
10590
10591 @kindex sysinfo
10592 @cindex MS-DOS system info
10593 @cindex free memory information (MS-DOS)
10594 @item info dos sysinfo
10595 This command displays assorted information about the underlying
10596 platform: the CPU type and features, the OS version and flavor, the
10597 DPMI version, and the available conventional and DPMI memory.
10598
10599 @cindex GDT
10600 @cindex LDT
10601 @cindex IDT
10602 @cindex segment descriptor tables
10603 @cindex descriptor tables display
10604 @item info dos gdt
10605 @itemx info dos ldt
10606 @itemx info dos idt
10607 These 3 commands display entries from, respectively, Global, Local,
10608 and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
10609 tables are data structures which store a descriptor for each segment
10610 that is currently in use. The segment's selector is an index into a
10611 descriptor table; the table entry for that index holds the
10612 descriptor's base address and limit, and its attributes and access
10613 rights.
10614
10615 A typical @sc{djgpp} program uses 3 segments: a code segment, a data
10616 segment (used for both data and the stack), and a DOS segment (which
10617 allows access to DOS/BIOS data structures and absolute addresses in
10618 conventional memory). However, the DPMI host will usually define
10619 additional segments in order to support the DPMI environment.
10620
10621 @cindex garbled pointers
10622 These commands allow to display entries from the descriptor tables.
10623 Without an argument, all entries from the specified table are
10624 displayed. An argument, which should be an integer expression, means
10625 display a single entry whose index is given by the argument. For
10626 example, here's a convenient way to display information about the
10627 debugged program's data segment:
10628
10629 @smallexample
10630 @exdent @code{(@value{GDBP}) info dos ldt $ds}
10631 @exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
10632 @end smallexample
10633
10634 @noindent
10635 This comes in handy when you want to see whether a pointer is outside
10636 the data segment's limit (i.e.@: @dfn{garbled}).
10637
10638 @cindex page tables display (MS-DOS)
10639 @item info dos pde
10640 @itemx info dos pte
10641 These two commands display entries from, respectively, the Page
10642 Directory and the Page Tables. Page Directories and Page Tables are
10643 data structures which control how virtual memory addresses are mapped
10644 into physical addresses. A Page Table includes an entry for every
10645 page of memory that is mapped into the program's address space; there
10646 may be several Page Tables, each one holding up to 4096 entries. A
10647 Page Directory has up to 4096 entries, one each for every Page Table
10648 that is currently in use.
10649
10650 Without an argument, @kbd{info dos pde} displays the entire Page
10651 Directory, and @kbd{info dos pte} displays all the entries in all of
10652 the Page Tables. An argument, an integer expression, given to the
10653 @kbd{info dos pde} command means display only that entry from the Page
10654 Directory table. An argument given to the @kbd{info dos pte} command
10655 means display entries from a single Page Table, the one pointed to by
10656 the specified entry in the Page Directory.
10657
10658 @cindex direct memory access (DMA) on MS-DOS
10659 These commands are useful when your program uses @dfn{DMA} (Direct
10660 Memory Access), which needs physical addresses to program the DMA
10661 controller.
10662
10663 These commands are supported only with some DPMI servers.
10664
10665 @cindex physical address from linear address
10666 @item info dos address-pte @var{addr}
10667 This command displays the Page Table entry for a specified linear
10668 address. The argument linear address @var{addr} should already have the
10669 appropriate segment's base address added to it, because this command
10670 accepts addresses which may belong to @emph{any} segment. For
10671 example, here's how to display the Page Table entry for the page where
10672 the variable @code{i} is stored:
10673
10674 @smallexample
10675 @exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
10676 @exdent @code{Page Table entry for address 0x11a00d30:}
10677 @exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
10678 @end smallexample
10679
10680 @noindent
10681 This says that @code{i} is stored at offset @code{0xd30} from the page
10682 whose physical base address is @code{0x02698000}, and prints all the
10683 attributes of that page.
10684
10685 Note that you must cast the addresses of variables to a @code{char *},
10686 since otherwise the value of @code{__djgpp_base_address}, the base
10687 address of all variables and functions in a @sc{djgpp} program, will
10688 be added using the rules of C pointer arithmetics: if @code{i} is
10689 declared an @code{int}, @value{GDBN} will add 4 times the value of
10690 @code{__djgpp_base_address} to the address of @code{i}.
10691
10692 Here's another example, it displays the Page Table entry for the
10693 transfer buffer:
10694
10695 @smallexample
10696 @exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
10697 @exdent @code{Page Table entry for address 0x29110:}
10698 @exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
10699 @end smallexample
10700
10701 @noindent
10702 (The @code{+ 3} offset is because the transfer buffer's address is the
10703 3rd member of the @code{_go32_info_block} structure.) The output of
10704 this command clearly shows that addresses in conventional memory are
10705 mapped 1:1, i.e.@: the physical and linear addresses are identical.
10706
10707 This command is supported only with some DPMI servers.
10708 @end table
10709
10710 @node Embedded OS
10711 @section Embedded Operating Systems
10712
10713 This section describes configurations involving the debugging of
10714 embedded operating systems that are available for several different
10715 architectures.
10716
10717 @menu
10718 * VxWorks:: Using @value{GDBN} with VxWorks
10719 @end menu
10720
10721 @value{GDBN} includes the ability to debug programs running on
10722 various real-time operating systems.
10723
10724 @node VxWorks
10725 @subsection Using @value{GDBN} with VxWorks
10726
10727 @cindex VxWorks
10728
10729 @table @code
10730
10731 @kindex target vxworks
10732 @item target vxworks @var{machinename}
10733 A VxWorks system, attached via TCP/IP. The argument @var{machinename}
10734 is the target system's machine name or IP address.
10735
10736 @end table
10737
10738 On VxWorks, @code{load} links @var{filename} dynamically on the
10739 current target system as well as adding its symbols in @value{GDBN}.
10740
10741 @value{GDBN} enables developers to spawn and debug tasks running on networked
10742 VxWorks targets from a Unix host. Already-running tasks spawned from
10743 the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
10744 both the Unix host and on the VxWorks target. The program
10745 @code{@value{GDBP}} is installed and executed on the Unix host. (It may be
10746 installed with the name @code{vxgdb}, to distinguish it from a
10747 @value{GDBN} for debugging programs on the host itself.)
10748
10749 @table @code
10750 @item VxWorks-timeout @var{args}
10751 @kindex vxworks-timeout
10752 All VxWorks-based targets now support the option @code{vxworks-timeout}.
10753 This option is set by the user, and @var{args} represents the number of
10754 seconds @value{GDBN} waits for responses to rpc's. You might use this if
10755 your VxWorks target is a slow software simulator or is on the far side
10756 of a thin network line.
10757 @end table
10758
10759 The following information on connecting to VxWorks was current when
10760 this manual was produced; newer releases of VxWorks may use revised
10761 procedures.
10762
10763 @kindex INCLUDE_RDB
10764 To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
10765 to include the remote debugging interface routines in the VxWorks
10766 library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
10767 VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
10768 kernel. The resulting kernel contains @file{rdb.a}, and spawns the
10769 source debugging task @code{tRdbTask} when VxWorks is booted. For more
10770 information on configuring and remaking VxWorks, see the manufacturer's
10771 manual.
10772 @c VxWorks, see the @cite{VxWorks Programmer's Guide}.
10773
10774 Once you have included @file{rdb.a} in your VxWorks system image and set
10775 your Unix execution search path to find @value{GDBN}, you are ready to
10776 run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
10777 @code{vxgdb}, depending on your installation).
10778
10779 @value{GDBN} comes up showing the prompt:
10780
10781 @example
10782 (vxgdb)
10783 @end example
10784
10785 @menu
10786 * VxWorks Connection:: Connecting to VxWorks
10787 * VxWorks Download:: VxWorks download
10788 * VxWorks Attach:: Running tasks
10789 @end menu
10790
10791 @node VxWorks Connection
10792 @subsubsection Connecting to VxWorks
10793
10794 The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
10795 network. To connect to a target whose host name is ``@code{tt}'', type:
10796
10797 @example
10798 (vxgdb) target vxworks tt
10799 @end example
10800
10801 @need 750
10802 @value{GDBN} displays messages like these:
10803
10804 @smallexample
10805 Attaching remote machine across net...
10806 Connected to tt.
10807 @end smallexample
10808
10809 @need 1000
10810 @value{GDBN} then attempts to read the symbol tables of any object modules
10811 loaded into the VxWorks target since it was last booted. @value{GDBN} locates
10812 these files by searching the directories listed in the command search
10813 path (@pxref{Environment, ,Your program's environment}); if it fails
10814 to find an object file, it displays a message such as:
10815
10816 @example
10817 prog.o: No such file or directory.
10818 @end example
10819
10820 When this happens, add the appropriate directory to the search path with
10821 the @value{GDBN} command @code{path}, and execute the @code{target}
10822 command again.
10823
10824 @node VxWorks Download
10825 @subsubsection VxWorks download
10826
10827 @cindex download to VxWorks
10828 If you have connected to the VxWorks target and you want to debug an
10829 object that has not yet been loaded, you can use the @value{GDBN}
10830 @code{load} command to download a file from Unix to VxWorks
10831 incrementally. The object file given as an argument to the @code{load}
10832 command is actually opened twice: first by the VxWorks target in order
10833 to download the code, then by @value{GDBN} in order to read the symbol
10834 table. This can lead to problems if the current working directories on
10835 the two systems differ. If both systems have NFS mounted the same
10836 filesystems, you can avoid these problems by using absolute paths.
10837 Otherwise, it is simplest to set the working directory on both systems
10838 to the directory in which the object file resides, and then to reference
10839 the file by its name, without any path. For instance, a program
10840 @file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
10841 and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
10842 program, type this on VxWorks:
10843
10844 @example
10845 -> cd "@var{vxpath}/vw/demo/rdb"
10846 @end example
10847
10848 @noindent
10849 Then, in @value{GDBN}, type:
10850
10851 @example
10852 (vxgdb) cd @var{hostpath}/vw/demo/rdb
10853 (vxgdb) load prog.o
10854 @end example
10855
10856 @value{GDBN} displays a response similar to this:
10857
10858 @smallexample
10859 Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
10860 @end smallexample
10861
10862 You can also use the @code{load} command to reload an object module
10863 after editing and recompiling the corresponding source file. Note that
10864 this makes @value{GDBN} delete all currently-defined breakpoints,
10865 auto-displays, and convenience variables, and to clear the value
10866 history. (This is necessary in order to preserve the integrity of
10867 debugger's data structures that reference the target system's symbol
10868 table.)
10869
10870 @node VxWorks Attach
10871 @subsubsection Running tasks
10872
10873 @cindex running VxWorks tasks
10874 You can also attach to an existing task using the @code{attach} command as
10875 follows:
10876
10877 @example
10878 (vxgdb) attach @var{task}
10879 @end example
10880
10881 @noindent
10882 where @var{task} is the VxWorks hexadecimal task ID. The task can be running
10883 or suspended when you attach to it. Running tasks are suspended at
10884 the time of attachment.
10885
10886 @node Embedded Processors
10887 @section Embedded Processors
10888
10889 This section goes into details specific to particular embedded
10890 configurations.
10891
10892
10893 @c OBSOLETE * A29K Embedded:: AMD A29K Embedded
10894 @menu
10895 * ARM:: ARM
10896 * H8/300:: Hitachi H8/300
10897 * H8/500:: Hitachi H8/500
10898 * i960:: Intel i960
10899 * M32R/D:: Mitsubishi M32R/D
10900 * M68K:: Motorola M68K
10901 * M88K:: Motorola M88K
10902 * MIPS Embedded:: MIPS Embedded
10903 * PA:: HP PA Embedded
10904 * PowerPC: PowerPC
10905 * SH:: Hitachi SH
10906 * Sparclet:: Tsqware Sparclet
10907 * Sparclite:: Fujitsu Sparclite
10908 * ST2000:: Tandem ST2000
10909 * Z8000:: Zilog Z8000
10910 @end menu
10911
10912 @c OBSOLETE @node A29K Embedded
10913 @c OBSOLETE @subsection AMD A29K Embedded
10914 @c OBSOLETE
10915 @c OBSOLETE @menu
10916 @c OBSOLETE * A29K UDI::
10917 @c OBSOLETE * A29K EB29K::
10918 @c OBSOLETE * Comms (EB29K):: Communications setup
10919 @c OBSOLETE * gdb-EB29K:: EB29K cross-debugging
10920 @c OBSOLETE * Remote Log:: Remote log
10921 @c OBSOLETE @end menu
10922 @c OBSOLETE
10923 @c OBSOLETE @table @code
10924 @c OBSOLETE
10925 @c OBSOLETE @kindex target adapt
10926 @c OBSOLETE @item target adapt @var{dev}
10927 @c OBSOLETE Adapt monitor for A29K.
10928 @c OBSOLETE
10929 @c OBSOLETE @kindex target amd-eb
10930 @c OBSOLETE @item target amd-eb @var{dev} @var{speed} @var{PROG}
10931 @c OBSOLETE @cindex AMD EB29K
10932 @c OBSOLETE Remote PC-resident AMD EB29K board, attached over serial lines.
10933 @c OBSOLETE @var{dev} is the serial device, as for @code{target remote};
10934 @c OBSOLETE @var{speed} allows you to specify the linespeed; and @var{PROG} is the
10935 @c OBSOLETE name of the program to be debugged, as it appears to DOS on the PC.
10936 @c OBSOLETE @xref{A29K EB29K, ,EBMON protocol for AMD29K}.
10937 @c OBSOLETE
10938 @c OBSOLETE @end table
10939 @c OBSOLETE
10940 @c OBSOLETE @node A29K UDI
10941 @c OBSOLETE @subsubsection A29K UDI
10942 @c OBSOLETE
10943 @c OBSOLETE @cindex UDI
10944 @c OBSOLETE @cindex AMD29K via UDI
10945 @c OBSOLETE
10946 @c OBSOLETE @value{GDBN} supports AMD's UDI (``Universal Debugger Interface'')
10947 @c OBSOLETE protocol for debugging the a29k processor family. To use this
10948 @c OBSOLETE configuration with AMD targets running the MiniMON monitor, you need the
10949 @c OBSOLETE program @code{MONTIP}, available from AMD at no charge. You can also
10950 @c OBSOLETE use @value{GDBN} with the UDI-conformant a29k simulator program
10951 @c OBSOLETE @code{ISSTIP}, also available from AMD.
10952 @c OBSOLETE
10953 @c OBSOLETE @table @code
10954 @c OBSOLETE @item target udi @var{keyword}
10955 @c OBSOLETE @kindex udi
10956 @c OBSOLETE Select the UDI interface to a remote a29k board or simulator, where
10957 @c OBSOLETE @var{keyword} is an entry in the AMD configuration file @file{udi_soc}.
10958 @c OBSOLETE This file contains keyword entries which specify parameters used to
10959 @c OBSOLETE connect to a29k targets. If the @file{udi_soc} file is not in your
10960 @c OBSOLETE working directory, you must set the environment variable @samp{UDICONF}
10961 @c OBSOLETE to its pathname.
10962 @c OBSOLETE @end table
10963 @c OBSOLETE
10964 @c OBSOLETE @node A29K EB29K
10965 @c OBSOLETE @subsubsection EBMON protocol for AMD29K
10966 @c OBSOLETE
10967 @c OBSOLETE @cindex EB29K board
10968 @c OBSOLETE @cindex running 29K programs
10969 @c OBSOLETE
10970 @c OBSOLETE AMD distributes a 29K development board meant to fit in a PC, together
10971 @c OBSOLETE with a DOS-hosted monitor program called @code{EBMON}. As a shorthand
10972 @c OBSOLETE term, this development system is called the ``EB29K''. To use
10973 @c OBSOLETE @value{GDBN} from a Unix system to run programs on the EB29K board, you
10974 @c OBSOLETE must first connect a serial cable between the PC (which hosts the EB29K
10975 @c OBSOLETE board) and a serial port on the Unix system. In the following, we
10976 @c OBSOLETE assume you've hooked the cable between the PC's @file{COM1} port and
10977 @c OBSOLETE @file{/dev/ttya} on the Unix system.
10978 @c OBSOLETE
10979 @c OBSOLETE @node Comms (EB29K)
10980 @c OBSOLETE @subsubsection Communications setup
10981 @c OBSOLETE
10982 @c OBSOLETE The next step is to set up the PC's port, by doing something like this
10983 @c OBSOLETE in DOS on the PC:
10984 @c OBSOLETE
10985 @c OBSOLETE @example
10986 @c OBSOLETE C:\> MODE com1:9600,n,8,1,none
10987 @c OBSOLETE @end example
10988 @c OBSOLETE
10989 @c OBSOLETE @noindent
10990 @c OBSOLETE This example---run on an MS DOS 4.0 system---sets the PC port to 9600
10991 @c OBSOLETE bps, no parity, eight data bits, one stop bit, and no ``retry'' action;
10992 @c OBSOLETE you must match the communications parameters when establishing the Unix
10993 @c OBSOLETE end of the connection as well.
10994 @c OBSOLETE @c FIXME: Who knows what this "no retry action" crud from the DOS manual may
10995 @c OBSOLETE @c mean? It's optional; leave it out? ---doc@cygnus.com, 25feb91
10996 @c OBSOLETE @c
10997 @c OBSOLETE @c It's optional, but it's unwise to omit it: who knows what is the
10998 @c OBSOLETE @c default value set when the DOS machines boots? "No retry" means that
10999 @c OBSOLETE @c the DOS serial device driver won't retry the operation if it fails;
11000 @c OBSOLETE @c I understand that this is needed because the GDB serial protocol
11001 @c OBSOLETE @c handles any errors and retransmissions itself. ---Eli Zaretskii, 3sep99
11002 @c OBSOLETE
11003 @c OBSOLETE To give control of the PC to the Unix side of the serial line, type
11004 @c OBSOLETE the following at the DOS console:
11005 @c OBSOLETE
11006 @c OBSOLETE @example
11007 @c OBSOLETE C:\> CTTY com1
11008 @c OBSOLETE @end example
11009 @c OBSOLETE
11010 @c OBSOLETE @noindent
11011 @c OBSOLETE (Later, if you wish to return control to the DOS console, you can use
11012 @c OBSOLETE the command @code{CTTY con}---but you must send it over the device that
11013 @c OBSOLETE had control, in our example over the @file{COM1} serial line.)
11014 @c OBSOLETE
11015 @c OBSOLETE From the Unix host, use a communications program such as @code{tip} or
11016 @c OBSOLETE @code{cu} to communicate with the PC; for example,
11017 @c OBSOLETE
11018 @c OBSOLETE @example
11019 @c OBSOLETE cu -s 9600 -l /dev/ttya
11020 @c OBSOLETE @end example
11021 @c OBSOLETE
11022 @c OBSOLETE @noindent
11023 @c OBSOLETE The @code{cu} options shown specify, respectively, the linespeed and the
11024 @c OBSOLETE serial port to use. If you use @code{tip} instead, your command line
11025 @c OBSOLETE may look something like the following:
11026 @c OBSOLETE
11027 @c OBSOLETE @example
11028 @c OBSOLETE tip -9600 /dev/ttya
11029 @c OBSOLETE @end example
11030 @c OBSOLETE
11031 @c OBSOLETE @noindent
11032 @c OBSOLETE Your system may require a different name where we show
11033 @c OBSOLETE @file{/dev/ttya} as the argument to @code{tip}. The communications
11034 @c OBSOLETE parameters, including which port to use, are associated with the
11035 @c OBSOLETE @code{tip} argument in the ``remote'' descriptions file---normally the
11036 @c OBSOLETE system table @file{/etc/remote}.
11037 @c OBSOLETE @c FIXME: What if anything needs doing to match the "n,8,1,none" part of
11038 @c OBSOLETE @c the DOS side's comms setup? cu can support -o (odd
11039 @c OBSOLETE @c parity), -e (even parity)---apparently no settings for no parity or
11040 @c OBSOLETE @c for character size. Taken from stty maybe...? John points out tip
11041 @c OBSOLETE @c can set these as internal variables, eg ~s parity=none; man stty
11042 @c OBSOLETE @c suggests that it *might* work to stty these options with stdin or
11043 @c OBSOLETE @c stdout redirected... ---doc@cygnus.com, 25feb91
11044 @c OBSOLETE @c
11045 @c OBSOLETE @c There's nothing to be done for the "none" part of the DOS MODE
11046 @c OBSOLETE @c command. The rest of the parameters should be matched by the
11047 @c OBSOLETE @c baudrate, bits, and parity used by the Unix side. ---Eli Zaretskii, 3Sep99
11048 @c OBSOLETE
11049 @c OBSOLETE @kindex EBMON
11050 @c OBSOLETE Using the @code{tip} or @code{cu} connection, change the DOS working
11051 @c OBSOLETE directory to the directory containing a copy of your 29K program, then
11052 @c OBSOLETE start the PC program @code{EBMON} (an EB29K control program supplied
11053 @c OBSOLETE with your board by AMD). You should see an initial display from
11054 @c OBSOLETE @code{EBMON} similar to the one that follows, ending with the
11055 @c OBSOLETE @code{EBMON} prompt @samp{#}---
11056 @c OBSOLETE
11057 @c OBSOLETE @example
11058 @c OBSOLETE C:\> G:
11059 @c OBSOLETE
11060 @c OBSOLETE G:\> CD \usr\joe\work29k
11061 @c OBSOLETE
11062 @c OBSOLETE G:\USR\JOE\WORK29K> EBMON
11063 @c OBSOLETE Am29000 PC Coprocessor Board Monitor, version 3.0-18
11064 @c OBSOLETE Copyright 1990 Advanced Micro Devices, Inc.
11065 @c OBSOLETE Written by Gibbons and Associates, Inc.
11066 @c OBSOLETE
11067 @c OBSOLETE Enter '?' or 'H' for help
11068 @c OBSOLETE
11069 @c OBSOLETE PC Coprocessor Type = EB29K
11070 @c OBSOLETE I/O Base = 0x208
11071 @c OBSOLETE Memory Base = 0xd0000
11072 @c OBSOLETE
11073 @c OBSOLETE Data Memory Size = 2048KB
11074 @c OBSOLETE Available I-RAM Range = 0x8000 to 0x1fffff
11075 @c OBSOLETE Available D-RAM Range = 0x80002000 to 0x801fffff
11076 @c OBSOLETE
11077 @c OBSOLETE PageSize = 0x400
11078 @c OBSOLETE Register Stack Size = 0x800
11079 @c OBSOLETE Memory Stack Size = 0x1800
11080 @c OBSOLETE
11081 @c OBSOLETE CPU PRL = 0x3
11082 @c OBSOLETE Am29027 Available = No
11083 @c OBSOLETE Byte Write Available = Yes
11084 @c OBSOLETE
11085 @c OBSOLETE # ~.
11086 @c OBSOLETE @end example
11087 @c OBSOLETE
11088 @c OBSOLETE Then exit the @code{cu} or @code{tip} program (done in the example by
11089 @c OBSOLETE typing @code{~.} at the @code{EBMON} prompt). @code{EBMON} keeps
11090 @c OBSOLETE running, ready for @value{GDBN} to take over.
11091 @c OBSOLETE
11092 @c OBSOLETE For this example, we've assumed what is probably the most convenient
11093 @c OBSOLETE way to make sure the same 29K program is on both the PC and the Unix
11094 @c OBSOLETE system: a PC/NFS connection that establishes ``drive @file{G:}'' on the
11095 @c OBSOLETE PC as a file system on the Unix host. If you do not have PC/NFS or
11096 @c OBSOLETE something similar connecting the two systems, you must arrange some
11097 @c OBSOLETE other way---perhaps floppy-disk transfer---of getting the 29K program
11098 @c OBSOLETE from the Unix system to the PC; @value{GDBN} does @emph{not} download it over the
11099 @c OBSOLETE serial line.
11100 @c OBSOLETE
11101 @c OBSOLETE @node gdb-EB29K
11102 @c OBSOLETE @subsubsection EB29K cross-debugging
11103 @c OBSOLETE
11104 @c OBSOLETE Finally, @code{cd} to the directory containing an image of your 29K
11105 @c OBSOLETE program on the Unix system, and start @value{GDBN}---specifying as argument the
11106 @c OBSOLETE name of your 29K program:
11107 @c OBSOLETE
11108 @c OBSOLETE @example
11109 @c OBSOLETE cd /usr/joe/work29k
11110 @c OBSOLETE @value{GDBP} myfoo
11111 @c OBSOLETE @end example
11112 @c OBSOLETE
11113 @c OBSOLETE @need 500
11114 @c OBSOLETE Now you can use the @code{target} command:
11115 @c OBSOLETE
11116 @c OBSOLETE @example
11117 @c OBSOLETE target amd-eb /dev/ttya 9600 MYFOO
11118 @c OBSOLETE @c FIXME: test above 'target amd-eb' as spelled, with caps! caps are meant to
11119 @c OBSOLETE @c emphasize that this is the name as seen by DOS (since I think DOS is
11120 @c OBSOLETE @c single-minded about case of letters). ---doc@cygnus.com, 25feb91
11121 @c OBSOLETE @end example
11122 @c OBSOLETE
11123 @c OBSOLETE @noindent
11124 @c OBSOLETE In this example, we've assumed your program is in a file called
11125 @c OBSOLETE @file{myfoo}. Note that the filename given as the last argument to
11126 @c OBSOLETE @code{target amd-eb} should be the name of the program as it appears to DOS.
11127 @c OBSOLETE In our example this is simply @code{MYFOO}, but in general it can include
11128 @c OBSOLETE a DOS path, and depending on your transfer mechanism may not resemble
11129 @c OBSOLETE the name on the Unix side.
11130 @c OBSOLETE
11131 @c OBSOLETE At this point, you can set any breakpoints you wish; when you are ready
11132 @c OBSOLETE to see your program run on the 29K board, use the @value{GDBN} command
11133 @c OBSOLETE @code{run}.
11134 @c OBSOLETE
11135 @c OBSOLETE To stop debugging the remote program, use the @value{GDBN} @code{detach}
11136 @c OBSOLETE command.
11137 @c OBSOLETE
11138 @c OBSOLETE To return control of the PC to its console, use @code{tip} or @code{cu}
11139 @c OBSOLETE once again, after your @value{GDBN} session has concluded, to attach to
11140 @c OBSOLETE @code{EBMON}. You can then type the command @code{q} to shut down
11141 @c OBSOLETE @code{EBMON}, returning control to the DOS command-line interpreter.
11142 @c OBSOLETE Type @kbd{CTTY con} to return command input to the main DOS console,
11143 @c OBSOLETE and type @kbd{~.} to leave @code{tip} or @code{cu}.
11144 @c OBSOLETE
11145 @c OBSOLETE @node Remote Log
11146 @c OBSOLETE @subsubsection Remote log
11147 @c OBSOLETE @cindex @file{eb.log}, a log file for EB29K
11148 @c OBSOLETE @cindex log file for EB29K
11149 @c OBSOLETE
11150 @c OBSOLETE The @code{target amd-eb} command creates a file @file{eb.log} in the
11151 @c OBSOLETE current working directory, to help debug problems with the connection.
11152 @c OBSOLETE @file{eb.log} records all the output from @code{EBMON}, including echoes
11153 @c OBSOLETE of the commands sent to it. Running @samp{tail -f} on this file in
11154 @c OBSOLETE another window often helps to understand trouble with @code{EBMON}, or
11155 @c OBSOLETE unexpected events on the PC side of the connection.
11156
11157 @node ARM
11158 @subsection ARM
11159
11160 @table @code
11161
11162 @kindex target rdi
11163 @item target rdi @var{dev}
11164 ARM Angel monitor, via RDI library interface to ADP protocol. You may
11165 use this target to communicate with both boards running the Angel
11166 monitor, or with the EmbeddedICE JTAG debug device.
11167
11168 @kindex target rdp
11169 @item target rdp @var{dev}
11170 ARM Demon monitor.
11171
11172 @end table
11173
11174 @node H8/300
11175 @subsection Hitachi H8/300
11176
11177 @table @code
11178
11179 @kindex target hms@r{, with H8/300}
11180 @item target hms @var{dev}
11181 A Hitachi SH, H8/300, or H8/500 board, attached via serial line to your host.
11182 Use special commands @code{device} and @code{speed} to control the serial
11183 line and the communications speed used.
11184
11185 @kindex target e7000@r{, with H8/300}
11186 @item target e7000 @var{dev}
11187 E7000 emulator for Hitachi H8 and SH.
11188
11189 @kindex target sh3@r{, with H8/300}
11190 @kindex target sh3e@r{, with H8/300}
11191 @item target sh3 @var{dev}
11192 @itemx target sh3e @var{dev}
11193 Hitachi SH-3 and SH-3E target systems.
11194
11195 @end table
11196
11197 @cindex download to H8/300 or H8/500
11198 @cindex H8/300 or H8/500 download
11199 @cindex download to Hitachi SH
11200 @cindex Hitachi SH download
11201 When you select remote debugging to a Hitachi SH, H8/300, or H8/500
11202 board, the @code{load} command downloads your program to the Hitachi
11203 board and also opens it as the current executable target for
11204 @value{GDBN} on your host (like the @code{file} command).
11205
11206 @value{GDBN} needs to know these things to talk to your
11207 Hitachi SH, H8/300, or H8/500:
11208
11209 @enumerate
11210 @item
11211 that you want to use @samp{target hms}, the remote debugging interface
11212 for Hitachi microprocessors, or @samp{target e7000}, the in-circuit
11213 emulator for the Hitachi SH and the Hitachi 300H. (@samp{target hms} is
11214 the default when @value{GDBN} is configured specifically for the Hitachi SH,
11215 H8/300, or H8/500.)
11216
11217 @item
11218 what serial device connects your host to your Hitachi board (the first
11219 serial device available on your host is the default).
11220
11221 @item
11222 what speed to use over the serial device.
11223 @end enumerate
11224
11225 @menu
11226 * Hitachi Boards:: Connecting to Hitachi boards.
11227 * Hitachi ICE:: Using the E7000 In-Circuit Emulator.
11228 * Hitachi Special:: Special @value{GDBN} commands for Hitachi micros.
11229 @end menu
11230
11231 @node Hitachi Boards
11232 @subsubsection Connecting to Hitachi boards
11233
11234 @c only for Unix hosts
11235 @kindex device
11236 @cindex serial device, Hitachi micros
11237 Use the special @code{@value{GDBN}} command @samp{device @var{port}} if you
11238 need to explicitly set the serial device. The default @var{port} is the
11239 first available port on your host. This is only necessary on Unix
11240 hosts, where it is typically something like @file{/dev/ttya}.
11241
11242 @kindex speed
11243 @cindex serial line speed, Hitachi micros
11244 @code{@value{GDBN}} has another special command to set the communications
11245 speed: @samp{speed @var{bps}}. This command also is only used from Unix
11246 hosts; on DOS hosts, set the line speed as usual from outside @value{GDBN} with
11247 the DOS @code{mode} command (for instance,
11248 @w{@kbd{mode com2:9600,n,8,1,p}} for a 9600@dmn{bps} connection).
11249
11250 The @samp{device} and @samp{speed} commands are available only when you
11251 use a Unix host to debug your Hitachi microprocessor programs. If you
11252 use a DOS host,
11253 @value{GDBN} depends on an auxiliary terminate-and-stay-resident program
11254 called @code{asynctsr} to communicate with the development board
11255 through a PC serial port. You must also use the DOS @code{mode} command
11256 to set up the serial port on the DOS side.
11257
11258 The following sample session illustrates the steps needed to start a
11259 program under @value{GDBN} control on an H8/300. The example uses a
11260 sample H8/300 program called @file{t.x}. The procedure is the same for
11261 the Hitachi SH and the H8/500.
11262
11263 First hook up your development board. In this example, we use a
11264 board attached to serial port @code{COM2}; if you use a different serial
11265 port, substitute its name in the argument of the @code{mode} command.
11266 When you call @code{asynctsr}, the auxiliary comms program used by the
11267 debugger, you give it just the numeric part of the serial port's name;
11268 for example, @samp{asyncstr 2} below runs @code{asyncstr} on
11269 @code{COM2}.
11270
11271 @example
11272 C:\H8300\TEST> asynctsr 2
11273 C:\H8300\TEST> mode com2:9600,n,8,1,p
11274
11275 Resident portion of MODE loaded
11276
11277 COM2: 9600, n, 8, 1, p
11278
11279 @end example
11280
11281 @quotation
11282 @emph{Warning:} We have noticed a bug in PC-NFS that conflicts with
11283 @code{asynctsr}. If you also run PC-NFS on your DOS host, you may need to
11284 disable it, or even boot without it, to use @code{asynctsr} to control
11285 your development board.
11286 @end quotation
11287
11288 @kindex target hms@r{, and serial protocol}
11289 Now that serial communications are set up, and the development board is
11290 connected, you can start up @value{GDBN}. Call @code{@value{GDBP}} with
11291 the name of your program as the argument. @code{@value{GDBN}} prompts
11292 you, as usual, with the prompt @samp{(@value{GDBP})}. Use two special
11293 commands to begin your debugging session: @samp{target hms} to specify
11294 cross-debugging to the Hitachi board, and the @code{load} command to
11295 download your program to the board. @code{load} displays the names of
11296 the program's sections, and a @samp{*} for each 2K of data downloaded.
11297 (If you want to refresh @value{GDBN} data on symbols or on the
11298 executable file without downloading, use the @value{GDBN} commands
11299 @code{file} or @code{symbol-file}. These commands, and @code{load}
11300 itself, are described in @ref{Files,,Commands to specify files}.)
11301
11302 @smallexample
11303 (eg-C:\H8300\TEST) @value{GDBP} t.x
11304 @value{GDBN} is free software and you are welcome to distribute copies
11305 of it under certain conditions; type "show copying" to see
11306 the conditions.
11307 There is absolutely no warranty for @value{GDBN}; type "show warranty"
11308 for details.
11309 @value{GDBN} @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
11310 (@value{GDBP}) target hms
11311 Connected to remote H8/300 HMS system.
11312 (@value{GDBP}) load t.x
11313 .text : 0x8000 .. 0xabde ***********
11314 .data : 0xabde .. 0xad30 *
11315 .stack : 0xf000 .. 0xf014 *
11316 @end smallexample
11317
11318 At this point, you're ready to run or debug your program. From here on,
11319 you can use all the usual @value{GDBN} commands. The @code{break} command
11320 sets breakpoints; the @code{run} command starts your program;
11321 @code{print} or @code{x} display data; the @code{continue} command
11322 resumes execution after stopping at a breakpoint. You can use the
11323 @code{help} command at any time to find out more about @value{GDBN} commands.
11324
11325 Remember, however, that @emph{operating system} facilities aren't
11326 available on your development board; for example, if your program hangs,
11327 you can't send an interrupt---but you can press the @sc{reset} switch!
11328
11329 Use the @sc{reset} button on the development board
11330 @itemize @bullet
11331 @item
11332 to interrupt your program (don't use @kbd{ctl-C} on the DOS host---it has
11333 no way to pass an interrupt signal to the development board); and
11334
11335 @item
11336 to return to the @value{GDBN} command prompt after your program finishes
11337 normally. The communications protocol provides no other way for @value{GDBN}
11338 to detect program completion.
11339 @end itemize
11340
11341 In either case, @value{GDBN} sees the effect of a @sc{reset} on the
11342 development board as a ``normal exit'' of your program.
11343
11344 @node Hitachi ICE
11345 @subsubsection Using the E7000 in-circuit emulator
11346
11347 @kindex target e7000@r{, with Hitachi ICE}
11348 You can use the E7000 in-circuit emulator to develop code for either the
11349 Hitachi SH or the H8/300H. Use one of these forms of the @samp{target
11350 e7000} command to connect @value{GDBN} to your E7000:
11351
11352 @table @code
11353 @item target e7000 @var{port} @var{speed}
11354 Use this form if your E7000 is connected to a serial port. The
11355 @var{port} argument identifies what serial port to use (for example,
11356 @samp{com2}). The third argument is the line speed in bits per second
11357 (for example, @samp{9600}).
11358
11359 @item target e7000 @var{hostname}
11360 If your E7000 is installed as a host on a TCP/IP network, you can just
11361 specify its hostname; @value{GDBN} uses @code{telnet} to connect.
11362 @end table
11363
11364 @node Hitachi Special
11365 @subsubsection Special @value{GDBN} commands for Hitachi micros
11366
11367 Some @value{GDBN} commands are available only for the H8/300:
11368
11369 @table @code
11370
11371 @kindex set machine
11372 @kindex show machine
11373 @item set machine h8300
11374 @itemx set machine h8300h
11375 Condition @value{GDBN} for one of the two variants of the H8/300
11376 architecture with @samp{set machine}. You can use @samp{show machine}
11377 to check which variant is currently in effect.
11378
11379 @end table
11380
11381 @node H8/500
11382 @subsection H8/500
11383
11384 @table @code
11385
11386 @kindex set memory @var{mod}
11387 @cindex memory models, H8/500
11388 @item set memory @var{mod}
11389 @itemx show memory
11390 Specify which H8/500 memory model (@var{mod}) you are using with
11391 @samp{set memory}; check which memory model is in effect with @samp{show
11392 memory}. The accepted values for @var{mod} are @code{small},
11393 @code{big}, @code{medium}, and @code{compact}.
11394
11395 @end table
11396
11397 @node i960
11398 @subsection Intel i960
11399
11400 @table @code
11401
11402 @kindex target mon960
11403 @item target mon960 @var{dev}
11404 MON960 monitor for Intel i960.
11405
11406 @kindex target nindy
11407 @item target nindy @var{devicename}
11408 An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
11409 the name of the serial device to use for the connection, e.g.
11410 @file{/dev/ttya}.
11411
11412 @end table
11413
11414 @cindex Nindy
11415 @cindex i960
11416 @dfn{Nindy} is a ROM Monitor program for Intel 960 target systems. When
11417 @value{GDBN} is configured to control a remote Intel 960 using Nindy, you can
11418 tell @value{GDBN} how to connect to the 960 in several ways:
11419
11420 @itemize @bullet
11421 @item
11422 Through command line options specifying serial port, version of the
11423 Nindy protocol, and communications speed;
11424
11425 @item
11426 By responding to a prompt on startup;
11427
11428 @item
11429 By using the @code{target} command at any point during your @value{GDBN}
11430 session. @xref{Target Commands, ,Commands for managing targets}.
11431
11432 @end itemize
11433
11434 @cindex download to Nindy-960
11435 With the Nindy interface to an Intel 960 board, @code{load}
11436 downloads @var{filename} to the 960 as well as adding its symbols in
11437 @value{GDBN}.
11438
11439 @menu
11440 * Nindy Startup:: Startup with Nindy
11441 * Nindy Options:: Options for Nindy
11442 * Nindy Reset:: Nindy reset command
11443 @end menu
11444
11445 @node Nindy Startup
11446 @subsubsection Startup with Nindy
11447
11448 If you simply start @code{@value{GDBP}} without using any command-line
11449 options, you are prompted for what serial port to use, @emph{before} you
11450 reach the ordinary @value{GDBN} prompt:
11451
11452 @example
11453 Attach /dev/ttyNN -- specify NN, or "quit" to quit:
11454 @end example
11455
11456 @noindent
11457 Respond to the prompt with whatever suffix (after @samp{/dev/tty})
11458 identifies the serial port you want to use. You can, if you choose,
11459 simply start up with no Nindy connection by responding to the prompt
11460 with an empty line. If you do this and later wish to attach to Nindy,
11461 use @code{target} (@pxref{Target Commands, ,Commands for managing targets}).
11462
11463 @node Nindy Options
11464 @subsubsection Options for Nindy
11465
11466 These are the startup options for beginning your @value{GDBN} session with a
11467 Nindy-960 board attached:
11468
11469 @table @code
11470 @item -r @var{port}
11471 Specify the serial port name of a serial interface to be used to connect
11472 to the target system. This option is only available when @value{GDBN} is
11473 configured for the Intel 960 target architecture. You may specify
11474 @var{port} as any of: a full pathname (e.g. @samp{-r /dev/ttya}), a
11475 device name in @file{/dev} (e.g. @samp{-r ttya}), or simply the unique
11476 suffix for a specific @code{tty} (e.g. @samp{-r a}).
11477
11478 @item -O
11479 (An uppercase letter ``O'', not a zero.) Specify that @value{GDBN} should use
11480 the ``old'' Nindy monitor protocol to connect to the target system.
11481 This option is only available when @value{GDBN} is configured for the Intel 960
11482 target architecture.
11483
11484 @quotation
11485 @emph{Warning:} if you specify @samp{-O}, but are actually trying to
11486 connect to a target system that expects the newer protocol, the connection
11487 fails, appearing to be a speed mismatch. @value{GDBN} repeatedly
11488 attempts to reconnect at several different line speeds. You can abort
11489 this process with an interrupt.
11490 @end quotation
11491
11492 @item -brk
11493 Specify that @value{GDBN} should first send a @code{BREAK} signal to the target
11494 system, in an attempt to reset it, before connecting to a Nindy target.
11495
11496 @quotation
11497 @emph{Warning:} Many target systems do not have the hardware that this
11498 requires; it only works with a few boards.
11499 @end quotation
11500 @end table
11501
11502 The standard @samp{-b} option controls the line speed used on the serial
11503 port.
11504
11505 @c @group
11506 @node Nindy Reset
11507 @subsubsection Nindy reset command
11508
11509 @table @code
11510 @item reset
11511 @kindex reset
11512 For a Nindy target, this command sends a ``break'' to the remote target
11513 system; this is only useful if the target has been equipped with a
11514 circuit to perform a hard reset (or some other interesting action) when
11515 a break is detected.
11516 @end table
11517 @c @end group
11518
11519 @node M32R/D
11520 @subsection Mitsubishi M32R/D
11521
11522 @table @code
11523
11524 @kindex target m32r
11525 @item target m32r @var{dev}
11526 Mitsubishi M32R/D ROM monitor.
11527
11528 @end table
11529
11530 @node M68K
11531 @subsection M68k
11532
11533 The Motorola m68k configuration includes ColdFire support, and
11534 target command for the following ROM monitors.
11535
11536 @table @code
11537
11538 @kindex target abug
11539 @item target abug @var{dev}
11540 ABug ROM monitor for M68K.
11541
11542 @kindex target cpu32bug
11543 @item target cpu32bug @var{dev}
11544 CPU32BUG monitor, running on a CPU32 (M68K) board.
11545
11546 @kindex target dbug
11547 @item target dbug @var{dev}
11548 dBUG ROM monitor for Motorola ColdFire.
11549
11550 @kindex target est
11551 @item target est @var{dev}
11552 EST-300 ICE monitor, running on a CPU32 (M68K) board.
11553
11554 @kindex target rom68k
11555 @item target rom68k @var{dev}
11556 ROM 68K monitor, running on an M68K IDP board.
11557
11558 @end table
11559
11560 If @value{GDBN} is configured with @code{m68*-ericsson-*}, it will
11561 instead have only a single special target command:
11562
11563 @table @code
11564
11565 @kindex target es1800
11566 @item target es1800 @var{dev}
11567 ES-1800 emulator for M68K.
11568
11569 @end table
11570
11571 [context?]
11572
11573 @table @code
11574
11575 @kindex target rombug
11576 @item target rombug @var{dev}
11577 ROMBUG ROM monitor for OS/9000.
11578
11579 @end table
11580
11581 @node M88K
11582 @subsection M88K
11583
11584 @table @code
11585
11586 @kindex target bug
11587 @item target bug @var{dev}
11588 BUG monitor, running on a MVME187 (m88k) board.
11589
11590 @end table
11591
11592 @node MIPS Embedded
11593 @subsection MIPS Embedded
11594
11595 @cindex MIPS boards
11596 @value{GDBN} can use the MIPS remote debugging protocol to talk to a
11597 MIPS board attached to a serial line. This is available when
11598 you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
11599
11600 @need 1000
11601 Use these @value{GDBN} commands to specify the connection to your target board:
11602
11603 @table @code
11604 @item target mips @var{port}
11605 @kindex target mips @var{port}
11606 To run a program on the board, start up @code{@value{GDBP}} with the
11607 name of your program as the argument. To connect to the board, use the
11608 command @samp{target mips @var{port}}, where @var{port} is the name of
11609 the serial port connected to the board. If the program has not already
11610 been downloaded to the board, you may use the @code{load} command to
11611 download it. You can then use all the usual @value{GDBN} commands.
11612
11613 For example, this sequence connects to the target board through a serial
11614 port, and loads and runs a program called @var{prog} through the
11615 debugger:
11616
11617 @example
11618 host$ @value{GDBP} @var{prog}
11619 @value{GDBN} is free software and @dots{}
11620 (@value{GDBP}) target mips /dev/ttyb
11621 (@value{GDBP}) load @var{prog}
11622 (@value{GDBP}) run
11623 @end example
11624
11625 @item target mips @var{hostname}:@var{portnumber}
11626 On some @value{GDBN} host configurations, you can specify a TCP
11627 connection (for instance, to a serial line managed by a terminal
11628 concentrator) instead of a serial port, using the syntax
11629 @samp{@var{hostname}:@var{portnumber}}.
11630
11631 @item target pmon @var{port}
11632 @kindex target pmon @var{port}
11633 PMON ROM monitor.
11634
11635 @item target ddb @var{port}
11636 @kindex target ddb @var{port}
11637 NEC's DDB variant of PMON for Vr4300.
11638
11639 @item target lsi @var{port}
11640 @kindex target lsi @var{port}
11641 LSI variant of PMON.
11642
11643 @kindex target r3900
11644 @item target r3900 @var{dev}
11645 Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
11646
11647 @kindex target array
11648 @item target array @var{dev}
11649 Array Tech LSI33K RAID controller board.
11650
11651 @end table
11652
11653
11654 @noindent
11655 @value{GDBN} also supports these special commands for MIPS targets:
11656
11657 @table @code
11658 @item set processor @var{args}
11659 @itemx show processor
11660 @kindex set processor @var{args}
11661 @kindex show processor
11662 Use the @code{set processor} command to set the type of MIPS
11663 processor when you want to access processor-type-specific registers.
11664 For example, @code{set processor @var{r3041}} tells @value{GDBN}
11665 to use the CPU registers appropriate for the 3041 chip.
11666 Use the @code{show processor} command to see what MIPS processor @value{GDBN}
11667 is using. Use the @code{info reg} command to see what registers
11668 @value{GDBN} is using.
11669
11670 @item set mipsfpu double
11671 @itemx set mipsfpu single
11672 @itemx set mipsfpu none
11673 @itemx show mipsfpu
11674 @kindex set mipsfpu
11675 @kindex show mipsfpu
11676 @cindex MIPS remote floating point
11677 @cindex floating point, MIPS remote
11678 If your target board does not support the MIPS floating point
11679 coprocessor, you should use the command @samp{set mipsfpu none} (if you
11680 need this, you may wish to put the command in your @value{GDBN} init
11681 file). This tells @value{GDBN} how to find the return value of
11682 functions which return floating point values. It also allows
11683 @value{GDBN} to avoid saving the floating point registers when calling
11684 functions on the board. If you are using a floating point coprocessor
11685 with only single precision floating point support, as on the @sc{r4650}
11686 processor, use the command @samp{set mipsfpu single}. The default
11687 double precision floating point coprocessor may be selected using
11688 @samp{set mipsfpu double}.
11689
11690 In previous versions the only choices were double precision or no
11691 floating point, so @samp{set mipsfpu on} will select double precision
11692 and @samp{set mipsfpu off} will select no floating point.
11693
11694 As usual, you can inquire about the @code{mipsfpu} variable with
11695 @samp{show mipsfpu}.
11696
11697 @item set remotedebug @var{n}
11698 @itemx show remotedebug
11699 @kindex set remotedebug@r{, MIPS protocol}
11700 @kindex show remotedebug@r{, MIPS protocol}
11701 @cindex @code{remotedebug}, MIPS protocol
11702 @cindex MIPS @code{remotedebug} protocol
11703 @c FIXME! For this to be useful, you must know something about the MIPS
11704 @c FIXME...protocol. Where is it described?
11705 You can see some debugging information about communications with the board
11706 by setting the @code{remotedebug} variable. If you set it to @code{1} using
11707 @samp{set remotedebug 1}, every packet is displayed. If you set it
11708 to @code{2}, every character is displayed. You can check the current value
11709 at any time with the command @samp{show remotedebug}.
11710
11711 @item set timeout @var{seconds}
11712 @itemx set retransmit-timeout @var{seconds}
11713 @itemx show timeout
11714 @itemx show retransmit-timeout
11715 @cindex @code{timeout}, MIPS protocol
11716 @cindex @code{retransmit-timeout}, MIPS protocol
11717 @kindex set timeout
11718 @kindex show timeout
11719 @kindex set retransmit-timeout
11720 @kindex show retransmit-timeout
11721 You can control the timeout used while waiting for a packet, in the MIPS
11722 remote protocol, with the @code{set timeout @var{seconds}} command. The
11723 default is 5 seconds. Similarly, you can control the timeout used while
11724 waiting for an acknowledgement of a packet with the @code{set
11725 retransmit-timeout @var{seconds}} command. The default is 3 seconds.
11726 You can inspect both values with @code{show timeout} and @code{show
11727 retransmit-timeout}. (These commands are @emph{only} available when
11728 @value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
11729
11730 The timeout set by @code{set timeout} does not apply when @value{GDBN}
11731 is waiting for your program to stop. In that case, @value{GDBN} waits
11732 forever because it has no way of knowing how long the program is going
11733 to run before stopping.
11734 @end table
11735
11736 @node PowerPC
11737 @subsection PowerPC
11738
11739 @table @code
11740
11741 @kindex target dink32
11742 @item target dink32 @var{dev}
11743 DINK32 ROM monitor.
11744
11745 @kindex target ppcbug
11746 @item target ppcbug @var{dev}
11747 @kindex target ppcbug1
11748 @item target ppcbug1 @var{dev}
11749 PPCBUG ROM monitor for PowerPC.
11750
11751 @kindex target sds
11752 @item target sds @var{dev}
11753 SDS monitor, running on a PowerPC board (such as Motorola's ADS).
11754
11755 @end table
11756
11757 @node PA
11758 @subsection HP PA Embedded
11759
11760 @table @code
11761
11762 @kindex target op50n
11763 @item target op50n @var{dev}
11764 OP50N monitor, running on an OKI HPPA board.
11765
11766 @kindex target w89k
11767 @item target w89k @var{dev}
11768 W89K monitor, running on a Winbond HPPA board.
11769
11770 @end table
11771
11772 @node SH
11773 @subsection Hitachi SH
11774
11775 @table @code
11776
11777 @kindex target hms@r{, with Hitachi SH}
11778 @item target hms @var{dev}
11779 A Hitachi SH board attached via serial line to your host. Use special
11780 commands @code{device} and @code{speed} to control the serial line and
11781 the communications speed used.
11782
11783 @kindex target e7000@r{, with Hitachi SH}
11784 @item target e7000 @var{dev}
11785 E7000 emulator for Hitachi SH.
11786
11787 @kindex target sh3@r{, with SH}
11788 @kindex target sh3e@r{, with SH}
11789 @item target sh3 @var{dev}
11790 @item target sh3e @var{dev}
11791 Hitachi SH-3 and SH-3E target systems.
11792
11793 @end table
11794
11795 @node Sparclet
11796 @subsection Tsqware Sparclet
11797
11798 @cindex Sparclet
11799
11800 @value{GDBN} enables developers to debug tasks running on
11801 Sparclet targets from a Unix host.
11802 @value{GDBN} uses code that runs on
11803 both the Unix host and on the Sparclet target. The program
11804 @code{@value{GDBP}} is installed and executed on the Unix host.
11805
11806 @table @code
11807 @item remotetimeout @var{args}
11808 @kindex remotetimeout
11809 @value{GDBN} supports the option @code{remotetimeout}.
11810 This option is set by the user, and @var{args} represents the number of
11811 seconds @value{GDBN} waits for responses.
11812 @end table
11813
11814 @cindex compiling, on Sparclet
11815 When compiling for debugging, include the options @samp{-g} to get debug
11816 information and @samp{-Ttext} to relocate the program to where you wish to
11817 load it on the target. You may also want to add the options @samp{-n} or
11818 @samp{-N} in order to reduce the size of the sections. Example:
11819
11820 @example
11821 sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
11822 @end example
11823
11824 You can use @code{objdump} to verify that the addresses are what you intended:
11825
11826 @example
11827 sparclet-aout-objdump --headers --syms prog
11828 @end example
11829
11830 @cindex running, on Sparclet
11831 Once you have set
11832 your Unix execution search path to find @value{GDBN}, you are ready to
11833 run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
11834 (or @code{sparclet-aout-gdb}, depending on your installation).
11835
11836 @value{GDBN} comes up showing the prompt:
11837
11838 @example
11839 (gdbslet)
11840 @end example
11841
11842 @menu
11843 * Sparclet File:: Setting the file to debug
11844 * Sparclet Connection:: Connecting to Sparclet
11845 * Sparclet Download:: Sparclet download
11846 * Sparclet Execution:: Running and debugging
11847 @end menu
11848
11849 @node Sparclet File
11850 @subsubsection Setting file to debug
11851
11852 The @value{GDBN} command @code{file} lets you choose with program to debug.
11853
11854 @example
11855 (gdbslet) file prog
11856 @end example
11857
11858 @need 1000
11859 @value{GDBN} then attempts to read the symbol table of @file{prog}.
11860 @value{GDBN} locates
11861 the file by searching the directories listed in the command search
11862 path.
11863 If the file was compiled with debug information (option "-g"), source
11864 files will be searched as well.
11865 @value{GDBN} locates
11866 the source files by searching the directories listed in the directory search
11867 path (@pxref{Environment, ,Your program's environment}).
11868 If it fails
11869 to find a file, it displays a message such as:
11870
11871 @example
11872 prog: No such file or directory.
11873 @end example
11874
11875 When this happens, add the appropriate directories to the search paths with
11876 the @value{GDBN} commands @code{path} and @code{dir}, and execute the
11877 @code{target} command again.
11878
11879 @node Sparclet Connection
11880 @subsubsection Connecting to Sparclet
11881
11882 The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
11883 To connect to a target on serial port ``@code{ttya}'', type:
11884
11885 @example
11886 (gdbslet) target sparclet /dev/ttya
11887 Remote target sparclet connected to /dev/ttya
11888 main () at ../prog.c:3
11889 @end example
11890
11891 @need 750
11892 @value{GDBN} displays messages like these:
11893
11894 @example
11895 Connected to ttya.
11896 @end example
11897
11898 @node Sparclet Download
11899 @subsubsection Sparclet download
11900
11901 @cindex download to Sparclet
11902 Once connected to the Sparclet target,
11903 you can use the @value{GDBN}
11904 @code{load} command to download the file from the host to the target.
11905 The file name and load offset should be given as arguments to the @code{load}
11906 command.
11907 Since the file format is aout, the program must be loaded to the starting
11908 address. You can use @code{objdump} to find out what this value is. The load
11909 offset is an offset which is added to the VMA (virtual memory address)
11910 of each of the file's sections.
11911 For instance, if the program
11912 @file{prog} was linked to text address 0x1201000, with data at 0x12010160
11913 and bss at 0x12010170, in @value{GDBN}, type:
11914
11915 @example
11916 (gdbslet) load prog 0x12010000
11917 Loading section .text, size 0xdb0 vma 0x12010000
11918 @end example
11919
11920 If the code is loaded at a different address then what the program was linked
11921 to, you may need to use the @code{section} and @code{add-symbol-file} commands
11922 to tell @value{GDBN} where to map the symbol table.
11923
11924 @node Sparclet Execution
11925 @subsubsection Running and debugging
11926
11927 @cindex running and debugging Sparclet programs
11928 You can now begin debugging the task using @value{GDBN}'s execution control
11929 commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
11930 manual for the list of commands.
11931
11932 @example
11933 (gdbslet) b main
11934 Breakpoint 1 at 0x12010000: file prog.c, line 3.
11935 (gdbslet) run
11936 Starting program: prog
11937 Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
11938 3 char *symarg = 0;
11939 (gdbslet) step
11940 4 char *execarg = "hello!";
11941 (gdbslet)
11942 @end example
11943
11944 @node Sparclite
11945 @subsection Fujitsu Sparclite
11946
11947 @table @code
11948
11949 @kindex target sparclite
11950 @item target sparclite @var{dev}
11951 Fujitsu sparclite boards, used only for the purpose of loading.
11952 You must use an additional command to debug the program.
11953 For example: target remote @var{dev} using @value{GDBN} standard
11954 remote protocol.
11955
11956 @end table
11957
11958 @node ST2000
11959 @subsection Tandem ST2000
11960
11961 @value{GDBN} may be used with a Tandem ST2000 phone switch, running Tandem's
11962 STDBUG protocol.
11963
11964 To connect your ST2000 to the host system, see the manufacturer's
11965 manual. Once the ST2000 is physically attached, you can run:
11966
11967 @example
11968 target st2000 @var{dev} @var{speed}
11969 @end example
11970
11971 @noindent
11972 to establish it as your debugging environment. @var{dev} is normally
11973 the name of a serial device, such as @file{/dev/ttya}, connected to the
11974 ST2000 via a serial line. You can instead specify @var{dev} as a TCP
11975 connection (for example, to a serial line attached via a terminal
11976 concentrator) using the syntax @code{@var{hostname}:@var{portnumber}}.
11977
11978 The @code{load} and @code{attach} commands are @emph{not} defined for
11979 this target; you must load your program into the ST2000 as you normally
11980 would for standalone operation. @value{GDBN} reads debugging information
11981 (such as symbols) from a separate, debugging version of the program
11982 available on your host computer.
11983 @c FIXME!! This is terribly vague; what little content is here is
11984 @c basically hearsay.
11985
11986 @cindex ST2000 auxiliary commands
11987 These auxiliary @value{GDBN} commands are available to help you with the ST2000
11988 environment:
11989
11990 @table @code
11991 @item st2000 @var{command}
11992 @kindex st2000 @var{cmd}
11993 @cindex STDBUG commands (ST2000)
11994 @cindex commands to STDBUG (ST2000)
11995 Send a @var{command} to the STDBUG monitor. See the manufacturer's
11996 manual for available commands.
11997
11998 @item connect
11999 @cindex connect (to STDBUG)
12000 Connect the controlling terminal to the STDBUG command monitor. When
12001 you are done interacting with STDBUG, typing either of two character
12002 sequences gets you back to the @value{GDBN} command prompt:
12003 @kbd{@key{RET}~.} (Return, followed by tilde and period) or
12004 @kbd{@key{RET}~@key{C-d}} (Return, followed by tilde and control-D).
12005 @end table
12006
12007 @node Z8000
12008 @subsection Zilog Z8000
12009
12010 @cindex Z8000
12011 @cindex simulator, Z8000
12012 @cindex Zilog Z8000 simulator
12013
12014 When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
12015 a Z8000 simulator.
12016
12017 For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
12018 unsegmented variant of the Z8000 architecture) or the Z8001 (the
12019 segmented variant). The simulator recognizes which architecture is
12020 appropriate by inspecting the object code.
12021
12022 @table @code
12023 @item target sim @var{args}
12024 @kindex sim
12025 @kindex target sim@r{, with Z8000}
12026 Debug programs on a simulated CPU. If the simulator supports setup
12027 options, specify them via @var{args}.
12028 @end table
12029
12030 @noindent
12031 After specifying this target, you can debug programs for the simulated
12032 CPU in the same style as programs for your host computer; use the
12033 @code{file} command to load a new program image, the @code{run} command
12034 to run your program, and so on.
12035
12036 As well as making available all the usual machine registers
12037 (@pxref{Registers, ,Registers}), the Z8000 simulator provides three
12038 additional items of information as specially named registers:
12039
12040 @table @code
12041
12042 @item cycles
12043 Counts clock-ticks in the simulator.
12044
12045 @item insts
12046 Counts instructions run in the simulator.
12047
12048 @item time
12049 Execution time in 60ths of a second.
12050
12051 @end table
12052
12053 You can refer to these values in @value{GDBN} expressions with the usual
12054 conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
12055 conditional breakpoint that suspends only after at least 5000
12056 simulated clock ticks.
12057
12058 @node Architectures
12059 @section Architectures
12060
12061 This section describes characteristics of architectures that affect
12062 all uses of @value{GDBN} with the architecture, both native and cross.
12063
12064 @menu
12065 * A29K::
12066 * Alpha::
12067 * MIPS::
12068 @end menu
12069
12070 @node A29K
12071 @subsection A29K
12072
12073 @table @code
12074
12075 @kindex set rstack_high_address
12076 @cindex AMD 29K register stack
12077 @cindex register stack, AMD29K
12078 @item set rstack_high_address @var{address}
12079 On AMD 29000 family processors, registers are saved in a separate
12080 @dfn{register stack}. There is no way for @value{GDBN} to determine the
12081 extent of this stack. Normally, @value{GDBN} just assumes that the
12082 stack is ``large enough''. This may result in @value{GDBN} referencing
12083 memory locations that do not exist. If necessary, you can get around
12084 this problem by specifying the ending address of the register stack with
12085 the @code{set rstack_high_address} command. The argument should be an
12086 address, which you probably want to precede with @samp{0x} to specify in
12087 hexadecimal.
12088
12089 @kindex show rstack_high_address
12090 @item show rstack_high_address
12091 Display the current limit of the register stack, on AMD 29000 family
12092 processors.
12093
12094 @end table
12095
12096 @node Alpha
12097 @subsection Alpha
12098
12099 See the following section.
12100
12101 @node MIPS
12102 @subsection MIPS
12103
12104 @cindex stack on Alpha
12105 @cindex stack on MIPS
12106 @cindex Alpha stack
12107 @cindex MIPS stack
12108 Alpha- and MIPS-based computers use an unusual stack frame, which
12109 sometimes requires @value{GDBN} to search backward in the object code to
12110 find the beginning of a function.
12111
12112 @cindex response time, MIPS debugging
12113 To improve response time (especially for embedded applications, where
12114 @value{GDBN} may be restricted to a slow serial line for this search)
12115 you may want to limit the size of this search, using one of these
12116 commands:
12117
12118 @table @code
12119 @cindex @code{heuristic-fence-post} (Alpha, MIPS)
12120 @item set heuristic-fence-post @var{limit}
12121 Restrict @value{GDBN} to examining at most @var{limit} bytes in its
12122 search for the beginning of a function. A value of @var{0} (the
12123 default) means there is no limit. However, except for @var{0}, the
12124 larger the limit the more bytes @code{heuristic-fence-post} must search
12125 and therefore the longer it takes to run.
12126
12127 @item show heuristic-fence-post
12128 Display the current limit.
12129 @end table
12130
12131 @noindent
12132 These commands are available @emph{only} when @value{GDBN} is configured
12133 for debugging programs on Alpha or MIPS processors.
12134
12135
12136 @node Controlling GDB
12137 @chapter Controlling @value{GDBN}
12138
12139 You can alter the way @value{GDBN} interacts with you by using the
12140 @code{set} command. For commands controlling how @value{GDBN} displays
12141 data, see @ref{Print Settings, ,Print settings}. Other settings are
12142 described here.
12143
12144 @menu
12145 * Prompt:: Prompt
12146 * Editing:: Command editing
12147 * History:: Command history
12148 * Screen Size:: Screen size
12149 * Numbers:: Numbers
12150 * Messages/Warnings:: Optional warnings and messages
12151 * Debugging Output:: Optional messages about internal happenings
12152 @end menu
12153
12154 @node Prompt
12155 @section Prompt
12156
12157 @cindex prompt
12158
12159 @value{GDBN} indicates its readiness to read a command by printing a string
12160 called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
12161 can change the prompt string with the @code{set prompt} command. For
12162 instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
12163 the prompt in one of the @value{GDBN} sessions so that you can always tell
12164 which one you are talking to.
12165
12166 @emph{Note:} @code{set prompt} does not add a space for you after the
12167 prompt you set. This allows you to set a prompt which ends in a space
12168 or a prompt that does not.
12169
12170 @table @code
12171 @kindex set prompt
12172 @item set prompt @var{newprompt}
12173 Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
12174
12175 @kindex show prompt
12176 @item show prompt
12177 Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
12178 @end table
12179
12180 @node Editing
12181 @section Command editing
12182 @cindex readline
12183 @cindex command line editing
12184
12185 @value{GDBN} reads its input commands via the @dfn{readline} interface. This
12186 @sc{gnu} library provides consistent behavior for programs which provide a
12187 command line interface to the user. Advantages are @sc{gnu} Emacs-style
12188 or @dfn{vi}-style inline editing of commands, @code{csh}-like history
12189 substitution, and a storage and recall of command history across
12190 debugging sessions.
12191
12192 You may control the behavior of command line editing in @value{GDBN} with the
12193 command @code{set}.
12194
12195 @table @code
12196 @kindex set editing
12197 @cindex editing
12198 @item set editing
12199 @itemx set editing on
12200 Enable command line editing (enabled by default).
12201
12202 @item set editing off
12203 Disable command line editing.
12204
12205 @kindex show editing
12206 @item show editing
12207 Show whether command line editing is enabled.
12208 @end table
12209
12210 @node History
12211 @section Command history
12212
12213 @value{GDBN} can keep track of the commands you type during your
12214 debugging sessions, so that you can be certain of precisely what
12215 happened. Use these commands to manage the @value{GDBN} command
12216 history facility.
12217
12218 @table @code
12219 @cindex history substitution
12220 @cindex history file
12221 @kindex set history filename
12222 @kindex GDBHISTFILE
12223 @item set history filename @var{fname}
12224 Set the name of the @value{GDBN} command history file to @var{fname}.
12225 This is the file where @value{GDBN} reads an initial command history
12226 list, and where it writes the command history from this session when it
12227 exits. You can access this list through history expansion or through
12228 the history command editing characters listed below. This file defaults
12229 to the value of the environment variable @code{GDBHISTFILE}, or to
12230 @file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
12231 is not set.
12232
12233 @cindex history save
12234 @kindex set history save
12235 @item set history save
12236 @itemx set history save on
12237 Record command history in a file, whose name may be specified with the
12238 @code{set history filename} command. By default, this option is disabled.
12239
12240 @item set history save off
12241 Stop recording command history in a file.
12242
12243 @cindex history size
12244 @kindex set history size
12245 @item set history size @var{size}
12246 Set the number of commands which @value{GDBN} keeps in its history list.
12247 This defaults to the value of the environment variable
12248 @code{HISTSIZE}, or to 256 if this variable is not set.
12249 @end table
12250
12251 @cindex history expansion
12252 History expansion assigns special meaning to the character @kbd{!}.
12253 @ifset have-readline-appendices
12254 @xref{Event Designators}.
12255 @end ifset
12256
12257 Since @kbd{!} is also the logical not operator in C, history expansion
12258 is off by default. If you decide to enable history expansion with the
12259 @code{set history expansion on} command, you may sometimes need to
12260 follow @kbd{!} (when it is used as logical not, in an expression) with
12261 a space or a tab to prevent it from being expanded. The readline
12262 history facilities do not attempt substitution on the strings
12263 @kbd{!=} and @kbd{!(}, even when history expansion is enabled.
12264
12265 The commands to control history expansion are:
12266
12267 @table @code
12268 @kindex set history expansion
12269 @item set history expansion on
12270 @itemx set history expansion
12271 Enable history expansion. History expansion is off by default.
12272
12273 @item set history expansion off
12274 Disable history expansion.
12275
12276 The readline code comes with more complete documentation of
12277 editing and history expansion features. Users unfamiliar with @sc{gnu} Emacs
12278 or @code{vi} may wish to read it.
12279 @ifset have-readline-appendices
12280 @xref{Command Line Editing}.
12281 @end ifset
12282
12283 @c @group
12284 @kindex show history
12285 @item show history
12286 @itemx show history filename
12287 @itemx show history save
12288 @itemx show history size
12289 @itemx show history expansion
12290 These commands display the state of the @value{GDBN} history parameters.
12291 @code{show history} by itself displays all four states.
12292 @c @end group
12293 @end table
12294
12295 @table @code
12296 @kindex shows
12297 @item show commands
12298 Display the last ten commands in the command history.
12299
12300 @item show commands @var{n}
12301 Print ten commands centered on command number @var{n}.
12302
12303 @item show commands +
12304 Print ten commands just after the commands last printed.
12305 @end table
12306
12307 @node Screen Size
12308 @section Screen size
12309 @cindex size of screen
12310 @cindex pauses in output
12311
12312 Certain commands to @value{GDBN} may produce large amounts of
12313 information output to the screen. To help you read all of it,
12314 @value{GDBN} pauses and asks you for input at the end of each page of
12315 output. Type @key{RET} when you want to continue the output, or @kbd{q}
12316 to discard the remaining output. Also, the screen width setting
12317 determines when to wrap lines of output. Depending on what is being
12318 printed, @value{GDBN} tries to break the line at a readable place,
12319 rather than simply letting it overflow onto the following line.
12320
12321 Normally @value{GDBN} knows the size of the screen from the terminal
12322 driver software. For example, on Unix @value{GDBN} uses the termcap data base
12323 together with the value of the @code{TERM} environment variable and the
12324 @code{stty rows} and @code{stty cols} settings. If this is not correct,
12325 you can override it with the @code{set height} and @code{set
12326 width} commands:
12327
12328 @table @code
12329 @kindex set height
12330 @kindex set width
12331 @kindex show width
12332 @kindex show height
12333 @item set height @var{lpp}
12334 @itemx show height
12335 @itemx set width @var{cpl}
12336 @itemx show width
12337 These @code{set} commands specify a screen height of @var{lpp} lines and
12338 a screen width of @var{cpl} characters. The associated @code{show}
12339 commands display the current settings.
12340
12341 If you specify a height of zero lines, @value{GDBN} does not pause during
12342 output no matter how long the output is. This is useful if output is to a
12343 file or to an editor buffer.
12344
12345 Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
12346 from wrapping its output.
12347 @end table
12348
12349 @node Numbers
12350 @section Numbers
12351 @cindex number representation
12352 @cindex entering numbers
12353
12354 You can always enter numbers in octal, decimal, or hexadecimal in
12355 @value{GDBN} by the usual conventions: octal numbers begin with
12356 @samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
12357 begin with @samp{0x}. Numbers that begin with none of these are, by
12358 default, entered in base 10; likewise, the default display for
12359 numbers---when no particular format is specified---is base 10. You can
12360 change the default base for both input and output with the @code{set
12361 radix} command.
12362
12363 @table @code
12364 @kindex set input-radix
12365 @item set input-radix @var{base}
12366 Set the default base for numeric input. Supported choices
12367 for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
12368 specified either unambiguously or using the current default radix; for
12369 example, any of
12370
12371 @smallexample
12372 set radix 012
12373 set radix 10.
12374 set radix 0xa
12375 @end smallexample
12376
12377 @noindent
12378 sets the base to decimal. On the other hand, @samp{set radix 10}
12379 leaves the radix unchanged no matter what it was.
12380
12381 @kindex set output-radix
12382 @item set output-radix @var{base}
12383 Set the default base for numeric display. Supported choices
12384 for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
12385 specified either unambiguously or using the current default radix.
12386
12387 @kindex show input-radix
12388 @item show input-radix
12389 Display the current default base for numeric input.
12390
12391 @kindex show output-radix
12392 @item show output-radix
12393 Display the current default base for numeric display.
12394 @end table
12395
12396 @node Messages/Warnings
12397 @section Optional warnings and messages
12398
12399 By default, @value{GDBN} is silent about its inner workings. If you are
12400 running on a slow machine, you may want to use the @code{set verbose}
12401 command. This makes @value{GDBN} tell you when it does a lengthy
12402 internal operation, so you will not think it has crashed.
12403
12404 Currently, the messages controlled by @code{set verbose} are those
12405 which announce that the symbol table for a source file is being read;
12406 see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
12407
12408 @table @code
12409 @kindex set verbose
12410 @item set verbose on
12411 Enables @value{GDBN} output of certain informational messages.
12412
12413 @item set verbose off
12414 Disables @value{GDBN} output of certain informational messages.
12415
12416 @kindex show verbose
12417 @item show verbose
12418 Displays whether @code{set verbose} is on or off.
12419 @end table
12420
12421 By default, if @value{GDBN} encounters bugs in the symbol table of an
12422 object file, it is silent; but if you are debugging a compiler, you may
12423 find this information useful (@pxref{Symbol Errors, ,Errors reading
12424 symbol files}).
12425
12426 @table @code
12427
12428 @kindex set complaints
12429 @item set complaints @var{limit}
12430 Permits @value{GDBN} to output @var{limit} complaints about each type of
12431 unusual symbols before becoming silent about the problem. Set
12432 @var{limit} to zero to suppress all complaints; set it to a large number
12433 to prevent complaints from being suppressed.
12434
12435 @kindex show complaints
12436 @item show complaints
12437 Displays how many symbol complaints @value{GDBN} is permitted to produce.
12438
12439 @end table
12440
12441 By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
12442 lot of stupid questions to confirm certain commands. For example, if
12443 you try to run a program which is already running:
12444
12445 @example
12446 (@value{GDBP}) run
12447 The program being debugged has been started already.
12448 Start it from the beginning? (y or n)
12449 @end example
12450
12451 If you are willing to unflinchingly face the consequences of your own
12452 commands, you can disable this ``feature'':
12453
12454 @table @code
12455
12456 @kindex set confirm
12457 @cindex flinching
12458 @cindex confirmation
12459 @cindex stupid questions
12460 @item set confirm off
12461 Disables confirmation requests.
12462
12463 @item set confirm on
12464 Enables confirmation requests (the default).
12465
12466 @kindex show confirm
12467 @item show confirm
12468 Displays state of confirmation requests.
12469
12470 @end table
12471
12472 @node Debugging Output
12473 @section Optional messages about internal happenings
12474 @table @code
12475 @kindex set debug arch
12476 @item set debug arch
12477 Turns on or off display of gdbarch debugging info. The default is off
12478 @kindex show debug arch
12479 @item show debug arch
12480 Displays the current state of displaying gdbarch debugging info.
12481 @kindex set debug event
12482 @item set debug event
12483 Turns on or off display of @value{GDBN} event debugging info. The
12484 default is off.
12485 @kindex show debug event
12486 @item show debug event
12487 Displays the current state of displaying @value{GDBN} event debugging
12488 info.
12489 @kindex set debug expression
12490 @item set debug expression
12491 Turns on or off display of @value{GDBN} expression debugging info. The
12492 default is off.
12493 @kindex show debug expression
12494 @item show debug expression
12495 Displays the current state of displaying @value{GDBN} expression
12496 debugging info.
12497 @kindex set debug overload
12498 @item set debug overload
12499 Turns on or off display of @value{GDBN} C@t{++} overload debugging
12500 info. This includes info such as ranking of functions, etc. The default
12501 is off.
12502 @kindex show debug overload
12503 @item show debug overload
12504 Displays the current state of displaying @value{GDBN} C@t{++} overload
12505 debugging info.
12506 @kindex set debug remote
12507 @cindex packets, reporting on stdout
12508 @cindex serial connections, debugging
12509 @item set debug remote
12510 Turns on or off display of reports on all packets sent back and forth across
12511 the serial line to the remote machine. The info is printed on the
12512 @value{GDBN} standard output stream. The default is off.
12513 @kindex show debug remote
12514 @item show debug remote
12515 Displays the state of display of remote packets.
12516 @kindex set debug serial
12517 @item set debug serial
12518 Turns on or off display of @value{GDBN} serial debugging info. The
12519 default is off.
12520 @kindex show debug serial
12521 @item show debug serial
12522 Displays the current state of displaying @value{GDBN} serial debugging
12523 info.
12524 @kindex set debug target
12525 @item set debug target
12526 Turns on or off display of @value{GDBN} target debugging info. This info
12527 includes what is going on at the target level of GDB, as it happens. The
12528 default is off.
12529 @kindex show debug target
12530 @item show debug target
12531 Displays the current state of displaying @value{GDBN} target debugging
12532 info.
12533 @kindex set debug varobj
12534 @item set debug varobj
12535 Turns on or off display of @value{GDBN} variable object debugging
12536 info. The default is off.
12537 @kindex show debug varobj
12538 @item show debug varobj
12539 Displays the current state of displaying @value{GDBN} variable object
12540 debugging info.
12541 @end table
12542
12543 @node Sequences
12544 @chapter Canned Sequences of Commands
12545
12546 Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
12547 command lists}), @value{GDBN} provides two ways to store sequences of
12548 commands for execution as a unit: user-defined commands and command
12549 files.
12550
12551 @menu
12552 * Define:: User-defined commands
12553 * Hooks:: User-defined command hooks
12554 * Command Files:: Command files
12555 * Output:: Commands for controlled output
12556 @end menu
12557
12558 @node Define
12559 @section User-defined commands
12560
12561 @cindex user-defined command
12562 A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
12563 which you assign a new name as a command. This is done with the
12564 @code{define} command. User commands may accept up to 10 arguments
12565 separated by whitespace. Arguments are accessed within the user command
12566 via @var{$arg0@dots{}$arg9}. A trivial example:
12567
12568 @smallexample
12569 define adder
12570 print $arg0 + $arg1 + $arg2
12571 @end smallexample
12572
12573 @noindent
12574 To execute the command use:
12575
12576 @smallexample
12577 adder 1 2 3
12578 @end smallexample
12579
12580 @noindent
12581 This defines the command @code{adder}, which prints the sum of
12582 its three arguments. Note the arguments are text substitutions, so they may
12583 reference variables, use complex expressions, or even perform inferior
12584 functions calls.
12585
12586 @table @code
12587
12588 @kindex define
12589 @item define @var{commandname}
12590 Define a command named @var{commandname}. If there is already a command
12591 by that name, you are asked to confirm that you want to redefine it.
12592
12593 The definition of the command is made up of other @value{GDBN} command lines,
12594 which are given following the @code{define} command. The end of these
12595 commands is marked by a line containing @code{end}.
12596
12597 @kindex if
12598 @kindex else
12599 @item if
12600 Takes a single argument, which is an expression to evaluate.
12601 It is followed by a series of commands that are executed
12602 only if the expression is true (nonzero).
12603 There can then optionally be a line @code{else}, followed
12604 by a series of commands that are only executed if the expression
12605 was false. The end of the list is marked by a line containing @code{end}.
12606
12607 @kindex while
12608 @item while
12609 The syntax is similar to @code{if}: the command takes a single argument,
12610 which is an expression to evaluate, and must be followed by the commands to
12611 execute, one per line, terminated by an @code{end}.
12612 The commands are executed repeatedly as long as the expression
12613 evaluates to true.
12614
12615 @kindex document
12616 @item document @var{commandname}
12617 Document the user-defined command @var{commandname}, so that it can be
12618 accessed by @code{help}. The command @var{commandname} must already be
12619 defined. This command reads lines of documentation just as @code{define}
12620 reads the lines of the command definition, ending with @code{end}.
12621 After the @code{document} command is finished, @code{help} on command
12622 @var{commandname} displays the documentation you have written.
12623
12624 You may use the @code{document} command again to change the
12625 documentation of a command. Redefining the command with @code{define}
12626 does not change the documentation.
12627
12628 @kindex help user-defined
12629 @item help user-defined
12630 List all user-defined commands, with the first line of the documentation
12631 (if any) for each.
12632
12633 @kindex show user
12634 @item show user
12635 @itemx show user @var{commandname}
12636 Display the @value{GDBN} commands used to define @var{commandname} (but
12637 not its documentation). If no @var{commandname} is given, display the
12638 definitions for all user-defined commands.
12639
12640 @end table
12641
12642 When user-defined commands are executed, the
12643 commands of the definition are not printed. An error in any command
12644 stops execution of the user-defined command.
12645
12646 If used interactively, commands that would ask for confirmation proceed
12647 without asking when used inside a user-defined command. Many @value{GDBN}
12648 commands that normally print messages to say what they are doing omit the
12649 messages when used in a user-defined command.
12650
12651 @node Hooks
12652 @section User-defined command hooks
12653 @cindex command hooks
12654 @cindex hooks, for commands
12655 @cindex hooks, pre-command
12656
12657 @kindex hook
12658 @kindex hook-
12659 You may define @dfn{hooks}, which are a special kind of user-defined
12660 command. Whenever you run the command @samp{foo}, if the user-defined
12661 command @samp{hook-foo} exists, it is executed (with no arguments)
12662 before that command.
12663
12664 @cindex hooks, post-command
12665 @kindex hookpost
12666 @kindex hookpost-
12667 A hook may also be defined which is run after the command you executed.
12668 Whenever you run the command @samp{foo}, if the user-defined command
12669 @samp{hookpost-foo} exists, it is executed (with no arguments) after
12670 that command. Post-execution hooks may exist simultaneously with
12671 pre-execution hooks, for the same command.
12672
12673 It is valid for a hook to call the command which it hooks. If this
12674 occurs, the hook is not re-executed, thereby avoiding infinte recursion.
12675
12676 @c It would be nice if hookpost could be passed a parameter indicating
12677 @c if the command it hooks executed properly or not. FIXME!
12678
12679 @kindex stop@r{, a pseudo-command}
12680 In addition, a pseudo-command, @samp{stop} exists. Defining
12681 (@samp{hook-stop}) makes the associated commands execute every time
12682 execution stops in your program: before breakpoint commands are run,
12683 displays are printed, or the stack frame is printed.
12684
12685 For example, to ignore @code{SIGALRM} signals while
12686 single-stepping, but treat them normally during normal execution,
12687 you could define:
12688
12689 @example
12690 define hook-stop
12691 handle SIGALRM nopass
12692 end
12693
12694 define hook-run
12695 handle SIGALRM pass
12696 end
12697
12698 define hook-continue
12699 handle SIGLARM pass
12700 end
12701 @end example
12702
12703 As a further example, to hook at the begining and end of the @code{echo}
12704 command, and to add extra text to the beginning and end of the message,
12705 you could define:
12706
12707 @example
12708 define hook-echo
12709 echo <<<---
12710 end
12711
12712 define hookpost-echo
12713 echo --->>>\n
12714 end
12715
12716 (@value{GDBP}) echo Hello World
12717 <<<---Hello World--->>>
12718 (@value{GDBP})
12719
12720 @end example
12721
12722 You can define a hook for any single-word command in @value{GDBN}, but
12723 not for command aliases; you should define a hook for the basic command
12724 name, e.g. @code{backtrace} rather than @code{bt}.
12725 @c FIXME! So how does Joe User discover whether a command is an alias
12726 @c or not?
12727 If an error occurs during the execution of your hook, execution of
12728 @value{GDBN} commands stops and @value{GDBN} issues a prompt
12729 (before the command that you actually typed had a chance to run).
12730
12731 If you try to define a hook which does not match any known command, you
12732 get a warning from the @code{define} command.
12733
12734 @node Command Files
12735 @section Command files
12736
12737 @cindex command files
12738 A command file for @value{GDBN} is a file of lines that are @value{GDBN}
12739 commands. Comments (lines starting with @kbd{#}) may also be included.
12740 An empty line in a command file does nothing; it does not mean to repeat
12741 the last command, as it would from the terminal.
12742
12743 @cindex init file
12744 @cindex @file{.gdbinit}
12745 @cindex @file{gdb.ini}
12746 When you start @value{GDBN}, it automatically executes commands from its
12747 @dfn{init files}, normally called @file{.gdbinit}@footnote{The DJGPP
12748 port of @value{GDBN} uses the name @file{gdb.ini} instead, due to the
12749 limitations of file names imposed by DOS filesystems.}.
12750 During startup, @value{GDBN} does the following:
12751
12752 @enumerate
12753 @item
12754 Reads the init file (if any) in your home directory@footnote{On
12755 DOS/Windows systems, the home directory is the one pointed to by the
12756 @code{HOME} environment variable.}.
12757
12758 @item
12759 Processes command line options and operands.
12760
12761 @item
12762 Reads the init file (if any) in the current working directory.
12763
12764 @item
12765 Reads command files specified by the @samp{-x} option.
12766 @end enumerate
12767
12768 The init file in your home directory can set options (such as @samp{set
12769 complaints}) that affect subsequent processing of command line options
12770 and operands. Init files are not executed if you use the @samp{-nx}
12771 option (@pxref{Mode Options, ,Choosing modes}).
12772
12773 @cindex init file name
12774 On some configurations of @value{GDBN}, the init file is known by a
12775 different name (these are typically environments where a specialized
12776 form of @value{GDBN} may need to coexist with other forms, hence a
12777 different name for the specialized version's init file). These are the
12778 environments with special init file names:
12779
12780 @cindex @file{.vxgdbinit}
12781 @itemize @bullet
12782 @item
12783 VxWorks (Wind River Systems real-time OS): @file{.vxgdbinit}
12784
12785 @cindex @file{.os68gdbinit}
12786 @item
12787 OS68K (Enea Data Systems real-time OS): @file{.os68gdbinit}
12788
12789 @cindex @file{.esgdbinit}
12790 @item
12791 ES-1800 (Ericsson Telecom AB M68000 emulator): @file{.esgdbinit}
12792 @end itemize
12793
12794 You can also request the execution of a command file with the
12795 @code{source} command:
12796
12797 @table @code
12798 @kindex source
12799 @item source @var{filename}
12800 Execute the command file @var{filename}.
12801 @end table
12802
12803 The lines in a command file are executed sequentially. They are not
12804 printed as they are executed. An error in any command terminates execution
12805 of the command file.
12806
12807 Commands that would ask for confirmation if used interactively proceed
12808 without asking when used in a command file. Many @value{GDBN} commands that
12809 normally print messages to say what they are doing omit the messages
12810 when called from command files.
12811
12812 @value{GDBN} also accepts command input from standard input. In this
12813 mode, normal output goes to standard output and error output goes to
12814 standard error. Errors in a command file supplied on standard input do
12815 not terminate execution of the command file --- execution continues with
12816 the next command.
12817
12818 @example
12819 gdb < cmds > log 2>&1
12820 @end example
12821
12822 (The syntax above will vary depending on the shell used.) This example
12823 will execute commands from the file @file{cmds}. All output and errors
12824 would be directed to @file{log}.
12825
12826 @node Output
12827 @section Commands for controlled output
12828
12829 During the execution of a command file or a user-defined command, normal
12830 @value{GDBN} output is suppressed; the only output that appears is what is
12831 explicitly printed by the commands in the definition. This section
12832 describes three commands useful for generating exactly the output you
12833 want.
12834
12835 @table @code
12836 @kindex echo
12837 @item echo @var{text}
12838 @c I do not consider backslash-space a standard C escape sequence
12839 @c because it is not in ANSI.
12840 Print @var{text}. Nonprinting characters can be included in
12841 @var{text} using C escape sequences, such as @samp{\n} to print a
12842 newline. @strong{No newline is printed unless you specify one.}
12843 In addition to the standard C escape sequences, a backslash followed
12844 by a space stands for a space. This is useful for displaying a
12845 string with spaces at the beginning or the end, since leading and
12846 trailing spaces are otherwise trimmed from all arguments.
12847 To print @samp{@w{ }and foo =@w{ }}, use the command
12848 @samp{echo \@w{ }and foo = \@w{ }}.
12849
12850 A backslash at the end of @var{text} can be used, as in C, to continue
12851 the command onto subsequent lines. For example,
12852
12853 @example
12854 echo This is some text\n\
12855 which is continued\n\
12856 onto several lines.\n
12857 @end example
12858
12859 produces the same output as
12860
12861 @example
12862 echo This is some text\n
12863 echo which is continued\n
12864 echo onto several lines.\n
12865 @end example
12866
12867 @kindex output
12868 @item output @var{expression}
12869 Print the value of @var{expression} and nothing but that value: no
12870 newlines, no @samp{$@var{nn} = }. The value is not entered in the
12871 value history either. @xref{Expressions, ,Expressions}, for more information
12872 on expressions.
12873
12874 @item output/@var{fmt} @var{expression}
12875 Print the value of @var{expression} in format @var{fmt}. You can use
12876 the same formats as for @code{print}. @xref{Output Formats,,Output
12877 formats}, for more information.
12878
12879 @kindex printf
12880 @item printf @var{string}, @var{expressions}@dots{}
12881 Print the values of the @var{expressions} under the control of
12882 @var{string}. The @var{expressions} are separated by commas and may be
12883 either numbers or pointers. Their values are printed as specified by
12884 @var{string}, exactly as if your program were to execute the C
12885 subroutine
12886 @c FIXME: the above implies that at least all ANSI C formats are
12887 @c supported, but it isn't true: %E and %G don't work (or so it seems).
12888 @c Either this is a bug, or the manual should document what formats are
12889 @c supported.
12890
12891 @example
12892 printf (@var{string}, @var{expressions}@dots{});
12893 @end example
12894
12895 For example, you can print two values in hex like this:
12896
12897 @smallexample
12898 printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
12899 @end smallexample
12900
12901 The only backslash-escape sequences that you can use in the format
12902 string are the simple ones that consist of backslash followed by a
12903 letter.
12904 @end table
12905
12906 @node TUI
12907 @chapter @value{GDBN} Text User Interface
12908 @cindex TUI
12909
12910 @menu
12911 * TUI Overview:: TUI overview
12912 * TUI Keys:: TUI key bindings
12913 * TUI Commands:: TUI specific commands
12914 * TUI Configuration:: TUI configuration variables
12915 @end menu
12916
12917 The @value{GDBN} Text User Interface, TUI in short,
12918 is a terminal interface which uses the @code{curses} library
12919 to show the source file, the assembly output, the program registers
12920 and @value{GDBN} commands in separate text windows.
12921 The TUI is available only when @value{GDBN} is configured
12922 with the @code{--enable-tui} configure option (@pxref{Configure Options}).
12923
12924 @node TUI Overview
12925 @section TUI overview
12926
12927 The TUI has two display modes that can be switched while
12928 @value{GDBN} runs:
12929
12930 @itemize @bullet
12931 @item
12932 A curses (or TUI) mode in which it displays several text
12933 windows on the terminal.
12934
12935 @item
12936 A standard mode which corresponds to the @value{GDBN} configured without
12937 the TUI.
12938 @end itemize
12939
12940 In the TUI mode, @value{GDBN} can display several text window
12941 on the terminal:
12942
12943 @table @emph
12944 @item command
12945 This window is the @value{GDBN} command window with the @value{GDBN}
12946 prompt and the @value{GDBN} outputs. The @value{GDBN} input is still
12947 managed using readline but through the TUI. The @emph{command}
12948 window is always visible.
12949
12950 @item source
12951 The source window shows the source file of the program. The current
12952 line as well as active breakpoints are displayed in this window.
12953 The current program position is shown with the @samp{>} marker and
12954 active breakpoints are shown with @samp{*} markers.
12955
12956 @item assembly
12957 The assembly window shows the disassembly output of the program.
12958
12959 @item register
12960 This window shows the processor registers. It detects when
12961 a register is changed and when this is the case, registers that have
12962 changed are highlighted.
12963
12964 @end table
12965
12966 The source, assembly and register windows are attached to the thread
12967 and the frame position. They are updated when the current thread
12968 changes, when the frame changes or when the program counter changes.
12969 These three windows are arranged by the TUI according to several
12970 layouts. The layout defines which of these three windows are visible.
12971 The following layouts are available:
12972
12973 @itemize @bullet
12974 @item
12975 source
12976
12977 @item
12978 assembly
12979
12980 @item
12981 source and assembly
12982
12983 @item
12984 source and registers
12985
12986 @item
12987 assembly and registers
12988
12989 @end itemize
12990
12991 @node TUI Keys
12992 @section TUI Key Bindings
12993 @cindex TUI key bindings
12994
12995 The TUI installs several key bindings in the readline keymaps
12996 (@pxref{Command Line Editing}).
12997 They allow to leave or enter in the TUI mode or they operate
12998 directly on the TUI layout and windows. The following key bindings
12999 are installed for both TUI mode and the @value{GDBN} standard mode.
13000
13001 @table @kbd
13002 @kindex C-x C-a
13003 @item C-x C-a
13004 @kindex C-x a
13005 @itemx C-x a
13006 @kindex C-x A
13007 @itemx C-x A
13008 Enter or leave the TUI mode. When the TUI mode is left,
13009 the curses window management is left and @value{GDBN} operates using
13010 its standard mode writing on the terminal directly. When the TUI
13011 mode is entered, the control is given back to the curses windows.
13012 The screen is then refreshed.
13013
13014 @kindex C-x 1
13015 @item C-x 1
13016 Use a TUI layout with only one window. The layout will
13017 either be @samp{source} or @samp{assembly}. When the TUI mode
13018 is not active, it will switch to the TUI mode.
13019
13020 Think of this key binding as the Emacs @kbd{C-x 1} binding.
13021
13022 @kindex C-x 2
13023 @item C-x 2
13024 Use a TUI layout with at least two windows. When the current
13025 layout shows already two windows, a next layout with two windows is used.
13026 When a new layout is chosen, one window will always be common to the
13027 previous layout and the new one.
13028
13029 Think of it as the Emacs @kbd{C-x 2} binding.
13030
13031 @end table
13032
13033 The following key bindings are handled only by the TUI mode:
13034
13035 @table @key
13036 @kindex PgUp
13037 @item PgUp
13038 Scroll the active window one page up.
13039
13040 @kindex PgDn
13041 @item PgDn
13042 Scroll the active window one page down.
13043
13044 @kindex Up
13045 @item Up
13046 Scroll the active window one line up.
13047
13048 @kindex Down
13049 @item Down
13050 Scroll the active window one line down.
13051
13052 @kindex Left
13053 @item Left
13054 Scroll the active window one column left.
13055
13056 @kindex Right
13057 @item Right
13058 Scroll the active window one column right.
13059
13060 @kindex C-L
13061 @item C-L
13062 Refresh the screen.
13063
13064 @end table
13065
13066 In the TUI mode, the arrow keys are used by the active window
13067 for scrolling. This means they are not available for readline. It is
13068 necessary to use other readline key bindings such as @key{C-p}, @key{C-n},
13069 @key{C-b} and @key{C-f}.
13070
13071 @node TUI Commands
13072 @section TUI specific commands
13073 @cindex TUI commands
13074
13075 The TUI has specific commands to control the text windows.
13076 These commands are always available, that is they do not depend on
13077 the current terminal mode in which @value{GDBN} runs. When @value{GDBN}
13078 is in the standard mode, using these commands will automatically switch
13079 in the TUI mode.
13080
13081 @table @code
13082 @item layout next
13083 @kindex layout next
13084 Display the next layout.
13085
13086 @item layout prev
13087 @kindex layout prev
13088 Display the previous layout.
13089
13090 @item layout src
13091 @kindex layout src
13092 Display the source window only.
13093
13094 @item layout asm
13095 @kindex layout asm
13096 Display the assembly window only.
13097
13098 @item layout split
13099 @kindex layout split
13100 Display the source and assembly window.
13101
13102 @item layout regs
13103 @kindex layout regs
13104 Display the register window together with the source or assembly window.
13105
13106 @item focus next | prev | src | asm | regs | split
13107 @kindex focus
13108 Set the focus to the named window.
13109 This command allows to change the active window so that scrolling keys
13110 can be affected to another window.
13111
13112 @item refresh
13113 @kindex refresh
13114 Refresh the screen. This is similar to using @key{C-L} key.
13115
13116 @item update
13117 @kindex update
13118 Update the source window and the current execution point.
13119
13120 @item winheight @var{name} +@var{count}
13121 @itemx winheight @var{name} -@var{count}
13122 @kindex winheight
13123 Change the height of the window @var{name} by @var{count}
13124 lines. Positive counts increase the height, while negative counts
13125 decrease it.
13126
13127 @end table
13128
13129 @node TUI Configuration
13130 @section TUI configuration variables
13131 @cindex TUI configuration variables
13132
13133 The TUI has several configuration variables that control the
13134 appearance of windows on the terminal.
13135
13136 @table @code
13137 @item set tui border-kind @var{kind}
13138 @kindex set tui border-kind
13139 Select the border appearance for the source, assembly and register windows.
13140 The possible values are the following:
13141 @table @code
13142 @item space
13143 Use a space character to draw the border.
13144
13145 @item ascii
13146 Use ascii characters + - and | to draw the border.
13147
13148 @item acs
13149 Use the Alternate Character Set to draw the border. The border is
13150 drawn using character line graphics if the terminal supports them.
13151
13152 @end table
13153
13154 @item set tui active-border-mode @var{mode}
13155 @kindex set tui active-border-mode
13156 Select the attributes to display the border of the active window.
13157 The possible values are @code{normal}, @code{standout}, @code{reverse},
13158 @code{half}, @code{half-standout}, @code{bold} and @code{bold-standout}.
13159
13160 @item set tui border-mode @var{mode}
13161 @kindex set tui border-mode
13162 Select the attributes to display the border of other windows.
13163 The @var{mode} can be one of the following:
13164 @table @code
13165 @item normal
13166 Use normal attributes to display the border.
13167
13168 @item standout
13169 Use standout mode.
13170
13171 @item reverse
13172 Use reverse video mode.
13173
13174 @item half
13175 Use half bright mode.
13176
13177 @item half-standout
13178 Use half bright and standout mode.
13179
13180 @item bold
13181 Use extra bright or bold mode.
13182
13183 @item bold-standout
13184 Use extra bright or bold and standout mode.
13185
13186 @end table
13187
13188 @end table
13189
13190 @node Emacs
13191 @chapter Using @value{GDBN} under @sc{gnu} Emacs
13192
13193 @cindex Emacs
13194 @cindex @sc{gnu} Emacs
13195 A special interface allows you to use @sc{gnu} Emacs to view (and
13196 edit) the source files for the program you are debugging with
13197 @value{GDBN}.
13198
13199 To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
13200 executable file you want to debug as an argument. This command starts
13201 @value{GDBN} as a subprocess of Emacs, with input and output through a newly
13202 created Emacs buffer.
13203 @c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
13204
13205 Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
13206 things:
13207
13208 @itemize @bullet
13209 @item
13210 All ``terminal'' input and output goes through the Emacs buffer.
13211 @end itemize
13212
13213 This applies both to @value{GDBN} commands and their output, and to the input
13214 and output done by the program you are debugging.
13215
13216 This is useful because it means that you can copy the text of previous
13217 commands and input them again; you can even use parts of the output
13218 in this way.
13219
13220 All the facilities of Emacs' Shell mode are available for interacting
13221 with your program. In particular, you can send signals the usual
13222 way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
13223 stop.
13224
13225 @itemize @bullet
13226 @item
13227 @value{GDBN} displays source code through Emacs.
13228 @end itemize
13229
13230 Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
13231 source file for that frame and puts an arrow (@samp{=>}) at the
13232 left margin of the current line. Emacs uses a separate buffer for
13233 source display, and splits the screen to show both your @value{GDBN} session
13234 and the source.
13235
13236 Explicit @value{GDBN} @code{list} or search commands still produce output as
13237 usual, but you probably have no reason to use them from Emacs.
13238
13239 @quotation
13240 @emph{Warning:} If the directory where your program resides is not your
13241 current directory, it can be easy to confuse Emacs about the location of
13242 the source files, in which case the auxiliary display buffer does not
13243 appear to show your source. @value{GDBN} can find programs by searching your
13244 environment's @code{PATH} variable, so the @value{GDBN} input and output
13245 session proceeds normally; but Emacs does not get enough information
13246 back from @value{GDBN} to locate the source files in this situation. To
13247 avoid this problem, either start @value{GDBN} mode from the directory where
13248 your program resides, or specify an absolute file name when prompted for the
13249 @kbd{M-x gdb} argument.
13250
13251 A similar confusion can result if you use the @value{GDBN} @code{file} command to
13252 switch to debugging a program in some other location, from an existing
13253 @value{GDBN} buffer in Emacs.
13254 @end quotation
13255
13256 By default, @kbd{M-x gdb} calls the program called @file{gdb}. If
13257 you need to call @value{GDBN} by a different name (for example, if you keep
13258 several configurations around, with different names) you can set the
13259 Emacs variable @code{gdb-command-name}; for example,
13260
13261 @example
13262 (setq gdb-command-name "mygdb")
13263 @end example
13264
13265 @noindent
13266 (preceded by @kbd{M-:} or @kbd{ESC :}, or typed in the @code{*scratch*} buffer, or
13267 in your @file{.emacs} file) makes Emacs call the program named
13268 ``@code{mygdb}'' instead.
13269
13270 In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
13271 addition to the standard Shell mode commands:
13272
13273 @table @kbd
13274 @item C-h m
13275 Describe the features of Emacs' @value{GDBN} Mode.
13276
13277 @item M-s
13278 Execute to another source line, like the @value{GDBN} @code{step} command; also
13279 update the display window to show the current file and location.
13280
13281 @item M-n
13282 Execute to next source line in this function, skipping all function
13283 calls, like the @value{GDBN} @code{next} command. Then update the display window
13284 to show the current file and location.
13285
13286 @item M-i
13287 Execute one instruction, like the @value{GDBN} @code{stepi} command; update
13288 display window accordingly.
13289
13290 @item M-x gdb-nexti
13291 Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
13292 display window accordingly.
13293
13294 @item C-c C-f
13295 Execute until exit from the selected stack frame, like the @value{GDBN}
13296 @code{finish} command.
13297
13298 @item M-c
13299 Continue execution of your program, like the @value{GDBN} @code{continue}
13300 command.
13301
13302 @emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
13303
13304 @item M-u
13305 Go up the number of frames indicated by the numeric argument
13306 (@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
13307 like the @value{GDBN} @code{up} command.
13308
13309 @emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
13310
13311 @item M-d
13312 Go down the number of frames indicated by the numeric argument, like the
13313 @value{GDBN} @code{down} command.
13314
13315 @emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
13316
13317 @item C-x &
13318 Read the number where the cursor is positioned, and insert it at the end
13319 of the @value{GDBN} I/O buffer. For example, if you wish to disassemble code
13320 around an address that was displayed earlier, type @kbd{disassemble};
13321 then move the cursor to the address display, and pick up the
13322 argument for @code{disassemble} by typing @kbd{C-x &}.
13323
13324 You can customize this further by defining elements of the list
13325 @code{gdb-print-command}; once it is defined, you can format or
13326 otherwise process numbers picked up by @kbd{C-x &} before they are
13327 inserted. A numeric argument to @kbd{C-x &} indicates that you
13328 wish special formatting, and also acts as an index to pick an element of the
13329 list. If the list element is a string, the number to be inserted is
13330 formatted using the Emacs function @code{format}; otherwise the number
13331 is passed as an argument to the corresponding list element.
13332 @end table
13333
13334 In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
13335 tells @value{GDBN} to set a breakpoint on the source line point is on.
13336
13337 If you accidentally delete the source-display buffer, an easy way to get
13338 it back is to type the command @code{f} in the @value{GDBN} buffer, to
13339 request a frame display; when you run under Emacs, this recreates
13340 the source buffer if necessary to show you the context of the current
13341 frame.
13342
13343 The source files displayed in Emacs are in ordinary Emacs buffers
13344 which are visiting the source files in the usual way. You can edit
13345 the files with these buffers if you wish; but keep in mind that @value{GDBN}
13346 communicates with Emacs in terms of line numbers. If you add or
13347 delete lines from the text, the line numbers that @value{GDBN} knows cease
13348 to correspond properly with the code.
13349
13350 @c The following dropped because Epoch is nonstandard. Reactivate
13351 @c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
13352 @ignore
13353 @kindex Emacs Epoch environment
13354 @kindex Epoch
13355 @kindex inspect
13356
13357 Version 18 of @sc{gnu} Emacs has a built-in window system
13358 called the @code{epoch}
13359 environment. Users of this environment can use a new command,
13360 @code{inspect} which performs identically to @code{print} except that
13361 each value is printed in its own window.
13362 @end ignore
13363
13364 @include annotate.texi
13365 @include gdbmi.texinfo
13366
13367 @node GDB Bugs
13368 @chapter Reporting Bugs in @value{GDBN}
13369 @cindex bugs in @value{GDBN}
13370 @cindex reporting bugs in @value{GDBN}
13371
13372 Your bug reports play an essential role in making @value{GDBN} reliable.
13373
13374 Reporting a bug may help you by bringing a solution to your problem, or it
13375 may not. But in any case the principal function of a bug report is to help
13376 the entire community by making the next version of @value{GDBN} work better. Bug
13377 reports are your contribution to the maintenance of @value{GDBN}.
13378
13379 In order for a bug report to serve its purpose, you must include the
13380 information that enables us to fix the bug.
13381
13382 @menu
13383 * Bug Criteria:: Have you found a bug?
13384 * Bug Reporting:: How to report bugs
13385 @end menu
13386
13387 @node Bug Criteria
13388 @section Have you found a bug?
13389 @cindex bug criteria
13390
13391 If you are not sure whether you have found a bug, here are some guidelines:
13392
13393 @itemize @bullet
13394 @cindex fatal signal
13395 @cindex debugger crash
13396 @cindex crash of debugger
13397 @item
13398 If the debugger gets a fatal signal, for any input whatever, that is a
13399 @value{GDBN} bug. Reliable debuggers never crash.
13400
13401 @cindex error on valid input
13402 @item
13403 If @value{GDBN} produces an error message for valid input, that is a
13404 bug. (Note that if you're cross debugging, the problem may also be
13405 somewhere in the connection to the target.)
13406
13407 @cindex invalid input
13408 @item
13409 If @value{GDBN} does not produce an error message for invalid input,
13410 that is a bug. However, you should note that your idea of
13411 ``invalid input'' might be our idea of ``an extension'' or ``support
13412 for traditional practice''.
13413
13414 @item
13415 If you are an experienced user of debugging tools, your suggestions
13416 for improvement of @value{GDBN} are welcome in any case.
13417 @end itemize
13418
13419 @node Bug Reporting
13420 @section How to report bugs
13421 @cindex bug reports
13422 @cindex @value{GDBN} bugs, reporting
13423
13424 A number of companies and individuals offer support for @sc{gnu} products.
13425 If you obtained @value{GDBN} from a support organization, we recommend you
13426 contact that organization first.
13427
13428 You can find contact information for many support companies and
13429 individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
13430 distribution.
13431 @c should add a web page ref...
13432
13433 In any event, we also recommend that you send bug reports for
13434 @value{GDBN} to this addresses:
13435
13436 @example
13437 bug-gdb@@gnu.org
13438 @end example
13439
13440 @strong{Do not send bug reports to @samp{info-gdb}, or to
13441 @samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
13442 not want to receive bug reports. Those that do have arranged to receive
13443 @samp{bug-gdb}.
13444
13445 The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
13446 serves as a repeater. The mailing list and the newsgroup carry exactly
13447 the same messages. Often people think of posting bug reports to the
13448 newsgroup instead of mailing them. This appears to work, but it has one
13449 problem which can be crucial: a newsgroup posting often lacks a mail
13450 path back to the sender. Thus, if we need to ask for more information,
13451 we may be unable to reach you. For this reason, it is better to send
13452 bug reports to the mailing list.
13453
13454 As a last resort, send bug reports on paper to:
13455
13456 @example
13457 @sc{gnu} Debugger Bugs
13458 Free Software Foundation Inc.
13459 59 Temple Place - Suite 330
13460 Boston, MA 02111-1307
13461 USA
13462 @end example
13463
13464 The fundamental principle of reporting bugs usefully is this:
13465 @strong{report all the facts}. If you are not sure whether to state a
13466 fact or leave it out, state it!
13467
13468 Often people omit facts because they think they know what causes the
13469 problem and assume that some details do not matter. Thus, you might
13470 assume that the name of the variable you use in an example does not matter.
13471 Well, probably it does not, but one cannot be sure. Perhaps the bug is a
13472 stray memory reference which happens to fetch from the location where that
13473 name is stored in memory; perhaps, if the name were different, the contents
13474 of that location would fool the debugger into doing the right thing despite
13475 the bug. Play it safe and give a specific, complete example. That is the
13476 easiest thing for you to do, and the most helpful.
13477
13478 Keep in mind that the purpose of a bug report is to enable us to fix the
13479 bug. It may be that the bug has been reported previously, but neither
13480 you nor we can know that unless your bug report is complete and
13481 self-contained.
13482
13483 Sometimes people give a few sketchy facts and ask, ``Does this ring a
13484 bell?'' Those bug reports are useless, and we urge everyone to
13485 @emph{refuse to respond to them} except to chide the sender to report
13486 bugs properly.
13487
13488 To enable us to fix the bug, you should include all these things:
13489
13490 @itemize @bullet
13491 @item
13492 The version of @value{GDBN}. @value{GDBN} announces it if you start
13493 with no arguments; you can also print it at any time using @code{show
13494 version}.
13495
13496 Without this, we will not know whether there is any point in looking for
13497 the bug in the current version of @value{GDBN}.
13498
13499 @item
13500 The type of machine you are using, and the operating system name and
13501 version number.
13502
13503 @item
13504 What compiler (and its version) was used to compile @value{GDBN}---e.g.
13505 ``@value{GCC}--2.8.1''.
13506
13507 @item
13508 What compiler (and its version) was used to compile the program you are
13509 debugging---e.g. ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
13510 C Compiler''. For GCC, you can say @code{gcc --version} to get this
13511 information; for other compilers, see the documentation for those
13512 compilers.
13513
13514 @item
13515 The command arguments you gave the compiler to compile your example and
13516 observe the bug. For example, did you use @samp{-O}? To guarantee
13517 you will not omit something important, list them all. A copy of the
13518 Makefile (or the output from make) is sufficient.
13519
13520 If we were to try to guess the arguments, we would probably guess wrong
13521 and then we might not encounter the bug.
13522
13523 @item
13524 A complete input script, and all necessary source files, that will
13525 reproduce the bug.
13526
13527 @item
13528 A description of what behavior you observe that you believe is
13529 incorrect. For example, ``It gets a fatal signal.''
13530
13531 Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
13532 will certainly notice it. But if the bug is incorrect output, we might
13533 not notice unless it is glaringly wrong. You might as well not give us
13534 a chance to make a mistake.
13535
13536 Even if the problem you experience is a fatal signal, you should still
13537 say so explicitly. Suppose something strange is going on, such as, your
13538 copy of @value{GDBN} is out of synch, or you have encountered a bug in
13539 the C library on your system. (This has happened!) Your copy might
13540 crash and ours would not. If you told us to expect a crash, then when
13541 ours fails to crash, we would know that the bug was not happening for
13542 us. If you had not told us to expect a crash, then we would not be able
13543 to draw any conclusion from our observations.
13544
13545 @item
13546 If you wish to suggest changes to the @value{GDBN} source, send us context
13547 diffs. If you even discuss something in the @value{GDBN} source, refer to
13548 it by context, not by line number.
13549
13550 The line numbers in our development sources will not match those in your
13551 sources. Your line numbers would convey no useful information to us.
13552
13553 @end itemize
13554
13555 Here are some things that are not necessary:
13556
13557 @itemize @bullet
13558 @item
13559 A description of the envelope of the bug.
13560
13561 Often people who encounter a bug spend a lot of time investigating
13562 which changes to the input file will make the bug go away and which
13563 changes will not affect it.
13564
13565 This is often time consuming and not very useful, because the way we
13566 will find the bug is by running a single example under the debugger
13567 with breakpoints, not by pure deduction from a series of examples.
13568 We recommend that you save your time for something else.
13569
13570 Of course, if you can find a simpler example to report @emph{instead}
13571 of the original one, that is a convenience for us. Errors in the
13572 output will be easier to spot, running under the debugger will take
13573 less time, and so on.
13574
13575 However, simplification is not vital; if you do not want to do this,
13576 report the bug anyway and send us the entire test case you used.
13577
13578 @item
13579 A patch for the bug.
13580
13581 A patch for the bug does help us if it is a good one. But do not omit
13582 the necessary information, such as the test case, on the assumption that
13583 a patch is all we need. We might see problems with your patch and decide
13584 to fix the problem another way, or we might not understand it at all.
13585
13586 Sometimes with a program as complicated as @value{GDBN} it is very hard to
13587 construct an example that will make the program follow a certain path
13588 through the code. If you do not send us the example, we will not be able
13589 to construct one, so we will not be able to verify that the bug is fixed.
13590
13591 And if we cannot understand what bug you are trying to fix, or why your
13592 patch should be an improvement, we will not install it. A test case will
13593 help us to understand.
13594
13595 @item
13596 A guess about what the bug is or what it depends on.
13597
13598 Such guesses are usually wrong. Even we cannot guess right about such
13599 things without first using the debugger to find the facts.
13600 @end itemize
13601
13602 @c The readline documentation is distributed with the readline code
13603 @c and consists of the two following files:
13604 @c rluser.texinfo
13605 @c inc-hist.texinfo
13606 @c Use -I with makeinfo to point to the appropriate directory,
13607 @c environment var TEXINPUTS with TeX.
13608 @include rluser.texinfo
13609 @include inc-hist.texinfo
13610
13611
13612 @node Formatting Documentation
13613 @appendix Formatting Documentation
13614
13615 @cindex @value{GDBN} reference card
13616 @cindex reference card
13617 The @value{GDBN} 4 release includes an already-formatted reference card, ready
13618 for printing with PostScript or Ghostscript, in the @file{gdb}
13619 subdirectory of the main source directory@footnote{In
13620 @file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
13621 release.}. If you can use PostScript or Ghostscript with your printer,
13622 you can print the reference card immediately with @file{refcard.ps}.
13623
13624 The release also includes the source for the reference card. You
13625 can format it, using @TeX{}, by typing:
13626
13627 @example
13628 make refcard.dvi
13629 @end example
13630
13631 The @value{GDBN} reference card is designed to print in @dfn{landscape}
13632 mode on US ``letter'' size paper;
13633 that is, on a sheet 11 inches wide by 8.5 inches
13634 high. You will need to specify this form of printing as an option to
13635 your @sc{dvi} output program.
13636
13637 @cindex documentation
13638
13639 All the documentation for @value{GDBN} comes as part of the machine-readable
13640 distribution. The documentation is written in Texinfo format, which is
13641 a documentation system that uses a single source file to produce both
13642 on-line information and a printed manual. You can use one of the Info
13643 formatting commands to create the on-line version of the documentation
13644 and @TeX{} (or @code{texi2roff}) to typeset the printed version.
13645
13646 @value{GDBN} includes an already formatted copy of the on-line Info
13647 version of this manual in the @file{gdb} subdirectory. The main Info
13648 file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
13649 subordinate files matching @samp{gdb.info*} in the same directory. If
13650 necessary, you can print out these files, or read them with any editor;
13651 but they are easier to read using the @code{info} subsystem in @sc{gnu}
13652 Emacs or the standalone @code{info} program, available as part of the
13653 @sc{gnu} Texinfo distribution.
13654
13655 If you want to format these Info files yourself, you need one of the
13656 Info formatting programs, such as @code{texinfo-format-buffer} or
13657 @code{makeinfo}.
13658
13659 If you have @code{makeinfo} installed, and are in the top level
13660 @value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
13661 version @value{GDBVN}), you can make the Info file by typing:
13662
13663 @example
13664 cd gdb
13665 make gdb.info
13666 @end example
13667
13668 If you want to typeset and print copies of this manual, you need @TeX{},
13669 a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
13670 Texinfo definitions file.
13671
13672 @TeX{} is a typesetting program; it does not print files directly, but
13673 produces output files called @sc{dvi} files. To print a typeset
13674 document, you need a program to print @sc{dvi} files. If your system
13675 has @TeX{} installed, chances are it has such a program. The precise
13676 command to use depends on your system; @kbd{lpr -d} is common; another
13677 (for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
13678 require a file name without any extension or a @samp{.dvi} extension.
13679
13680 @TeX{} also requires a macro definitions file called
13681 @file{texinfo.tex}. This file tells @TeX{} how to typeset a document
13682 written in Texinfo format. On its own, @TeX{} cannot either read or
13683 typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
13684 and is located in the @file{gdb-@var{version-number}/texinfo}
13685 directory.
13686
13687 If you have @TeX{} and a @sc{dvi} printer program installed, you can
13688 typeset and print this manual. First switch to the the @file{gdb}
13689 subdirectory of the main source directory (for example, to
13690 @file{gdb-@value{GDBVN}/gdb}) and type:
13691
13692 @example
13693 make gdb.dvi
13694 @end example
13695
13696 Then give @file{gdb.dvi} to your @sc{dvi} printing program.
13697
13698 @node Installing GDB
13699 @appendix Installing @value{GDBN}
13700 @cindex configuring @value{GDBN}
13701 @cindex installation
13702
13703 @value{GDBN} comes with a @code{configure} script that automates the process
13704 of preparing @value{GDBN} for installation; you can then use @code{make} to
13705 build the @code{gdb} program.
13706 @iftex
13707 @c irrelevant in info file; it's as current as the code it lives with.
13708 @footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
13709 look at the @file{README} file in the sources; we may have improved the
13710 installation procedures since publishing this manual.}
13711 @end iftex
13712
13713 The @value{GDBN} distribution includes all the source code you need for
13714 @value{GDBN} in a single directory, whose name is usually composed by
13715 appending the version number to @samp{gdb}.
13716
13717 For example, the @value{GDBN} version @value{GDBVN} distribution is in the
13718 @file{gdb-@value{GDBVN}} directory. That directory contains:
13719
13720 @table @code
13721 @item gdb-@value{GDBVN}/configure @r{(and supporting files)}
13722 script for configuring @value{GDBN} and all its supporting libraries
13723
13724 @item gdb-@value{GDBVN}/gdb
13725 the source specific to @value{GDBN} itself
13726
13727 @item gdb-@value{GDBVN}/bfd
13728 source for the Binary File Descriptor library
13729
13730 @item gdb-@value{GDBVN}/include
13731 @sc{gnu} include files
13732
13733 @item gdb-@value{GDBVN}/libiberty
13734 source for the @samp{-liberty} free software library
13735
13736 @item gdb-@value{GDBVN}/opcodes
13737 source for the library of opcode tables and disassemblers
13738
13739 @item gdb-@value{GDBVN}/readline
13740 source for the @sc{gnu} command-line interface
13741
13742 @item gdb-@value{GDBVN}/glob
13743 source for the @sc{gnu} filename pattern-matching subroutine
13744
13745 @item gdb-@value{GDBVN}/mmalloc
13746 source for the @sc{gnu} memory-mapped malloc package
13747 @end table
13748
13749 The simplest way to configure and build @value{GDBN} is to run @code{configure}
13750 from the @file{gdb-@var{version-number}} source directory, which in
13751 this example is the @file{gdb-@value{GDBVN}} directory.
13752
13753 First switch to the @file{gdb-@var{version-number}} source directory
13754 if you are not already in it; then run @code{configure}. Pass the
13755 identifier for the platform on which @value{GDBN} will run as an
13756 argument.
13757
13758 For example:
13759
13760 @example
13761 cd gdb-@value{GDBVN}
13762 ./configure @var{host}
13763 make
13764 @end example
13765
13766 @noindent
13767 where @var{host} is an identifier such as @samp{sun4} or
13768 @samp{decstation}, that identifies the platform where @value{GDBN} will run.
13769 (You can often leave off @var{host}; @code{configure} tries to guess the
13770 correct value by examining your system.)
13771
13772 Running @samp{configure @var{host}} and then running @code{make} builds the
13773 @file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
13774 libraries, then @code{gdb} itself. The configured source files, and the
13775 binaries, are left in the corresponding source directories.
13776
13777 @need 750
13778 @code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
13779 system does not recognize this automatically when you run a different
13780 shell, you may need to run @code{sh} on it explicitly:
13781
13782 @example
13783 sh configure @var{host}
13784 @end example
13785
13786 If you run @code{configure} from a directory that contains source
13787 directories for multiple libraries or programs, such as the
13788 @file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
13789 creates configuration files for every directory level underneath (unless
13790 you tell it not to, with the @samp{--norecursion} option).
13791
13792 You can run the @code{configure} script from any of the
13793 subordinate directories in the @value{GDBN} distribution if you only want to
13794 configure that subdirectory, but be sure to specify a path to it.
13795
13796 For example, with version @value{GDBVN}, type the following to configure only
13797 the @code{bfd} subdirectory:
13798
13799 @example
13800 @group
13801 cd gdb-@value{GDBVN}/bfd
13802 ../configure @var{host}
13803 @end group
13804 @end example
13805
13806 You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
13807 However, you should make sure that the shell on your path (named by
13808 the @samp{SHELL} environment variable) is publicly readable. Remember
13809 that @value{GDBN} uses the shell to start your program---some systems refuse to
13810 let @value{GDBN} debug child processes whose programs are not readable.
13811
13812 @menu
13813 * Separate Objdir:: Compiling @value{GDBN} in another directory
13814 * Config Names:: Specifying names for hosts and targets
13815 * Configure Options:: Summary of options for configure
13816 @end menu
13817
13818 @node Separate Objdir
13819 @section Compiling @value{GDBN} in another directory
13820
13821 If you want to run @value{GDBN} versions for several host or target machines,
13822 you need a different @code{gdb} compiled for each combination of
13823 host and target. @code{configure} is designed to make this easy by
13824 allowing you to generate each configuration in a separate subdirectory,
13825 rather than in the source directory. If your @code{make} program
13826 handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
13827 @code{make} in each of these directories builds the @code{gdb}
13828 program specified there.
13829
13830 To build @code{gdb} in a separate directory, run @code{configure}
13831 with the @samp{--srcdir} option to specify where to find the source.
13832 (You also need to specify a path to find @code{configure}
13833 itself from your working directory. If the path to @code{configure}
13834 would be the same as the argument to @samp{--srcdir}, you can leave out
13835 the @samp{--srcdir} option; it is assumed.)
13836
13837 For example, with version @value{GDBVN}, you can build @value{GDBN} in a
13838 separate directory for a Sun 4 like this:
13839
13840 @example
13841 @group
13842 cd gdb-@value{GDBVN}
13843 mkdir ../gdb-sun4
13844 cd ../gdb-sun4
13845 ../gdb-@value{GDBVN}/configure sun4
13846 make
13847 @end group
13848 @end example
13849
13850 When @code{configure} builds a configuration using a remote source
13851 directory, it creates a tree for the binaries with the same structure
13852 (and using the same names) as the tree under the source directory. In
13853 the example, you'd find the Sun 4 library @file{libiberty.a} in the
13854 directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
13855 @file{gdb-sun4/gdb}.
13856
13857 One popular reason to build several @value{GDBN} configurations in separate
13858 directories is to configure @value{GDBN} for cross-compiling (where
13859 @value{GDBN} runs on one machine---the @dfn{host}---while debugging
13860 programs that run on another machine---the @dfn{target}).
13861 You specify a cross-debugging target by
13862 giving the @samp{--target=@var{target}} option to @code{configure}.
13863
13864 When you run @code{make} to build a program or library, you must run
13865 it in a configured directory---whatever directory you were in when you
13866 called @code{configure} (or one of its subdirectories).
13867
13868 The @code{Makefile} that @code{configure} generates in each source
13869 directory also runs recursively. If you type @code{make} in a source
13870 directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
13871 directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
13872 will build all the required libraries, and then build GDB.
13873
13874 When you have multiple hosts or targets configured in separate
13875 directories, you can run @code{make} on them in parallel (for example,
13876 if they are NFS-mounted on each of the hosts); they will not interfere
13877 with each other.
13878
13879 @node Config Names
13880 @section Specifying names for hosts and targets
13881
13882 The specifications used for hosts and targets in the @code{configure}
13883 script are based on a three-part naming scheme, but some short predefined
13884 aliases are also supported. The full naming scheme encodes three pieces
13885 of information in the following pattern:
13886
13887 @example
13888 @var{architecture}-@var{vendor}-@var{os}
13889 @end example
13890
13891 For example, you can use the alias @code{sun4} as a @var{host} argument,
13892 or as the value for @var{target} in a @code{--target=@var{target}}
13893 option. The equivalent full name is @samp{sparc-sun-sunos4}.
13894
13895 The @code{configure} script accompanying @value{GDBN} does not provide
13896 any query facility to list all supported host and target names or
13897 aliases. @code{configure} calls the Bourne shell script
13898 @code{config.sub} to map abbreviations to full names; you can read the
13899 script, if you wish, or you can use it to test your guesses on
13900 abbreviations---for example:
13901
13902 @smallexample
13903 % sh config.sub i386-linux
13904 i386-pc-linux-gnu
13905 % sh config.sub alpha-linux
13906 alpha-unknown-linux-gnu
13907 % sh config.sub hp9k700
13908 hppa1.1-hp-hpux
13909 % sh config.sub sun4
13910 sparc-sun-sunos4.1.1
13911 % sh config.sub sun3
13912 m68k-sun-sunos4.1.1
13913 % sh config.sub i986v
13914 Invalid configuration `i986v': machine `i986v' not recognized
13915 @end smallexample
13916
13917 @noindent
13918 @code{config.sub} is also distributed in the @value{GDBN} source
13919 directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
13920
13921 @node Configure Options
13922 @section @code{configure} options
13923
13924 Here is a summary of the @code{configure} options and arguments that
13925 are most often useful for building @value{GDBN}. @code{configure} also has
13926 several other options not listed here. @inforef{What Configure
13927 Does,,configure.info}, for a full explanation of @code{configure}.
13928
13929 @example
13930 configure @r{[}--help@r{]}
13931 @r{[}--prefix=@var{dir}@r{]}
13932 @r{[}--exec-prefix=@var{dir}@r{]}
13933 @r{[}--srcdir=@var{dirname}@r{]}
13934 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
13935 @r{[}--target=@var{target}@r{]}
13936 @var{host}
13937 @end example
13938
13939 @noindent
13940 You may introduce options with a single @samp{-} rather than
13941 @samp{--} if you prefer; but you may abbreviate option names if you use
13942 @samp{--}.
13943
13944 @table @code
13945 @item --help
13946 Display a quick summary of how to invoke @code{configure}.
13947
13948 @item --prefix=@var{dir}
13949 Configure the source to install programs and files under directory
13950 @file{@var{dir}}.
13951
13952 @item --exec-prefix=@var{dir}
13953 Configure the source to install programs under directory
13954 @file{@var{dir}}.
13955
13956 @c avoid splitting the warning from the explanation:
13957 @need 2000
13958 @item --srcdir=@var{dirname}
13959 @strong{Warning: using this option requires @sc{gnu} @code{make}, or another
13960 @code{make} that implements the @code{VPATH} feature.}@*
13961 Use this option to make configurations in directories separate from the
13962 @value{GDBN} source directories. Among other things, you can use this to
13963 build (or maintain) several configurations simultaneously, in separate
13964 directories. @code{configure} writes configuration specific files in
13965 the current directory, but arranges for them to use the source in the
13966 directory @var{dirname}. @code{configure} creates directories under
13967 the working directory in parallel to the source directories below
13968 @var{dirname}.
13969
13970 @item --norecursion
13971 Configure only the directory level where @code{configure} is executed; do not
13972 propagate configuration to subdirectories.
13973
13974 @item --target=@var{target}
13975 Configure @value{GDBN} for cross-debugging programs running on the specified
13976 @var{target}. Without this option, @value{GDBN} is configured to debug
13977 programs that run on the same machine (@var{host}) as @value{GDBN} itself.
13978
13979 There is no convenient way to generate a list of all available targets.
13980
13981 @item @var{host} @dots{}
13982 Configure @value{GDBN} to run on the specified @var{host}.
13983
13984 There is no convenient way to generate a list of all available hosts.
13985 @end table
13986
13987 There are many other options available as well, but they are generally
13988 needed for special purposes only.
13989
13990 @node Maintenance Commands
13991 @appendix Maintenance Commands
13992 @cindex maintenance commands
13993 @cindex internal commands
13994
13995 In addition to commands intended for @value{GDBN} users, @value{GDBN}
13996 includes a number of commands intended for @value{GDBN} developers.
13997 These commands are provided here for reference.
13998
13999 @table @code
14000 @kindex maint info breakpoints
14001 @item @anchor{maint info breakpoints}maint info breakpoints
14002 Using the same format as @samp{info breakpoints}, display both the
14003 breakpoints you've set explicitly, and those @value{GDBN} is using for
14004 internal purposes. Internal breakpoints are shown with negative
14005 breakpoint numbers. The type column identifies what kind of breakpoint
14006 is shown:
14007
14008 @table @code
14009 @item breakpoint
14010 Normal, explicitly set breakpoint.
14011
14012 @item watchpoint
14013 Normal, explicitly set watchpoint.
14014
14015 @item longjmp
14016 Internal breakpoint, used to handle correctly stepping through
14017 @code{longjmp} calls.
14018
14019 @item longjmp resume
14020 Internal breakpoint at the target of a @code{longjmp}.
14021
14022 @item until
14023 Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
14024
14025 @item finish
14026 Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
14027
14028 @item shlib events
14029 Shared library events.
14030
14031 @end table
14032
14033 @end table
14034
14035
14036 @node Remote Protocol
14037 @appendix @value{GDBN} Remote Serial Protocol
14038
14039 There may be occasions when you need to know something about the
14040 protocol---for example, if there is only one serial port to your target
14041 machine, you might want your program to do something special if it
14042 recognizes a packet meant for @value{GDBN}.
14043
14044 In the examples below, @samp{<-} and @samp{->} are used to indicate
14045 transmitted and received data respectfully.
14046
14047 @cindex protocol, @value{GDBN} remote serial
14048 @cindex serial protocol, @value{GDBN} remote
14049 @cindex remote serial protocol
14050 All @value{GDBN} commands and responses (other than acknowledgments) are
14051 sent as a @var{packet}. A @var{packet} is introduced with the character
14052 @samp{$}, the actual @var{packet-data}, and the terminating character
14053 @samp{#} followed by a two-digit @var{checksum}:
14054
14055 @example
14056 @code{$}@var{packet-data}@code{#}@var{checksum}
14057 @end example
14058 @noindent
14059
14060 @cindex checksum, for @value{GDBN} remote
14061 @noindent
14062 The two-digit @var{checksum} is computed as the modulo 256 sum of all
14063 characters between the leading @samp{$} and the trailing @samp{#} (an
14064 eight bit unsigned checksum).
14065
14066 Implementors should note that prior to @value{GDBN} 5.0 the protocol
14067 specification also included an optional two-digit @var{sequence-id}:
14068
14069 @example
14070 @code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
14071 @end example
14072
14073 @cindex sequence-id, for @value{GDBN} remote
14074 @noindent
14075 That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
14076 has never output @var{sequence-id}s. Stubs that handle packets added
14077 since @value{GDBN} 5.0 must not accept @var{sequence-id}.
14078
14079 @cindex acknowledgment, for @value{GDBN} remote
14080 When either the host or the target machine receives a packet, the first
14081 response expected is an acknowledgment: either @samp{+} (to indicate
14082 the package was received correctly) or @samp{-} (to request
14083 retransmission):
14084
14085 @example
14086 <- @code{$}@var{packet-data}@code{#}@var{checksum}
14087 -> @code{+}
14088 @end example
14089 @noindent
14090
14091 The host (@value{GDBN}) sends @var{command}s, and the target (the
14092 debugging stub incorporated in your program) sends a @var{response}. In
14093 the case of step and continue @var{command}s, the response is only sent
14094 when the operation has completed (the target has again stopped).
14095
14096 @var{packet-data} consists of a sequence of characters with the
14097 exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
14098 exceptions).
14099
14100 Fields within the packet should be separated using @samp{,} @samp{;} or
14101 @samp{:}. Except where otherwise noted all numbers are represented in
14102 HEX with leading zeros suppressed.
14103
14104 Implementors should note that prior to @value{GDBN} 5.0, the character
14105 @samp{:} could not appear as the third character in a packet (as it
14106 would potentially conflict with the @var{sequence-id}).
14107
14108 Response @var{data} can be run-length encoded to save space. A @samp{*}
14109 means that the next character is an @sc{ascii} encoding giving a repeat count
14110 which stands for that many repetitions of the character preceding the
14111 @samp{*}. The encoding is @code{n+29}, yielding a printable character
14112 where @code{n >=3} (which is where rle starts to win). The printable
14113 characters @samp{$}, @samp{#}, @samp{+} and @samp{-} or with a numeric
14114 value greater than 126 should not be used.
14115
14116 Some remote systems have used a different run-length encoding mechanism
14117 loosely refered to as the cisco encoding. Following the @samp{*}
14118 character are two hex digits that indicate the size of the packet.
14119
14120 So:
14121 @example
14122 "@code{0* }"
14123 @end example
14124 @noindent
14125 means the same as "0000".
14126
14127 The error response returned for some packets includes a two character
14128 error number. That number is not well defined.
14129
14130 For any @var{command} not supported by the stub, an empty response
14131 (@samp{$#00}) should be returned. That way it is possible to extend the
14132 protocol. A newer @value{GDBN} can tell if a packet is supported based
14133 on that response.
14134
14135 A stub is required to support the @samp{g}, @samp{G}, @samp{m}, @samp{M},
14136 @samp{c}, and @samp{s} @var{command}s. All other @var{command}s are
14137 optional.
14138
14139 Below is a complete list of all currently defined @var{command}s and
14140 their corresponding response @var{data}:
14141 @page
14142 @multitable @columnfractions .30 .30 .40
14143 @item Packet
14144 @tab Request
14145 @tab Description
14146
14147 @item extended mode
14148 @tab @code{!}
14149 @tab
14150 Enable extended mode. In extended mode, the remote server is made
14151 persistent. The @samp{R} packet is used to restart the program being
14152 debugged.
14153 @item
14154 @tab reply @samp{OK}
14155 @tab
14156 The remote target both supports and has enabled extended mode.
14157
14158 @item last signal
14159 @tab @code{?}
14160 @tab
14161 Indicate the reason the target halted. The reply is the same as for step
14162 and continue.
14163 @item
14164 @tab reply
14165 @tab see below
14166
14167
14168 @item reserved
14169 @tab @code{a}
14170 @tab Reserved for future use
14171
14172 @item set program arguments @strong{(reserved)}
14173 @tab @code{A}@var{arglen}@code{,}@var{argnum}@code{,}@var{arg}@code{,...}
14174 @tab
14175 @item
14176 @tab
14177 @tab
14178 Initialized @samp{argv[]} array passed into program. @var{arglen}
14179 specifies the number of bytes in the hex encoded byte stream @var{arg}.
14180 See @file{gdbserver} for more details.
14181 @item
14182 @tab reply @code{OK}
14183 @item
14184 @tab reply @code{E}@var{NN}
14185
14186 @item set baud @strong{(deprecated)}
14187 @tab @code{b}@var{baud}
14188 @tab
14189 Change the serial line speed to @var{baud}. JTC: @emph{When does the
14190 transport layer state change? When it's received, or after the ACK is
14191 transmitted. In either case, there are problems if the command or the
14192 acknowledgment packet is dropped.} Stan: @emph{If people really wanted
14193 to add something like this, and get it working for the first time, they
14194 ought to modify ser-unix.c to send some kind of out-of-band message to a
14195 specially-setup stub and have the switch happen "in between" packets, so
14196 that from remote protocol's point of view, nothing actually
14197 happened.}
14198
14199 @item set breakpoint @strong{(deprecated)}
14200 @tab @code{B}@var{addr},@var{mode}
14201 @tab
14202 Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
14203 breakpoint at @var{addr}. @emph{This has been replaced by the @samp{Z} and
14204 @samp{z} packets.}
14205
14206 @item continue
14207 @tab @code{c}@var{addr}
14208 @tab
14209 @var{addr} is address to resume. If @var{addr} is omitted, resume at
14210 current address.
14211 @item
14212 @tab reply
14213 @tab see below
14214
14215 @item continue with signal
14216 @tab @code{C}@var{sig}@code{;}@var{addr}
14217 @tab
14218 Continue with signal @var{sig} (hex signal number). If
14219 @code{;}@var{addr} is omitted, resume at same address.
14220 @item
14221 @tab reply
14222 @tab see below
14223
14224 @item toggle debug @strong{(deprecated)}
14225 @tab @code{d}
14226 @tab
14227 toggle debug flag.
14228
14229 @item detach
14230 @tab @code{D}
14231 @tab
14232 Detach @value{GDBN} from the remote system. Sent to the remote target before
14233 @value{GDBN} disconnects.
14234 @item
14235 @tab reply @emph{no response}
14236 @tab
14237 @value{GDBN} does not check for any response after sending this packet.
14238
14239 @item reserved
14240 @tab @code{e}
14241 @tab Reserved for future use
14242
14243 @item reserved
14244 @tab @code{E}
14245 @tab Reserved for future use
14246
14247 @item reserved
14248 @tab @code{f}
14249 @tab Reserved for future use
14250
14251 @item reserved
14252 @tab @code{F}
14253 @tab Reserved for future use
14254
14255 @item read registers
14256 @tab @code{g}
14257 @tab Read general registers.
14258 @item
14259 @tab reply @var{XX...}
14260 @tab
14261 Each byte of register data is described by two hex digits. The bytes
14262 with the register are transmitted in target byte order. The size of
14263 each register and their position within the @samp{g} @var{packet} are
14264 determined by the @value{GDBN} internal macros @var{REGISTER_RAW_SIZE} and
14265 @var{REGISTER_NAME} macros. The specification of several standard
14266 @code{g} packets is specified below.
14267 @item
14268 @tab @code{E}@var{NN}
14269 @tab for an error.
14270
14271 @item write regs
14272 @tab @code{G}@var{XX...}
14273 @tab
14274 See @samp{g} for a description of the @var{XX...} data.
14275 @item
14276 @tab reply @code{OK}
14277 @tab for success
14278 @item
14279 @tab reply @code{E}@var{NN}
14280 @tab for an error
14281
14282 @item reserved
14283 @tab @code{h}
14284 @tab Reserved for future use
14285
14286 @item set thread
14287 @tab @code{H}@var{c}@var{t...}
14288 @tab
14289 Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
14290 @samp{G}, et.al.). @var{c} = @samp{c} for thread used in step and
14291 continue; @var{t...} can be -1 for all threads. @var{c} = @samp{g} for
14292 thread used in other operations. If zero, pick a thread, any thread.
14293 @item
14294 @tab reply @code{OK}
14295 @tab for success
14296 @item
14297 @tab reply @code{E}@var{NN}
14298 @tab for an error
14299
14300 @c FIXME: JTC:
14301 @c 'H': How restrictive (or permissive) is the thread model. If a
14302 @c thread is selected and stopped, are other threads allowed
14303 @c to continue to execute? As I mentioned above, I think the
14304 @c semantics of each command when a thread is selected must be
14305 @c described. For example:
14306 @c
14307 @c 'g': If the stub supports threads and a specific thread is
14308 @c selected, returns the register block from that thread;
14309 @c otherwise returns current registers.
14310 @c
14311 @c 'G' If the stub supports threads and a specific thread is
14312 @c selected, sets the registers of the register block of
14313 @c that thread; otherwise sets current registers.
14314
14315 @item cycle step @strong{(draft)}
14316 @tab @code{i}@var{addr}@code{,}@var{nnn}
14317 @tab
14318 Step the remote target by a single clock cycle. If @code{,}@var{nnn} is
14319 present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
14320 step starting at that address.
14321
14322 @item signal then cycle step @strong{(reserved)}
14323 @tab @code{I}
14324 @tab
14325 See @samp{i} and @samp{S} for likely syntax and semantics.
14326
14327 @item reserved
14328 @tab @code{j}
14329 @tab Reserved for future use
14330
14331 @item reserved
14332 @tab @code{J}
14333 @tab Reserved for future use
14334
14335 @item kill request
14336 @tab @code{k}
14337 @tab
14338 FIXME: @emph{There is no description of how operate when a specific
14339 thread context has been selected (ie. does 'k' kill only that thread?)}.
14340
14341 @item reserved
14342 @tab @code{l}
14343 @tab Reserved for future use
14344
14345 @item reserved
14346 @tab @code{L}
14347 @tab Reserved for future use
14348
14349 @item read memory
14350 @tab @code{m}@var{addr}@code{,}@var{length}
14351 @tab
14352 Read @var{length} bytes of memory starting at address @var{addr}.
14353 Neither @value{GDBN} nor the stub assume that sized memory transfers are assumed
14354 using word alligned accesses. FIXME: @emph{A word aligned memory
14355 transfer mechanism is needed.}
14356 @item
14357 @tab reply @var{XX...}
14358 @tab
14359 @var{XX...} is mem contents. Can be fewer bytes than requested if able
14360 to read only part of the data. Neither @value{GDBN} nor the stub assume that
14361 sized memory transfers are assumed using word alligned accesses. FIXME:
14362 @emph{A word aligned memory transfer mechanism is needed.}
14363 @item
14364 @tab reply @code{E}@var{NN}
14365 @tab @var{NN} is errno
14366
14367 @item write mem
14368 @tab @code{M}@var{addr},@var{length}@code{:}@var{XX...}
14369 @tab
14370 Write @var{length} bytes of memory starting at address @var{addr}.
14371 @var{XX...} is the data.
14372 @item
14373 @tab reply @code{OK}
14374 @tab for success
14375 @item
14376 @tab reply @code{E}@var{NN}
14377 @tab
14378 for an error (this includes the case where only part of the data was
14379 written).
14380
14381 @item reserved
14382 @tab @code{n}
14383 @tab Reserved for future use
14384
14385 @item reserved
14386 @tab @code{N}
14387 @tab Reserved for future use
14388
14389 @item reserved
14390 @tab @code{o}
14391 @tab Reserved for future use
14392
14393 @item reserved
14394 @tab @code{O}
14395 @tab Reserved for future use
14396
14397 @item read reg @strong{(reserved)}
14398 @tab @code{p}@var{n...}
14399 @tab
14400 See write register.
14401 @item
14402 @tab return @var{r....}
14403 @tab The hex encoded value of the register in target byte order.
14404
14405 @item write reg
14406 @tab @code{P}@var{n...}@code{=}@var{r...}
14407 @tab
14408 Write register @var{n...} with value @var{r...}, which contains two hex
14409 digits for each byte in the register (target byte order).
14410 @item
14411 @tab reply @code{OK}
14412 @tab for success
14413 @item
14414 @tab reply @code{E}@var{NN}
14415 @tab for an error
14416
14417 @item general query
14418 @tab @code{q}@var{query}
14419 @tab
14420 Request info about @var{query}. In general @value{GDBN} queries
14421 have a leading upper case letter. Custom vendor queries should use a
14422 company prefix (in lower case) ex: @samp{qfsf.var}. @var{query} may
14423 optionally be followed by a @samp{,} or @samp{;} separated list. Stubs
14424 must ensure that they match the full @var{query} name.
14425 @item
14426 @tab reply @code{XX...}
14427 @tab Hex encoded data from query. The reply can not be empty.
14428 @item
14429 @tab reply @code{E}@var{NN}
14430 @tab error reply
14431 @item
14432 @tab reply @samp{}
14433 @tab Indicating an unrecognized @var{query}.
14434
14435 @item general set
14436 @tab @code{Q}@var{var}@code{=}@var{val}
14437 @tab
14438 Set value of @var{var} to @var{val}. See @samp{q} for a discussing of
14439 naming conventions.
14440
14441 @item reset @strong{(deprecated)}
14442 @tab @code{r}
14443 @tab
14444 Reset the entire system.
14445
14446 @item remote restart
14447 @tab @code{R}@var{XX}
14448 @tab
14449 Restart the program being debugged. @var{XX}, while needed, is ignored.
14450 This packet is only available in extended mode.
14451 @item
14452 @tab
14453 no reply
14454 @tab
14455 The @samp{R} packet has no reply.
14456
14457 @item step
14458 @tab @code{s}@var{addr}
14459 @tab
14460 @var{addr} is address to resume. If @var{addr} is omitted, resume at
14461 same address.
14462 @item
14463 @tab reply
14464 @tab see below
14465
14466 @item step with signal
14467 @tab @code{S}@var{sig}@code{;}@var{addr}
14468 @tab
14469 Like @samp{C} but step not continue.
14470 @item
14471 @tab reply
14472 @tab see below
14473
14474 @item search
14475 @tab @code{t}@var{addr}@code{:}@var{PP}@code{,}@var{MM}
14476 @tab
14477 Search backwards starting at address @var{addr} for a match with pattern
14478 @var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4
14479 bytes. @var{addr} must be at least 3 digits.
14480
14481 @item thread alive
14482 @tab @code{T}@var{XX}
14483 @tab Find out if the thread XX is alive.
14484 @item
14485 @tab reply @code{OK}
14486 @tab thread is still alive
14487 @item
14488 @tab reply @code{E}@var{NN}
14489 @tab thread is dead
14490
14491 @item reserved
14492 @tab @code{u}
14493 @tab Reserved for future use
14494
14495 @item reserved
14496 @tab @code{U}
14497 @tab Reserved for future use
14498
14499 @item reserved
14500 @tab @code{v}
14501 @tab Reserved for future use
14502
14503 @item reserved
14504 @tab @code{V}
14505 @tab Reserved for future use
14506
14507 @item reserved
14508 @tab @code{w}
14509 @tab Reserved for future use
14510
14511 @item reserved
14512 @tab @code{W}
14513 @tab Reserved for future use
14514
14515 @item reserved
14516 @tab @code{x}
14517 @tab Reserved for future use
14518
14519 @item write mem (binary)
14520 @tab @code{X}@var{addr}@code{,}@var{length}@var{:}@var{XX...}
14521 @tab
14522 @var{addr} is address, @var{length} is number of bytes, @var{XX...} is
14523 binary data. The characters @code{$}, @code{#}, and @code{0x7d} are
14524 escaped using @code{0x7d}.
14525 @item
14526 @tab reply @code{OK}
14527 @tab for success
14528 @item
14529 @tab reply @code{E}@var{NN}
14530 @tab for an error
14531
14532 @item reserved
14533 @tab @code{y}
14534 @tab Reserved for future use
14535
14536 @item reserved
14537 @tab @code{Y}
14538 @tab Reserved for future use
14539
14540 @item remove break or watchpoint @strong{(draft)}
14541 @tab @code{z}@var{t}@code{,}@var{addr}@code{,}@var{length}
14542 @tab
14543 See @samp{Z}.
14544
14545 @item insert break or watchpoint @strong{(draft)}
14546 @tab @code{Z}@var{t}@code{,}@var{addr}@code{,}@var{length}
14547 @tab
14548 @var{t} is type: @samp{0} - software breakpoint, @samp{1} - hardware
14549 breakpoint, @samp{2} - write watchpoint, @samp{3} - read watchpoint,
14550 @samp{4} - access watchpoint; @var{addr} is address; @var{length} is in
14551 bytes. For a software breakpoint, @var{length} specifies the size of
14552 the instruction to be patched. For hardware breakpoints and watchpoints
14553 @var{length} specifies the memory region to be monitored. To avoid
14554 potential problems with duplicate packets, the operations should be
14555 implemented in an idempotent way.
14556 @item
14557 @tab reply @code{E}@var{NN}
14558 @tab for an error
14559 @item
14560 @tab reply @code{OK}
14561 @tab for success
14562 @item
14563 @tab @samp{}
14564 @tab If not supported.
14565
14566 @item reserved
14567 @tab <other>
14568 @tab Reserved for future use
14569
14570 @end multitable
14571
14572 The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
14573 receive any of the below as a reply. In the case of the @samp{C},
14574 @samp{c}, @samp{S} and @samp{s} packets, that reply is only returned
14575 when the target halts. In the below the exact meaning of @samp{signal
14576 number} is poorly defined. In general one of the UNIX signal numbering
14577 conventions is used.
14578
14579 @multitable @columnfractions .4 .6
14580
14581 @item @code{S}@var{AA}
14582 @tab @var{AA} is the signal number
14583
14584 @item @code{T}@var{AA}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}
14585 @tab
14586 @var{AA} = two hex digit signal number; @var{n...} = register number
14587 (hex), @var{r...} = target byte ordered register contents, size defined
14588 by @code{REGISTER_RAW_SIZE}; @var{n...} = @samp{thread}, @var{r...} =
14589 thread process ID, this is a hex integer; @var{n...} = other string not
14590 starting with valid hex digit. @value{GDBN} should ignore this
14591 @var{n...}, @var{r...} pair and go on to the next. This way we can
14592 extend the protocol.
14593
14594 @item @code{W}@var{AA}
14595 @tab
14596 The process exited, and @var{AA} is the exit status. This is only
14597 applicable for certains sorts of targets.
14598
14599 @item @code{X}@var{AA}
14600 @tab
14601 The process terminated with signal @var{AA}.
14602
14603 @item @code{N}@var{AA}@code{;}@var{t...}@code{;}@var{d...}@code{;}@var{b...} @strong{(obsolete)}
14604 @tab
14605 @var{AA} = signal number; @var{t...} = address of symbol "_start";
14606 @var{d...} = base of data section; @var{b...} = base of bss section.
14607 @emph{Note: only used by Cisco Systems targets. The difference between
14608 this reply and the "qOffsets" query is that the 'N' packet may arrive
14609 spontaneously whereas the 'qOffsets' is a query initiated by the host
14610 debugger.}
14611
14612 @item @code{O}@var{XX...}
14613 @tab
14614 @var{XX...} is hex encoding of @sc{ascii} data. This can happen at any time
14615 while the program is running and the debugger should continue to wait
14616 for 'W', 'T', etc.
14617
14618 @end multitable
14619
14620 The following set and query packets have already been defined.
14621
14622 @multitable @columnfractions .2 .2 .6
14623
14624 @item current thread
14625 @tab @code{q}@code{C}
14626 @tab Return the current thread id.
14627 @item
14628 @tab reply @code{QC}@var{pid}
14629 @tab
14630 Where @var{pid} is a HEX encoded 16 bit process id.
14631 @item
14632 @tab reply *
14633 @tab Any other reply implies the old pid.
14634
14635 @item all thread ids
14636 @tab @code{q}@code{fThreadInfo}
14637 @item
14638 @tab @code{q}@code{sThreadInfo}
14639 @tab
14640 Obtain a list of active thread ids from the target (OS). Since there
14641 may be too many active threads to fit into one reply packet, this query
14642 works iteratively: it may require more than one query/reply sequence to
14643 obtain the entire list of threads. The first query of the sequence will
14644 be the @code{qf}@code{ThreadInfo} query; subsequent queries in the
14645 sequence will be the @code{qs}@code{ThreadInfo} query.
14646 @item
14647 @tab
14648 @tab NOTE: replaces the @code{qL} query (see below).
14649 @item
14650 @tab reply @code{m}@var{<id>}
14651 @tab A single thread id
14652 @item
14653 @tab reply @code{m}@var{<id>},@var{<id>...}
14654 @tab a comma-separated list of thread ids
14655 @item
14656 @tab reply @code{l}
14657 @tab (lower case 'el') denotes end of list.
14658 @item
14659 @tab
14660 @tab
14661 In response to each query, the target will reply with a list of one
14662 or more thread ids, in big-endian hex, separated by commas. GDB will
14663 respond to each reply with a request for more thread ids (using the
14664 @code{qs} form of the query), until the target responds with @code{l}
14665 (lower-case el, for @code{'last'}).
14666
14667 @item extra thread info
14668 @tab @code{q}@code{ThreadExtraInfo}@code{,}@var{id}
14669 @tab
14670 @item
14671 @tab
14672 @tab
14673 Where @var{<id>} is a thread-id in big-endian hex.
14674 Obtain a printable string description of a thread's attributes from
14675 the target OS. This string may contain anything that the target OS
14676 thinks is interesting for @value{GDBN} to tell the user about the thread.
14677 The string is displayed in @value{GDBN}'s @samp{info threads} display.
14678 Some examples of possible thread extra info strings are "Runnable", or
14679 "Blocked on Mutex".
14680 @item
14681 @tab reply @var{XX...}
14682 @tab
14683 Where @var{XX...} is a hex encoding of @sc{ascii} data, comprising the
14684 printable string containing the extra information about the thread's
14685 attributes.
14686
14687 @item query @var{LIST} or @var{threadLIST} @strong{(deprecated)}
14688 @tab @code{q}@code{L}@var{startflag}@var{threadcount}@var{nextthread}
14689 @tab
14690 @item
14691 @tab
14692 @tab
14693 Obtain thread information from RTOS. Where: @var{startflag} (one hex
14694 digit) is one to indicate the first query and zero to indicate a
14695 subsequent query; @var{threadcount} (two hex digits) is the maximum
14696 number of threads the response packet can contain; and @var{nextthread}
14697 (eight hex digits), for subsequent queries (@var{startflag} is zero), is
14698 returned in the response as @var{argthread}.
14699 @item
14700 @tab
14701 @tab NOTE: this query is replaced by the @code{q}@code{fThreadInfo}
14702 query (see above).
14703 @item
14704 @tab reply @code{q}@code{M}@var{count}@var{done}@var{argthread}@var{thread...}
14705 @tab
14706 @item
14707 @tab
14708 @tab
14709 Where: @var{count} (two hex digits) is the number of threads being
14710 returned; @var{done} (one hex digit) is zero to indicate more threads
14711 and one indicates no further threads; @var{argthreadid} (eight hex
14712 digits) is @var{nextthread} from the request packet; @var{thread...} is
14713 a sequence of thread IDs from the target. @var{threadid} (eight hex
14714 digits). See @code{remote.c:parse_threadlist_response()}.
14715
14716 @item compute CRC of memory block
14717 @tab @code{q}@code{CRC:}@var{addr}@code{,}@var{length}
14718 @tab
14719 @item
14720 @tab reply @code{E}@var{NN}
14721 @tab An error (such as memory fault)
14722 @item
14723 @tab reply @code{C}@var{CRC32}
14724 @tab A 32 bit cyclic redundancy check of the specified memory region.
14725
14726 @item query sect offs
14727 @tab @code{q}@code{Offsets}
14728 @tab
14729 Get section offsets that the target used when re-locating the downloaded
14730 image. @emph{Note: while a @code{Bss} offset is included in the
14731 response, @value{GDBN} ignores this and instead applies the @code{Data}
14732 offset to the @code{Bss} section.}
14733 @item
14734 @tab reply @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
14735
14736 @item thread info request
14737 @tab @code{q}@code{P}@var{mode}@var{threadid}
14738 @tab
14739 @item
14740 @tab
14741 @tab
14742 Returns information on @var{threadid}. Where: @var{mode} is a hex
14743 encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
14744 @item
14745 @tab reply *
14746 @tab
14747 See @code{remote.c:remote_unpack_thread_info_response()}.
14748
14749 @item remote command
14750 @tab @code{q}@code{Rcmd,}@var{COMMAND}
14751 @tab
14752 @item
14753 @tab
14754 @tab
14755 @var{COMMAND} (hex encoded) is passed to the local interpreter for
14756 execution. Invalid commands should be reported using the output string.
14757 Before the final result packet, the target may also respond with a
14758 number of intermediate @code{O}@var{OUTPUT} console output
14759 packets. @emph{Implementors should note that providing access to a
14760 stubs's interpreter may have security implications}.
14761 @item
14762 @tab reply @code{OK}
14763 @tab
14764 A command response with no output.
14765 @item
14766 @tab reply @var{OUTPUT}
14767 @tab
14768 A command response with the hex encoded output string @var{OUTPUT}.
14769 @item
14770 @tab reply @code{E}@var{NN}
14771 @tab
14772 Indicate a badly formed request.
14773
14774 @item
14775 @tab reply @samp{}
14776 @tab
14777 When @samp{q}@samp{Rcmd} is not recognized.
14778
14779 @item symbol lookup
14780 @tab @code{qSymbol::}
14781 @tab
14782 Notify the target that @value{GDBN} is prepared to serve symbol lookup
14783 requests. Accept requests from the target for the values of symbols.
14784 @item
14785 @tab
14786 @tab
14787 @item
14788 @tab reply @code{OK}
14789 @tab
14790 The target does not need to look up any (more) symbols.
14791 @item
14792 @tab reply @code{qSymbol:}@var{sym_name}
14793 @tab
14794 @sp 2
14795 @noindent
14796 The target requests the value of symbol @var{sym_name} (hex encoded).
14797 @value{GDBN} may provide the value by using the
14798 @code{qSymbol:}@var{sym_value}:@var{sym_name}
14799 message, described below.
14800
14801 @item symbol value
14802 @tab @code{qSymbol:}@var{sym_value}:@var{sym_name}
14803 @tab
14804 @sp 1
14805 @noindent
14806 Set the value of SYM_NAME to SYM_VALUE.
14807 @item
14808 @tab
14809 @tab
14810 @var{sym_name} (hex encoded) is the name of a symbol whose value
14811 the target has previously requested.
14812 @item
14813 @tab
14814 @tab
14815 @var{sym_value} (hex) is the value for symbol @var{sym_name}.
14816 If @value{GDBN} cannot supply a value for @var{sym_name}, then this
14817 field will be empty.
14818 @item
14819 @tab reply @code{OK}
14820 @tab
14821 The target does not need to look up any (more) symbols.
14822 @item
14823 @tab reply @code{qSymbol:}@var{sym_name}
14824 @tab
14825 @sp 2
14826 @noindent
14827 The target requests the value of a new symbol @var{sym_name} (hex encoded).
14828 @value{GDBN} will continue to supply the values of symbols (if available),
14829 until the target ceases to request them.
14830
14831 @end multitable
14832
14833 The following @samp{g}/@samp{G} packets have previously been defined.
14834 In the below, some thirty-two bit registers are transferred as sixty-four
14835 bits. Those registers should be zero/sign extended (which?) to fill the
14836 space allocated. Register bytes are transfered in target byte order.
14837 The two nibbles within a register byte are transfered most-significant -
14838 least-significant.
14839
14840 @multitable @columnfractions .5 .5
14841
14842 @item MIPS32
14843 @tab
14844 All registers are transfered as thirty-two bit quantities in the order:
14845 32 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
14846 registers; fsr; fir; fp.
14847
14848 @item MIPS64
14849 @tab
14850 All registers are transfered as sixty-four bit quantities (including
14851 thirty-two bit registers such as @code{sr}). The ordering is the same
14852 as @code{MIPS32}.
14853
14854 @end multitable
14855
14856 Example sequence of a target being re-started. Notice how the restart
14857 does not get any direct output:
14858
14859 @example
14860 <- @code{R00}
14861 -> @code{+}
14862 @emph{target restarts}
14863 <- @code{?}
14864 -> @code{+}
14865 -> @code{T001:1234123412341234}
14866 <- @code{+}
14867 @end example
14868
14869 Example sequence of a target being stepped by a single instruction:
14870
14871 @example
14872 <- @code{G1445...}
14873 -> @code{+}
14874 <- @code{s}
14875 -> @code{+}
14876 @emph{time passes}
14877 -> @code{T001:1234123412341234}
14878 <- @code{+}
14879 <- @code{g}
14880 -> @code{+}
14881 -> @code{1455...}
14882 <- @code{+}
14883 @end example
14884
14885
14886 @include fdl.texi
14887
14888 @node Index
14889 @unnumbered Index
14890
14891 @printindex cp
14892
14893 @tex
14894 % I think something like @colophon should be in texinfo. In the
14895 % meantime:
14896 \long\def\colophon{\hbox to0pt{}\vfill
14897 \centerline{The body of this manual is set in}
14898 \centerline{\fontname\tenrm,}
14899 \centerline{with headings in {\bf\fontname\tenbf}}
14900 \centerline{and examples in {\tt\fontname\tentt}.}
14901 \centerline{{\it\fontname\tenit\/},}
14902 \centerline{{\bf\fontname\tenbf}, and}
14903 \centerline{{\sl\fontname\tensl\/}}
14904 \centerline{are used for emphasis.}\vfill}
14905 \page\colophon
14906 % Blame: doc@cygnus.com, 1991.
14907 @end tex
14908
14909 @c TeX can handle the contents at the start but makeinfo 3.12 can not
14910 @ifinfo
14911 @contents
14912 @end ifinfo
14913 @ifhtml
14914 @contents
14915 @end ifhtml
14916
14917 @bye
This page took 0.348196 seconds and 3 git commands to generate.