Use texi2dvi instead of TEX/TEXINDEX.
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
CommitLineData
c906108c 1\input texinfo @c -*-texinfo-*-
b6ba6518 2@c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
8a037dd7 3@c 1999, 2000, 2001, 2002
c906108c
SS
4@c Free Software Foundation, Inc.
5@c
5d161b24 6@c %**start of header
c906108c
SS
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
c906108c 13@settitle Debugging with @value{GDBN}
c906108c
SS
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
41afff9a 25@c readline appendices use @vindex, @findex and @ftable,
48e934c6 26@c annotate.texi and gdbmi use @findex.
c906108c 27@syncodeindex vr cp
41afff9a 28@syncodeindex fn cp
c906108c
SS
29
30@c !!set GDB manual's edition---not the same as GDB version!
e9c75b65 31@set EDITION Ninth
c906108c
SS
32
33@c !!set GDB manual's revision date
959acfd1 34@set DATE December 2001
c906108c 35
6d2ebf8b 36@c THIS MANUAL REQUIRES TEXINFO 3.12 OR LATER.
c906108c 37
c906108c 38@c This is a dir.info fragment to support semi-automated addition of
6d2ebf8b 39@c manuals to an info tree.
96a2c332
SS
40@dircategory Programming & development tools.
41@direntry
c906108c 42* Gdb: (gdb). The @sc{gnu} debugger.
96a2c332
SS
43@end direntry
44
c906108c
SS
45@ifinfo
46This file documents the @sc{gnu} debugger @value{GDBN}.
47
48
5d161b24 49This is the @value{EDITION} Edition, @value{DATE},
c906108c
SS
50of @cite{Debugging with @value{GDBN}: the @sc{gnu} Source-Level Debugger}
51for @value{GDBN} Version @value{GDBVN}.
52
8a037dd7
EZ
53Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@*
54 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
c906108c 55
e9c75b65
EZ
56Permission is granted to copy, distribute and/or modify this document
57under the terms of the GNU Free Documentation License, Version 1.1 or
58any later version published by the Free Software Foundation; with the
959acfd1
EZ
59Invariant Sections being ``Free Software'' and ``Free Software Needs
60Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
61and with the Back-Cover Texts as in (a) below.
c906108c 62
6826cf00
EZ
63(a) The Free Software Foundation's Back-Cover Text is: ``You have
64freedom to copy and modify this GNU Manual, like GNU software. Copies
65published by the Free Software Foundation raise funds for GNU
66development.''
c906108c
SS
67@end ifinfo
68
69@titlepage
70@title Debugging with @value{GDBN}
71@subtitle The @sc{gnu} Source-Level Debugger
c906108c 72@sp 1
c906108c
SS
73@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
74@subtitle @value{DATE}
9e9c5ae7 75@author Richard Stallman, Roland Pesch, Stan Shebs, et al.
c906108c 76@page
c906108c
SS
77@tex
78{\parskip=0pt
53a5351d 79\hfill (Send bugs and comments on @value{GDBN} to bug-gdb\@gnu.org.)\par
c906108c
SS
80\hfill {\it Debugging with @value{GDBN}}\par
81\hfill \TeX{}info \texinfoversion\par
82}
83@end tex
53a5351d 84
c906108c 85@vskip 0pt plus 1filll
8a037dd7
EZ
86Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
871996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
c906108c 88@sp 2
c906108c
SS
89Published by the Free Software Foundation @*
9059 Temple Place - Suite 330, @*
91Boston, MA 02111-1307 USA @*
6d2ebf8b 92ISBN 1-882114-77-9 @*
e9c75b65
EZ
93
94Permission is granted to copy, distribute and/or modify this document
95under the terms of the GNU Free Documentation License, Version 1.1 or
96any later version published by the Free Software Foundation; with the
959acfd1
EZ
97Invariant Sections being ``Free Software'' and ``Free Software Needs
98Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
99and with the Back-Cover Texts as in (a) below.
e9c75b65 100
6826cf00
EZ
101(a) The Free Software Foundation's Back-Cover Text is: ``You have
102freedom to copy and modify this GNU Manual, like GNU software. Copies
103published by the Free Software Foundation raise funds for GNU
104development.''
c906108c
SS
105@end titlepage
106@page
107
b9deaee7 108@ifinfo
6d2ebf8b
SS
109@node Top, Summary, (dir), (dir)
110
c906108c
SS
111@top Debugging with @value{GDBN}
112
113This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
114
5d161b24 115This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
c906108c
SS
116@value{GDBVN}.
117
8a037dd7 118Copyright (C) 1988-2002 Free Software Foundation, Inc.
6d2ebf8b
SS
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
b37052ae 131* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 132* Overlays:: Debugging programs that use overlays
6d2ebf8b
SS
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
6b2f586d 140* Remote Debugging:: Debugging remote programs
6d2ebf8b
SS
141* Configurations:: Configuration-specific information
142* Controlling GDB:: Controlling @value{GDBN}
143* Sequences:: Canned sequences of commands
c4555f82 144* TUI:: @value{GDBN} Text User Interface
6d2ebf8b
SS
145* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
146* Annotations:: @value{GDBN}'s annotation interface.
7162c0ca 147* GDB/MI:: @value{GDBN}'s Machine Interface.
6d2ebf8b
SS
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
eb12ee30 155* Maintenance Commands:: Maintenance Commands
8e04817f 156* Remove Protocol:: GDB Remote Serial Protocol
6826cf00 157* GNU Free Documentation License:: The license for this documentation
6d2ebf8b
SS
158* Index:: Index
159@end menu
160
b9deaee7 161@end ifinfo
6d2ebf8b
SS
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
170This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
171
b37052ae 172This is the @value{EDITION} Edition, @value{DATE}, for @value{GDBN} Version
6d2ebf8b
SS
173@value{GDBVN}.
174
175Copyright (C) 1988-2000 Free Software Foundation, Inc.
176
c906108c
SS
177@menu
178* Summary:: Summary of @value{GDBN}
c906108c 179* Sample Session:: A sample @value{GDBN} session
c906108c
SS
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
496e6bc3 188* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 189* Overlays:: Debugging programs that use overlays
c906108c 190
7a292a7a 191* Languages:: Using @value{GDBN} with different languages
c906108c
SS
192
193* Symbols:: Examining the symbol table
194* Altering:: Altering execution
195* GDB Files:: @value{GDBN} files
196* Targets:: Specifying a debugging target
6b2f586d 197* Remote Debugging:: Debugging remote programs
104c1213 198* Configurations:: Configuration-specific information
c906108c
SS
199* Controlling GDB:: Controlling @value{GDBN}
200* Sequences:: Canned sequences of commands
496e6bc3 201* TUI:: @value{GDBN} Text User Interface
c906108c 202* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
6d2ebf8b 203* Annotations:: @value{GDBN}'s annotation interface.
496e6bc3 204* GDB/MI:: @value{GDBN}'s Machine Interface.
c906108c
SS
205
206* GDB Bugs:: Reporting bugs in @value{GDBN}
c906108c 207* Formatting Documentation:: How to format and print @value{GDBN} documentation
c906108c
SS
208
209* Command Line Editing:: Command Line Editing
210* Using History Interactively:: Using History Interactively
211* Installing GDB:: Installing GDB
eb12ee30 212* Maintenance Commands:: Maintenance Commands
8e04817f 213* Remove Protocol:: GDB Remote Serial Protocol
6826cf00 214* GNU Free Documentation License:: The license for this documentation
c906108c 215* Index:: Index
c906108c
SS
216@end menu
217
6d2ebf8b
SS
218@end ifhtml
219
449f3b6c
AC
220@c TeX can handle the contents at the start but makeinfo 3.12 can not
221@iftex
222@contents
223@end iftex
224
6d2ebf8b 225@node Summary
c906108c
SS
226@unnumbered Summary of @value{GDBN}
227
228The purpose of a debugger such as @value{GDBN} is to allow you to see what is
229going on ``inside'' another program while it executes---or what another
230program was doing at the moment it crashed.
231
232@value{GDBN} can do four main kinds of things (plus other things in support of
233these) to help you catch bugs in the act:
234
235@itemize @bullet
236@item
237Start your program, specifying anything that might affect its behavior.
238
239@item
240Make your program stop on specified conditions.
241
242@item
243Examine what has happened, when your program has stopped.
244
245@item
246Change things in your program, so you can experiment with correcting the
247effects of one bug and go on to learn about another.
248@end itemize
249
cce74817 250You can use @value{GDBN} to debug programs written in C and C++.
c906108c 251For more information, see @ref{Support,,Supported languages}.
c906108c
SS
252For more information, see @ref{C,,C and C++}.
253
cce74817
JM
254@cindex Chill
255@cindex Modula-2
c906108c 256Support for Modula-2 and Chill is partial. For information on Modula-2,
cce74817 257see @ref{Modula-2,,Modula-2}. For information on Chill, see @ref{Chill}.
c906108c 258
cce74817
JM
259@cindex Pascal
260Debugging Pascal programs which use sets, subranges, file variables, or
261nested functions does not currently work. @value{GDBN} does not support
262entering expressions, printing values, or similar features using Pascal
263syntax.
c906108c 264
c906108c
SS
265@cindex Fortran
266@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 267it may be necessary to refer to some variables with a trailing
cce74817 268underscore.
c906108c 269
c906108c
SS
270@menu
271* Free Software:: Freely redistributable software
272* Contributors:: Contributors to GDB
273@end menu
274
6d2ebf8b 275@node Free Software
c906108c
SS
276@unnumberedsec Free software
277
5d161b24 278@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
c906108c
SS
279General Public License
280(GPL). The GPL gives you the freedom to copy or adapt a licensed
281program---but every person getting a copy also gets with it the
282freedom to modify that copy (which means that they must get access to
283the source code), and the freedom to distribute further copies.
284Typical software companies use copyrights to limit your freedoms; the
285Free Software Foundation uses the GPL to preserve these freedoms.
286
287Fundamentally, the General Public License is a license which says that
288you have these freedoms and that you cannot take these freedoms away
289from anyone else.
290
2666264b 291@unnumberedsec Free Software Needs Free Documentation
959acfd1
EZ
292
293The biggest deficiency in the free software community today is not in
294the software---it is the lack of good free documentation that we can
295include with the free software. Many of our most important
296programs do not come with free reference manuals and free introductory
297texts. Documentation is an essential part of any software package;
298when an important free software package does not come with a free
299manual and a free tutorial, that is a major gap. We have many such
300gaps today.
301
302Consider Perl, for instance. The tutorial manuals that people
303normally use are non-free. How did this come about? Because the
304authors of those manuals published them with restrictive terms---no
305copying, no modification, source files not available---which exclude
306them from the free software world.
307
308That wasn't the first time this sort of thing happened, and it was far
309from the last. Many times we have heard a GNU user eagerly describe a
310manual that he is writing, his intended contribution to the community,
311only to learn that he had ruined everything by signing a publication
312contract to make it non-free.
313
314Free documentation, like free software, is a matter of freedom, not
315price. The problem with the non-free manual is not that publishers
316charge a price for printed copies---that in itself is fine. (The Free
317Software Foundation sells printed copies of manuals, too.) The
318problem is the restrictions on the use of the manual. Free manuals
319are available in source code form, and give you permission to copy and
320modify. Non-free manuals do not allow this.
321
322The criteria of freedom for a free manual are roughly the same as for
323free software. Redistribution (including the normal kinds of
324commercial redistribution) must be permitted, so that the manual can
325accompany every copy of the program, both on-line and on paper.
326
327Permission for modification of the technical content is crucial too.
328When people modify the software, adding or changing features, if they
329are conscientious they will change the manual too---so they can
330provide accurate and clear documentation for the modified program. A
331manual that leaves you no choice but to write a new manual to document
332a changed version of the program is not really available to our
333community.
334
335Some kinds of limits on the way modification is handled are
336acceptable. For example, requirements to preserve the original
337author's copyright notice, the distribution terms, or the list of
338authors, are ok. It is also no problem to require modified versions
339to include notice that they were modified. Even entire sections that
340may not be deleted or changed are acceptable, as long as they deal
341with nontechnical topics (like this one). These kinds of restrictions
342are acceptable because they don't obstruct the community's normal use
343of the manual.
344
345However, it must be possible to modify all the @emph{technical}
346content of the manual, and then distribute the result in all the usual
347media, through all the usual channels. Otherwise, the restrictions
348obstruct the use of the manual, it is not free, and we need another
349manual to replace it.
350
351Please spread the word about this issue. Our community continues to
352lose manuals to proprietary publishing. If we spread the word that
353free software needs free reference manuals and free tutorials, perhaps
354the next person who wants to contribute by writing documentation will
355realize, before it is too late, that only free manuals contribute to
356the free software community.
357
358If you are writing documentation, please insist on publishing it under
359the GNU Free Documentation License or another free documentation
360license. Remember that this decision requires your approval---you
361don't have to let the publisher decide. Some commercial publishers
362will use a free license if you insist, but they will not propose the
363option; it is up to you to raise the issue and say firmly that this is
364what you want. If the publisher you are dealing with refuses, please
365try other publishers. If you're not sure whether a proposed license
42584a72 366is free, write to @email{licensing@@gnu.org}.
959acfd1
EZ
367
368You can encourage commercial publishers to sell more free, copylefted
369manuals and tutorials by buying them, and particularly by buying
370copies from the publishers that paid for their writing or for major
371improvements. Meanwhile, try to avoid buying non-free documentation
372at all. Check the distribution terms of a manual before you buy it,
373and insist that whoever seeks your business must respect your freedom.
72c9928d
EZ
374Check the history of the book, and try to reward the publishers that
375have paid or pay the authors to work on it.
959acfd1
EZ
376
377The Free Software Foundation maintains a list of free documentation
378published by other publishers, at
379@url{http://www.fsf.org/doc/other-free-books.html}.
380
6d2ebf8b 381@node Contributors
96a2c332
SS
382@unnumberedsec Contributors to @value{GDBN}
383
384Richard Stallman was the original author of @value{GDBN}, and of many
385other @sc{gnu} programs. Many others have contributed to its
386development. This section attempts to credit major contributors. One
387of the virtues of free software is that everyone is free to contribute
388to it; with regret, we cannot actually acknowledge everyone here. The
389file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
390blow-by-blow account.
391
392Changes 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
396or your friends (or enemies, to be evenhanded) have been unfairly
397omitted from this list, we would like to add your names!
398@end quotation
399
400So that they may not regard their many labors as thankless, we
401particularly thank those who shepherded @value{GDBN} through major
402releases:
b37052ae 403Andrew Cagney (releases 5.0 and 5.1);
c906108c
SS
404Jim Blandy (release 4.18);
405Jason Molenda (release 4.17);
406Stan Shebs (release 4.14);
407Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
408Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
409John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
410Jim Kingdon (releases 3.5, 3.4, and 3.3);
411and Randy Smith (releases 3.2, 3.1, and 3.0).
412
413Richard Stallman, assisted at various times by Peter TerMaat, Chris
414Hanson, and Richard Mlynarik, handled releases through 2.8.
415
b37052ae
EZ
416Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
417in @value{GDBN}, with significant additional contributions from Per
418Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
419demangler. Early work on C@t{++} was by Peter TerMaat (who also did
420much general update work leading to release 3.0).
c906108c 421
b37052ae 422@value{GDBN} uses the BFD subroutine library to examine multiple
c906108c
SS
423object-file formats; BFD was a joint project of David V.
424Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
425
426David Johnson wrote the original COFF support; Pace Willison did
427the original support for encapsulated COFF.
428
96c405b3 429Brent Benson of Harris Computer Systems contributed DWARF2 support.
c906108c
SS
430
431Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
432Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
433support.
434Jean-Daniel Fekete contributed Sun 386i support.
435Chris Hanson improved the HP9000 support.
436Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
437David Johnson contributed Encore Umax support.
438Jyrki Kuoppala contributed Altos 3068 support.
439Jeff Law contributed HP PA and SOM support.
440Keith Packard contributed NS32K support.
441Doug Rabson contributed Acorn Risc Machine support.
442Bob Rusk contributed Harris Nighthawk CX-UX support.
443Chris Smith contributed Convex support (and Fortran debugging).
444Jonathan Stone contributed Pyramid support.
445Michael Tiemann contributed SPARC support.
446Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
447Pace Willison contributed Intel 386 support.
448Jay Vosburgh contributed Symmetry support.
449
450Andreas Schwab contributed M68K Linux support.
451
452Rich Schaefer and Peter Schauer helped with support of SunOS shared
453libraries.
454
455Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
456about several machine instruction sets.
457
458Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
459remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
460contributed remote debugging modules for the i960, VxWorks, A29K UDI,
461and RDI targets, respectively.
462
463Brian Fox is the author of the readline libraries providing
464command-line editing and command history.
465
7a292a7a
SS
466Andrew Beers of SUNY Buffalo wrote the language-switching code, the
467Modula-2 support, and contributed the Languages chapter of this manual.
c906108c 468
5d161b24 469Fred Fish wrote most of the support for Unix System Vr4.
b37052ae 470He also enhanced the command-completion support to cover C@t{++} overloaded
c906108c 471symbols.
c906108c
SS
472
473Hitachi America, Ltd. sponsored the support for H8/300, H8/500, and
474Super-H processors.
475
476NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
477
478Mitsubishi sponsored the support for D10V, D30V, and M32R/D processors.
479
480Toshiba sponsored the support for the TX39 Mips processor.
481
482Matsushita sponsored the support for the MN10200 and MN10300 processors.
483
96a2c332 484Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
485
486Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
487watchpoints.
488
489Michael Snyder added support for tracepoints.
490
491Stu Grossman wrote gdbserver.
492
493Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 494nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
495
496The following people at the Hewlett-Packard Company contributed
497support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
b37052ae 498(narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
c906108c
SS
499compiler, and the terminal user interface: Ben Krepp, Richard Title,
500John Bishop, Susan Macchia, Kathy Mann, Satish Pai, India Paul, Steve
501Rehrauer, and Elena Zannoni. Kim Haase provided HP-specific
502information in this manual.
503
b37052ae
EZ
504DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
505Robert Hoehne made significant contributions to the DJGPP port.
506
96a2c332
SS
507Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
508development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
509fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
510Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
511Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
512Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
513Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
514addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
515JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
516Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
517Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
518Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
519Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
520Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
521Zuhn have made contributions both large and small.
c906108c
SS
522
523
6d2ebf8b 524@node Sample Session
c906108c
SS
525@chapter A Sample @value{GDBN} Session
526
527You can use this manual at your leisure to read all about @value{GDBN}.
528However, a handful of commands are enough to get started using the
529debugger. This chapter illustrates those commands.
530
531@iftex
532In this sample session, we emphasize user input like this: @b{input},
533to 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
539One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
540processor) exhibits the following bug: sometimes, when we change its
541quote strings from the default, the commands used to capture one macro
542definition within another stop working. In the following short @code{m4}
543session, we define a macro @code{foo} which expands to @code{0000}; we
544then use the @code{m4} built-in @code{defn} to define @code{bar} as the
545same thing. However, when we change the open quote string to
546@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
547procedure 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}
5550000
556@b{define(bar,defn(`foo'))}
557
558@b{bar}
5590000
560@b{changequote(<QUOTE>,<UNQUOTE>)}
561
562@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
563@b{baz}
564@b{C-d}
565m4: End of input: 0: fatal error: EOF in string
566@end smallexample
567
568@noindent
569Let us use @value{GDBN} to try to see what is going on.
570
c906108c
SS
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
5d161b24 576 of it under certain conditions; type "show copying" to see
c906108c 577 the conditions.
5d161b24 578There is absolutely no warranty for @value{GDBN}; type "show warranty"
c906108c
SS
579 for details.
580
581@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
582(@value{GDBP})
583@end smallexample
c906108c
SS
584
585@noindent
586@value{GDBN} reads only enough symbol data to know where to find the
587rest when needed; as a result, the first prompt comes up very quickly.
588We now tell @value{GDBN} to use a narrower display width than usual, so
589that examples fit in this manual.
590
591@smallexample
592(@value{GDBP}) @b{set width 70}
593@end smallexample
594
595@noindent
596We need to see how the @code{m4} built-in @code{changequote} works.
597Having 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}
603Breakpoint 1 at 0x62f4: file builtin.c, line 879.
604@end smallexample
605
606@noindent
607Using the @code{run} command, we start @code{m4} running under @value{GDBN}
608control; as long as control does not reach the @code{m4_changequote}
609subroutine, the program runs as usual:
610
611@smallexample
612(@value{GDBP}) @b{run}
613Starting program: /work/Editorial/gdb/gnu/m4/m4
614@b{define(foo,0000)}
615
616@b{foo}
6170000
618@end smallexample
619
620@noindent
621To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
622suspends execution of @code{m4}, displaying information about the
623context where it stops.
624
625@smallexample
626@b{changequote(<QUOTE>,<UNQUOTE>)}
627
5d161b24 628Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
629 at builtin.c:879
630879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
631@end smallexample
632
633@noindent
634Now we use the command @code{n} (@code{next}) to advance execution to
635the next line of the current function.
636
637@smallexample
638(@value{GDBP}) @b{n}
639882 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
645by 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}
647subroutine, so it steps into @code{set_quotes}.
648
649@smallexample
650(@value{GDBP}) @b{s}
651set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
652 at input.c:530
653530 if (lquote != def_lquote)
654@end smallexample
655
656@noindent
657The display that shows the subroutine where @code{m4} is now
658suspended (and its arguments) is called a stack frame display. It
659shows a summary of the stack. We can use the @code{backtrace}
660command (which can also be spelled @code{bt}), to see where we are
661in the stack as a whole: the @code{backtrace} command displays a
662stack 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
5d161b24 668#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
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
678We step through a few more lines to see what happens. The first two
679times, we can use @samp{s}; the next two times we use @code{n} to avoid
680falling into the @code{xstrdup} subroutine.
681
682@smallexample
683(@value{GDBP}) @b{s}
6840x3b5c 532 if (rquote != def_rquote)
685(@value{GDBP}) @b{s}
6860x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
687def_lquote : xstrdup(lq);
688(@value{GDBP}) @b{n}
689536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
690 : xstrdup(rq);
691(@value{GDBP}) @b{n}
692538 len_lquote = strlen(rquote);
693@end smallexample
694
695@noindent
696The 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
698and 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.
710To look at some context, we can display ten lines of source
711surrounding the current line with the @code{l} (@code{list}) command.
712
713@smallexample
714(@value{GDBP}) @b{l}
715533 xfree(rquote);
716534
717535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
718 : xstrdup (lq);
719536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
720 : xstrdup (rq);
721537
722538 len_lquote = strlen(rquote);
723539 len_rquote = strlen(lquote);
724540 @}
725541
726542 void
727@end smallexample
728
729@noindent
730Let 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}
735539 len_rquote = strlen(lquote);
736(@value{GDBP}) @b{n}
737540 @}
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
745That 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
748the @code{p} command, since it can print the value of
749any expression---and that expression can include subroutine calls and
750assignments.
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
760Is 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
762executing with the @code{c} (@code{continue}) command, and then try the
763example that caused trouble initially:
764
765@smallexample
766(@value{GDBP}) @b{c}
767Continuing.
768
769@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
770
771baz
7720000
773@end smallexample
774
775@noindent
776Success! The new quotes now work just as well as the default ones. The
777problem seems to have been just the two typos defining the wrong
778lengths. We allow @code{m4} exit by giving it an EOF as input:
779
780@smallexample
781@b{C-d}
782Program exited normally.
783@end smallexample
784
785@noindent
786The message @samp{Program exited normally.} is from @value{GDBN}; it
787indicates @code{m4} has finished executing. We can end our @value{GDBN}
788session with the @value{GDBN} @code{quit} command.
789
790@smallexample
791(@value{GDBP}) @b{quit}
792@end smallexample
c906108c 793
6d2ebf8b 794@node Invocation
c906108c
SS
795@chapter Getting In and Out of @value{GDBN}
796
797This chapter discusses how to start @value{GDBN}, and how to get out of it.
5d161b24 798The essentials are:
c906108c 799@itemize @bullet
5d161b24 800@item
53a5351d 801type @samp{@value{GDBP}} to start @value{GDBN}.
5d161b24 802@item
c906108c
SS
803type @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
6d2ebf8b 812@node Invoking GDB
c906108c
SS
813@section Invoking @value{GDBN}
814
c906108c
SS
815Invoke @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
818You can also run @code{@value{GDBP}} with a variety of arguments and options,
819to specify more of your debugging environment at the outset.
820
c906108c
SS
821The command-line options described here are designed
822to cover a variety of situations; in some environments, some of these
5d161b24 823options may effectively be unavailable.
c906108c
SS
824
825The most usual way to start @value{GDBN} is with one argument,
826specifying an executable program:
827
828@example
829@value{GDBP} @var{program}
830@end example
831
c906108c
SS
832@noindent
833You can also start with both an executable program and a core file
834specified:
835
836@example
837@value{GDBP} @var{program} @var{core}
838@end example
839
840You can, instead, specify a process ID as a second argument, if you want
841to debug a running process:
842
843@example
844@value{GDBP} @var{program} 1234
845@end example
846
847@noindent
848would attach @value{GDBN} to process @code{1234} (unless you also have a file
849named @file{1234}; @value{GDBN} does check for a core file first).
850
c906108c 851Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
852complete operating system; when you use @value{GDBN} as a remote
853debugger 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}
855will warn you if it is unable to attach or to read core dumps.
c906108c 856
aa26fa3a
TT
857You can optionally have @code{@value{GDBP}} pass any arguments after the
858executable file to the inferior using @code{--args}. This option stops
859option processing.
860@example
861gdb --args gcc -O2 -c foo.c
862@end example
863This 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
96a2c332 866You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
867@value{GDBN}'s non-warranty, by specifying @code{-silent}:
868
869@smallexample
870@value{GDBP} -silent
871@end smallexample
872
873@noindent
874You can further control how @value{GDBN} starts up by using command-line
875options. @value{GDBN} itself can remind you of the options available.
876
877@noindent
878Type
879
880@example
881@value{GDBP} -help
882@end example
883
884@noindent
885to display all available options and briefly describe their use
886(@samp{@value{GDBP} -h} is a shorter equivalent).
887
888All options and command line arguments you give are processed
889in sequential order. The order makes a difference when the
890@samp{-x} option is used.
891
892
893@menu
c906108c
SS
894* File Options:: Choosing files
895* Mode Options:: Choosing modes
896@end menu
897
6d2ebf8b 898@node File Options
c906108c
SS
899@subsection Choosing files
900
2df3850c 901When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
902specifying an executable file and core file (or process ID). This is
903the same as if the arguments were specified by the @samp{-se} and
19837790
MS
904@samp{-c} (or @samp{-p} options respectively. (@value{GDBN} reads the
905first argument that does not have an associated option flag as
906equivalent to the @samp{-se} option followed by that argument; and the
907second argument that does not have an associated option flag, if any, as
908equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
909If the second argument begins with a decimal digit, @value{GDBN} will
910first attempt to attach to it as a process, and if that fails, attempt
911to open it as a corefile. If you have a corefile whose name begins with
912a digit, you can prevent @value{GDBN} from treating it as a pid by
79f12247 913prefixing it with @file{./}, eg. @file{./12345}.
7a292a7a
SS
914
915If @value{GDBN} has not been configured to included core file support,
916such as for most embedded targets, then it will complain about a second
917argument and ignore it.
c906108c
SS
918
919Many options have both long and short forms; both are shown in the
920following list. @value{GDBN} also recognizes the long forms if you truncate
921them, so long as enough of the option is present to be unambiguous.
922(If you prefer, you can flag option arguments with @samp{--} rather
923than @samp{-}, though we illustrate the more usual convention.)
924
d700128c
EZ
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
c906108c
SS
929@table @code
930@item -symbols @var{file}
931@itemx -s @var{file}
d700128c
EZ
932@cindex @code{--symbols}
933@cindex @code{-s}
c906108c
SS
934Read symbol table from file @var{file}.
935
936@item -exec @var{file}
937@itemx -e @var{file}
d700128c
EZ
938@cindex @code{--exec}
939@cindex @code{-e}
7a292a7a
SS
940Use file @var{file} as the executable file to execute when appropriate,
941and for examining pure data in conjunction with a core dump.
c906108c
SS
942
943@item -se @var{file}
d700128c 944@cindex @code{--se}
c906108c
SS
945Read symbol table from file @var{file} and use it as the executable
946file.
947
c906108c
SS
948@item -core @var{file}
949@itemx -c @var{file}
d700128c
EZ
950@cindex @code{--core}
951@cindex @code{-c}
19837790 952Use file @var{file} as a core dump to examine.
c906108c
SS
953
954@item -c @var{number}
19837790
MS
955@item -pid @var{number}
956@itemx -p @var{number}
957@cindex @code{--pid}
958@cindex @code{-p}
959Connect to process ID @var{number}, as with the @code{attach} command.
960If there is no such process, @value{GDBN} will attempt to open a core
961file named @var{number}.
c906108c
SS
962
963@item -command @var{file}
964@itemx -x @var{file}
d700128c
EZ
965@cindex @code{--command}
966@cindex @code{-x}
c906108c
SS
967Execute @value{GDBN} commands from file @var{file}. @xref{Command
968Files,, Command files}.
969
970@item -directory @var{directory}
971@itemx -d @var{directory}
d700128c
EZ
972@cindex @code{--directory}
973@cindex @code{-d}
c906108c
SS
974Add @var{directory} to the path to search for source files.
975
c906108c
SS
976@item -m
977@itemx -mapped
d700128c
EZ
978@cindex @code{--mapped}
979@cindex @code{-m}
c906108c
SS
980@emph{Warning: this option depends on operating system facilities that are not
981supported on all systems.}@*
982If memory-mapped files are available on your system through the @code{mmap}
5d161b24 983system call, you can use this option
c906108c
SS
984to have @value{GDBN} write the symbols from your
985program into a reusable file in the current directory. If the program you are debugging is
96a2c332 986called @file{/tmp/fred}, the mapped symbol file is @file{/tmp/fred.syms}.
c906108c
SS
987Future @value{GDBN} debugging sessions notice the presence of this file,
988and can quickly map in symbol information from it, rather than reading
989the symbol table from the executable program.
990
991The @file{.syms} file is specific to the host machine where @value{GDBN}
992is run. It holds an exact image of the internal @value{GDBN} symbol
993table. It cannot be shared across multiple host platforms.
c906108c 994
c906108c
SS
995@item -r
996@itemx -readnow
d700128c
EZ
997@cindex @code{--readnow}
998@cindex @code{-r}
c906108c
SS
999Read each symbol file's entire symbol table immediately, rather than
1000the default, which is to read it incrementally as it is needed.
1001This makes startup slower, but makes future operations faster.
53a5351d 1002
c906108c
SS
1003@end table
1004
2df3850c 1005You typically combine the @code{-mapped} and @code{-readnow} options in
c906108c 1006order to build a @file{.syms} file that contains complete symbol
2df3850c
JM
1007information. (@xref{Files,,Commands to specify files}, for information
1008on @file{.syms} files.) A simple @value{GDBN} invocation to do nothing
1009but build a @file{.syms} file for future use is:
c906108c
SS
1010
1011@example
2df3850c 1012gdb -batch -nx -mapped -readnow programname
c906108c 1013@end example
c906108c 1014
6d2ebf8b 1015@node Mode Options
c906108c
SS
1016@subsection Choosing modes
1017
1018You can run @value{GDBN} in various alternative modes---for example, in
1019batch mode or quiet mode.
1020
1021@table @code
1022@item -nx
1023@itemx -n
d700128c
EZ
1024@cindex @code{--nx}
1025@cindex @code{-n}
96565e91 1026Do not execute commands found in any initialization files. Normally,
2df3850c
JM
1027@value{GDBN} executes the commands in these files after all the command
1028options and arguments have been processed. @xref{Command Files,,Command
1029files}.
c906108c
SS
1030
1031@item -quiet
d700128c 1032@itemx -silent
c906108c 1033@itemx -q
d700128c
EZ
1034@cindex @code{--quiet}
1035@cindex @code{--silent}
1036@cindex @code{-q}
c906108c
SS
1037``Quiet''. Do not print the introductory and copyright messages. These
1038messages are also suppressed in batch mode.
1039
1040@item -batch
d700128c 1041@cindex @code{--batch}
c906108c
SS
1042Run in batch mode. Exit with status @code{0} after processing all the
1043command files specified with @samp{-x} (and all commands from
1044initialization files, if not inhibited with @samp{-n}). Exit with
1045nonzero status if an error occurs in executing the @value{GDBN} commands
1046in the command files.
1047
2df3850c
JM
1048Batch mode may be useful for running @value{GDBN} as a filter, for
1049example to download and run a program on another computer; in order to
1050make this more useful, the message
c906108c
SS
1051
1052@example
1053Program exited normally.
1054@end example
1055
1056@noindent
2df3850c
JM
1057(which is ordinarily issued whenever a program running under
1058@value{GDBN} control terminates) is not issued when running in batch
1059mode.
1060
1061@item -nowindows
1062@itemx -nw
d700128c
EZ
1063@cindex @code{--nowindows}
1064@cindex @code{-nw}
2df3850c 1065``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 1066(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
1067interface. If no GUI is available, this option has no effect.
1068
1069@item -windows
1070@itemx -w
d700128c
EZ
1071@cindex @code{--windows}
1072@cindex @code{-w}
2df3850c
JM
1073If @value{GDBN} includes a GUI, then this option requires it to be
1074used if possible.
c906108c
SS
1075
1076@item -cd @var{directory}
d700128c 1077@cindex @code{--cd}
c906108c
SS
1078Run @value{GDBN} using @var{directory} as its working directory,
1079instead of the current directory.
1080
c906108c
SS
1081@item -fullname
1082@itemx -f
d700128c
EZ
1083@cindex @code{--fullname}
1084@cindex @code{-f}
7a292a7a
SS
1085@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1086subprocess. It tells @value{GDBN} to output the full file name and line
1087number in a standard, recognizable fashion each time a stack frame is
1088displayed (which includes each time your program stops). This
1089recognizable format looks like two @samp{\032} characters, followed by
1090the file name, line number and character position separated by colons,
1091and 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
1093frame.
c906108c 1094
d700128c
EZ
1095@item -epoch
1096@cindex @code{--epoch}
1097The 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
1099routines so as to allow Epoch to display values of expressions in a
1100separate window.
1101
1102@item -annotate @var{level}
1103@cindex @code{--annotate}
1104This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1105effect is identical to using @samp{set annotate @var{level}}
1106(@pxref{Annotations}).
1107Annotation level controls how much information does @value{GDBN} print
1108together with its prompt, values of expressions, source lines, and other
1109types 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
1111maximum annotation suitable for programs that control @value{GDBN}.
1112
1113@item -async
1114@cindex @code{--async}
1115Use the asynchronous event loop for the command-line interface.
1116@value{GDBN} processes all events, such as user keyboard input, via a
1117special event loop. This allows @value{GDBN} to accept and process user
1118commands in parallel with the debugged process being
1119run@footnote{@value{GDBN} built with @sc{djgpp} tools for
1120MS-DOS/MS-Windows supports this mode of operation, but the event loop is
1121suspended when the debuggee runs.}, so you don't need to wait for
1122control to return to @value{GDBN} before you type the next command.
b37052ae 1123(@emph{Note:} as of version 5.1, the target side of the asynchronous
d700128c
EZ
1124operation is not yet in place, so @samp{-async} does not work fully
1125yet.)
1126@c FIXME: when the target side of the event loop is done, the above NOTE
1127@c should be removed.
1128
1129When the standard input is connected to a terminal device, @value{GDBN}
1130uses the asynchronous event loop by default, unless disabled by the
1131@samp{-noasync} option.
1132
1133@item -noasync
1134@cindex @code{--noasync}
1135Disable the asynchronous event loop for the command-line interface.
1136
aa26fa3a
TT
1137@item --args
1138@cindex @code{--args}
1139Change interpretation of command line so that arguments following the
1140executable file are passed as command line arguments to the inferior.
1141This option stops option processing.
1142
2df3850c
JM
1143@item -baud @var{bps}
1144@itemx -b @var{bps}
d700128c
EZ
1145@cindex @code{--baud}
1146@cindex @code{-b}
c906108c
SS
1147Set the line speed (baud rate or bits per second) of any serial
1148interface used by @value{GDBN} for remote debugging.
c906108c
SS
1149
1150@item -tty @var{device}
d700128c
EZ
1151@itemx -t @var{device}
1152@cindex @code{--tty}
1153@cindex @code{-t}
c906108c
SS
1154Run using @var{device} for your program's standard input and output.
1155@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1156
53a5351d 1157@c resolve the situation of these eventually
c4555f82
SC
1158@item -tui
1159@cindex @code{--tui}
1160Activate the Terminal User Interface when starting.
1161The Terminal User Interface manages several text windows on the terminal,
1162showing source, assembly, registers and @value{GDBN} command outputs
1163(@pxref{TUI, ,@value{GDBN} Text User Interface}).
1164Do not use this option if you run @value{GDBN} from Emacs
1165(@pxref{Emacs, ,Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1166
1167@c @item -xdb
d700128c 1168@c @cindex @code{--xdb}
53a5351d
JM
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
d700128c
EZ
1174@item -interpreter @var{interp}
1175@cindex @code{--interpreter}
1176Use the interpreter @var{interp} for interface with the controlling
1177program or device. This option is meant to be set by programs which
94bbb2c0
AC
1178communicate 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}.
d700128c
EZ
1184
1185@item -write
1186@cindex @code{--write}
1187Open the executable and core files for both reading and writing. This
1188is equivalent to the @samp{set write on} command inside @value{GDBN}
1189(@pxref{Patching}).
1190
1191@item -statistics
1192@cindex @code{--statistics}
1193This option causes @value{GDBN} to print statistics about time and
1194memory usage after it completes each command and returns to the prompt.
1195
1196@item -version
1197@cindex @code{--version}
1198This option causes @value{GDBN} to print its version number and
1199no-warranty blurb, and exit.
1200
c906108c
SS
1201@end table
1202
6d2ebf8b 1203@node Quitting GDB
c906108c
SS
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{]}
41afff9a 1210@kindex q @r{(@code{quit})}
96a2c332
SS
1211@item quit @r{[}@var{expression}@r{]}
1212@itemx q
1213To 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
1215do not supply @var{expression}, @value{GDBN} will terminate normally;
1216otherwise it will terminate using the result of @var{expression} as the
1217error code.
c906108c
SS
1218@end table
1219
1220@cindex interrupt
1221An interrupt (often @kbd{C-c}) does not exit from @value{GDBN}, but rather
1222terminates the action of any @value{GDBN} command that is in progress and
1223returns to @value{GDBN} command level. It is safe to type the interrupt
1224character at any time because @value{GDBN} does not allow it to take effect
1225until a time when it is safe.
1226
c906108c
SS
1227If you have been using @value{GDBN} to control an attached process or
1228device, you can release it with the @code{detach} command
1229(@pxref{Attach, ,Debugging an already-running process}).
c906108c 1230
6d2ebf8b 1231@node Shell Commands
c906108c
SS
1232@section Shell commands
1233
1234If you need to execute occasional shell commands during your
1235debugging session, there is no need to leave or suspend @value{GDBN}; you can
1236just use the @code{shell} command.
1237
1238@table @code
1239@kindex shell
1240@cindex shell escape
1241@item shell @var{command string}
1242Invoke a standard shell to execute @var{command string}.
c906108c 1243If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1244shell to run. Otherwise @value{GDBN} uses the default shell
1245(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1246@end table
1247
1248The utility @code{make} is often needed in development environments.
1249You 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}
1256Execute the @code{make} program with the specified
1257arguments. This is equivalent to @samp{shell make @var{make-args}}.
1258@end table
1259
6d2ebf8b 1260@node Commands
c906108c
SS
1261@chapter @value{GDBN} Commands
1262
1263You can abbreviate a @value{GDBN} command to the first few letters of the command
1264name, 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}
1266key to get @value{GDBN} to fill out the rest of a word in a command (or to
1267show 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
6d2ebf8b 1275@node Command Syntax
c906108c
SS
1276@section Command syntax
1277
1278A @value{GDBN} command is a single line of input. There is no limit on
1279how long it can be. It starts with a command name, which is followed by
1280arguments whose meaning depends on the command name. For example, the
1281command @code{step} accepts an argument which is the number of times to
1282step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1283with no arguments. Some commands do not allow any arguments.
c906108c
SS
1284
1285@cindex abbreviation
1286@value{GDBN} command names may always be truncated if that abbreviation is
1287unambiguous. Other possible command abbreviations are listed in the
1288documentation for individual commands. In some cases, even ambiguous
1289abbreviations are allowed; for example, @code{s} is specially defined as
1290equivalent to @code{step} even though there are other commands whose
1291names start with @code{s}. You can test abbreviations by using them as
1292arguments to the @code{help} command.
1293
1294@cindex repeating commands
41afff9a 1295@kindex RET @r{(repeat last command)}
c906108c 1296A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1297repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1298will not repeat this way; these are commands whose unintentional
1299repetition might cause trouble and which you are unlikely to want to
1300repeat.
1301
1302The @code{list} and @code{x} commands, when you repeat them with
1303@key{RET}, construct new arguments rather than repeating
1304exactly 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
1307output, 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
1310repetition after any command that generates this sort of display.
1311
41afff9a 1312@kindex # @r{(a comment)}
c906108c
SS
1313@cindex comment
1314Any text from a @kbd{#} to the end of the line is a comment; it does
1315nothing. This is useful mainly in command files (@pxref{Command
1316Files,,Command files}).
1317
88118b3a
TT
1318@cindex repeating command sequences
1319@kindex C-o @r{(operate-and-get-next)}
1320The @kbd{C-o} binding is useful for repeating a complex sequence of
1321commands. This command accepts the current line, like @kbd{RET}, and
1322then fetches the next line relative to the current line from the history
1323for editing.
1324
6d2ebf8b 1325@node Completion
c906108c
SS
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
1331only one possibility; it can also show you what the valid possibilities
1332are for the next word in a command, at any time. This works for @value{GDBN}
1333commands, @value{GDBN} subcommands, and the names of symbols in your program.
1334
1335Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1336of a word. If there is only one possibility, @value{GDBN} fills in the
1337word, and waits for you to finish the command (or press @key{RET} to
1338enter 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
1350the only @code{info} subcommand beginning with @samp{bre}:
1351
1352@example
1353(@value{GDBP}) info breakpoints
1354@end example
1355
1356@noindent
1357You can either press @key{RET} at this point, to run the @code{info
1358breakpoints} command, or backspace and enter something else, if
1359@samp{breakpoints} does not look like the command you expected. (If you
1360were sure you wanted @code{info breakpoints} in the first place, you
1361might as well just type @key{RET} immediately after @samp{info bre},
1362to exploit command abbreviations rather than command completion).
1363
1364If 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
1366characters and try again, or just press @key{TAB} a second time;
1367@value{GDBN} displays all the possible completions for that word. For
1368example, you might want to set a breakpoint on a subroutine whose name
1369begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1370just sounds the bell. Typing @key{TAB} again displays all the
1371function names in your program that begin with those characters, for
1372example:
1373
1374@example
1375(@value{GDBP}) b make_ @key{TAB}
1376@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1377make_a_section_from_file make_environ
1378make_abs_section make_function_type
1379make_blockvector make_pointer_type
1380make_cleanup make_reference_type
c906108c
SS
1381make_command make_symbol_completion_list
1382(@value{GDBP}) b make_
1383@end example
1384
1385@noindent
1386After displaying the available possibilities, @value{GDBN} copies your
1387partial input (@samp{b make_} in the example) so you can finish the
1388command.
1389
1390If you just want to see the list of alternatives in the first place, you
b37052ae 1391can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1392means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1393key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1394one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1395
1396@cindex quotes in commands
1397@cindex completion of quoted strings
1398Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1399parentheses or other characters that @value{GDBN} normally excludes from
1400its notion of a word. To permit word completion to work in this
1401situation, you may enclose words in @code{'} (single quote marks) in
1402@value{GDBN} commands.
c906108c 1403
c906108c 1404The most likely situation where you might need this is in typing the
b37052ae
EZ
1405name of a C@t{++} function. This is because C@t{++} allows function
1406overloading (multiple definitions of the same function, distinguished
1407by argument type). For example, when you want to set a breakpoint you
1408may need to distinguish whether you mean the version of @code{name}
1409that takes an @code{int} parameter, @code{name(int)}, or the version
1410that takes a @code{float} parameter, @code{name(float)}. To use the
1411word-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
1414when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c
SS
1415
1416@example
96a2c332 1417(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1418bubble(double,double) bubble(int,int)
1419(@value{GDBP}) b 'bubble(
1420@end example
1421
1422In some cases, @value{GDBN} can tell that completing a name requires using
1423quotes. When this happens, @value{GDBN} inserts the quote for you (while
1424completing as much as it can) if you do not type the quote in the first
1425place:
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
1434In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1435you have not yet started typing the argument list when you ask for
1436completion on an overloaded symbol.
1437
d4f3574e 1438For more information about overloaded functions, see @ref{C plus plus
b37052ae 1439expressions, ,C@t{++} expressions}. You can use the command @code{set
c906108c 1440overload-resolution off} to disable overload resolution;
b37052ae 1441see @ref{Debugging C plus plus, ,@value{GDBN} features for C@t{++}}.
c906108c
SS
1442
1443
6d2ebf8b 1444@node Help
c906108c
SS
1445@section Getting help
1446@cindex online documentation
1447@kindex help
1448
5d161b24 1449You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1450using the command @code{help}.
1451
1452@table @code
41afff9a 1453@kindex h @r{(@code{help})}
c906108c
SS
1454@item help
1455@itemx h
1456You can use @code{help} (abbreviated @code{h}) with no arguments to
1457display a short list of named classes of commands:
1458
1459@smallexample
1460(@value{GDBP}) help
1461List of classes of commands:
1462
2df3850c 1463aliases -- Aliases of other commands
c906108c 1464breakpoints -- Making program stop at certain points
2df3850c 1465data -- Examining data
c906108c 1466files -- Specifying and examining files
2df3850c
JM
1467internals -- Maintenance commands
1468obscure -- Obscure features
1469running -- Running the program
1470stack -- Examining the stack
c906108c
SS
1471status -- Status inquiries
1472support -- Support facilities
96a2c332
SS
1473tracepoints -- Tracing of program execution without@*
1474 stopping the program
c906108c 1475user-defined -- User-defined commands
c906108c 1476
5d161b24 1477Type "help" followed by a class name for a list of
c906108c 1478commands in that class.
5d161b24 1479Type "help" followed by command name for full
c906108c
SS
1480documentation.
1481Command name abbreviations are allowed if unambiguous.
1482(@value{GDBP})
1483@end smallexample
96a2c332 1484@c the above line break eliminates huge line overfull...
c906108c
SS
1485
1486@item help @var{class}
1487Using one of the general help classes as an argument, you can get a
1488list of the individual commands in that class. For example, here is the
1489help display for the class @code{status}:
1490
1491@smallexample
1492(@value{GDBP}) help status
1493Status inquiries.
1494
1495List of commands:
1496
1497@c Line break in "show" line falsifies real output, but needed
1498@c to fit in smallbook page size.
2df3850c
JM
1499info -- Generic command for showing things
1500 about the program being debugged
1501show -- Generic command for showing things
1502 about the debugger
c906108c 1503
5d161b24 1504Type "help" followed by command name for full
c906108c
SS
1505documentation.
1506Command name abbreviations are allowed if unambiguous.
1507(@value{GDBP})
1508@end smallexample
1509
1510@item help @var{command}
1511With a command name as @code{help} argument, @value{GDBN} displays a
1512short paragraph on how to use that command.
1513
6837a0a2
DB
1514@kindex apropos
1515@item apropos @var{args}
1516The @code{apropos @var{args}} command searches through all of the @value{GDBN}
1517commands, and their documentation, for the regular expression specified in
1518@var{args}. It prints out all matches found. For example:
1519
1520@smallexample
1521apropos reload
1522@end smallexample
1523
b37052ae
EZ
1524@noindent
1525results in:
6837a0a2
DB
1526
1527@smallexample
6d2ebf8b
SS
1528@c @group
1529set symbol-reloading -- Set dynamic symbol table reloading
1530 multiple times in one run
1531show symbol-reloading -- Show dynamic symbol table reloading
1532 multiple times in one run
1533@c @end group
6837a0a2
DB
1534@end smallexample
1535
c906108c
SS
1536@kindex complete
1537@item complete @var{args}
1538The @code{complete @var{args}} command lists all the possible completions
1539for the beginning of a command. Use @var{args} to specify the beginning of the
1540command you want completed. For example:
1541
1542@smallexample
1543complete i
1544@end smallexample
1545
1546@noindent results in:
1547
1548@smallexample
1549@group
2df3850c
JM
1550if
1551ignore
c906108c
SS
1552info
1553inspect
c906108c
SS
1554@end group
1555@end smallexample
1556
1557@noindent This is intended for use by @sc{gnu} Emacs.
1558@end table
1559
1560In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1561and @code{show} to inquire about the state of your program, or the state
1562of @value{GDBN} itself. Each command supports many topics of inquiry; this
1563manual introduces each of them in the appropriate context. The listings
1564under @code{info} and under @code{show} in the Index point to
1565all the sub-commands. @xref{Index}.
1566
1567@c @group
1568@table @code
1569@kindex info
41afff9a 1570@kindex i @r{(@code{info})}
c906108c
SS
1571@item info
1572This command (abbreviated @code{i}) is for describing the state of your
1573program. For example, you can list the arguments given to your program
1574with @code{info args}, list the registers currently in use with @code{info
1575registers}, or list the breakpoints you have set with @code{info breakpoints}.
1576You can get a complete list of the @code{info} sub-commands with
1577@w{@code{help info}}.
1578
1579@kindex set
1580@item set
5d161b24 1581You can assign the result of an expression to an environment variable with
c906108c
SS
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
5d161b24 1587In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1588@value{GDBN} itself.
1589You can change most of the things you can @code{show}, by using the
1590related command @code{set}; for example, you can control what number
1591system is used for displays with @code{set radix}, or simply inquire
1592which is currently in use with @code{show radix}.
1593
1594@kindex info set
1595To display all the settable parameters and their current
1596values, 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
1604Here are three miscellaneous @code{show} subcommands, all of which are
1605exceptional in lacking corresponding @code{set} commands:
1606
1607@table @code
1608@kindex show version
1609@cindex version number
1610@item show version
1611Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1612information in @value{GDBN} bug-reports. If multiple versions of
1613@value{GDBN} are in use at your site, you may need to determine which
1614version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1615commands are introduced, and old ones may wither away. Also, many
1616system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1617variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1618The version number is the same as the one announced when you start
1619@value{GDBN}.
c906108c
SS
1620
1621@kindex show copying
1622@item show copying
1623Display information about permission for copying @value{GDBN}.
1624
1625@kindex show warranty
1626@item show warranty
2df3850c 1627Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1628if your version of @value{GDBN} comes with one.
2df3850c 1629
c906108c
SS
1630@end table
1631
6d2ebf8b 1632@node Running
c906108c
SS
1633@chapter Running Programs Under @value{GDBN}
1634
1635When you run a program under @value{GDBN}, you must first generate
1636debugging information when you compile it.
7a292a7a
SS
1637
1638You may start @value{GDBN} with its arguments, if any, in an environment
1639of your choice. If you are doing native debugging, you may redirect
1640your program's input and output, debug an already running process, or
1641kill a child process.
c906108c
SS
1642
1643@menu
1644* Compilation:: Compiling for debugging
1645* Starting:: Starting your program
c906108c
SS
1646* Arguments:: Your program's arguments
1647* Environment:: Your program's environment
c906108c
SS
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
c906108c
SS
1653
1654* Threads:: Debugging programs with multiple threads
1655* Processes:: Debugging programs with multiple processes
1656@end menu
1657
6d2ebf8b 1658@node Compilation
c906108c
SS
1659@section Compiling for debugging
1660
1661In order to debug a program effectively, you need to generate
1662debugging information when you compile it. This debugging information
1663is stored in the object file; it describes the data type of each
1664variable or function and the correspondence between source line numbers
1665and addresses in the executable code.
1666
1667To request debugging information, specify the @samp{-g} option when you run
1668the compiler.
1669
1670Many C compilers are unable to handle the @samp{-g} and @samp{-O}
1671options together. Using those compilers, you cannot generate optimized
1672executables containing debugging information.
1673
53a5351d
JM
1674@value{NGCC}, the @sc{gnu} C compiler, supports @samp{-g} with or
1675without @samp{-O}, making it possible to debug optimized code. We
1676recommend that you @emph{always} use @samp{-g} whenever you compile a
1677program. You may think your program is correct, but there is no sense
1678in pushing your luck.
c906108c
SS
1679
1680@cindex optimized code, debugging
1681@cindex debugging optimized code
1682When you debug a program compiled with @samp{-g -O}, remember that the
1683optimizer is rearranging your code; the debugger shows you what is
1684really there. Do not be too surprised when the execution path does not
1685exactly match your source file! An extreme example: if you define a
1686variable, but never use it, @value{GDBN} never sees that
1687variable---because the compiler optimizes it out of existence.
1688
1689Some things do not work as well with @samp{-g -O} as with just
1690@samp{-g}, particularly on machines with instruction scheduling. If in
1691doubt, recompile with @samp{-g} alone, and if this fixes the problem,
1692please report it to us as a bug (including a test case!).
1693
1694Older versions of the @sc{gnu} C compiler permitted a variant option
1695@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1696format; if your @sc{gnu} C compiler has this option, do not use it.
1697
1698@need 2000
6d2ebf8b 1699@node Starting
c906108c
SS
1700@section Starting your program
1701@cindex starting
1702@cindex running
1703
1704@table @code
1705@kindex run
41afff9a 1706@kindex r @r{(@code{run})}
c906108c
SS
1707@item run
1708@itemx r
7a292a7a
SS
1709Use the @code{run} command to start your program under @value{GDBN}.
1710You must first specify the program name (except on VxWorks) with an
1711argument 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}).
c906108c
SS
1714
1715@end table
1716
c906108c
SS
1717If you are running your program in an execution environment that
1718supports processes, @code{run} creates an inferior process and makes
1719that process run your program. (In environments without processes,
1720@code{run} jumps to the start of your program.)
1721
1722The execution of a program is affected by certain information it
1723receives from its superior. @value{GDBN} provides ways to specify this
1724information, which you must do @emph{before} starting your program. (You
1725can change it after starting your program, but such changes only affect
1726your program the next time you start it.) This information may be
1727divided into four categories:
1728
1729@table @asis
1730@item The @emph{arguments.}
1731Specify 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
1733is used to pass the arguments, so that you may use normal conventions
1734(such as wildcard expansion or variable substitution) in describing
1735the arguments.
1736In 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.}
1741Your program normally inherits its environment from @value{GDBN}, but you can
1742use the @value{GDBN} commands @code{set environment} and @code{unset
1743environment} to change parts of the environment that affect
1744your program. @xref{Environment, ,Your program's environment}.
1745
1746@item The @emph{working directory.}
1747Your program inherits its working directory from @value{GDBN}. You can set
1748the @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.}
1752Your program normally uses the same device for standard input and
1753standard output as @value{GDBN} is using. You can redirect input and output
1754in the @code{run} command line, or you can use the @code{tty} command to
1755set 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
1760pipes to pass the output of the program you are debugging to another
1761program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1762wrong program.
1763@end table
c906108c
SS
1764
1765When you issue the @code{run} command, your program begins to execute
1766immediately. @xref{Stopping, ,Stopping and continuing}, for discussion
1767of how to arrange for your program to stop. Once your program has
1768stopped, you may call functions in your program, using the @code{print}
1769or @code{call} commands. @xref{Data, ,Examining Data}.
1770
1771If the modification time of your symbol file has changed since the last
1772time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1773table, and reads it again. When it does this, @value{GDBN} tries to retain
1774your current breakpoints.
1775
6d2ebf8b 1776@node Arguments
c906108c
SS
1777@section Your program's arguments
1778
1779@cindex arguments (to your program)
1780The arguments to your program can be specified by the arguments of the
5d161b24 1781@code{run} command.
c906108c
SS
1782They are passed to a shell, which expands wildcard characters and
1783performs 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
d4f3574e
SS
1786the default shell (@file{/bin/sh} on Unix).
1787
1788On non-Unix systems, the program is usually invoked directly by
1789@value{GDBN}, which emulates I/O redirection via the appropriate system
1790calls, and the wildcard characters are expanded by the startup code of
1791the program, not by the shell.
c906108c
SS
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
c906108c 1796@table @code
41afff9a 1797@kindex set args
c906108c
SS
1798@item set args
1799Specify 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
1801with no arguments. Once you have run your program with arguments,
1802using @code{set args} before the next @code{run} is the only way to run
1803it again without arguments.
1804
1805@kindex show args
1806@item show args
1807Show the arguments to give your program when it is started.
1808@end table
1809
6d2ebf8b 1810@node Environment
c906108c
SS
1811@section Your program's environment
1812
1813@cindex environment (of your program)
1814The @dfn{environment} consists of a set of environment variables and
1815their values. Environment variables conventionally record such things as
1816your user name, your home directory, your terminal type, and your search
1817path for programs to run. Usually you set up environment variables with
1818the shell and they are inherited by all the other programs you run. When
1819debugging, it can be useful to try running your program with a modified
1820environment without having to start @value{GDBN} over again.
1821
1822@table @code
1823@kindex path
1824@item path @var{directory}
1825Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
1826(the search path for executables) that will be passed to your program.
1827The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
1828You may specify several directory names, separated by whitespace or by a
1829system-dependent separator character (@samp{:} on Unix, @samp{;} on
1830MS-DOS and MS-Windows). If @var{directory} is already in the path, it
1831is moved to the front, so it is searched sooner.
c906108c
SS
1832
1833You can use the string @samp{$cwd} to refer to whatever is the current
1834working directory at the time @value{GDBN} searches the path. If you
1835use @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
1844Display the list of search paths for executables (the @code{PATH}
1845environment variable).
1846
1847@kindex show environment
1848@item show environment @r{[}@var{varname}@r{]}
1849Print the value of environment variable @var{varname} to be given to
1850your program when it starts. If you do not supply @var{varname},
1851print the names and values of all environment variables to be given to
1852your program. You can abbreviate @code{environment} as @code{env}.
1853
1854@kindex set environment
53a5351d 1855@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
1856Set environment variable @var{varname} to @var{value}. The value
1857changes for your program only, not for @value{GDBN} itself. @var{value} may
1858be any string; the values of environment variables are just strings, and
1859any interpretation is supplied by your program itself. The @var{value}
1860parameter is optional; if it is eliminated, the variable is set to a
1861null value.
1862@c "any string" here does not include leading, trailing
1863@c blanks. Gnu asks: does anyone care?
1864
1865For example, this command:
1866
1867@example
1868set env USER = foo
1869@end example
1870
1871@noindent
d4f3574e 1872tells the debugged program, when subsequently run, that its user is named
c906108c
SS
1873@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
1874are not actually required.)
1875
1876@kindex unset environment
1877@item unset environment @var{varname}
1878Remove variable @var{varname} from the environment to be passed to your
1879program. This is different from @samp{set env @var{varname} =};
1880@code{unset environment} removes the variable from the environment,
1881rather than assigning it an empty value.
1882@end table
1883
d4f3574e
SS
1884@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
1885the shell indicated
c906108c
SS
1886by your @code{SHELL} environment variable if it exists (or
1887@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
1888that 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
1890your program. You may wish to move setting of environment variables to
1891files that are only run when you sign on, such as @file{.login} or
1892@file{.profile}.
1893
6d2ebf8b 1894@node Working Directory
c906108c
SS
1895@section Your program's working directory
1896
1897@cindex working directory (of your program)
1898Each time you start your program with @code{run}, it inherits its
1899working directory from the current working directory of @value{GDBN}.
1900The @value{GDBN} working directory is initially whatever it inherited
1901from its parent process (typically the shell), but you can specify a new
1902working directory in @value{GDBN} with the @code{cd} command.
1903
1904The @value{GDBN} working directory also serves as a default for the commands
1905that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
1906specify files}.
1907
1908@table @code
1909@kindex cd
1910@item cd @var{directory}
1911Set the @value{GDBN} working directory to @var{directory}.
1912
1913@kindex pwd
1914@item pwd
1915Print the @value{GDBN} working directory.
1916@end table
1917
6d2ebf8b 1918@node Input/Output
c906108c
SS
1919@section Your program's input and output
1920
1921@cindex redirection
1922@cindex i/o
1923@cindex terminal
1924By default, the program you run under @value{GDBN} does input and output to
5d161b24 1925the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
1926to its own terminal modes to interact with you, but it records the terminal
1927modes your program was using and switches back to them when you continue
1928running your program.
1929
1930@table @code
1931@kindex info terminal
1932@item info terminal
1933Displays information recorded by @value{GDBN} about the terminal modes your
1934program is using.
1935@end table
1936
1937You can redirect your program's input and/or output using shell
1938redirection with the @code{run} command. For example,
1939
1940@example
1941run > outfile
1942@end example
1943
1944@noindent
1945starts your program, diverting its output to the file @file{outfile}.
1946
1947@kindex tty
1948@cindex controlling terminal
1949Another way to specify where your program should do input and output is
1950with the @code{tty} command. This command accepts a file name as
1951argument, and causes this file to be the default for future @code{run}
1952commands. It also resets the controlling terminal for the child
1953process, for future @code{run} commands. For example,
1954
1955@example
1956tty /dev/ttyb
1957@end example
1958
1959@noindent
1960directs that processes started with subsequent @code{run} commands
1961default to do input and output on the terminal @file{/dev/ttyb} and have
1962that as their controlling terminal.
1963
1964An explicit redirection in @code{run} overrides the @code{tty} command's
1965effect on the input/output device, but not its effect on the controlling
1966terminal.
1967
1968When you use the @code{tty} command or redirect input in the @code{run}
1969command, only the input @emph{for your program} is affected. The input
1970for @value{GDBN} still comes from your terminal.
1971
6d2ebf8b 1972@node Attach
c906108c
SS
1973@section Debugging an already-running process
1974@kindex attach
1975@cindex attach
1976
1977@table @code
1978@item attach @var{process-id}
1979This command attaches to a running process---one that was started
1980outside @value{GDBN}. (@code{info files} shows your active
1981targets.) The command takes as argument a process ID. The usual way to
1982find out the process-id of a Unix process is with the @code{ps} utility,
1983or with the @samp{jobs -l} shell command.
1984
1985@code{attach} does not repeat if you press @key{RET} a second time after
1986executing the command.
1987@end table
1988
1989To use @code{attach}, your program must be running in an environment
1990which supports processes; for example, @code{attach} does not work for
1991programs on bare-board targets that lack an operating system. You must
1992also have permission to send the process a signal.
1993
1994When you use @code{attach}, the debugger finds the program running in
1995the process first by looking in the current working directory, then (if
1996the program is not found) by using the source file search path
1997(@pxref{Source Path, ,Specifying source directories}). You can also use
1998the @code{file} command to load the program. @xref{Files, ,Commands to
1999Specify Files}.
2000
2001The first thing @value{GDBN} does after arranging to debug the specified
2002process is to stop it. You can examine and modify an attached process
53a5351d
JM
2003with all the @value{GDBN} commands that are ordinarily available when
2004you start processes with @code{run}. You can insert breakpoints; you
2005can step and continue; you can modify storage. If you would rather the
2006process continue running, you may use the @code{continue} command after
c906108c
SS
2007attaching @value{GDBN} to the process.
2008
2009@table @code
2010@kindex detach
2011@item detach
2012When you have finished debugging the attached process, you can use the
2013@code{detach} command to release it from @value{GDBN} control. Detaching
2014the process continues its execution. After the @code{detach} command,
2015that process and @value{GDBN} become completely independent once more, and you
2016are 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
2018executing the command.
2019@end table
2020
2021If you exit @value{GDBN} or use the @code{run} command while you have an
2022attached process, you kill that process. By default, @value{GDBN} asks
2023for confirmation if you try to do either of these things; you can
2024control whether or not you need to confirm by using the @code{set
2025confirm} command (@pxref{Messages/Warnings, ,Optional warnings and
2026messages}).
2027
6d2ebf8b 2028@node Kill Process
c906108c 2029@section Killing the child process
c906108c
SS
2030
2031@table @code
2032@kindex kill
2033@item kill
2034Kill the child process in which your program is running under @value{GDBN}.
2035@end table
2036
2037This command is useful if you wish to debug a core dump instead of a
2038running process. @value{GDBN} ignores any core dump file while your program
2039is running.
2040
2041On some operating systems, a program cannot be executed outside @value{GDBN}
2042while 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
2044outside the debugger.
2045
2046The @code{kill} command is also useful if you wish to recompile and
2047relink your program, since on many systems it is impossible to modify an
2048executable file while it is running in a process. In this case, when you
2049next type @code{run}, @value{GDBN} notices that the file has changed, and
2050reads the symbol table again (while trying to preserve your current
2051breakpoint settings).
2052
6d2ebf8b 2053@node Threads
c906108c 2054@section Debugging programs with multiple threads
c906108c
SS
2055
2056@cindex threads of execution
2057@cindex multiple threads
2058@cindex switching threads
2059In some operating systems, such as HP-UX and Solaris, a single program
2060may have more than one @dfn{thread} of execution. The precise semantics
2061of threads differ from one operating system to another, but in general
2062the threads of a single program are akin to multiple processes---except
2063that they share one address space (that is, they can all examine and
2064modify the same variables). On the other hand, each thread has its own
2065registers and execution stack, and perhaps private memory.
2066
2067@value{GDBN} provides these facilities for debugging multi-thread
2068programs:
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
5d161b24 2074@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
2075a command to apply a command to a list of threads
2076@item thread-specific breakpoints
2077@end itemize
2078
c906108c
SS
2079@quotation
2080@emph{Warning:} These facilities are not yet available on every
2081@value{GDBN} configuration where the operating system supports threads.
2082If your @value{GDBN} does not support threads, these commands have no
2083effect. For example, a system without thread support shows no output
2084from @samp{info threads}, and always rejects the @code{thread} command,
2085like this:
2086
2087@smallexample
2088(@value{GDBP}) info threads
2089(@value{GDBP}) thread 1
2090Thread ID 1 not known. Use the "info threads" command to
2091see 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
c906108c
SS
2096
2097@cindex focus of debugging
2098@cindex current thread
2099The @value{GDBN} thread debugging facility allows you to observe all
2100threads while your program runs---but whenever @value{GDBN} takes
2101control, one thread in particular is always the focus of debugging.
2102This thread is called the @dfn{current thread}. Debugging commands show
2103program information from the perspective of the current thread.
2104
41afff9a 2105@cindex @code{New} @var{systag} message
c906108c
SS
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'.
2110Whenever @value{GDBN} detects a new thread in your program, it displays
2111the target system's identification for the thread with a message in the
2112form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2113whose form varies depending on the particular system. For example, on
2114LynxOS, you might see
2115
2116@example
2117[New process 35 thread 27]
2118@end example
2119
2120@noindent
2121when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2122the @var{systag} is simply something like @samp{process 368}, with no
2123further 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
5d161b24 2131@c threads ab initio?
c906108c
SS
2132
2133@cindex thread number
2134@cindex thread identifier (GDB)
2135For debugging purposes, @value{GDBN} associates its own thread
2136number---always a single integer---with each thread in your program.
2137
2138@table @code
2139@kindex info threads
2140@item info threads
2141Display a summary of all threads currently in your
2142program. @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
2153An asterisk @samp{*} to the left of the @value{GDBN} thread number
2154indicates the current thread.
2155
5d161b24 2156For example,
c906108c
SS
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
53a5351d
JM
2167
2168On HP-UX systems:
c906108c
SS
2169
2170@cindex thread number
2171@cindex thread identifier (GDB)
2172For debugging purposes, @value{GDBN} associates its own thread
2173number---a small integer assigned in thread-creation order---with each
2174thread in your program.
2175
41afff9a
EZ
2176@cindex @code{New} @var{systag} message, on HP-UX
2177@cindex thread identifier (system), on HP-UX
c906108c
SS
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'.
2181Whenever @value{GDBN} detects a new thread in your program, it displays
2182both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
2183form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2184whose form varies depending on the particular system. For example, on
2185HP-UX, you see
2186
2187@example
2188[New thread 2 (system thread 26594)]
2189@end example
2190
2191@noindent
5d161b24 2192when @value{GDBN} notices a new thread.
c906108c
SS
2193
2194@table @code
2195@kindex info threads
2196@item info threads
2197Display a summary of all threads currently in your
2198program. @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
2209An asterisk @samp{*} to the left of the @value{GDBN} thread number
2210indicates the current thread.
2211
5d161b24 2212For example,
c906108c
SS
2213@end table
2214@c end table here to get a little more width for example
2215
2216@example
2217(@value{GDBP}) info threads
6d2ebf8b
SS
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
c906108c 2224@end example
c906108c
SS
2225
2226@table @code
2227@kindex thread @var{threadno}
2228@item thread @var{threadno}
2229Make thread number @var{threadno} the current thread. The command
2230argument @var{threadno} is the internal @value{GDBN} thread number, as
2231shown in the first field of the @samp{info threads} display.
2232@value{GDBN} responds by displaying the system identifier of the thread
2233you 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
c906108c 2238[Switching to process 35 thread 23]
c906108c
SS
22390x34e5 in sigpause ()
2240@end smallexample
2241
2242@noindent
2243As with the @samp{[New @dots{}]} message, the form of the text after
2244@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2245threads.
c906108c
SS
2246
2247@kindex thread apply
2248@item thread apply [@var{threadno}] [@var{all}] @var{args}
2249The @code{thread apply} command allows you to apply a command to one or
2250more threads. Specify the numbers of the threads that you want affected
2251with 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
5d161b24
DB
2253threads} display. To apply a command to all threads, use
2254@code{thread apply all} @var{args}.
c906108c
SS
2255@end table
2256
2257@cindex automatic thread selection
2258@cindex switching threads automatically
2259@cindex threads, automatic switching
2260Whenever @value{GDBN} stops your program, due to a breakpoint or a
2261signal, it automatically selects the thread where that breakpoint or
2262signal happened. @value{GDBN} alerts you to the context switch with a
2263message of the form @samp{[Switching to @var{systag}]} to identify the
2264thread.
2265
2266@xref{Thread Stops,,Stopping and starting multi-thread programs}, for
2267more information about how @value{GDBN} behaves when you stop and start
2268programs with multiple threads.
2269
2270@xref{Set Watchpoints,,Setting watchpoints}, for information about
2271watchpoints in programs with multiple threads.
c906108c 2272
6d2ebf8b 2273@node Processes
c906108c
SS
2274@section Debugging programs with multiple processes
2275
2276@cindex fork, debugging programs which call
2277@cindex multiple processes
2278@cindex processes, multiple
53a5351d
JM
2279On most systems, @value{GDBN} has no special support for debugging
2280programs which create additional processes using the @code{fork}
2281function. When a program forks, @value{GDBN} will continue to debug the
2282parent process and the child process will run unimpeded. If you have
2283set a breakpoint in any code which the child then executes, the child
2284will get a @code{SIGTRAP} signal which (unless it catches the signal)
2285will cause it to terminate.
c906108c
SS
2286
2287However, if you want to debug the child process there is a workaround
2288which isn't too painful. Put a call to @code{sleep} in the code which
2289the child process executes after the fork. It may be useful to sleep
2290only if a certain environment variable is set, or a certain file exists,
2291so that the delay need not occur when you don't want to run @value{GDBN}
2292on the child. While the child is sleeping, use the @code{ps} program to
2293get 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
d4f3574e 2295the child process (@pxref{Attach}). From that point on you can debug
c906108c 2296the child process just like any other process which you attached to.
c906108c 2297
53a5351d
JM
2298On HP-UX (11.x and later only?), @value{GDBN} provides support for
2299debugging programs that create additional processes using the
2300@code{fork} or @code{vfork} function.
c906108c
SS
2301
2302By default, when a program forks, @value{GDBN} will continue to debug
2303the parent process and the child process will run unimpeded.
2304
2305If you want to follow the child process instead of the parent process,
2306use 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}
2311Set 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
2313process. The @var{mode} can be:
2314
2315@table @code
2316@item parent
2317The original process is debugged after a fork. The child process runs
2df3850c 2318unimpeded. This is the default.
c906108c
SS
2319
2320@item child
2321The new process is debugged after a fork. The parent process runs
2322unimpeded.
2323
2324@item ask
2325The debugger will ask for one of the above choices.
2326@end table
2327
2328@item show follow-fork-mode
2df3850c 2329Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
2330@end table
2331
2332If 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
2334breakpoint 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
2336the child process's @code{main}.
2337
2338When a child process is spawned by @code{vfork}, you cannot debug the
2339child or parent until an @code{exec} call completes.
2340
2341If you issue a @code{run} command to @value{GDBN} after an @code{exec}
2342call executes, the new target restarts. To restart the parent process,
2343use the @code{file} command with the parent executable name as its
2344argument.
2345
2346You can use the @code{catch} command to make @value{GDBN} stop whenever
2347a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
2348Catchpoints, ,Setting catchpoints}.
c906108c 2349
6d2ebf8b 2350@node Stopping
c906108c
SS
2351@chapter Stopping and Continuing
2352
2353The principal purposes of using a debugger are so that you can stop your
2354program before it terminates; or so that, if your program runs into
2355trouble, you can investigate and find out why.
2356
7a292a7a
SS
2357Inside @value{GDBN}, your program may stop for any of several reasons,
2358such 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
2360change variables, set new breakpoints or remove old ones, and then
2361continue execution. Usually, the messages shown by @value{GDBN} provide
2362ample explanation of the status of your program---but you can also
2363explicitly request this information at any time.
c906108c
SS
2364
2365@table @code
2366@kindex info program
2367@item info program
2368Display information about the status of your program: whether it is
7a292a7a 2369running or not, what process it is, and why it stopped.
c906108c
SS
2370@end table
2371
2372@menu
2373* Breakpoints:: Breakpoints, watchpoints, and catchpoints
2374* Continuing and Stepping:: Resuming execution
c906108c 2375* Signals:: Signals
c906108c 2376* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
2377@end menu
2378
6d2ebf8b 2379@node Breakpoints
c906108c
SS
2380@section Breakpoints, watchpoints, and catchpoints
2381
2382@cindex breakpoints
2383A @dfn{breakpoint} makes your program stop whenever a certain point in
2384the program is reached. For each breakpoint, you can add conditions to
2385control in finer detail whether your program stops. You can set
2386breakpoints with the @code{break} command and its variants (@pxref{Set
2387Breaks, ,Setting breakpoints}), to specify the place where your program
2388should stop by line number, function name or exact address in the
2389program.
2390
2391In HP-UX, SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can set
2392breakpoints in shared libraries before the executable is run. There is
2393a minor limitation on HP-UX systems: you must wait until the executable
2394is run in order to set breakpoints in shared library routines that are
2395not called directly by the program (for example, routines that are
2396arguments 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
2402A @dfn{watchpoint} is a special breakpoint that stops your program
2403when the value of an expression changes. You must use a different
2404command to set watchpoints (@pxref{Set Watchpoints, ,Setting
2405watchpoints}), but aside from that, you can manage a watchpoint like
2406any other breakpoint: you enable, disable, and delete both breakpoints
2407and watchpoints using the same commands.
2408
2409You can arrange to have values from your program displayed automatically
2410whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
2411Automatic display}.
2412
2413@cindex catchpoints
2414@cindex breakpoint on events
2415A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 2416when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
2417exception or the loading of a library. As with watchpoints, you use a
2418different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
2419catchpoints}), but aside from that, you can manage a catchpoint like any
2420other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 2421@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
2422
2423@cindex breakpoint numbers
2424@cindex numbers for breakpoints
2425@value{GDBN} assigns a number to each breakpoint, watchpoint, or
2426catchpoint when you create it; these numbers are successive integers
2427starting with one. In many of the commands for controlling various
2428features of breakpoints you use the breakpoint number to say which
2429breakpoint 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
2431enable it again.
2432
c5394b80
JM
2433@cindex breakpoint ranges
2434@cindex ranges of breakpoints
2435Some @value{GDBN} commands accept a range of breakpoints on which to
2436operate. A breakpoint range is either a single breakpoint number, like
2437@samp{5}, or two such numbers, in increasing order, separated by a
2438hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
2439all breakpoint in that range are operated on.
2440
c906108c
SS
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
c906108c 2449* Breakpoint Menus:: Breakpoint menus
d4f3574e 2450* Error in Breakpoints:: ``Cannot insert breakpoints''
c906108c
SS
2451@end menu
2452
6d2ebf8b 2453@node Set Breaks
c906108c
SS
2454@subsection Setting breakpoints
2455
5d161b24 2456@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
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
41afff9a
EZ
2462@kindex b @r{(@code{break})}
2463@vindex $bpnum@r{, convenience variable}
c906108c
SS
2464@cindex latest breakpoint
2465Breakpoints are set with the @code{break} command (abbreviated
5d161b24 2466@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 2467number of the breakpoint you've set most recently; see @ref{Convenience
c906108c
SS
2468Vars,, Convenience variables}, for a discussion of what you can do with
2469convenience variables.
2470
2471You have several ways to say where the breakpoint should go.
2472
2473@table @code
2474@item break @var{function}
5d161b24 2475Set a breakpoint at entry to function @var{function}.
c906108c 2476When using source languages that permit overloading of symbols, such as
b37052ae 2477C@t{++}, @var{function} may refer to more than one possible place to break.
c906108c 2478@xref{Breakpoint Menus,,Breakpoint menus}, for a discussion of that situation.
c906108c
SS
2479
2480@item break +@var{offset}
2481@itemx break -@var{offset}
2482Set a breakpoint some number of lines forward or back from the position
d4f3574e 2483at which execution stopped in the currently selected @dfn{stack frame}.
2df3850c 2484(@xref{Frames, ,Frames}, for a description of stack frames.)
c906108c
SS
2485
2486@item break @var{linenum}
2487Set a breakpoint at line @var{linenum} in the current source file.
d4f3574e
SS
2488The current source file is the last file whose source text was printed.
2489The breakpoint will stop your program just before it executes any of the
c906108c
SS
2490code on that line.
2491
2492@item break @var{filename}:@var{linenum}
2493Set a breakpoint at line @var{linenum} in source file @var{filename}.
2494
2495@item break @var{filename}:@var{function}
2496Set 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
2498superfluous except when multiple files contain similarly named
2499functions.
2500
2501@item break *@var{address}
2502Set a breakpoint at address @var{address}. You can use this to set
2503breakpoints in parts of your program which do not have debugging
2504information or source files.
2505
2506@item break
2507When called without any arguments, @code{break} sets a breakpoint at
2508the next instruction to be executed in the selected stack frame
2509(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
2510innermost, this makes your program stop as soon as control
2511returns to that frame. This is similar to the effect of a
2512@code{finish} command in the frame inside the selected frame---except
2513that @code{finish} does not leave an active breakpoint. If you use
2514@code{break} without an argument in the innermost frame, @value{GDBN} stops
2515the next time it reaches the current location; this may be useful
2516inside loops.
2517
2518@value{GDBN} normally ignores breakpoints when it resumes execution, until at
2519least one instruction has been executed. If it did not do this, you
2520would be unable to proceed past a breakpoint without first disabling the
2521breakpoint. This rule applies whether or not the breakpoint already
2522existed when your program stopped.
2523
2524@item break @dots{} if @var{cond}
2525Set a breakpoint with condition @var{cond}; evaluate the expression
2526@var{cond} each time the breakpoint is reached, and stop only if the
2527value is nonzero---that is, if @var{cond} evaluates as true.
2528@samp{@dots{}} stands for one of the possible arguments described
2529above (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}
2534Set a breakpoint enabled only for one stop. @var{args} are the
2535same as for the @code{break} command, and the breakpoint is set in the same
2536way, but the breakpoint is automatically deleted after the first time your
2537program stops there. @xref{Disabling, ,Disabling breakpoints}.
2538
c906108c
SS
2539@kindex hbreak
2540@item hbreak @var{args}
d4f3574e
SS
2541Set 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
c906108c
SS
2543breakpoint requires hardware support and some target hardware may not
2544have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
2545debugging, so you can set a breakpoint at an instruction without
2546changing the instruction. This can be used with the new trap-generation
2547provided by SPARClite DSU and some x86-based targets. These targets
2548will generate traps when a program accesses some data or instruction
2549address that is assigned to the debug registers. However the hardware
2550breakpoint registers can take a limited number of breakpoints. For
2551example, 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
2553or disable unused hardware breakpoints before setting new ones
2554(@pxref{Disabling, ,Disabling}). @xref{Conditions, ,Break conditions}.
c906108c
SS
2555
2556@kindex thbreak
2557@item thbreak @var{args}
2558Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
2559are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 2560the same way. However, like the @code{tbreak} command,
c906108c
SS
2561the breakpoint is automatically deleted after the
2562first time your program stops there. Also, like the @code{hbreak}
5d161b24
DB
2563command, the breakpoint requires hardware support and some target hardware
2564may not have this support. @xref{Disabling, ,Disabling breakpoints}.
d4f3574e 2565See also @ref{Conditions, ,Break conditions}.
c906108c
SS
2566
2567@kindex rbreak
2568@cindex regular expression
2569@item rbreak @var{regex}
c906108c 2570Set breakpoints on all functions matching the regular expression
11cf8741
JM
2571@var{regex}. This command sets an unconditional breakpoint on all
2572matches, printing a list of all breakpoints it set. Once these
2573breakpoints are set, they are treated just like the breakpoints set with
2574the @code{break} command. You can delete them, disable them, or make
2575them conditional the same way as any other breakpoint.
2576
2577The syntax of the regular expression is the standard one used with tools
2578like @file{grep}. Note that this is different from the syntax used by
2579shells, so for instance @code{foo*} matches all functions that include
2580an @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
2582match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 2583
b37052ae 2584When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
2585breakpoints on overloaded functions that are not members of any special
2586classes.
c906108c
SS
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{]}
2593Print a table of all breakpoints, watchpoints, and catchpoints set and
2594not deleted, with the following columns for each breakpoint:
2595
2596@table @emph
2597@item Breakpoint Numbers
2598@item Type
2599Breakpoint, watchpoint, or catchpoint.
2600@item Disposition
2601Whether the breakpoint is marked to be disabled or deleted when hit.
2602@item Enabled or Disabled
2603Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
2604that are not enabled.
2605@item Address
2df3850c 2606Where the breakpoint is in your program, as a memory address.
c906108c
SS
2607@item What
2608Where the breakpoint is in the source for your program, as a file and
2609line number.
2610@end table
2611
2612@noindent
2613If a breakpoint is conditional, @code{info break} shows the condition on
2614the line following the affected breakpoint; breakpoint commands, if any,
2615are listed after that.
2616
2617@noindent
2618@code{info break} with a breakpoint
2619number @var{n} as argument lists only that breakpoint. The
2620convenience variable @code{$_} and the default examining-address for
2621the @code{x} command are set to the address of the last breakpoint
5d161b24 2622listed (@pxref{Memory, ,Examining memory}).
c906108c
SS
2623
2624@noindent
2625@code{info break} displays a count of the number of times the breakpoint
2626has been hit. This is especially useful in conjunction with the
2627@code{ignore} command. You can ignore a large number of breakpoint
2628hits, look at the breakpoint info to see how many times the breakpoint
2629was hit, and then run again, ignoring one less than that number. This
2630will 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
2634your program. There is nothing silly or meaningless about this. When
2635the breakpoints are conditional, this is even useful
2636(@pxref{Conditions, ,Break conditions}).
2637
2638@cindex negative breakpoint numbers
2639@cindex internal @value{GDBN} breakpoints
eb12ee30
AC
2640@value{GDBN} itself sometimes sets breakpoints in your program for
2641special purposes, such as proper handling of @code{longjmp} (in C
2642programs). These internal breakpoints are assigned negative numbers,
2643starting with @code{-1}; @samp{info breakpoints} does not display them.
c906108c 2644You can see these breakpoints with the @value{GDBN} maintenance command
eb12ee30 2645@samp{maint info breakpoints} (@pxref{maint info breakpoints}).
c906108c
SS
2646
2647
6d2ebf8b 2648@node Set Watchpoints
c906108c
SS
2649@subsection Setting watchpoints
2650
2651@cindex setting watchpoints
2652@cindex software watchpoints
2653@cindex hardware watchpoints
2654You can use a watchpoint to stop execution whenever the value of an
2655expression changes, without having to predict a particular place where
2656this may happen.
2657
2658Depending on your system, watchpoints may be implemented in software or
2df3850c 2659hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
2660program and testing the variable's value each time, which is hundreds of
2661times slower than normal execution. (But this may still be worth it, to
2662catch errors where you have no clue what part of your program is the
2663culprit.)
2664
d4f3574e 2665On some systems, such as HP-UX, Linux and some other x86-based targets,
2df3850c 2666@value{GDBN} includes support for
c906108c
SS
2667hardware watchpoints, which do not slow down the running of your
2668program.
2669
2670@table @code
2671@kindex watch
2672@item watch @var{expr}
2673Set a watchpoint for an expression. @value{GDBN} will break when @var{expr}
2674is written into by the program and its value changes.
2675
2676@kindex rwatch
2677@item rwatch @var{expr}
2678Set a watchpoint that will break when watch @var{expr} is read by the program.
c906108c
SS
2679
2680@kindex awatch
2681@item awatch @var{expr}
2df3850c 2682Set a watchpoint that will break when @var{expr} is either read or written into
7be570e7 2683by the program.
c906108c
SS
2684
2685@kindex info watchpoints
2686@item info watchpoints
2687This command prints a list of watchpoints, breakpoints, and catchpoints;
2688it is the same as @code{info break}.
2689@end table
2690
2691@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
2692watchpoints execute very quickly, and the debugger reports a change in
2693value at the exact instruction where the change occurs. If @value{GDBN}
2694cannot set a hardware watchpoint, it sets a software watchpoint, which
2695executes more slowly and reports the change in value at the next
2696statement, not the instruction, after the change occurs.
2697
2698When you issue the @code{watch} command, @value{GDBN} reports
2699
2700@example
2701Hardware watchpoint @var{num}: @var{expr}
2702@end example
2703
2704@noindent
2705if it was able to set a hardware watchpoint.
2706
7be570e7
JM
2707Currently, the @code{awatch} and @code{rwatch} commands can only set
2708hardware watchpoints, because accesses to data that don't change the
2709value of the watched expression cannot be detected without examining
2710every instruction as it is being executed, and @value{GDBN} does not do
2711that currently. If @value{GDBN} finds that it is unable to set a
2712hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
2713will print a message like this:
2714
2715@smallexample
2716Expression cannot be implemented with read/access watchpoint.
2717@end smallexample
2718
2719Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
2720data type of the watched expression is wider than what a hardware
2721watchpoint on the target machine can handle. For example, some systems
2722can only watch regions that are up to 4 bytes wide; on such systems you
2723cannot set hardware watchpoints for an expression that yields a
2724double-precision floating-point number (which is typically 8 bytes
2725wide). As a work-around, it might be possible to break the large region
2726into a series of smaller ones and watch them with separate watchpoints.
2727
2728If you set too many hardware watchpoints, @value{GDBN} might be unable
2729to insert all of them when you resume the execution of your program.
2730Since the precise number of active watchpoints is unknown until such
2731time as the program is about to be resumed, @value{GDBN} might not be
2732able to warn you about this when you set the watchpoints, and the
2733warning will be printed only when the program is resumed:
2734
2735@smallexample
2736Hardware watchpoint @var{num}: Could not insert watchpoint
2737@end smallexample
2738
2739@noindent
2740If this happens, delete or disable some of the watchpoints.
2741
2742The SPARClite DSU will generate traps when a program accesses some data
2743or instruction address that is assigned to the debug registers. For the
2744data addresses, DSU facilitates the @code{watch} command. However the
2745hardware breakpoint registers can only take two data watchpoints, and
2746both watchpoints must be the same kind. For example, you can set two
2747watchpoints with @code{watch} commands, two with @code{rwatch} commands,
2748@strong{or} two with @code{awatch} commands, but you cannot set one
2749watchpoint with one command and the other with a different command.
c906108c
SS
2750@value{GDBN} will reject the command if you try to mix watchpoints.
2751Delete or disable unused watchpoint commands before setting new ones.
2752
2753If you call a function interactively using @code{print} or @code{call},
2df3850c 2754any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
2755kind of breakpoint or the call completes.
2756
7be570e7
JM
2757@value{GDBN} automatically deletes watchpoints that watch local
2758(automatic) variables, or expressions that involve such variables, when
2759they go out of scope, that is, when the execution leaves the block in
2760which these variables were defined. In particular, when the program
2761being debugged terminates, @emph{all} local variables go out of scope,
2762and so only watchpoints that watch global variables remain set. If you
2763rerun the program, you will need to set all such watchpoints again. One
2764way 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
c906108c
SS
2767@quotation
2768@cindex watchpoints and threads
2769@cindex threads and watchpoints
c906108c
SS
2770@emph{Warning:} In multi-thread programs, watchpoints have only limited
2771usefulness. With the current watchpoint implementation, @value{GDBN}
2772can only watch the value of an expression @emph{in a single thread}. If
2773you are confident that the expression can only change due to the current
2774thread's activity (and if you are also confident that no other thread
2775can become current), then you can use watchpoints as usual. However,
2776@value{GDBN} may not notice when a non-current thread's activity changes
2777the expression.
53a5351d 2778
d4f3574e 2779@c FIXME: this is almost identical to the previous paragraph.
53a5351d
JM
2780@emph{HP-UX Warning:} In multi-thread programs, software watchpoints
2781have only limited usefulness. If @value{GDBN} creates a software
2782watchpoint, it can only watch the value of an expression @emph{in a
2783single thread}. If you are confident that the expression can only
2784change due to the current thread's activity (and if you are also
2785confident that no other thread can become current), then you can use
2786software watchpoints as usual. However, @value{GDBN} may not notice
2787when a non-current thread's activity changes the expression. (Hardware
2788watchpoints, in contrast, watch an expression in all threads.)
c906108c 2789@end quotation
c906108c 2790
6d2ebf8b 2791@node Set Catchpoints
c906108c 2792@subsection Setting catchpoints
d4f3574e 2793@cindex catchpoints, setting
c906108c
SS
2794@cindex exception handlers
2795@cindex event handling
2796
2797You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 2798kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
2799shared library. Use the @code{catch} command to set a catchpoint.
2800
2801@table @code
2802@kindex catch
2803@item catch @var{event}
2804Stop when @var{event} occurs. @var{event} can be any of the following:
2805@table @code
2806@item throw
2807@kindex catch throw
b37052ae 2808The throwing of a C@t{++} exception.
c906108c
SS
2809
2810@item catch
2811@kindex catch catch
b37052ae 2812The catching of a C@t{++} exception.
c906108c
SS
2813
2814@item exec
2815@kindex catch exec
2816A call to @code{exec}. This is currently only available for HP-UX.
2817
2818@item fork
2819@kindex catch fork
2820A call to @code{fork}. This is currently only available for HP-UX.
2821
2822@item vfork
2823@kindex catch vfork
2824A 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
2829The 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
2835The unloading of any dynamically loaded shared library, or the unloading
2836of the library @var{libname}. This is currently only available for HP-UX.
2837@end table
2838
2839@item tcatch @var{event}
2840Set a catchpoint that is enabled only for one stop. The catchpoint is
2841automatically deleted after the first time the event is caught.
2842
2843@end table
2844
2845Use the @code{info break} command to list the current catchpoints.
2846
b37052ae 2847There are currently some limitations to C@t{++} exception handling
c906108c
SS
2848(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
2849
2850@itemize @bullet
2851@item
2852If you call a function interactively, @value{GDBN} normally returns
2853control to you when the function has finished executing. If the call
2854raises an exception, however, the call may bypass the mechanism that
2855returns control to you and cause your program either to abort or to
2856simply continue running until it hits a breakpoint, catches a signal
2857that @value{GDBN} is listening for, or exits. This is the case even if
2858you set a catchpoint for the exception; catchpoints on exceptions are
2859disabled within interactive calls.
2860
2861@item
2862You cannot raise an exception interactively.
2863
2864@item
2865You cannot install an exception handler interactively.
2866@end itemize
2867
2868@cindex raise exceptions
2869Sometimes @code{catch} is not the best way to debug exception handling:
2870if you need to know exactly where an exception is raised, it is better to
2871stop @emph{before} the exception handler is called, since that way you
2872can see the stack before any unwinding takes place. If you set a
2873breakpoint in an exception handler instead, it may not be easy to find
2874out where the exception was raised.
2875
2876To stop just before an exception handler is called, you need some
b37052ae 2877knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
2878raised by calling a library function named @code{__raise_exception}
2879which has the following ANSI C interface:
2880
2881@example
2882 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
2883 @var{id} is the exception identifier. */
2884 void __raise_exception (void **addr, void *id);
c906108c
SS
2885@end example
2886
2887@noindent
2888To make the debugger catch all exceptions before any stack
2889unwinding takes place, set a breakpoint on @code{__raise_exception}
2890(@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions}).
2891
2892With a conditional breakpoint (@pxref{Conditions, ,Break conditions})
2893that depends on the value of @var{id}, you can stop your program when
2894a specific exception is raised. You can use multiple conditional
2895breakpoints to stop your program when any of a number of exceptions are
2896raised.
2897
2898
6d2ebf8b 2899@node Delete Breaks
c906108c
SS
2900@subsection Deleting breakpoints
2901
2902@cindex clearing breakpoints, watchpoints, catchpoints
2903@cindex deleting breakpoints, watchpoints, catchpoints
2904It is often necessary to eliminate a breakpoint, watchpoint, or
2905catchpoint once it has done its job and you no longer want your program
2906to stop there. This is called @dfn{deleting} the breakpoint. A
2907breakpoint that has been deleted no longer exists; it is forgotten.
2908
2909With the @code{clear} command you can delete breakpoints according to
2910where they are in your program. With the @code{delete} command you can
2911delete individual breakpoints, watchpoints, or catchpoints by specifying
2912their breakpoint numbers.
2913
2914It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
2915automatically ignores breakpoints on the first instruction to be executed
2916when you continue execution without changing the execution address.
2917
2918@table @code
2919@kindex clear
2920@item clear
2921Delete any breakpoints at the next instruction to be executed in the
2922selected stack frame (@pxref{Selection, ,Selecting a frame}). When
2923the innermost frame is selected, this is a good way to delete a
2924breakpoint where your program just stopped.
2925
2926@item clear @var{function}
2927@itemx clear @var{filename}:@var{function}
2928Delete any breakpoints set at entry to the function @var{function}.
2929
2930@item clear @var{linenum}
2931@itemx clear @var{filename}:@var{linenum}
2932Delete any breakpoints set at or within the code of the specified line.
2933
2934@cindex delete breakpoints
2935@kindex delete
41afff9a 2936@kindex d @r{(@code{delete})}
c5394b80
JM
2937@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
2938Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
2939ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
2940breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
2941confirm off}). You can abbreviate this command as @code{d}.
2942@end table
2943
6d2ebf8b 2944@node Disabling
c906108c
SS
2945@subsection Disabling breakpoints
2946
2947@kindex disable breakpoints
2948@kindex enable breakpoints
2949Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
2950prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
2951it had been deleted, but remembers the information on the breakpoint so
2952that you can @dfn{enable} it again later.
2953
2954You disable and enable breakpoints, watchpoints, and catchpoints with
2955the @code{enable} and @code{disable} commands, optionally specifying one
2956or more breakpoint numbers as arguments. Use @code{info break} or
2957@code{info watch} to print a list of breakpoints, watchpoints, and
2958catchpoints if you do not know which numbers to use.
2959
2960A breakpoint, watchpoint, or catchpoint can have any of four different
2961states of enablement:
2962
2963@itemize @bullet
2964@item
2965Enabled. The breakpoint stops your program. A breakpoint set
2966with the @code{break} command starts out in this state.
2967@item
2968Disabled. The breakpoint has no effect on your program.
2969@item
2970Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 2971disabled.
c906108c
SS
2972@item
2973Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
2974immediately after it does so it is deleted permanently. A breakpoint
2975set with the @code{tbreak} command starts out in this state.
c906108c
SS
2976@end itemize
2977
2978You can use the following commands to enable or disable breakpoints,
2979watchpoints, and catchpoints:
2980
2981@table @code
2982@kindex disable breakpoints
2983@kindex disable
41afff9a 2984@kindex dis @r{(@code{disable})}
c5394b80 2985@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
2986Disable the specified breakpoints---or all breakpoints, if none are
2987listed. A disabled breakpoint has no effect but is not forgotten. All
2988options such as ignore-counts, conditions and commands are remembered in
2989case the breakpoint is enabled again later. You may abbreviate
2990@code{disable} as @code{dis}.
2991
2992@kindex enable breakpoints
2993@kindex enable
c5394b80 2994@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
2995Enable the specified breakpoints (or all defined breakpoints). They
2996become effective once again in stopping your program.
2997
c5394b80 2998@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
2999Enable the specified breakpoints temporarily. @value{GDBN} disables any
3000of these breakpoints immediately after stopping your program.
3001
c5394b80 3002@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
3003Enable the specified breakpoints to work once, then die. @value{GDBN}
3004deletes any of these breakpoints as soon as your program stops there.
3005@end table
3006
d4f3574e
SS
3007@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
3008@c confusing: tbreak is also initially enabled.
c906108c
SS
3009Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
3010,Setting breakpoints}), breakpoints that you set are initially enabled;
3011subsequently, they become disabled or enabled only when you use one of
3012the commands above. (The command @code{until} can set and delete a
3013breakpoint of its own, but it does not change the state of your other
3014breakpoints; see @ref{Continuing and Stepping, ,Continuing and
3015stepping}.)
3016
6d2ebf8b 3017@node Conditions
c906108c
SS
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?
5d161b24 3023@c in particular for a watchpoint?
c906108c
SS
3024The simplest sort of breakpoint breaks every time your program reaches a
3025specified place. You can also specify a @dfn{condition} for a
3026breakpoint. A condition is just a Boolean expression in your
3027programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
3028a condition evaluates the expression each time your program reaches it,
3029and your program stops only if the condition is @emph{true}.
3030
3031This is the converse of using assertions for program validation; in that
3032situation, you want to stop when the assertion is violated---that is,
3033when the condition is false. In C, if you want to test an assertion expressed
3034by the condition @var{assert}, you should set the condition
3035@samp{! @var{assert}} on the appropriate breakpoint.
3036
3037Conditions are also accepted for watchpoints; you may not need them,
3038since a watchpoint is inspecting the value of an expression anyhow---but
3039it might be simpler, say, to just set a watchpoint on a variable name,
3040and specify a condition that tests whether the new value is an interesting
3041one.
3042
3043Break conditions can have side effects, and may even call functions in
3044your program. This can be useful, for example, to activate functions
3045that log program progress, or to use your own print functions to
3046format special data structures. The effects are completely predictable
3047unless there is another enabled breakpoint at the same address. (In
3048that case, @value{GDBN} might see the other breakpoint first and stop your
3049program without checking the condition of this one.) Note that
d4f3574e
SS
3050breakpoint commands are usually more convenient and flexible than break
3051conditions for the
c906108c
SS
3052purpose of performing side effects when a breakpoint is reached
3053(@pxref{Break Commands, ,Breakpoint command lists}).
3054
3055Break conditions can be specified when a breakpoint is set, by using
3056@samp{if} in the arguments to the @code{break} command. @xref{Set
3057Breaks, ,Setting breakpoints}. They can also be changed at any time
3058with the @code{condition} command.
53a5351d 3059
c906108c
SS
3060You can also use the @code{if} keyword with the @code{watch} command.
3061The @code{catch} command does not recognize the @code{if} keyword;
3062@code{condition} is the only way to impose a further condition on a
3063catchpoint.
c906108c
SS
3064
3065@table @code
3066@kindex condition
3067@item condition @var{bnum} @var{expression}
3068Specify @var{expression} as the break condition for breakpoint,
3069watchpoint, or catchpoint number @var{bnum}. After you set a condition,
3070breakpoint @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
3073syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
3074referents in the context of your breakpoint. If @var{expression} uses
3075symbols not referenced in the context of the breakpoint, @value{GDBN}
3076prints an error message:
3077
3078@example
3079No symbol "foo" in current context.
3080@end example
3081
3082@noindent
c906108c
SS
3083@value{GDBN} does
3084not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
3085command (or a command that sets a breakpoint with a condition, like
3086@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
3087
3088@item condition @var{bnum}
3089Remove the condition from breakpoint number @var{bnum}. It becomes
3090an ordinary unconditional breakpoint.
3091@end table
3092
3093@cindex ignore count (of breakpoint)
3094A special case of a breakpoint condition is to stop only when the
3095breakpoint has been reached a certain number of times. This is so
3096useful that there is a special way to do it, using the @dfn{ignore
3097count} of the breakpoint. Every breakpoint has an ignore count, which
3098is an integer. Most of the time, the ignore count is zero, and
3099therefore has no effect. But if your program reaches a breakpoint whose
3100ignore count is positive, then instead of stopping, it just decrements
3101the ignore count by one and continues. As a result, if the ignore count
3102value is @var{n}, the breakpoint does not stop the next @var{n} times
3103your program reaches it.
3104
3105@table @code
3106@kindex ignore
3107@item ignore @var{bnum} @var{count}
3108Set the ignore count of breakpoint number @var{bnum} to @var{count}.
3109The next @var{count} times the breakpoint is reached, your program's
3110execution does not stop; other than to decrement the ignore count, @value{GDBN}
3111takes no action.
3112
3113To make the breakpoint stop the next time it is reached, specify
3114a count of zero.
3115
3116When you use @code{continue} to resume execution of your program from a
3117breakpoint, you can specify an ignore count directly as an argument to
3118@code{continue}, rather than using @code{ignore}. @xref{Continuing and
3119Stepping,,Continuing and stepping}.
3120
3121If a breakpoint has a positive ignore count and a condition, the
3122condition is not checked. Once the ignore count reaches zero,
3123@value{GDBN} resumes checking the condition.
3124
3125You could achieve the effect of the ignore count with a condition such
3126as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
3127is decremented each time. @xref{Convenience Vars, ,Convenience
3128variables}.
3129@end table
3130
3131Ignore counts apply to breakpoints, watchpoints, and catchpoints.
3132
3133
6d2ebf8b 3134@node Break Commands
c906108c
SS
3135@subsection Breakpoint command lists
3136
3137@cindex breakpoint commands
3138You can give any breakpoint (or watchpoint or catchpoint) a series of
3139commands to execute when your program stops due to that breakpoint. For
3140example, you might want to print the values of certain expressions, or
3141enable 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
3149Specify a list of commands for breakpoint number @var{bnum}. The commands
3150themselves appear on the following lines. Type a line containing just
3151@code{end} to terminate the commands.
3152
3153To remove all commands from a breakpoint, type @code{commands} and
3154follow it immediately with @code{end}; that is, give no commands.
3155
3156With no @var{bnum} argument, @code{commands} refers to the last
3157breakpoint, watchpoint, or catchpoint set (not to the breakpoint most
3158recently encountered).
3159@end table
3160
3161Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
3162disabled within a @var{command-list}.
3163
3164You can use breakpoint commands to start your program up again. Simply
3165use the @code{continue} command, or @code{step}, or any other command
3166that resumes execution.
3167
3168Any other commands in the command list, after a command that resumes
3169execution, are ignored. This is because any time you resume execution
3170(even with a simple @code{next} or @code{step}), you may encounter
3171another breakpoint---which could have its own command list, leading to
3172ambiguities about which list to execute.
3173
3174@kindex silent
3175If the first command you specify in a command list is @code{silent}, the
3176usual message about stopping at a breakpoint is not printed. This may
3177be desirable for breakpoints that are to print a specific message and
3178then continue. If none of the remaining commands print anything, you
3179see no sign that the breakpoint was reached. @code{silent} is
3180meaningful only at the beginning of a breakpoint command list.
3181
3182The commands @code{echo}, @code{output}, and @code{printf} allow you to
3183print precisely controlled output, and are often useful in silent
3184breakpoints. @xref{Output, ,Commands for controlled output}.
3185
3186For example, here is how you could use breakpoint commands to print the
3187value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
3188
3189@example
3190break foo if x>0
3191commands
3192silent
3193printf "x is %d\n",x
3194cont
3195end
3196@end example
3197
3198One application for breakpoint commands is to compensate for one bug so
3199you can test for another. Put a breakpoint just after the erroneous line
3200of code, give it a condition to detect the case in which something
3201erroneous has been done, and give it commands to assign correct values
3202to any variables that need them. End with the @code{continue} command
3203so that your program does not stop, and start with the @code{silent}
3204command so that no output is produced. Here is an example:
3205
3206@example
3207break 403
3208commands
3209silent
3210set x = y + 4
3211cont
3212end
3213@end example
3214
6d2ebf8b 3215@node Breakpoint Menus
c906108c
SS
3216@subsection Breakpoint menus
3217@cindex overloading
3218@cindex symbol overloading
3219
b37052ae 3220Some programming languages (notably C@t{++}) permit a single function name
c906108c
SS
3221to be defined several times, for application in different contexts.
3222This 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
3224a breakpoint. If you realize this is a problem, you can use
3225something like @samp{break @var{function}(@var{types})} to specify which
3226particular version of the function you want. Otherwise, @value{GDBN} offers
3227you a menu of numbered choices for different possible breakpoints, and
3228waits for your selection with the prompt @samp{>}. The first two
3229options are always @samp{[0] cancel} and @samp{[1] all}. Typing @kbd{1}
3230sets a breakpoint at each definition of @var{function}, and typing
3231@kbd{0} aborts the @code{break} command without setting any new
3232breakpoints.
3233
3234For example, the following session excerpt shows an attempt to set a
3235breakpoint at the overloaded symbol @code{String::after}.
3236We 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
3251Breakpoint 1 at 0xb26c: file String.cc, line 867.
3252Breakpoint 2 at 0xb344: file String.cc, line 875.
3253Breakpoint 3 at 0xafcc: file String.cc, line 846.
3254Multiple breakpoints were set.
3255Use the "delete" command to delete unwanted
3256 breakpoints.
3257(@value{GDBP})
3258@end group
3259@end smallexample
c906108c
SS
3260
3261@c @ifclear BARETARGET
6d2ebf8b 3262@node Error in Breakpoints
d4f3574e 3263@subsection ``Cannot insert breakpoints''
c906108c
SS
3264@c
3265@c FIXME!! 14/6/95 Is there a real example of this? Let's use it.
3266@c
d4f3574e
SS
3267Under some operating systems, breakpoints cannot be used in a program if
3268any other process is running that program. In this situation,
5d161b24 3269attempting to run or continue a program with a breakpoint causes
d4f3574e
SS
3270@value{GDBN} to print an error message:
3271
3272@example
3273Cannot insert breakpoints.
3274The same program may be running in another process.
3275@end example
3276
3277When this happens, you have three ways to proceed:
3278
3279@enumerate
3280@item
3281Remove or disable the breakpoints, then continue.
3282
3283@item
5d161b24 3284Suspend @value{GDBN}, and copy the file containing your program to a new
d4f3574e 3285name. Resume @value{GDBN} and use the @code{exec-file} command to specify
5d161b24 3286that @value{GDBN} should run your program under that name.
d4f3574e
SS
3287Then start your program again.
3288
3289@item
3290Relink your program so that the text segment is nonsharable, using the
3291linker option @samp{-N}. The operating system limitation may not apply
3292to nonsharable executables.
3293@end enumerate
c906108c
SS
3294@c @end ifclear
3295
d4f3574e
SS
3296A similar message can be printed if you request too many active
3297hardware-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
3302Stopped; cannot insert breakpoints.
3303You may have requested too many hardware breakpoints and watchpoints.
3304@end smallexample
3305
3306@noindent
3307This message is printed when you attempt to resume the program, since
3308only then @value{GDBN} knows exactly how many hardware breakpoints and
3309watchpoints it needs to insert.
3310
3311When this message is printed, you need to disable or remove some of the
3312hardware-assisted breakpoints and watchpoints, and then continue.
3313
3314
6d2ebf8b 3315@node Continuing and Stepping
c906108c
SS
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
3322completes normally. In contrast, @dfn{stepping} means executing just
3323one more ``step'' of your program, where ``step'' may mean either one
3324line of source code, or one machine instruction (depending on what
7a292a7a
SS
3325particular command you use). Either when continuing or when stepping,
3326your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
3327it stops due to a signal, you may want to use @code{handle}, or use
3328@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
3329
3330@table @code
3331@kindex continue
41afff9a
EZ
3332@kindex c @r{(@code{continue})}
3333@kindex fg @r{(resume foreground execution)}
c906108c
SS
3334@item continue @r{[}@var{ignore-count}@r{]}
3335@itemx c @r{[}@var{ignore-count}@r{]}
3336@itemx fg @r{[}@var{ignore-count}@r{]}
3337Resume program execution, at the address where your program last stopped;
3338any breakpoints set at that address are bypassed. The optional argument
3339@var{ignore-count} allows you to specify a further number of times to
3340ignore a breakpoint at this location; its effect is like that of
3341@code{ignore} (@pxref{Conditions, ,Break conditions}).
3342
3343The argument @var{ignore-count} is meaningful only when your program
3344stopped due to a breakpoint. At other times, the argument to
3345@code{continue} is ignored.
3346
d4f3574e
SS
3347The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
3348debugged program is deemed to be the foreground program) are provided
3349purely for convenience, and have exactly the same behavior as
3350@code{continue}.
c906108c
SS
3351@end table
3352
3353To resume execution at a different place, you can use @code{return}
3354(@pxref{Returning, ,Returning from a function}) to go back to the
3355calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
3356different address}) to go to an arbitrary location in your program.
3357
3358A typical technique for using stepping is to set a breakpoint
3359(@pxref{Breakpoints, ,Breakpoints; watchpoints; and catchpoints}) at the
3360beginning of the function or the section of your program where a problem
3361is believed to lie, run your program until it stops at that breakpoint,
3362and then step through the suspect area, examining the variables that are
3363interesting, until you see the problem happen.
3364
3365@table @code
3366@kindex step
41afff9a 3367@kindex s @r{(@code{step})}
c906108c
SS
3368@item step
3369Continue running your program until control reaches a different source
3370line, then stop it and return control to @value{GDBN}. This command is
3371abbreviated @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
3379within a function that was compiled without debugging information,
3380execution proceeds until control reaches a function that does have
3381debugging information. Likewise, it will not step into a function which
3382is compiled without debugging information. To step through functions
3383without debugging information, use the @code{stepi} command, described
3384below.
3385@end quotation
3386
4a92d011
EZ
3387The @code{step} command only stops at the first instruction of a source
3388line. This prevents the multiple stops that could otherwise occur in
3389@code{switch} statements, @code{for} loops, etc. @code{step} continues
3390to stop if a function that has debugging information is called within
3391the line. In other words, @code{step} @emph{steps inside} any functions
3392called within the line.
c906108c 3393
d4f3574e
SS
3394Also, the @code{step} command only enters a function if there is line
3395number information for the function. Otherwise it acts like the
5d161b24 3396@code{next} command. This avoids problems when using @code{cc -gl}
c906108c 3397on MIPS machines. Previously, @code{step} entered subroutines if there
5d161b24 3398was any debugging information about the routine.
c906108c
SS
3399
3400@item step @var{count}
3401Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
3402breakpoint is reached, or a signal not related to stepping occurs before
3403@var{count} steps, stepping stops right away.
c906108c
SS
3404
3405@kindex next
41afff9a 3406@kindex n @r{(@code{next})}
c906108c
SS
3407@item next @r{[}@var{count}@r{]}
3408Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
3409This is similar to @code{step}, but function calls that appear within
3410the line of code are executed without stopping. Execution stops when
3411control reaches a different line of code at the original stack level
3412that was executing when you gave the @code{next} command. This command
3413is abbreviated @code{n}.
c906108c
SS
3414
3415An 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
d4f3574e
SS
3425The @code{next} command only stops at the first instruction of a
3426source line. This prevents multiple stops that could otherwise occur in
4a92d011 3427@code{switch} statements, @code{for} loops, etc.
c906108c 3428
b90a5f51
CF
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
4a92d011 3434The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
3435stop at the first instruction of a function which contains no debug line
3436information rather than stepping over it.
3437
4a92d011
EZ
3438This is useful in cases where you may be interested in inspecting the
3439machine instructions of a function which has no symbolic info and do not
3440want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
3441
3442@item set step-mode off
4a92d011 3443Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
3444debug information. This is the default.
3445
c906108c
SS
3446@kindex finish
3447@item finish
3448Continue running until just after function in the selected stack frame
3449returns. Print the returned value (if any).
3450
3451Contrast this with the @code{return} command (@pxref{Returning,
3452,Returning from a function}).
3453
3454@kindex until
41afff9a 3455@kindex u @r{(@code{until})}
c906108c
SS
3456@item until
3457@itemx u
3458Continue running until a source line past the current line, in the
3459current stack frame, is reached. This command is used to avoid single
3460stepping through a loop more than once. It is like the @code{next}
3461command, except that when @code{until} encounters a jump, it
3462automatically continues execution until the program counter is greater
3463than the address of the jump.
3464
3465This means that when you reach the end of a loop after single stepping
3466though it, @code{until} makes your program continue execution until it
3467exits the loop. In contrast, a @code{next} command at the end of a loop
3468simply steps back to the beginning of the loop, which forces you to step
3469through the next iteration.
3470
3471@code{until} always stops your program if it attempts to exit the current
3472stack frame.
3473
3474@code{until} may produce somewhat counterintuitive results if the order
3475of machine code does not match the order of the source lines. For
3476example, 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
3483206 expand_input();
3484(@value{GDBP}) until
3485195 for ( ; argc > 0; NEXTARG) @{
3486@end example
3487
3488This happened because, for execution efficiency, the compiler had
3489generated code for the loop closure test at the end, rather than the
3490start, of the loop---even though the test in a C @code{for}-loop is
3491written before the body of the loop. The @code{until} command appeared
3492to step back to the beginning of the loop when it advanced to this
3493expression; however, it has not really gone to an earlier
3494statement---not in terms of the actual machine code.
3495
3496@code{until} with no argument works by means of single
3497instruction stepping, and hence is slower than @code{until} with an
3498argument.
3499
3500@item until @var{location}
3501@itemx u @var{location}
3502Continue running your program until either the specified location is
3503reached, or the current stack frame returns. @var{location} is any of
3504the forms of argument acceptable to @code{break} (@pxref{Set Breaks,
3505,Setting breakpoints}). This form of the command uses breakpoints,
3506and hence is quicker than @code{until} without an argument.
3507
3508@kindex stepi
41afff9a 3509@kindex si @r{(@code{stepi})}
c906108c 3510@item stepi
96a2c332 3511@itemx stepi @var{arg}
c906108c
SS
3512@itemx si
3513Execute one machine instruction, then stop and return to the debugger.
3514
3515It is often useful to do @samp{display/i $pc} when stepping by machine
3516instructions. This makes @value{GDBN} automatically display the next
3517instruction to be executed, each time your program stops. @xref{Auto
3518Display,, Automatic display}.
3519
3520An argument is a repeat count, as in @code{step}.
3521
3522@need 750
3523@kindex nexti
41afff9a 3524@kindex ni @r{(@code{nexti})}
c906108c 3525@item nexti
96a2c332 3526@itemx nexti @var{arg}
c906108c
SS
3527@itemx ni
3528Execute one machine instruction, but if it is a function call,
3529proceed until the function returns.
3530
3531An argument is a repeat count, as in @code{next}.
3532@end table
3533
6d2ebf8b 3534@node Signals
c906108c
SS
3535@section Signals
3536@cindex signals
3537
3538A signal is an asynchronous event that can happen in a program. The
3539operating system defines the possible kinds of signals, and gives each
3540kind a name and a number. For example, in Unix @code{SIGINT} is the
d4f3574e 3541signal a program gets when you type an interrupt character (often @kbd{C-c});
c906108c
SS
3542@code{SIGSEGV} is the signal a program gets from referencing a place in
3543memory far away from all the areas in use; @code{SIGALRM} occurs when
3544the alarm clock timer goes off (which happens only if your program has
3545requested an alarm).
3546
3547@cindex fatal signals
3548Some signals, including @code{SIGALRM}, are a normal part of the
3549functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 3550errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
3551program 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
3553fatal 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
3556program. You can tell @value{GDBN} in advance what to do for each kind of
3557signal.
3558
3559@cindex handling signals
24f93129
EZ
3560Normally, @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)
c906108c
SS
3563but to stop your program immediately whenever an error signal happens.
3564You can change these settings with the @code{handle} command.
3565
3566@table @code
3567@kindex info signals
3568@item info signals
96a2c332 3569@itemx info handle
c906108c
SS
3570Print a table of all the kinds of signals and how @value{GDBN} has been told to
3571handle each one. You can use this to see the signal numbers of all
3572the defined types of signals.
3573
d4f3574e 3574@code{info handle} is an alias for @code{info signals}.
c906108c
SS
3575
3576@kindex handle
3577@item handle @var{signal} @var{keywords}@dots{}
5ece1a18
EZ
3578Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
3579can be the number of a signal or its name (with or without the
24f93129 3580@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18
EZ
3581@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
3582known signals. The @var{keywords} say what change to make.
c906108c
SS
3583@end table
3584
3585@c @group
3586The keywords allowed by the @code{handle} command can be abbreviated.
3587Their full names are:
3588
3589@table @code
3590@item nostop
3591@value{GDBN} should not stop your program when this signal happens. It may
3592still 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
3596the @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
3603implies the @code{nostop} keyword as well.
3604
3605@item pass
5ece1a18 3606@itemx noignore
c906108c
SS
3607@value{GDBN} should allow your program to see this signal; your program
3608can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 3609and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
3610
3611@item nopass
5ece1a18 3612@itemx ignore
c906108c 3613@value{GDBN} should not allow your program to see this signal.
5ece1a18 3614@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
3615@end table
3616@c @end group
3617
d4f3574e
SS
3618When a signal stops your program, the signal is not visible to the
3619program until you
c906108c
SS
3620continue. Your program sees the signal then, if @code{pass} is in
3621effect for the signal in question @emph{at that time}. In other words,
3622after @value{GDBN} reports a signal, you can use the @code{handle}
3623command with @code{pass} or @code{nopass} to control whether your
3624program sees that signal when you continue.
3625
24f93129
EZ
3626The default is set to @code{nostop}, @code{noprint}, @code{pass} for
3627non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
3628@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
3629erroneous signals.
3630
c906108c
SS
3631You can also use the @code{signal} command to prevent your program from
3632seeing a signal, or cause it to see a signal it normally would not see,
3633or to give it any signal at any time. For example, if your program stopped
3634due to some sort of memory reference error, you might store correct
3635values into the erroneous variables and continue, hoping to see more
3636execution; but your program would probably terminate immediately as
3637a result of the fatal signal once it saw the signal. To prevent this,
3638you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
5d161b24 3639program a signal}.
c906108c 3640
6d2ebf8b 3641@node Thread Stops
c906108c
SS
3642@section Stopping and starting multi-thread programs
3643
3644When your program has multiple threads (@pxref{Threads,, Debugging
3645programs with multiple threads}), you can choose whether to set
3646breakpoints 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
3655writing them, but the effect is always to specify some source line.
3656
3657Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
3658to specify that you only want @value{GDBN} to stop the program when a
3659particular thread reaches this breakpoint. @var{threadno} is one of the
3660numeric thread identifiers assigned by @value{GDBN}, shown in the first
3661column of the @samp{info threads} display.
3662
3663If you do not specify @samp{thread @var{threadno}} when you set a
3664breakpoint, the breakpoint applies to @emph{all} threads of your
3665program.
3666
3667You can use the @code{thread} qualifier on conditional breakpoints as
3668well; in this case, place @samp{thread @var{threadno}} before the
3669breakpoint condition, like this:
3670
3671@smallexample
2df3850c 3672(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
3673@end smallexample
3674
3675@end table
3676
3677@cindex stopped threads
3678@cindex threads, stopped
3679Whenever your program stops under @value{GDBN} for any reason,
3680@emph{all} threads of execution stop, not just the current thread. This
3681allows you to examine the overall state of the program, including
3682switching between threads, without worrying that things may change
3683underfoot.
3684
3685@cindex continuing threads
3686@cindex threads, continuing
3687Conversely, whenever you restart the program, @emph{all} threads start
3688executing. @emph{This is true even when single-stepping} with commands
5d161b24 3689like @code{step} or @code{next}.
c906108c
SS
3690
3691In particular, @value{GDBN} cannot single-step all threads in lockstep.
3692Since thread scheduling is up to your debugging target's operating
3693system (not controlled by @value{GDBN}), other threads may
3694execute more than one statement while the current thread completes a
3695single step. Moreover, in general other threads stop in the middle of a
3696statement, rather than at a clean statement boundary, when the program
3697stops.
3698
3699You might even find your program stopped in another thread after
3700continuing or even single-stepping. This happens whenever some other
3701thread runs into a breakpoint, a signal, or an exception before the
3702first thread completes whatever you requested.
3703
3704On some OSes, you can lock the OS scheduler and thus allow only a single
3705thread to run.
3706
3707@table @code
3708@item set scheduler-locking @var{mode}
3709Set the scheduler locking mode. If it is @code{off}, then there is no
3710locking and any thread may run at any time. If @code{on}, then only the
3711current thread may run when the inferior is resumed. The @code{step}
3712mode optimizes for single-stepping. It stops other threads from
3713``seizing the prompt'' by preempting the current thread while you are
3714stepping. Other threads will only rarely (or never) get a chance to run
d4f3574e 3715when you step. They are more likely to run when you @samp{next} over a
c906108c 3716function call, and they are completely free to run when you use commands
d4f3574e 3717like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
c906108c 3718thread hits a breakpoint during its timeslice, they will never steal the
2df3850c 3719@value{GDBN} prompt away from the thread that you are debugging.
c906108c
SS
3720
3721@item show scheduler-locking
3722Display the current scheduler locking mode.
3723@end table
3724
c906108c 3725
6d2ebf8b 3726@node Stack
c906108c
SS
3727@chapter Examining the Stack
3728
3729When your program has stopped, the first thing you need to know is where it
3730stopped and how it got there.
3731
3732@cindex call stack
5d161b24
DB
3733Each time your program performs a function call, information about the call
3734is generated.
3735That information includes the location of the call in your program,
3736the arguments of the call,
c906108c 3737and the local variables of the function being called.
5d161b24 3738The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
3739The stack frames are allocated in a region of memory called the @dfn{call
3740stack}.
3741
3742When your program stops, the @value{GDBN} commands for examining the
3743stack allow you to see all of this information.
3744
3745@cindex selected frame
3746One of the stack frames is @dfn{selected} by @value{GDBN} and many
3747@value{GDBN} commands refer implicitly to the selected frame. In
3748particular, whenever you ask @value{GDBN} for the value of a variable in
3749your program, the value is found in the selected frame. There are
3750special @value{GDBN} commands to select whichever frame you are
3751interested in. @xref{Selection, ,Selecting a frame}.
3752
3753When your program stops, @value{GDBN} automatically selects the
5d161b24 3754currently executing frame and describes it briefly, similar to the
c906108c
SS
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
c906108c
SS
3762
3763@end menu
3764
6d2ebf8b 3765@node Frames
c906108c
SS
3766@section Stack frames
3767
d4f3574e 3768@cindex frame, definition
c906108c
SS
3769@cindex stack frame
3770The call stack is divided up into contiguous pieces called @dfn{stack
3771frames}, or @dfn{frames} for short; each frame is the data associated
3772with one call to one function. The frame contains the arguments given
3773to the function, the function's local variables, and the address at
3774which the function is executing.
3775
3776@cindex initial frame
3777@cindex outermost frame
3778@cindex innermost frame
3779When your program is started, the stack has only one frame, that of the
3780function @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
3782made. Each time a function returns, the frame for that function invocation
3783is eliminated. If a function is recursive, there can be many frames for
3784the same function. The frame for the function in which execution is
3785actually occurring is called the @dfn{innermost} frame. This is the most
3786recently created of all the stack frames that still exist.
3787
3788@cindex frame pointer
3789Inside your program, stack frames are identified by their addresses. A
3790stack frame consists of many bytes, each of which has its own address; each
3791kind of computer has a convention for choosing one byte whose
3792address serves as the address of the frame. Usually this address is kept
3793in a register called the @dfn{frame pointer register} while execution is
3794going on in that frame.
3795
3796@cindex frame number
3797@value{GDBN} assigns numbers to all existing stack frames, starting with
3798zero for the innermost frame, one for the frame that called it,
3799and so on upward. These numbers do not really exist in your program;
3800they are assigned by @value{GDBN} to give you a way of designating stack
3801frames in @value{GDBN} commands.
3802
6d2ebf8b
SS
3803@c The -fomit-frame-pointer below perennially causes hbox overflow
3804@c underflow problems.
c906108c
SS
3805@cindex frameless execution
3806Some compilers provide a way to compile functions so that they operate
6d2ebf8b
SS
3807without stack frames. (For example, the @value{GCC} option
3808@example
3809@samp{-fomit-frame-pointer}
3810@end example
3811generates functions without a frame.)
c906108c
SS
3812This is occasionally done with heavily used library functions to save
3813the frame setup time. @value{GDBN} has limited facilities for dealing
3814with these function invocations. If the innermost function invocation
3815has no stack frame, @value{GDBN} nevertheless regards it as though
3816it had a separate frame, which is numbered zero as usual, allowing
3817correct tracing of the function call chain. However, @value{GDBN} has
3818no provision for frameless functions elsewhere in the stack.
3819
3820@table @code
d4f3574e 3821@kindex frame@r{, command}
41afff9a 3822@cindex current stack frame
c906108c 3823@item frame @var{args}
5d161b24 3824The @code{frame} command allows you to move from one stack frame to another,
c906108c 3825and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
3826address of the frame or the stack frame number. Without an argument,
3827@code{frame} prints the current stack frame.
c906108c
SS
3828
3829@kindex select-frame
41afff9a 3830@cindex selecting frame silently
c906108c
SS
3831@item select-frame
3832The @code{select-frame} command allows you to move from one stack frame
3833to another without printing the frame. This is the silent version of
3834@code{frame}.
3835@end table
3836
6d2ebf8b 3837@node Backtrace
c906108c
SS
3838@section Backtraces
3839
3840@cindex backtraces
3841@cindex tracebacks
3842@cindex stack traces
3843A backtrace is a summary of how your program got where it is. It shows one
3844line per frame, for many frames, starting with the currently executing
3845frame (frame zero), followed by its caller (frame one), and on up the
3846stack.
3847
3848@table @code
3849@kindex backtrace
41afff9a 3850@kindex bt @r{(@code{backtrace})}
c906108c
SS
3851@item backtrace
3852@itemx bt
3853Print a backtrace of the entire stack: one line per frame for all
3854frames in the stack.
3855
3856You can stop the backtrace at any time by typing the system interrupt
3857character, normally @kbd{C-c}.
3858
3859@item backtrace @var{n}
3860@itemx bt @var{n}
3861Similar, but print only the innermost @var{n} frames.
3862
3863@item backtrace -@var{n}
3864@itemx bt -@var{n}
3865Similar, but print only the outermost @var{n} frames.
3866@end table
3867
3868@kindex where
3869@kindex info stack
41afff9a 3870@kindex info s @r{(@code{info stack})}
c906108c
SS
3871The names @code{where} and @code{info stack} (abbreviated @code{info s})
3872are additional aliases for @code{backtrace}.
3873
3874Each line in the backtrace shows the frame number and the function name.
3875The program counter value is also shown---unless you use @code{set
3876print address off}. The backtrace also shows the source file name and
3877line number, as well as the arguments to the function. The program
3878counter value is omitted if it is at the beginning of the code for that
3879line number.
3880
3881Here 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
5d161b24 3886#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c
SS
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
3896The display for frame zero does not begin with a program counter
3897value, indicating that your program has stopped at the beginning of the
3898code for line @code{993} of @code{builtin.c}.
3899
6d2ebf8b 3900@node Selection
c906108c
SS
3901@section Selecting a frame
3902
3903Most commands for examining the stack and other data in your program work on
3904whichever stack frame is selected at the moment. Here are the commands for
3905selecting a stack frame; all of them finish by printing a brief description
3906of the stack frame just selected.
3907
3908@table @code
d4f3574e 3909@kindex frame@r{, selecting}
41afff9a 3910@kindex f @r{(@code{frame})}
c906108c
SS
3911@item frame @var{n}
3912@itemx f @var{n}
3913Select frame number @var{n}. Recall that frame zero is the innermost
3914(currently executing) frame, frame one is the frame that called the
3915innermost 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}
3920Select the frame at address @var{addr}. This is useful mainly if the
3921chaining of stack frames has been damaged by a bug, making it
3922impossible for @value{GDBN} to assign numbers properly to all frames. In
3923addition, this can be useful when your program has multiple stacks and
3924switches between them.
3925
c906108c
SS
3926On the SPARC architecture, @code{frame} needs two addresses to
3927select an arbitrary frame: a frame pointer and a stack pointer.
3928
3929On the MIPS and Alpha architecture, it needs two addresses: a stack
3930pointer and a program counter.
3931
3932On the 29k architecture, it needs three addresses: a register stack
3933pointer, 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.
c906108c
SS
3937
3938@kindex up
3939@item up @var{n}
3940Move @var{n} frames up the stack. For positive numbers @var{n}, this
3941advances toward the outermost frame, to higher frame numbers, to frames
3942that have existed longer. @var{n} defaults to one.
3943
3944@kindex down
41afff9a 3945@kindex do @r{(@code{down})}
c906108c
SS
3946@item down @var{n}
3947Move @var{n} frames down the stack. For positive numbers @var{n}, this
3948advances toward the innermost frame, to lower frame numbers, to frames
3949that were created more recently. @var{n} defaults to one. You may
3950abbreviate @code{down} as @code{do}.
3951@end table
3952
3953All of these commands end by printing two lines of output describing the
3954frame. The first line shows the frame number, the function name, the
3955arguments, and the source file and line number of execution in that
5d161b24 3956frame. The second line shows the text of that source line.
c906108c
SS
3957
3958@need 1000
3959For 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
396610 read_input_file (argv[i]);
3967@end group
3968@end smallexample
3969
3970After such a printout, the @code{list} command with no arguments
3971prints 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}
3979These two commands are variants of @code{up} and @code{down},
3980respectively; they differ in that they do their work silently, without
3981causing display of the new frame. They are intended primarily for use
3982in @value{GDBN} command scripts, where the output might be unnecessary and
3983distracting.
3984@end table
3985
6d2ebf8b 3986@node Frame Info
c906108c
SS
3987@section Information about a frame
3988
3989There are several other commands to print information about the selected
3990stack frame.
3991
3992@table @code
3993@item frame
3994@itemx f
3995When used without any argument, this command does not change which
3996frame is selected, but prints a brief description of the currently
3997selected stack frame. It can be abbreviated @code{f}. With an
3998argument, this command is used to select a stack frame.
3999@xref{Selection, ,Selecting a frame}.
4000
4001@kindex info frame
41afff9a 4002@kindex info f @r{(@code{info frame})}
c906108c
SS
4003@item info frame
4004@itemx info f
4005This command prints a verbose description of the selected stack frame,
4006including:
4007
4008@itemize @bullet
5d161b24
DB
4009@item
4010the address of the frame
c906108c
SS
4011@item
4012the address of the next frame down (called by this frame)
4013@item
4014the address of the next frame up (caller of this frame)
4015@item
4016the language in which the source code corresponding to this frame is written
4017@item
4018the address of the frame's arguments
4019@item
d4f3574e
SS
4020the address of the frame's local variables
4021@item
c906108c
SS
4022the program counter saved in it (the address of execution in the caller frame)
4023@item
4024which registers were saved in the frame
4025@end itemize
4026
4027@noindent The verbose description is useful when
4028something has gone wrong that has made the stack format fail to fit
4029the usual conventions.
4030
4031@item info frame @var{addr}
4032@itemx info f @var{addr}
4033Print a verbose description of the frame at address @var{addr}, without
4034selecting that frame. The selected frame remains unchanged by this
4035command. This requires the same kind of address (more than one for some
4036architectures) that you specify in the @code{frame} command.
4037@xref{Selection, ,Selecting a frame}.
4038
4039@kindex info args
4040@item info args
4041Print the arguments of the selected frame, each on a separate line.
4042
4043@item info locals
4044@kindex info locals
4045Print the local variables of the selected frame, each on a separate
4046line. These are all variables (declared either static or automatic)
4047accessible at the point of execution of the selected frame.
4048
c906108c 4049@kindex info catch
d4f3574e
SS
4050@cindex catch exceptions, list active handlers
4051@cindex exception handlers, how to list
c906108c
SS
4052@item info catch
4053Print a list of all the exception handlers that are active in the
4054current stack frame at the current point of execution. To see other
4055exception 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}.
53a5351d 4058
c906108c
SS
4059@end table
4060
c906108c 4061
6d2ebf8b 4062@node Source
c906108c
SS
4063@chapter Examining Source Files
4064
4065@value{GDBN} can print parts of your program's source, since the debugging
4066information recorded in the program tells @value{GDBN} what source files were
4067used to build it. When your program stops, @value{GDBN} spontaneously prints
4068the line where it stopped. Likewise, when you select a stack frame
4069(@pxref{Selection, ,Selecting a frame}), @value{GDBN} prints the line where
4070execution in that frame has stopped. You can print other portions of
4071source files by explicit command.
4072
7a292a7a 4073If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 4074prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 4075@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
4076
4077@menu
4078* List:: Printing source lines
c906108c 4079* Search:: Searching source files
c906108c
SS
4080* Source Path:: Specifying source directories
4081* Machine Code:: Source and machine code
4082@end menu
4083
6d2ebf8b 4084@node List
c906108c
SS
4085@section Printing source lines
4086
4087@kindex list
41afff9a 4088@kindex l @r{(@code{list})}
c906108c 4089To print lines from a source file, use the @code{list} command
5d161b24 4090(abbreviated @code{l}). By default, ten lines are printed.
c906108c
SS
4091There are several ways to specify what part of the file you want to print.
4092
4093Here are the forms of the @code{list} command most commonly used:
4094
4095@table @code
4096@item list @var{linenum}
4097Print lines centered around line number @var{linenum} in the
4098current source file.
4099
4100@item list @var{function}
4101Print lines centered around the beginning of function
4102@var{function}.
4103
4104@item list
4105Print more lines. If the last lines printed were printed with a
4106@code{list} command, this prints lines following the last lines
4107printed; however, if the last line printed was a solitary line printed
4108as part of displaying a stack frame (@pxref{Stack, ,Examining the
4109Stack}), this prints lines centered around that line.
4110
4111@item list -
4112Print lines just before the lines last printed.
4113@end table
4114
4115By default, @value{GDBN} prints ten source lines with any of these forms of
4116the @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}
4121Make the @code{list} command display @var{count} source lines (unless
4122the @code{list} argument explicitly specifies some other number).
4123
4124@kindex show listsize
4125@item show listsize
4126Display the number of lines that @code{list} prints.
4127@end table
4128
4129Repeating a @code{list} command with @key{RET} discards the argument,
4130so it is equivalent to typing just @code{list}. This is more useful
4131than listing the same lines again. An exception is made for an
4132argument of @samp{-}; that argument is preserved in repetition so that
4133each repetition moves up in the source file.
4134
4135@cindex linespec
4136In general, the @code{list} command expects you to supply zero, one or two
4137@dfn{linespecs}. Linespecs specify source lines; there are several ways
d4f3574e 4138of writing them, but the effect is always to specify some source line.
c906108c
SS
4139Here is a complete description of the possible arguments for @code{list}:
4140
4141@table @code
4142@item list @var{linespec}
4143Print lines centered around the line specified by @var{linespec}.
4144
4145@item list @var{first},@var{last}
4146Print lines from @var{first} to @var{last}. Both arguments are
4147linespecs.
4148
4149@item list ,@var{last}
4150Print lines ending with @var{last}.
4151
4152@item list @var{first},
4153Print lines starting with @var{first}.
4154
4155@item list +
4156Print lines just after the lines last printed.
4157
4158@item list -
4159Print lines just before the lines last printed.
4160
4161@item list
4162As described in the preceding table.
4163@end table
4164
4165Here are the ways of specifying a single source line---all the
4166kinds of linespec.
4167
4168@table @code
4169@item @var{number}
4170Specifies line @var{number} of the current source file.
4171When a @code{list} command has two linespecs, this refers to
4172the same source file as the first linespec.
4173
4174@item +@var{offset}
4175Specifies the line @var{offset} lines after the last line printed.
4176When used as the second linespec in a @code{list} command that has
4177two, this specifies the line @var{offset} lines down from the
4178first linespec.
4179
4180@item -@var{offset}
4181Specifies the line @var{offset} lines before the last line printed.
4182
4183@item @var{filename}:@var{number}
4184Specifies line @var{number} in the source file @var{filename}.
4185
4186@item @var{function}
4187Specifies the line that begins the body of the function @var{function}.
4188For example: in C, this is the line with the open brace.
4189
4190@item @var{filename}:@var{function}
4191Specifies the line of the open-brace that begins the body of the
4192function @var{function} in the file @var{filename}. You only need the
4193file name with a function name to avoid ambiguity when there are
4194identically named functions in different source files.
4195
4196@item *@var{address}
4197Specifies the line containing the program address @var{address}.
4198@var{address} may be any expression.
4199@end table
4200
6d2ebf8b 4201@node Search
c906108c
SS
4202@section Searching source files
4203@cindex searching
4204@kindex reverse-search
4205
4206There are two commands for searching through the current source file for a
4207regular expression.
4208
4209@table @code
4210@kindex search
4211@kindex forward-search
4212@item forward-search @var{regexp}
4213@itemx search @var{regexp}
4214The command @samp{forward-search @var{regexp}} checks each line,
4215starting with the one following the last line listed, for a match for
5d161b24 4216@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
4217synonym @samp{search @var{regexp}} or abbreviate the command name as
4218@code{fo}.
4219
4220@item reverse-search @var{regexp}
4221The command @samp{reverse-search @var{regexp}} checks each line, starting
4222with the one before the last line listed and going backward, for a match
4223for @var{regexp}. It lists the line that is found. You can abbreviate
4224this command as @code{rev}.
4225@end table
c906108c 4226
6d2ebf8b 4227@node Source Path
c906108c
SS
4228@section Specifying source directories
4229
4230@cindex source path
4231@cindex directories for source files
4232Executable programs sometimes do not record the directories of the source
4233files from which they were compiled, just the names. Even when they do,
4234the directories could be moved between the compilation and your debugging
4235session. @value{GDBN} has a list of directories to search for source files;
4236this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
4237it tries all the directories in the list, in the order they are present
4238in the list, until it finds a file with the desired name. Note that
4239the executable search path is @emph{not} used for this purpose. Neither is
4240the current working directory, unless it happens to be in the source
4241path.
4242
4243If @value{GDBN} cannot find a source file in the source path, and the
4244object program records a directory, @value{GDBN} tries that directory
4245too. If the source path is empty, and there is no record of the
4246compilation directory, @value{GDBN} looks in the current directory as a
4247last resort.
4248
4249Whenever you reset or rearrange the source path, @value{GDBN} clears out
4250any information it has cached about where source files are found and where
4251each line is in the file.
4252
4253@kindex directory
4254@kindex dir
d4f3574e
SS
4255When you start @value{GDBN}, its source path includes only @samp{cdir}
4256and @samp{cwd}, in that order.
c906108c
SS
4257To add other directories, use the @code{directory} command.
4258
4259@table @code
4260@item directory @var{dirname} @dots{}
4261@item dir @var{dirname} @dots{}
4262Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
4263directory names may be given to this command, separated by @samp{:}
4264(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
4265part of absolute file names) or
c906108c
SS
4266whitespace. You may specify a directory that is already in the source
4267path; this moves it forward, so @value{GDBN} searches it sooner.
4268
4269@kindex cdir
4270@kindex cwd
41afff9a
EZ
4271@vindex $cdir@r{, convenience variable}
4272@vindex $cwdr@r{, convenience variable}
c906108c
SS
4273@cindex compilation directory
4274@cindex current directory
4275@cindex working directory
4276@cindex directory, current
4277@cindex directory, compilation
4278You can use the string @samp{$cdir} to refer to the compilation
4279directory (if one is recorded), and @samp{$cwd} to refer to the current
4280working directory. @samp{$cwd} is not the same as @samp{.}---the former
4281tracks the current working directory as it changes during your @value{GDBN}
4282session, while the latter is immediately expanded to the current
4283directory at the time you add an entry to the source path.
4284
4285@item directory
4286Reset 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
4293Print the source path: show which directories it contains.
4294@end table
4295
4296If your source path is cluttered with directories that are no longer of
4297interest, @value{GDBN} may sometimes cause confusion by finding the wrong
4298versions of source. You can correct the situation as follows:
4299
4300@enumerate
4301@item
4302Use @code{directory} with no argument to reset the source path to empty.
4303
4304@item
4305Use @code{directory} with suitable arguments to reinstall the
4306directories you want in the source path. You can add all the
4307directories in one command.
4308@end enumerate
4309
6d2ebf8b 4310@node Machine Code
c906108c
SS
4311@section Source and machine code
4312
4313You can use the command @code{info line} to map source lines to program
4314addresses (and vice versa), and the command @code{disassemble} to display
4315a range of addresses as machine instructions. When run under @sc{gnu} Emacs
d4f3574e 4316mode, the @code{info line} command causes the arrow to point to the
5d161b24 4317line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
4318well as hex.
4319
4320@table @code
4321@kindex info line
4322@item info line @var{linespec}
4323Print the starting and ending addresses of the compiled code for
4324source line @var{linespec}. You can specify source lines in any of
4325the ways understood by the @code{list} command (@pxref{List, ,Printing
4326source lines}).
4327@end table
4328
4329For example, we can use @code{info line} to discover the location of
4330the object code for the first line of function
4331@code{m4_changequote}:
4332
d4f3574e
SS
4333@c FIXME: I think this example should also show the addresses in
4334@c symbolic form, as they usually would be displayed.
c906108c 4335@smallexample
96a2c332 4336(@value{GDBP}) info line m4_changequote
c906108c
SS
4337Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
4338@end smallexample
4339
4340@noindent
4341We 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
4345Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
4346@end smallexample
4347
4348@cindex @code{$_} and @code{info line}
41afff9a 4349@kindex x@r{(examine), and} info line
c906108c
SS
4350After @code{info line}, the default address for the @code{x} command
4351is changed to the starting address of the line, so that @samp{x/i} is
4352sufficient to begin examining the machine code (@pxref{Memory,
4353,Examining memory}). Also, this address is saved as the value of the
4354convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
4355variables}).
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
4364This specialized command dumps a range of memory as machine
4365instructions. The default memory range is the function surrounding the
4366program counter of the selected frame. A single argument to this
4367command is a program counter value; @value{GDBN} dumps the function
4368surrounding this value. Two arguments specify a range of addresses
4369(first inclusive, second exclusive) to dump.
4370@end table
4371
c906108c
SS
4372The following example shows the disassembly of a range of addresses of
4373HP PA-RISC 2.0 code:
4374
4375@smallexample
4376(@value{GDBP}) disas 0x32c4 0x32e4
4377Dump of assembler code from 0x32c4 to 0x32e4:
43780x32c4 <main+204>: addil 0,dp
43790x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
43800x32cc <main+212>: ldil 0x3000,r31
43810x32d0 <main+216>: ble 0x3f8(sr4,r31)
43820x32d4 <main+220>: ldo 0(r31),rp
43830x32d8 <main+224>: addil -0x800,dp
43840x32dc <main+228>: ldo 0x588(r1),r26
43850x32e0 <main+232>: ldil 0x3000,r31
4386End of assembler dump.
4387@end smallexample
c906108c
SS
4388
4389Some architectures have more than one commonly-used set of instruction
4390mnemonics or other syntax.
4391
4392@table @code
d4f3574e 4393@kindex set disassembly-flavor
c906108c
SS
4394@cindex assembly instructions
4395@cindex instructions, assembly
4396@cindex machine instructions
4397@cindex listing machine instructions
d4f3574e
SS
4398@cindex Intel disassembly flavor
4399@cindex AT&T disassembly flavor
4400@item set disassembly-flavor @var{instruction-set}
c906108c
SS
4401Select the instruction set to use when disassembling the
4402program via the @code{disassemble} or @code{x/i} commands.
4403
4404Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
4405can set @var{instruction-set} to either @code{intel} or @code{att}.
4406The default is @code{att}, the AT&T flavor used by default by Unix
4407assemblers for x86-based targets.
c906108c
SS
4408@end table
4409
4410
6d2ebf8b 4411@node Data
c906108c
SS
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.
4421The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
4422command (abbreviated @code{p}), or its synonym @code{inspect}. It
4423evaluates and prints the value of an expression of the language your
4424program is written in (@pxref{Languages, ,Using @value{GDBN} with
4425Different Languages}).
c906108c
SS
4426
4427@table @code
d4f3574e
SS
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
4431value of @var{expr} is printed in a format appropriate to its data type;
c906108c 4432you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 4433@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
c906108c
SS
4434formats}.
4435
4436@item print
4437@itemx print /@var{f}
d4f3574e 4438If you omit @var{expr}, @value{GDBN} displays the last value again (from the
c906108c
SS
4439@dfn{value history}; @pxref{Value History, ,Value history}). This allows you to
4440conveniently inspect the same value in an alternative format.
4441@end table
4442
4443A more low-level way of examining data is with the @code{x} command.
4444It examines data in memory at a specified address and prints it in a
4445specified format. @xref{Memory, ,Examining memory}.
4446
7a292a7a 4447If you are interested in information about types, or about how the
d4f3574e
SS
4448fields of a struct or a class are declared, use the @code{ptype @var{exp}}
4449command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 4450Table}.
c906108c
SS
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
c906108c 4463* Floating Point Hardware:: Floating point hardware
29e57380 4464* Memory Region Attributes:: Memory region attributes
c906108c
SS
4465@end menu
4466
6d2ebf8b 4467@node Expressions
c906108c
SS
4468@section Expressions
4469
4470@cindex expressions
4471@code{print} and many other @value{GDBN} commands accept an expression and
4472compute its value. Any kind of constant, variable or operator defined
4473by the programming language you are using is valid in an expression in
4474@value{GDBN}. This includes conditional expressions, function calls, casts
4475and string constants. It unfortunately does not include symbols defined
4476by preprocessor @code{#define} commands.
4477
d4f3574e
SS
4478@value{GDBN} supports array constants in expressions input by
4479the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
5d161b24 4480you can use the command @code{print @{1, 2, 3@}} to build up an array in
d4f3574e 4481memory that is @code{malloc}ed in the target program.
c906108c 4482
c906108c
SS
4483Because C is so widespread, most of the expressions shown in examples in
4484this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
4485Languages}, for information on how to use expressions in other
4486languages.
4487
4488In this section, we discuss operators that you can use in @value{GDBN}
4489expressions regardless of your programming language.
4490
4491Casts are supported in all languages, not just in C, because it is so
4492useful to cast a number into a pointer in order to examine a structure
4493at that address in memory.
4494@c FIXME: casts supported---Mod2 true?
c906108c
SS
4495
4496@value{GDBN} supports these operators, in addition to those common
4497to 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
4506function 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}
4513Refers to an object of type @var{type} stored at address @var{addr} in
4514memory. @var{addr} may be any expression whose value is an integer or
4515pointer (but parentheses are required around binary operators, just as in
4516a cast). This construct is allowed regardless of what kind of data is
4517normally supposed to reside at @var{addr}.
4518@end table
4519
6d2ebf8b 4520@node Variables
c906108c
SS
4521@section Program variables
4522
4523The most common kind of expression to use is the name of a variable
4524in your program.
4525
4526Variables 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
4531global (or file-static)
4532@end itemize
4533
5d161b24 4534@noindent or
c906108c
SS
4535
4536@itemize @bullet
4537@item
4538visible according to the scope rules of the
4539programming language from the point of execution in that frame
5d161b24 4540@end itemize
c906108c
SS
4541
4542@noindent This means that in the function
4543
4544@example
4545foo (a)
4546 int a;
4547@{
4548 bar (a);
4549 @{
4550 int b = test ();
4551 bar (b);
4552 @}
4553@}
4554@end example
4555
4556@noindent
4557you can examine and use the variable @code{a} whenever your program is
4558executing within the function @code{foo}, but you can only use or
4559examine the variable @code{b} while your program is executing inside
4560the block where @code{b} is declared.
4561
4562@cindex variable name conflict
4563There is an exception: you can refer to a variable or function whose
4564scope is a single source file even if the current execution point is not
4565in this file. But it is possible to have more than one such variable or
4566function with the same name (in different source files). If that
4567happens, referring to that name has unpredictable effects. If you wish,
4568you can specify a static variable in a particular function or file,
4569using the colon-colon notation:
4570
d4f3574e 4571@cindex colon-colon, context for variables/functions
c906108c
SS
4572@iftex
4573@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 4574@cindex @code{::}, context for variables/functions
c906108c
SS
4575@end iftex
4576@example
4577@var{file}::@var{variable}
4578@var{function}::@var{variable}
4579@end example
4580
4581@noindent
4582Here @var{file} or @var{function} is the name of the context for the
4583static @var{variable}. In the case of file names, you can use quotes to
4584make sure @value{GDBN} parses the file name as a single word---for example,
4585to 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
b37052ae 4591@cindex C@t{++} scope resolution
c906108c 4592This use of @samp{::} is very rarely in conflict with the very similar
b37052ae 4593use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
4594scope 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
c906108c
SS
4597
4598@cindex wrong values
4599@cindex variable values, wrong
4600@quotation
4601@emph{Warning:} Occasionally, a local variable may appear to have the
4602wrong value at certain points in a function---just after entry to a new
4603scope, and just before exit.
4604@end quotation
4605You may see this problem when you are stepping by machine instructions.
4606This is because, on most machines, it takes more than one instruction to
4607set up a stack frame (including local variable definitions); if you are
4608stepping by machine instructions, variables may appear to have the wrong
4609values until the stack frame is completely built. On exit, it usually
4610also takes more than one machine instruction to destroy a stack frame;
4611after you begin stepping through that group of instructions, local
4612variable definitions may be gone.
4613
4614This may also happen when the compiler does significant optimizations.
4615To be sure of always seeing accurate values, turn off all optimization
4616when compiling.
4617
d4f3574e
SS
4618@cindex ``No symbol "foo" in current context''
4619Another possible effect of compiler optimizations is to optimize
4620unused variables out of existence, or assign variables to registers (as
4621opposed to memory addresses). Depending on the support for such cases
4622offered by the debug info format used by the compiler, @value{GDBN}
4623might not be able to display values for such local variables. If that
4624happens, @value{GDBN} will print a message like this:
4625
4626@example
4627No symbol "foo" in current context.
4628@end example
4629
4630To solve such problems, either recompile without optimizations, or use a
4631different debug info format, if the compiler supports several such
b37052ae 4632formats. For example, @value{NGCC}, the @sc{gnu} C/C@t{++} compiler usually
d4f3574e
SS
4633supports the @samp{-gstabs} option. @samp{-gstabs} produces debug info
4634in a format that is superior to formats such as COFF. You may be able
96c405b3 4635to use DWARF2 (@samp{-gdwarf-2}), which is also an effective form for
d4f3574e
SS
4636debug info. See @ref{Debugging Options,,Options for Debugging Your
4637Program or @sc{gnu} CC, gcc.info, Using @sc{gnu} CC}, for more
4638information.
4639
4640
6d2ebf8b 4641@node Arrays
c906108c
SS
4642@section Artificial arrays
4643
4644@cindex artificial array
41afff9a 4645@kindex @@@r{, referencing memory as an array}
c906108c
SS
4646It is often useful to print out several successive objects of the
4647same type in memory; a section of an array, or an array of
4648dynamically determined size for which only a pointer exists in the
4649program.
4650
4651You can do this by referring to a contiguous span of memory as an
4652@dfn{artificial array}, using the binary operator @samp{@@}. The left
4653operand of @samp{@@} should be the first element of the desired array
4654and be an individual object. The right operand should be the desired length
4655of the array. The result is an array value whose elements are all of
4656the type of the left argument. The first element is actually the left
4657argument; the second element comes from bytes of memory immediately
4658following those that hold the first element, and so on. Here is an
4659example. If a program says
4660
4661@example
4662int *array = (int *) malloc (len * sizeof (int));
4663@end example
4664
4665@noindent
4666you can print the contents of @code{array} with
4667
4668@example
4669p *array@@len
4670@end example
4671
4672The left operand of @samp{@@} must reside in memory. Array values made
4673with @samp{@@} in this way behave just like other arrays in terms of
4674subscripting, and are coerced to pointers when used in expressions.
4675Artificial arrays most often appear in expressions via the value history
4676(@pxref{Value History, ,Value history}), after printing one out.
4677
4678Another way to create an artificial array is to use a cast.
4679This re-interprets a value as if it were an array.
4680The value need not be in memory:
4681@example
4682(@value{GDBP}) p/x (short[2])0x12345678
4683$1 = @{0x1234, 0x5678@}
4684@end example
4685
4686As a convenience, if you leave the array length out (as in
c3f6f71d 4687@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c
SS
4688the 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
4694Sometimes the artificial array mechanism is not quite enough; in
4695moderately complex data structures, the elements of interest may not
4696actually be adjacent---for example, if you are interested in the values
4697of pointers in an array. One useful work-around in this situation is
4698to use a convenience variable (@pxref{Convenience Vars, ,Convenience
4699variables}) as a counter in an expression that prints the first
4700interesting value, and then repeat that expression via @key{RET}. For
4701instance, suppose you have an array @code{dtab} of pointers to
4702structures, and you are interested in the values of a field @code{fv}
4703in each structure. Here is an example of what you might type:
4704
4705@example
4706set $i = 0
4707p dtab[$i++]->fv
4708@key{RET}
4709@key{RET}
4710@dots{}
4711@end example
4712
6d2ebf8b 4713@node Output Formats
c906108c
SS
4714@section Output formats
4715
4716@cindex formatted output
4717@cindex output formats
4718By default, @value{GDBN} prints a value according to its data type. Sometimes
4719this is not what you want. For example, you might want to print a number
4720in hex, or a pointer in decimal. Or you might want to view data in memory
4721at a certain address as a character string or as an instruction. To do
4722these things, specify an @dfn{output format} when you print a value.
4723
4724The simplest use of output formats is to say how to print a value
4725already computed. This is done by starting the arguments of the
4726@code{print} command with a slash and a format letter. The format
4727letters supported are:
4728
4729@table @code
4730@item x
4731Regard the bits of the value as an integer, and print the integer in
4732hexadecimal.
4733
4734@item d
4735Print as integer in signed decimal.
4736
4737@item u
4738Print as integer in unsigned decimal.
4739
4740@item o
4741Print as integer in octal.
4742
4743@item t
4744Print as integer in binary. The letter @samp{t} stands for ``two''.
4745@footnote{@samp{b} cannot be used because these format letters are also
4746used with the @code{x} command, where @samp{b} stands for ``byte'';
d4f3574e 4747see @ref{Memory,,Examining memory}.}
c906108c
SS
4748
4749@item a
4750@cindex unknown address, locating
3d67e040 4751@cindex locate address
c906108c
SS
4752Print as an address, both absolute in hexadecimal and as an offset from
4753the nearest preceding symbol. You can use this format used to discover
4754where (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
3d67e040
EZ
4761@noindent
4762The command @code{info symbol 0x54320} yields similar results.
4763@xref{Symbols, info symbol}.
4764
c906108c
SS
4765@item c
4766Regard as an integer and print it as a character constant.
4767
4768@item f
4769Regard the bits of the value as a floating point number and print
4770using typical floating point syntax.
4771@end table
4772
4773For example, to print the program counter in hex (@pxref{Registers}), type
4774
4775@example
4776p/x $pc
4777@end example
4778
4779@noindent
4780Note that no space is required before the slash; this is because command
4781names in @value{GDBN} cannot contain a slash.
4782
4783To reprint the last value in the value history with a different format,
4784you can use the @code{print} command with just a format and no
4785expression. For example, @samp{p/x} reprints the last value in hex.
4786
6d2ebf8b 4787@node Memory
c906108c
SS
4788@section Examining memory
4789
4790You can use the command @code{x} (for ``examine'') to examine memory in
4791any of several formats, independently of your program's data types.
4792
4793@cindex examining memory
4794@table @code
41afff9a 4795@kindex x @r{(examine memory)}
c906108c
SS
4796@item x/@var{nfu} @var{addr}
4797@itemx x @var{addr}
4798@itemx x
4799Use 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
4803much memory to display and how to format it; @var{addr} is an
4804expression giving the address where you want to start displaying memory.
4805If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
4806Several commands set convenient defaults for @var{addr}.
4807
4808@table @r
4809@item @var{n}, the repeat count
4810The repeat count is a decimal integer; the default is 1. It specifies
4811how 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
4816The display format is one of the formats used by @code{print},
4817@samp{s} (null-terminated string), or @samp{i} (machine instruction).
4818The default is @samp{x} (hexadecimal) initially.
4819The default changes each time you use either @code{x} or @code{print}.
4820
4821@item @var{u}, the unit size
4822The unit size is any of
4823
4824@table @code
4825@item b
4826Bytes.
4827@item h
4828Halfwords (two bytes).
4829@item w
4830Words (four bytes). This is the initial default.
4831@item g
4832Giant words (eight bytes).
4833@end table
4834
4835Each time you specify a unit size with @code{x}, that size becomes the
4836default 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
4841memory. The expression need not have a pointer value (though it may);
4842it 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
4845other commands also set the default address: @code{info breakpoints} (to
4846the address of the last breakpoint listed), @code{info line} (to the
4847starting address of a line), and @code{print} (if you use it to display
4848a value from memory).
4849@end table
4850
4851For example, @samp{x/3uh 0x54320} is a request to display three halfwords
4852(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
4853starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
4854words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 4855@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
4856
4857Since the letters indicating unit sizes are all distinct from the
4858letters specifying output formats, you do not have to remember whether
4859unit size or format comes first; either order works. The output
4860specifications @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
4863Even though the unit size @var{u} is ignored for the formats @samp{s}
4864and @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,
4866including any operands. The command @code{disassemble} gives an
d4f3574e 4867alternative way of inspecting machine instructions; see @ref{Machine
c906108c
SS
4868Code,,Source and machine code}.
4869
4870All the defaults for the arguments to @code{x} are designed to make it
4871easy to continue scanning memory with minimal specifications each time
4872you use @code{x}. For example, after you have inspected three machine
4873instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
4874with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
4875the repeat count @var{n} is used again; the other arguments default as
4876for successive uses of @code{x}.
4877
4878@cindex @code{$_}, @code{$__}, and value history
4879The addresses and contents printed by the @code{x} command are not saved
4880in the value history because there is often too much of them and they
4881would get in the way. Instead, @value{GDBN} makes these values available for
4882subsequent use in expressions as values of the convenience variables
4883@code{$_} and @code{$__}. After an @code{x} command, the last address
4884examined is available for use in expressions in the convenience variable
4885@code{$_}. The contents of that address, as examined, are available in
4886the convenience variable @code{$__}.
4887
4888If the @code{x} command has a repeat count, the address and contents saved
4889are from the last memory unit printed; this is not the same as the last
4890address printed if several units were printed on the last line of output.
4891
6d2ebf8b 4892@node Auto Display
c906108c
SS
4893@section Automatic display
4894@cindex automatic display
4895@cindex display of expressions
4896
4897If 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
4899display list} so that @value{GDBN} prints its value each time your program stops.
4900Each expression added to the list is given a number to identify it;
4901to remove an expression from the list, you specify that number.
4902The automatic display looks like this:
4903
4904@example
49052: foo = 38
49063: bar[5] = (struct hack *) 0x3804
4907@end example
4908
4909@noindent
4910This display shows item numbers, expressions and their current values. As with
4911displays you request manually using @code{x} or @code{print}, you can
4912specify the output format you prefer; in fact, @code{display} decides
4913whether to use @code{print} or @code{x} depending on how elaborate your
4914format specification is---it uses @code{x} if you specify a unit size,
4915or one of the two formats (@samp{i} and @samp{s}) that are only
4916supported by @code{x}; otherwise it uses @code{print}.
4917
4918@table @code
4919@kindex display
d4f3574e
SS
4920@item display @var{expr}
4921Add the expression @var{expr} to the list of expressions to display
c906108c
SS
4922each time your program stops. @xref{Expressions, ,Expressions}.
4923
4924@code{display} does not repeat if you press @key{RET} again after using it.
4925
d4f3574e 4926@item display/@var{fmt} @var{expr}
c906108c 4927For @var{fmt} specifying only a display format and not a size or
d4f3574e 4928count, add the expression @var{expr} to the auto-display list but
c906108c
SS
4929arrange 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}
4933For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
4934number of units, add the expression @var{addr} as a memory address to
4935be examined each time your program stops. Examining means in effect
4936doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining memory}.
4937@end table
4938
4939For example, @samp{display/i $pc} can be helpful, to see the machine
4940instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 4941is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
4942
4943@table @code
4944@kindex delete display
4945@kindex undisplay
4946@item undisplay @var{dnums}@dots{}
4947@itemx delete display @var{dnums}@dots{}
4948Remove 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{}
4955Disable the display of item numbers @var{dnums}. A disabled display
4956item is not printed automatically, but is not forgotten. It may be
4957enabled again later.
4958
4959@kindex enable display
4960@item enable display @var{dnums}@dots{}
4961Enable display of item numbers @var{dnums}. It becomes effective once
4962again in auto display of its expression, until you specify otherwise.
4963
4964@item display
4965Display the current values of the expressions on the list, just as is
4966done when your program stops.
4967
4968@kindex info display
4969@item info display
4970Print the list of expressions previously set up to display
4971automatically, each one with its item number, but without showing the
4972values. This includes disabled expressions, which are marked as such.
4973It also includes expressions which would not be displayed right now
4974because they refer to automatic variables not currently available.
4975@end table
4976
4977If a display expression refers to local variables, then it does not make
4978sense outside the lexical context for which it was set up. Such an
4979expression is disabled when execution enters a context where one of its
4980variables 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
4983continues to stop inside that function. When it stops elsewhere---where
4984there is no variable @code{last_char}---the display is disabled
4985automatically. The next time your program stops where @code{last_char}
4986is meaningful, you can enable the display expression once again.
4987
6d2ebf8b 4988@node Print Settings
c906108c
SS
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,
4994and symbols are printed.
4995
4996@noindent
4997These 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
5004traces, structure values, pointer values, breakpoints, and so forth,
5005even when it also displays the contents of those addresses. The default
5006is @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
5014530 if (lquote != def_lquote)
5015@end group
5016@end smallexample
5017
5018@item set print address off
5019Do not print addresses when displaying their contents. For example,
5020this 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
5027530 if (lquote != def_lquote)
5028@end group
5029@end smallexample
5030
5031You can use @samp{set print address off} to eliminate all machine
5032dependent displays from the @value{GDBN} interface. For example, with
5033@code{print address off}, you should get the same text for backtraces on
5034all machines---whether or not they involve pointer arguments.
5035
5036@kindex show print address
5037@item show print address
5038Show whether or not addresses are to be printed.
5039@end table
5040
5041When @value{GDBN} prints a symbolic address, it normally prints the
5042closest earlier symbol plus an offset. If that symbol does not uniquely
5043identify the address (for example, it is a name whose scope is a single
5044source file), you may need to clarify. One way to do this is with
5045@code{info line}, for example @samp{info line *0x4537}. Alternately,
5046you can set @value{GDBN} to print the source file and line number when
5047it prints a symbolic address:
5048
5049@table @code
5050@kindex set print symbol-filename
5051@item set print symbol-filename on
5052Tell @value{GDBN} to print the source file name and line number of a
5053symbol in the symbolic form of an address.
5054
5055@item set print symbol-filename off
5056Do not print source file name and line number of a symbol. This is the
5057default.
5058
5059@kindex show print symbol-filename
5060@item show print symbol-filename
5061Show whether or not @value{GDBN} will print the source file name and
5062line number of a symbol in the symbolic form of an address.
5063@end table
5064
5065Another situation where it is helpful to show symbol filenames and line
5066numbers is when disassembling code; @value{GDBN} shows you the line
5067number and source file that corresponds to each instruction.
5068
5069Also, you may wish to see the symbolic form only if the address being
5070printed 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}
5075Tell @value{GDBN} to only display the symbolic form of an address if the
5076offset between the closest earlier symbol and the address is less than
5d161b24 5077@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
5078to 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
5082Ask how large the maximum offset is that @value{GDBN} prints in a
5083symbolic address.
5084@end table
5085
5086@cindex wild pointer, interpreting
5087@cindex pointer, finding referent
5088If 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
5090and source file location of the variable where it points, using
5091@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
5092For example, here @value{GDBN} shows that a variable @code{ptt} points
5093at 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}
5103does not show the symbol name and filename of the referent, even with
5104the appropriate @code{set print} options turned on.
5105@end quotation
5106
5107Other 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
5113Pretty print arrays. This format is more convenient to read,
5114but uses more space. The default is off.
5115
5116@item set print array off
5117Return to compressed format for arrays.
5118
5119@kindex show print array
5120@item show print array
5121Show whether compressed or pretty format is selected for displaying
5122arrays.
5123
5124@kindex set print elements
5125@item set print elements @var{number-of-elements}
5126Set a limit on how many elements of an array @value{GDBN} will print.
5127If @value{GDBN} is printing a large array, it stops printing after it has
5128printed the number of elements set by the @code{set print elements} command.
5129This limit also applies to the display of strings.
d4f3574e 5130When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
5131Setting @var{number-of-elements} to zero means that the printing is unlimited.
5132
5133@kindex show print elements
5134@item show print elements
5135Display the number of elements of a large array that @value{GDBN} will print.
5136If the number is 0, then the printing is unlimited.
5137
5138@kindex set print null-stop
5139@item set print null-stop
5140Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 5141@sc{null} is encountered. This is useful when large arrays actually
c906108c 5142contain only short strings.
d4f3574e 5143The default is off.
c906108c
SS
5144
5145@kindex set print pretty
5146@item set print pretty on
5d161b24 5147Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
5148per 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
5164Cause @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@}, \
5169meat = 0x54 "Pork"@}
5170@end group
5171@end smallexample
5172
5173@noindent
5174This is the default format.
5175
5176@kindex show print pretty
5177@item show print pretty
5178Show which format @value{GDBN} is using to print structures.
5179
5180@kindex set print sevenbit-strings
5181@item set print sevenbit-strings on
5182Print using only seven-bit characters; if this option is set,
5183@value{GDBN} displays any eight-bit characters (in strings or
5184character values) using the notation @code{\}@var{nnn}. This setting is
5185best if you are working in English (@sc{ascii}) and you use the
5186high-order bit of characters as a marker or ``meta'' bit.
5187
5188@item set print sevenbit-strings off
5189Print full eight-bit characters. This allows the use of more
5190international character sets, and is the default.
5191
5192@kindex show print sevenbit-strings
5193@item show print sevenbit-strings
5194Show whether or not @value{GDBN} is printing only seven-bit characters.
5195
5196@kindex set print union
5197@item set print union on
5d161b24 5198Tell @value{GDBN} to print unions which are contained in structures. This
c906108c
SS
5199is the default setting.
5200
5201@item set print union off
5202Tell @value{GDBN} not to print unions which are contained in structures.
5203
5204@kindex show print union
5205@item show print union
5206Ask @value{GDBN} whether or not it will print unions which are contained in
5207structures.
5208
5209For example, given the declarations
5210
5211@smallexample
5212typedef enum @{Tree, Bug@} Species;
5213typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 5214typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
5215 Bug_forms;
5216
5217struct thing @{
5218 Species it;
5219 union @{
5220 Tree_forms tree;
5221 Bug_forms bug;
5222 @} form;
5223@};
5224
5225struct thing foo = @{Tree, @{Acorn@}@};
5226@end smallexample
5227
5228@noindent
5229with @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
5236and 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
c906108c
SS
5243@need 1000
5244@noindent
b37052ae 5245These settings are of interest when debugging C@t{++} programs:
c906108c
SS
5246
5247@table @code
5248@cindex demangling
5249@kindex set print demangle
5250@item set print demangle
5251@itemx set print demangle on
b37052ae 5252Print C@t{++} names in their source form rather than in the encoded
c906108c 5253(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 5254linkage. The default is on.
c906108c
SS
5255
5256@kindex show print demangle
5257@item show print demangle
b37052ae 5258Show whether C@t{++} names are printed in mangled or demangled form.
c906108c
SS
5259
5260@kindex set print asm-demangle
5261@item set print asm-demangle
5262@itemx set print asm-demangle on
b37052ae 5263Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
5264in assembler code printouts such as instruction disassemblies.
5265The default is off.
5266
5267@kindex show print asm-demangle
5268@item show print asm-demangle
b37052ae 5269Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
5270or demangled form.
5271
5272@kindex set demangle-style
b37052ae
EZ
5273@cindex C@t{++} symbol decoding style
5274@cindex symbol decoding style, C@t{++}
c906108c
SS
5275@item set demangle-style @var{style}
5276Choose among several encoding schemes used by different compilers to
b37052ae 5277represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
5278
5279@table @code
5280@item auto
5281Allow @value{GDBN} to choose a decoding style by inspecting your program.
5282
5283@item gnu
b37052ae 5284Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c 5285This is the default.
c906108c
SS
5286
5287@item hp
b37052ae 5288Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
5289
5290@item lucid
b37052ae 5291Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
5292
5293@item arm
b37052ae 5294Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
5295@strong{Warning:} this setting alone is not sufficient to allow
5296debugging @code{cfront}-generated executables. @value{GDBN} would
5297require further enhancement to permit that.
5298
5299@end table
5300If you omit @var{style}, you will see a list of possible formats.
5301
5302@kindex show demangle-style
5303@item show demangle-style
b37052ae 5304Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c
SS
5305
5306@kindex set print object
5307@item set print object
5308@itemx set print object on
5309When displaying a pointer to an object, identify the @emph{actual}
5310(derived) type of the object rather than the @emph{declared} type, using
5311the virtual function table.
5312
5313@item set print object off
5314Display only the declared type of objects, without reference to the
5315virtual function table. This is the default setting.
5316
5317@kindex show print object
5318@item show print object
5319Show 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
b37052ae 5324Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
5325
5326@item set print static-members off
b37052ae 5327Do not print static members when displaying a C@t{++} object.
c906108c
SS
5328
5329@kindex show print static-members
5330@item show print static-members
b37052ae 5331Show whether C@t{++} static members are printed, or not.
c906108c
SS
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
b37052ae 5337Pretty print C@t{++} virtual function tables. The default is off.
c906108c 5338(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 5339ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
5340
5341@item set print vtbl off
b37052ae 5342Do not pretty print C@t{++} virtual function tables.
c906108c
SS
5343
5344@kindex show print vtbl
5345@item show print vtbl
b37052ae 5346Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 5347@end table
c906108c 5348
6d2ebf8b 5349@node Value History
c906108c
SS
5350@section Value history
5351
5352@cindex value history
5d161b24
DB
5353Values 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.
5355Values are kept until the symbol table is re-read or discarded
5356(for example with the @code{file} or @code{symbol-file} commands).
5357When the symbol table changes, the value history is discarded,
5358since the values may contain pointers back to the types defined in the
c906108c
SS
5359symbol table.
5360
5361@cindex @code{$}
5362@cindex @code{$$}
5363@cindex history number
5364The values printed are given @dfn{history numbers} by which you can
5365refer to them. These are successive integers starting with one.
5366@code{print} shows you the history number assigned to a value by
5367printing @samp{$@var{num} = } before the value; here @var{num} is the
5368history number.
5369
5370To refer to any previous value, use @samp{$} followed by the value's
5371history number. The way @code{print} labels its output is designed to
5372remind you of this. Just @code{$} refers to the most recent value in
5373the 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}
5375is the value just prior to @code{$$}, @code{$$1} is equivalent to
5376@code{$$}, and @code{$$0} is equivalent to @code{$}.
5377
5378For example, suppose you have just printed a pointer to a structure and
5379want to see the contents of the structure. It suffices to type
5380
5381@example
5382p *$
5383@end example
5384
5385If you have a chain of structures where the component @code{next} points
5386to the next one, you can print the contents of the next one with this:
5387
5388@example
5389p *$.next
5390@end example
5391
5392@noindent
5393You can print successive links in the chain by repeating this
5394command---which you can do by just typing @key{RET}.
5395
5396Note that the history records values, not expressions. If the value of
5397@code{x} is 4 and you type these commands:
5398
5399@example
5400print x
5401set x=5
5402@end example
5403
5404@noindent
5405then the value recorded in the value history by the @code{print} command
5406remains 4 even though the value of @code{x} has changed.
5407
5408@table @code
5409@kindex show values
5410@item show values
5411Print the last ten values in the value history, with their item numbers.
5412This is like @samp{p@ $$9} repeated ten times, except that @code{show
5413values} does not change the history.
5414
5415@item show values @var{n}
5416Print ten history values centered on history item number @var{n}.
5417
5418@item show values +
5419Print ten history values just after the values last printed. If no more
5420values are available, @code{show values +} produces no display.
5421@end table
5422
5423Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
5424same effect as @samp{show values +}.
5425
6d2ebf8b 5426@node Convenience Vars
c906108c
SS
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
5432exist entirely within @value{GDBN}; they are not part of your program, and
5433setting a convenience variable has no direct effect on further execution
5434of your program. That is why you can use them freely.
5435
5436Convenience variables are prefixed with @samp{$}. Any name preceded by
5437@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 5438the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c
SS
5439(Value history references, in contrast, are @emph{numbers} preceded
5440by @samp{$}. @xref{Value History, ,Value history}.)
5441
5442You can save a value in a convenience variable with an assignment
5443expression, just as you would set a variable in your program.
5444For example:
5445
5446@example
5447set $foo = *object_ptr
5448@end example
5449
5450@noindent
5451would save in @code{$foo} the value contained in the object pointed to by
5452@code{object_ptr}.
5453
5454Using a convenience variable for the first time creates it, but its
5455value is @code{void} until you assign a new value. You can alter the
5456value with another assignment at any time.
5457
5458Convenience variables have no fixed types. You can assign a convenience
5459variable any type of value, including structures and arrays, even if
5460that variable already has a value of a different type. The convenience
5461variable, when used as an expression, has the type of its current value.
5462
5463@table @code
5464@kindex show convenience
5465@item show convenience
5466Print a list of convenience variables used so far, and their values.
d4f3574e 5467Abbreviated @code{show conv}.
c906108c
SS
5468@end table
5469
5470One of the ways to use a convenience variable is as a counter to be
5471incremented or a pointer to be advanced. For example, to print
5472a field from successive elements of an array of structures:
5473
5474@example
5475set $i = 0
5476print bar[$i++]->contents
5477@end example
5478
d4f3574e
SS
5479@noindent
5480Repeat that command by typing @key{RET}.
c906108c
SS
5481
5482Some convenience variables are created automatically by @value{GDBN} and given
5483values likely to be useful.
5484
5485@table @code
41afff9a 5486@vindex $_@r{, convenience variable}
c906108c
SS
5487@item $_
5488The variable @code{$_} is automatically set by the @code{x} command to
5489the last address examined (@pxref{Memory, ,Examining memory}). Other
5490commands which provide a default address for @code{x} to examine also
5491set @code{$_} to that address; these commands include @code{info line}
5492and @code{info breakpoint}. The type of @code{$_} is @code{void *}
5493except when set by the @code{x} command, in which case it is a pointer
5494to the type of @code{$__}.
5495
41afff9a 5496@vindex $__@r{, convenience variable}
c906108c
SS
5497@item $__
5498The variable @code{$__} is automatically set by the @code{x} command
5499to the value found in the last address examined. Its type is chosen
5500to match the format in which the data was printed.
5501
5502@item $_exitcode
41afff9a 5503@vindex $_exitcode@r{, convenience variable}
c906108c
SS
5504The variable @code{$_exitcode} is automatically set to the exit code when
5505the program being debugged terminates.
5506@end table
5507
53a5351d
JM
5508On HP-UX systems, if you refer to a function or variable name that
5509begins with a dollar sign, @value{GDBN} searches for a user or system
5510name first, before it searches for a convenience variable.
c906108c 5511
6d2ebf8b 5512@node Registers
c906108c
SS
5513@section Registers
5514
5515@cindex registers
5516You can refer to machine register contents, in expressions, as variables
5517with names starting with @samp{$}. The names of registers are different
5518for each machine; use @code{info registers} to see the names used on
5519your machine.
5520
5521@table @code
5522@kindex info registers
5523@item info registers
5524Print the names and values of all registers except floating-point
5525registers (in the selected stack frame).
5526
5527@kindex info all-registers
5528@cindex floating point registers
5529@item info all-registers
5530Print the names and values of all registers, including floating-point
5531registers.
5532
5533@item info registers @var{regname} @dots{}
5534Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
5535As discussed in detail below, register values are normally relative to
5536the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
5537the 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
5541expressions) on most machines---whenever they do not conflict with an
5542architecture's canonical mnemonics for registers. The register names
5543@code{$pc} and @code{$sp} are used for the program counter register and
5544the stack pointer. @code{$fp} is used for a register that contains a
5545pointer to the current stack frame, and @code{$ps} is used for a
5546register that contains the processor status. For example,
5547you could print the program counter in hex with
5548
5549@example
5550p/x $pc
5551@end example
5552
5553@noindent
5554or print the instruction to be executed next with
5555
5556@example
5557x/i $pc
5558@end example
5559
5560@noindent
5561or add four to the stack pointer@footnote{This is a way of removing
5562one word from the stack, on machines where stacks grow downward in
5563memory (most machines, nowadays). This assumes that the innermost
5564stack frame is selected; setting @code{$sp} is not allowed when other
5565stack frames are selected. To pop entire frames off the stack,
5566regardless of machine architecture, use @code{return};
d4f3574e 5567see @ref{Returning, ,Returning from a function}.} with
c906108c
SS
5568
5569@example
5570set $sp += 4
5571@end example
5572
5573Whenever possible, these four standard register names are available on
5574your machine even though the machine has different canonical mnemonics,
5575so long as there is no conflict. The @code{info registers} command
5576shows the canonical names. For example, on the SPARC, @code{info
5577registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
5578can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
5579is an alias for the @sc{eflags} register.
c906108c
SS
5580
5581@value{GDBN} always considers the contents of an ordinary register as an
5582integer when the register is examined in this way. Some machines have
5583special registers which can hold nothing but floating point; these
5584registers are considered to have floating point values. There is no way
5585to 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
5589Some registers have distinct ``raw'' and ``virtual'' data formats. This
5590means that the data format in which the register contents are saved by
5591the operating system is not the same one that your program normally
5592sees. For example, the registers of the 68881 floating point
5593coprocessor are always saved in ``extended'' (raw) format, but all C
5594programs expect to work with ``double'' (virtual) format. In such
5d161b24 5595cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
5596that makes sense for your program), but the @code{info registers} command
5597prints the data in both formats.
5598
5599Normally, register values are relative to the selected stack frame
5600(@pxref{Selection, ,Selecting a frame}). This means that you get the
5601value that the register would contain if all stack frames farther in
5602were exited and their saved registers restored. In order to see the
5603true contents of hardware registers, you must select the innermost
5604frame (with @samp{frame 0}).
5605
5606However, @value{GDBN} must deduce where registers are saved, from the machine
5607code 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
5609frame makes no difference.
5610
6d2ebf8b 5611@node Floating Point Hardware
c906108c
SS
5612@section Floating point hardware
5613@cindex floating point
5614
5615Depending on the configuration, @value{GDBN} may be able to give
5616you more information about the status of the floating point hardware.
5617
5618@table @code
5619@kindex info float
5620@item info float
5621Display hardware-dependent information about the floating
5622point unit. The exact contents and layout vary depending on the
5623floating point chip. Currently, @samp{info float} is supported on
5624the ARM and x86 machines.
5625@end table
c906108c 5626
29e57380
C
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
5632required by regions of your target's memory. @value{GDBN} uses attributes
5633to determine whether to allow certain types of memory accesses; whether to
5634use specific width accesses; and whether to cache target memory.
5635
5636Defined memory regions can be individually enabled and disabled. When a
5637memory region is disabled, @value{GDBN} uses the default attributes when
5638accessing memory in that region. Similarly, if no memory regions have
5639been defined, @value{GDBN} uses the default attributes when accessing
5640all memory.
5641
5642When a memory region is defined, it is given a number to identify it;
5643to 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{}
5648Define memory region bounded by @var{address1} and @var{address2}
5649with attributes @var{attributes}@dots{}.
5650
5651@kindex delete mem
5652@item delete mem @var{nums}@dots{}
5653Remove memory region numbers @var{nums}.
5654
5655@kindex disable mem
5656@item disable mem @var{nums}@dots{}
5657Disable memory region numbers @var{nums}.
5658A disabled memory region is not forgotten.
5659It may be enabled again later.
5660
5661@kindex enable mem
5662@item enable mem @var{nums}@dots{}
5663Enable memory region numbers @var{nums}.
5664
5665@kindex info mem
5666@item info mem
5667Print a table of all defined memory regions, with the following columns
5668for each region.
5669
5670@table @emph
5671@item Memory Region Number
5672@item Enabled or Disabled.
5673Enabled memory regions are marked with @samp{y}.
5674Disabled memory regions are marked with @samp{n}.
5675
5676@item Lo Address
5677The address defining the inclusive lower bound of the memory region.
5678
5679@item Hi Address
5680The address defining the exclusive upper bound of the memory region.
5681
5682@item Attributes
5683The 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
5691The access mode attributes set whether @value{GDBN} may make read or
5692write accesses to a memory region.
5693
5694While these attributes prevent @value{GDBN} from performing invalid
5695memory accesses, they do nothing to prevent the target system, I/O DMA,
5696etc. from accessing memory.
5697
5698@table @code
5699@item ro
5700Memory is read only.
5701@item wo
5702Memory is write only.
5703@item rw
5704Memory is read/write (default).
5705@end table
5706
5707@subsubsection Memory Access Size
5708The acccess size attributes tells @value{GDBN} to use specific sized
5709accesses in the memory region. Often memory mapped device registers
5710require specific sized accesses. If no access size attribute is
5711specified, @value{GDBN} may use accesses of any size.
5712
5713@table @code
5714@item 8
5715Use 8 bit memory accesses.
5716@item 16
5717Use 16 bit memory accesses.
5718@item 32
5719Use 32 bit memory accesses.
5720@item 64
5721Use 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
5736The data cache attributes set whether @value{GDBN} will cache target
5737memory. While this generally improves performance by reducing debug
5738protocol overhead, it can lead to incorrect results because @value{GDBN}
5739does not know about volatile variables or memory mapped device
5740registers.
5741
5742@table @code
5743@item cache
5744Enable @value{GDBN} to cache target memory.
5745@item nocache (default)
5746Disable @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
b37052ae
EZ
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
5764In some applications, it is not feasible for the debugger to interrupt
5765the program's execution long enough for the developer to learn
5766anything helpful about its behavior. If the program's correctness
5767depends on its real-time behavior, delays introduced by a debugger
5768might cause the program to change its behavior drastically, or perhaps
5769fail, even when the code itself is correct. It is useful to be able
5770to observe the program's behavior without interrupting it.
5771
5772Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
5773specify locations in the program, called @dfn{tracepoints}, and
5774arbitrary expressions to evaluate when those tracepoints are reached.
5775Later, using the @code{tfind} command, you can examine the values
5776those expressions had when the program hit the tracepoints. The
5777expressions may also denote objects in memory---structures or arrays,
5778for example---whose values @value{GDBN} should record; while visiting
5779a particular tracepoint, you may inspect those objects as if they were
5780in memory at that moment. However, because @value{GDBN} records these
5781values without interacting with you, it can do so quickly and
5782unobtrusively, hopefully not disturbing the program's behavior.
5783
5784The tracepoint facility is currently available only for remote
2c0069bb
EZ
5785targets. @xref{Targets}. In addition, your remote target must know how
5786to collect trace data. This functionality is implemented in the remote
5787stub; however, none of the stubs distributed with @value{GDBN} support
5788tracepoints as of this writing.
b37052ae
EZ
5789
5790This 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
5801Before running such a @dfn{trace experiment}, an arbitrary number of
5802tracepoints can be set. Like a breakpoint (@pxref{Set Breaks}), a
5803tracepoint has a number assigned to it by @value{GDBN}. Like with
5804breakpoints, tracepoint numbers are successive integers starting from
5805one. Many of the commands associated with tracepoints take the
5806tracepoint number as their argument, to identify which tracepoint to
5807work on.
5808
5809For each tracepoint, you can specify, in advance, some arbitrary set
5810of data that you want the target to collect in the trace buffer when
5811it hits that tracepoint. The collected data can include registers,
5812local variables, or global data. Later, you can use @value{GDBN}
5813commands to examine the values these data had at the time the
5814tracepoint was hit.
5815
5816This section describes commands to set tracepoints and associated
5817conditions 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
5835The @code{trace} command is very similar to the @code{break} command.
5836Its argument can be a source line, a function name, or an address in
5837the target program. @xref{Set Breaks}. The @code{trace} command
5838defines a tracepoint, which is a point in the target program where the
5839debugger will briefly stop, collect some data, and then allow the
5840program to continue. Setting a tracepoint or changing its commands
5841doesn't take effect until the next @code{tstart} command; thus, you
5842cannot change the tracepoint attributes once a trace experiment is
5843running.
5844
5845Here 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
5860You 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
5866The convenience variable @code{$tpnum} records the tracepoint number
5867of the most recently set tracepoint.
5868
5869@kindex delete tracepoint
5870@cindex tracepoint deletion
5871@item delete tracepoint @r{[}@var{num}@r{]}
5872Permanently delete one or more tracepoints. With no argument, the
5873default is to delete all tracepoints.
5874
5875Examples:
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
5884You 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{]}
5893Disable tracepoint @var{num}, or all tracepoints if no argument
5894@var{num} is given. A disabled tracepoint will have no effect during
5895the next trace experiment, but it is not forgotten. You can re-enable
5896a disabled tracepoint using the @code{enable tracepoint} command.
5897
5898@kindex enable tracepoint
5899@item enable tracepoint @r{[}@var{num}@r{]}
5900Enable tracepoint @var{num}, or all tracepoints. The enabled
5901tracepoints will become effective the next time a trace experiment is
5902run.
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{]]}
5912Set the @dfn{passcount} of a tracepoint. The passcount is a way to
5913automatically stop a trace experiment. If a tracepoint's passcount is
5914@var{n}, then the trace experiment will be automatically stopped on
5915the @var{n}'th time that tracepoint is hit. If the tracepoint number
5916@var{num} is not specified, the @code{passcount} command sets the
5917passcount of the most recently defined tracepoint. If no passcount is
5918given, the trace experiment will run until stopped explicitly by the
5919user.
5920
5921Examples:
5922
5923@smallexample
6826cf00
EZ
5924(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
5925@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
b37052ae
EZ
5926
5927(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
6826cf00 5928@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
b37052ae
EZ
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
6826cf00
EZ
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.}
b37052ae
EZ
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{]}
5948This command will prompt for a list of actions to be taken when the
5949tracepoint is hit. If the tracepoint number @var{num} is not
5950specified, this command sets the actions for the one that was most
5951recently defined (so that you can define a tracepoint and then say
5952@code{actions} without bothering about its number). You specify the
5953actions themselves on the following lines, one action at a time, and
5954terminate the actions list with a line containing just @code{end}. So
5955far, the only defined actions are @code{collect} and
5956@code{while-stepping}.
5957
5958@cindex remove actions from a tracepoint
5959To remove all actions from a tracepoint, type @samp{actions @var{num}}
5960and follow it immediately with @samp{end}.
5961
5962@smallexample
5963(@value{GDBP}) @b{collect @var{data}} // collect some data
5964
6826cf00 5965(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
b37052ae 5966
6826cf00 5967(@value{GDBP}) @b{end} // signals the end of actions.
b37052ae
EZ
5968@end smallexample
5969
5970In the following example, the action list begins with @code{collect}
5971commands indicating the things to be collected when the tracepoint is
5972hit. Then, in order to single-step and collect additional data
5973following the tracepoint, a @code{while-stepping} command is used,
5974followed 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}
5982Enter actions for tracepoint 1, one per line:
5983> collect bar,baz
5984> collect $regs
5985> while-stepping 12
5986 > collect $fp, $sp
5987 > end
5988end
5989@end smallexample
5990
5991@kindex collect @r{(tracepoints)}
5992@item collect @var{expr1}, @var{expr2}, @dots{}
5993Collect values of the given expressions when the tracepoint is hit.
5994This command accepts a comma-separated list of any valid expressions.
5995In addition to global, static, or local variables, the following
5996special arguments are supported:
5997
5998@table @code
5999@item $regs
6000collect all registers
6001
6002@item $args
6003collect all function arguments
6004
6005@item $locals
6006collect all local variables.
6007@end table
6008
6009You can give several consecutive @code{collect} commands, each one
6010with a single argument, or one @code{collect} command with several
6011arguments separated by commas: the effect is the same.
6012
f5c37c66
EZ
6013The command @code{info scope} (@pxref{Symbols, info scope}) is
6014particularly useful for figuring out what data to collect.
6015
b37052ae
EZ
6016@kindex while-stepping @r{(tracepoints)}
6017@item while-stepping @var{n}
6018Perform @var{n} single-step traces after the tracepoint, collecting
6019new data at each step. The @code{while-stepping} command is
6020followed by the list of what to collect while stepping (followed by
6021its own @code{end} command):
6022
6023@smallexample
6024> while-stepping 12
6025 > collect $regs, myglobal
6026 > end
6027>
6028@end smallexample
6029
6030@noindent
6031You 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{]}
8a037dd7 6042Display information about the tracepoint @var{num}. If you don't specify
798c8bc6 6043a tracepoint number, displays information about all the tracepoints
b37052ae
EZ
6044defined so far. For each tracepoint, the following information is
6045shown:
6046
6047@itemize @bullet
6048@item
6049its number
6050@item
6051whether it is enabled or disabled
6052@item
6053its address
6054@item
6055its passcount as given by the @code{passcount @var{n}} command
6056@item
6057its step count as given by the @code{while-stepping @var{n}} command
6058@item
6059where in the source files is the tracepoint set
6060@item
6061its action list as given by the @code{actions} command
6062@end itemize
6063
6064@smallexample
6065(@value{GDBP}) @b{info trace}
6066Num Enb Address PassC StepC What
60671 y 0x002117c4 0 0 <gdb_asm>
6826cf00
EZ
60682 y 0x0020dc64 0 0 in g_test at g_test.c:1375
60693 y 0x0020b1f4 0 0 in get_data at ../foo.c:41
b37052ae
EZ
6070(@value{GDBP})
6071@end smallexample
6072
6073@noindent
6074This 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
6085This command takes no arguments. It starts the trace experiment, and
6086begins collecting data. This has the side effect of discarding all
6087the data collected in the trace buffer during the previous trace
6088experiment.
6089
6090@kindex tstop
6091@cindex stop a running trace experiment
6092@item tstop
6093This command takes no arguments. It ends the trace experiment, and
6094stops collecting data.
6095
6096@strong{Note:} a trace experiment and data collection may stop
6097automatically 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
6104This command displays the status of the current trace data
6105collection.
6106@end table
6107
6108Here 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}
6113Enter 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
6128After the tracepoint experiment ends, you use @value{GDBN} commands
6129for examining the trace data. The basic idea is that each tracepoint
6130collects a trace @dfn{snapshot} every time it is hit and another
6131snapshot every time it single-steps. All these snapshots are
6132consecutively numbered from zero and go into a buffer, and you can
6133examine them later. The way you examine them is to @dfn{focus} on a
6134specific trace snapshot. When the remote stub is focused on a trace
6135snapshot, it will respond to all @value{GDBN} requests for memory and
6136registers by reading from the buffer which belongs to that snapshot,
6137rather than from @emph{real} memory or registers of the program being
6138debugged. This means that @strong{all} @value{GDBN} commands
6139(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
6140behave as if we were currently debugging the program state as it was
6141when the tracepoint occurred. Any requests for data that are not in
6142the 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
6156The basic command for selecting a trace snapshot from the buffer is
6157@code{tfind @var{n}}, which finds trace snapshot number @var{n},
6158counting from zero. If no argument @var{n} is given, the next
6159snapshot is selected.
6160
6161Here are the various forms of using the @code{tfind} command.
6162
6163@table @code
6164@item tfind start
6165Find 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
6169Stop debugging trace snapshots, resume @emph{live} debugging.
6170
6171@item tfind end
6172Same as @samp{tfind none}.
6173
6174@item tfind
6175No argument means find the next trace snapshot.
6176
6177@item tfind -
6178Find the previous trace snapshot before the current one. This permits
6179retracing earlier steps.
6180
6181@item tfind tracepoint @var{num}
6182Find the next snapshot associated with tracepoint @var{num}. Search
6183proceeds forward from the last examined trace snapshot. If no
6184argument @var{num} is given, it means find the next snapshot collected
6185for the same tracepoint as the current snapshot.
6186
6187@item tfind pc @var{addr}
6188Find the next snapshot associated with the value @var{addr} of the
6189program counter. Search proceeds forward from the last examined trace
6190snapshot. If no argument @var{addr} is given, it means find the next
6191snapshot with the same value of PC as the current snapshot.
6192
6193@item tfind outside @var{addr1}, @var{addr2}
6194Find the next snapshot whose PC is outside the given range of
6195addresses.
6196
6197@item tfind range @var{addr1}, @var{addr2}
6198Find 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}
6202Find the next snapshot associated with the source line @var{n}. If
6203the optional argument @var{file} is given, refer to line @var{n} in
6204that source file. Search proceeds forward from the last examined
6205trace snapshot. If no argument @var{n} is given, it means find the
6206next line other than the one currently being examined; thus saying
6207@code{tfind line} repeatedly can appear to have the same effect as
6208stepping from line to line in a @emph{live} debugging session.
6209@end table
6210
6211The default arguments for the @code{tfind} commands are specifically
6212designed to make it easy to scan through the trace buffer. For
6213instance, @code{tfind} with no argument selects the next trace
6214snapshot, and @code{tfind -} with no argument selects the previous
6215trace snapshot. So, by giving one @code{tfind} command, and then
6216simply hitting @key{RET} repeatedly you can examine all the trace
6217snapshots in order. Or, by saying @code{tfind -} and then hitting
6218@key{RET} repeatedly you can examine the snapshots in reverse order.
6219The @code{tfind line} command with no argument selects the snapshot
6220for the next source line executed. The @code{tfind pc} command with
6221no argument selects the next snapshot with the same program counter
6222(PC) as the current frame. The @code{tfind tracepoint} command with
6223no argument selects the next trace snapshot collected by the same
6224tracepoint as the current one.
6225
6226In addition to letting you scan through the trace buffer manually,
6227these commands make it easy to construct @value{GDBN} scripts that
6228scan through the trace buffer and print out whatever collected data
6229you are interested in. Thus, if we want to examine the PC, FP, and SP
6230registers 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
6240Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
6241Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
6242Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
6243Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
6244Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
6245Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
6246Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
6247Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
6248Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
6249Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
6250Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
6251@end smallexample
6252
6253Or, if we want to examine the variable @code{X} at each source line in
6254the 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
6263Frame 0, X = 1
6264Frame 7, X = 2
6265Frame 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
6274This command takes no arguments. It prints all the data collected at
6275the current trace snapshot.
6276
6277@smallexample
6278(@value{GDBP}) @b{trace 444}
6279(@value{GDBP}) @b{actions}
6280Enter 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)
6288at gdb_test.c:444
6289444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
6290
6291(@value{GDBP}) @b{tdump}
6292Data collected at tracepoint 2, trace frame 1:
6293d0 0xc4aa0085 -995491707
6294d1 0x18 24
6295d2 0x80 128
6296d3 0x33 51
6297d4 0x71aea3d 119204413
6298d5 0x22 34
6299d6 0xe0 224
6300d7 0x380035 3670069
6301a0 0x19e24a 1696330
6302a1 0x3000668 50333288
6303a2 0x100 256
6304a3 0x322000 3284992
6305a4 0x3000698 50333336
6306a5 0x1ad3cc 1758156
6307fp 0x30bf3c 0x30bf3c
6308sp 0x30bf34 0x30bf34
6309ps 0x0 0
6310pc 0x20b2c8 0x20b2c8
6311fpcontrol 0x0 0
6312fpstatus 0x0 0
6313fpiaddr 0x0 0
6314p = 0x20e5b4 "gdb-test"
6315p1 = (void *) 0x11
6316p2 = (void *) 0x22
6317p3 = (void *) 0x33
6318p4 = (void *) 0x44
6319p5 = (void *) 0x55
6320p6 = (void *) 0x66
6321gdb_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
6331This command saves all current tracepoint definitions together with
6332their actions and passcounts, into a file @file{@var{filename}}
6333suitable for use in a later debugging session. To read the saved
6334tracepoint definitions, use the @code{source} command (@pxref{Command
6335Files}).
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
6345The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
6346snapshot is selected.
6347
6348@vindex $tracepoint
6349@item (int) $tracepoint
6350The tracepoint for the current trace snapshot.
6351
6352@vindex $trace_line
6353@item (int) $trace_line
6354The line number for the current trace snapshot.
6355
6356@vindex $trace_file
6357@item (char []) $trace_file
6358The source file for the current trace snapshot.
6359
6360@vindex $trace_func
6361@item (char []) $trace_func
6362The name of the function containing @code{$tracepoint}.
6363@end table
6364
6365Note: @code{$trace_file} is not suitable for use in @code{printf},
6366use @code{output} instead.
6367
6368Here's a simple example of using these convenience variables for
6369stepping through all the trace snapshots and printing some of their
6370data.
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
df0cd8c5
JB
6382@node Overlays
6383@chapter Debugging Programs That Use Overlays
6384@cindex overlays
6385
6386If your program is too large to fit completely in your target system's
6387memory, you can sometimes use @dfn{overlays} to work around this
6388problem. @value{GDBN} provides some support for debugging programs that
6389use 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
6407Suppose you have a computer whose instruction address space is only 64
6408kilobytes long, but which has much more memory which can be accessed by
6409other means: special instructions, segment registers, or memory
6410management hardware, for example. Suppose further that you want to
6411adapt a program which is larger than 64 kilobytes to run on this system.
6412
6413One solution is to identify modules of your program which are relatively
6414independent, and need not call each other directly; call these modules
6415@dfn{overlays}. Separate the overlays from the main program, and place
6416their machine code in the larger memory. Place your main program in
6417instruction memory, but leave at least enough space there to hold the
6418largest overlay as well.
6419
6420Now, to call a function located in an overlay, you must first copy that
6421overlay's machine code from the large memory into the space set aside
6422for it in the instruction memory, and then jump to its entry point
6423there.
6424
6425@example
6426@group
6427 Data Instruction Larger
6428Address 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
6458This diagram shows a system with separate data and instruction address
6459spaces. For a system with a single address space for data and
6460instructions, the diagram would be similar, except that the program
6461variables and heap would share an address space with the main program
6462and the overlay area.
6463
6464An 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
6466instruction memory. An overlay not present (or only partially present)
6467in instruction memory is called @dfn{unmapped}; its @dfn{load address}
6468is its address in the larger memory. The mapped address is also called
6469the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
6470called the @dfn{load memory address}, or @dfn{LMA}.
6471
6472Unfortunately, overlays are not a completely transparent way to adapt a
6473program to limited instruction memory. They introduce a new set of
6474global constraints you must keep in mind as you design your program:
6475
6476@itemize @bullet
6477
6478@item
6479Before calling or returning to a function in an overlay, your program
6480must make sure that overlay is actually mapped. Otherwise, the call or
6481return will transfer control to the right address, but in the wrong
6482overlay, and your program will probably crash.
6483
6484@item
6485If the process of mapping an overlay is expensive on your system, you
6486will need to choose your overlays carefully to minimize their effect on
6487your program's performance.
6488
6489@item
6490The executable file you load onto your system must contain each
6491overlay's instructions, appearing at the overlay's load address, not its
6492mapped address. However, each overlay's instructions must be relocated
6493and its symbols defined as if the overlay were at its mapped address.
6494You can use GNU linker scripts to specify different load and relocation
6495addresses for pieces of your program; see @ref{Overlay Description,,,
6496ld.info, Using ld: the GNU linker}.
6497
6498@item
6499The procedure for loading executable files onto your system must be able
6500to load their contents into the larger address space as well as the
6501instruction and data spaces.
6502
6503@end itemize
6504
6505The overlay system described above is rather simple, and could be
6506improved in many ways:
6507
6508@itemize @bullet
6509
6510@item
6511If your system has suitable bank switch registers or memory management
6512hardware, you could use those facilities to make an overlay's load area
6513contents simply appear at their mapped address in instruction space.
6514This would probably be faster than copying the overlay to its mapped
6515area in the usual way.
6516
6517@item
6518If your overlays are small enough, you could set aside more than one
6519overlay area, and have more than one overlay mapped at a time.
6520
6521@item
6522You can use overlays to manage data, as well as instructions. In
6523general, data overlays are even less transparent to your design than
6524code overlays: whereas code overlays only require care when you call or
6525return to functions, data overlays require care every time you access
6526the data. Also, if you change the contents of a data overlay, you
6527must copy its contents back out to its load address before you can copy a
6528different data overlay into the same mapped area.
6529
6530@end itemize
6531
6532
6533@node Overlay Commands
6534@section Overlay Commands
6535
6536To use @value{GDBN}'s overlay support, each overlay in your program must
6537correspond to a separate section of the executable file. The section's
6538virtual memory address and load memory address must be the overlay's
6539mapped and load addresses. Identifying overlays with sections allows
6540@value{GDBN} to determine the appropriate address of a function or
6541variable, depending on whether the overlay is mapped or not.
6542
6543@value{GDBN}'s overlay commands all start with the word @code{overlay};
6544you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
6545
6546@table @code
6547@item overlay off
6548@kindex overlay off
6549Disable @value{GDBN}'s overlay support. When overlay support is
6550disabled, @value{GDBN} assumes that all functions and variables are
6551always present at their mapped addresses. By default, @value{GDBN}'s
6552overlay support is disabled.
6553
6554@item overlay manual
6555@kindex overlay manual
6556@cindex manual overlay debugging
6557Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
6558relies on you to tell it which overlays are mapped, and which are not,
6559using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
6560commands 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
6566Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
6567be the name of the object file section containing the overlay. When an
6568overlay is mapped, @value{GDBN} assumes it can find the overlay's
6569functions and variables at their mapped addresses. @value{GDBN} assumes
6570that 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
6577Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
6578must be the name of the object file section containing the overlay.
6579When an overlay is unmapped, @value{GDBN} assumes it can find the
6580overlay's functions and variables at their load addresses.
6581
6582@item overlay auto
6583@kindex overlay auto
6584Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
6585consults a data structure the overlay manager maintains in the inferior
6586to see which overlays are mapped. For details, see @ref{Automatic
6587Overlay Debugging}.
6588
6589@item overlay load-target
6590@itemx overlay load
6591@kindex overlay load-target
6592@cindex reloading the overlay table
6593Re-read the overlay table from the inferior. Normally, @value{GDBN}
6594re-reads the table @value{GDBN} automatically each time the inferior
6595stops, so this command should only be necessary if you have changed the
6596overlay mapping yourself using @value{GDBN}. This command is only
6597useful when using automatic overlay debugging.
6598
6599@item overlay list-overlays
6600@itemx overlay list
6601@cindex listing mapped overlays
6602Display a list of the overlays currently mapped, along with their mapped
6603addresses, load addresses, and sizes.
6604
6605@end table
6606
6607Normally, when @value{GDBN} prints a code address, it includes the name
6608of the function the address falls in:
6609
6610@example
6611(gdb) print main
6612$3 = @{int ()@} 0x11a0 <main>
6613@end example
6614@noindent
6615When overlay debugging is enabled, @value{GDBN} recognizes code in
6616unmapped overlays, and prints the names of unmapped functions with
6617asterisks around them. For example, if @code{foo} is a function in an
6618unmapped overlay, @value{GDBN} prints it this way:
6619
6620@example
6621(gdb) overlay list
6622No sections are mapped.
6623(gdb) print foo
6624$5 = @{int (int)@} 0x100000 <*foo*>
6625@end example
6626@noindent
6627When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
6628name normally:
6629
6630@example
6631(gdb) overlay list
6632Section .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
6638When overlay debugging is enabled, @value{GDBN} can find the correct
6639address for functions and variables in an overlay, whether or not the
6640overlay is mapped. This allows most @value{GDBN} commands, like
6641@code{break} and @code{disassemble}, to work normally, even on unmapped
6642code. 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
6648You 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
6652unmapped overlays. However, if you set a breakpoint at the end of your
6653overlay manager (and tell @value{GDBN} which overlays are now mapped, if
6654you are using manual overlay management), @value{GDBN} will re-set its
6655breakpoints 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
6664are not, given some simple co-operation from the overlay manager in the
6665inferior. If you enable automatic overlay debugging with the
6666@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
6667looks in the inferior's memory for certain variables describing the
6668current state of the overlays.
6669
6670Here 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}:
6676This variable must be an array of the following structures:
6677
6678@example
6679struct
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}:
6697This variable must be a four-byte signed integer, holding the total
6698number of elements in @code{_ovly_table}.
6699
6700@end table
6701
6702To decide whether a particular overlay is mapped or not, @value{GDBN}
6703looks 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
6705executable file. When @value{GDBN} finds a matching entry, it consults
6706the entry's @code{mapped} member to determine whether the overlay is
6707currently mapped.
6708
6709
6710@node Overlay Sample Program
6711@section Overlay Sample Program
6712@cindex overlay example program
6713
6714When linking a program which uses overlays, you must place the overlays
6715at their load addresses, while relocating them to run at their mapped
6716addresses. To do this, you must write a linker script (@pxref{Overlay
6717Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
6718since linker scripts are specific to a particular host system, target
6719architecture, and target memory layout, this manual cannot provide
6720portable sample code demonstrating @value{GDBN}'s overlay support.
6721
6722However, the @value{GDBN} source distribution does contain an overlaid
6723program, with linker scripts for a few systems, as part of its test
6724suite. The program consists of the following files from
6725@file{gdb/testsuite/gdb.base}:
6726
6727@table @file
6728@item overlays.c
6729The main program file.
6730@item ovlymgr.c
6731A simple overlay manager, used by @file{overlays.c}.
6732@item foo.c
6733@itemx bar.c
6734@itemx baz.c
6735@itemx grbx.c
6736Overlay modules, loaded and used by @file{overlays.c}.
6737@item d10v.ld
6738@itemx m32r.ld
6739Linker scripts for linking the test program on the @code{d10v-elf}
6740and @code{m32r-elf} targets.
6741@end table
6742
6743You can build the test program using the @code{d10v-elf} GCC
6744cross-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
6757The build process is identical for any other architecture, except that
6758you must substitute the appropriate compiler and linker script for the
6759target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
6760
6761
6d2ebf8b 6762@node Languages
c906108c
SS
6763@chapter Using @value{GDBN} with Different Languages
6764@cindex languages
6765
c906108c
SS
6766Although programming languages generally have common aspects, they are
6767rarely expressed in the same manner. For instance, in ANSI C,
6768dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
6769Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 6770represented (and displayed) differently. Hex numbers in C appear as
c906108c 6771@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
6772
6773@cindex working language
6774Language-specific information is built into @value{GDBN} for some languages,
6775allowing you to express operations like the above in your program's
6776native language, and allowing @value{GDBN} to output values in a manner
6777consistent with the syntax of your program's native language. The
6778language you use to build expressions is called the @dfn{working
6779language}.
6780
6781@menu
6782* Setting:: Switching between source languages
6783* Show:: Displaying the language
c906108c 6784* Checks:: Type and range checks
c906108c
SS
6785* Support:: Supported languages
6786@end menu
6787
6d2ebf8b 6788@node Setting
c906108c
SS
6789@section Switching between source languages
6790
6791There are two ways to control the working language---either have @value{GDBN}
6792set it automatically, or select it manually yourself. You can use the
6793@code{set language} command for either purpose. On startup, @value{GDBN}
6794defaults to setting the language automatically. The working language is
6795used to determine how expressions you type are interpreted, how values
6796are printed, etc.
6797
6798In addition to the working language, every source file that
6799@value{GDBN} knows about has its own working language. For some object
6800file formats, the compiler might indicate which language a particular
6801source file is in. However, most of the time @value{GDBN} infers the
6802language from the name of the file. The language of a source file
b37052ae 6803controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 6804show each frame appropriately for its own language. There is no way to
d4f3574e
SS
6805set the language of a source file from within @value{GDBN}, but you can
6806set the language associated with a filename extension. @xref{Show, ,
6807Displaying the language}.
c906108c
SS
6808
6809This is most commonly a problem when you use a program, such
5d161b24 6810as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
6811another language. In that case, make the
6812program 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
6814program, 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
6d2ebf8b 6822@node Filenames
c906108c
SS
6823@subsection List of filename extensions and languages
6824
6825If 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
6831C source file
6832
6833@item .C
6834@itemx .cc
6835@itemx .cp
6836@itemx .cpp
6837@itemx .cxx
6838@itemx .c++
b37052ae 6839C@t{++} source file
c906108c
SS
6840
6841@item .f
6842@itemx .F
6843Fortran source file
6844
c906108c
SS
6845@item .ch
6846@itemx .c186
6847@itemx .c286
96a2c332 6848CHILL source file
c906108c 6849
c906108c
SS
6850@item .mod
6851Modula-2 source file
c906108c
SS
6852
6853@item .s
6854@itemx .S
6855Assembler source file. This actually behaves almost like C, but
6856@value{GDBN} does not skip over function prologues when stepping.
6857@end table
6858
6859In addition, you may set the language associated with a filename
6860extension. @xref{Show, , Displaying the language}.
6861
6d2ebf8b 6862@node Manually
c906108c
SS
6863@subsection Setting the working language
6864
6865If you allow @value{GDBN} to set the language automatically,
6866expressions are interpreted the same way in your debugging session and
6867your program.
6868
6869@kindex set language
6870If you wish, you may set the language manually. To do this, issue the
6871command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 6872a language, such as
c906108c 6873@code{c} or @code{modula-2}.
c906108c
SS
6874For a list of the supported languages, type @samp{set language}.
6875
c906108c
SS
6876Setting the language manually prevents @value{GDBN} from updating the working
6877language automatically. This can lead to confusion if you try
6878to debug a program when the working language is not the same as the
6879source language, when an expression is acceptable to both
6880languages---but means different things. For instance, if the current
6881source file were written in C, and @value{GDBN} was parsing Modula-2, a
6882command such as:
6883
6884@example
6885print a = b + c
6886@end example
6887
6888@noindent
6889might 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
6891printed 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.
c906108c 6893
6d2ebf8b 6894@node Automatically
c906108c
SS
6895@subsection Having @value{GDBN} infer the source language
6896
6897To have @value{GDBN} set the working language automatically, use
6898@samp{set language local} or @samp{set language auto}. @value{GDBN}
6899then infers the working language. That is, when your program stops in a
6900frame (usually by encountering a breakpoint), @value{GDBN} sets the
6901working language to the language recorded for the function in that
6902frame. If the language for a frame is unknown (that is, if the function
6903or block corresponding to the frame was defined in a source file that
6904does not have a recognized extension), the current working language is
6905not changed, and @value{GDBN} issues a warning.
6906
6907This may not seem necessary for most programs, which are written
6908entirely in one source language. However, program modules and libraries
6909written in one source language can be used by a main program written in
6910a different source language. Using @samp{set language auto} in this
6911case frees you from having to set the working language manually.
6912
6d2ebf8b 6913@node Show
c906108c 6914@section Displaying the language
c906108c
SS
6915
6916The following commands help you find out which language is the
6917working language, and also what language source files were written in.
6918
6919@kindex show language
d4f3574e
SS
6920@kindex info frame@r{, show the source language}
6921@kindex info source@r{, show the source language}
c906108c
SS
6922@table @code
6923@item show language
6924Display the current working language. This is the
6925language you can use with commands such as @code{print} to
6926build and compute expressions that may involve variables in your program.
6927
6928@item info frame
5d161b24 6929Display the source language for this frame. This language becomes the
c906108c 6930working language if you use an identifier from this frame.
5d161b24 6931@xref{Frame Info, ,Information about a frame}, to identify the other
c906108c
SS
6932information listed here.
6933
6934@item info source
6935Display the source language of this source file.
5d161b24 6936@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
6937information listed here.
6938@end table
6939
6940In unusual circumstances, you may have source files with extensions
6941not in the standard list. You can then set the extension associated
6942with 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}
6948Set source files with extension @var{.ext} to be assumed to be in
6949the source language @var{language}.
6950
6951@item info extensions
6952List all the filename extensions and the associated languages.
6953@end table
6954
6d2ebf8b 6955@node Checks
c906108c
SS
6956@section Type and range checking
6957
6958@quotation
6959@emph{Warning:} In this release, the @value{GDBN} commands for type and range
6960checking are included, but they do not yet have any effect. This
6961section documents the intended facilities.
6962@end quotation
6963@c FIXME remove warning when type/range code added
6964
6965Some languages are designed to guard you against making seemingly common
6966errors through a series of compile- and run-time checks. These include
6967checking the type of arguments to functions and operators, and making
6968sure mathematical overflows are caught at run time. Checks such as
6969these help to ensure a program's correctness once it has been compiled
6970by eliminating type mismatches, and providing active checks for range
6971errors when your program is running.
6972
6973@value{GDBN} can check for conditions like the above if you wish.
6974Although @value{GDBN} does not check the statements in your program, it
6975can check expressions entered directly into @value{GDBN} for evaluation via
6976the @code{print} command, for example. As with the working language,
6977@value{GDBN} can also decide whether or not to check automatically based on
6978your program's source language. @xref{Support, ,Supported languages},
6979for 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
6d2ebf8b 6988@node Type Checking
c906108c
SS
6989@subsection An overview of type checking
6990
6991Some languages, such as Modula-2, are strongly typed, meaning that the
6992arguments to operators and functions have to be of the correct type,
6993otherwise an error occurs. These checks prevent type mismatch
6994errors from ever causing any run-time problems. For example,
6995
6996@smallexample
69971 + 2 @result{} 3
6998@exdent but
6999@error{} 1 + 2.3
7000@end smallexample
7001
7002The second example fails because the @code{CARDINAL} 1 is not
7003type-compatible with the @code{REAL} 2.3.
7004
5d161b24
DB
7005For the expressions you use in @value{GDBN} commands, you can tell the
7006@value{GDBN} type checker to skip checking;
7007to treat any mismatches as errors and abandon the expression;
7008or to only issue warnings when type mismatches occur,
c906108c
SS
7009but evaluate the expression anyway. When you choose the last of
7010these, @value{GDBN} evaluates expressions like the second example above, but
7011also issues a warning.
7012
5d161b24
DB
7013Even if you turn type checking off, there may be other reasons
7014related to type that prevent @value{GDBN} from evaluating an expression.
7015For instance, @value{GDBN} does not know how to add an @code{int} and
7016a @code{struct foo}. These particular type errors have nothing to do
7017with the language in use, and usually arise from expressions, such as
c906108c
SS
7018the one described above, which make little sense to evaluate anyway.
7019
7020Each language defines to what degree it is strict about type. For
7021instance, both Modula-2 and C require the arguments to arithmetical
7022operators to be numbers. In C, enumerated types and pointers can be
7023represented as numbers, so that they are valid arguments to mathematical
7024operators. @xref{Support, ,Supported languages}, for further
7025details on specific languages.
7026
7027@value{GDBN} provides some additional commands for controlling the type checker:
7028
d4f3574e 7029@kindex set check@r{, type}
c906108c
SS
7030@kindex set check type
7031@kindex show check type
7032@table @code
7033@item set check type auto
7034Set type checking on or off based on the current working language.
7035@xref{Support, ,Supported languages}, for the default settings for
7036each language.
7037
7038@item set check type on
7039@itemx set check type off
7040Set type checking on or off, overriding the default setting for the
7041current working language. Issue a warning if the setting does not
7042match the language default. If any type mismatches occur in
d4f3574e 7043evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
7044message and aborts evaluation of the expression.
7045
7046@item set check type warn
7047Cause the type checker to issue warnings, but to always attempt to
7048evaluate the expression. Evaluating the expression may still
7049be impossible for other reasons. For example, @value{GDBN} cannot add
7050numbers and structures.
7051
7052@item show type
5d161b24 7053Show the current setting of the type checker, and whether or not @value{GDBN}
c906108c
SS
7054is setting it automatically.
7055@end table
7056
7057@cindex range checking
7058@cindex checks, range
6d2ebf8b 7059@node Range Checking
c906108c
SS
7060@subsection An overview of range checking
7061
7062In some languages (such as Modula-2), it is an error to exceed the
7063bounds of a type; this is enforced with run-time checks. Such range
7064checking is meant to ensure program correctness by making sure
7065computations do not overflow, or indices on an array element access do
7066not exceed the bounds of the array.
7067
7068For expressions you use in @value{GDBN} commands, you can tell
7069@value{GDBN} to treat range errors in one of three ways: ignore them,
7070always treat them as errors and abandon the expression, or issue
7071warnings but evaluate the expression anyway.
7072
7073A range error can result from numerical overflow, from exceeding an
7074array index bound, or when you type a constant that is not a member
7075of any type. Some languages, however, do not treat overflows as an
7076error. In many implementations of C, mathematical overflow causes the
7077result to ``wrap around'' to lower values---for example, if @var{m} is
7078the largest integer value, and @var{s} is the smallest, then
7079
7080@example
7081@var{m} + 1 @result{} @var{s}
7082@end example
7083
7084This, too, is specific to individual languages, and in some cases
7085specific to individual compilers or machines. @xref{Support, ,
7086Supported languages}, for further details on specific languages.
7087
7088@value{GDBN} provides some additional commands for controlling the range checker:
7089
d4f3574e 7090@kindex set check@r{, range}
c906108c
SS
7091@kindex set check range
7092@kindex show check range
7093@table @code
7094@item set check range auto
7095Set range checking on or off based on the current working language.
7096@xref{Support, ,Supported languages}, for the default settings for
7097each language.
7098
7099@item set check range on
7100@itemx set check range off
7101Set range checking on or off, overriding the default setting for the
7102current working language. A warning is issued if the setting does not
c3f6f71d
JM
7103match the language default. If a range error occurs and range checking is on,
7104then a message is printed and evaluation of the expression is aborted.
c906108c
SS
7105
7106@item set check range warn
7107Output messages when the @value{GDBN} range checker detects a range error,
7108but attempt to evaluate the expression anyway. Evaluating the
7109expression may still be impossible for other reasons, such as accessing
7110memory that the process does not own (a typical example from many Unix
7111systems).
7112
7113@item show range
7114Show the current setting of the range checker, and whether or not it is
7115being set automatically by @value{GDBN}.
7116@end table
c906108c 7117
6d2ebf8b 7118@node Support
c906108c 7119@section Supported languages
c906108c 7120
b37052ae 7121@value{GDBN} supports C, C@t{++}, Fortran, Java, Chill, assembly, and Modula-2.
cce74817 7122@c This is false ...
c906108c
SS
7123Some @value{GDBN} features may be used in expressions regardless of the
7124language you use: the @value{GDBN} @code{@@} and @code{::} operators,
7125and the @samp{@{type@}addr} construct (@pxref{Expressions,
7126,Expressions}) can be used with the constructs of any supported
7127language.
7128
7129The following sections detail to what degree each source language is
7130supported by @value{GDBN}. These sections are not meant to be language
7131tutorials or references, but serve only as a reference guide to what the
7132@value{GDBN} expression parser accepts, and what input and output
7133formats should look like for different languages. There are many good
7134books written on each of these languages; please look to these for a
7135language reference or tutorial.
7136
c906108c 7137@menu
b37052ae 7138* C:: C and C@t{++}
cce74817 7139* Modula-2:: Modula-2
104c1213 7140* Chill:: Chill
c906108c
SS
7141@end menu
7142
6d2ebf8b 7143@node C
b37052ae 7144@subsection C and C@t{++}
7a292a7a 7145
b37052ae
EZ
7146@cindex C and C@t{++}
7147@cindex expressions in C or C@t{++}
c906108c 7148
b37052ae 7149Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
7150to both languages. Whenever this is the case, we discuss those languages
7151together.
7152
41afff9a
EZ
7153@cindex C@t{++}
7154@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
7155@cindex @sc{gnu} C@t{++}
7156The C@t{++} debugging facilities are jointly implemented by the C@t{++}
7157compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
7158effectively, you must compile your C@t{++} programs with a supported
7159C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
7160compiler (@code{aCC}).
7161
b37052ae 7162For best results when using @sc{gnu} C@t{++}, use the stabs debugging
c906108c
SS
7163format. You can select that format explicitly with the @code{g++}
7164command-line options @samp{-gstabs} or @samp{-gstabs+}. See
7165@ref{Debugging Options,,Options for Debugging Your Program or @sc{gnu}
7166CC, gcc.info, Using @sc{gnu} CC}, for more information.
c906108c 7167
c906108c 7168@menu
b37052ae
EZ
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
c906108c 7174* Debugging C:: @value{GDBN} and C
b37052ae 7175* Debugging C plus plus:: @value{GDBN} features for C@t{++}
c906108c 7176@end menu
c906108c 7177
6d2ebf8b 7178@node C Operators
b37052ae 7179@subsubsection C and C@t{++} operators
7a292a7a 7180
b37052ae 7181@cindex C and C@t{++} operators
c906108c
SS
7182
7183Operators must be defined on values of specific types. For instance,
7184@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 7185often defined on groups of types.
c906108c 7186
b37052ae 7187For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
7188
7189@itemize @bullet
53a5351d 7190
c906108c 7191@item
c906108c 7192@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 7193specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
7194
7195@item
d4f3574e
SS
7196@emph{Floating-point types} include @code{float}, @code{double}, and
7197@code{long double} (if supported by the target platform).
c906108c
SS
7198
7199@item
53a5351d 7200@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
7201
7202@item
7203@emph{Scalar types} include all of the above.
53a5351d 7204
c906108c
SS
7205@end itemize
7206
7207@noindent
7208The following operators are supported. They are listed here
7209in order of increasing precedence:
7210
7211@table @code
7212@item ,
7213The comma or sequencing operator. Expressions in a comma-separated list
7214are evaluated from left to right, with the result of the entire
7215expression being the last expression evaluated.
7216
7217@item =
7218Assignment. The value of an assignment expression is the value
7219assigned. Defined on scalar types.
7220
7221@item @var{op}=
7222Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
7223and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 7224@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
7225@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
7226@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
7227
7228@item ?:
7229The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
7230of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
7231integral type.
7232
7233@item ||
7234Logical @sc{or}. Defined on integral types.
7235
7236@item &&
7237Logical @sc{and}. Defined on integral types.
7238
7239@item |
7240Bitwise @sc{or}. Defined on integral types.
7241
7242@item ^
7243Bitwise exclusive-@sc{or}. Defined on integral types.
7244
7245@item &
7246Bitwise @sc{and}. Defined on integral types.
7247
7248@item ==@r{, }!=
7249Equality and inequality. Defined on scalar types. The value of these
7250expressions is 0 for false and non-zero for true.
7251
7252@item <@r{, }>@r{, }<=@r{, }>=
7253Less than, greater than, less than or equal, greater than or equal.
7254Defined on scalar types. The value of these expressions is 0 for false
7255and non-zero for true.
7256
7257@item <<@r{, }>>
7258left shift, and right shift. Defined on integral types.
7259
7260@item @@
7261The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
7262
7263@item +@r{, }-
7264Addition and subtraction. Defined on integral types, floating-point types and
7265pointer types.
7266
7267@item *@r{, }/@r{, }%
7268Multiplication, division, and modulus. Multiplication and division are
7269defined on integral and floating-point types. Modulus is defined on
7270integral types.
7271
7272@item ++@r{, }--
7273Increment and decrement. When appearing before a variable, the
7274operation is performed before the variable is used in an expression;
7275when appearing after it, the variable's value is used before the
7276operation takes place.
7277
7278@item *
7279Pointer dereferencing. Defined on pointer types. Same precedence as
7280@code{++}.
7281
7282@item &
7283Address operator. Defined on variables. Same precedence as @code{++}.
7284
b37052ae
EZ
7285For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
7286allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
c906108c 7287(or, if you prefer, simply @samp{&&@var{ref}}) to examine the address
b37052ae 7288where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 7289stored.
c906108c
SS
7290
7291@item -
7292Negative. Defined on integral and floating-point types. Same
7293precedence as @code{++}.
7294
7295@item !
7296Logical negation. Defined on integral types. Same precedence as
7297@code{++}.
7298
7299@item ~
7300Bitwise complement operator. Defined on integral types. Same precedence as
7301@code{++}.
7302
7303
7304@item .@r{, }->
7305Structure member, and pointer-to-structure member. For convenience,
7306@value{GDBN} regards the two as equivalent, choosing whether to dereference a
7307pointer based on the stored type information.
7308Defined on @code{struct} and @code{union} data.
7309
c906108c
SS
7310@item .*@r{, }->*
7311Dereferences of pointers to members.
c906108c
SS
7312
7313@item []
7314Array indexing. @code{@var{a}[@var{i}]} is defined as
7315@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
7316
7317@item ()
7318Function parameter list. Same precedence as @code{->}.
7319
c906108c 7320@item ::
b37052ae 7321C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 7322and @code{class} types.
c906108c
SS
7323
7324@item ::
7a292a7a
SS
7325Doubled colons also represent the @value{GDBN} scope operator
7326(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
7327above.
c906108c
SS
7328@end table
7329
c906108c
SS
7330If an operator is redefined in the user code, @value{GDBN} usually
7331attempts to invoke the redefined version instead of using the operator's
7332predefined meaning.
c906108c 7333
c906108c 7334@menu
5d161b24 7335* C Constants::
c906108c
SS
7336@end menu
7337
6d2ebf8b 7338@node C Constants
b37052ae 7339@subsubsection C and C@t{++} constants
c906108c 7340
b37052ae 7341@cindex C and C@t{++} constants
c906108c 7342
b37052ae 7343@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 7344following ways:
c906108c
SS
7345
7346@itemize @bullet
7347@item
7348Integer constants are a sequence of digits. Octal constants are
7349specified by a leading @samp{0} (i.e. zero), and hexadecimal constants by
7350a 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
7355Floating point constants are a sequence of digits, followed by a decimal
7356point, followed by a sequence of digits, and optionally followed by an
7357exponent. An exponent is of the form:
7358@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
7359sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
7360A 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
7362the @code{float} (as opposed to the default @code{double}) type; or with
7363a letter @samp{l} or @samp{L}, which specifies a @code{long double}
7364constant.
c906108c
SS
7365
7366@item
7367Enumerated constants consist of enumerated identifiers, or their
7368integral equivalents.
7369
7370@item
7371Character constants are a single character surrounded by single quotes
7372(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 7373(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
7374be represented by a letter or by @dfn{escape sequences}, which are of
7375the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
7376of 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
96a2c332
SS
7381String constants are a sequence of character constants surrounded by
7382double quotes (@code{"}). Any valid character constant (as described
7383above) may appear. Double quotes within the string must be preceded by
7384a backslash, so for instance @samp{"a\"b'c"} is a string of five
7385characters.
c906108c
SS
7386
7387@item
7388Pointer constants are an integral value. You can also write pointers
7389to constants using the C operator @samp{&}.
7390
7391@item
7392Array constants are comma-separated lists surrounded by braces @samp{@{}
7393and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
7394integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
7395and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
7396@end itemize
7397
c906108c 7398@menu
5d161b24
DB
7399* C plus plus expressions::
7400* C Defaults::
7401* C Checks::
c906108c 7402
5d161b24 7403* Debugging C::
c906108c
SS
7404@end menu
7405
6d2ebf8b 7406@node C plus plus expressions
b37052ae
EZ
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{++}
c906108c
SS
7421@c FIXME!! GDB may eventually be able to debug C++ using DWARF; check
7422@c periodically whether this has happened...
7423@quotation
b37052ae
EZ
7424@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use the
7425proper compiler. Typically, C@t{++} debugging depends on the use of
c906108c
SS
7426additional debugging information in the symbol table, and thus requires
7427special 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
7429symbol table, these facilities are all available. (With @sc{gnu} CC,
7430you can use the @samp{-gstabs} option to request stabs debugging
7431extensions explicitly.) Where the object code format is standard
b37052ae 7432@sc{coff} or @sc{dwarf} in @sc{elf}, on the other hand, most of the C@t{++}
c906108c
SS
7433support in @value{GDBN} does @emph{not} work.
7434@end quotation
c906108c
SS
7435
7436@enumerate
7437
7438@cindex member functions
7439@item
7440Member function calls are allowed; you can use expressions like
7441
7442@example
7443count = aml->GetOriginal(x, y)
7444@end example
7445
41afff9a 7446@vindex this@r{, inside C@t{++} member functions}
b37052ae 7447@cindex namespace in C@t{++}
c906108c
SS
7448@item
7449While a member function is active (in the selected stack frame), your
7450expressions have the same namespace available as the member function;
7451that is, @value{GDBN} allows implicit references to the class instance
b37052ae 7452pointer @code{this} following the same rules as C@t{++}.
c906108c 7453
c906108c 7454@cindex call overloaded functions
d4f3574e 7455@cindex overloaded functions, calling
b37052ae 7456@cindex type conversions in C@t{++}
c906108c
SS
7457@item
7458You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 7459call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
7460perform overload resolution involving user-defined type conversions,
7461calls to constructors, or instantiations of templates that do not exist
7462in the program. It also cannot handle ellipsis argument lists or
7463default arguments.
7464
7465It does perform integral conversions and promotions, floating-point
7466promotions, arithmetic conversions, pointer conversions, conversions of
7467class objects to base classes, and standard conversions such as those of
7468functions or arrays to pointers; it requires an exact match on the
7469number of function arguments.
7470
7471Overload resolution is always performed, unless you have specified
7472@code{set overload-resolution off}. @xref{Debugging C plus plus,
b37052ae 7473,@value{GDBN} features for C@t{++}}.
c906108c 7474
d4f3574e 7475You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
7476explicit function signature to call an overloaded function, as in
7477@smallexample
7478p 'foo(char,int)'('x', 13)
7479@end smallexample
d4f3574e 7480
c906108c 7481The @value{GDBN} command-completion facility can simplify this;
d4f3574e 7482see @ref{Completion, ,Command completion}.
c906108c 7483
c906108c
SS
7484@cindex reference declarations
7485@item
b37052ae
EZ
7486@value{GDBN} understands variables declared as C@t{++} references; you can use
7487them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
7488dereferenced.
7489
7490In the parameter list shown when @value{GDBN} displays a frame, the values of
7491reference variables are not displayed (unlike other variables); this
7492avoids clutter, since references are often used for large structures.
7493The @emph{address} of a reference variable is always shown, unless
7494you have specified @samp{set print address off}.
7495
7496@item
b37052ae 7497@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
7498expressions can use it just as expressions in your program do. Since
7499one scope may be defined in another, you can use @code{::} repeatedly if
7500necessary, for example in an expression like
7501@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 7502resolving name scope by reference to source files, in both C and C@t{++}
c906108c
SS
7503debugging (@pxref{Variables, ,Program variables}).
7504@end enumerate
7505
b37052ae 7506In addition, when used with HP's C@t{++} compiler, @value{GDBN} supports
53a5351d
JM
7507calling virtual functions correctly, printing out virtual bases of
7508objects, calling functions in a base subobject, casting objects, and
7509invoking user-defined operators.
c906108c 7510
6d2ebf8b 7511@node C Defaults
b37052ae 7512@subsubsection C and C@t{++} defaults
7a292a7a 7513
b37052ae 7514@cindex C and C@t{++} defaults
c906108c 7515
c906108c
SS
7516If you allow @value{GDBN} to set type and range checking automatically, they
7517both default to @code{off} whenever the working language changes to
b37052ae 7518C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 7519selects the working language.
c906108c
SS
7520
7521If you allow @value{GDBN} to set the language automatically, it
7522recognizes 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
b37052ae 7524these files, it sets the working language to C or C@t{++}.
c906108c
SS
7525@xref{Automatically, ,Having @value{GDBN} infer the source language},
7526for further details.
7527
c906108c
SS
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.
7a292a7a 7531
6d2ebf8b 7532@node C Checks
b37052ae 7533@subsubsection C and C@t{++} type and range checks
7a292a7a 7534
b37052ae 7535@cindex C and C@t{++} checks
c906108c 7536
b37052ae 7537By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
c906108c
SS
7538is not used. However, if you turn type checking on, @value{GDBN}
7539considers two variables type equivalent if:
7540
7541@itemize @bullet
7542@item
7543The two variables are structured and have the same structure, union, or
7544enumerated tag.
7545
7546@item
7547The two variables have the same type name, or types that have been
7548declared 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
7554The two @code{struct}, @code{union}, or @code{enum} variables are
7555declared in the same declaration. (Note: this may not be true for all C
7556compilers.)
7557@end ignore
7558@end itemize
7559
7560Range checking, if turned on, is done on mathematical operations. Array
7561indices are not checked, since they are often used to index a pointer
7562that is not itself an array.
c906108c 7563
6d2ebf8b 7564@node Debugging C
c906108c 7565@subsubsection @value{GDBN} and C
c906108c
SS
7566
7567The @code{set print union} and @code{show print union} commands apply to
7568the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
7569inside a @code{struct} or @code{class} is also printed. Otherwise, it
7570appears as @samp{@{...@}}.
c906108c
SS
7571
7572The @code{@@} operator aids in the debugging of dynamic arrays, formed
7573with pointers and a memory allocation function. @xref{Expressions,
7574,Expressions}.
7575
c906108c 7576@menu
5d161b24 7577* Debugging C plus plus::
c906108c
SS
7578@end menu
7579
6d2ebf8b 7580@node Debugging C plus plus
b37052ae 7581@subsubsection @value{GDBN} features for C@t{++}
c906108c 7582
b37052ae 7583@cindex commands for C@t{++}
7a292a7a 7584
b37052ae
EZ
7585Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
7586designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
7587
7588@table @code
7589@cindex break in overloaded functions
7590@item @r{breakpoint menus}
7591When you want a breakpoint in a function whose name is overloaded,
7592@value{GDBN} breakpoint menus help you specify which function definition
7593you want. @xref{Breakpoint Menus,,Breakpoint menus}.
7594
b37052ae 7595@cindex overloading in C@t{++}
c906108c
SS
7596@item rbreak @var{regex}
7597Setting breakpoints using regular expressions is helpful for setting
7598breakpoints on overloaded functions that are not members of any special
7599classes.
7600@xref{Set Breaks, ,Setting breakpoints}.
7601
b37052ae 7602@cindex C@t{++} exception handling
c906108c
SS
7603@item catch throw
7604@itemx catch catch
b37052ae 7605Debug C@t{++} exception handling using these commands. @xref{Set
c906108c
SS
7606Catchpoints, , Setting catchpoints}.
7607
7608@cindex inheritance
7609@item ptype @var{typename}
7610Print inheritance relationships as well as other information for type
7611@var{typename}.
7612@xref{Symbols, ,Examining the Symbol Table}.
7613
b37052ae 7614@cindex C@t{++} symbol display
c906108c
SS
7615@item set print demangle
7616@itemx show print demangle
7617@itemx set print asm-demangle
7618@itemx show print asm-demangle
b37052ae
EZ
7619Control whether C@t{++} symbols display in their source form, both when
7620displaying code as C@t{++} source and when displaying disassemblies.
c906108c
SS
7621@xref{Print Settings, ,Print settings}.
7622
7623@item set print object
7624@itemx show print object
7625Choose 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
7630Control the format for printing virtual function tables.
7631@xref{Print Settings, ,Print settings}.
c906108c 7632(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 7633ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
7634
7635@kindex set overload-resolution
d4f3574e 7636@cindex overloaded functions, overload resolution
c906108c 7637@item set overload-resolution on
b37052ae 7638Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
7639is on. For overloaded functions, @value{GDBN} evaluates the arguments
7640and searches for a function whose signature matches the argument types,
b37052ae 7641using the standard C@t{++} conversion rules (see @ref{C plus plus expressions, ,C@t{++}
d4f3574e 7642expressions}, for details). If it cannot find a match, it emits a
c906108c
SS
7643message.
7644
7645@item set overload-resolution off
b37052ae 7646Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
7647overloaded functions that are not class member functions, @value{GDBN}
7648chooses the first function of the specified name that it finds in the
7649symbol table, whether or not its arguments are of the correct type. For
7650overloaded functions that are class member functions, @value{GDBN}
7651searches for a function whose signature @emph{exactly} matches the
7652argument types.
c906108c
SS
7653
7654@item @r{Overloaded symbol names}
7655You can specify a particular definition of an overloaded symbol, using
b37052ae 7656the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
7657@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
7658also use the @value{GDBN} command-line word completion facilities to list the
7659available choices, or to finish the type list for you.
7660@xref{Completion,, Command completion}, for details on how to do this.
7661@end table
c906108c 7662
6d2ebf8b 7663@node Modula-2
c906108c 7664@subsection Modula-2
7a292a7a 7665
d4f3574e 7666@cindex Modula-2, @value{GDBN} support
c906108c
SS
7667
7668The extensions made to @value{GDBN} to support Modula-2 only support
7669output from the @sc{gnu} Modula-2 compiler (which is currently being
7670developed). Other Modula-2 compilers are not currently supported, and
7671attempting to debug executables produced by them is most likely
7672to give an error as @value{GDBN} reads in the executable's symbol
7673table.
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
6d2ebf8b 7687@node M2 Operators
c906108c
SS
7688@subsubsection Operators
7689@cindex Modula-2 operators
7690
7691Operators must be defined on values of specific types. For instance,
7692@code{+} is defined on numbers, but not on structures. Operators are
7693often defined on groups of types. For the purposes of Modula-2, the
7694following definitions hold:
7695
7696@itemize @bullet
7697
7698@item
7699@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
7700their 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
7723The following operators are supported, and appear in order of
7724increasing precedence:
7725
7726@table @code
7727@item ,
7728Function argument or array index separator.
7729
7730@item :=
7731Assignment. The value of @var{var} @code{:=} @var{value} is
7732@var{value}.
7733
7734@item <@r{, }>
7735Less than, greater than on integral, floating-point, or enumerated
7736types.
7737
7738@item <=@r{, }>=
96a2c332 7739Less than or equal to, greater than or equal to
c906108c
SS
7740on integral, floating-point and enumerated types, or set inclusion on
7741set types. Same precedence as @code{<}.
7742
7743@item =@r{, }<>@r{, }#
7744Equality and two ways of expressing inequality, valid on scalar types.
7745Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
7746available for inequality, since @code{#} conflicts with the script
7747comment character.
7748
7749@item IN
7750Set membership. Defined on set types and the types of their members.
7751Same precedence as @code{<}.
7752
7753@item OR
7754Boolean disjunction. Defined on boolean types.
7755
7756@item AND@r{, }&
d4f3574e 7757Boolean conjunction. Defined on boolean types.
c906108c
SS
7758
7759@item @@
7760The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
7761
7762@item +@r{, }-
7763Addition and subtraction on integral and floating-point types, or union
7764and difference on set types.
7765
7766@item *
7767Multiplication on integral and floating-point types, or set intersection
7768on set types.
7769
7770@item /
7771Division on floating-point types, or symmetric set difference on set
7772types. Same precedence as @code{*}.
7773
7774@item DIV@r{, }MOD
7775Integer division and remainder. Defined on integral types. Same
7776precedence as @code{*}.
7777
7778@item -
7779Negative. Defined on @code{INTEGER} and @code{REAL} data.
7780
7781@item ^
7782Pointer dereferencing. Defined on pointer types.
7783
7784@item NOT
7785Boolean negation. Defined on boolean types. Same precedence as
7786@code{^}.
7787
7788@item .
7789@code{RECORD} field selector. Defined on @code{RECORD} data. Same
7790precedence as @code{^}.
7791
7792@item []
7793Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
7794
7795@item ()
7796Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
7797as @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}
7805treats 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
cb51c4e0 7810
6d2ebf8b 7811@node Built-In Func/Proc
c906108c 7812@subsubsection Built-in functions and procedures
cb51c4e0 7813@cindex Modula-2 built-ins
c906108c
SS
7814
7815Modula-2 also makes available several built-in procedures and functions.
7816In describing these, the following metavariables are used:
7817
7818@table @var
7819
7820@item a
7821represents an @code{ARRAY} variable.
7822
7823@item c
7824represents a @code{CHAR} constant or variable.
7825
7826@item i
7827represents a variable or constant of integral type.
7828
7829@item m
7830represents an identifier that belongs to a set. Generally used in the
7831same function with the metavariable @var{s}. The type of @var{s} should
7832be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
7833
7834@item n
7835represents a variable or constant of integral or floating-point type.
7836
7837@item r
7838represents a variable or constant of floating-point type.
7839
7840@item t
7841represents a type.
7842
7843@item v
7844represents a variable.
7845
7846@item x
7847represents a variable or constant of one of many types. See the
7848explanation of the function for details.
7849@end table
7850
7851All Modula-2 built-in procedures also return a result, described below.
7852
7853@table @code
7854@item ABS(@var{n})
7855Returns the absolute value of @var{n}.
7856
7857@item CAP(@var{c})
7858If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 7859equivalent, otherwise it returns its argument.
c906108c
SS
7860
7861@item CHR(@var{i})
7862Returns the character whose ordinal value is @var{i}.
7863
7864@item DEC(@var{v})
c3f6f71d 7865Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
7866
7867@item DEC(@var{v},@var{i})
7868Decrements the value in the variable @var{v} by @var{i}. Returns the
7869new value.
7870
7871@item EXCL(@var{m},@var{s})
7872Removes the element @var{m} from the set @var{s}. Returns the new
7873set.
7874
7875@item FLOAT(@var{i})
7876Returns the floating point equivalent of the integer @var{i}.
7877
7878@item HIGH(@var{a})
7879Returns the index of the last member of @var{a}.
7880
7881@item INC(@var{v})
c3f6f71d 7882Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
7883
7884@item INC(@var{v},@var{i})
7885Increments the value in the variable @var{v} by @var{i}. Returns the
7886new value.
7887
7888@item INCL(@var{m},@var{s})
7889Adds the element @var{m} to the set @var{s} if it is not already
7890there. Returns the new set.
7891
7892@item MAX(@var{t})
7893Returns the maximum value of the type @var{t}.
7894
7895@item MIN(@var{t})
7896Returns the minimum value of the type @var{t}.
7897
7898@item ODD(@var{i})
7899Returns boolean TRUE if @var{i} is an odd number.
7900
7901@item ORD(@var{x})
7902Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
7903value 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
c906108c
SS
7905integral, character and enumerated types.
7906
7907@item SIZE(@var{x})
7908Returns the size of its argument. @var{x} can be a variable or a type.
7909
7910@item TRUNC(@var{r})
7911Returns the integral part of @var{r}.
7912
7913@item VAL(@var{t},@var{i})
7914Returns 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
7920an error.
7921@end quotation
7922
7923@cindex Modula-2 constants
6d2ebf8b 7924@node M2 Constants
c906108c
SS
7925@subsubsection Constants
7926
7927@value{GDBN} allows you to express the constants of Modula-2 in the following
7928ways:
7929
7930@itemize @bullet
7931
7932@item
7933Integer constants are simply a sequence of digits. When used in an
7934expression, a constant is interpreted to be type-compatible with the
7935rest of the expression. Hexadecimal integers are specified by a
7936trailing @samp{H}, and octal integers by a trailing @samp{B}.
7937
7938@item
7939Floating point constants appear as a sequence of digits, followed by a
7940decimal point and another sequence of digits. An optional exponent can
7941then 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
7943digits of the floating point constant must be valid decimal (base 10)
7944digits.
7945
7946@item
7947Character constants consist of a single character enclosed by a pair of
7948like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 7949also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
7950followed by a @samp{C}.
7951
7952@item
7953String constants consist of a sequence of characters enclosed by a
7954pair of like quotes, either single (@code{'}) or double (@code{"}).
7955Escape sequences in the style of C are also allowed. @xref{C
b37052ae 7956Constants, ,C and C@t{++} constants}, for a brief explanation of escape
c906108c
SS
7957sequences.
7958
7959@item
7960Enumerated constants consist of an enumerated identifier.
7961
7962@item
7963Boolean constants consist of the identifiers @code{TRUE} and
7964@code{FALSE}.
7965
7966@item
7967Pointer constants consist of integral values only.
7968
7969@item
7970Set constants are not yet supported.
7971@end itemize
7972
6d2ebf8b 7973@node M2 Defaults
c906108c
SS
7974@subsubsection Modula-2 defaults
7975@cindex Modula-2 defaults
7976
7977If type and range checking are set automatically by @value{GDBN}, they
7978both default to @code{on} whenever the working language changes to
d4f3574e 7979Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
7980selected the working language.
7981
7982If you allow @value{GDBN} to set the language automatically, then entering
7983code compiled from a file whose name ends with @file{.mod} sets the
d4f3574e 7984working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} set
c906108c
SS
7985the language automatically}, for further details.
7986
6d2ebf8b 7987@node Deviations
c906108c
SS
7988@subsubsection Deviations from standard Modula-2
7989@cindex Modula-2, deviations from
7990
7991A few changes have been made to make Modula-2 programs easier to debug.
7992This is done primarily via loosening its type strictness:
7993
7994@itemize @bullet
7995@item
7996Unlike in standard Modula-2, pointer constants can be formed by
7997integers. This allows you to modify pointer variables during
7998debugging. (In standard Modula-2, the actual address contained in a
7999pointer variable is hidden from you; it can only be modified
8000through direct assignment to another pointer variable or expression that
8001returned a pointer.)
8002
8003@item
8004C escape sequences can be used in strings and characters to represent
8005non-printable characters. @value{GDBN} prints out strings with these
8006escape sequences embedded. Single non-printable characters are
8007printed using the @samp{CHR(@var{nnn})} format.
8008
8009@item
8010The assignment operator (@code{:=}) returns the value of its right-hand
8011argument.
8012
8013@item
8014All built-in procedures both modify @emph{and} return their argument.
8015@end itemize
8016
6d2ebf8b 8017@node M2 Checks
c906108c
SS
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
8023range 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
8031They are of types that have been declared equivalent via a @code{TYPE
8032@var{t1} = @var{t2}} statement
8033
8034@item
8035They 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
8039As long as type checking is enabled, any attempt to combine variables
8040whose types are not equivalent is an error.
8041
8042Range checking is done on all mathematical operations, assignment, array
8043index bounds, and all built-in functions and procedures.
8044
6d2ebf8b 8045@node M2 Scope
c906108c
SS
8046@subsubsection The scope operators @code{::} and @code{.}
8047@cindex scope
41afff9a 8048@cindex @code{.}, Modula-2 scope operator
c906108c
SS
8049@cindex colon, doubled as scope operator
8050@ifinfo
41afff9a 8051@vindex colon-colon@r{, in Modula-2}
c906108c
SS
8052@c Info cannot handle :: but TeX can.
8053@end ifinfo
8054@iftex
41afff9a 8055@vindex ::@r{, in Modula-2}
c906108c
SS
8056@end iftex
8057
8058There are a few subtle differences between the Modula-2 scope operator
8059(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
8060similar syntax:
8061
8062@example
8063
8064@var{module} . @var{id}
8065@var{scope} :: @var{id}
8066@end example
8067
8068@noindent
8069where @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
8071identifier within your program, except another module.
8072
8073Using the @code{::} operator makes @value{GDBN} search the scope
8074specified by @var{scope} for the identifier @var{id}. If it is not
8075found in the specified scope, then @value{GDBN} searches all scopes
8076enclosing the one specified by @var{scope}.
8077
8078Using the @code{.} operator makes @value{GDBN} search the current scope for
8079the identifier specified by @var{id} that was imported from the
8080definition module specified by @var{module}. With this operator, it is
8081an error if the identifier @var{id} was not imported from definition
8082module @var{module}, or if @var{id} is not an identifier in
8083@var{module}.
8084
6d2ebf8b 8085@node GDB/M2
c906108c
SS
8086@subsubsection @value{GDBN} and Modula-2
8087
8088Some @value{GDBN} commands have little use when debugging Modula-2 programs.
8089Five subcommands of @code{set print} and @code{show print} apply
b37052ae 8090specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 8091@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 8092apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
8093analogue in Modula-2.
8094
8095The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 8096with any language, is not useful with Modula-2. Its
c906108c 8097intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 8098created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 8099address can be specified by an integral constant, the construct
d4f3574e 8100@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
8101
8102@cindex @code{#} in Modula-2
8103In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
8104interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 8105
6d2ebf8b 8106@node Chill
cce74817
JM
8107@subsection Chill
8108
8109The extensions made to @value{GDBN} to support Chill only support output
d4f3574e 8110from the @sc{gnu} Chill compiler. Other Chill compilers are not currently
cce74817
JM
8111supported, and attempting to debug executables produced by them is most
8112likely to give an error as @value{GDBN} reads in the executable's symbol
8113table.
8114
d4f3574e
SS
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.
8117This section covers the Chill related topics and the features
cce74817
JM
8118of @value{GDBN} which support these topics.
8119
8120@menu
104c1213
JM
8121* How modes are displayed:: How modes are displayed
8122* Locations:: Locations and their accesses
cce74817 8123* Values and their Operations:: Values and their Operations
5d161b24 8124* Chill type and range checks::
53a5351d 8125* Chill defaults::
cce74817
JM
8126@end menu
8127
6d2ebf8b 8128@node How modes are displayed
cce74817
JM
8129@subsubsection How modes are displayed
8130
8131The Chill Datatype- (Mode) support of @value{GDBN} is directly related
d4f3574e 8132with the functionality of the @sc{gnu} Chill compiler, and therefore deviates
cce74817
JM
8133slightly from the standard specification of the Chill language. The
8134provided modes are:
d4f3574e
SS
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?
cce74817
JM
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,
8143UINT, LONG, ULONG},
8144@item
5d161b24 8145@emph{Boolean Mode} which is predefined by @code{BOOL},
cce74817 8146@item
5d161b24 8147@emph{Character Mode} which is predefined by @code{CHAR},
cce74817
JM
8148@item
8149@emph{Set Mode} which is displayed by the keyword @code{SET}.
8150@smallexample
8151(@value{GDBP}) ptype x
8152type = SET (karli = 10, susi = 20, fritzi = 100)
8153@end smallexample
8154If the type is an unnumbered set the set element values are omitted.
8155@item
6d2ebf8b
SS
8156@emph{Range Mode} which is displayed by
8157@smallexample
8158@code{type = <basemode>(<lower bound> : <upper bound>)}
8159@end smallexample
8160where @code{<lower bound>, <upper bound>} can be of any discrete literal
8161expression (e.g. set element names).
cce74817
JM
8162@end itemize
8163
8164@item @r{@emph{Powerset Mode:}}
8165A Powerset Mode is displayed by the keyword @code{POWERSET} followed by
d4f3574e 8166the member mode of the powerset. The member mode can be any discrete mode.
cce74817
JM
8167@smallexample
8168(@value{GDBP}) ptype x
8169type = POWERSET SET (egon, hugo, otto)
8170@end smallexample
8171
8172@item @r{@emph{Reference Modes:}}
8173@itemize @bullet
8174@item
d4f3574e 8175@emph{Bound Reference Mode} which is displayed by the keyword @code{REF}
cce74817
JM
8176followed 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}}
8182The procedure mode is displayed by @code{type = PROC(<parameter list>)
8183<return mode> EXCEPTIONS (<exception list>)}. The @code{<parameter
d4f3574e
SS
8184list>} is a list of the parameter modes. @code{<return mode>} indicates
8185the mode of the result of the procedure if any. The exceptionlist lists
cce74817
JM
8186all possible exceptions which can be raised by the procedure.
8187
8188@ignore
8189@item @r{@emph{Instance mode}}
8190The instance mode is represented by a structure, which has a static
5d161b24 8191type, and is therefore not really of interest.
cce74817
JM
8192@end ignore
8193
5d161b24 8194@item @r{@emph{Synchronization Modes:}}
cce74817
JM
8195@itemize @bullet
8196@item
6d2ebf8b
SS
8197@emph{Event Mode} which is displayed by
8198@smallexample
8199@code{EVENT (<event length>)}
8200@end smallexample
cce74817
JM
8201where @code{(<event length>)} is optional.
8202@item
6d2ebf8b
SS
8203@emph{Buffer Mode} which is displayed by
8204@smallexample
8205@code{BUFFER (<buffer length>)<buffer element mode>}
8206@end smallexample
8207where @code{(<buffer length>)} is optional.
cce74817
JM
8208@end itemize
8209
5d161b24 8210@item @r{@emph{Timing Modes:}}
cce74817
JM
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:}}
8219Real Modes are predefined with @code{REAL} and @code{LONG_REAL}.
8220
8221@item @r{@emph{String Modes:}}
8222@itemize @bullet
8223@item
6d2ebf8b
SS
8224@emph{Character String Mode} which is displayed by
8225@smallexample
8226@code{CHARS(<string length>)}
8227@end smallexample
8228followed by the keyword @code{VARYING} if the String Mode is a varying
8229mode
cce74817 8230@item
6d2ebf8b
SS
8231@emph{Bit String Mode} which is displayed by
8232@smallexample
8233@code{BOOLS(<string
8234length>)}
8235@end smallexample
cce74817
JM
8236@end itemize
8237
8238@item @r{@emph{Array Mode:}}
8239The Array Mode is displayed by the keyword @code{ARRAY(<range>)}
8240followed by the element mode (which may in turn be an array mode).
8241@smallexample
8242(@value{GDBP}) ptype x
5d161b24
DB
8243type = ARRAY (1:42)
8244 ARRAY (1:20)
cce74817
JM
8245 SET (karli = 10, susi = 20, fritzi = 100)
8246@end smallexample
8247
5d161b24 8248@item @r{@emph{Structure Mode}}
cce74817 8249The Structure mode is displayed by the keyword @code{STRUCT(<field
d4f3574e
SS
8250list>)}. The @code{<field list>} consists of names and modes of fields
8251of the structure. Variant structures have the keyword @code{CASE <field>
8252OF <variant fields> ESAC} in their field list. Since the current version
cce74817
JM
8253of the GNU Chill compiler doesn't implement tag processing (no runtime
8254checks of variant fields, and therefore no debugging info), the output
8255always displays all variant fields.
8256@smallexample
8257(@value{GDBP}) ptype str
8258type = 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
6d2ebf8b 8271@node Locations
cce74817
JM
8272@subsubsection Locations and their accesses
8273
8274A location in Chill is an object which can contain values.
8275
8276A value of a location is generally accessed by the (declared) name of
d4f3574e
SS
8277the location. The output conforms to the specification of values in
8278Chill programs. How values are specified
8279is the topic of the next section, @ref{Values and their Operations}.
cce74817
JM
8280
8281The pseudo-location @code{RESULT} (or @code{result}) can be used to
8282display or change the result of a currently-active procedure:
d4f3574e 8283
cce74817
JM
8284@smallexample
8285set result := EXPR
8286@end smallexample
d4f3574e
SS
8287
8288@noindent
8289This does the same as the Chill action @code{RESULT EXPR} (which
c3f6f71d 8290is not available in @value{GDBN}).
cce74817
JM
8291
8292Values of reference mode locations are printed by @code{PTR(<hex
8293value>)} in case of a free reference mode, and by @code{(REF <reference
d4f3574e 8294mode>) (<hex-value>)} in case of a bound reference. @code{<hex value>}
cce74817
JM
8295represents the address where the reference points to. To access the
8296value of the location referenced by the pointer, use the dereference
d4f3574e 8297operator @samp{->}.
cce74817 8298
6d2ebf8b
SS
8299Values of procedure mode locations are displayed by
8300@smallexample
8301@code{@{ PROC
cce74817 8302(<argument modes> ) <return mode> @} <address> <name of procedure
6d2ebf8b
SS
8303location>}
8304@end smallexample
8305@code{<argument modes>} is a list of modes according to the parameter
8306specification of the procedure and @code{<address>} shows the address of
8307the entry point.
cce74817
JM
8308
8309@ignore
8310Locations of instance modes are displayed just like a structure with two
8311fields specifying the @emph{process type} and the @emph{copy number} of
8312the investigated instance location@footnote{This comes from the current
d4f3574e
SS
8313implementation of instances. They are implemented as a structure (no
8314na). The output should be something like @code{[<name of the process>;
8315<instance number>]}.}. The field names are @code{__proc_type} and
cce74817
JM
8316@code{__proc_copy}.
8317
8318Locations of synchronization modes are displayed like a structure with
8319the field name @code{__event_data} in case of a event mode location, and
8320like a structure with the field @code{__buffer_data} in case of a buffer
8321mode location (refer to previous paragraph).
8322
8323Structure Mode locations are printed by @code{[.<field name>: <value>,
d4f3574e 8324...]}. The @code{<field name>} corresponds to the structure mode
cce74817 8325definition and the layout of @code{<value>} varies depending of the mode
d4f3574e
SS
8326of the field. If the investigated structure mode location is of variant
8327structure mode, the variant parts of the structure are enclosed in curled
8328braces (@samp{@{@}}). Fields enclosed by @samp{@{,@}} are residing
cce74817 8329on the same memory location and represent the current values of the
d4f3574e 8330memory location in their specific modes. Since no tag processing is done
cce74817 8331all variants are displayed. A variant field is printed by
d4f3574e 8332@code{(<variant name>) = .<field name>: <value>}. (who implements the
cce74817
JM
8333stuff ???)
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
8340Substructures of string mode-, array mode- or structure mode-values
8341(e.g. array slices, fields of structure locations) are accessed using
d4f3574e
SS
8342certain operations which are described in the next section, @ref{Values
8343and their Operations}.
cce74817
JM
8344
8345A location value may be interpreted as having a different mode using the
d4f3574e
SS
8346location conversion. This mode conversion is written as @code{<mode
8347name>(<location>)}. The user has to consider that the sizes of the modes
8348have to be equal otherwise an error occurs. Furthermore, no range
8349checking of the location against the destination mode is performed, and
cce74817 8350therefore the result can be quite confusing.
d4f3574e 8351
cce74817
JM
8352@smallexample
8353(@value{GDBP}) print int (s(3 up 4)) XXX TO be filled in !! XXX
8354@end smallexample
8355
6d2ebf8b 8356@node Values and their Operations
cce74817
JM
8357@subsubsection Values and their Operations
8358
8359Values are used to alter locations, to investigate complex structures in
8360more detail or to filter relevant information out of a large amount of
d4f3574e
SS
8361data. There are several (mode dependent) operations defined which enable
8362such investigations. These operations are not only applicable to
cce74817 8363constant values but also to locations, which can become quite useful
d4f3574e 8364when debugging complex structures. During parsing the command line
cce74817
JM
8365(e.g. evaluating an expression) @value{GDBN} treats location names as
8366the values behind these locations.
8367
d4f3574e 8368This section describes how values have to be specified and which
cce74817
JM
8369operations are legal to be used with such values.
8370
8371@table @code
8372@item Literal Values
d4f3574e
SS
8373Literal values are specified in the same manner as in @sc{gnu} Chill programs.
8374For detailed specification refer to the @sc{gnu} Chill implementation Manual
cce74817 8375chapter 1.5.
d4f3574e
SS
8376@c FIXME: if the Chill Manual is a Texinfo documents, the above should
8377@c be converted to a @ref.
cce74817 8378
5d161b24 8379@ignore
cce74817
JM
8380@itemize @bullet
8381@item
8382@emph{Integer Literals} are specified in the same manner as in Chill
d4f3574e 8383programs (refer to the Chill Standard z200/88 chpt 5.2.4.2)
cce74817
JM
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
d4f3574e 8391mode. The value delivered by a Set Literal is the set value. This is
b37052ae 8392comparable to an enumeration in C/C@t{++} language.
cce74817 8393@item
d4f3574e 8394@emph{Emptiness Literal} is predefined by @code{NULL}. The value of the
cce74817 8395emptiness literal delivers either the empty reference value, the empty
5d161b24 8396procedure value or the empty instance value.
cce74817
JM
8397
8398@item
8399@emph{Character String Literals} are defined by a sequence of characters
d4f3574e 8400enclosed in single- or double quotes. If a single- or double quote has
cce74817
JM
8401to 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
8404programs (refer z200/88 chpt 5.2.4.8).
8405@item
8406@emph{Floating point literals} are specified in the same manner as in
d4f3574e 8407(gnu-)Chill programs (refer @sc{gnu} Chill implementation Manual chapter 1.5).
cce74817
JM
8408@end itemize
8409@end ignore
8410
8411@item Tuple Values
8412A tuple is specified by @code{<mode name>[<tuple>]}, where @code{<mode
d4f3574e 8413name>} can be omitted if the mode of the tuple is unambiguous. This
cce74817
JM
8414unambiguity is derived from the context of a evaluated expression.
8415@code{<tuple>} can be one of the following:
d4f3574e 8416
cce74817
JM
8417@itemize @bullet
8418@item @emph{Powerset Tuple}
8419@item @emph{Array Tuple}
8420@item @emph{Structure Tuple}
8421Powerset tuples, array tuples and structure tuples are specified in the
d4f3574e 8422same manner as in Chill programs refer to z200/88 chpt 5.2.5.
cce74817
JM
8423@end itemize
8424
8425@item String Element Value
6d2ebf8b
SS
8426A string element value is specified by
8427@smallexample
8428@code{<string value>(<index>)}
8429@end smallexample
d4f3574e 8430where @code{<index>} is a integer expression. It delivers a character
cce74817
JM
8431value which is equivalent to the character indexed by @code{<index>} in
8432the string.
8433
8434@item String Slice Value
8435A string slice value is specified by @code{<string value>(<slice
8436spec>)}, where @code{<slice spec>} can be either a range of integer
8437expressions or specified by @code{<start expr> up <size>}.
8438@code{<size>} denotes the number of elements which the slice contains.
8439The delivered value is a string value, which is part of the specified
8440string.
8441
8442@item Array Element Values
8443An array element value is specified by @code{<array value>(<expr>)} and
8444delivers a array element value of the mode of the specified array.
8445
8446@item Array Slice Values
8447An 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
d4f3574e
SS
8449@code{<start expr> up <size>}. @code{<size>} denotes the number of
8450arrayelements the slice contains. The delivered value is an array value
cce74817
JM
8451which is part of the specified array.
8452
8453@item Structure Field Values
8454A structure field value is derived by @code{<structure value>.<field
d4f3574e
SS
8455name>}, where @code{<field name>} indicates the name of a field specified
8456in the mode definition of the structure. The mode of the delivered value
cce74817
JM
8457corresponds to this mode definition in the structure definition.
8458
8459@item Procedure Call Value
8460The procedure call value is derived from the return value of the
8461procedure@footnote{If a procedure call is used for instance in an
8462expression, then this procedure is called with all its side
d4f3574e 8463effects. This can lead to confusing results if used carelessly.}.
cce74817 8464
d4f3574e 8465Values of duration mode locations are represented by @code{ULONG} literals.
cce74817 8466
6d2ebf8b
SS
8467Values of time mode locations appear as
8468@smallexample
8469@code{TIME(<secs>:<nsecs>)}
8470@end smallexample
8471
cce74817
JM
8472
8473@ignore
8474This is not implemented yet:
8475@item Built-in Value
8476@noindent
8477The following built in functions are provided:
d4f3574e 8478
cce74817
JM
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
8504For a detailed description refer to the GNU Chill implementation manual
8505chapter 1.6.
8506@end ignore
8507
8508@item Zero-adic Operator Value
8509The zero-adic operator value is derived from the instance value for the
8510current active process.
8511
8512@item Expression Values
8513The value delivered by an expression is the result of the evaluation of
d4f3574e 8514the specified expression. If there are error conditions (mode
cce74817 8515incompatibility, etc.) the evaluation of expressions is aborted with a
d4f3574e 8516corresponding error message. Expressions may be parenthesised which
cce74817 8517causes the evaluation of this expression before any other expression
d4f3574e 8518which uses the result of the parenthesised expression. The following
cce74817 8519operators are supported by @value{GDBN}:
d4f3574e 8520
cce74817
JM
8521@table @code
8522@item @code{OR, ORIF, XOR}
d4f3574e
SS
8523@itemx @code{AND, ANDIF}
8524@itemx @code{NOT}
cce74817 8525Logical operators defined over operands of boolean mode.
d4f3574e 8526
cce74817
JM
8527@item @code{=, /=}
8528Equality and inequality operators defined over all modes.
d4f3574e 8529
cce74817 8530@item @code{>, >=}
d4f3574e 8531@itemx @code{<, <=}
cce74817 8532Relational operators defined over predefined modes.
d4f3574e 8533
cce74817 8534@item @code{+, -}
d4f3574e 8535@itemx @code{*, /, MOD, REM}
cce74817 8536Arithmetic operators defined over predefined modes.
d4f3574e 8537
cce74817
JM
8538@item @code{-}
8539Change sign operator.
d4f3574e 8540
cce74817
JM
8541@item @code{//}
8542String concatenation operator.
d4f3574e 8543
cce74817
JM
8544@item @code{()}
8545String repetition operator.
d4f3574e 8546
cce74817
JM
8547@item @code{->}
8548Referenced location operator which can be used either to take the
8549address of a location (@code{->loc}), or to dereference a reference
8550location (@code{loc->}).
d4f3574e 8551
cce74817 8552@item @code{OR, XOR}
d4f3574e
SS
8553@itemx @code{AND}
8554@itemx @code{NOT}
cce74817 8555Powerset and bitstring operators.
d4f3574e 8556
cce74817 8557@item @code{>, >=}
d4f3574e 8558@itemx @code{<, <=}
cce74817 8559Powerset inclusion operators.
d4f3574e 8560
cce74817
JM
8561@item @code{IN}
8562Membership operator.
8563@end table
8564@end table
8565
6d2ebf8b 8566@node Chill type and range checks
cce74817
JM
8567@subsubsection Chill type and range checks
8568
8569@value{GDBN} considers two Chill variables mode equivalent if the sizes
d4f3574e 8570of the two modes are equal. This rule applies recursively to more
cce74817 8571complex datatypes which means that complex modes are treated
d4f3574e 8572equivalent if all element modes (which also can be complex modes like
cce74817
JM
8573structures, arrays, etc.) have the same size.
8574
8575Range checking is done on all mathematical operations, assignment, array
8576index bounds and all built in procedures.
8577
8578Strong type checks are forced using the @value{GDBN} command @code{set
d4f3574e 8579check strong}. This enforces strong type and range checks on all
cce74817
JM
8580operations where Chill constructs are used (expressions, built in
8581functions, etc.) in respect to the semantics as defined in the z.200
8582language specification.
8583
cce74817
JM
8584All checks can be disabled by the @value{GDBN} command @code{set check
8585off}.
8586
5d161b24 8587@ignore
53a5351d 8588@c Deviations from the Chill Standard Z200/88
cce74817
JM
8589see last paragraph ?
8590@end ignore
8591
6d2ebf8b 8592@node Chill defaults
cce74817
JM
8593@subsubsection Chill defaults
8594
8595If type and range checking are set automatically by @value{GDBN}, they
8596both default to @code{on} whenever the working language changes to
d4f3574e 8597Chill. This happens regardless of whether you or @value{GDBN}
cce74817
JM
8598selected the working language.
8599
8600If you allow @value{GDBN} to set the language automatically, then entering
8601code compiled from a file whose name ends with @file{.ch} sets the
d4f3574e 8602working language to Chill. @xref{Automatically, ,Having @value{GDBN} set
cce74817
JM
8603the language automatically}, for further details.
8604
6d2ebf8b 8605@node Symbols
c906108c
SS
8606@chapter Examining the Symbol Table
8607
d4f3574e 8608The commands described in this chapter allow you to inquire about the
c906108c
SS
8609symbols (names of variables, functions and types) defined in your
8610program. This information is inherent in the text of your program and
8611does not change as your program executes. @value{GDBN} finds it in your
8612program's symbol table, in the file indicated when you started @value{GDBN}
8613(@pxref{File Options, ,Choosing files}), or by one of the
8614file-management commands (@pxref{Files, ,Commands to specify files}).
8615
8616@cindex symbol names
8617@cindex names of symbols
8618@cindex quoting names
8619Occasionally, you may need to refer to symbols that contain unusual
8620characters, which @value{GDBN} ordinarily treats as word delimiters. The
8621most frequent case is in referring to static variables in other
8622source files (@pxref{Variables,,Program variables}). File names
8623are recorded in object files as debugging symbols, but @value{GDBN} would
8624ordinarily 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
8629p 'foo.c'::x
8630@end example
8631
8632@noindent
8633looks up the value of @code{x} in the scope of the file @file{foo.c}.
8634
8635@table @code
8636@kindex info address
b37052ae 8637@cindex address of a symbol
c906108c
SS
8638@item info address @var{symbol}
8639Describe where the data for @var{symbol} is stored. For a register
8640variable, this says which register it is kept in. For a non-register
8641local variable, this prints the stack-frame offset at which the variable
8642is always stored.
8643
8644Note the contrast with @samp{print &@var{symbol}}, which does not work
8645at all for a register variable, and for a stack local variable prints
8646the exact address of the current instantiation of the variable.
8647
3d67e040 8648@kindex info symbol
b37052ae 8649@cindex symbol from address
3d67e040
EZ
8650@item info symbol @var{addr}
8651Print the name of a symbol which is stored at the address @var{addr}.
8652If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
8653nearest 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
8661This is the opposite of the @code{info address} command. You can use
8662it to find out the name of a variable or a function given its address.
8663
c906108c 8664@kindex whatis
d4f3574e
SS
8665@item whatis @var{expr}
8666Print the data type of expression @var{expr}. @var{expr} is not
c906108c
SS
8667actually evaluated, and any side-effecting operations (such as
8668assignments or function calls) inside it do not take place.
8669@xref{Expressions, ,Expressions}.
8670
8671@item whatis
8672Print the data type of @code{$}, the last value in the value history.
8673
8674@kindex ptype
8675@item ptype @var{typename}
8676Print a description of data type @var{typename}. @var{typename} may be
7a292a7a
SS
8677the 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}}.
c906108c 8680
d4f3574e 8681@item ptype @var{expr}
c906108c 8682@itemx ptype
d4f3574e 8683Print a description of the type of expression @var{expr}. @code{ptype}
c906108c
SS
8684differs from @code{whatis} by printing a detailed description, instead
8685of just the name of the type.
8686
8687For example, for this variable declaration:
8688
8689@example
8690struct complex @{double real; double imag;@} v;
8691@end example
8692
8693@noindent
8694the two commands give this output:
8695
8696@example
8697@group
8698(@value{GDBP}) whatis v
8699type = struct complex
8700(@value{GDBP}) ptype v
8701type = struct complex @{
8702 double real;
8703 double imag;
8704@}
8705@end group
8706@end example
8707
8708@noindent
8709As with @code{whatis}, using @code{ptype} without an argument refers to
8710the 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
d4f3574e 8715Print a brief description of all types whose names match @var{regexp}
c906108c
SS
8716(or all types in your program, if you supply no argument). Each
8717complete 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
d4f3574e 8719names include the string @code{value}, but @samp{i type ^value$} gives
c906108c
SS
8720information only on types whose complete name is @code{value}.
8721
8722This command differs from @code{ptype} in two ways: first, like
8723@code{whatis}, it does not print a detailed description; second, it
8724lists all source files where a type is defined.
8725
b37052ae
EZ
8726@kindex info scope
8727@cindex local variables
8728@item info scope @var{addr}
8729List all the variables local to a particular scope. This command
8730accepts a location---a function name, a source line, or an address
8731preceded by a @samp{*}, and prints all the variables local to the
8732scope defined by that location. For example:
8733
8734@smallexample
8735(@value{GDBP}) @b{info scope command_line_handler}
8736Scope for command_line_handler:
8737Symbol rl is an argument at stack/frame offset 8, length 4.
8738Symbol linebuffer is in static storage at address 0x150a18, length 4.
8739Symbol linelength is in static storage at address 0x150a1c, length 4.
8740Symbol p is a local variable in register $esi, length 4.
8741Symbol p1 is a local variable in register $ebx, length 4.
8742Symbol nline is a local variable in register $edx, length 4.
8743Symbol repeat is a local variable at frame offset -8, length 4.
8744@end smallexample
8745
f5c37c66
EZ
8746@noindent
8747This command is especially useful for determining what data to collect
8748during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
8749collect}.
8750
c906108c
SS
8751@kindex info source
8752@item info source
8753Show the name of the current source file---that is, the source file for
8754the function containing the current point of execution---and the language
8755it was written in.
8756
8757@kindex info sources
8758@item info sources
8759Print the names of all source files in your program for which there is
8760debugging information, organized into two lists: files whose symbols
8761have already been read, and files whose symbols will be read when needed.
8762
8763@kindex info functions
8764@item info functions
8765Print the names and data types of all defined functions.
8766
8767@item info functions @var{regexp}
8768Print the names and data types of all defined functions
8769whose names contain a match for regular expression @var{regexp}.
8770Thus, @samp{info fun step} finds all functions whose names
8771include @code{step}; @samp{info fun ^step} finds those whose names
1c5dfdad
MS
8772start with @code{step}. If a function name contains characters
8773that conflict with the regular expression language (eg.
8774@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
8775
8776@kindex info variables
8777@item info variables
8778Print the names and data types of all variables that are declared
8779outside of functions (i.e., excluding local variables).
8780
8781@item info variables @var{regexp}
8782Print the names and data types of all variables (except for local
8783variables) whose names contain a match for regular expression
8784@var{regexp}.
8785
8786@ignore
8787This was never implemented.
8788@kindex info methods
8789@item info methods
8790@itemx info methods @var{regexp}
8791The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
8792methods within C@t{++} program, or (with the @var{regexp} argument) a
8793specific set of methods found in the various C@t{++} classes. Many
8794C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
8795from the @code{ptype} command can be overwhelming and hard to use. The
8796@code{info-methods} command filters the methods, printing only those
8797which match the regular-expression @var{regexp}.
8798@end ignore
8799
c906108c
SS
8800@cindex reloading symbols
8801Some systems allow individual object files that make up your program to
7a292a7a
SS
8802be replaced without stopping and restarting your program. For example,
8803in VxWorks you can simply recompile a defective object file and keep on
8804running. If you are running on one of these systems, you can allow
8805@value{GDBN} to reload the symbols for automatically relinked modules:
c906108c
SS
8806
8807@table @code
8808@kindex set symbol-reloading
8809@item set symbol-reloading on
8810Replace symbol definitions for the corresponding source file when an
8811object file with a particular name is seen again.
8812
8813@item set symbol-reloading off
6d2ebf8b
SS
8814Do not replace symbol definitions when encountering object files of the
8815same name more than once. This is the default state; if you are not
8816running on a system that permits automatic relinking of modules, you
8817should leave @code{symbol-reloading} off, since otherwise @value{GDBN}
8818may discard symbols when linking large programs, that may contain
8819several modules (from different directories or libraries) with the same
8820name.
c906108c
SS
8821
8822@kindex show symbol-reloading
8823@item show symbol-reloading
8824Show the current @code{on} or @code{off} setting.
8825@end table
c906108c 8826
c906108c
SS
8827@kindex set opaque-type-resolution
8828@item set opaque-type-resolution on
8829Tell @value{GDBN} to resolve opaque types. An opaque type is a type
8830declared as a pointer to a @code{struct}, @code{class}, or
8831@code{union}---for example, @code{struct MyType *}---that is used in one
8832source file although the full declaration of @code{struct MyType} is in
8833another source file. The default is on.
8834
8835A change in the setting of this subcommand will not take effect until
8836the next time symbols for a file are loaded.
8837
8838@item set opaque-type-resolution off
8839Tell @value{GDBN} not to resolve opaque types. In this case, the type
8840is 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
8847Show whether opaque types are resolved or not.
c906108c
SS
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}
8856Write a dump of debugging symbol data into the file @var{filename}.
8857These commands are used to debug the @value{GDBN} symbol-reading code. Only
8858symbols with debugging data are included. If you use @samp{maint print
8859symbols}, @value{GDBN} includes all the symbols for which it has already
8860collected full details: that is, @var{filename} reflects symbols for
8861only those files whose symbols @value{GDBN} has read. You can use the
8862command @code{info sources} to find out which files these are. If you
8863use @samp{maint print psymbols} instead, the dump shows information about
8864symbols that @value{GDBN} only knows partially---that is, symbols defined in
8865files that @value{GDBN} has skimmed, but not yet read completely. Finally,
8866@samp{maint print msymbols} dumps just the minimal symbol information
8867required 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
6d2ebf8b 8872@node Altering
c906108c
SS
8873@chapter Altering Execution
8874
8875Once you think you have found an error in your program, you might want to
8876find out for certain whether correcting the apparent error would lead to
8877correct results in the rest of the run. You can find the answer by
8878experiment, using the @value{GDBN} features for altering execution of the
8879program.
8880
8881For example, you can store new values into variables or memory
7a292a7a
SS
8882locations, give your program a signal, restart it at a different
8883address, or even return prematurely from a function.
c906108c
SS
8884
8885@menu
8886* Assignment:: Assignment to variables
8887* Jumping:: Continuing at a different address
c906108c 8888* Signaling:: Giving your program a signal
c906108c
SS
8889* Returning:: Returning from a function
8890* Calling:: Calling your program's functions
8891* Patching:: Patching your program
8892@end menu
8893
6d2ebf8b 8894@node Assignment
c906108c
SS
8895@section Assignment to variables
8896
8897@cindex assignment
8898@cindex setting variables
8899To alter the value of a variable, evaluate an assignment expression.
8900@xref{Expressions, ,Expressions}. For example,
8901
8902@example
8903print x=4
8904@end example
8905
8906@noindent
8907stores the value 4 into the variable @code{x}, and then prints the
5d161b24 8908value of the assignment expression (which is 4).
c906108c
SS
8909@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
8910information on operators in supported languages.
c906108c
SS
8911
8912@kindex set variable
8913@cindex variables, setting
8914If 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
8916really the same as @code{print} except that the expression's value is
8917not printed and is not put in the value history (@pxref{Value History,
8918,Value history}). The expression is evaluated only for its effects.
8919
c906108c
SS
8920If the beginning of the argument string of the @code{set} command
8921appears identical to a @code{set} subcommand, use the @code{set
8922variable} command instead of just @code{set}. This command is identical
8923to @code{set} except for its lack of subcommands. For example, if your
8924program has a variable @code{width}, you get an error if you try to set
8925a new value with just @samp{set width=13}, because @value{GDBN} has the
8926command @code{set width}:
8927
8928@example
8929(@value{GDBP}) whatis width
8930type = double
8931(@value{GDBP}) p width
8932$4 = 13
8933(@value{GDBP}) set width=47
8934Invalid syntax in expression.
8935@end example
8936
8937@noindent
8938The invalid expression, of course, is @samp{=47}. In
8939order to actually set the program's variable @code{width}, use
8940
8941@example
8942(@value{GDBP}) set var width=47
8943@end example
53a5351d 8944
c906108c
SS
8945Because the @code{set} command has many subcommands that can conflict
8946with 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
8948your program has a variable @code{g}, you run into problems if you try
8949to set a new value with just @samp{set g=4}, because @value{GDBN} has
8950the command @code{set gnutarget}, abbreviated @code{set g}:
8951
8952@example
8953@group
8954(@value{GDBP}) whatis g
8955type = double
8956(@value{GDBP}) p g
8957$1 = 1
8958(@value{GDBP}) set g=4
2df3850c 8959(@value{GDBP}) p g
c906108c
SS
8960$2 = 1
8961(@value{GDBP}) r
8962The program being debugged has been started already.
8963Start it from the beginning? (y or n) y
8964Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
8965"/home/smith/cc_progs/a.out": can't open to read symbols:
8966 Invalid bfd target.
c906108c
SS
8967(@value{GDBP}) show g
8968The current BFD target is "=4".
8969@end group
8970@end example
8971
8972@noindent
8973The 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
c906108c
SS
8980
8981@value{GDBN} allows more implicit conversions in assignments than C; you can
8982freely store an integer value into a pointer variable or vice versa,
8983and you can convert any structure to any other structure that is the
8984same length or shorter.
8985@comment FIXME: how do structs align/pad in these conversions?
8986@comment /doc@cygnus.com 18dec1990
8987
8988To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
8989construct to generate a value of specified type at a specified address
8990(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
8991to memory location @code{0x83040} as an integer (which implies a certain size
8992and representation in memory), and
8993
8994@example
8995set @{int@}0x83040 = 4
8996@end example
8997
8998@noindent
8999stores the value 4 into that memory location.
9000
6d2ebf8b 9001@node Jumping
c906108c
SS
9002@section Continuing at a different address
9003
9004Ordinarily, when you continue your program, you do so at the place where
9005it stopped, with the @code{continue} command. You can instead continue at
9006an address of your own choosing, with the following commands:
9007
9008@table @code
9009@kindex jump
9010@item jump @var{linespec}
9011Resume execution at line @var{linespec}. Execution stops again
9012immediately if there is a breakpoint there. @xref{List, ,Printing
9013source lines}, for a description of the different forms of
9014@var{linespec}. It is common practice to use the @code{tbreak} command
9015in conjunction with @code{jump}. @xref{Set Breaks, ,Setting
9016breakpoints}.
9017
9018The @code{jump} command does not change the current stack frame, or
9019the stack pointer, or the contents of any memory location or any
9020register other than the program counter. If line @var{linespec} is in
9021a different function from the one currently executing, the results may
9022be bizarre if the two functions expect different patterns of arguments or
9023of local variables. For this reason, the @code{jump} command requests
9024confirmation if the specified line is not in the function currently
9025executing. However, even bizarre results are predictable if you are
9026well acquainted with the machine-language code of your program.
9027
9028@item jump *@var{address}
9029Resume execution at the instruction at address @var{address}.
9030@end table
9031
c906108c 9032@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
9033On many systems, you can get much the same effect as the @code{jump}
9034command by storing a new value into the register @code{$pc}. The
9035difference is that this does not start your program running; it only
9036changes the address of where it @emph{will} run when you continue. For
9037example,
c906108c
SS
9038
9039@example
9040set $pc = 0x485
9041@end example
9042
9043@noindent
9044makes the next @code{continue} command or stepping command execute at
9045address @code{0x485}, rather than at the address where your program stopped.
9046@xref{Continuing and Stepping, ,Continuing and stepping}.
c906108c
SS
9047
9048The most common occasion to use the @code{jump} command is to back
9049up---perhaps with more breakpoints set---over a portion of a program
9050that has already executed, in order to examine its execution in more
9051detail.
9052
c906108c 9053@c @group
6d2ebf8b 9054@node Signaling
c906108c
SS
9055@section Giving your program a signal
9056
9057@table @code
9058@kindex signal
9059@item signal @var{signal}
9060Resume execution where your program stopped, but immediately give it the
9061signal @var{signal}. @var{signal} can be the name or the number of a
9062signal. For example, on many systems @code{signal 2} and @code{signal
9063SIGINT} are both ways of sending an interrupt signal.
9064
9065Alternatively, if @var{signal} is zero, continue execution without
9066giving a signal. This is useful when your program stopped on account of
9067a signal and would ordinary see the signal when resumed with the
9068@code{continue} command; @samp{signal 0} causes it to resume without a
9069signal.
9070
9071@code{signal} does not repeat when you press @key{RET} a second time
9072after executing the command.
9073@end table
9074@c @end group
9075
9076Invoking the @code{signal} command is not the same as invoking the
9077@code{kill} utility from the shell. Sending a signal with @code{kill}
9078causes @value{GDBN} to decide what to do with the signal depending on
9079the signal handling tables (@pxref{Signals}). The @code{signal} command
9080passes the signal directly to your program.
9081
c906108c 9082
6d2ebf8b 9083@node Returning
c906108c
SS
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}
9091You can cancel execution of a function call with the @code{return}
9092command. If you give an
9093@var{expression} argument, its value is used as the function's return
9094value.
9095@end table
9096
9097When 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
9099discarded frame return prematurely. If you wish to specify a value to
9100be returned, give that value as the argument to @code{return}.
9101
9102This pops the selected stack frame (@pxref{Selection, ,Selecting a
9103frame}), and any other frames inside of it, leaving its caller as the
9104innermost remaining frame. That frame becomes selected. The
9105specified value is stored in the registers used for returning values
9106of functions.
9107
9108The @code{return} command does not resume execution; it leaves the
9109program stopped in the state that would exist if the function had just
9110returned. In contrast, the @code{finish} command (@pxref{Continuing
9111and Stepping, ,Continuing and stepping}) resumes execution until the
9112selected stack frame returns naturally.
9113
6d2ebf8b 9114@node Calling
c906108c
SS
9115@section Calling program functions
9116
9117@cindex calling functions
9118@kindex call
9119@table @code
9120@item call @var{expr}
9121Evaluate the expression @var{expr} without displaying @code{void}
9122returned values.
9123@end table
9124
9125You can use this variant of the @code{print} command if you want to
9126execute a function from your program, but without cluttering the output
5d161b24
DB
9127with @code{void} returned values. If the result is not void, it
9128is printed and saved in the value history.
c906108c 9129
7d86b5d5
AC
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.
c906108c 9135
6d2ebf8b 9136@node Patching
c906108c 9137@section Patching programs
7a292a7a 9138
c906108c
SS
9139@cindex patching binaries
9140@cindex writing into executables
c906108c 9141@cindex writing into corefiles
c906108c 9142
7a292a7a
SS
9143By default, @value{GDBN} opens the file containing your program's
9144executable code (or the corefile) read-only. This prevents accidental
9145alterations to machine code; but it also prevents you from intentionally
9146patching your program's binary.
c906108c
SS
9147
9148If you'd like to be able to patch the binary, you can specify that
9149explicitly with the @code{set write} command. For example, you might
9150want to turn on internal debugging flags, or even to make emergency
9151repairs.
9152
9153@table @code
9154@kindex set write
9155@item set write on
9156@itemx set write off
7a292a7a
SS
9157If you specify @samp{set write on}, @value{GDBN} opens executable and
9158core files for both reading and writing; if you specify @samp{set write
c906108c
SS
9159off} (the default), @value{GDBN} opens them read-only.
9160
9161If you have already loaded a file, you must load it again (using the
7a292a7a
SS
9162@code{exec-file} or @code{core-file} command) after changing @code{set
9163write}, for your new setting to take effect.
c906108c
SS
9164
9165@item show write
9166@kindex show write
7a292a7a
SS
9167Display whether executable files and core files are opened for writing
9168as well as reading.
c906108c
SS
9169@end table
9170
6d2ebf8b 9171@node GDB Files
c906108c
SS
9172@chapter @value{GDBN} Files
9173
7a292a7a
SS
9174@value{GDBN} needs to know the file name of the program to be debugged,
9175both in order to read its symbol table and in order to start your
9176program. To debug a core dump of a previous run, you must also tell
9177@value{GDBN} the name of the core dump file.
c906108c
SS
9178
9179@menu
9180* Files:: Commands to specify files
9181* Symbol Errors:: Errors reading symbol files
9182@end menu
9183
6d2ebf8b 9184@node Files
c906108c 9185@section Commands to specify files
c906108c 9186
7a292a7a 9187@cindex symbol table
c906108c 9188@cindex core dump file
7a292a7a
SS
9189
9190You may want to specify executable and core dump file names. The usual
9191way to do this is at start-up time, using the arguments to
9192@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
9193Out of @value{GDBN}}).
c906108c
SS
9194
9195Occasionally 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
9197a file you want to use. In these situations the @value{GDBN} commands
9198to specify new files are useful.
9199
9200@table @code
9201@cindex executable file
9202@kindex file
9203@item file @var{filename}
9204Use @var{filename} as the program to be debugged. It is read for its
9205symbols and for the contents of pure memory. It is also the program
9206executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
9207directory 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
9209directories to search, just as the shell does when looking for a program
9210to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
9211and your program, using the @code{path} command.
9212
6d2ebf8b 9213On systems with memory-mapped files, an auxiliary file named
c906108c
SS
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
9217descriptions of the file options @samp{-mapped} and @samp{-readnow}
9218(available on the command line, and with the commands @code{file},
5d161b24 9219@code{symbol-file}, or @code{add-symbol-file}, described below),
c906108c 9220for more information.
c906108c
SS
9221
9222@item file
9223@code{file} with no argument makes @value{GDBN} discard any information it
9224has on both executable file and the symbol table.
9225
9226@kindex exec-file
9227@item exec-file @r{[} @var{filename} @r{]}
9228Specify that the program to be run (but not the symbol table) is found
9229in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
9230if necessary to locate your program. Omitting @var{filename} means to
9231discard information on the executable file.
9232
9233@kindex symbol-file
9234@item symbol-file @r{[} @var{filename} @r{]}
9235Read symbol table information from file @var{filename}. @code{PATH} is
9236searched when necessary. Use the @code{file} command to get both symbol
9237table and program to run from the same file.
9238
9239@code{symbol-file} with no argument clears out @value{GDBN} information on your
9240program's symbol table.
9241
5d161b24 9242The @code{symbol-file} command causes @value{GDBN} to forget the contents
c906108c
SS
9243of its convenience variables, the value history, and all breakpoints and
9244auto-display expressions. This is because they may contain pointers to
9245the internal data recording symbols and data types, which are part of
9246the old symbol table data being discarded inside @value{GDBN}.
9247
9248@code{symbol-file} does not repeat if you press @key{RET} again after
9249executing it once.
9250
9251When @value{GDBN} is configured for a particular environment, it
9252understands debugging information in whatever format is the standard
9253generated for that environment; you may use either a @sc{gnu} compiler, or
9254other compilers that adhere to the local conventions.
c906108c
SS
9255Best results are usually obtained from @sc{gnu} compilers; for example,
9256using @code{@value{GCC}} you can generate debugging information for
9257optimized code.
c906108c
SS
9258
9259For most kinds of object files, with the exception of old SVR3 systems
9260using COFF, the @code{symbol-file} command does not normally read the
9261symbol table in full right away. Instead, it scans the symbol table
9262quickly to find which source files and which symbols are present. The
9263details are read later, one source file at a time, as they are needed.
9264
9265The purpose of this two-stage reading strategy is to make @value{GDBN}
9266start up faster. For the most part, it is invisible except for
9267occasional pauses while the symbol table details for a particular source
9268file are being read. (The @code{set verbose} command can turn these
9269pauses into messages if desired. @xref{Messages/Warnings, ,Optional
9270warnings and messages}.)
9271
c906108c
SS
9272We have not implemented the two-stage strategy for COFF yet. When the
9273symbol table is stored in COFF format, @code{symbol-file} reads the
9274symbol table data in full right away. Note that ``stabs-in-COFF''
9275still does the two-stage strategy, since the debug info is actually
9276in 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{]}
9286You can override the @value{GDBN} two-stage strategy for reading symbol
9287tables by using the @samp{-readnow} option with any of the commands that
9288load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 9289entire symbol table available.
c906108c 9290
c906108c
SS
9291If memory-mapped files are available on your system through the
9292@code{mmap} system call, you can use another option, @samp{-mapped}, to
9293cause @value{GDBN} to write the symbols for your program into a reusable
9294file. Future @value{GDBN} debugging sessions map in symbol information
9295from this auxiliary symbol file (if the program has not changed), rather
9296than spending time reading the symbol table from the executable
9297program. Using the @samp{-mapped} option has the same effect as
9298starting @value{GDBN} with the @samp{-mapped} command-line option.
9299
9300You can use both options together, to make sure the auxiliary symbol
9301file has all the symbol information for your program.
9302
9303The 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
9305than the corresponding executable), @value{GDBN} always attempts to use
9306it when you debug @var{myprog}; no special options or commands are
9307needed.
9308
9309The @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}
9311symbol table. It cannot be shared across multiple host platforms.
c906108c
SS
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{]}
9324Specify the whereabouts of a core dump file to be used as the ``contents
9325of memory''. Traditionally, core files contain only some parts of the
9326address space of the process that generated them; @value{GDBN} can access the
9327executable file itself for other parts.
9328
9329@code{core-file} with no argument specifies that no core file is
9330to be used.
9331
9332Note that the core file is ignored when your program is actually running
7a292a7a
SS
9333under @value{GDBN}. So, if you have been running your program and you
9334wish to debug a core file instead, you must kill the subprocess in which
9335the program is running. To do this, use the @code{kill} command
c906108c 9336(@pxref{Kill Process, ,Killing the child process}).
c906108c 9337
c906108c
SS
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{]}
17d9d558 9342@itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address} @dots{}
96a2c332
SS
9343The @code{add-symbol-file} command reads additional symbol table
9344information from the file @var{filename}. You would use this command
9345when @var{filename} has been dynamically loaded (by some other means)
9346into the program that is running. @var{address} should be the memory
9347address at which the file has been loaded; @value{GDBN} cannot figure
d167840f
EZ
9348this out for itself. You can additionally specify an arbitrary number
9349of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
9350section name and base address for that section. You can specify any
9351@var{address} as an expression.
c906108c
SS
9352
9353The symbol table of the file @var{filename} is added to the symbol table
9354originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
9355@code{add-symbol-file} command any number of times; the new symbol data
9356thus read keeps adding to the old. To discard all old symbol data
9357instead, use the @code{symbol-file} command without any arguments.
c906108c 9358
17d9d558
JB
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
9364Although @var{filename} is typically a shared library file, an
9365executable file, or some other object file which has been fully
9366relocated for loading into a process, you can also load symbolic
9367information from relocatable @file{.o} files, as long as:
9368
9369@itemize @bullet
9370@item
9371the file's symbolic information refers only to linker symbols defined in
9372that file, not to symbols defined by other object files,
9373@item
9374every section the file's symbolic information refers to has actually
9375been loaded into the inferior, as it appears in the file, and
9376@item
9377you can determine the address at which every section was loaded, and
9378provide these to the @code{add-symbol-file} command.
9379@end itemize
9380
9381@noindent
9382Some embedded operating systems, like Sun Chorus and VxWorks, can load
9383relocatable files into an already running program; such systems
9384typically make the requirements above easy to meet. However, it's
9385important to recognize that many native systems use complex link
9386procedures (@code{.linkonce} section factoring and C++ constructor table
9387assembly, for example) that make the requirements difficult to meet. In
9388general, one cannot assume that using @code{add-symbol-file} to read a
9389relocatable object file's symbolic information will have the same effect
9390as linking the relocatable object file into the program in the normal
9391way.
9392
c906108c
SS
9393@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
9394
9395You can use the @samp{-mapped} and @samp{-readnow} options just as with
9396the @code{symbol-file} command, to change how @value{GDBN} manages the symbol
9397table information for @var{filename}.
9398
9399@kindex add-shared-symbol-file
9400@item add-shared-symbol-file
9401The @code{add-shared-symbol-file} command can be used only under Harris' CXUX
5d161b24
DB
9402operating system for the Motorola 88k. @value{GDBN} automatically looks for
9403shared libraries, however if @value{GDBN} does not find yours, you can run
c906108c 9404@code{add-shared-symbol-file}. It takes no arguments.
c906108c 9405
c906108c
SS
9406@kindex section
9407@item section
5d161b24
DB
9408The @code{section} command changes the base address of section SECTION of
9409the exec file to ADDR. This can be used if the exec file does not contain
9410section addresses, (such as in the a.out format), or when the addresses
9411specified in the file itself are wrong. Each section must be changed
d4f3574e
SS
9412separately. The @code{info files} command, described below, lists all
9413the sections and their addresses.
c906108c
SS
9414
9415@kindex info files
9416@kindex info target
9417@item info files
9418@itemx info target
7a292a7a
SS
9419@code{info files} and @code{info target} are synonymous; both print the
9420current target (@pxref{Targets, ,Specifying a Debugging Target}),
9421including the names of the executable and core dump files currently in
9422use by @value{GDBN}, and the files from which symbols were loaded. The
9423command @code{help target} lists all possible targets rather than
9424current ones.
9425
fe95c787
MS
9426@kindex maint info sections
9427@item maint info sections
9428Another command that can give you extra information about program sections
9429is @code{maint info sections}. In addition to the section information
9430displayed by @code{info files}, this command displays the flags and file
9431offset of each section in the executable and core dump files. In addition,
9432@code{maint info sections} provides the following command options (which
9433may be arbitrarily combined):
9434
9435@table @code
9436@item ALLOBJ
9437Display sections for all loaded object files, including shared libraries.
9438@item @var{sections}
6600abed 9439Display info only for named @var{sections}.
fe95c787
MS
9440@item @var{section-flags}
9441Display info only for sections for which @var{section-flags} are true.
9442The section flags that @value{GDBN} currently knows about are:
9443@table @code
9444@item ALLOC
9445Section will have space allocated in the process when loaded.
9446Set for all sections except those containing debug information.
9447@item LOAD
9448Section will be loaded from the file into the child process memory.
9449Set for pre-initialized code and data, clear for @code{.bss} sections.
9450@item RELOC
9451Section needs to be relocated before loading.
9452@item READONLY
9453Section cannot be modified by the child process.
9454@item CODE
9455Section contains executable code only.
6600abed 9456@item DATA
fe95c787
MS
9457Section contains data only (no executable code).
9458@item ROM
9459Section will reside in ROM.
9460@item CONSTRUCTOR
9461Section contains data for constructor/destructor lists.
9462@item HAS_CONTENTS
9463Section is not empty.
9464@item NEVER_LOAD
9465An instruction to the linker to not output the section.
9466@item COFF_SHARED_LIBRARY
9467A notification to the linker that the section contains
9468COFF shared library information.
9469@item IS_COMMON
9470Section contains common symbols.
9471@end table
9472@end table
c906108c
SS
9473@end table
9474
9475All file-specifying commands allow both absolute and relative file names
9476as arguments. @value{GDBN} always converts the file name to an absolute file
9477name and remembers it that way.
9478
c906108c 9479@cindex shared libraries
c906108c
SS
9480@value{GDBN} supports HP-UX, SunOS, SVr4, Irix 5, and IBM RS/6000 shared
9481libraries.
53a5351d 9482
c906108c
SS
9483@value{GDBN} automatically loads symbol definitions from shared libraries
9484when 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
9486references to a function in a shared library, however---unless you are
9487debugging a core file).
53a5351d
JM
9488
9489On HP-UX, if the program loads a library explicitly, @value{GDBN}
9490automatically loads the symbols at the time of the @code{shl_load} call.
9491
c906108c
SS
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
b7209cb4
FF
9496There are times, however, when you may wish to not automatically load
9497symbol definitions from shared libraries, such as when they are
9498particularly large or there are many of them.
9499
9500To control the automatic loading of shared library symbols, use the
9501commands:
9502
9503@table @code
9504@kindex set auto-solib-add
9505@item set auto-solib-add @var{mode}
9506If @var{mode} is @code{on}, symbols from all shared object libraries
9507will be loaded automatically when the inferior begins execution, you
9508attach to an independently started inferior, or when the dynamic linker
9509informs @value{GDBN} that a new library has been loaded. If @var{mode}
9510is @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
9515Display the current autoloading mode.
9516@end table
9517
9518To explicitly load shared library symbols, use the @code{sharedlibrary}
9519command:
9520
c906108c
SS
9521@table @code
9522@kindex info sharedlibrary
9523@kindex info share
9524@item info share
9525@itemx info sharedlibrary
9526Print 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}
c906108c
SS
9532Load shared object library symbols for files matching a
9533Unix regular expression.
9534As with files loaded automatically, it only loads shared libraries
9535required 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
9537loaded.
9538@end table
9539
b7209cb4
FF
9540On some systems, such as HP-UX systems, @value{GDBN} supports
9541autoloading shared library symbols until a limiting threshold size is
9542reached. This provides the benefit of allowing autoloading to remain on
9543by default, but avoids autoloading excessively large shared libraries,
9544up to a threshold that is initially set, but which you can modify if you
9545wish.
c906108c
SS
9546
9547Beyond that threshold, symbols from shared libraries must be explicitly
d4f3574e
SS
9548loaded. To load these symbols, use the command @code{sharedlibrary
9549@var{filename}}. The base address of the shared library is determined
c906108c
SS
9550automatically by @value{GDBN} and need not be specified.
9551
9552To display or set the threshold, use the commands:
9553
9554@table @code
b7209cb4
FF
9555@kindex set auto-solib-limit
9556@item set auto-solib-limit @var{threshold}
9557Set the autoloading size threshold, in an integral number of megabytes.
9558If @var{threshold} is nonzero and shared library autoloading is enabled,
9559symbols from all shared object libraries will be loaded until the total
9560size of the loaded shared library symbols exceeds this threshold.
c906108c 9561Otherwise, symbols must be loaded manually, using the
b7209cb4
FF
9562@code{sharedlibrary} command. The default threshold is 100 (i.e. 100
9563Mb).
c906108c 9564
b7209cb4
FF
9565@kindex show auto-solib-limit
9566@item show auto-solib-limit
c906108c
SS
9567Display the current autoloading size threshold, in megabytes.
9568@end table
c906108c 9569
6d2ebf8b 9570@node Symbol Errors
c906108c
SS
9571@section Errors reading symbol files
9572
9573While reading a symbol file, @value{GDBN} occasionally encounters problems,
9574such as symbol types it does not recognize, or known bugs in compiler
9575output. By default, @value{GDBN} does not notify you of such problems, since
9576they are relatively common and primarily of interest to people
9577debugging compilers. If you are interested in seeing information
9578about ill-constructed symbol tables, you can either ask @value{GDBN} to print
9579only one message about each such type of problem, no matter how many
9580times the problem occurs; or you can ask @value{GDBN} to print more messages,
9581to see how many times the problems occur, with the @code{set
9582complaints} command (@pxref{Messages/Warnings, ,Optional warnings and
9583messages}).
9584
9585The messages currently printed, and their meanings, include:
9586
9587@table @code
9588@item inner block not inside outer block in @var{symbol}
9589
9590The symbol information shows where symbol scopes begin and end
9591(such as at the start of a function or a block of statements). This
9592error indicates that an inner scope block is not fully contained
9593in its outer scope blocks.
9594
9595@value{GDBN} circumvents the problem by treating the inner block as if it had
9596the same scope as the outer block. In the error message, @var{symbol}
9597may be shown as ``@code{(don't know)}'' if the outer block is not a
9598function.
9599
9600@item block at @var{address} out of order
9601
9602The symbol information for symbol scope blocks should occur in
9603order of increasing addresses. This error indicates that it does not
9604do so.
9605
9606@value{GDBN} does not circumvent this problem, and has trouble
9607locating symbols in the source file whose symbols it is reading. (You
9608can often determine what source file is affected by specifying
9609@code{set verbose on}. @xref{Messages/Warnings, ,Optional warnings and
9610messages}.)
9611
9612@item bad block start address patched
9613
9614The symbol information for a symbol scope block has a start address
9615smaller than the address of the preceding source line. This is known
9616to 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
9619starting on the previous source line.
9620
9621@item bad string table offset in symbol @var{n}
9622
9623@cindex foo
9624Symbol number @var{n} contains a pointer into the string table which is
9625larger than the size of the string table.
9626
9627@value{GDBN} circumvents the problem by considering the symbol to have the
9628name @code{foo}, which may cause other problems if many symbols end up
9629with this name.
9630
9631@item unknown symbol type @code{0x@var{nn}}
9632
7a292a7a
SS
9633The symbol information contains new data types that @value{GDBN} does
9634not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 9635uncomprehended information, in hexadecimal.
c906108c 9636
7a292a7a
SS
9637@value{GDBN} circumvents the error by ignoring this symbol information.
9638This usually allows you to debug your program, though certain symbols
c906108c 9639are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
9640debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
9641on @code{complain}, then go up to the function @code{read_dbx_symtab}
9642and examine @code{*bufp} to see the symbol.
c906108c
SS
9643
9644@item stub type has NULL name
c906108c 9645
7a292a7a 9646@value{GDBN} could not find the full definition for a struct or class.
c906108c 9647
7a292a7a 9648@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 9649The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
9650information that recent versions of the compiler should have output for
9651it.
c906108c
SS
9652
9653@item info mismatch between compiler and debugger
9654
9655@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 9656
c906108c
SS
9657@end table
9658
6d2ebf8b 9659@node Targets
c906108c 9660@chapter Specifying a Debugging Target
7a292a7a 9661
c906108c
SS
9662@cindex debugging target
9663@kindex target
9664
9665A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
9666
9667Often, @value{GDBN} runs in the same host environment as your program;
9668in that case, the debugging target is specified as a side effect when
9669you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
9670flexibility---for example, running @value{GDBN} on a physically separate
9671host, or controlling a standalone system over a serial port or a
53a5351d
JM
9672realtime system over a TCP/IP connection---you can use the @code{target}
9673command to specify one of the target types configured for @value{GDBN}
9674(@pxref{Target Commands, ,Commands for managing targets}).
c906108c
SS
9675
9676@menu
9677* Active Targets:: Active targets
9678* Target Commands:: Commands for managing targets
c906108c
SS
9679* Byte Order:: Choosing target byte order
9680* Remote:: Remote debugging
96baa820 9681* KOD:: Kernel Object Display
c906108c
SS
9682
9683@end menu
9684
6d2ebf8b 9685@node Active Targets
c906108c 9686@section Active targets
7a292a7a 9687
c906108c
SS
9688@cindex stacking targets
9689@cindex active targets
9690@cindex multiple targets
9691
c906108c 9692There are three classes of targets: processes, core files, and
7a292a7a
SS
9693executable files. @value{GDBN} can work concurrently on up to three
9694active targets, one in each class. This allows you to (for example)
9695start a process and inspect its activity without abandoning your work on
9696a core file.
c906108c
SS
9697
9698For 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
9700well---presumably from a prior run that crashed and coredumped---then
9701@value{GDBN} has two active targets and uses them in tandem, looking
9702first in the corefile target, then in the executable file, to satisfy
9703requests for memory addresses. (Typically, these two classes of target
9704are complementary, since core files contain only a program's
9705read-write memory---variables and so on---plus machine status, while
9706executable files contain only the program text and initialized data.)
c906108c
SS
9707
9708When you type @code{run}, your executable file becomes an active process
7a292a7a
SS
9709target as well. When a process target is active, all @value{GDBN}
9710commands requesting memory addresses refer to that target; addresses in
9711an active core file or executable file target are obscured while the
9712process target is active.
c906108c 9713
7a292a7a
SS
9714Use the @code{core-file} and @code{exec-file} commands to select a new
9715core file or executable target (@pxref{Files, ,Commands to specify
c906108c 9716files}). To specify as a target a process that is already running, use
7a292a7a
SS
9717the @code{attach} command (@pxref{Attach, ,Debugging an already-running
9718process}).
c906108c 9719
6d2ebf8b 9720@node Target Commands
c906108c
SS
9721@section Commands for managing targets
9722
9723@table @code
9724@item target @var{type} @var{parameters}
7a292a7a
SS
9725Connects the @value{GDBN} host environment to a target machine or
9726process. A target is typically a protocol for talking to debugging
9727facilities. You use the argument @var{type} to specify the type or
9728protocol of the target machine.
c906108c
SS
9729
9730Further @var{parameters} are interpreted by the target protocol, but
9731typically include things like device names or host names to connect
9732with, process numbers, and baud rates.
c906108c
SS
9733
9734The @code{target} command does not repeat if you press @key{RET} again
9735after executing the command.
9736
9737@kindex help target
9738@item help target
9739Displays the names of all targets available. To display targets
9740currently selected, use either @code{info target} or @code{info files}
9741(@pxref{Files, ,Commands to specify files}).
9742
9743@item help target @var{name}
9744Describe a particular target, including any parameters necessary to
9745select it.
9746
9747@kindex set gnutarget
9748@item set gnutarget @var{args}
5d161b24 9749@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 9750knows whether it is reading an @dfn{executable},
5d161b24
DB
9751a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
9752with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
9753with @code{gnutarget} the @code{target} refers to a program, not a machine.
9754
d4f3574e 9755@quotation
c906108c
SS
9756@emph{Warning:} To specify a file format with @code{set gnutarget},
9757you must know the actual BFD name.
d4f3574e 9758@end quotation
c906108c 9759
d4f3574e
SS
9760@noindent
9761@xref{Files, , Commands to specify files}.
c906108c 9762
5d161b24 9763@kindex show gnutarget
c906108c
SS
9764@item show gnutarget
9765Use 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,
9768and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
9769@end table
9770
c906108c
SS
9771Here are some common targets (available, or not, depending on the GDB
9772configuration):
c906108c
SS
9773
9774@table @code
9775@kindex target exec
9776@item target exec @var{program}
9777An executable file. @samp{target exec @var{program}} is the same as
9778@samp{exec-file @var{program}}.
9779
c906108c
SS
9780@kindex target core
9781@item target core @var{filename}
9782A core dump file. @samp{target core @var{filename}} is the same as
9783@samp{core-file @var{filename}}.
c906108c
SS
9784
9785@kindex target remote
9786@item target remote @var{dev}
9787Remote serial target in GDB-specific protocol. The argument @var{dev}
9788specifies what serial device to use for the connection (e.g.
9789@file{/dev/ttya}). @xref{Remote, ,Remote debugging}. @code{target remote}
d4f3574e 9790supports the @code{load} command. This is only useful if you have
c906108c
SS
9791some other way of getting the stub to the target system, and you can put
9792it somewhere in memory where it won't get clobbered by the download.
9793
c906108c
SS
9794@kindex target sim
9795@item target sim
2df3850c 9796Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213
JM
9797In general,
9798@example
9799 target sim
9800 load
9801 run
9802@end example
d4f3574e 9803@noindent
104c1213 9804works; however, you cannot assume that a specific memory map, device
d4f3574e 9805drivers, or even basic I/O is available, although some simulators do
104c1213
JM
9806provide these. For info about any processor-specific simulator details,
9807see the appropriate section in @ref{Embedded Processors, ,Embedded
9808Processors}.
9809
c906108c
SS
9810@end table
9811
104c1213 9812Some configurations may include these targets as well:
c906108c
SS
9813
9814@table @code
9815
c906108c
SS
9816@kindex target nrom
9817@item target nrom @var{dev}
9818NetROM ROM emulator. This target only supports downloading.
9819
c906108c
SS
9820@end table
9821
5d161b24 9822Different targets are available on different configurations of @value{GDBN};
c906108c 9823your configuration may have more or fewer targets.
c906108c
SS
9824
9825Many remote targets require you to download the executable's code
9826once you've successfully established a connection.
9827
9828@table @code
9829
9830@kindex load @var{filename}
9831@item load @var{filename}
c906108c
SS
9832Depending on what remote debugging facilities are configured into
9833@value{GDBN}, the @code{load} command may be available. Where it exists, it
9834is meant to make @var{filename} (an executable) available for debugging
9835on the remote system---by downloading, or dynamic linking, for example.
9836@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
9837the @code{add-symbol-file} command.
9838
9839If your @value{GDBN} does not have a @code{load} command, attempting to
9840execute it gets the error message ``@code{You can't do that when your
9841target is @dots{}}''
c906108c
SS
9842
9843The file is loaded at whatever address is specified in the executable.
9844For some object file formats, you can specify the load address when you
9845link the program; for other formats, like a.out, the object file format
9846specifies a fixed address.
9847@c FIXME! This would be a good place for an xref to the GNU linker doc.
9848
c906108c
SS
9849@code{load} does not repeat if you press @key{RET} again after using it.
9850@end table
9851
6d2ebf8b 9852@node Byte Order
c906108c 9853@section Choosing target byte order
7a292a7a 9854
c906108c
SS
9855@cindex choosing target byte order
9856@cindex target byte order
c906108c
SS
9857
9858Some types of processors, such as the MIPS, PowerPC, and Hitachi SH,
9859offer the ability to run either big-endian or little-endian byte
9860orders. Usually the executable or symbol will include a bit to
9861designate the endian-ness, and you will not need to worry about
9862which to use. However, you may still find it useful to adjust
d4f3574e 9863@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
9864
9865@table @code
9866@kindex set endian big
9867@item set endian big
9868Instruct @value{GDBN} to assume the target is big-endian.
9869
9870@kindex set endian little
9871@item set endian little
9872Instruct @value{GDBN} to assume the target is little-endian.
9873
9874@kindex set endian auto
9875@item set endian auto
9876Instruct @value{GDBN} to use the byte order associated with the
9877executable.
9878
9879@item show endian
9880Display @value{GDBN}'s current idea of the target byte order.
9881
9882@end table
9883
9884Note that these commands merely adjust interpretation of symbolic
9885data on the host, and that they have absolutely no effect on the
9886target system.
9887
6d2ebf8b 9888@node Remote
c906108c
SS
9889@section Remote debugging
9890@cindex remote debugging
9891
9892If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
9893@value{GDBN} in the usual way, it is often useful to use remote debugging.
9894For example, you might use remote debugging on an operating system kernel,
c906108c
SS
9895or on a small system which does not have a general purpose operating system
9896powerful enough to run a full-featured debugger.
9897
9898Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
9899to make this work with particular debugging targets. In addition,
5d161b24 9900@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
9901but not specific to any particular target system) which you can use if you
9902write the remote stubs---the code that runs on the remote system to
9903communicate with @value{GDBN}.
9904
9905Other remote targets may be available in your
9906configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 9907
6f05cf9f
AC
9908@node KOD
9909@section Kernel Object Display
9910
9911@cindex kernel object display
9912@cindex kernel object
9913@cindex KOD
9914
9915Some targets support kernel object display. Using this facility,
9916@value{GDBN} communicates specially with the underlying operating system
9917and can display information about operating system-level objects such as
9918mutexes and other synchronization objects. Exactly which objects can be
9919displayed is determined on a per-OS basis.
9920
9921Use 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
9928If @code{set os} succeeds, @value{GDBN} will display some information
9929about the operating system, and will create a new @code{info} command
9930which can be used to query the target. The @code{info} command is named
9931after the operating system:
c906108c 9932
6f05cf9f
AC
9933@example
9934(@value{GDBP}) info cisco
9935List of Cisco Kernel Objects
9936Object Description
9937any Any and all objects
9938@end example
9939
9940Further subcommands can be used to query about particular objects known
9941by the kernel.
9942
9943There is currently no way to determine whether a given operating system
9944is supported other than to try it.
9945
9946
9947@node Remote Debugging
9948@chapter Debugging remote programs
9949
6b2f586d
AC
9950@menu
9951* Server:: Using the gdbserver program
9952* NetWare:: Using the gdbserve.nlm program
9953* remote stub:: Implementing a remote stub
6b2f586d
AC
9954@end menu
9955
6f05cf9f
AC
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
9962allows 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,
9966because it requires essentially the same operating-system facilities
9967that @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,
9970because it is a much smaller program than @value{GDBN} itself. It is
9971also easier to port than all of @value{GDBN}, so you may be able to get
9972started more quickly on a new system by using @code{gdbserver}.
9973Finally, if you develop code for real-time systems, you may find that
9974the tradeoffs involved in real-time operation make it more convenient to
9975do as much development work as possible on another system, for example
9976by cross-compiling. You can use @code{gdbserver} to make a similar
9977choice for debugging.
9978
9979@value{GDBN} and @code{gdbserver} communicate via either a serial line
9980or a TCP connection, using the standard @value{GDBN} remote serial
9981protocol.
9982
9983@table @emph
9984@item On the target machine,
9985you 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
9987strip the program if necessary to save space. @value{GDBN} on the host
9988system does all the symbol handling.
9989
9990To use the server, you must tell it how to communicate with @value{GDBN};
9991the name of your program; and the arguments for your program. The
9992syntax is:
9993
9994@smallexample
9995target> 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
9999hostname 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
10004target> gdbserver /dev/com1 emacs foo.txt
10005@end smallexample
10006
10007@code{gdbserver} waits passively for the host @value{GDBN} to communicate
10008with it.
10009
10010To use a TCP connection instead of a serial line:
10011
10012@smallexample
10013target> gdbserver host:2345 emacs foo.txt
10014@end smallexample
10015
10016The only difference from the previous example is the first argument,
10017specifying that you are communicating with the host @value{GDBN} via
10018TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
10019expect 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
10021you want for the port number as long as it does not conflict with any
10022TCP ports already in use on the target system (for example, @code{23} is
10023reserved for @code{telnet}).@footnote{If you choose a port number that
10024conflicts with another service, @code{gdbserver} prints an error message
10025and 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,
10029you need an unstripped copy of your program, since @value{GDBN} needs
10030symbols and debugging information. Start up @value{GDBN} as usual,
10031using 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
10033running at anything other than 9600@dmn{bps}.) After that, use @code{target
10034remote} to establish communications with @code{gdbserver}. Its argument
10035is 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
10044communicates 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
10051communicates via a TCP connection to port 2345 on host @w{@file{the-target}}.
10052For TCP connections, you must start up @code{gdbserver} prior to using
10053the @code{target remote} command. Otherwise you may get an error whose
10054text 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
10063allows 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,
10067using the standard @value{GDBN} remote serial protocol.
10068
10069@table @emph
10070@item On the target machine,
10071you 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
10073can strip the program if necessary to save space. @value{GDBN} on the
10074host system does all the symbol handling.
10075
10076To use the server, you must tell it how to communicate with
10077@value{GDBN}; the name of your program; and the arguments for your
10078program. The syntax is:
10079
10080@smallexample
10081load 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
10086the baud rate used by the connection. @var{port} and @var{node} default
10087to 0, @var{baud} defaults to 9600@dmn{bps}.
10088
10089For example, to debug Emacs with the argument @samp{foo.txt}and
10090communicate with @value{GDBN} over serial port number 2 or board 1
10091using a 19200@dmn{bps} connection:
10092
10093@smallexample
10094load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
10095@end smallexample
10096
10097@item On the @value{GDBN} host machine,
10098you need an unstripped copy of your program, since @value{GDBN} needs
10099symbols and debugging information. Start up @value{GDBN} as usual,
10100using 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
10102running at anything other than 9600@dmn{bps}. After that, use @code{target
10103remote} to establish communications with @code{gdbserve.nlm}. Its
10104argument 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
10112communications with the server via serial line @file{/dev/ttyb}.
10113@end table
10114
10115@node remote stub
10116@section Implementing a remote stub
7a292a7a 10117
8e04817f
AC
10118@cindex debugging stub, example
10119@cindex remote stub, example
10120@cindex stub example, remote debugging
10121The stub files provided with @value{GDBN} implement the target side of the
10122communication protocol, and the @value{GDBN} side is implemented in the
10123@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
10124these subroutines to communicate, and ignore the details. (If you're
10125implementing your own stub file, you can still ignore the details: start
10126with one of the existing stub files. @file{sparc-stub.c} is the best
10127organized, and therefore the easiest to read.)
10128
104c1213
JM
10129@cindex remote serial debugging, overview
10130To debug a program running on another machine (the debugging
10131@dfn{target} machine), you must first arrange for all the usual
10132prerequisites for the program to run by itself. For example, for a C
10133program, you need:
c906108c 10134
104c1213
JM
10135@enumerate
10136@item
10137A startup routine to set up the C runtime environment; these usually
10138have a name like @file{crt0}. The startup routine may be supplied by
10139your hardware supplier, or you may have to write your own.
96baa820 10140
5d161b24 10141@item
d4f3574e 10142A C subroutine library to support your program's
104c1213 10143subroutine calls, notably managing input and output.
96baa820 10144
104c1213
JM
10145@item
10146A way of getting your program to the other machine---for example, a
10147download program. These are often supplied by the hardware
10148manufacturer, but you may have to write your own from hardware
10149documentation.
10150@end enumerate
96baa820 10151
104c1213
JM
10152The next step is to arrange for your program to use a serial port to
10153communicate with the machine where @value{GDBN} is running (the @dfn{host}
10154machine). In general terms, the scheme looks like this:
96baa820 10155
104c1213
JM
10156@table @emph
10157@item On the host,
10158@value{GDBN} already understands how to use this protocol; when everything
10159else 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,
10163you must link with your program a few special-purpose subroutines that
10164implement the @value{GDBN} remote serial protocol. The file containing these
10165subroutines is called a @dfn{debugging stub}.
10166
10167On 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
96baa820 10171
104c1213
JM
10172The debugging stub is specific to the architecture of the remote
10173machine; for example, use @file{sparc-stub.c} to debug programs on
10174@sc{sparc} boards.
96baa820 10175
104c1213
JM
10176@cindex remote serial stub list
10177These working remote stubs are distributed with @value{GDBN}:
96baa820 10178
104c1213
JM
10179@table @code
10180
10181@item i386-stub.c
41afff9a 10182@cindex @file{i386-stub.c}
104c1213
JM
10183@cindex Intel
10184@cindex i386
10185For Intel 386 and compatible architectures.
10186
10187@item m68k-stub.c
41afff9a 10188@cindex @file{m68k-stub.c}
104c1213
JM
10189@cindex Motorola 680x0
10190@cindex m680x0
10191For Motorola 680x0 architectures.
10192
10193@item sh-stub.c
41afff9a 10194@cindex @file{sh-stub.c}
104c1213
JM
10195@cindex Hitachi
10196@cindex SH
10197For Hitachi SH architectures.
10198
10199@item sparc-stub.c
41afff9a 10200@cindex @file{sparc-stub.c}
104c1213
JM
10201@cindex Sparc
10202For @sc{sparc} architectures.
10203
10204@item sparcl-stub.c
41afff9a 10205@cindex @file{sparcl-stub.c}
104c1213
JM
10206@cindex Fujitsu
10207@cindex SparcLite
10208For Fujitsu @sc{sparclite} architectures.
10209
10210@end table
10211
10212The @file{README} file in the @value{GDBN} distribution may list other
10213recently 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
104c1213
JM
10219@end menu
10220
6d2ebf8b 10221@node Stub Contents
6f05cf9f 10222@subsection What the stub can do for you
104c1213
JM
10223
10224@cindex remote serial stub
10225The debugging stub for your architecture supplies these three
10226subroutines:
10227
10228@table @code
10229@item set_debug_traps
10230@kindex set_debug_traps
10231@cindex remote serial stub, initialization
10232This routine arranges for @code{handle_exception} to run when your
10233program stops. You must call this subroutine explicitly near the
10234beginning of your program.
10235
10236@item handle_exception
10237@kindex handle_exception
10238@cindex remote serial stub, main routine
10239This is the central workhorse, but your program never calls it
10240explicitly---the setup code arranges for @code{handle_exception} to
10241run when a trap is triggered.
10242
10243@code{handle_exception} takes control when your program stops during
10244execution (for example, on a breakpoint), and mediates communications
10245with @value{GDBN} on the host machine. This is where the communications
10246protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 10247representative on the target machine. It begins by sending summary
104c1213
JM
10248information on the state of your program, then continues to execute,
10249retrieving and transmitting any information @value{GDBN} needs, until you
10250execute 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
5d161b24 10252machine.
104c1213
JM
10253
10254@item breakpoint
10255@cindex @code{breakpoint} subroutine, remote
10256Use this auxiliary subroutine to make your program contain a
10257breakpoint. Depending on the particular situation, this may be the only
10258way for @value{GDBN} to get control. For instance, if your target
10259machine has some sort of interrupt button, you won't need to call this;
10260pressing the interrupt button transfers control to
10261@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
10262simply receiving characters on the serial port may also trigger a trap;
10263again, in that situation, you don't need to call @code{breakpoint} from
10264your own program---simply running @samp{target remote} from the host
5d161b24 10265@value{GDBN} session gets control.
104c1213
JM
10266
10267Call @code{breakpoint} if none of these is true, or if you simply want
10268to make certain your program stops at a predetermined point for the
10269start of your debugging session.
10270@end table
10271
6d2ebf8b 10272@node Bootstrapping
6f05cf9f 10273@subsection What you must do for the stub
104c1213
JM
10274
10275@cindex remote stub, support routines
10276The debugging stubs that come with @value{GDBN} are set up for a particular
10277chip architecture, but they have no information about the rest of your
10278debugging target machine.
10279
10280First of all you need to tell the stub how to communicate with the
10281serial port.
10282
10283@table @code
10284@item int getDebugChar()
10285@kindex getDebugChar
10286Write this subroutine to read a single character from the serial port.
10287It may be identical to @code{getchar} for your target system; a
10288different name is used to allow you to distinguish the two if you wish.
10289
10290@item void putDebugChar(int)
10291@kindex putDebugChar
10292Write this subroutine to write a single character to the serial port.
5d161b24 10293It may be identical to @code{putchar} for your target system; a
104c1213
JM
10294different 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
10299If you want @value{GDBN} to be able to stop your program while it is
10300running, you need to use an interrupt-driven serial driver, and arrange
10301for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
10302character). That is the character which @value{GDBN} uses to tell the
10303remote system to stop.
10304
10305Getting the debugging target to return the proper status to @value{GDBN}
10306probably requires changes to the standard stub; one quick and dirty way
10307is to just execute a breakpoint instruction (the ``dirty'' part is that
10308@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
10309
10310Other 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
10315Write this function to install @var{exception_address} in the exception
10316handling tables. You need to do this because the stub does not have any
10317way of knowing what the exception handling tables on your target system
10318are like (for example, the processor's table might be in @sc{rom},
10319containing entries which point to a table in @sc{ram}).
10320@var{exception_number} is the exception number which should be changed;
10321its meaning is architecture-dependent (for example, different numbers
10322might represent divide by zero, misaligned access, etc). When this
10323exception occurs, control should be transferred directly to
10324@var{exception_address}, and the processor state (stack, registers,
10325and so on) should be just as it is when a processor exception occurs. So if
10326you want to use a jump instruction to reach @var{exception_address}, it
10327should be a simple jump, not a jump to subroutine.
10328
10329For the 386, @var{exception_address} should be installed as an interrupt
10330gate so that interrupts are masked while the handler runs. The gate
10331should be at privilege level 0 (the most privileged level). The
10332@sc{sparc} and 68k stubs are able to mask interrupts themselves without
10333help from @code{exceptionHandler}.
10334
10335@item void flush_i_cache()
10336@kindex flush_i_cache
d4f3574e 10337On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
10338instruction cache, if any, on your target machine. If there is no
10339instruction cache, this subroutine may be a no-op.
10340
10341On target machines that have instruction caches, @value{GDBN} requires this
10342function to make certain that the state of your program is stable.
10343@end table
10344
10345@noindent
10346You must also make sure this library routine is available:
10347
10348@table @code
10349@item void *memset(void *, int, int)
10350@kindex memset
10351This is the standard library function @code{memset} that sets an area of
10352memory 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
10354either obtain it from your hardware manufacturer, or write your own.
10355@end table
10356
10357If you do not use the GNU C compiler, you may need other standard
10358library subroutines as well; this varies from one stub to another,
10359but in general the stubs are likely to use any of the common library
d4f3574e 10360subroutines which @code{@value{GCC}} generates as inline code.
104c1213
JM
10361
10362
6d2ebf8b 10363@node Debug Session
6f05cf9f 10364@subsection Putting it all together
104c1213
JM
10365
10366@cindex remote serial debugging summary
10367In summary, when your program is ready to debug, you must follow these
10368steps.
10369
10370@enumerate
10371@item
6d2ebf8b 10372Make sure you have defined the supporting low-level routines
104c1213
JM
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
10380Insert these lines near the top of your program:
10381
10382@example
10383set_debug_traps();
10384breakpoint();
10385@end example
10386
10387@item
10388For the 680x0 stub only, you need to provide a variable called
10389@code{exceptionHook}. Normally you just use:
10390
10391@example
10392void (*exceptionHook)() = 0;
10393@end example
10394
d4f3574e 10395@noindent
104c1213 10396but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 10397function in your program, that function is called when
104c1213
JM
10398@code{@value{GDBN}} continues after stopping on a trap (for example, bus
10399error). The function indicated by @code{exceptionHook} is called with
10400one parameter: an @code{int} which is the exception number.
10401
10402@item
10403Compile and link together: your program, the @value{GDBN} debugging stub for
10404your target architecture, and the supporting subroutines.
10405
10406@item
10407Make sure you have a serial connection between your target machine and
10408the @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.
10413Download your program to your target machine (or get it there by
10414whatever means the manufacturer provides), and start it.
10415
10416@item
10417To start remote debugging, run @value{GDBN} on the host machine, and specify
10418as an executable file the program that is running in the remote machine.
10419This tells @value{GDBN} how to find your program's symbols and the contents
10420of its pure text.
10421
d4f3574e 10422@item
104c1213 10423@cindex serial line, @code{target remote}
d4f3574e 10424Establish communication using the @code{target remote} command.
104c1213
JM
10425Its argument specifies how to communicate with the target
10426machine---either via a devicename attached to a direct serial line, or a
10427TCP port (usually to a terminal server which in turn has a serial line
10428to the target). For example, to use a serial line connected to the
10429device named @file{/dev/ttyb}:
10430
10431@example
10432target remote /dev/ttyb
10433@end example
10434
10435@cindex TCP port, @code{target remote}
10436To use a TCP connection, use an argument of the form
10437@code{@var{host}:port}. For example, to connect to port 2828 on a
10438terminal server named @code{manyfarms}:
10439
10440@example
10441target remote manyfarms:2828
10442@end example
a2bea4c3
CV
10443
10444If your remote target is actually running on the same machine as
10445your debugger session (e.g.@: a simulator of your target running on
10446the same host), you can omit the hostname. For example, to connect
10447to port 1234 on your local machine:
10448
10449@example
10450target remote :1234
10451@end example
10452@noindent
10453
10454Note that the colon is still required here.
104c1213
JM
10455@end enumerate
10456
10457Now you can use all the usual commands to examine and change data and to
10458step and continue the remote program.
10459
10460To resume the remote program and stop debugging it, use the @code{detach}
10461command.
10462
10463@cindex interrupting remote programs
10464@cindex remote programs, interrupting
10465Whenever @value{GDBN} is waiting for the remote program, if you type the
10466interrupt character (often @key{C-C}), @value{GDBN} attempts to stop the
10467program. This may or may not succeed, depending in part on the hardware
10468and the serial drivers the remote system uses. If you type the
10469interrupt character once again, @value{GDBN} displays this prompt:
10470
10471@example
10472Interrupted while waiting for the program.
10473Give up (and stop debugging it)? (y or n)
10474@end example
10475
10476If 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
10478remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
10479goes back to waiting.
10480
104c1213 10481
8e04817f
AC
10482@node Configurations
10483@chapter Configuration-Specific Information
104c1213 10484
8e04817f
AC
10485While nearly all @value{GDBN} commands are available for all native and
10486cross versions of the debugger, there are some exceptions. This chapter
10487describes things that are only available in certain configurations.
104c1213 10488
8e04817f
AC
10489There are three major categories of configurations: native
10490configurations, where the host and target are the same, embedded
10491operating system configurations, which are usually the same for several
10492different processor architectures, and bare embedded processors, which
10493are quite different from each other.
104c1213 10494
8e04817f
AC
10495@menu
10496* Native::
10497* Embedded OS::
10498* Embedded Processors::
10499* Architectures::
10500@end menu
104c1213 10501
8e04817f
AC
10502@node Native
10503@section Native
104c1213 10504
8e04817f
AC
10505This section describes details specific to particular native
10506configurations.
6cf7e474 10507
8e04817f
AC
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
6cf7e474 10513
8e04817f
AC
10514@node HP-UX
10515@subsection HP-UX
104c1213 10516
8e04817f
AC
10517On HP-UX systems, if you refer to a function or variable name that
10518begins with a dollar sign, @value{GDBN} searches for a user or system
10519name first, before it searches for a convenience variable.
104c1213 10520
8e04817f
AC
10521@node SVR4 Process Information
10522@subsection SVR4 process information
104c1213 10523
8e04817f
AC
10524@kindex /proc
10525@cindex process image
104c1213 10526
8e04817f
AC
10527Many versions of SVR4 provide a facility called @samp{/proc} that can be
10528used to examine the image of a running process using file-system
10529subroutines. If @value{GDBN} is configured for an operating system with
10530this facility, the command @code{info proc} is available to report on
10531several 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,
10534and Unixware, but not HP-UX or Linux, for example.
104c1213 10535
8e04817f
AC
10536@table @code
10537@kindex info proc
10538@item info proc
10539Summarize available information about the process.
6cf7e474 10540
8e04817f
AC
10541@kindex info proc mappings
10542@item info proc mappings
10543Report on the address ranges accessible in the program, with information
10544on 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
10551Starting time, user CPU time, and system CPU time for your program and
10552its children.
6cf7e474 10553
8e04817f
AC
10554@kindex info proc id
10555@item info proc id
10556Report on the process IDs related to your program: its own process ID,
10557the ID of its parent, the process group ID, and the session ID.
104c1213 10558
8e04817f
AC
10559@kindex info proc status
10560@item info proc status
10561General information on the state of the process. If the process is
10562stopped, this report includes the reason for stopping, and any signal
10563received.
d4f3574e 10564
8e04817f
AC
10565@item info proc all
10566Show all the above information about the process.
10567@end ignore
10568@end table
104c1213 10569
8e04817f
AC
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
104c1213 10575
8e04817f
AC
10576@sc{djgpp} is the port of @sc{gnu} development tools to MS-DOS and
10577MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
10578that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
10579top of real-mode DOS systems and their emulations.
104c1213 10580
8e04817f
AC
10581@value{GDBN} supports native debugging of @sc{djgpp} programs, and
10582defines a few commands specific to the @sc{djgpp} port. This
10583subsection describes those commands.
104c1213 10584
8e04817f
AC
10585@table @code
10586@kindex info dos
10587@item info dos
10588This is a prefix of @sc{djgpp}-specific commands which print
10589information about the target system and important OS structures.
f1251bdd 10590
8e04817f
AC
10591@kindex sysinfo
10592@cindex MS-DOS system info
10593@cindex free memory information (MS-DOS)
10594@item info dos sysinfo
10595This command displays assorted information about the underlying
10596platform: the CPU type and features, the OS version and flavor, the
10597DPMI version, and the available conventional and DPMI memory.
104c1213 10598
8e04817f
AC
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
10607These 3 commands display entries from, respectively, Global, Local,
10608and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
10609tables are data structures which store a descriptor for each segment
10610that is currently in use. The segment's selector is an index into a
10611descriptor table; the table entry for that index holds the
10612descriptor's base address and limit, and its attributes and access
10613rights.
104c1213 10614
8e04817f
AC
10615A typical @sc{djgpp} program uses 3 segments: a code segment, a data
10616segment (used for both data and the stack), and a DOS segment (which
10617allows access to DOS/BIOS data structures and absolute addresses in
10618conventional memory). However, the DPMI host will usually define
10619additional segments in order to support the DPMI environment.
d4f3574e 10620
8e04817f
AC
10621@cindex garbled pointers
10622These commands allow to display entries from the descriptor tables.
10623Without an argument, all entries from the specified table are
10624displayed. An argument, which should be an integer expression, means
10625display a single entry whose index is given by the argument. For
10626example, here's a convenient way to display information about the
10627debugged program's data segment:
104c1213 10628
8e04817f
AC
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
104c1213 10633
8e04817f
AC
10634@noindent
10635This comes in handy when you want to see whether a pointer is outside
10636the data segment's limit (i.e.@: @dfn{garbled}).
104c1213 10637
8e04817f
AC
10638@cindex page tables display (MS-DOS)
10639@item info dos pde
10640@itemx info dos pte
10641These two commands display entries from, respectively, the Page
10642Directory and the Page Tables. Page Directories and Page Tables are
10643data structures which control how virtual memory addresses are mapped
10644into physical addresses. A Page Table includes an entry for every
10645page of memory that is mapped into the program's address space; there
10646may be several Page Tables, each one holding up to 4096 entries. A
10647Page Directory has up to 4096 entries, one each for every Page Table
10648that is currently in use.
104c1213 10649
8e04817f
AC
10650Without an argument, @kbd{info dos pde} displays the entire Page
10651Directory, and @kbd{info dos pte} displays all the entries in all of
10652the Page Tables. An argument, an integer expression, given to the
10653@kbd{info dos pde} command means display only that entry from the Page
10654Directory table. An argument given to the @kbd{info dos pte} command
10655means display entries from a single Page Table, the one pointed to by
10656the specified entry in the Page Directory.
104c1213 10657
8e04817f
AC
10658@cindex direct memory access (DMA) on MS-DOS
10659These commands are useful when your program uses @dfn{DMA} (Direct
10660Memory Access), which needs physical addresses to program the DMA
10661controller.
104c1213 10662
8e04817f 10663These commands are supported only with some DPMI servers.
104c1213 10664
8e04817f
AC
10665@cindex physical address from linear address
10666@item info dos address-pte @var{addr}
10667This command displays the Page Table entry for a specified linear
10668address. The argument linear address @var{addr} should already have the
10669appropriate segment's base address added to it, because this command
10670accepts addresses which may belong to @emph{any} segment. For
10671example, here's how to display the Page Table entry for the page where
10672the variable @code{i} is stored:
104c1213 10673
8e04817f
AC
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
104c1213 10679
8e04817f
AC
10680@noindent
10681This says that @code{i} is stored at offset @code{0xd30} from the page
10682whose physical base address is @code{0x02698000}, and prints all the
10683attributes of that page.
104c1213 10684
8e04817f
AC
10685Note that you must cast the addresses of variables to a @code{char *},
10686since otherwise the value of @code{__djgpp_base_address}, the base
10687address of all variables and functions in a @sc{djgpp} program, will
10688be added using the rules of C pointer arithmetics: if @code{i} is
10689declared an @code{int}, @value{GDBN} will add 4 times the value of
10690@code{__djgpp_base_address} to the address of @code{i}.
104c1213 10691
8e04817f
AC
10692Here's another example, it displays the Page Table entry for the
10693transfer buffer:
104c1213 10694
8e04817f
AC
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
104c1213 10700
8e04817f
AC
10701@noindent
10702(The @code{+ 3} offset is because the transfer buffer's address is the
107033rd member of the @code{_go32_info_block} structure.) The output of
10704this command clearly shows that addresses in conventional memory are
10705mapped 1:1, i.e.@: the physical and linear addresses are identical.
104c1213 10706
8e04817f
AC
10707This command is supported only with some DPMI servers.
10708@end table
104c1213 10709
8e04817f
AC
10710@node Embedded OS
10711@section Embedded Operating Systems
104c1213 10712
8e04817f
AC
10713This section describes configurations involving the debugging of
10714embedded operating systems that are available for several different
10715architectures.
d4f3574e 10716
8e04817f
AC
10717@menu
10718* VxWorks:: Using @value{GDBN} with VxWorks
10719@end menu
104c1213 10720
8e04817f
AC
10721@value{GDBN} includes the ability to debug programs running on
10722various real-time operating systems.
104c1213 10723
8e04817f
AC
10724@node VxWorks
10725@subsection Using @value{GDBN} with VxWorks
104c1213 10726
8e04817f 10727@cindex VxWorks
104c1213 10728
8e04817f 10729@table @code
104c1213 10730
8e04817f
AC
10731@kindex target vxworks
10732@item target vxworks @var{machinename}
10733A VxWorks system, attached via TCP/IP. The argument @var{machinename}
10734is the target system's machine name or IP address.
104c1213 10735
8e04817f 10736@end table
104c1213 10737
8e04817f
AC
10738On VxWorks, @code{load} links @var{filename} dynamically on the
10739current target system as well as adding its symbols in @value{GDBN}.
104c1213 10740
8e04817f
AC
10741@value{GDBN} enables developers to spawn and debug tasks running on networked
10742VxWorks targets from a Unix host. Already-running tasks spawned from
10743the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
10744both 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
10746installed with the name @code{vxgdb}, to distinguish it from a
10747@value{GDBN} for debugging programs on the host itself.)
104c1213 10748
8e04817f
AC
10749@table @code
10750@item VxWorks-timeout @var{args}
10751@kindex vxworks-timeout
10752All VxWorks-based targets now support the option @code{vxworks-timeout}.
10753This option is set by the user, and @var{args} represents the number of
10754seconds @value{GDBN} waits for responses to rpc's. You might use this if
10755your VxWorks target is a slow software simulator or is on the far side
10756of a thin network line.
10757@end table
104c1213 10758
8e04817f
AC
10759The following information on connecting to VxWorks was current when
10760this manual was produced; newer releases of VxWorks may use revised
10761procedures.
104c1213 10762
8e04817f
AC
10763@kindex INCLUDE_RDB
10764To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
10765to include the remote debugging interface routines in the VxWorks
10766library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
10767VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
10768kernel. The resulting kernel contains @file{rdb.a}, and spawns the
10769source debugging task @code{tRdbTask} when VxWorks is booted. For more
10770information on configuring and remaking VxWorks, see the manufacturer's
10771manual.
10772@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
104c1213 10773
8e04817f
AC
10774Once you have included @file{rdb.a} in your VxWorks system image and set
10775your Unix execution search path to find @value{GDBN}, you are ready to
10776run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
10777@code{vxgdb}, depending on your installation).
104c1213 10778
8e04817f 10779@value{GDBN} comes up showing the prompt:
104c1213 10780
8e04817f
AC
10781@example
10782(vxgdb)
10783@end example
104c1213 10784
8e04817f
AC
10785@menu
10786* VxWorks Connection:: Connecting to VxWorks
10787* VxWorks Download:: VxWorks download
10788* VxWorks Attach:: Running tasks
10789@end menu
104c1213 10790
8e04817f
AC
10791@node VxWorks Connection
10792@subsubsection Connecting to VxWorks
104c1213 10793
8e04817f
AC
10794The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
10795network. To connect to a target whose host name is ``@code{tt}'', type:
104c1213 10796
8e04817f
AC
10797@example
10798(vxgdb) target vxworks tt
10799@end example
104c1213 10800
8e04817f
AC
10801@need 750
10802@value{GDBN} displays messages like these:
104c1213 10803
8e04817f
AC
10804@smallexample
10805Attaching remote machine across net...
10806Connected to tt.
10807@end smallexample
104c1213 10808
8e04817f
AC
10809@need 1000
10810@value{GDBN} then attempts to read the symbol tables of any object modules
10811loaded into the VxWorks target since it was last booted. @value{GDBN} locates
10812these files by searching the directories listed in the command search
10813path (@pxref{Environment, ,Your program's environment}); if it fails
10814to find an object file, it displays a message such as:
5d161b24 10815
8e04817f
AC
10816@example
10817prog.o: No such file or directory.
10818@end example
104c1213 10819
8e04817f
AC
10820When this happens, add the appropriate directory to the search path with
10821the @value{GDBN} command @code{path}, and execute the @code{target}
10822command again.
104c1213 10823
8e04817f
AC
10824@node VxWorks Download
10825@subsubsection VxWorks download
104c1213 10826
8e04817f
AC
10827@cindex download to VxWorks
10828If you have connected to the VxWorks target and you want to debug an
10829object that has not yet been loaded, you can use the @value{GDBN}
10830@code{load} command to download a file from Unix to VxWorks
10831incrementally. The object file given as an argument to the @code{load}
10832command is actually opened twice: first by the VxWorks target in order
10833to download the code, then by @value{GDBN} in order to read the symbol
10834table. This can lead to problems if the current working directories on
10835the two systems differ. If both systems have NFS mounted the same
10836filesystems, you can avoid these problems by using absolute paths.
10837Otherwise, it is simplest to set the working directory on both systems
10838to the directory in which the object file resides, and then to reference
10839the 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
10841and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
10842program, type this on VxWorks:
104c1213 10843
8e04817f
AC
10844@example
10845-> cd "@var{vxpath}/vw/demo/rdb"
10846@end example
104c1213 10847
8e04817f
AC
10848@noindent
10849Then, in @value{GDBN}, type:
104c1213 10850
8e04817f
AC
10851@example
10852(vxgdb) cd @var{hostpath}/vw/demo/rdb
10853(vxgdb) load prog.o
10854@end example
104c1213 10855
8e04817f 10856@value{GDBN} displays a response similar to this:
104c1213 10857
8e04817f
AC
10858@smallexample
10859Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
10860@end smallexample
104c1213 10861
8e04817f
AC
10862You can also use the @code{load} command to reload an object module
10863after editing and recompiling the corresponding source file. Note that
10864this makes @value{GDBN} delete all currently-defined breakpoints,
10865auto-displays, and convenience variables, and to clear the value
10866history. (This is necessary in order to preserve the integrity of
10867debugger's data structures that reference the target system's symbol
10868table.)
104c1213 10869
8e04817f
AC
10870@node VxWorks Attach
10871@subsubsection Running tasks
104c1213
JM
10872
10873@cindex running VxWorks tasks
10874You can also attach to an existing task using the @code{attach} command as
10875follows:
10876
10877@example
10878(vxgdb) attach @var{task}
10879@end example
10880
10881@noindent
10882where @var{task} is the VxWorks hexadecimal task ID. The task can be running
10883or suspended when you attach to it. Running tasks are suspended at
10884the time of attachment.
10885
6d2ebf8b 10886@node Embedded Processors
104c1213
JM
10887@section Embedded Processors
10888
10889This section goes into details specific to particular embedded
10890configurations.
10891
7d86b5d5
AC
10892
10893@c OBSOLETE * A29K Embedded:: AMD A29K Embedded
104c1213 10894@menu
104c1213
JM
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
7d86b5d5
AC
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.
104c1213 11156
6d2ebf8b 11157@node ARM
104c1213
JM
11158@subsection ARM
11159
11160@table @code
11161
8e04817f
AC
11162@kindex target rdi
11163@item target rdi @var{dev}
11164ARM Angel monitor, via RDI library interface to ADP protocol. You may
11165use this target to communicate with both boards running the Angel
11166monitor, or with the EmbeddedICE JTAG debug device.
11167
11168@kindex target rdp
11169@item target rdp @var{dev}
11170ARM 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}
11181A Hitachi SH, H8/300, or H8/500 board, attached via serial line to your host.
11182Use special commands @code{device} and @code{speed} to control the serial
11183line and the communications speed used.
11184
11185@kindex target e7000@r{, with H8/300}
11186@item target e7000 @var{dev}
11187E7000 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}
11193Hitachi 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
11201When you select remote debugging to a Hitachi SH, H8/300, or H8/500
11202board, the @code{load} command downloads your program to the Hitachi
11203board 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
11207Hitachi SH, H8/300, or H8/500:
11208
11209@enumerate
11210@item
11211that you want to use @samp{target hms}, the remote debugging interface
11212for Hitachi microprocessors, or @samp{target e7000}, the in-circuit
11213emulator for the Hitachi SH and the Hitachi 300H. (@samp{target hms} is
11214the default when @value{GDBN} is configured specifically for the Hitachi SH,
11215H8/300, or H8/500.)
11216
11217@item
11218what serial device connects your host to your Hitachi board (the first
11219serial device available on your host is the default).
11220
11221@item
11222what 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
11237Use the special @code{@value{GDBN}} command @samp{device @var{port}} if you
11238need to explicitly set the serial device. The default @var{port} is the
11239first available port on your host. This is only necessary on Unix
11240hosts, 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
11245speed: @samp{speed @var{bps}}. This command also is only used from Unix
11246hosts; on DOS hosts, set the line speed as usual from outside @value{GDBN} with
11247the DOS @code{mode} command (for instance,
11248@w{@kbd{mode com2:9600,n,8,1,p}} for a 9600@dmn{bps} connection).
11249
11250The @samp{device} and @samp{speed} commands are available only when you
11251use a Unix host to debug your Hitachi microprocessor programs. If you
11252use a DOS host,
11253@value{GDBN} depends on an auxiliary terminate-and-stay-resident program
11254called @code{asynctsr} to communicate with the development board
11255through a PC serial port. You must also use the DOS @code{mode} command
11256to set up the serial port on the DOS side.
11257
11258The following sample session illustrates the steps needed to start a
11259program under @value{GDBN} control on an H8/300. The example uses a
11260sample H8/300 program called @file{t.x}. The procedure is the same for
11261the Hitachi SH and the H8/500.
11262
11263First hook up your development board. In this example, we use a
11264board attached to serial port @code{COM2}; if you use a different serial
11265port, substitute its name in the argument of the @code{mode} command.
11266When you call @code{asynctsr}, the auxiliary comms program used by the
11267debugger, you give it just the numeric part of the serial port's name;
11268for example, @samp{asyncstr 2} below runs @code{asyncstr} on
11269@code{COM2}.
11270
11271@example
11272C:\H8300\TEST> asynctsr 2
11273C:\H8300\TEST> mode com2:9600,n,8,1,p
11274
11275Resident portion of MODE loaded
11276
11277COM2: 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
11284disable it, or even boot without it, to use @code{asynctsr} to control
11285your development board.
11286@end quotation
11287
11288@kindex target hms@r{, and serial protocol}
11289Now that serial communications are set up, and the development board is
11290connected, you can start up @value{GDBN}. Call @code{@value{GDBP}} with
11291the name of your program as the argument. @code{@value{GDBN}} prompts
11292you, as usual, with the prompt @samp{(@value{GDBP})}. Use two special
11293commands to begin your debugging session: @samp{target hms} to specify
11294cross-debugging to the Hitachi board, and the @code{load} command to
11295download your program to the board. @code{load} displays the names of
11296the 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
11298executable file without downloading, use the @value{GDBN} commands
11299@code{file} or @code{symbol-file}. These commands, and @code{load}
11300itself, 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.
11307There is absolutely no warranty for @value{GDBN}; type "show warranty"
11308for details.
11309@value{GDBN} @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
11310(@value{GDBP}) target hms
11311Connected 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
11318At this point, you're ready to run or debug your program. From here on,
11319you can use all the usual @value{GDBN} commands. The @code{break} command
11320sets breakpoints; the @code{run} command starts your program;
11321@code{print} or @code{x} display data; the @code{continue} command
11322resumes 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
11325Remember, however, that @emph{operating system} facilities aren't
11326available on your development board; for example, if your program hangs,
11327you can't send an interrupt---but you can press the @sc{reset} switch!
11328
11329Use the @sc{reset} button on the development board
11330@itemize @bullet
11331@item
11332to interrupt your program (don't use @kbd{ctl-C} on the DOS host---it has
11333no way to pass an interrupt signal to the development board); and
11334
11335@item
11336to return to the @value{GDBN} command prompt after your program finishes
11337normally. The communications protocol provides no other way for @value{GDBN}
11338to detect program completion.
11339@end itemize
11340
11341In either case, @value{GDBN} sees the effect of a @sc{reset} on the
11342development 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}
11348You can use the E7000 in-circuit emulator to develop code for either the
11349Hitachi SH or the H8/300H. Use one of these forms of the @samp{target
11350e7000} command to connect @value{GDBN} to your E7000:
11351
11352@table @code
11353@item target e7000 @var{port} @var{speed}
11354Use 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}
11360If your E7000 is installed as a host on a TCP/IP network, you can just
11361specify 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
11367Some @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
11375Condition @value{GDBN} for one of the two variants of the H8/300
11376architecture with @samp{set machine}. You can use @samp{show machine}
11377to check which variant is currently in effect.
104c1213
JM
11378
11379@end table
11380
8e04817f
AC
11381@node H8/500
11382@subsection H8/500
104c1213
JM
11383
11384@table @code
11385
8e04817f
AC
11386@kindex set memory @var{mod}
11387@cindex memory models, H8/500
11388@item set memory @var{mod}
11389@itemx show memory
11390Specify 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
11392memory}. The accepted values for @var{mod} are @code{small},
11393@code{big}, @code{medium}, and @code{compact}.
104c1213 11394
8e04817f 11395@end table
104c1213 11396
8e04817f
AC
11397@node i960
11398@subsection Intel i960
104c1213 11399
8e04817f 11400@table @code
104c1213 11401
8e04817f
AC
11402@kindex target mon960
11403@item target mon960 @var{dev}
11404MON960 monitor for Intel i960.
104c1213 11405
8e04817f
AC
11406@kindex target nindy
11407@item target nindy @var{devicename}
11408An Intel 960 board controlled by a Nindy Monitor. @var{devicename} is
11409the name of the serial device to use for the connection, e.g.
11410@file{/dev/ttya}.
104c1213 11411
8e04817f
AC
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
11418tell @value{GDBN} how to connect to the 960 in several ways:
11419
11420@itemize @bullet
104c1213 11421@item
8e04817f
AC
11422Through command line options specifying serial port, version of the
11423Nindy protocol, and communications speed;
104c1213
JM
11424
11425@item
8e04817f 11426By responding to a prompt on startup;
104c1213
JM
11427
11428@item
8e04817f
AC
11429By using the @code{target} command at any point during your @value{GDBN}
11430session. @xref{Target Commands, ,Commands for managing targets}.
11431
11432@end itemize
11433
11434@cindex download to Nindy-960
11435With the Nindy interface to an Intel 960 board, @code{load}
11436downloads @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
11448If you simply start @code{@value{GDBP}} without using any command-line
11449options, you are prompted for what serial port to use, @emph{before} you
11450reach the ordinary @value{GDBN} prompt:
11451
11452@example
11453Attach /dev/ttyNN -- specify NN, or "quit" to quit:
11454@end example
11455
11456@noindent
11457Respond to the prompt with whatever suffix (after @samp{/dev/tty})
11458identifies the serial port you want to use. You can, if you choose,
11459simply start up with no Nindy connection by responding to the prompt
11460with an empty line. If you do this and later wish to attach to Nindy,
11461use @code{target} (@pxref{Target Commands, ,Commands for managing targets}).
11462
11463@node Nindy Options
11464@subsubsection Options for Nindy
11465
11466These are the startup options for beginning your @value{GDBN} session with a
11467Nindy-960 board attached:
11468
11469@table @code
11470@item -r @var{port}
11471Specify the serial port name of a serial interface to be used to connect
11472to the target system. This option is only available when @value{GDBN} is
11473configured 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
11475device name in @file{/dev} (e.g. @samp{-r ttya}), or simply the unique
11476suffix 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
11480the ``old'' Nindy monitor protocol to connect to the target system.
11481This option is only available when @value{GDBN} is configured for the Intel 960
11482target architecture.
11483
11484@quotation
11485@emph{Warning:} if you specify @samp{-O}, but are actually trying to
11486connect to a target system that expects the newer protocol, the connection
11487fails, appearing to be a speed mismatch. @value{GDBN} repeatedly
11488attempts to reconnect at several different line speeds. You can abort
11489this process with an interrupt.
11490@end quotation
11491
11492@item -brk
11493Specify that @value{GDBN} should first send a @code{BREAK} signal to the target
11494system, 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
11498requires; it only works with a few boards.
11499@end quotation
11500@end table
11501
11502The standard @samp{-b} option controls the line speed used on the serial
11503port.
11504
11505@c @group
11506@node Nindy Reset
11507@subsubsection Nindy reset command
11508
11509@table @code
11510@item reset
11511@kindex reset
11512For a Nindy target, this command sends a ``break'' to the remote target
11513system; this is only useful if the target has been equipped with a
11514circuit to perform a hard reset (or some other interesting action) when
11515a 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}
11526Mitsubishi M32R/D ROM monitor.
11527
11528@end table
11529
11530@node M68K
11531@subsection M68k
11532
11533The Motorola m68k configuration includes ColdFire support, and
11534target command for the following ROM monitors.
11535
11536@table @code
11537
11538@kindex target abug
11539@item target abug @var{dev}
11540ABug ROM monitor for M68K.
11541
11542@kindex target cpu32bug
11543@item target cpu32bug @var{dev}
11544CPU32BUG monitor, running on a CPU32 (M68K) board.
11545
11546@kindex target dbug
11547@item target dbug @var{dev}
11548dBUG ROM monitor for Motorola ColdFire.
11549
11550@kindex target est
11551@item target est @var{dev}
11552EST-300 ICE monitor, running on a CPU32 (M68K) board.
11553
11554@kindex target rom68k
11555@item target rom68k @var{dev}
11556ROM 68K monitor, running on an M68K IDP board.
11557
11558@end table
11559
11560If @value{GDBN} is configured with @code{m68*-ericsson-*}, it will
11561instead have only a single special target command:
11562
11563@table @code
11564
11565@kindex target es1800
11566@item target es1800 @var{dev}
11567ES-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}
11577ROMBUG 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}
11588BUG 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
11597MIPS board attached to a serial line. This is available when
11598you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
104c1213 11599
8e04817f
AC
11600@need 1000
11601Use these @value{GDBN} commands to specify the connection to your target board:
104c1213 11602
8e04817f
AC
11603@table @code
11604@item target mips @var{port}
11605@kindex target mips @var{port}
11606To run a program on the board, start up @code{@value{GDBP}} with the
11607name of your program as the argument. To connect to the board, use the
11608command @samp{target mips @var{port}}, where @var{port} is the name of
11609the serial port connected to the board. If the program has not already
11610been downloaded to the board, you may use the @code{load} command to
11611download it. You can then use all the usual @value{GDBN} commands.
104c1213 11612
8e04817f
AC
11613For example, this sequence connects to the target board through a serial
11614port, and loads and runs a program called @var{prog} through the
11615debugger:
104c1213 11616
8e04817f
AC
11617@example
11618host$ @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
104c1213 11624
8e04817f
AC
11625@item target mips @var{hostname}:@var{portnumber}
11626On some @value{GDBN} host configurations, you can specify a TCP
11627connection (for instance, to a serial line managed by a terminal
11628concentrator) instead of a serial port, using the syntax
11629@samp{@var{hostname}:@var{portnumber}}.
104c1213 11630
8e04817f
AC
11631@item target pmon @var{port}
11632@kindex target pmon @var{port}
11633PMON ROM monitor.
104c1213 11634
8e04817f
AC
11635@item target ddb @var{port}
11636@kindex target ddb @var{port}
11637NEC's DDB variant of PMON for Vr4300.
104c1213 11638
8e04817f
AC
11639@item target lsi @var{port}
11640@kindex target lsi @var{port}
11641LSI variant of PMON.
104c1213 11642
8e04817f
AC
11643@kindex target r3900
11644@item target r3900 @var{dev}
11645Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
104c1213 11646
8e04817f
AC
11647@kindex target array
11648@item target array @var{dev}
11649Array Tech LSI33K RAID controller board.
104c1213 11650
8e04817f 11651@end table
104c1213 11652
104c1213 11653
8e04817f
AC
11654@noindent
11655@value{GDBN} also supports these special commands for MIPS targets:
104c1213 11656
8e04817f
AC
11657@table @code
11658@item set processor @var{args}
11659@itemx show processor
11660@kindex set processor @var{args}
11661@kindex show processor
11662Use the @code{set processor} command to set the type of MIPS
11663processor when you want to access processor-type-specific registers.
11664For example, @code{set processor @var{r3041}} tells @value{GDBN}
11665to use the CPU registers appropriate for the 3041 chip.
11666Use the @code{show processor} command to see what MIPS processor @value{GDBN}
11667is using. Use the @code{info reg} command to see what registers
11668@value{GDBN} is using.
104c1213 11669
8e04817f
AC
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
11678If your target board does not support the MIPS floating point
11679coprocessor, you should use the command @samp{set mipsfpu none} (if you
11680need this, you may wish to put the command in your @value{GDBN} init
11681file). This tells @value{GDBN} how to find the return value of
11682functions which return floating point values. It also allows
11683@value{GDBN} to avoid saving the floating point registers when calling
11684functions on the board. If you are using a floating point coprocessor
11685with only single precision floating point support, as on the @sc{r4650}
11686processor, use the command @samp{set mipsfpu single}. The default
11687double precision floating point coprocessor may be selected using
11688@samp{set mipsfpu double}.
104c1213 11689
8e04817f
AC
11690In previous versions the only choices were double precision or no
11691floating point, so @samp{set mipsfpu on} will select double precision
11692and @samp{set mipsfpu off} will select no floating point.
104c1213 11693
8e04817f
AC
11694As usual, you can inquire about the @code{mipsfpu} variable with
11695@samp{show mipsfpu}.
104c1213 11696
8e04817f
AC
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?
11705You can see some debugging information about communications with the board
11706by 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
11708to @code{2}, every character is displayed. You can check the current value
11709at any time with the command @samp{show remotedebug}.
104c1213 11710
8e04817f
AC
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
11721You can control the timeout used while waiting for a packet, in the MIPS
11722remote protocol, with the @code{set timeout @var{seconds}} command. The
11723default is 5 seconds. Similarly, you can control the timeout used while
11724waiting for an acknowledgement of a packet with the @code{set
11725retransmit-timeout @var{seconds}} command. The default is 3 seconds.
11726You can inspect both values with @code{show timeout} and @code{show
11727retransmit-timeout}. (These commands are @emph{only} available when
11728@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
104c1213 11729
8e04817f
AC
11730The timeout set by @code{set timeout} does not apply when @value{GDBN}
11731is waiting for your program to stop. In that case, @value{GDBN} waits
11732forever because it has no way of knowing how long the program is going
11733to run before stopping.
11734@end table
104c1213 11735
8e04817f
AC
11736@node PowerPC
11737@subsection PowerPC
104c1213
JM
11738
11739@table @code
104c1213 11740
8e04817f
AC
11741@kindex target dink32
11742@item target dink32 @var{dev}
11743DINK32 ROM monitor.
104c1213 11744
8e04817f
AC
11745@kindex target ppcbug
11746@item target ppcbug @var{dev}
11747@kindex target ppcbug1
11748@item target ppcbug1 @var{dev}
11749PPCBUG ROM monitor for PowerPC.
104c1213 11750
8e04817f
AC
11751@kindex target sds
11752@item target sds @var{dev}
11753SDS monitor, running on a PowerPC board (such as Motorola's ADS).
11754
11755@end table
11756
11757@node PA
11758@subsection HP PA Embedded
104c1213
JM
11759
11760@table @code
11761
8e04817f
AC
11762@kindex target op50n
11763@item target op50n @var{dev}
11764OP50N monitor, running on an OKI HPPA board.
11765
11766@kindex target w89k
11767@item target w89k @var{dev}
11768W89K monitor, running on a Winbond HPPA board.
104c1213
JM
11769
11770@end table
11771
8e04817f
AC
11772@node SH
11773@subsection Hitachi SH
104c1213
JM
11774
11775@table @code
11776
8e04817f
AC
11777@kindex target hms@r{, with Hitachi SH}
11778@item target hms @var{dev}
11779A Hitachi SH board attached via serial line to your host. Use special
11780commands @code{device} and @code{speed} to control the serial line and
11781the communications speed used.
104c1213 11782
8e04817f
AC
11783@kindex target e7000@r{, with Hitachi SH}
11784@item target e7000 @var{dev}
11785E7000 emulator for Hitachi SH.
104c1213 11786
8e04817f
AC
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}
11791Hitachi SH-3 and SH-3E target systems.
104c1213 11792
8e04817f 11793@end table
104c1213 11794
8e04817f
AC
11795@node Sparclet
11796@subsection Tsqware Sparclet
104c1213 11797
8e04817f
AC
11798@cindex Sparclet
11799
11800@value{GDBN} enables developers to debug tasks running on
11801Sparclet targets from a Unix host.
11802@value{GDBN} uses code that runs on
11803both the Unix host and on the Sparclet target. The program
11804@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213 11805
8e04817f
AC
11806@table @code
11807@item remotetimeout @var{args}
11808@kindex remotetimeout
11809@value{GDBN} supports the option @code{remotetimeout}.
11810This option is set by the user, and @var{args} represents the number of
11811seconds @value{GDBN} waits for responses.
104c1213
JM
11812@end table
11813
8e04817f
AC
11814@cindex compiling, on Sparclet
11815When compiling for debugging, include the options @samp{-g} to get debug
11816information and @samp{-Ttext} to relocate the program to where you wish to
11817load 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:
104c1213 11819
8e04817f
AC
11820@example
11821sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
11822@end example
104c1213 11823
8e04817f 11824You can use @code{objdump} to verify that the addresses are what you intended:
104c1213 11825
8e04817f
AC
11826@example
11827sparclet-aout-objdump --headers --syms prog
11828@end example
104c1213 11829
8e04817f
AC
11830@cindex running, on Sparclet
11831Once you have set
11832your Unix execution search path to find @value{GDBN}, you are ready to
11833run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
11834(or @code{sparclet-aout-gdb}, depending on your installation).
104c1213 11835
8e04817f
AC
11836@value{GDBN} comes up showing the prompt:
11837
11838@example
11839(gdbslet)
11840@end example
104c1213
JM
11841
11842@menu
8e04817f
AC
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
104c1213
JM
11847@end menu
11848
8e04817f
AC
11849@node Sparclet File
11850@subsubsection Setting file to debug
104c1213 11851
8e04817f 11852The @value{GDBN} command @code{file} lets you choose with program to debug.
104c1213
JM
11853
11854@example
8e04817f 11855(gdbslet) file prog
104c1213
JM
11856@end example
11857
8e04817f
AC
11858@need 1000
11859@value{GDBN} then attempts to read the symbol table of @file{prog}.
11860@value{GDBN} locates
11861the file by searching the directories listed in the command search
11862path.
11863If the file was compiled with debug information (option "-g"), source
11864files will be searched as well.
11865@value{GDBN} locates
11866the source files by searching the directories listed in the directory search
11867path (@pxref{Environment, ,Your program's environment}).
11868If it fails
11869to find a file, it displays a message such as:
104c1213 11870
8e04817f
AC
11871@example
11872prog: No such file or directory.
11873@end example
104c1213 11874
8e04817f
AC
11875When this happens, add the appropriate directories to the search paths with
11876the @value{GDBN} commands @code{path} and @code{dir}, and execute the
11877@code{target} command again.
104c1213 11878
8e04817f
AC
11879@node Sparclet Connection
11880@subsubsection Connecting to Sparclet
104c1213 11881
8e04817f
AC
11882The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
11883To connect to a target on serial port ``@code{ttya}'', type:
104c1213 11884
8e04817f
AC
11885@example
11886(gdbslet) target sparclet /dev/ttya
11887Remote target sparclet connected to /dev/ttya
11888main () at ../prog.c:3
11889@end example
104c1213 11890
8e04817f
AC
11891@need 750
11892@value{GDBN} displays messages like these:
104c1213 11893
8e04817f
AC
11894@example
11895Connected to ttya.
11896@end example
104c1213 11897
8e04817f
AC
11898@node Sparclet Download
11899@subsubsection Sparclet download
104c1213 11900
8e04817f
AC
11901@cindex download to Sparclet
11902Once connected to the Sparclet target,
11903you can use the @value{GDBN}
11904@code{load} command to download the file from the host to the target.
11905The file name and load offset should be given as arguments to the @code{load}
11906command.
11907Since the file format is aout, the program must be loaded to the starting
11908address. You can use @code{objdump} to find out what this value is. The load
11909offset is an offset which is added to the VMA (virtual memory address)
11910of each of the file's sections.
11911For instance, if the program
11912@file{prog} was linked to text address 0x1201000, with data at 0x12010160
11913and bss at 0x12010170, in @value{GDBN}, type:
104c1213 11914
8e04817f
AC
11915@example
11916(gdbslet) load prog 0x12010000
11917Loading section .text, size 0xdb0 vma 0x12010000
11918@end example
104c1213 11919
8e04817f
AC
11920If the code is loaded at a different address then what the program was linked
11921to, you may need to use the @code{section} and @code{add-symbol-file} commands
11922to 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
11928You can now begin debugging the task using @value{GDBN}'s execution control
11929commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
11930manual for the list of commands.
11931
11932@example
11933(gdbslet) b main
11934Breakpoint 1 at 0x12010000: file prog.c, line 3.
11935(gdbslet) run
11936Starting program: prog
11937Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
119383 char *symarg = 0;
11939(gdbslet) step
119404 char *execarg = "hello!";
11941(gdbslet)
11942@end example
11943
11944@node Sparclite
11945@subsection Fujitsu Sparclite
104c1213
JM
11946
11947@table @code
11948
8e04817f
AC
11949@kindex target sparclite
11950@item target sparclite @var{dev}
11951Fujitsu sparclite boards, used only for the purpose of loading.
11952You must use an additional command to debug the program.
11953For example: target remote @var{dev} using @value{GDBN} standard
11954remote protocol.
104c1213
JM
11955
11956@end table
11957
8e04817f
AC
11958@node ST2000
11959@subsection Tandem ST2000
104c1213 11960
8e04817f
AC
11961@value{GDBN} may be used with a Tandem ST2000 phone switch, running Tandem's
11962STDBUG protocol.
104c1213 11963
8e04817f
AC
11964To connect your ST2000 to the host system, see the manufacturer's
11965manual. Once the ST2000 is physically attached, you can run:
104c1213 11966
8e04817f
AC
11967@example
11968target st2000 @var{dev} @var{speed}
11969@end example
104c1213 11970
8e04817f
AC
11971@noindent
11972to establish it as your debugging environment. @var{dev} is normally
11973the name of a serial device, such as @file{/dev/ttya}, connected to the
11974ST2000 via a serial line. You can instead specify @var{dev} as a TCP
11975connection (for example, to a serial line attached via a terminal
11976concentrator) using the syntax @code{@var{hostname}:@var{portnumber}}.
104c1213 11977
8e04817f
AC
11978The @code{load} and @code{attach} commands are @emph{not} defined for
11979this target; you must load your program into the ST2000 as you normally
11980would for standalone operation. @value{GDBN} reads debugging information
11981(such as symbols) from a separate, debugging version of the program
11982available on your host computer.
11983@c FIXME!! This is terribly vague; what little content is here is
11984@c basically hearsay.
104c1213 11985
8e04817f
AC
11986@cindex ST2000 auxiliary commands
11987These auxiliary @value{GDBN} commands are available to help you with the ST2000
11988environment:
104c1213 11989
8e04817f
AC
11990@table @code
11991@item st2000 @var{command}
11992@kindex st2000 @var{cmd}
11993@cindex STDBUG commands (ST2000)
11994@cindex commands to STDBUG (ST2000)
11995Send a @var{command} to the STDBUG monitor. See the manufacturer's
11996manual for available commands.
104c1213 11997
8e04817f
AC
11998@item connect
11999@cindex connect (to STDBUG)
12000Connect the controlling terminal to the STDBUG command monitor. When
12001you are done interacting with STDBUG, typing either of two character
12002sequences 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).
104c1213
JM
12005@end table
12006
8e04817f
AC
12007@node Z8000
12008@subsection Zilog Z8000
104c1213 12009
8e04817f
AC
12010@cindex Z8000
12011@cindex simulator, Z8000
12012@cindex Zilog Z8000 simulator
104c1213 12013
8e04817f
AC
12014When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
12015a Z8000 simulator.
12016
12017For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
12018unsegmented variant of the Z8000 architecture) or the Z8001 (the
12019segmented variant). The simulator recognizes which architecture is
12020appropriate by inspecting the object code.
104c1213 12021
8e04817f
AC
12022@table @code
12023@item target sim @var{args}
12024@kindex sim
12025@kindex target sim@r{, with Z8000}
12026Debug programs on a simulated CPU. If the simulator supports setup
12027options, specify them via @var{args}.
104c1213
JM
12028@end table
12029
8e04817f
AC
12030@noindent
12031After specifying this target, you can debug programs for the simulated
12032CPU 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
12034to run your program, and so on.
12035
12036As well as making available all the usual machine registers
12037(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
12038additional items of information as specially named registers:
104c1213
JM
12039
12040@table @code
12041
8e04817f
AC
12042@item cycles
12043Counts clock-ticks in the simulator.
104c1213 12044
8e04817f
AC
12045@item insts
12046Counts instructions run in the simulator.
104c1213 12047
8e04817f
AC
12048@item time
12049Execution time in 60ths of a second.
104c1213 12050
8e04817f 12051@end table
104c1213 12052
8e04817f
AC
12053You can refer to these values in @value{GDBN} expressions with the usual
12054conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
12055conditional breakpoint that suspends only after at least 5000
12056simulated clock ticks.
104c1213 12057
8e04817f
AC
12058@node Architectures
12059@section Architectures
104c1213 12060
8e04817f
AC
12061This section describes characteristics of architectures that affect
12062all uses of @value{GDBN} with the architecture, both native and cross.
104c1213 12063
8e04817f
AC
12064@menu
12065* A29K::
12066* Alpha::
12067* MIPS::
12068@end menu
104c1213 12069
8e04817f
AC
12070@node A29K
12071@subsection A29K
104c1213
JM
12072
12073@table @code
104c1213 12074
8e04817f
AC
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}
12079On AMD 29000 family processors, registers are saved in a separate
12080@dfn{register stack}. There is no way for @value{GDBN} to determine the
12081extent of this stack. Normally, @value{GDBN} just assumes that the
12082stack is ``large enough''. This may result in @value{GDBN} referencing
12083memory locations that do not exist. If necessary, you can get around
12084this problem by specifying the ending address of the register stack with
12085the @code{set rstack_high_address} command. The argument should be an
12086address, which you probably want to precede with @samp{0x} to specify in
12087hexadecimal.
104c1213 12088
8e04817f
AC
12089@kindex show rstack_high_address
12090@item show rstack_high_address
12091Display the current limit of the register stack, on AMD 29000 family
12092processors.
104c1213 12093
8e04817f 12094@end table
104c1213 12095
8e04817f
AC
12096@node Alpha
12097@subsection Alpha
104c1213 12098
8e04817f 12099See the following section.
104c1213 12100
8e04817f
AC
12101@node MIPS
12102@subsection MIPS
104c1213 12103
8e04817f
AC
12104@cindex stack on Alpha
12105@cindex stack on MIPS
12106@cindex Alpha stack
12107@cindex MIPS stack
12108Alpha- and MIPS-based computers use an unusual stack frame, which
12109sometimes requires @value{GDBN} to search backward in the object code to
12110find the beginning of a function.
104c1213 12111
8e04817f
AC
12112@cindex response time, MIPS debugging
12113To improve response time (especially for embedded applications, where
12114@value{GDBN} may be restricted to a slow serial line for this search)
12115you may want to limit the size of this search, using one of these
12116commands:
104c1213 12117
8e04817f
AC
12118@table @code
12119@cindex @code{heuristic-fence-post} (Alpha, MIPS)
12120@item set heuristic-fence-post @var{limit}
12121Restrict @value{GDBN} to examining at most @var{limit} bytes in its
12122search for the beginning of a function. A value of @var{0} (the
12123default) means there is no limit. However, except for @var{0}, the
12124larger the limit the more bytes @code{heuristic-fence-post} must search
12125and therefore the longer it takes to run.
104c1213 12126
8e04817f
AC
12127@item show heuristic-fence-post
12128Display the current limit.
12129@end table
104c1213
JM
12130
12131@noindent
8e04817f
AC
12132These commands are available @emph{only} when @value{GDBN} is configured
12133for debugging programs on Alpha or MIPS processors.
104c1213 12134
104c1213 12135
8e04817f
AC
12136@node Controlling GDB
12137@chapter Controlling @value{GDBN}
12138
12139You can alter the way @value{GDBN} interacts with you by using the
12140@code{set} command. For commands controlling how @value{GDBN} displays
12141data, see @ref{Print Settings, ,Print settings}. Other settings are
12142described 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
104c1213 12156
8e04817f 12157@cindex prompt
104c1213 12158
8e04817f
AC
12159@value{GDBN} indicates its readiness to read a command by printing a string
12160called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
12161can change the prompt string with the @code{set prompt} command. For
12162instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
12163the prompt in one of the @value{GDBN} sessions so that you can always tell
12164which one you are talking to.
104c1213 12165
8e04817f
AC
12166@emph{Note:} @code{set prompt} does not add a space for you after the
12167prompt you set. This allows you to set a prompt which ends in a space
12168or a prompt that does not.
104c1213 12169
8e04817f
AC
12170@table @code
12171@kindex set prompt
12172@item set prompt @var{newprompt}
12173Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
104c1213 12174
8e04817f
AC
12175@kindex show prompt
12176@item show prompt
12177Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
104c1213
JM
12178@end table
12179
8e04817f
AC
12180@node Editing
12181@section Command editing
12182@cindex readline
12183@cindex command line editing
104c1213 12184
8e04817f
AC
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
12187command line interface to the user. Advantages are @sc{gnu} Emacs-style
12188or @dfn{vi}-style inline editing of commands, @code{csh}-like history
12189substitution, and a storage and recall of command history across
12190debugging sessions.
104c1213 12191
8e04817f
AC
12192You may control the behavior of command line editing in @value{GDBN} with the
12193command @code{set}.
104c1213 12194
8e04817f
AC
12195@table @code
12196@kindex set editing
12197@cindex editing
12198@item set editing
12199@itemx set editing on
12200Enable command line editing (enabled by default).
104c1213 12201
8e04817f
AC
12202@item set editing off
12203Disable command line editing.
104c1213 12204
8e04817f
AC
12205@kindex show editing
12206@item show editing
12207Show whether command line editing is enabled.
104c1213
JM
12208@end table
12209
8e04817f
AC
12210@node History
12211@section Command history
12212
12213@value{GDBN} can keep track of the commands you type during your
12214debugging sessions, so that you can be certain of precisely what
12215happened. Use these commands to manage the @value{GDBN} command
12216history facility.
104c1213
JM
12217
12218@table @code
8e04817f
AC
12219@cindex history substitution
12220@cindex history file
12221@kindex set history filename
12222@kindex GDBHISTFILE
12223@item set history filename @var{fname}
12224Set the name of the @value{GDBN} command history file to @var{fname}.
12225This is the file where @value{GDBN} reads an initial command history
12226list, and where it writes the command history from this session when it
12227exits. You can access this list through history expansion or through
12228the history command editing characters listed below. This file defaults
12229to the value of the environment variable @code{GDBHISTFILE}, or to
12230@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
12231is not set.
104c1213 12232
8e04817f
AC
12233@cindex history save
12234@kindex set history save
12235@item set history save
12236@itemx set history save on
12237Record command history in a file, whose name may be specified with the
12238@code{set history filename} command. By default, this option is disabled.
104c1213 12239
8e04817f
AC
12240@item set history save off
12241Stop recording command history in a file.
104c1213 12242
8e04817f
AC
12243@cindex history size
12244@kindex set history size
12245@item set history size @var{size}
12246Set the number of commands which @value{GDBN} keeps in its history list.
12247This defaults to the value of the environment variable
12248@code{HISTSIZE}, or to 256 if this variable is not set.
104c1213
JM
12249@end table
12250
8e04817f
AC
12251@cindex history expansion
12252History expansion assigns special meaning to the character @kbd{!}.
12253@ifset have-readline-appendices
12254@xref{Event Designators}.
12255@end ifset
12256
12257Since @kbd{!} is also the logical not operator in C, history expansion
12258is off by default. If you decide to enable history expansion with the
12259@code{set history expansion on} command, you may sometimes need to
12260follow @kbd{!} (when it is used as logical not, in an expression) with
12261a space or a tab to prevent it from being expanded. The readline
12262history facilities do not attempt substitution on the strings
12263@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
12264
12265The commands to control history expansion are:
104c1213
JM
12266
12267@table @code
8e04817f
AC
12268@kindex set history expansion
12269@item set history expansion on
12270@itemx set history expansion
12271Enable history expansion. History expansion is off by default.
104c1213 12272
8e04817f
AC
12273@item set history expansion off
12274Disable history expansion.
104c1213 12275
8e04817f
AC
12276The readline code comes with more complete documentation of
12277editing and history expansion features. Users unfamiliar with @sc{gnu} Emacs
12278or @code{vi} may wish to read it.
12279@ifset have-readline-appendices
12280@xref{Command Line Editing}.
12281@end ifset
104c1213 12282
8e04817f
AC
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
12290These 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
12298Display the last ten commands in the command history.
104c1213 12299
8e04817f
AC
12300@item show commands @var{n}
12301Print ten commands centered on command number @var{n}.
12302
12303@item show commands +
12304Print ten commands just after the commands last printed.
104c1213
JM
12305@end table
12306
8e04817f
AC
12307@node Screen Size
12308@section Screen size
12309@cindex size of screen
12310@cindex pauses in output
104c1213 12311
8e04817f
AC
12312Certain commands to @value{GDBN} may produce large amounts of
12313information 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
12315output. Type @key{RET} when you want to continue the output, or @kbd{q}
12316to discard the remaining output. Also, the screen width setting
12317determines when to wrap lines of output. Depending on what is being
12318printed, @value{GDBN} tries to break the line at a readable place,
12319rather than simply letting it overflow onto the following line.
12320
12321Normally @value{GDBN} knows the size of the screen from the terminal
12322driver software. For example, on Unix @value{GDBN} uses the termcap data base
12323together 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,
12325you can override it with the @code{set height} and @code{set
12326width} 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
12337These @code{set} commands specify a screen height of @var{lpp} lines and
12338a screen width of @var{cpl} characters. The associated @code{show}
12339commands display the current settings.
104c1213 12340
8e04817f
AC
12341If you specify a height of zero lines, @value{GDBN} does not pause during
12342output no matter how long the output is. This is useful if output is to a
12343file or to an editor buffer.
104c1213 12344
8e04817f
AC
12345Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
12346from wrapping its output.
104c1213
JM
12347@end table
12348
8e04817f
AC
12349@node Numbers
12350@section Numbers
12351@cindex number representation
12352@cindex entering numbers
104c1213 12353
8e04817f
AC
12354You 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
12357begin with @samp{0x}. Numbers that begin with none of these are, by
12358default, entered in base 10; likewise, the default display for
12359numbers---when no particular format is specified---is base 10. You can
12360change the default base for both input and output with the @code{set
12361radix} command.
104c1213 12362
8e04817f
AC
12363@table @code
12364@kindex set input-radix
12365@item set input-radix @var{base}
12366Set the default base for numeric input. Supported choices
12367for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
12368specified either unambiguously or using the current default radix; for
12369example, any of
104c1213 12370
8e04817f
AC
12371@smallexample
12372set radix 012
12373set radix 10.
12374set radix 0xa
12375@end smallexample
104c1213 12376
8e04817f
AC
12377@noindent
12378sets the base to decimal. On the other hand, @samp{set radix 10}
12379leaves the radix unchanged no matter what it was.
104c1213 12380
8e04817f
AC
12381@kindex set output-radix
12382@item set output-radix @var{base}
12383Set the default base for numeric display. Supported choices
12384for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
12385specified either unambiguously or using the current default radix.
104c1213 12386
8e04817f
AC
12387@kindex show input-radix
12388@item show input-radix
12389Display the current default base for numeric input.
104c1213 12390
8e04817f
AC
12391@kindex show output-radix
12392@item show output-radix
12393Display the current default base for numeric display.
12394@end table
104c1213 12395
8e04817f
AC
12396@node Messages/Warnings
12397@section Optional warnings and messages
104c1213 12398
8e04817f
AC
12399By default, @value{GDBN} is silent about its inner workings. If you are
12400running on a slow machine, you may want to use the @code{set verbose}
12401command. This makes @value{GDBN} tell you when it does a lengthy
12402internal operation, so you will not think it has crashed.
104c1213 12403
8e04817f
AC
12404Currently, the messages controlled by @code{set verbose} are those
12405which announce that the symbol table for a source file is being read;
12406see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
104c1213 12407
8e04817f
AC
12408@table @code
12409@kindex set verbose
12410@item set verbose on
12411Enables @value{GDBN} output of certain informational messages.
104c1213 12412
8e04817f
AC
12413@item set verbose off
12414Disables @value{GDBN} output of certain informational messages.
104c1213 12415
8e04817f
AC
12416@kindex show verbose
12417@item show verbose
12418Displays whether @code{set verbose} is on or off.
12419@end table
104c1213 12420
8e04817f
AC
12421By default, if @value{GDBN} encounters bugs in the symbol table of an
12422object file, it is silent; but if you are debugging a compiler, you may
12423find this information useful (@pxref{Symbol Errors, ,Errors reading
12424symbol files}).
104c1213 12425
8e04817f 12426@table @code
104c1213 12427
8e04817f
AC
12428@kindex set complaints
12429@item set complaints @var{limit}
12430Permits @value{GDBN} to output @var{limit} complaints about each type of
12431unusual symbols before becoming silent about the problem. Set
12432@var{limit} to zero to suppress all complaints; set it to a large number
12433to prevent complaints from being suppressed.
104c1213 12434
8e04817f
AC
12435@kindex show complaints
12436@item show complaints
12437Displays how many symbol complaints @value{GDBN} is permitted to produce.
104c1213 12438
8e04817f 12439@end table
104c1213 12440
8e04817f
AC
12441By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
12442lot of stupid questions to confirm certain commands. For example, if
12443you try to run a program which is already running:
104c1213
JM
12444
12445@example
8e04817f
AC
12446(@value{GDBP}) run
12447The program being debugged has been started already.
12448Start it from the beginning? (y or n)
104c1213
JM
12449@end example
12450
8e04817f
AC
12451If you are willing to unflinchingly face the consequences of your own
12452commands, you can disable this ``feature'':
104c1213 12453
8e04817f 12454@table @code
104c1213 12455
8e04817f
AC
12456@kindex set confirm
12457@cindex flinching
12458@cindex confirmation
12459@cindex stupid questions
12460@item set confirm off
12461Disables confirmation requests.
104c1213 12462
8e04817f
AC
12463@item set confirm on
12464Enables confirmation requests (the default).
104c1213 12465
8e04817f
AC
12466@kindex show confirm
12467@item show confirm
12468Displays state of confirmation requests.
12469
12470@end table
104c1213 12471
8e04817f
AC
12472@node Debugging Output
12473@section Optional messages about internal happenings
104c1213 12474@table @code
8e04817f
AC
12475@kindex set debug arch
12476@item set debug arch
12477Turns on or off display of gdbarch debugging info. The default is off
12478@kindex show debug arch
12479@item show debug arch
12480Displays the current state of displaying gdbarch debugging info.
12481@kindex set debug event
12482@item set debug event
12483Turns on or off display of @value{GDBN} event debugging info. The
12484default is off.
12485@kindex show debug event
12486@item show debug event
12487Displays the current state of displaying @value{GDBN} event debugging
12488info.
12489@kindex set debug expression
12490@item set debug expression
12491Turns on or off display of @value{GDBN} expression debugging info. The
12492default is off.
12493@kindex show debug expression
12494@item show debug expression
12495Displays the current state of displaying @value{GDBN} expression
12496debugging info.
12497@kindex set debug overload
12498@item set debug overload
12499Turns on or off display of @value{GDBN} C@t{++} overload debugging
12500info. This includes info such as ranking of functions, etc. The default
12501is off.
12502@kindex show debug overload
12503@item show debug overload
12504Displays the current state of displaying @value{GDBN} C@t{++} overload
12505debugging info.
12506@kindex set debug remote
12507@cindex packets, reporting on stdout
12508@cindex serial connections, debugging
12509@item set debug remote
12510Turns on or off display of reports on all packets sent back and forth across
12511the 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
12515Displays the state of display of remote packets.
12516@kindex set debug serial
12517@item set debug serial
12518Turns on or off display of @value{GDBN} serial debugging info. The
12519default is off.
12520@kindex show debug serial
12521@item show debug serial
12522Displays the current state of displaying @value{GDBN} serial debugging
12523info.
12524@kindex set debug target
12525@item set debug target
12526Turns on or off display of @value{GDBN} target debugging info. This info
12527includes what is going on at the target level of GDB, as it happens. The
12528default is off.
12529@kindex show debug target
12530@item show debug target
12531Displays the current state of displaying @value{GDBN} target debugging
12532info.
12533@kindex set debug varobj
12534@item set debug varobj
12535Turns on or off display of @value{GDBN} variable object debugging
12536info. The default is off.
12537@kindex show debug varobj
12538@item show debug varobj
12539Displays the current state of displaying @value{GDBN} variable object
12540debugging info.
12541@end table
104c1213 12542
8e04817f
AC
12543@node Sequences
12544@chapter Canned Sequences of Commands
104c1213 12545
8e04817f
AC
12546Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
12547command lists}), @value{GDBN} provides two ways to store sequences of
12548commands for execution as a unit: user-defined commands and command
12549files.
104c1213 12550
8e04817f
AC
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
104c1213 12557
8e04817f
AC
12558@node Define
12559@section User-defined commands
104c1213 12560
8e04817f
AC
12561@cindex user-defined command
12562A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
12563which 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
12565separated by whitespace. Arguments are accessed within the user command
12566via @var{$arg0@dots{}$arg9}. A trivial example:
104c1213 12567
8e04817f
AC
12568@smallexample
12569define adder
12570 print $arg0 + $arg1 + $arg2
12571@end smallexample
104c1213
JM
12572
12573@noindent
8e04817f 12574To execute the command use:
104c1213 12575
8e04817f
AC
12576@smallexample
12577adder 1 2 3
12578@end smallexample
104c1213 12579
8e04817f
AC
12580@noindent
12581This defines the command @code{adder}, which prints the sum of
12582its three arguments. Note the arguments are text substitutions, so they may
12583reference variables, use complex expressions, or even perform inferior
12584functions calls.
104c1213
JM
12585
12586@table @code
104c1213 12587
8e04817f
AC
12588@kindex define
12589@item define @var{commandname}
12590Define a command named @var{commandname}. If there is already a command
12591by that name, you are asked to confirm that you want to redefine it.
104c1213 12592
8e04817f
AC
12593The definition of the command is made up of other @value{GDBN} command lines,
12594which are given following the @code{define} command. The end of these
12595commands is marked by a line containing @code{end}.
104c1213 12596
8e04817f
AC
12597@kindex if
12598@kindex else
12599@item if
12600Takes a single argument, which is an expression to evaluate.
12601It is followed by a series of commands that are executed
12602only if the expression is true (nonzero).
12603There can then optionally be a line @code{else}, followed
12604by a series of commands that are only executed if the expression
12605was false. The end of the list is marked by a line containing @code{end}.
104c1213 12606
8e04817f
AC
12607@kindex while
12608@item while
12609The syntax is similar to @code{if}: the command takes a single argument,
12610which is an expression to evaluate, and must be followed by the commands to
12611execute, one per line, terminated by an @code{end}.
12612The commands are executed repeatedly as long as the expression
12613evaluates to true.
104c1213 12614
8e04817f
AC
12615@kindex document
12616@item document @var{commandname}
12617Document the user-defined command @var{commandname}, so that it can be
12618accessed by @code{help}. The command @var{commandname} must already be
12619defined. This command reads lines of documentation just as @code{define}
12620reads the lines of the command definition, ending with @code{end}.
12621After the @code{document} command is finished, @code{help} on command
12622@var{commandname} displays the documentation you have written.
104c1213 12623
8e04817f
AC
12624You may use the @code{document} command again to change the
12625documentation of a command. Redefining the command with @code{define}
12626does not change the documentation.
104c1213 12627
8e04817f
AC
12628@kindex help user-defined
12629@item help user-defined
12630List all user-defined commands, with the first line of the documentation
12631(if any) for each.
104c1213 12632
8e04817f
AC
12633@kindex show user
12634@item show user
12635@itemx show user @var{commandname}
12636Display the @value{GDBN} commands used to define @var{commandname} (but
12637not its documentation). If no @var{commandname} is given, display the
12638definitions for all user-defined commands.
104c1213
JM
12639
12640@end table
12641
8e04817f
AC
12642When user-defined commands are executed, the
12643commands of the definition are not printed. An error in any command
12644stops execution of the user-defined command.
104c1213 12645
8e04817f
AC
12646If used interactively, commands that would ask for confirmation proceed
12647without asking when used inside a user-defined command. Many @value{GDBN}
12648commands that normally print messages to say what they are doing omit the
12649messages when used in a user-defined command.
104c1213 12650
8e04817f
AC
12651@node Hooks
12652@section User-defined command hooks
12653@cindex command hooks
12654@cindex hooks, for commands
12655@cindex hooks, pre-command
104c1213 12656
8e04817f
AC
12657@kindex hook
12658@kindex hook-
12659You may define @dfn{hooks}, which are a special kind of user-defined
12660command. Whenever you run the command @samp{foo}, if the user-defined
12661command @samp{hook-foo} exists, it is executed (with no arguments)
12662before that command.
104c1213 12663
8e04817f
AC
12664@cindex hooks, post-command
12665@kindex hookpost
12666@kindex hookpost-
12667A hook may also be defined which is run after the command you executed.
12668Whenever you run the command @samp{foo}, if the user-defined command
12669@samp{hookpost-foo} exists, it is executed (with no arguments) after
12670that command. Post-execution hooks may exist simultaneously with
12671pre-execution hooks, for the same command.
104c1213 12672
8e04817f
AC
12673It is valid for a hook to call the command which it hooks. If this
12674occurs, the hook is not re-executed, thereby avoiding infinte recursion.
104c1213 12675
8e04817f
AC
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!
104c1213 12678
8e04817f
AC
12679@kindex stop@r{, a pseudo-command}
12680In addition, a pseudo-command, @samp{stop} exists. Defining
12681(@samp{hook-stop}) makes the associated commands execute every time
12682execution stops in your program: before breakpoint commands are run,
12683displays are printed, or the stack frame is printed.
104c1213 12684
8e04817f
AC
12685For example, to ignore @code{SIGALRM} signals while
12686single-stepping, but treat them normally during normal execution,
12687you could define:
104c1213 12688
8e04817f
AC
12689@example
12690define hook-stop
12691handle SIGALRM nopass
12692end
104c1213 12693
8e04817f
AC
12694define hook-run
12695handle SIGALRM pass
12696end
104c1213 12697
8e04817f
AC
12698define hook-continue
12699handle SIGLARM pass
12700end
12701@end example
104c1213 12702
8e04817f
AC
12703As a further example, to hook at the begining and end of the @code{echo}
12704command, and to add extra text to the beginning and end of the message,
12705you could define:
104c1213 12706
8e04817f
AC
12707@example
12708define hook-echo
12709echo <<<---
12710end
104c1213 12711
8e04817f
AC
12712define hookpost-echo
12713echo --->>>\n
12714end
104c1213 12715
8e04817f
AC
12716(@value{GDBP}) echo Hello World
12717<<<---Hello World--->>>
12718(@value{GDBP})
104c1213 12719
8e04817f 12720@end example
104c1213 12721
8e04817f
AC
12722You can define a hook for any single-word command in @value{GDBN}, but
12723not for command aliases; you should define a hook for the basic command
12724name, 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?
12727If 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).
104c1213 12730
8e04817f
AC
12731If you try to define a hook which does not match any known command, you
12732get a warning from the @code{define} command.
c906108c 12733
8e04817f
AC
12734@node Command Files
12735@section Command files
c906108c 12736
8e04817f
AC
12737@cindex command files
12738A command file for @value{GDBN} is a file of lines that are @value{GDBN}
12739commands. Comments (lines starting with @kbd{#}) may also be included.
12740An empty line in a command file does nothing; it does not mean to repeat
12741the last command, as it would from the terminal.
c906108c 12742
8e04817f
AC
12743@cindex init file
12744@cindex @file{.gdbinit}
12745@cindex @file{gdb.ini}
12746When you start @value{GDBN}, it automatically executes commands from its
12747@dfn{init files}, normally called @file{.gdbinit}@footnote{The DJGPP
12748port of @value{GDBN} uses the name @file{gdb.ini} instead, due to the
12749limitations of file names imposed by DOS filesystems.}.
12750During startup, @value{GDBN} does the following:
c906108c 12751
8e04817f
AC
12752@enumerate
12753@item
12754Reads the init file (if any) in your home directory@footnote{On
12755DOS/Windows systems, the home directory is the one pointed to by the
12756@code{HOME} environment variable.}.
c906108c 12757
8e04817f
AC
12758@item
12759Processes command line options and operands.
c906108c 12760
8e04817f
AC
12761@item
12762Reads the init file (if any) in the current working directory.
c906108c 12763
8e04817f
AC
12764@item
12765Reads command files specified by the @samp{-x} option.
12766@end enumerate
c906108c 12767
8e04817f
AC
12768The init file in your home directory can set options (such as @samp{set
12769complaints}) that affect subsequent processing of command line options
12770and operands. Init files are not executed if you use the @samp{-nx}
12771option (@pxref{Mode Options, ,Choosing modes}).
c906108c 12772
8e04817f
AC
12773@cindex init file name
12774On some configurations of @value{GDBN}, the init file is known by a
12775different name (these are typically environments where a specialized
12776form of @value{GDBN} may need to coexist with other forms, hence a
12777different name for the specialized version's init file). These are the
12778environments with special init file names:
c906108c 12779
8e04817f
AC
12780@cindex @file{.vxgdbinit}
12781@itemize @bullet
12782@item
12783VxWorks (Wind River Systems real-time OS): @file{.vxgdbinit}
c906108c 12784
8e04817f
AC
12785@cindex @file{.os68gdbinit}
12786@item
12787OS68K (Enea Data Systems real-time OS): @file{.os68gdbinit}
c906108c 12788
8e04817f
AC
12789@cindex @file{.esgdbinit}
12790@item
12791ES-1800 (Ericsson Telecom AB M68000 emulator): @file{.esgdbinit}
12792@end itemize
c906108c 12793
8e04817f
AC
12794You can also request the execution of a command file with the
12795@code{source} command:
c906108c 12796
8e04817f
AC
12797@table @code
12798@kindex source
12799@item source @var{filename}
12800Execute the command file @var{filename}.
c906108c
SS
12801@end table
12802
8e04817f
AC
12803The lines in a command file are executed sequentially. They are not
12804printed as they are executed. An error in any command terminates execution
12805of the command file.
c906108c 12806
8e04817f
AC
12807Commands that would ask for confirmation if used interactively proceed
12808without asking when used in a command file. Many @value{GDBN} commands that
12809normally print messages to say what they are doing omit the messages
12810when called from command files.
c906108c 12811
8e04817f
AC
12812@value{GDBN} also accepts command input from standard input. In this
12813mode, normal output goes to standard output and error output goes to
12814standard error. Errors in a command file supplied on standard input do
12815not terminate execution of the command file --- execution continues with
12816the next command.
c906108c 12817
8e04817f
AC
12818@example
12819gdb < cmds > log 2>&1
12820@end example
c906108c 12821
8e04817f
AC
12822(The syntax above will vary depending on the shell used.) This example
12823will execute commands from the file @file{cmds}. All output and errors
12824would be directed to @file{log}.
c906108c 12825
8e04817f
AC
12826@node Output
12827@section Commands for controlled output
c906108c 12828
8e04817f
AC
12829During 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
12831explicitly printed by the commands in the definition. This section
12832describes three commands useful for generating exactly the output you
12833want.
c906108c
SS
12834
12835@table @code
8e04817f
AC
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.
12840Print @var{text}. Nonprinting characters can be included in
12841@var{text} using C escape sequences, such as @samp{\n} to print a
12842newline. @strong{No newline is printed unless you specify one.}
12843In addition to the standard C escape sequences, a backslash followed
12844by a space stands for a space. This is useful for displaying a
12845string with spaces at the beginning or the end, since leading and
12846trailing spaces are otherwise trimmed from all arguments.
12847To print @samp{@w{ }and foo =@w{ }}, use the command
12848@samp{echo \@w{ }and foo = \@w{ }}.
c906108c 12849
8e04817f
AC
12850A backslash at the end of @var{text} can be used, as in C, to continue
12851the command onto subsequent lines. For example,
c906108c 12852
8e04817f
AC
12853@example
12854echo This is some text\n\
12855which is continued\n\
12856onto several lines.\n
12857@end example
c906108c 12858
8e04817f 12859produces the same output as
c906108c 12860
8e04817f
AC
12861@example
12862echo This is some text\n
12863echo which is continued\n
12864echo onto several lines.\n
12865@end example
c906108c 12866
8e04817f
AC
12867@kindex output
12868@item output @var{expression}
12869Print the value of @var{expression} and nothing but that value: no
12870newlines, no @samp{$@var{nn} = }. The value is not entered in the
12871value history either. @xref{Expressions, ,Expressions}, for more information
12872on expressions.
c906108c 12873
8e04817f
AC
12874@item output/@var{fmt} @var{expression}
12875Print the value of @var{expression} in format @var{fmt}. You can use
12876the same formats as for @code{print}. @xref{Output Formats,,Output
12877formats}, for more information.
c906108c 12878
8e04817f
AC
12879@kindex printf
12880@item printf @var{string}, @var{expressions}@dots{}
12881Print the values of the @var{expressions} under the control of
12882@var{string}. The @var{expressions} are separated by commas and may be
12883either numbers or pointers. Their values are printed as specified by
12884@var{string}, exactly as if your program were to execute the C
12885subroutine
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.
c906108c 12890
8e04817f
AC
12891@example
12892printf (@var{string}, @var{expressions}@dots{});
12893@end example
c906108c 12894
8e04817f 12895For example, you can print two values in hex like this:
c906108c 12896
8e04817f
AC
12897@smallexample
12898printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
12899@end smallexample
c906108c 12900
8e04817f
AC
12901The only backslash-escape sequences that you can use in the format
12902string are the simple ones that consist of backslash followed by a
12903letter.
c906108c
SS
12904@end table
12905
8e04817f
AC
12906@node TUI
12907@chapter @value{GDBN} Text User Interface
12908@cindex TUI
c906108c 12909
8e04817f
AC
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
c906108c 12916
8e04817f
AC
12917The @value{GDBN} Text User Interface, TUI in short,
12918is a terminal interface which uses the @code{curses} library
12919to show the source file, the assembly output, the program registers
12920and @value{GDBN} commands in separate text windows.
12921The TUI is available only when @value{GDBN} is configured
12922with the @code{--enable-tui} configure option (@pxref{Configure Options}).
c906108c 12923
8e04817f
AC
12924@node TUI Overview
12925@section TUI overview
c906108c 12926
8e04817f
AC
12927The TUI has two display modes that can be switched while
12928@value{GDBN} runs:
c906108c 12929
8e04817f
AC
12930@itemize @bullet
12931@item
12932A curses (or TUI) mode in which it displays several text
12933windows on the terminal.
c906108c 12934
8e04817f
AC
12935@item
12936A standard mode which corresponds to the @value{GDBN} configured without
12937the TUI.
12938@end itemize
c906108c 12939
8e04817f
AC
12940In the TUI mode, @value{GDBN} can display several text window
12941on the terminal:
c906108c 12942
8e04817f
AC
12943@table @emph
12944@item command
12945This window is the @value{GDBN} command window with the @value{GDBN}
12946prompt and the @value{GDBN} outputs. The @value{GDBN} input is still
12947managed using readline but through the TUI. The @emph{command}
12948window is always visible.
c906108c 12949
8e04817f
AC
12950@item source
12951The source window shows the source file of the program. The current
12952line as well as active breakpoints are displayed in this window.
12953The current program position is shown with the @samp{>} marker and
12954active breakpoints are shown with @samp{*} markers.
c906108c 12955
8e04817f
AC
12956@item assembly
12957The assembly window shows the disassembly output of the program.
c906108c 12958
8e04817f
AC
12959@item register
12960This window shows the processor registers. It detects when
12961a register is changed and when this is the case, registers that have
12962changed are highlighted.
c906108c 12963
c906108c
SS
12964@end table
12965
8e04817f
AC
12966The source, assembly and register windows are attached to the thread
12967and the frame position. They are updated when the current thread
12968changes, when the frame changes or when the program counter changes.
12969These three windows are arranged by the TUI according to several
12970layouts. The layout defines which of these three windows are visible.
12971The following layouts are available:
c906108c 12972
8e04817f
AC
12973@itemize @bullet
12974@item
12975source
2df3850c 12976
8e04817f
AC
12977@item
12978assembly
12979
12980@item
12981source and assembly
12982
12983@item
12984source and registers
c906108c 12985
8e04817f
AC
12986@item
12987assembly and registers
2df3850c 12988
8e04817f 12989@end itemize
c906108c 12990
8e04817f
AC
12991@node TUI Keys
12992@section TUI Key Bindings
12993@cindex TUI key bindings
c906108c 12994
8e04817f
AC
12995The TUI installs several key bindings in the readline keymaps
12996(@pxref{Command Line Editing}).
12997They allow to leave or enter in the TUI mode or they operate
12998directly on the TUI layout and windows. The following key bindings
12999are installed for both TUI mode and the @value{GDBN} standard mode.
c906108c 13000
8e04817f
AC
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
13008Enter or leave the TUI mode. When the TUI mode is left,
13009the curses window management is left and @value{GDBN} operates using
13010its standard mode writing on the terminal directly. When the TUI
13011mode is entered, the control is given back to the curses windows.
13012The screen is then refreshed.
c906108c 13013
8e04817f
AC
13014@kindex C-x 1
13015@item C-x 1
13016Use a TUI layout with only one window. The layout will
13017either be @samp{source} or @samp{assembly}. When the TUI mode
13018is not active, it will switch to the TUI mode.
2df3850c 13019
8e04817f 13020Think of this key binding as the Emacs @kbd{C-x 1} binding.
c906108c 13021
8e04817f
AC
13022@kindex C-x 2
13023@item C-x 2
13024Use a TUI layout with at least two windows. When the current
13025layout shows already two windows, a next layout with two windows is used.
13026When a new layout is chosen, one window will always be common to the
13027previous layout and the new one.
c906108c 13028
8e04817f 13029Think of it as the Emacs @kbd{C-x 2} binding.
2df3850c 13030
c906108c
SS
13031@end table
13032
8e04817f 13033The following key bindings are handled only by the TUI mode:
5d161b24 13034
8e04817f
AC
13035@table @key
13036@kindex PgUp
13037@item PgUp
13038Scroll the active window one page up.
c906108c 13039
8e04817f
AC
13040@kindex PgDn
13041@item PgDn
13042Scroll the active window one page down.
c906108c 13043
8e04817f
AC
13044@kindex Up
13045@item Up
13046Scroll the active window one line up.
c906108c 13047
8e04817f
AC
13048@kindex Down
13049@item Down
13050Scroll the active window one line down.
c906108c 13051
8e04817f
AC
13052@kindex Left
13053@item Left
13054Scroll the active window one column left.
c906108c 13055
8e04817f
AC
13056@kindex Right
13057@item Right
13058Scroll the active window one column right.
c906108c 13059
8e04817f
AC
13060@kindex C-L
13061@item C-L
13062Refresh the screen.
c906108c 13063
8e04817f 13064@end table
c906108c 13065
8e04817f
AC
13066In the TUI mode, the arrow keys are used by the active window
13067for scrolling. This means they are not available for readline. It is
13068necessary 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
13075The TUI has specific commands to control the text windows.
13076These commands are always available, that is they do not depend on
13077the current terminal mode in which @value{GDBN} runs. When @value{GDBN}
13078is in the standard mode, using these commands will automatically switch
13079in the TUI mode.
c906108c
SS
13080
13081@table @code
8e04817f
AC
13082@item layout next
13083@kindex layout next
13084Display the next layout.
2df3850c 13085
8e04817f
AC
13086@item layout prev
13087@kindex layout prev
13088Display the previous layout.
c906108c 13089
8e04817f
AC
13090@item layout src
13091@kindex layout src
13092Display the source window only.
c906108c 13093
8e04817f
AC
13094@item layout asm
13095@kindex layout asm
13096Display the assembly window only.
c906108c 13097
8e04817f
AC
13098@item layout split
13099@kindex layout split
13100Display the source and assembly window.
c906108c 13101
8e04817f
AC
13102@item layout regs
13103@kindex layout regs
13104Display the register window together with the source or assembly window.
13105
13106@item focus next | prev | src | asm | regs | split
13107@kindex focus
13108Set the focus to the named window.
13109This command allows to change the active window so that scrolling keys
13110can be affected to another window.
c906108c 13111
8e04817f
AC
13112@item refresh
13113@kindex refresh
13114Refresh the screen. This is similar to using @key{C-L} key.
c906108c 13115
8e04817f
AC
13116@item update
13117@kindex update
13118Update the source window and the current execution point.
c906108c 13119
8e04817f
AC
13120@item winheight @var{name} +@var{count}
13121@itemx winheight @var{name} -@var{count}
13122@kindex winheight
13123Change the height of the window @var{name} by @var{count}
13124lines. Positive counts increase the height, while negative counts
13125decrease it.
2df3850c 13126
c906108c
SS
13127@end table
13128
8e04817f
AC
13129@node TUI Configuration
13130@section TUI configuration variables
13131@cindex TUI configuration variables
c906108c 13132
8e04817f
AC
13133The TUI has several configuration variables that control the
13134appearance of windows on the terminal.
c906108c 13135
8e04817f
AC
13136@table @code
13137@item set tui border-kind @var{kind}
13138@kindex set tui border-kind
13139Select the border appearance for the source, assembly and register windows.
13140The possible values are the following:
13141@table @code
13142@item space
13143Use a space character to draw the border.
c906108c 13144
8e04817f
AC
13145@item ascii
13146Use ascii characters + - and | to draw the border.
c906108c 13147
8e04817f
AC
13148@item acs
13149Use the Alternate Character Set to draw the border. The border is
13150drawn using character line graphics if the terminal supports them.
c78b4128 13151
8e04817f 13152@end table
c78b4128 13153
8e04817f
AC
13154@item set tui active-border-mode @var{mode}
13155@kindex set tui active-border-mode
13156Select the attributes to display the border of the active window.
13157The possible values are @code{normal}, @code{standout}, @code{reverse},
13158@code{half}, @code{half-standout}, @code{bold} and @code{bold-standout}.
c78b4128 13159
8e04817f
AC
13160@item set tui border-mode @var{mode}
13161@kindex set tui border-mode
13162Select the attributes to display the border of other windows.
13163The @var{mode} can be one of the following:
13164@table @code
13165@item normal
13166Use normal attributes to display the border.
c906108c 13167
8e04817f
AC
13168@item standout
13169Use standout mode.
c906108c 13170
8e04817f
AC
13171@item reverse
13172Use reverse video mode.
c906108c 13173
8e04817f
AC
13174@item half
13175Use half bright mode.
c906108c 13176
8e04817f
AC
13177@item half-standout
13178Use half bright and standout mode.
c906108c 13179
8e04817f
AC
13180@item bold
13181Use extra bright or bold mode.
c78b4128 13182
8e04817f
AC
13183@item bold-standout
13184Use extra bright or bold and standout mode.
c78b4128 13185
8e04817f 13186@end table
c78b4128 13187
8e04817f 13188@end table
c78b4128 13189
8e04817f
AC
13190@node Emacs
13191@chapter Using @value{GDBN} under @sc{gnu} Emacs
c78b4128 13192
8e04817f
AC
13193@cindex Emacs
13194@cindex @sc{gnu} Emacs
13195A special interface allows you to use @sc{gnu} Emacs to view (and
13196edit) the source files for the program you are debugging with
13197@value{GDBN}.
c906108c 13198
8e04817f
AC
13199To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
13200executable 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
13202created Emacs buffer.
13203@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c 13204
8e04817f
AC
13205Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
13206things:
c906108c 13207
8e04817f
AC
13208@itemize @bullet
13209@item
13210All ``terminal'' input and output goes through the Emacs buffer.
13211@end itemize
c906108c 13212
8e04817f
AC
13213This applies both to @value{GDBN} commands and their output, and to the input
13214and output done by the program you are debugging.
bf0184be 13215
8e04817f
AC
13216This is useful because it means that you can copy the text of previous
13217commands and input them again; you can even use parts of the output
13218in this way.
bf0184be 13219
8e04817f
AC
13220All the facilities of Emacs' Shell mode are available for interacting
13221with your program. In particular, you can send signals the usual
13222way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
13223stop.
bf0184be 13224
8e04817f 13225@itemize @bullet
bf0184be 13226@item
8e04817f
AC
13227@value{GDBN} displays source code through Emacs.
13228@end itemize
bf0184be 13229
8e04817f
AC
13230Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
13231source file for that frame and puts an arrow (@samp{=>}) at the
13232left margin of the current line. Emacs uses a separate buffer for
13233source display, and splits the screen to show both your @value{GDBN} session
13234and the source.
bf0184be 13235
8e04817f
AC
13236Explicit @value{GDBN} @code{list} or search commands still produce output as
13237usual, but you probably have no reason to use them from Emacs.
c906108c 13238
8e04817f
AC
13239@quotation
13240@emph{Warning:} If the directory where your program resides is not your
13241current directory, it can be easy to confuse Emacs about the location of
13242the source files, in which case the auxiliary display buffer does not
13243appear to show your source. @value{GDBN} can find programs by searching your
13244environment's @code{PATH} variable, so the @value{GDBN} input and output
13245session proceeds normally; but Emacs does not get enough information
13246back from @value{GDBN} to locate the source files in this situation. To
13247avoid this problem, either start @value{GDBN} mode from the directory where
13248your program resides, or specify an absolute file name when prompted for the
13249@kbd{M-x gdb} argument.
c906108c 13250
8e04817f
AC
13251A similar confusion can result if you use the @value{GDBN} @code{file} command to
13252switch to debugging a program in some other location, from an existing
13253@value{GDBN} buffer in Emacs.
13254@end quotation
13255
13256By default, @kbd{M-x gdb} calls the program called @file{gdb}. If
13257you need to call @value{GDBN} by a different name (for example, if you keep
13258several configurations around, with different names) you can set the
13259Emacs 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
13267in your @file{.emacs} file) makes Emacs call the program named
13268``@code{mygdb}'' instead.
13269
13270In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
13271addition to the standard Shell mode commands:
c906108c 13272
8e04817f
AC
13273@table @kbd
13274@item C-h m
13275Describe the features of Emacs' @value{GDBN} Mode.
c906108c 13276
8e04817f
AC
13277@item M-s
13278Execute to another source line, like the @value{GDBN} @code{step} command; also
13279update the display window to show the current file and location.
c906108c 13280
8e04817f
AC
13281@item M-n
13282Execute to next source line in this function, skipping all function
13283calls, like the @value{GDBN} @code{next} command. Then update the display window
13284to show the current file and location.
c906108c 13285
8e04817f
AC
13286@item M-i
13287Execute one instruction, like the @value{GDBN} @code{stepi} command; update
13288display window accordingly.
c906108c 13289
8e04817f
AC
13290@item M-x gdb-nexti
13291Execute to next instruction, using the @value{GDBN} @code{nexti} command; update
13292display window accordingly.
c906108c 13293
8e04817f
AC
13294@item C-c C-f
13295Execute until exit from the selected stack frame, like the @value{GDBN}
13296@code{finish} command.
c906108c 13297
8e04817f
AC
13298@item M-c
13299Continue execution of your program, like the @value{GDBN} @code{continue}
13300command.
b433d00b 13301
8e04817f 13302@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-p}.
b433d00b 13303
8e04817f
AC
13304@item M-u
13305Go up the number of frames indicated by the numeric argument
13306(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
13307like the @value{GDBN} @code{up} command.
b433d00b 13308
8e04817f 13309@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-u}.
c906108c 13310
8e04817f
AC
13311@item M-d
13312Go down the number of frames indicated by the numeric argument, like the
13313@value{GDBN} @code{down} command.
c906108c 13314
8e04817f 13315@emph{Warning:} In Emacs v19, this command is @kbd{C-c C-d}.
c906108c 13316
8e04817f
AC
13317@item C-x &
13318Read the number where the cursor is positioned, and insert it at the end
13319of the @value{GDBN} I/O buffer. For example, if you wish to disassemble code
13320around an address that was displayed earlier, type @kbd{disassemble};
13321then move the cursor to the address display, and pick up the
13322argument for @code{disassemble} by typing @kbd{C-x &}.
c906108c 13323
8e04817f
AC
13324You can customize this further by defining elements of the list
13325@code{gdb-print-command}; once it is defined, you can format or
13326otherwise process numbers picked up by @kbd{C-x &} before they are
13327inserted. A numeric argument to @kbd{C-x &} indicates that you
13328wish special formatting, and also acts as an index to pick an element of the
13329list. If the list element is a string, the number to be inserted is
13330formatted using the Emacs function @code{format}; otherwise the number
13331is passed as an argument to the corresponding list element.
13332@end table
c906108c 13333
8e04817f
AC
13334In any source file, the Emacs command @kbd{C-x SPC} (@code{gdb-break})
13335tells @value{GDBN} to set a breakpoint on the source line point is on.
c906108c 13336
8e04817f
AC
13337If you accidentally delete the source-display buffer, an easy way to get
13338it back is to type the command @code{f} in the @value{GDBN} buffer, to
13339request a frame display; when you run under Emacs, this recreates
13340the source buffer if necessary to show you the context of the current
13341frame.
c906108c 13342
8e04817f
AC
13343The source files displayed in Emacs are in ordinary Emacs buffers
13344which are visiting the source files in the usual way. You can edit
13345the files with these buffers if you wish; but keep in mind that @value{GDBN}
13346communicates with Emacs in terms of line numbers. If you add or
13347delete lines from the text, the line numbers that @value{GDBN} knows cease
13348to correspond properly with the code.
c906108c 13349
8e04817f
AC
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
c906108c 13356
8e04817f
AC
13357Version 18 of @sc{gnu} Emacs has a built-in window system
13358called the @code{epoch}
13359environment. Users of this environment can use a new command,
13360@code{inspect} which performs identically to @code{print} except that
13361each value is printed in its own window.
13362@end ignore
c906108c 13363
8e04817f
AC
13364@include annotate.texi
13365@include gdbmi.texinfo
c906108c 13366
8e04817f
AC
13367@node GDB Bugs
13368@chapter Reporting Bugs in @value{GDBN}
13369@cindex bugs in @value{GDBN}
13370@cindex reporting bugs in @value{GDBN}
c906108c 13371
8e04817f 13372Your bug reports play an essential role in making @value{GDBN} reliable.
c906108c 13373
8e04817f
AC
13374Reporting a bug may help you by bringing a solution to your problem, or it
13375may not. But in any case the principal function of a bug report is to help
13376the entire community by making the next version of @value{GDBN} work better. Bug
13377reports are your contribution to the maintenance of @value{GDBN}.
c906108c 13378
8e04817f
AC
13379In order for a bug report to serve its purpose, you must include the
13380information that enables us to fix the bug.
c4555f82
SC
13381
13382@menu
8e04817f
AC
13383* Bug Criteria:: Have you found a bug?
13384* Bug Reporting:: How to report bugs
c4555f82
SC
13385@end menu
13386
8e04817f
AC
13387@node Bug Criteria
13388@section Have you found a bug?
13389@cindex bug criteria
c4555f82 13390
8e04817f 13391If you are not sure whether you have found a bug, here are some guidelines:
c4555f82
SC
13392
13393@itemize @bullet
8e04817f
AC
13394@cindex fatal signal
13395@cindex debugger crash
13396@cindex crash of debugger
c4555f82 13397@item
8e04817f
AC
13398If 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
13403If @value{GDBN} produces an error message for valid input, that is a
13404bug. (Note that if you're cross debugging, the problem may also be
13405somewhere in the connection to the target.)
c4555f82 13406
8e04817f 13407@cindex invalid input
c4555f82 13408@item
8e04817f
AC
13409If @value{GDBN} does not produce an error message for invalid input,
13410that is a bug. However, you should note that your idea of
13411``invalid input'' might be our idea of ``an extension'' or ``support
13412for traditional practice''.
13413
13414@item
13415If you are an experienced user of debugging tools, your suggestions
13416for improvement of @value{GDBN} are welcome in any case.
c4555f82
SC
13417@end itemize
13418
8e04817f
AC
13419@node Bug Reporting
13420@section How to report bugs
13421@cindex bug reports
13422@cindex @value{GDBN} bugs, reporting
13423
13424A number of companies and individuals offer support for @sc{gnu} products.
13425If you obtained @value{GDBN} from a support organization, we recommend you
13426contact that organization first.
13427
13428You can find contact information for many support companies and
13429individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
13430distribution.
13431@c should add a web page ref...
13432
13433In any event, we also recommend that you send bug reports for
13434@value{GDBN} to this addresses:
13435
13436@example
13437bug-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
13442not want to receive bug reports. Those that do have arranged to receive
13443@samp{bug-gdb}.
13444
13445The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
13446serves as a repeater. The mailing list and the newsgroup carry exactly
13447the same messages. Often people think of posting bug reports to the
13448newsgroup instead of mailing them. This appears to work, but it has one
13449problem which can be crucial: a newsgroup posting often lacks a mail
13450path back to the sender. Thus, if we need to ask for more information,
13451we may be unable to reach you. For this reason, it is better to send
13452bug reports to the mailing list.
c4555f82 13453
8e04817f 13454As a last resort, send bug reports on paper to:
c4555f82 13455
8e04817f
AC
13456@example
13457@sc{gnu} Debugger Bugs
13458Free Software Foundation Inc.
1345959 Temple Place - Suite 330
13460Boston, MA 02111-1307
13461USA
13462@end example
c4555f82 13463
8e04817f
AC
13464The fundamental principle of reporting bugs usefully is this:
13465@strong{report all the facts}. If you are not sure whether to state a
13466fact or leave it out, state it!
c4555f82 13467
8e04817f
AC
13468Often people omit facts because they think they know what causes the
13469problem and assume that some details do not matter. Thus, you might
13470assume that the name of the variable you use in an example does not matter.
13471Well, probably it does not, but one cannot be sure. Perhaps the bug is a
13472stray memory reference which happens to fetch from the location where that
13473name is stored in memory; perhaps, if the name were different, the contents
13474of that location would fool the debugger into doing the right thing despite
13475the bug. Play it safe and give a specific, complete example. That is the
13476easiest thing for you to do, and the most helpful.
c4555f82 13477
8e04817f
AC
13478Keep in mind that the purpose of a bug report is to enable us to fix the
13479bug. It may be that the bug has been reported previously, but neither
13480you nor we can know that unless your bug report is complete and
13481self-contained.
c4555f82 13482
8e04817f
AC
13483Sometimes people give a few sketchy facts and ask, ``Does this ring a
13484bell?'' Those bug reports are useless, and we urge everyone to
13485@emph{refuse to respond to them} except to chide the sender to report
13486bugs properly.
13487
13488To enable us to fix the bug, you should include all these things:
c4555f82
SC
13489
13490@itemize @bullet
13491@item
8e04817f
AC
13492The version of @value{GDBN}. @value{GDBN} announces it if you start
13493with no arguments; you can also print it at any time using @code{show
13494version}.
c4555f82 13495
8e04817f
AC
13496Without this, we will not know whether there is any point in looking for
13497the bug in the current version of @value{GDBN}.
c4555f82
SC
13498
13499@item
8e04817f
AC
13500The type of machine you are using, and the operating system name and
13501version number.
c4555f82
SC
13502
13503@item
8e04817f
AC
13504What compiler (and its version) was used to compile @value{GDBN}---e.g.
13505``@value{GCC}--2.8.1''.
c4555f82
SC
13506
13507@item
8e04817f
AC
13508What compiler (and its version) was used to compile the program you are
13509debugging---e.g. ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
13510C Compiler''. For GCC, you can say @code{gcc --version} to get this
13511information; for other compilers, see the documentation for those
13512compilers.
c4555f82 13513
8e04817f
AC
13514@item
13515The command arguments you gave the compiler to compile your example and
13516observe the bug. For example, did you use @samp{-O}? To guarantee
13517you will not omit something important, list them all. A copy of the
13518Makefile (or the output from make) is sufficient.
c4555f82 13519
8e04817f
AC
13520If we were to try to guess the arguments, we would probably guess wrong
13521and then we might not encounter the bug.
c4555f82 13522
8e04817f
AC
13523@item
13524A complete input script, and all necessary source files, that will
13525reproduce the bug.
c4555f82 13526
8e04817f
AC
13527@item
13528A description of what behavior you observe that you believe is
13529incorrect. For example, ``It gets a fatal signal.''
c4555f82 13530
8e04817f
AC
13531Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
13532will certainly notice it. But if the bug is incorrect output, we might
13533not notice unless it is glaringly wrong. You might as well not give us
13534a chance to make a mistake.
c4555f82 13535
8e04817f
AC
13536Even if the problem you experience is a fatal signal, you should still
13537say so explicitly. Suppose something strange is going on, such as, your
13538copy of @value{GDBN} is out of synch, or you have encountered a bug in
13539the C library on your system. (This has happened!) Your copy might
13540crash and ours would not. If you told us to expect a crash, then when
13541ours fails to crash, we would know that the bug was not happening for
13542us. If you had not told us to expect a crash, then we would not be able
13543to draw any conclusion from our observations.
c4555f82 13544
8e04817f
AC
13545@item
13546If you wish to suggest changes to the @value{GDBN} source, send us context
13547diffs. If you even discuss something in the @value{GDBN} source, refer to
13548it by context, not by line number.
c4555f82 13549
8e04817f
AC
13550The line numbers in our development sources will not match those in your
13551sources. Your line numbers would convey no useful information to us.
c4555f82 13552
8e04817f 13553@end itemize
c4555f82 13554
8e04817f 13555Here are some things that are not necessary:
c4555f82 13556
8e04817f
AC
13557@itemize @bullet
13558@item
13559A description of the envelope of the bug.
c4555f82 13560
8e04817f
AC
13561Often people who encounter a bug spend a lot of time investigating
13562which changes to the input file will make the bug go away and which
13563changes will not affect it.
c4555f82 13564
8e04817f
AC
13565This is often time consuming and not very useful, because the way we
13566will find the bug is by running a single example under the debugger
13567with breakpoints, not by pure deduction from a series of examples.
13568We recommend that you save your time for something else.
c4555f82 13569
8e04817f
AC
13570Of course, if you can find a simpler example to report @emph{instead}
13571of the original one, that is a convenience for us. Errors in the
13572output will be easier to spot, running under the debugger will take
13573less time, and so on.
c4555f82 13574
8e04817f
AC
13575However, simplification is not vital; if you do not want to do this,
13576report the bug anyway and send us the entire test case you used.
c4555f82 13577
8e04817f
AC
13578@item
13579A patch for the bug.
c4555f82 13580
8e04817f
AC
13581A patch for the bug does help us if it is a good one. But do not omit
13582the necessary information, such as the test case, on the assumption that
13583a patch is all we need. We might see problems with your patch and decide
13584to fix the problem another way, or we might not understand it at all.
c4555f82 13585
8e04817f
AC
13586Sometimes with a program as complicated as @value{GDBN} it is very hard to
13587construct an example that will make the program follow a certain path
13588through the code. If you do not send us the example, we will not be able
13589to construct one, so we will not be able to verify that the bug is fixed.
c4555f82 13590
8e04817f
AC
13591And if we cannot understand what bug you are trying to fix, or why your
13592patch should be an improvement, we will not install it. A test case will
13593help us to understand.
c4555f82 13594
8e04817f
AC
13595@item
13596A guess about what the bug is or what it depends on.
c4555f82 13597
8e04817f
AC
13598Such guesses are usually wrong. Even we cannot guess right about such
13599things without first using the debugger to find the facts.
13600@end itemize
c4555f82 13601
8e04817f
AC
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
c4555f82 13610
c4555f82 13611
8e04817f
AC
13612@node Formatting Documentation
13613@appendix Formatting Documentation
c4555f82 13614
8e04817f
AC
13615@cindex @value{GDBN} reference card
13616@cindex reference card
13617The @value{GDBN} 4 release includes an already-formatted reference card, ready
13618for printing with PostScript or Ghostscript, in the @file{gdb}
13619subdirectory of the main source directory@footnote{In
13620@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
13621release.}. If you can use PostScript or Ghostscript with your printer,
13622you can print the reference card immediately with @file{refcard.ps}.
c4555f82 13623
8e04817f
AC
13624The release also includes the source for the reference card. You
13625can format it, using @TeX{}, by typing:
c4555f82 13626
8e04817f
AC
13627@example
13628make refcard.dvi
13629@end example
c4555f82 13630
8e04817f
AC
13631The @value{GDBN} reference card is designed to print in @dfn{landscape}
13632mode on US ``letter'' size paper;
13633that is, on a sheet 11 inches wide by 8.5 inches
13634high. You will need to specify this form of printing as an option to
13635your @sc{dvi} output program.
c4555f82 13636
8e04817f 13637@cindex documentation
c4555f82 13638
8e04817f
AC
13639All the documentation for @value{GDBN} comes as part of the machine-readable
13640distribution. The documentation is written in Texinfo format, which is
13641a documentation system that uses a single source file to produce both
13642on-line information and a printed manual. You can use one of the Info
13643formatting commands to create the on-line version of the documentation
13644and @TeX{} (or @code{texi2roff}) to typeset the printed version.
c4555f82 13645
8e04817f
AC
13646@value{GDBN} includes an already formatted copy of the on-line Info
13647version of this manual in the @file{gdb} subdirectory. The main Info
13648file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
13649subordinate files matching @samp{gdb.info*} in the same directory. If
13650necessary, you can print out these files, or read them with any editor;
13651but they are easier to read using the @code{info} subsystem in @sc{gnu}
13652Emacs or the standalone @code{info} program, available as part of the
13653@sc{gnu} Texinfo distribution.
c4555f82 13654
8e04817f
AC
13655If you want to format these Info files yourself, you need one of the
13656Info formatting programs, such as @code{texinfo-format-buffer} or
13657@code{makeinfo}.
c4555f82 13658
8e04817f
AC
13659If you have @code{makeinfo} installed, and are in the top level
13660@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
13661version @value{GDBVN}), you can make the Info file by typing:
c4555f82 13662
8e04817f
AC
13663@example
13664cd gdb
13665make gdb.info
13666@end example
c4555f82 13667
8e04817f
AC
13668If you want to typeset and print copies of this manual, you need @TeX{},
13669a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
13670Texinfo definitions file.
c4555f82 13671
8e04817f
AC
13672@TeX{} is a typesetting program; it does not print files directly, but
13673produces output files called @sc{dvi} files. To print a typeset
13674document, you need a program to print @sc{dvi} files. If your system
13675has @TeX{} installed, chances are it has such a program. The precise
13676command 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
13678require a file name without any extension or a @samp{.dvi} extension.
c4555f82 13679
8e04817f
AC
13680@TeX{} also requires a macro definitions file called
13681@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
13682written in Texinfo format. On its own, @TeX{} cannot either read or
13683typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
13684and is located in the @file{gdb-@var{version-number}/texinfo}
13685directory.
c4555f82 13686
8e04817f
AC
13687If you have @TeX{} and a @sc{dvi} printer program installed, you can
13688typeset and print this manual. First switch to the the @file{gdb}
13689subdirectory of the main source directory (for example, to
13690@file{gdb-@value{GDBVN}/gdb}) and type:
c4555f82 13691
8e04817f
AC
13692@example
13693make gdb.dvi
13694@end example
c4555f82 13695
8e04817f 13696Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c4555f82 13697
8e04817f
AC
13698@node Installing GDB
13699@appendix Installing @value{GDBN}
13700@cindex configuring @value{GDBN}
13701@cindex installation
c4555f82 13702
8e04817f
AC
13703@value{GDBN} comes with a @code{configure} script that automates the process
13704of preparing @value{GDBN} for installation; you can then use @code{make} to
13705build 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},
13709look at the @file{README} file in the sources; we may have improved the
13710installation procedures since publishing this manual.}
13711@end iftex
c4555f82 13712
8e04817f
AC
13713The @value{GDBN} distribution includes all the source code you need for
13714@value{GDBN} in a single directory, whose name is usually composed by
13715appending the version number to @samp{gdb}.
c4555f82 13716
8e04817f
AC
13717For example, the @value{GDBN} version @value{GDBVN} distribution is in the
13718@file{gdb-@value{GDBVN}} directory. That directory contains:
c4555f82 13719
8e04817f
AC
13720@table @code
13721@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
13722script for configuring @value{GDBN} and all its supporting libraries
c4555f82 13723
8e04817f
AC
13724@item gdb-@value{GDBVN}/gdb
13725the source specific to @value{GDBN} itself
c4555f82 13726
8e04817f
AC
13727@item gdb-@value{GDBVN}/bfd
13728source for the Binary File Descriptor library
c906108c 13729
8e04817f
AC
13730@item gdb-@value{GDBVN}/include
13731@sc{gnu} include files
c906108c 13732
8e04817f
AC
13733@item gdb-@value{GDBVN}/libiberty
13734source for the @samp{-liberty} free software library
c906108c 13735
8e04817f
AC
13736@item gdb-@value{GDBVN}/opcodes
13737source for the library of opcode tables and disassemblers
c906108c 13738
8e04817f
AC
13739@item gdb-@value{GDBVN}/readline
13740source for the @sc{gnu} command-line interface
c906108c 13741
8e04817f
AC
13742@item gdb-@value{GDBVN}/glob
13743source for the @sc{gnu} filename pattern-matching subroutine
c906108c 13744
8e04817f
AC
13745@item gdb-@value{GDBVN}/mmalloc
13746source for the @sc{gnu} memory-mapped malloc package
13747@end table
c906108c 13748
8e04817f
AC
13749The simplest way to configure and build @value{GDBN} is to run @code{configure}
13750from the @file{gdb-@var{version-number}} source directory, which in
13751this example is the @file{gdb-@value{GDBVN}} directory.
c906108c 13752
8e04817f
AC
13753First switch to the @file{gdb-@var{version-number}} source directory
13754if you are not already in it; then run @code{configure}. Pass the
13755identifier for the platform on which @value{GDBN} will run as an
13756argument.
c906108c 13757
8e04817f 13758For example:
c906108c 13759
8e04817f
AC
13760@example
13761cd gdb-@value{GDBVN}
13762./configure @var{host}
13763make
13764@end example
c906108c 13765
8e04817f
AC
13766@noindent
13767where @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
13770correct value by examining your system.)
c906108c 13771
8e04817f
AC
13772Running @samp{configure @var{host}} and then running @code{make} builds the
13773@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
13774libraries, then @code{gdb} itself. The configured source files, and the
13775binaries, are left in the corresponding source directories.
c906108c 13776
8e04817f
AC
13777@need 750
13778@code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
13779system does not recognize this automatically when you run a different
13780shell, you may need to run @code{sh} on it explicitly:
c906108c
SS
13781
13782@example
8e04817f 13783sh configure @var{host}
c906108c
SS
13784@end example
13785
8e04817f
AC
13786If you run @code{configure} from a directory that contains source
13787directories for multiple libraries or programs, such as the
13788@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
13789creates configuration files for every directory level underneath (unless
13790you tell it not to, with the @samp{--norecursion} option).
13791
13792You can run the @code{configure} script from any of the
13793subordinate directories in the @value{GDBN} distribution if you only want to
13794configure that subdirectory, but be sure to specify a path to it.
c906108c 13795
8e04817f
AC
13796For example, with version @value{GDBVN}, type the following to configure only
13797the @code{bfd} subdirectory:
c906108c 13798
8e04817f
AC
13799@example
13800@group
13801cd gdb-@value{GDBVN}/bfd
13802../configure @var{host}
13803@end group
13804@end example
c906108c 13805
8e04817f
AC
13806You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
13807However, you should make sure that the shell on your path (named by
13808the @samp{SHELL} environment variable) is publicly readable. Remember
13809that @value{GDBN} uses the shell to start your program---some systems refuse to
13810let @value{GDBN} debug child processes whose programs are not readable.
c906108c 13811
8e04817f
AC
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
c906108c 13817
8e04817f
AC
13818@node Separate Objdir
13819@section Compiling @value{GDBN} in another directory
c906108c 13820
8e04817f
AC
13821If you want to run @value{GDBN} versions for several host or target machines,
13822you need a different @code{gdb} compiled for each combination of
13823host and target. @code{configure} is designed to make this easy by
13824allowing you to generate each configuration in a separate subdirectory,
13825rather than in the source directory. If your @code{make} program
13826handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
13827@code{make} in each of these directories builds the @code{gdb}
13828program specified there.
c906108c 13829
8e04817f
AC
13830To build @code{gdb} in a separate directory, run @code{configure}
13831with the @samp{--srcdir} option to specify where to find the source.
13832(You also need to specify a path to find @code{configure}
13833itself from your working directory. If the path to @code{configure}
13834would be the same as the argument to @samp{--srcdir}, you can leave out
13835the @samp{--srcdir} option; it is assumed.)
c906108c 13836
8e04817f
AC
13837For example, with version @value{GDBVN}, you can build @value{GDBN} in a
13838separate directory for a Sun 4 like this:
c906108c 13839
8e04817f
AC
13840@example
13841@group
13842cd gdb-@value{GDBVN}
13843mkdir ../gdb-sun4
13844cd ../gdb-sun4
13845../gdb-@value{GDBVN}/configure sun4
13846make
13847@end group
13848@end example
c906108c 13849
8e04817f
AC
13850When @code{configure} builds a configuration using a remote source
13851directory, 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
13853the example, you'd find the Sun 4 library @file{libiberty.a} in the
13854directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
13855@file{gdb-sun4/gdb}.
c906108c 13856
8e04817f
AC
13857One popular reason to build several @value{GDBN} configurations in separate
13858directories is to configure @value{GDBN} for cross-compiling (where
13859@value{GDBN} runs on one machine---the @dfn{host}---while debugging
13860programs that run on another machine---the @dfn{target}).
13861You specify a cross-debugging target by
13862giving the @samp{--target=@var{target}} option to @code{configure}.
c906108c 13863
8e04817f
AC
13864When you run @code{make} to build a program or library, you must run
13865it in a configured directory---whatever directory you were in when you
13866called @code{configure} (or one of its subdirectories).
c906108c 13867
8e04817f
AC
13868The @code{Makefile} that @code{configure} generates in each source
13869directory also runs recursively. If you type @code{make} in a source
13870directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
13871directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
13872will build all the required libraries, and then build GDB.
c906108c 13873
8e04817f
AC
13874When you have multiple hosts or targets configured in separate
13875directories, you can run @code{make} on them in parallel (for example,
13876if they are NFS-mounted on each of the hosts); they will not interfere
13877with each other.
c906108c 13878
8e04817f
AC
13879@node Config Names
13880@section Specifying names for hosts and targets
c906108c 13881
8e04817f
AC
13882The specifications used for hosts and targets in the @code{configure}
13883script are based on a three-part naming scheme, but some short predefined
13884aliases are also supported. The full naming scheme encodes three pieces
13885of information in the following pattern:
c906108c 13886
8e04817f
AC
13887@example
13888@var{architecture}-@var{vendor}-@var{os}
13889@end example
c906108c 13890
8e04817f
AC
13891For example, you can use the alias @code{sun4} as a @var{host} argument,
13892or as the value for @var{target} in a @code{--target=@var{target}}
13893option. The equivalent full name is @samp{sparc-sun-sunos4}.
c906108c 13894
8e04817f
AC
13895The @code{configure} script accompanying @value{GDBN} does not provide
13896any query facility to list all supported host and target names or
13897aliases. @code{configure} calls the Bourne shell script
13898@code{config.sub} to map abbreviations to full names; you can read the
13899script, if you wish, or you can use it to test your guesses on
13900abbreviations---for example:
c906108c 13901
8e04817f
AC
13902@smallexample
13903% sh config.sub i386-linux
13904i386-pc-linux-gnu
13905% sh config.sub alpha-linux
13906alpha-unknown-linux-gnu
13907% sh config.sub hp9k700
13908hppa1.1-hp-hpux
13909% sh config.sub sun4
13910sparc-sun-sunos4.1.1
13911% sh config.sub sun3
13912m68k-sun-sunos4.1.1
13913% sh config.sub i986v
13914Invalid configuration `i986v': machine `i986v' not recognized
13915@end smallexample
c906108c 13916
8e04817f
AC
13917@noindent
13918@code{config.sub} is also distributed in the @value{GDBN} source
13919directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
d700128c 13920
8e04817f
AC
13921@node Configure Options
13922@section @code{configure} options
c906108c 13923
8e04817f
AC
13924Here is a summary of the @code{configure} options and arguments that
13925are most often useful for building @value{GDBN}. @code{configure} also has
13926several other options not listed here. @inforef{What Configure
13927Does,,configure.info}, for a full explanation of @code{configure}.
c906108c 13928
8e04817f
AC
13929@example
13930configure @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
c906108c 13938
8e04817f
AC
13939@noindent
13940You 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{--}.
c906108c 13943
8e04817f
AC
13944@table @code
13945@item --help
13946Display a quick summary of how to invoke @code{configure}.
c906108c 13947
8e04817f
AC
13948@item --prefix=@var{dir}
13949Configure the source to install programs and files under directory
13950@file{@var{dir}}.
c906108c 13951
8e04817f
AC
13952@item --exec-prefix=@var{dir}
13953Configure the source to install programs under directory
13954@file{@var{dir}}.
c906108c 13955
8e04817f
AC
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.}@*
13961Use this option to make configurations in directories separate from the
13962@value{GDBN} source directories. Among other things, you can use this to
13963build (or maintain) several configurations simultaneously, in separate
13964directories. @code{configure} writes configuration specific files in
13965the current directory, but arranges for them to use the source in the
13966directory @var{dirname}. @code{configure} creates directories under
13967the working directory in parallel to the source directories below
13968@var{dirname}.
c906108c 13969
8e04817f
AC
13970@item --norecursion
13971Configure only the directory level where @code{configure} is executed; do not
13972propagate configuration to subdirectories.
c906108c 13973
8e04817f
AC
13974@item --target=@var{target}
13975Configure @value{GDBN} for cross-debugging programs running on the specified
13976@var{target}. Without this option, @value{GDBN} is configured to debug
13977programs that run on the same machine (@var{host}) as @value{GDBN} itself.
c906108c 13978
8e04817f 13979There is no convenient way to generate a list of all available targets.
c906108c 13980
8e04817f
AC
13981@item @var{host} @dots{}
13982Configure @value{GDBN} to run on the specified @var{host}.
c906108c 13983
8e04817f
AC
13984There is no convenient way to generate a list of all available hosts.
13985@end table
c906108c 13986
8e04817f
AC
13987There are many other options available as well, but they are generally
13988needed for special purposes only.
c906108c 13989
8e04817f
AC
13990@node Maintenance Commands
13991@appendix Maintenance Commands
13992@cindex maintenance commands
13993@cindex internal commands
c906108c 13994
8e04817f
AC
13995In addition to commands intended for @value{GDBN} users, @value{GDBN}
13996includes a number of commands intended for @value{GDBN} developers.
13997These commands are provided here for reference.
c906108c 13998
8e04817f
AC
13999@table @code
14000@kindex maint info breakpoints
14001@item @anchor{maint info breakpoints}maint info breakpoints
14002Using the same format as @samp{info breakpoints}, display both the
14003breakpoints you've set explicitly, and those @value{GDBN} is using for
14004internal purposes. Internal breakpoints are shown with negative
14005breakpoint numbers. The type column identifies what kind of breakpoint
14006is shown:
c906108c 14007
8e04817f
AC
14008@table @code
14009@item breakpoint
14010Normal, explicitly set breakpoint.
c906108c 14011
8e04817f
AC
14012@item watchpoint
14013Normal, explicitly set watchpoint.
c906108c 14014
8e04817f
AC
14015@item longjmp
14016Internal breakpoint, used to handle correctly stepping through
14017@code{longjmp} calls.
c906108c 14018
8e04817f
AC
14019@item longjmp resume
14020Internal breakpoint at the target of a @code{longjmp}.
c906108c 14021
8e04817f
AC
14022@item until
14023Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
c906108c 14024
8e04817f
AC
14025@item finish
14026Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
c906108c 14027
8e04817f
AC
14028@item shlib events
14029Shared library events.
c906108c 14030
8e04817f 14031@end table
c906108c 14032
8e04817f 14033@end table
c906108c 14034
c906108c 14035
8e04817f
AC
14036@node Remove Protocol
14037@appendix @value{GDBN} Remote Serial Protocol
c906108c 14038
8e04817f
AC
14039There may be occasions when you need to know something about the
14040protocol---for example, if there is only one serial port to your target
14041machine, you might want your program to do something special if it
14042recognizes a packet meant for @value{GDBN}.
c906108c 14043
8e04817f
AC
14044In the examples below, @samp{<-} and @samp{->} are used to indicate
14045transmitted and received data respectfully.
c906108c 14046
8e04817f
AC
14047@cindex protocol, @value{GDBN} remote serial
14048@cindex serial protocol, @value{GDBN} remote
14049@cindex remote serial protocol
14050All @value{GDBN} commands and responses (other than acknowledgments) are
14051sent 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}:
c906108c 14054
8e04817f
AC
14055@example
14056@code{$}@var{packet-data}@code{#}@var{checksum}
14057@end example
14058@noindent
c906108c 14059
8e04817f
AC
14060@cindex checksum, for @value{GDBN} remote
14061@noindent
14062The two-digit @var{checksum} is computed as the modulo 256 sum of all
14063characters between the leading @samp{$} and the trailing @samp{#} (an
14064eight bit unsigned checksum).
c906108c 14065
8e04817f
AC
14066Implementors should note that prior to @value{GDBN} 5.0 the protocol
14067specification also included an optional two-digit @var{sequence-id}:
c906108c 14068
8e04817f
AC
14069@example
14070@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
14071@end example
c906108c 14072
8e04817f
AC
14073@cindex sequence-id, for @value{GDBN} remote
14074@noindent
14075That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
14076has never output @var{sequence-id}s. Stubs that handle packets added
14077since @value{GDBN} 5.0 must not accept @var{sequence-id}.
c906108c 14078
8e04817f
AC
14079@cindex acknowledgment, for @value{GDBN} remote
14080When either the host or the target machine receives a packet, the first
14081response expected is an acknowledgment: either @samp{+} (to indicate
14082the package was received correctly) or @samp{-} (to request
14083retransmission):
c906108c 14084
8e04817f
AC
14085@example
14086<- @code{$}@var{packet-data}@code{#}@var{checksum}
14087-> @code{+}
14088@end example
14089@noindent
53a5351d 14090
8e04817f
AC
14091The host (@value{GDBN}) sends @var{command}s, and the target (the
14092debugging stub incorporated in your program) sends a @var{response}. In
14093the case of step and continue @var{command}s, the response is only sent
14094when the operation has completed (the target has again stopped).
c906108c 14095
8e04817f
AC
14096@var{packet-data} consists of a sequence of characters with the
14097exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
14098exceptions).
c906108c 14099
8e04817f
AC
14100Fields within the packet should be separated using @samp{,} @samp{;} or
14101@samp{:}. Except where otherwise noted all numbers are represented in
14102HEX with leading zeros suppressed.
c906108c 14103
8e04817f
AC
14104Implementors 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
14106would potentially conflict with the @var{sequence-id}).
c906108c 14107
8e04817f
AC
14108Response @var{data} can be run-length encoded to save space. A @samp{*}
14109means that the next character is an @sc{ascii} encoding giving a repeat count
14110which stands for that many repetitions of the character preceding the
14111@samp{*}. The encoding is @code{n+29}, yielding a printable character
14112where @code{n >=3} (which is where rle starts to win). The printable
14113characters @samp{$}, @samp{#}, @samp{+} and @samp{-} or with a numeric
14114value greater than 126 should not be used.
c906108c 14115
8e04817f
AC
14116Some remote systems have used a different run-length encoding mechanism
14117loosely refered to as the cisco encoding. Following the @samp{*}
14118character are two hex digits that indicate the size of the packet.
c906108c 14119
8e04817f
AC
14120So:
14121@example
14122"@code{0* }"
14123@end example
14124@noindent
14125means the same as "0000".
c906108c 14126
8e04817f
AC
14127The error response returned for some packets includes a two character
14128error number. That number is not well defined.
c906108c 14129
8e04817f
AC
14130For 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
14132protocol. A newer @value{GDBN} can tell if a packet is supported based
14133on that response.
c906108c 14134
8e04817f
AC
14135A 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
14137optional.
c906108c 14138
8e04817f
AC
14139Below is a complete list of all currently defined @var{command}s and
14140their corresponding response @var{data}:
14141@page
14142@multitable @columnfractions .30 .30 .40
14143@item Packet
14144@tab Request
14145@tab Description
c906108c 14146
8e04817f
AC
14147@item extended mode
14148@tab @code{!}
14149@tab
14150Enable extended mode. In extended mode, the remote server is made
14151persistent. The @samp{R} packet is used to restart the program being
14152debugged.
c906108c 14153@item
8e04817f
AC
14154@tab reply @samp{OK}
14155@tab
14156The remote target both supports and has enabled extended mode.
c906108c 14157
8e04817f
AC
14158@item last signal
14159@tab @code{?}
14160@tab
14161Indicate the reason the target halted. The reply is the same as for step
14162and continue.
14163@item
14164@tab reply
14165@tab see below
c906108c
SS
14166
14167
8e04817f
AC
14168@item reserved
14169@tab @code{a}
14170@tab Reserved for future use
c906108c 14171
8e04817f
AC
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
14178Initialized @samp{argv[]} array passed into program. @var{arglen}
14179specifies the number of bytes in the hex encoded byte stream @var{arg}.
14180See @file{gdbserver} for more details.
14181@item
14182@tab reply @code{OK}
14183@item
14184@tab reply @code{E}@var{NN}
c906108c 14185
8e04817f
AC
14186@item set baud @strong{(deprecated)}
14187@tab @code{b}@var{baud}
14188@tab
14189Change the serial line speed to @var{baud}. JTC: @emph{When does the
14190transport layer state change? When it's received, or after the ACK is
14191transmitted. In either case, there are problems if the command or the
14192acknowledgment packet is dropped.} Stan: @emph{If people really wanted
14193to add something like this, and get it working for the first time, they
14194ought to modify ser-unix.c to send some kind of out-of-band message to a
14195specially-setup stub and have the switch happen "in between" packets, so
14196that from remote protocol's point of view, nothing actually
14197happened.}
c906108c 14198
8e04817f
AC
14199@item set breakpoint @strong{(deprecated)}
14200@tab @code{B}@var{addr},@var{mode}
14201@tab
14202Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
14203breakpoint at @var{addr}. @emph{This has been replaced by the @samp{Z} and
14204@samp{z} packets.}
c906108c 14205
8e04817f
AC
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
14210current address.
14211@item
14212@tab reply
14213@tab see below
c906108c 14214
8e04817f
AC
14215@item continue with signal
14216@tab @code{C}@var{sig}@code{;}@var{addr}
14217@tab
14218Continue 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
c906108c 14223
8e04817f
AC
14224@item toggle debug @strong{(deprecated)}
14225@tab @code{d}
14226@tab
14227toggle debug flag.
c906108c 14228
8e04817f
AC
14229@item detach
14230@tab @code{D}
14231@tab
14232Detach @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.
c906108c 14238
8e04817f
AC
14239@item reserved
14240@tab @code{e}
14241@tab Reserved for future use
c906108c 14242
8e04817f
AC
14243@item reserved
14244@tab @code{E}
14245@tab Reserved for future use
c906108c 14246
8e04817f
AC
14247@item reserved
14248@tab @code{f}
14249@tab Reserved for future use
c906108c 14250
8e04817f
AC
14251@item reserved
14252@tab @code{F}
14253@tab Reserved for future use
c906108c 14254
8e04817f
AC
14255@item read registers
14256@tab @code{g}
14257@tab Read general registers.
14258@item
14259@tab reply @var{XX...}
14260@tab
14261Each byte of register data is described by two hex digits. The bytes
14262with the register are transmitted in target byte order. The size of
14263each register and their position within the @samp{g} @var{packet} are
14264determined 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.
c906108c 14270
8e04817f
AC
14271@item write regs
14272@tab @code{G}@var{XX...}
14273@tab
14274See @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
c906108c 14281
8e04817f
AC
14282@item reserved
14283@tab @code{h}
14284@tab Reserved for future use
c906108c 14285
8e04817f
AC
14286@item set thread
14287@tab @code{H}@var{c}@var{t...}
14288@tab
14289Set 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
14291continue; @var{t...} can be -1 for all threads. @var{c} = @samp{g} for
14292thread 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
c906108c 14299
8e04817f
AC
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.
c906108c 14314
8e04817f
AC
14315@item cycle step @strong{(draft)}
14316@tab @code{i}@var{addr}@code{,}@var{nnn}
14317@tab
14318Step the remote target by a single clock cycle. If @code{,}@var{nnn} is
14319present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
14320step starting at that address.
c906108c 14321
8e04817f
AC
14322@item signal then cycle step @strong{(reserved)}
14323@tab @code{I}
14324@tab
14325See @samp{i} and @samp{S} for likely syntax and semantics.
c906108c 14326
8e04817f
AC
14327@item reserved
14328@tab @code{j}
14329@tab Reserved for future use
c906108c 14330
8e04817f
AC
14331@item reserved
14332@tab @code{J}
14333@tab Reserved for future use
c906108c 14334
8e04817f
AC
14335@item kill request
14336@tab @code{k}
14337@tab
14338FIXME: @emph{There is no description of how operate when a specific
14339thread context has been selected (ie. does 'k' kill only that thread?)}.
c906108c 14340
8e04817f
AC
14341@item reserved
14342@tab @code{l}
14343@tab Reserved for future use
c906108c 14344
8e04817f
AC
14345@item reserved
14346@tab @code{L}
14347@tab Reserved for future use
c906108c 14348
8e04817f
AC
14349@item read memory
14350@tab @code{m}@var{addr}@code{,}@var{length}
14351@tab
14352Read @var{length} bytes of memory starting at address @var{addr}.
14353Neither @value{GDBN} nor the stub assume that sized memory transfers are assumed
14354using word alligned accesses. FIXME: @emph{A word aligned memory
14355transfer 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
14360to read only part of the data. Neither @value{GDBN} nor the stub assume that
14361sized 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
c906108c 14366
8e04817f
AC
14367@item write mem
14368@tab @code{M}@var{addr},@var{length}@code{:}@var{XX...}
14369@tab
14370Write @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
14378for an error (this includes the case where only part of the data was
14379written).
c906108c 14380
8e04817f
AC
14381@item reserved
14382@tab @code{n}
14383@tab Reserved for future use
c906108c 14384
8e04817f
AC
14385@item reserved
14386@tab @code{N}
14387@tab Reserved for future use
c906108c 14388
8e04817f
AC
14389@item reserved
14390@tab @code{o}
14391@tab Reserved for future use
c906108c 14392
8e04817f
AC
14393@item reserved
14394@tab @code{O}
14395@tab Reserved for future use
c906108c 14396
8e04817f
AC
14397@item read reg @strong{(reserved)}
14398@tab @code{p}@var{n...}
14399@tab
14400See write register.
14401@item
14402@tab return @var{r....}
14403@tab The hex encoded value of the register in target byte order.
c906108c 14404
8e04817f
AC
14405@item write reg
14406@tab @code{P}@var{n...}@code{=}@var{r...}
14407@tab
14408Write register @var{n...} with value @var{r...}, which contains two hex
14409digits 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
c906108c 14416
8e04817f
AC
14417@item general query
14418@tab @code{q}@var{query}
14419@tab
14420Request info about @var{query}. In general @value{GDBN} queries
14421have a leading upper case letter. Custom vendor queries should use a
14422company prefix (in lower case) ex: @samp{qfsf.var}. @var{query} may
14423optionally be followed by a @samp{,} or @samp{;} separated list. Stubs
14424must 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}.
c906108c 14434
8e04817f
AC
14435@item general set
14436@tab @code{Q}@var{var}@code{=}@var{val}
14437@tab
14438Set value of @var{var} to @var{val}. See @samp{q} for a discussing of
14439naming conventions.
c906108c 14440
8e04817f
AC
14441@item reset @strong{(deprecated)}
14442@tab @code{r}
14443@tab
14444Reset the entire system.
c906108c 14445
8e04817f
AC
14446@item remote restart
14447@tab @code{R}@var{XX}
14448@tab
14449Restart the program being debugged. @var{XX}, while needed, is ignored.
14450This packet is only available in extended mode.
14451@item
14452@tab
14453no reply
14454@tab
14455The @samp{R} packet has no reply.
c906108c 14456
8e04817f
AC
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
14461same address.
14462@item
14463@tab reply
14464@tab see below
c906108c 14465
8e04817f
AC
14466@item step with signal
14467@tab @code{S}@var{sig}@code{;}@var{addr}
14468@tab
14469Like @samp{C} but step not continue.
14470@item
14471@tab reply
14472@tab see below
c906108c 14473
8e04817f
AC
14474@item search
14475@tab @code{t}@var{addr}@code{:}@var{PP}@code{,}@var{MM}
14476@tab
14477Search 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
14479bytes. @var{addr} must be at least 3 digits.
c906108c 14480
8e04817f
AC
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
c906108c 14490
8e04817f
AC
14491@item reserved
14492@tab @code{u}
14493@tab Reserved for future use
c906108c 14494
8e04817f
AC
14495@item reserved
14496@tab @code{U}
14497@tab Reserved for future use
c906108c 14498
8e04817f
AC
14499@item reserved
14500@tab @code{v}
14501@tab Reserved for future use
c906108c 14502
8e04817f
AC
14503@item reserved
14504@tab @code{V}
14505@tab Reserved for future use
c906108c 14506
8e04817f
AC
14507@item reserved
14508@tab @code{w}
14509@tab Reserved for future use
c906108c 14510
8e04817f
AC
14511@item reserved
14512@tab @code{W}
14513@tab Reserved for future use
c906108c 14514
8e04817f
AC
14515@item reserved
14516@tab @code{x}
14517@tab Reserved for future use
c906108c 14518
8e04817f
AC
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
14523binary data. The characters @code{$}, @code{#}, and @code{0x7d} are
14524escaped 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
c906108c 14531
8e04817f
AC
14532@item reserved
14533@tab @code{y}
14534@tab Reserved for future use
c906108c 14535
8e04817f
AC
14536@item reserved
14537@tab @code{Y}
14538@tab Reserved for future use
c906108c 14539
8e04817f
AC
14540@item remove break or watchpoint @strong{(draft)}
14541@tab @code{z}@var{t}@code{,}@var{addr}@code{,}@var{length}
14542@tab
14543See @samp{Z}.
c906108c 14544
8e04817f
AC
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
14549breakpoint, @samp{2} - write watchpoint, @samp{3} - read watchpoint,
14550@samp{4} - access watchpoint; @var{addr} is address; @var{length} is in
14551bytes. For a software breakpoint, @var{length} specifies the size of
14552the instruction to be patched. For hardware breakpoints and watchpoints
14553@var{length} specifies the memory region to be monitored. To avoid
14554potential problems with duplicate packets, the operations should be
14555implemented 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.
c906108c 14565
8e04817f
AC
14566@item reserved
14567@tab <other>
14568@tab Reserved for future use
c906108c 14569
8e04817f 14570@end multitable
c906108c 14571
8e04817f
AC
14572The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
14573receive 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
14575when the target halts. In the below the exact meaning of @samp{signal
14576number} is poorly defined. In general one of the UNIX signal numbering
14577conventions is used.
c906108c 14578
8e04817f 14579@multitable @columnfractions .4 .6
c906108c 14580
8e04817f
AC
14581@item @code{S}@var{AA}
14582@tab @var{AA} is the signal number
c906108c 14583
8e04817f
AC
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
14588by @code{REGISTER_RAW_SIZE}; @var{n...} = @samp{thread}, @var{r...} =
14589thread process ID, this is a hex integer; @var{n...} = other string not
14590starting 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
14592extend the protocol.
c906108c 14593
8e04817f
AC
14594@item @code{W}@var{AA}
14595@tab
14596The process exited, and @var{AA} is the exit status. This is only
14597applicable for certains sorts of targets.
c906108c 14598
8e04817f
AC
14599@item @code{X}@var{AA}
14600@tab
14601The process terminated with signal @var{AA}.
c906108c 14602
8e04817f
AC
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
14608this reply and the "qOffsets" query is that the 'N' packet may arrive
14609spontaneously whereas the 'qOffsets' is a query initiated by the host
14610debugger.}
c906108c 14611
8e04817f
AC
14612@item @code{O}@var{XX...}
14613@tab
14614@var{XX...} is hex encoding of @sc{ascii} data. This can happen at any time
14615while the program is running and the debugger should continue to wait
14616for 'W', 'T', etc.
c906108c 14617
8e04817f 14618@end multitable
c906108c 14619
8e04817f 14620The following set and query packets have already been defined.
c906108c 14621
8e04817f 14622@multitable @columnfractions .2 .2 .6
c906108c 14623
8e04817f
AC
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
14630Where @var{pid} is a HEX encoded 16 bit process id.
14631@item
14632@tab reply *
14633@tab Any other reply implies the old pid.
c906108c 14634
8e04817f
AC
14635@item all thread ids
14636@tab @code{q}@code{fThreadInfo}
14637@item
14638@tab @code{q}@code{sThreadInfo}
14639@tab
14640Obtain a list of active thread ids from the target (OS). Since there
14641may be too many active threads to fit into one reply packet, this query
14642works iteratively: it may require more than one query/reply sequence to
14643obtain the entire list of threads. The first query of the sequence will
14644be the @code{qf}@code{ThreadInfo} query; subsequent queries in the
14645sequence 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
14661In response to each query, the target will reply with a list of one
14662or more thread ids, in big-endian hex, separated by commas. GDB will
14663respond 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'}).
c906108c 14666
8e04817f
AC
14667@item extra thread info
14668@tab @code{q}@code{ThreadExtraInfo}@code{,}@var{id}
14669@tab
14670@item
14671@tab
14672@tab
14673Where @var{<id>} is a thread-id in big-endian hex.
14674Obtain a printable string description of a thread's attributes from
14675the target OS. This string may contain anything that the target OS
14676thinks is interesting for @value{GDBN} to tell the user about the thread.
14677The string is displayed in @value{GDBN}'s @samp{info threads} display.
14678Some examples of possible thread extra info strings are "Runnable", or
14679"Blocked on Mutex".
14680@item
14681@tab reply @var{XX...}
14682@tab
14683Where @var{XX...} is a hex encoding of @sc{ascii} data, comprising the
14684printable string containing the extra information about the thread's
14685attributes.
c906108c 14686
8e04817f
AC
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
14693Obtain thread information from RTOS. Where: @var{startflag} (one hex
14694digit) is one to indicate the first query and zero to indicate a
14695subsequent query; @var{threadcount} (two hex digits) is the maximum
14696number of threads the response packet can contain; and @var{nextthread}
14697(eight hex digits), for subsequent queries (@var{startflag} is zero), is
14698returned in the response as @var{argthread}.
14699@item
14700@tab
14701@tab NOTE: this query is replaced by the @code{q}@code{fThreadInfo}
14702query (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
14709Where: @var{count} (two hex digits) is the number of threads being
14710returned; @var{done} (one hex digit) is zero to indicate more threads
14711and one indicates no further threads; @var{argthreadid} (eight hex
14712digits) is @var{nextthread} from the request packet; @var{thread...} is
14713a sequence of thread IDs from the target. @var{threadid} (eight hex
14714digits). See @code{remote.c:parse_threadlist_response()}.
c906108c 14715
8e04817f
AC
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.
c906108c 14725
8e04817f
AC
14726@item query sect offs
14727@tab @code{q}@code{Offsets}
14728@tab
14729Get section offsets that the target used when re-locating the downloaded
14730image. @emph{Note: while a @code{Bss} offset is included in the
14731response, @value{GDBN} ignores this and instead applies the @code{Data}
14732offset to the @code{Bss} section.}
14733@item
14734@tab reply @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
c906108c 14735
8e04817f
AC
14736@item thread info request
14737@tab @code{q}@code{P}@var{mode}@var{threadid}
14738@tab
14739@item
14740@tab
14741@tab
14742Returns information on @var{threadid}. Where: @var{mode} is a hex
14743encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
14744@item
14745@tab reply *
14746@tab
14747See @code{remote.c:remote_unpack_thread_info_response()}.
c906108c 14748
8e04817f
AC
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
14756execution. Invalid commands should be reported using the output string.
14757Before the final result packet, the target may also respond with a
14758number of intermediate @code{O}@var{OUTPUT} console output
14759packets. @emph{Implementors should note that providing access to a
14760stubs's interpreter may have security implications}.
14761@item
14762@tab reply @code{OK}
14763@tab
14764A command response with no output.
14765@item
14766@tab reply @var{OUTPUT}
14767@tab
14768A command response with the hex encoded output string @var{OUTPUT}.
14769@item
14770@tab reply @code{E}@var{NN}
14771@tab
14772Indicate a badly formed request.
c906108c 14773
8e04817f
AC
14774@item
14775@tab reply @samp{}
14776@tab
14777When @samp{q}@samp{Rcmd} is not recognized.
c906108c 14778
8e04817f
AC
14779@item symbol lookup
14780@tab @code{qSymbol::}
14781@tab
14782Notify the target that @value{GDBN} is prepared to serve symbol lookup
14783requests. 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
14790The 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
14796The 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}
14799message, described below.
5d161b24 14800
8e04817f
AC
14801@item symbol value
14802@tab @code{qSymbol:}@var{sym_value}:@var{sym_name}
14803@tab
14804@sp 1
14805@noindent
14806Set 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
14811the target has previously requested.
14812@item
14813@tab
14814@tab
14815@var{sym_value} (hex) is the value for symbol @var{sym_name}.
14816If @value{GDBN} cannot supply a value for @var{sym_name}, then this
14817field will be empty.
14818@item
14819@tab reply @code{OK}
14820@tab
14821The 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
14827The 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),
14829until the target ceases to request them.
eb12ee30 14830
8e04817f 14831@end multitable
eb12ee30 14832
8e04817f
AC
14833The following @samp{g}/@samp{G} packets have previously been defined.
14834In the below, some thirty-two bit registers are transferred as sixty-four
14835bits. Those registers should be zero/sign extended (which?) to fill the
14836space allocated. Register bytes are transfered in target byte order.
14837The two nibbles within a register byte are transfered most-significant -
14838least-significant.
eb12ee30 14839
8e04817f 14840@multitable @columnfractions .5 .5
eb12ee30 14841
8e04817f
AC
14842@item MIPS32
14843@tab
14844All registers are transfered as thirty-two bit quantities in the order:
1484532 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
14846registers; fsr; fir; fp.
eb12ee30 14847
8e04817f
AC
14848@item MIPS64
14849@tab
14850All registers are transfered as sixty-four bit quantities (including
14851thirty-two bit registers such as @code{sr}). The ordering is the same
14852as @code{MIPS32}.
eb12ee30 14853
8e04817f 14854@end multitable
eb12ee30 14855
8e04817f
AC
14856Example sequence of a target being re-started. Notice how the restart
14857does not get any direct output:
eb12ee30 14858
8e04817f
AC
14859@example
14860<- @code{R00}
14861-> @code{+}
14862@emph{target restarts}
14863<- @code{?}
14864-> @code{+}
14865-> @code{T001:1234123412341234}
14866<- @code{+}
14867@end example
eb12ee30 14868
8e04817f 14869Example sequence of a target being stepped by a single instruction:
eb12ee30 14870
8e04817f
AC
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
eb12ee30 14884
eb12ee30 14885
6826cf00
EZ
14886@include fdl.texi
14887
6d2ebf8b 14888@node Index
c906108c
SS
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
449f3b6c
AC
14909@c TeX can handle the contents at the start but makeinfo 3.12 can not
14910@ifinfo
c906108c 14911@contents
449f3b6c
AC
14912@end ifinfo
14913@ifhtml
14914@contents
14915@end ifhtml
14916
c906108c 14917@bye
This page took 1.311918 seconds and 4 git commands to generate.