* config/i386/fbsd64.mh, config/i386/nbsd64.mh,
[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,
c552b3bb 3@c 1999, 2000, 2001, 2002, 2003, 2004
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!
9fe8321b 31@c This is updated by GNU Press.
e9c75b65 32@set EDITION Ninth
c906108c 33
87885426
FN
34@c !!set GDB edit command default editor
35@set EDITOR /bin/ex
c906108c 36
6c0e9fb3 37@c THIS MANUAL REQUIRES TEXINFO 4.0 OR LATER.
c906108c 38
c906108c 39@c This is a dir.info fragment to support semi-automated addition of
6d2ebf8b 40@c manuals to an info tree.
03727ca6 41@dircategory Software development
96a2c332 42@direntry
03727ca6 43* Gdb: (gdb). The GNU debugger.
96a2c332
SS
44@end direntry
45
c906108c
SS
46@ifinfo
47This file documents the @sc{gnu} debugger @value{GDBN}.
48
49
9fe8321b
AC
50This is the @value{EDITION} Edition, of @cite{Debugging with
51@value{GDBN}: the @sc{gnu} Source-Level Debugger} for @value{GDBN}
52Version @value{GDBVN}.
c906108c 53
8a037dd7 54Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@*
c552b3bb 55 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
c906108c 56
e9c75b65
EZ
57Permission is granted to copy, distribute and/or modify this document
58under the terms of the GNU Free Documentation License, Version 1.1 or
59any later version published by the Free Software Foundation; with the
959acfd1
EZ
60Invariant Sections being ``Free Software'' and ``Free Software Needs
61Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
62and with the Back-Cover Texts as in (a) below.
c906108c 63
6826cf00
EZ
64(a) The Free Software Foundation's Back-Cover Text is: ``You have
65freedom to copy and modify this GNU Manual, like GNU software. Copies
66published by the Free Software Foundation raise funds for GNU
67development.''
c906108c
SS
68@end ifinfo
69
70@titlepage
71@title Debugging with @value{GDBN}
72@subtitle The @sc{gnu} Source-Level Debugger
c906108c 73@sp 1
c906108c 74@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
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 86Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
b51970ac 871996, 1998, 1999, 2000, 2001, 2002, 2003, 2004 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
6c0e9fb3 108@ifnottex
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
9fe8321b 115This is the @value{EDITION} Edition, for @value{GDBN} Version
c906108c
SS
116@value{GDBVN}.
117
c552b3bb 118Copyright (C) 1988-2004 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
e2e0bcd1 131* Macros:: Preprocessor Macros
b37052ae 132* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 133* Overlays:: Debugging programs that use overlays
6d2ebf8b
SS
134
135* Languages:: Using @value{GDBN} with different languages
136
137* Symbols:: Examining the symbol table
138* Altering:: Altering execution
139* GDB Files:: @value{GDBN} files
140* Targets:: Specifying a debugging target
6b2f586d 141* Remote Debugging:: Debugging remote programs
6d2ebf8b
SS
142* Configurations:: Configuration-specific information
143* Controlling GDB:: Controlling @value{GDBN}
144* Sequences:: Canned sequences of commands
c4555f82 145* TUI:: @value{GDBN} Text User Interface
21c294e6 146* Interpreters:: Command Interpreters
6d2ebf8b
SS
147* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
148* Annotations:: @value{GDBN}'s annotation interface.
7162c0ca 149* GDB/MI:: @value{GDBN}'s Machine Interface.
6d2ebf8b
SS
150
151* GDB Bugs:: Reporting bugs in @value{GDBN}
152* Formatting Documentation:: How to format and print @value{GDBN} documentation
153
154* Command Line Editing:: Command Line Editing
155* Using History Interactively:: Using History Interactively
156* Installing GDB:: Installing GDB
eb12ee30 157* Maintenance Commands:: Maintenance Commands
e0ce93ac 158* Remote Protocol:: GDB Remote Serial Protocol
f418dd93 159* Agent Expressions:: The GDB Agent Expression Mechanism
aab4e0ec
AC
160* Copying:: GNU General Public License says
161 how you can copy and share GDB
6826cf00 162* GNU Free Documentation License:: The license for this documentation
6d2ebf8b
SS
163* Index:: Index
164@end menu
165
6c0e9fb3 166@end ifnottex
c906108c 167
449f3b6c 168@contents
449f3b6c 169
6d2ebf8b 170@node Summary
c906108c
SS
171@unnumbered Summary of @value{GDBN}
172
173The purpose of a debugger such as @value{GDBN} is to allow you to see what is
174going on ``inside'' another program while it executes---or what another
175program was doing at the moment it crashed.
176
177@value{GDBN} can do four main kinds of things (plus other things in support of
178these) to help you catch bugs in the act:
179
180@itemize @bullet
181@item
182Start your program, specifying anything that might affect its behavior.
183
184@item
185Make your program stop on specified conditions.
186
187@item
188Examine what has happened, when your program has stopped.
189
190@item
191Change things in your program, so you can experiment with correcting the
192effects of one bug and go on to learn about another.
193@end itemize
194
49efadf5 195You can use @value{GDBN} to debug programs written in C and C@t{++}.
c906108c 196For more information, see @ref{Support,,Supported languages}.
c906108c
SS
197For more information, see @ref{C,,C and C++}.
198
cce74817 199@cindex Modula-2
e632838e
AC
200Support for Modula-2 is partial. For information on Modula-2, see
201@ref{Modula-2,,Modula-2}.
c906108c 202
cce74817
JM
203@cindex Pascal
204Debugging Pascal programs which use sets, subranges, file variables, or
205nested functions does not currently work. @value{GDBN} does not support
206entering expressions, printing values, or similar features using Pascal
207syntax.
c906108c 208
c906108c
SS
209@cindex Fortran
210@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 211it may be necessary to refer to some variables with a trailing
cce74817 212underscore.
c906108c 213
b37303ee
AF
214@value{GDBN} can be used to debug programs written in Objective-C,
215using either the Apple/NeXT or the GNU Objective-C runtime.
216
c906108c
SS
217@menu
218* Free Software:: Freely redistributable software
219* Contributors:: Contributors to GDB
220@end menu
221
6d2ebf8b 222@node Free Software
c906108c
SS
223@unnumberedsec Free software
224
5d161b24 225@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
c906108c
SS
226General Public License
227(GPL). The GPL gives you the freedom to copy or adapt a licensed
228program---but every person getting a copy also gets with it the
229freedom to modify that copy (which means that they must get access to
230the source code), and the freedom to distribute further copies.
231Typical software companies use copyrights to limit your freedoms; the
232Free Software Foundation uses the GPL to preserve these freedoms.
233
234Fundamentally, the General Public License is a license which says that
235you have these freedoms and that you cannot take these freedoms away
236from anyone else.
237
2666264b 238@unnumberedsec Free Software Needs Free Documentation
959acfd1
EZ
239
240The biggest deficiency in the free software community today is not in
241the software---it is the lack of good free documentation that we can
242include with the free software. Many of our most important
243programs do not come with free reference manuals and free introductory
244texts. Documentation is an essential part of any software package;
245when an important free software package does not come with a free
246manual and a free tutorial, that is a major gap. We have many such
247gaps today.
248
249Consider Perl, for instance. The tutorial manuals that people
250normally use are non-free. How did this come about? Because the
251authors of those manuals published them with restrictive terms---no
252copying, no modification, source files not available---which exclude
253them from the free software world.
254
255That wasn't the first time this sort of thing happened, and it was far
256from the last. Many times we have heard a GNU user eagerly describe a
257manual that he is writing, his intended contribution to the community,
258only to learn that he had ruined everything by signing a publication
259contract to make it non-free.
260
261Free documentation, like free software, is a matter of freedom, not
262price. The problem with the non-free manual is not that publishers
263charge a price for printed copies---that in itself is fine. (The Free
264Software Foundation sells printed copies of manuals, too.) The
265problem is the restrictions on the use of the manual. Free manuals
266are available in source code form, and give you permission to copy and
267modify. Non-free manuals do not allow this.
268
269The criteria of freedom for a free manual are roughly the same as for
270free software. Redistribution (including the normal kinds of
271commercial redistribution) must be permitted, so that the manual can
272accompany every copy of the program, both on-line and on paper.
273
274Permission for modification of the technical content is crucial too.
275When people modify the software, adding or changing features, if they
276are conscientious they will change the manual too---so they can
277provide accurate and clear documentation for the modified program. A
278manual that leaves you no choice but to write a new manual to document
279a changed version of the program is not really available to our
280community.
281
282Some kinds of limits on the way modification is handled are
283acceptable. For example, requirements to preserve the original
284author's copyright notice, the distribution terms, or the list of
285authors, are ok. It is also no problem to require modified versions
286to include notice that they were modified. Even entire sections that
287may not be deleted or changed are acceptable, as long as they deal
288with nontechnical topics (like this one). These kinds of restrictions
289are acceptable because they don't obstruct the community's normal use
290of the manual.
291
292However, it must be possible to modify all the @emph{technical}
293content of the manual, and then distribute the result in all the usual
294media, through all the usual channels. Otherwise, the restrictions
295obstruct the use of the manual, it is not free, and we need another
296manual to replace it.
297
298Please spread the word about this issue. Our community continues to
299lose manuals to proprietary publishing. If we spread the word that
300free software needs free reference manuals and free tutorials, perhaps
301the next person who wants to contribute by writing documentation will
302realize, before it is too late, that only free manuals contribute to
303the free software community.
304
305If you are writing documentation, please insist on publishing it under
306the GNU Free Documentation License or another free documentation
307license. Remember that this decision requires your approval---you
308don't have to let the publisher decide. Some commercial publishers
309will use a free license if you insist, but they will not propose the
310option; it is up to you to raise the issue and say firmly that this is
311what you want. If the publisher you are dealing with refuses, please
312try other publishers. If you're not sure whether a proposed license
42584a72 313is free, write to @email{licensing@@gnu.org}.
959acfd1
EZ
314
315You can encourage commercial publishers to sell more free, copylefted
316manuals and tutorials by buying them, and particularly by buying
317copies from the publishers that paid for their writing or for major
318improvements. Meanwhile, try to avoid buying non-free documentation
319at all. Check the distribution terms of a manual before you buy it,
320and insist that whoever seeks your business must respect your freedom.
72c9928d
EZ
321Check the history of the book, and try to reward the publishers that
322have paid or pay the authors to work on it.
959acfd1
EZ
323
324The Free Software Foundation maintains a list of free documentation
325published by other publishers, at
326@url{http://www.fsf.org/doc/other-free-books.html}.
327
6d2ebf8b 328@node Contributors
96a2c332
SS
329@unnumberedsec Contributors to @value{GDBN}
330
331Richard Stallman was the original author of @value{GDBN}, and of many
332other @sc{gnu} programs. Many others have contributed to its
333development. This section attempts to credit major contributors. One
334of the virtues of free software is that everyone is free to contribute
335to it; with regret, we cannot actually acknowledge everyone here. The
336file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
337blow-by-blow account.
338
339Changes much prior to version 2.0 are lost in the mists of time.
340
341@quotation
342@emph{Plea:} Additions to this section are particularly welcome. If you
343or your friends (or enemies, to be evenhanded) have been unfairly
344omitted from this list, we would like to add your names!
345@end quotation
346
347So that they may not regard their many labors as thankless, we
348particularly thank those who shepherded @value{GDBN} through major
349releases:
faae5abe 350Andrew Cagney (releases 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0);
c906108c
SS
351Jim Blandy (release 4.18);
352Jason Molenda (release 4.17);
353Stan Shebs (release 4.14);
354Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
355Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
356John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
357Jim Kingdon (releases 3.5, 3.4, and 3.3);
358and Randy Smith (releases 3.2, 3.1, and 3.0).
359
360Richard Stallman, assisted at various times by Peter TerMaat, Chris
361Hanson, and Richard Mlynarik, handled releases through 2.8.
362
b37052ae
EZ
363Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
364in @value{GDBN}, with significant additional contributions from Per
365Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
366demangler. Early work on C@t{++} was by Peter TerMaat (who also did
367much general update work leading to release 3.0).
c906108c 368
b37052ae 369@value{GDBN} uses the BFD subroutine library to examine multiple
c906108c
SS
370object-file formats; BFD was a joint project of David V.
371Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
372
373David Johnson wrote the original COFF support; Pace Willison did
374the original support for encapsulated COFF.
375
0179ffac 376Brent Benson of Harris Computer Systems contributed DWARF 2 support.
c906108c
SS
377
378Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
379Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
380support.
381Jean-Daniel Fekete contributed Sun 386i support.
382Chris Hanson improved the HP9000 support.
383Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
384David Johnson contributed Encore Umax support.
385Jyrki Kuoppala contributed Altos 3068 support.
386Jeff Law contributed HP PA and SOM support.
387Keith Packard contributed NS32K support.
388Doug Rabson contributed Acorn Risc Machine support.
389Bob Rusk contributed Harris Nighthawk CX-UX support.
390Chris Smith contributed Convex support (and Fortran debugging).
391Jonathan Stone contributed Pyramid support.
392Michael Tiemann contributed SPARC support.
393Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
394Pace Willison contributed Intel 386 support.
395Jay Vosburgh contributed Symmetry support.
a37295f9 396Marko Mlinar contributed OpenRISC 1000 support.
c906108c 397
1104b9e7 398Andreas Schwab contributed M68K @sc{gnu}/Linux support.
c906108c
SS
399
400Rich Schaefer and Peter Schauer helped with support of SunOS shared
401libraries.
402
403Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
404about several machine instruction sets.
405
406Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
407remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
408contributed remote debugging modules for the i960, VxWorks, A29K UDI,
409and RDI targets, respectively.
410
411Brian Fox is the author of the readline libraries providing
412command-line editing and command history.
413
7a292a7a
SS
414Andrew Beers of SUNY Buffalo wrote the language-switching code, the
415Modula-2 support, and contributed the Languages chapter of this manual.
c906108c 416
5d161b24 417Fred Fish wrote most of the support for Unix System Vr4.
b37052ae 418He also enhanced the command-completion support to cover C@t{++} overloaded
c906108c 419symbols.
c906108c 420
f24c5e49
KI
421Hitachi America (now Renesas America), Ltd. sponsored the support for
422H8/300, H8/500, and Super-H processors.
c906108c
SS
423
424NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
425
f24c5e49
KI
426Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D
427processors.
c906108c
SS
428
429Toshiba sponsored the support for the TX39 Mips processor.
430
431Matsushita sponsored the support for the MN10200 and MN10300 processors.
432
96a2c332 433Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
434
435Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
436watchpoints.
437
438Michael Snyder added support for tracepoints.
439
440Stu Grossman wrote gdbserver.
441
442Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 443nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
444
445The following people at the Hewlett-Packard Company contributed
446support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
b37052ae 447(narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
d0d5df6f
AC
448compiler, and the Text User Interface (nee Terminal User Interface):
449Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann,
450Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase
451provided HP-specific information in this manual.
c906108c 452
b37052ae
EZ
453DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
454Robert Hoehne made significant contributions to the DJGPP port.
455
96a2c332
SS
456Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
457development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
458fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
459Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
460Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
461Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
462Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
463addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
464JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
465Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
466Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
467Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
468Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
469Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
470Zuhn have made contributions both large and small.
c906108c 471
e2e0bcd1
JB
472Jim Blandy added support for preprocessor macros, while working for Red
473Hat.
c906108c 474
6d2ebf8b 475@node Sample Session
c906108c
SS
476@chapter A Sample @value{GDBN} Session
477
478You can use this manual at your leisure to read all about @value{GDBN}.
479However, a handful of commands are enough to get started using the
480debugger. This chapter illustrates those commands.
481
482@iftex
483In this sample session, we emphasize user input like this: @b{input},
484to make it easier to pick out from the surrounding output.
485@end iftex
486
487@c FIXME: this example may not be appropriate for some configs, where
488@c FIXME...primary interest is in remote use.
489
490One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
491processor) exhibits the following bug: sometimes, when we change its
492quote strings from the default, the commands used to capture one macro
493definition within another stop working. In the following short @code{m4}
494session, we define a macro @code{foo} which expands to @code{0000}; we
495then use the @code{m4} built-in @code{defn} to define @code{bar} as the
496same thing. However, when we change the open quote string to
497@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
498procedure fails to define a new synonym @code{baz}:
499
500@smallexample
501$ @b{cd gnu/m4}
502$ @b{./m4}
503@b{define(foo,0000)}
504
505@b{foo}
5060000
507@b{define(bar,defn(`foo'))}
508
509@b{bar}
5100000
511@b{changequote(<QUOTE>,<UNQUOTE>)}
512
513@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
514@b{baz}
515@b{C-d}
516m4: End of input: 0: fatal error: EOF in string
517@end smallexample
518
519@noindent
520Let us use @value{GDBN} to try to see what is going on.
521
c906108c
SS
522@smallexample
523$ @b{@value{GDBP} m4}
524@c FIXME: this falsifies the exact text played out, to permit smallbook
525@c FIXME... format to come out better.
526@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 527 of it under certain conditions; type "show copying" to see
c906108c 528 the conditions.
5d161b24 529There is absolutely no warranty for @value{GDBN}; type "show warranty"
c906108c
SS
530 for details.
531
532@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
533(@value{GDBP})
534@end smallexample
c906108c
SS
535
536@noindent
537@value{GDBN} reads only enough symbol data to know where to find the
538rest when needed; as a result, the first prompt comes up very quickly.
539We now tell @value{GDBN} to use a narrower display width than usual, so
540that examples fit in this manual.
541
542@smallexample
543(@value{GDBP}) @b{set width 70}
544@end smallexample
545
546@noindent
547We need to see how the @code{m4} built-in @code{changequote} works.
548Having looked at the source, we know the relevant subroutine is
549@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
550@code{break} command.
551
552@smallexample
553(@value{GDBP}) @b{break m4_changequote}
554Breakpoint 1 at 0x62f4: file builtin.c, line 879.
555@end smallexample
556
557@noindent
558Using the @code{run} command, we start @code{m4} running under @value{GDBN}
559control; as long as control does not reach the @code{m4_changequote}
560subroutine, the program runs as usual:
561
562@smallexample
563(@value{GDBP}) @b{run}
564Starting program: /work/Editorial/gdb/gnu/m4/m4
565@b{define(foo,0000)}
566
567@b{foo}
5680000
569@end smallexample
570
571@noindent
572To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
573suspends execution of @code{m4}, displaying information about the
574context where it stops.
575
576@smallexample
577@b{changequote(<QUOTE>,<UNQUOTE>)}
578
5d161b24 579Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
580 at builtin.c:879
581879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
582@end smallexample
583
584@noindent
585Now we use the command @code{n} (@code{next}) to advance execution to
586the next line of the current function.
587
588@smallexample
589(@value{GDBP}) @b{n}
590882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
591 : nil,
592@end smallexample
593
594@noindent
595@code{set_quotes} looks like a promising subroutine. We can go into it
596by using the command @code{s} (@code{step}) instead of @code{next}.
597@code{step} goes to the next line to be executed in @emph{any}
598subroutine, so it steps into @code{set_quotes}.
599
600@smallexample
601(@value{GDBP}) @b{s}
602set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
603 at input.c:530
604530 if (lquote != def_lquote)
605@end smallexample
606
607@noindent
608The display that shows the subroutine where @code{m4} is now
609suspended (and its arguments) is called a stack frame display. It
610shows a summary of the stack. We can use the @code{backtrace}
611command (which can also be spelled @code{bt}), to see where we are
612in the stack as a whole: the @code{backtrace} command displays a
613stack frame for each active subroutine.
614
615@smallexample
616(@value{GDBP}) @b{bt}
617#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
618 at input.c:530
5d161b24 619#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
620 at builtin.c:882
621#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
622#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
623 at macro.c:71
624#4 0x79dc in expand_input () at macro.c:40
625#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
626@end smallexample
627
628@noindent
629We step through a few more lines to see what happens. The first two
630times, we can use @samp{s}; the next two times we use @code{n} to avoid
631falling into the @code{xstrdup} subroutine.
632
633@smallexample
634(@value{GDBP}) @b{s}
6350x3b5c 532 if (rquote != def_rquote)
636(@value{GDBP}) @b{s}
6370x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
638def_lquote : xstrdup(lq);
639(@value{GDBP}) @b{n}
640536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
641 : xstrdup(rq);
642(@value{GDBP}) @b{n}
643538 len_lquote = strlen(rquote);
644@end smallexample
645
646@noindent
647The last line displayed looks a little odd; we can examine the variables
648@code{lquote} and @code{rquote} to see if they are in fact the new left
649and right quotes we specified. We use the command @code{p}
650(@code{print}) to see their values.
651
652@smallexample
653(@value{GDBP}) @b{p lquote}
654$1 = 0x35d40 "<QUOTE>"
655(@value{GDBP}) @b{p rquote}
656$2 = 0x35d50 "<UNQUOTE>"
657@end smallexample
658
659@noindent
660@code{lquote} and @code{rquote} are indeed the new left and right quotes.
661To look at some context, we can display ten lines of source
662surrounding the current line with the @code{l} (@code{list}) command.
663
664@smallexample
665(@value{GDBP}) @b{l}
666533 xfree(rquote);
667534
668535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
669 : xstrdup (lq);
670536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
671 : xstrdup (rq);
672537
673538 len_lquote = strlen(rquote);
674539 len_rquote = strlen(lquote);
675540 @}
676541
677542 void
678@end smallexample
679
680@noindent
681Let us step past the two lines that set @code{len_lquote} and
682@code{len_rquote}, and then examine the values of those variables.
683
684@smallexample
685(@value{GDBP}) @b{n}
686539 len_rquote = strlen(lquote);
687(@value{GDBP}) @b{n}
688540 @}
689(@value{GDBP}) @b{p len_lquote}
690$3 = 9
691(@value{GDBP}) @b{p len_rquote}
692$4 = 7
693@end smallexample
694
695@noindent
696That certainly looks wrong, assuming @code{len_lquote} and
697@code{len_rquote} are meant to be the lengths of @code{lquote} and
698@code{rquote} respectively. We can set them to better values using
699the @code{p} command, since it can print the value of
700any expression---and that expression can include subroutine calls and
701assignments.
702
703@smallexample
704(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
705$5 = 7
706(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
707$6 = 9
708@end smallexample
709
710@noindent
711Is that enough to fix the problem of using the new quotes with the
712@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
713executing with the @code{c} (@code{continue}) command, and then try the
714example that caused trouble initially:
715
716@smallexample
717(@value{GDBP}) @b{c}
718Continuing.
719
720@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
721
722baz
7230000
724@end smallexample
725
726@noindent
727Success! The new quotes now work just as well as the default ones. The
728problem seems to have been just the two typos defining the wrong
729lengths. We allow @code{m4} exit by giving it an EOF as input:
730
731@smallexample
732@b{C-d}
733Program exited normally.
734@end smallexample
735
736@noindent
737The message @samp{Program exited normally.} is from @value{GDBN}; it
738indicates @code{m4} has finished executing. We can end our @value{GDBN}
739session with the @value{GDBN} @code{quit} command.
740
741@smallexample
742(@value{GDBP}) @b{quit}
743@end smallexample
c906108c 744
6d2ebf8b 745@node Invocation
c906108c
SS
746@chapter Getting In and Out of @value{GDBN}
747
748This chapter discusses how to start @value{GDBN}, and how to get out of it.
5d161b24 749The essentials are:
c906108c 750@itemize @bullet
5d161b24 751@item
53a5351d 752type @samp{@value{GDBP}} to start @value{GDBN}.
5d161b24 753@item
c906108c
SS
754type @kbd{quit} or @kbd{C-d} to exit.
755@end itemize
756
757@menu
758* Invoking GDB:: How to start @value{GDBN}
759* Quitting GDB:: How to quit @value{GDBN}
760* Shell Commands:: How to use shell commands inside @value{GDBN}
0fac0b41 761* Logging output:: How to log @value{GDBN}'s output to a file
c906108c
SS
762@end menu
763
6d2ebf8b 764@node Invoking GDB
c906108c
SS
765@section Invoking @value{GDBN}
766
c906108c
SS
767Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
768@value{GDBN} reads commands from the terminal until you tell it to exit.
769
770You can also run @code{@value{GDBP}} with a variety of arguments and options,
771to specify more of your debugging environment at the outset.
772
c906108c
SS
773The command-line options described here are designed
774to cover a variety of situations; in some environments, some of these
5d161b24 775options may effectively be unavailable.
c906108c
SS
776
777The most usual way to start @value{GDBN} is with one argument,
778specifying an executable program:
779
474c8240 780@smallexample
c906108c 781@value{GDBP} @var{program}
474c8240 782@end smallexample
c906108c 783
c906108c
SS
784@noindent
785You can also start with both an executable program and a core file
786specified:
787
474c8240 788@smallexample
c906108c 789@value{GDBP} @var{program} @var{core}
474c8240 790@end smallexample
c906108c
SS
791
792You can, instead, specify a process ID as a second argument, if you want
793to debug a running process:
794
474c8240 795@smallexample
c906108c 796@value{GDBP} @var{program} 1234
474c8240 797@end smallexample
c906108c
SS
798
799@noindent
800would attach @value{GDBN} to process @code{1234} (unless you also have a file
801named @file{1234}; @value{GDBN} does check for a core file first).
802
c906108c 803Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
804complete operating system; when you use @value{GDBN} as a remote
805debugger attached to a bare board, there may not be any notion of
806``process'', and there is often no way to get a core dump. @value{GDBN}
807will warn you if it is unable to attach or to read core dumps.
c906108c 808
aa26fa3a
TT
809You can optionally have @code{@value{GDBP}} pass any arguments after the
810executable file to the inferior using @code{--args}. This option stops
811option processing.
474c8240 812@smallexample
aa26fa3a 813gdb --args gcc -O2 -c foo.c
474c8240 814@end smallexample
aa26fa3a
TT
815This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
816@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
817
96a2c332 818You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
819@value{GDBN}'s non-warranty, by specifying @code{-silent}:
820
821@smallexample
822@value{GDBP} -silent
823@end smallexample
824
825@noindent
826You can further control how @value{GDBN} starts up by using command-line
827options. @value{GDBN} itself can remind you of the options available.
828
829@noindent
830Type
831
474c8240 832@smallexample
c906108c 833@value{GDBP} -help
474c8240 834@end smallexample
c906108c
SS
835
836@noindent
837to display all available options and briefly describe their use
838(@samp{@value{GDBP} -h} is a shorter equivalent).
839
840All options and command line arguments you give are processed
841in sequential order. The order makes a difference when the
842@samp{-x} option is used.
843
844
845@menu
c906108c
SS
846* File Options:: Choosing files
847* Mode Options:: Choosing modes
848@end menu
849
6d2ebf8b 850@node File Options
c906108c
SS
851@subsection Choosing files
852
2df3850c 853When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
854specifying an executable file and core file (or process ID). This is
855the same as if the arguments were specified by the @samp{-se} and
19837790
MS
856@samp{-c} (or @samp{-p} options respectively. (@value{GDBN} reads the
857first argument that does not have an associated option flag as
858equivalent to the @samp{-se} option followed by that argument; and the
859second argument that does not have an associated option flag, if any, as
860equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
861If the second argument begins with a decimal digit, @value{GDBN} will
862first attempt to attach to it as a process, and if that fails, attempt
863to open it as a corefile. If you have a corefile whose name begins with
b383017d 864a digit, you can prevent @value{GDBN} from treating it as a pid by
79f12247 865prefixing it with @file{./}, eg. @file{./12345}.
7a292a7a
SS
866
867If @value{GDBN} has not been configured to included core file support,
868such as for most embedded targets, then it will complain about a second
869argument and ignore it.
c906108c
SS
870
871Many options have both long and short forms; both are shown in the
872following list. @value{GDBN} also recognizes the long forms if you truncate
873them, so long as enough of the option is present to be unambiguous.
874(If you prefer, you can flag option arguments with @samp{--} rather
875than @samp{-}, though we illustrate the more usual convention.)
876
d700128c
EZ
877@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
878@c way, both those who look for -foo and --foo in the index, will find
879@c it.
880
c906108c
SS
881@table @code
882@item -symbols @var{file}
883@itemx -s @var{file}
d700128c
EZ
884@cindex @code{--symbols}
885@cindex @code{-s}
c906108c
SS
886Read symbol table from file @var{file}.
887
888@item -exec @var{file}
889@itemx -e @var{file}
d700128c
EZ
890@cindex @code{--exec}
891@cindex @code{-e}
7a292a7a
SS
892Use file @var{file} as the executable file to execute when appropriate,
893and for examining pure data in conjunction with a core dump.
c906108c
SS
894
895@item -se @var{file}
d700128c 896@cindex @code{--se}
c906108c
SS
897Read symbol table from file @var{file} and use it as the executable
898file.
899
c906108c
SS
900@item -core @var{file}
901@itemx -c @var{file}
d700128c
EZ
902@cindex @code{--core}
903@cindex @code{-c}
b383017d 904Use file @var{file} as a core dump to examine.
c906108c
SS
905
906@item -c @var{number}
19837790
MS
907@item -pid @var{number}
908@itemx -p @var{number}
909@cindex @code{--pid}
910@cindex @code{-p}
911Connect to process ID @var{number}, as with the @code{attach} command.
912If there is no such process, @value{GDBN} will attempt to open a core
913file named @var{number}.
c906108c
SS
914
915@item -command @var{file}
916@itemx -x @var{file}
d700128c
EZ
917@cindex @code{--command}
918@cindex @code{-x}
c906108c
SS
919Execute @value{GDBN} commands from file @var{file}. @xref{Command
920Files,, Command files}.
921
922@item -directory @var{directory}
923@itemx -d @var{directory}
d700128c
EZ
924@cindex @code{--directory}
925@cindex @code{-d}
c906108c
SS
926Add @var{directory} to the path to search for source files.
927
c906108c
SS
928@item -m
929@itemx -mapped
d700128c
EZ
930@cindex @code{--mapped}
931@cindex @code{-m}
c906108c
SS
932@emph{Warning: this option depends on operating system facilities that are not
933supported on all systems.}@*
934If memory-mapped files are available on your system through the @code{mmap}
5d161b24 935system call, you can use this option
c906108c
SS
936to have @value{GDBN} write the symbols from your
937program into a reusable file in the current directory. If the program you are debugging is
96a2c332 938called @file{/tmp/fred}, the mapped symbol file is @file{/tmp/fred.syms}.
c906108c
SS
939Future @value{GDBN} debugging sessions notice the presence of this file,
940and can quickly map in symbol information from it, rather than reading
941the symbol table from the executable program.
942
943The @file{.syms} file is specific to the host machine where @value{GDBN}
944is run. It holds an exact image of the internal @value{GDBN} symbol
945table. It cannot be shared across multiple host platforms.
c906108c 946
c906108c
SS
947@item -r
948@itemx -readnow
d700128c
EZ
949@cindex @code{--readnow}
950@cindex @code{-r}
c906108c
SS
951Read each symbol file's entire symbol table immediately, rather than
952the default, which is to read it incrementally as it is needed.
953This makes startup slower, but makes future operations faster.
53a5351d 954
c906108c
SS
955@end table
956
2df3850c 957You typically combine the @code{-mapped} and @code{-readnow} options in
c906108c 958order to build a @file{.syms} file that contains complete symbol
2df3850c
JM
959information. (@xref{Files,,Commands to specify files}, for information
960on @file{.syms} files.) A simple @value{GDBN} invocation to do nothing
961but build a @file{.syms} file for future use is:
c906108c 962
474c8240 963@smallexample
2df3850c 964gdb -batch -nx -mapped -readnow programname
474c8240 965@end smallexample
c906108c 966
6d2ebf8b 967@node Mode Options
c906108c
SS
968@subsection Choosing modes
969
970You can run @value{GDBN} in various alternative modes---for example, in
971batch mode or quiet mode.
972
973@table @code
974@item -nx
975@itemx -n
d700128c
EZ
976@cindex @code{--nx}
977@cindex @code{-n}
96565e91 978Do not execute commands found in any initialization files. Normally,
2df3850c
JM
979@value{GDBN} executes the commands in these files after all the command
980options and arguments have been processed. @xref{Command Files,,Command
981files}.
c906108c
SS
982
983@item -quiet
d700128c 984@itemx -silent
c906108c 985@itemx -q
d700128c
EZ
986@cindex @code{--quiet}
987@cindex @code{--silent}
988@cindex @code{-q}
c906108c
SS
989``Quiet''. Do not print the introductory and copyright messages. These
990messages are also suppressed in batch mode.
991
992@item -batch
d700128c 993@cindex @code{--batch}
c906108c
SS
994Run in batch mode. Exit with status @code{0} after processing all the
995command files specified with @samp{-x} (and all commands from
996initialization files, if not inhibited with @samp{-n}). Exit with
997nonzero status if an error occurs in executing the @value{GDBN} commands
998in the command files.
999
2df3850c
JM
1000Batch mode may be useful for running @value{GDBN} as a filter, for
1001example to download and run a program on another computer; in order to
1002make this more useful, the message
c906108c 1003
474c8240 1004@smallexample
c906108c 1005Program exited normally.
474c8240 1006@end smallexample
c906108c
SS
1007
1008@noindent
2df3850c
JM
1009(which is ordinarily issued whenever a program running under
1010@value{GDBN} control terminates) is not issued when running in batch
1011mode.
1012
1013@item -nowindows
1014@itemx -nw
d700128c
EZ
1015@cindex @code{--nowindows}
1016@cindex @code{-nw}
2df3850c 1017``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 1018(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
1019interface. If no GUI is available, this option has no effect.
1020
1021@item -windows
1022@itemx -w
d700128c
EZ
1023@cindex @code{--windows}
1024@cindex @code{-w}
2df3850c
JM
1025If @value{GDBN} includes a GUI, then this option requires it to be
1026used if possible.
c906108c
SS
1027
1028@item -cd @var{directory}
d700128c 1029@cindex @code{--cd}
c906108c
SS
1030Run @value{GDBN} using @var{directory} as its working directory,
1031instead of the current directory.
1032
c906108c
SS
1033@item -fullname
1034@itemx -f
d700128c
EZ
1035@cindex @code{--fullname}
1036@cindex @code{-f}
7a292a7a
SS
1037@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1038subprocess. It tells @value{GDBN} to output the full file name and line
1039number in a standard, recognizable fashion each time a stack frame is
1040displayed (which includes each time your program stops). This
1041recognizable format looks like two @samp{\032} characters, followed by
1042the file name, line number and character position separated by colons,
1043and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1044@samp{\032} characters as a signal to display the source code for the
1045frame.
c906108c 1046
d700128c
EZ
1047@item -epoch
1048@cindex @code{--epoch}
1049The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1050@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1051routines so as to allow Epoch to display values of expressions in a
1052separate window.
1053
1054@item -annotate @var{level}
1055@cindex @code{--annotate}
1056This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1057effect is identical to using @samp{set annotate @var{level}}
086432e2
AC
1058(@pxref{Annotations}). The annotation @var{level} controls how much
1059information @value{GDBN} prints together with its prompt, values of
1060expressions, source lines, and other types of output. Level 0 is the
1061normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1062@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1063that control @value{GDBN}, and level 2 has been deprecated.
1064
1065The annotation mechanism has largely been superseeded by @sc{gdb/mi}
1066(@pxref{GDB/MI}).
d700128c 1067
aa26fa3a
TT
1068@item --args
1069@cindex @code{--args}
1070Change interpretation of command line so that arguments following the
1071executable file are passed as command line arguments to the inferior.
1072This option stops option processing.
1073
2df3850c
JM
1074@item -baud @var{bps}
1075@itemx -b @var{bps}
d700128c
EZ
1076@cindex @code{--baud}
1077@cindex @code{-b}
c906108c
SS
1078Set the line speed (baud rate or bits per second) of any serial
1079interface used by @value{GDBN} for remote debugging.
c906108c
SS
1080
1081@item -tty @var{device}
d700128c
EZ
1082@itemx -t @var{device}
1083@cindex @code{--tty}
1084@cindex @code{-t}
c906108c
SS
1085Run using @var{device} for your program's standard input and output.
1086@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1087
53a5351d 1088@c resolve the situation of these eventually
c4555f82
SC
1089@item -tui
1090@cindex @code{--tui}
d0d5df6f
AC
1091Activate the @dfn{Text User Interface} when starting. The Text User
1092Interface manages several text windows on the terminal, showing
1093source, assembly, registers and @value{GDBN} command outputs
1094(@pxref{TUI, ,@value{GDBN} Text User Interface}). Alternatively, the
1095Text User Interface can be enabled by invoking the program
1096@samp{gdbtui}. Do not use this option if you run @value{GDBN} from
1097Emacs (@pxref{Emacs, ,Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1098
1099@c @item -xdb
d700128c 1100@c @cindex @code{--xdb}
53a5351d
JM
1101@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1102@c For information, see the file @file{xdb_trans.html}, which is usually
1103@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1104@c systems.
1105
d700128c
EZ
1106@item -interpreter @var{interp}
1107@cindex @code{--interpreter}
1108Use the interpreter @var{interp} for interface with the controlling
1109program or device. This option is meant to be set by programs which
94bbb2c0 1110communicate with @value{GDBN} using it as a back end.
21c294e6 1111@xref{Interpreters, , Command Interpreters}.
94bbb2c0 1112
da0f9dcd 1113@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
2fcf52f0 1114@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
6c74ac8b
AC
1115The @sc{gdb/mi} Interface}) included since @var{GDBN} version 6.0. The
1116previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1117selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1118@sc{gdb/mi} interfaces are no longer supported.
d700128c
EZ
1119
1120@item -write
1121@cindex @code{--write}
1122Open the executable and core files for both reading and writing. This
1123is equivalent to the @samp{set write on} command inside @value{GDBN}
1124(@pxref{Patching}).
1125
1126@item -statistics
1127@cindex @code{--statistics}
1128This option causes @value{GDBN} to print statistics about time and
1129memory usage after it completes each command and returns to the prompt.
1130
1131@item -version
1132@cindex @code{--version}
1133This option causes @value{GDBN} to print its version number and
1134no-warranty blurb, and exit.
1135
c906108c
SS
1136@end table
1137
6d2ebf8b 1138@node Quitting GDB
c906108c
SS
1139@section Quitting @value{GDBN}
1140@cindex exiting @value{GDBN}
1141@cindex leaving @value{GDBN}
1142
1143@table @code
1144@kindex quit @r{[}@var{expression}@r{]}
41afff9a 1145@kindex q @r{(@code{quit})}
96a2c332
SS
1146@item quit @r{[}@var{expression}@r{]}
1147@itemx q
1148To exit @value{GDBN}, use the @code{quit} command (abbreviated
1149@code{q}), or type an end-of-file character (usually @kbd{C-d}). If you
1150do not supply @var{expression}, @value{GDBN} will terminate normally;
1151otherwise it will terminate using the result of @var{expression} as the
1152error code.
c906108c
SS
1153@end table
1154
1155@cindex interrupt
1156An interrupt (often @kbd{C-c}) does not exit from @value{GDBN}, but rather
1157terminates the action of any @value{GDBN} command that is in progress and
1158returns to @value{GDBN} command level. It is safe to type the interrupt
1159character at any time because @value{GDBN} does not allow it to take effect
1160until a time when it is safe.
1161
c906108c
SS
1162If you have been using @value{GDBN} to control an attached process or
1163device, you can release it with the @code{detach} command
1164(@pxref{Attach, ,Debugging an already-running process}).
c906108c 1165
6d2ebf8b 1166@node Shell Commands
c906108c
SS
1167@section Shell commands
1168
1169If you need to execute occasional shell commands during your
1170debugging session, there is no need to leave or suspend @value{GDBN}; you can
1171just use the @code{shell} command.
1172
1173@table @code
1174@kindex shell
1175@cindex shell escape
1176@item shell @var{command string}
1177Invoke a standard shell to execute @var{command string}.
c906108c 1178If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1179shell to run. Otherwise @value{GDBN} uses the default shell
1180(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1181@end table
1182
1183The utility @code{make} is often needed in development environments.
1184You do not have to use the @code{shell} command for this purpose in
1185@value{GDBN}:
1186
1187@table @code
1188@kindex make
1189@cindex calling make
1190@item make @var{make-args}
1191Execute the @code{make} program with the specified
1192arguments. This is equivalent to @samp{shell make @var{make-args}}.
1193@end table
1194
0fac0b41
DJ
1195@node Logging output
1196@section Logging output
1197@cindex logging @value{GDBN} output
1198
1199You may want to save the output of @value{GDBN} commands to a file.
1200There are several commands to control @value{GDBN}'s logging.
1201
1202@table @code
1203@kindex set logging
1204@item set logging on
1205Enable logging.
1206@item set logging off
1207Disable logging.
1208@item set logging file @var{file}
1209Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1210@item set logging overwrite [on|off]
1211By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1212you want @code{set logging on} to overwrite the logfile instead.
1213@item set logging redirect [on|off]
1214By default, @value{GDBN} output will go to both the terminal and the logfile.
1215Set @code{redirect} if you want output to go only to the log file.
1216@kindex show logging
1217@item show logging
1218Show the current values of the logging settings.
1219@end table
1220
6d2ebf8b 1221@node Commands
c906108c
SS
1222@chapter @value{GDBN} Commands
1223
1224You can abbreviate a @value{GDBN} command to the first few letters of the command
1225name, if that abbreviation is unambiguous; and you can repeat certain
1226@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1227key to get @value{GDBN} to fill out the rest of a word in a command (or to
1228show you the alternatives available, if there is more than one possibility).
1229
1230@menu
1231* Command Syntax:: How to give commands to @value{GDBN}
1232* Completion:: Command completion
1233* Help:: How to ask @value{GDBN} for help
1234@end menu
1235
6d2ebf8b 1236@node Command Syntax
c906108c
SS
1237@section Command syntax
1238
1239A @value{GDBN} command is a single line of input. There is no limit on
1240how long it can be. It starts with a command name, which is followed by
1241arguments whose meaning depends on the command name. For example, the
1242command @code{step} accepts an argument which is the number of times to
1243step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1244with no arguments. Some commands do not allow any arguments.
c906108c
SS
1245
1246@cindex abbreviation
1247@value{GDBN} command names may always be truncated if that abbreviation is
1248unambiguous. Other possible command abbreviations are listed in the
1249documentation for individual commands. In some cases, even ambiguous
1250abbreviations are allowed; for example, @code{s} is specially defined as
1251equivalent to @code{step} even though there are other commands whose
1252names start with @code{s}. You can test abbreviations by using them as
1253arguments to the @code{help} command.
1254
1255@cindex repeating commands
41afff9a 1256@kindex RET @r{(repeat last command)}
c906108c 1257A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1258repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1259will not repeat this way; these are commands whose unintentional
1260repetition might cause trouble and which you are unlikely to want to
1261repeat.
1262
1263The @code{list} and @code{x} commands, when you repeat them with
1264@key{RET}, construct new arguments rather than repeating
1265exactly as typed. This permits easy scanning of source or memory.
1266
1267@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1268output, in a way similar to the common utility @code{more}
1269(@pxref{Screen Size,,Screen size}). Since it is easy to press one
1270@key{RET} too many in this situation, @value{GDBN} disables command
1271repetition after any command that generates this sort of display.
1272
41afff9a 1273@kindex # @r{(a comment)}
c906108c
SS
1274@cindex comment
1275Any text from a @kbd{#} to the end of the line is a comment; it does
1276nothing. This is useful mainly in command files (@pxref{Command
1277Files,,Command files}).
1278
88118b3a
TT
1279@cindex repeating command sequences
1280@kindex C-o @r{(operate-and-get-next)}
1281The @kbd{C-o} binding is useful for repeating a complex sequence of
1282commands. This command accepts the current line, like @kbd{RET}, and
1283then fetches the next line relative to the current line from the history
1284for editing.
1285
6d2ebf8b 1286@node Completion
c906108c
SS
1287@section Command completion
1288
1289@cindex completion
1290@cindex word completion
1291@value{GDBN} can fill in the rest of a word in a command for you, if there is
1292only one possibility; it can also show you what the valid possibilities
1293are for the next word in a command, at any time. This works for @value{GDBN}
1294commands, @value{GDBN} subcommands, and the names of symbols in your program.
1295
1296Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1297of a word. If there is only one possibility, @value{GDBN} fills in the
1298word, and waits for you to finish the command (or press @key{RET} to
1299enter it). For example, if you type
1300
1301@c FIXME "@key" does not distinguish its argument sufficiently to permit
1302@c complete accuracy in these examples; space introduced for clarity.
1303@c If texinfo enhancements make it unnecessary, it would be nice to
1304@c replace " @key" by "@key" in the following...
474c8240 1305@smallexample
c906108c 1306(@value{GDBP}) info bre @key{TAB}
474c8240 1307@end smallexample
c906108c
SS
1308
1309@noindent
1310@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1311the only @code{info} subcommand beginning with @samp{bre}:
1312
474c8240 1313@smallexample
c906108c 1314(@value{GDBP}) info breakpoints
474c8240 1315@end smallexample
c906108c
SS
1316
1317@noindent
1318You can either press @key{RET} at this point, to run the @code{info
1319breakpoints} command, or backspace and enter something else, if
1320@samp{breakpoints} does not look like the command you expected. (If you
1321were sure you wanted @code{info breakpoints} in the first place, you
1322might as well just type @key{RET} immediately after @samp{info bre},
1323to exploit command abbreviations rather than command completion).
1324
1325If there is more than one possibility for the next word when you press
1326@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1327characters and try again, or just press @key{TAB} a second time;
1328@value{GDBN} displays all the possible completions for that word. For
1329example, you might want to set a breakpoint on a subroutine whose name
1330begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1331just sounds the bell. Typing @key{TAB} again displays all the
1332function names in your program that begin with those characters, for
1333example:
1334
474c8240 1335@smallexample
c906108c
SS
1336(@value{GDBP}) b make_ @key{TAB}
1337@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1338make_a_section_from_file make_environ
1339make_abs_section make_function_type
1340make_blockvector make_pointer_type
1341make_cleanup make_reference_type
c906108c
SS
1342make_command make_symbol_completion_list
1343(@value{GDBP}) b make_
474c8240 1344@end smallexample
c906108c
SS
1345
1346@noindent
1347After displaying the available possibilities, @value{GDBN} copies your
1348partial input (@samp{b make_} in the example) so you can finish the
1349command.
1350
1351If you just want to see the list of alternatives in the first place, you
b37052ae 1352can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1353means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1354key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1355one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1356
1357@cindex quotes in commands
1358@cindex completion of quoted strings
1359Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1360parentheses or other characters that @value{GDBN} normally excludes from
1361its notion of a word. To permit word completion to work in this
1362situation, you may enclose words in @code{'} (single quote marks) in
1363@value{GDBN} commands.
c906108c 1364
c906108c 1365The most likely situation where you might need this is in typing the
b37052ae
EZ
1366name of a C@t{++} function. This is because C@t{++} allows function
1367overloading (multiple definitions of the same function, distinguished
1368by argument type). For example, when you want to set a breakpoint you
1369may need to distinguish whether you mean the version of @code{name}
1370that takes an @code{int} parameter, @code{name(int)}, or the version
1371that takes a @code{float} parameter, @code{name(float)}. To use the
1372word-completion facilities in this situation, type a single quote
1373@code{'} at the beginning of the function name. This alerts
1374@value{GDBN} that it may need to consider more information than usual
1375when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c 1376
474c8240 1377@smallexample
96a2c332 1378(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1379bubble(double,double) bubble(int,int)
1380(@value{GDBP}) b 'bubble(
474c8240 1381@end smallexample
c906108c
SS
1382
1383In some cases, @value{GDBN} can tell that completing a name requires using
1384quotes. When this happens, @value{GDBN} inserts the quote for you (while
1385completing as much as it can) if you do not type the quote in the first
1386place:
1387
474c8240 1388@smallexample
c906108c
SS
1389(@value{GDBP}) b bub @key{TAB}
1390@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1391(@value{GDBP}) b 'bubble(
474c8240 1392@end smallexample
c906108c
SS
1393
1394@noindent
1395In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1396you have not yet started typing the argument list when you ask for
1397completion on an overloaded symbol.
1398
d4f3574e 1399For more information about overloaded functions, see @ref{C plus plus
b37052ae 1400expressions, ,C@t{++} expressions}. You can use the command @code{set
c906108c 1401overload-resolution off} to disable overload resolution;
b37052ae 1402see @ref{Debugging C plus plus, ,@value{GDBN} features for C@t{++}}.
c906108c
SS
1403
1404
6d2ebf8b 1405@node Help
c906108c
SS
1406@section Getting help
1407@cindex online documentation
1408@kindex help
1409
5d161b24 1410You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1411using the command @code{help}.
1412
1413@table @code
41afff9a 1414@kindex h @r{(@code{help})}
c906108c
SS
1415@item help
1416@itemx h
1417You can use @code{help} (abbreviated @code{h}) with no arguments to
1418display a short list of named classes of commands:
1419
1420@smallexample
1421(@value{GDBP}) help
1422List of classes of commands:
1423
2df3850c 1424aliases -- Aliases of other commands
c906108c 1425breakpoints -- Making program stop at certain points
2df3850c 1426data -- Examining data
c906108c 1427files -- Specifying and examining files
2df3850c
JM
1428internals -- Maintenance commands
1429obscure -- Obscure features
1430running -- Running the program
1431stack -- Examining the stack
c906108c
SS
1432status -- Status inquiries
1433support -- Support facilities
96a2c332
SS
1434tracepoints -- Tracing of program execution without@*
1435 stopping the program
c906108c 1436user-defined -- User-defined commands
c906108c 1437
5d161b24 1438Type "help" followed by a class name for a list of
c906108c 1439commands in that class.
5d161b24 1440Type "help" followed by command name for full
c906108c
SS
1441documentation.
1442Command name abbreviations are allowed if unambiguous.
1443(@value{GDBP})
1444@end smallexample
96a2c332 1445@c the above line break eliminates huge line overfull...
c906108c
SS
1446
1447@item help @var{class}
1448Using one of the general help classes as an argument, you can get a
1449list of the individual commands in that class. For example, here is the
1450help display for the class @code{status}:
1451
1452@smallexample
1453(@value{GDBP}) help status
1454Status inquiries.
1455
1456List of commands:
1457
1458@c Line break in "show" line falsifies real output, but needed
1459@c to fit in smallbook page size.
2df3850c
JM
1460info -- Generic command for showing things
1461 about the program being debugged
1462show -- Generic command for showing things
1463 about the debugger
c906108c 1464
5d161b24 1465Type "help" followed by command name for full
c906108c
SS
1466documentation.
1467Command name abbreviations are allowed if unambiguous.
1468(@value{GDBP})
1469@end smallexample
1470
1471@item help @var{command}
1472With a command name as @code{help} argument, @value{GDBN} displays a
1473short paragraph on how to use that command.
1474
6837a0a2
DB
1475@kindex apropos
1476@item apropos @var{args}
1477The @code{apropos @var{args}} command searches through all of the @value{GDBN}
1478commands, and their documentation, for the regular expression specified in
1479@var{args}. It prints out all matches found. For example:
1480
1481@smallexample
1482apropos reload
1483@end smallexample
1484
b37052ae
EZ
1485@noindent
1486results in:
6837a0a2
DB
1487
1488@smallexample
6d2ebf8b
SS
1489@c @group
1490set symbol-reloading -- Set dynamic symbol table reloading
1491 multiple times in one run
1492show symbol-reloading -- Show dynamic symbol table reloading
1493 multiple times in one run
1494@c @end group
6837a0a2
DB
1495@end smallexample
1496
c906108c
SS
1497@kindex complete
1498@item complete @var{args}
1499The @code{complete @var{args}} command lists all the possible completions
1500for the beginning of a command. Use @var{args} to specify the beginning of the
1501command you want completed. For example:
1502
1503@smallexample
1504complete i
1505@end smallexample
1506
1507@noindent results in:
1508
1509@smallexample
1510@group
2df3850c
JM
1511if
1512ignore
c906108c
SS
1513info
1514inspect
c906108c
SS
1515@end group
1516@end smallexample
1517
1518@noindent This is intended for use by @sc{gnu} Emacs.
1519@end table
1520
1521In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1522and @code{show} to inquire about the state of your program, or the state
1523of @value{GDBN} itself. Each command supports many topics of inquiry; this
1524manual introduces each of them in the appropriate context. The listings
1525under @code{info} and under @code{show} in the Index point to
1526all the sub-commands. @xref{Index}.
1527
1528@c @group
1529@table @code
1530@kindex info
41afff9a 1531@kindex i @r{(@code{info})}
c906108c
SS
1532@item info
1533This command (abbreviated @code{i}) is for describing the state of your
1534program. For example, you can list the arguments given to your program
1535with @code{info args}, list the registers currently in use with @code{info
1536registers}, or list the breakpoints you have set with @code{info breakpoints}.
1537You can get a complete list of the @code{info} sub-commands with
1538@w{@code{help info}}.
1539
1540@kindex set
1541@item set
5d161b24 1542You can assign the result of an expression to an environment variable with
c906108c
SS
1543@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1544@code{set prompt $}.
1545
1546@kindex show
1547@item show
5d161b24 1548In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1549@value{GDBN} itself.
1550You can change most of the things you can @code{show}, by using the
1551related command @code{set}; for example, you can control what number
1552system is used for displays with @code{set radix}, or simply inquire
1553which is currently in use with @code{show radix}.
1554
1555@kindex info set
1556To display all the settable parameters and their current
1557values, you can use @code{show} with no arguments; you may also use
1558@code{info set}. Both commands produce the same display.
1559@c FIXME: "info set" violates the rule that "info" is for state of
1560@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1561@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1562@end table
1563@c @end group
1564
1565Here are three miscellaneous @code{show} subcommands, all of which are
1566exceptional in lacking corresponding @code{set} commands:
1567
1568@table @code
1569@kindex show version
1570@cindex version number
1571@item show version
1572Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1573information in @value{GDBN} bug-reports. If multiple versions of
1574@value{GDBN} are in use at your site, you may need to determine which
1575version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1576commands are introduced, and old ones may wither away. Also, many
1577system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1578variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1579The version number is the same as the one announced when you start
1580@value{GDBN}.
c906108c
SS
1581
1582@kindex show copying
1583@item show copying
1584Display information about permission for copying @value{GDBN}.
1585
1586@kindex show warranty
1587@item show warranty
2df3850c 1588Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1589if your version of @value{GDBN} comes with one.
2df3850c 1590
c906108c
SS
1591@end table
1592
6d2ebf8b 1593@node Running
c906108c
SS
1594@chapter Running Programs Under @value{GDBN}
1595
1596When you run a program under @value{GDBN}, you must first generate
1597debugging information when you compile it.
7a292a7a
SS
1598
1599You may start @value{GDBN} with its arguments, if any, in an environment
1600of your choice. If you are doing native debugging, you may redirect
1601your program's input and output, debug an already running process, or
1602kill a child process.
c906108c
SS
1603
1604@menu
1605* Compilation:: Compiling for debugging
1606* Starting:: Starting your program
c906108c
SS
1607* Arguments:: Your program's arguments
1608* Environment:: Your program's environment
c906108c
SS
1609
1610* Working Directory:: Your program's working directory
1611* Input/Output:: Your program's input and output
1612* Attach:: Debugging an already-running process
1613* Kill Process:: Killing the child process
c906108c
SS
1614
1615* Threads:: Debugging programs with multiple threads
1616* Processes:: Debugging programs with multiple processes
1617@end menu
1618
6d2ebf8b 1619@node Compilation
c906108c
SS
1620@section Compiling for debugging
1621
1622In order to debug a program effectively, you need to generate
1623debugging information when you compile it. This debugging information
1624is stored in the object file; it describes the data type of each
1625variable or function and the correspondence between source line numbers
1626and addresses in the executable code.
1627
1628To request debugging information, specify the @samp{-g} option when you run
1629the compiler.
1630
e2e0bcd1
JB
1631Most compilers do not include information about preprocessor macros in
1632the debugging information if you specify the @option{-g} flag alone,
1633because this information is rather large. Version 3.1 of @value{NGCC},
1634the @sc{gnu} C compiler, provides macro information if you specify the
1635options @option{-gdwarf-2} and @option{-g3}; the former option requests
1636debugging information in the Dwarf 2 format, and the latter requests
1637``extra information''. In the future, we hope to find more compact ways
1638to represent macro information, so that it can be included with
1639@option{-g} alone.
1640
c906108c
SS
1641Many C compilers are unable to handle the @samp{-g} and @samp{-O}
1642options together. Using those compilers, you cannot generate optimized
1643executables containing debugging information.
1644
53a5351d
JM
1645@value{NGCC}, the @sc{gnu} C compiler, supports @samp{-g} with or
1646without @samp{-O}, making it possible to debug optimized code. We
1647recommend that you @emph{always} use @samp{-g} whenever you compile a
1648program. You may think your program is correct, but there is no sense
1649in pushing your luck.
c906108c
SS
1650
1651@cindex optimized code, debugging
1652@cindex debugging optimized code
1653When you debug a program compiled with @samp{-g -O}, remember that the
1654optimizer is rearranging your code; the debugger shows you what is
1655really there. Do not be too surprised when the execution path does not
1656exactly match your source file! An extreme example: if you define a
1657variable, but never use it, @value{GDBN} never sees that
1658variable---because the compiler optimizes it out of existence.
1659
1660Some things do not work as well with @samp{-g -O} as with just
1661@samp{-g}, particularly on machines with instruction scheduling. If in
1662doubt, recompile with @samp{-g} alone, and if this fixes the problem,
1663please report it to us as a bug (including a test case!).
15387254 1664@xref{Variables}, for more information about debugging optimized code.
c906108c
SS
1665
1666Older versions of the @sc{gnu} C compiler permitted a variant option
1667@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1668format; if your @sc{gnu} C compiler has this option, do not use it.
1669
1670@need 2000
6d2ebf8b 1671@node Starting
c906108c
SS
1672@section Starting your program
1673@cindex starting
1674@cindex running
1675
1676@table @code
1677@kindex run
41afff9a 1678@kindex r @r{(@code{run})}
c906108c
SS
1679@item run
1680@itemx r
7a292a7a
SS
1681Use the @code{run} command to start your program under @value{GDBN}.
1682You must first specify the program name (except on VxWorks) with an
1683argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1684@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
1685(@pxref{Files, ,Commands to specify files}).
c906108c
SS
1686
1687@end table
1688
c906108c
SS
1689If you are running your program in an execution environment that
1690supports processes, @code{run} creates an inferior process and makes
1691that process run your program. (In environments without processes,
1692@code{run} jumps to the start of your program.)
1693
1694The execution of a program is affected by certain information it
1695receives from its superior. @value{GDBN} provides ways to specify this
1696information, which you must do @emph{before} starting your program. (You
1697can change it after starting your program, but such changes only affect
1698your program the next time you start it.) This information may be
1699divided into four categories:
1700
1701@table @asis
1702@item The @emph{arguments.}
1703Specify the arguments to give your program as the arguments of the
1704@code{run} command. If a shell is available on your target, the shell
1705is used to pass the arguments, so that you may use normal conventions
1706(such as wildcard expansion or variable substitution) in describing
1707the arguments.
1708In Unix systems, you can control which shell is used with the
1709@code{SHELL} environment variable.
1710@xref{Arguments, ,Your program's arguments}.
1711
1712@item The @emph{environment.}
1713Your program normally inherits its environment from @value{GDBN}, but you can
1714use the @value{GDBN} commands @code{set environment} and @code{unset
1715environment} to change parts of the environment that affect
1716your program. @xref{Environment, ,Your program's environment}.
1717
1718@item The @emph{working directory.}
1719Your program inherits its working directory from @value{GDBN}. You can set
1720the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
1721@xref{Working Directory, ,Your program's working directory}.
1722
1723@item The @emph{standard input and output.}
1724Your program normally uses the same device for standard input and
1725standard output as @value{GDBN} is using. You can redirect input and output
1726in the @code{run} command line, or you can use the @code{tty} command to
1727set a different device for your program.
1728@xref{Input/Output, ,Your program's input and output}.
1729
1730@cindex pipes
1731@emph{Warning:} While input and output redirection work, you cannot use
1732pipes to pass the output of the program you are debugging to another
1733program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1734wrong program.
1735@end table
c906108c
SS
1736
1737When you issue the @code{run} command, your program begins to execute
1738immediately. @xref{Stopping, ,Stopping and continuing}, for discussion
1739of how to arrange for your program to stop. Once your program has
1740stopped, you may call functions in your program, using the @code{print}
1741or @code{call} commands. @xref{Data, ,Examining Data}.
1742
1743If the modification time of your symbol file has changed since the last
1744time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1745table, and reads it again. When it does this, @value{GDBN} tries to retain
1746your current breakpoints.
1747
4e8b0763
JB
1748@table @code
1749@kindex start
1750@item start
1751@cindex run to main procedure
1752The name of the main procedure can vary from language to language.
1753With C or C@t{++}, the main procedure name is always @code{main}, but
1754other languages such as Ada do not require a specific name for their
1755main procedure. The debugger provides a convenient way to start the
1756execution of the program and to stop at the beginning of the main
1757procedure, depending on the language used.
1758
1759The @samp{start} command does the equivalent of setting a temporary
1760breakpoint at the beginning of the main procedure and then invoking
1761the @samp{run} command.
1762
1763Some programs contain an elaboration phase where some startup code is
1764executed before the main program is called. This depends on the
1765languages used to write your program. In C@t{++} for instance,
1766constructors for static and global objects are executed before
1767@code{main} is called. It is therefore possible that the debugger stops
1768before reaching the main procedure. However, the temporary breakpoint
1769will remain to halt execution.
1770
1771Specify the arguments to give to your program as arguments to the
1772@samp{start} command. These arguments will be given verbatim to the
1773underlying @samp{run} command. Note that the same arguments will be
1774reused if no argument is provided during subsequent calls to
1775@samp{start} or @samp{run}.
1776
1777It is sometimes necessary to debug the program during elaboration. In
1778these cases, using the @code{start} command would stop the execution of
1779your program too late, as the program would have already completed the
1780elaboration phase. Under these circumstances, insert breakpoints in your
1781elaboration code before running your program.
1782@end table
1783
6d2ebf8b 1784@node Arguments
c906108c
SS
1785@section Your program's arguments
1786
1787@cindex arguments (to your program)
1788The arguments to your program can be specified by the arguments of the
5d161b24 1789@code{run} command.
c906108c
SS
1790They are passed to a shell, which expands wildcard characters and
1791performs redirection of I/O, and thence to your program. Your
1792@code{SHELL} environment variable (if it exists) specifies what shell
1793@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
1794the default shell (@file{/bin/sh} on Unix).
1795
1796On non-Unix systems, the program is usually invoked directly by
1797@value{GDBN}, which emulates I/O redirection via the appropriate system
1798calls, and the wildcard characters are expanded by the startup code of
1799the program, not by the shell.
c906108c
SS
1800
1801@code{run} with no arguments uses the same arguments used by the previous
1802@code{run}, or those set by the @code{set args} command.
1803
c906108c 1804@table @code
41afff9a 1805@kindex set args
c906108c
SS
1806@item set args
1807Specify the arguments to be used the next time your program is run. If
1808@code{set args} has no arguments, @code{run} executes your program
1809with no arguments. Once you have run your program with arguments,
1810using @code{set args} before the next @code{run} is the only way to run
1811it again without arguments.
1812
1813@kindex show args
1814@item show args
1815Show the arguments to give your program when it is started.
1816@end table
1817
6d2ebf8b 1818@node Environment
c906108c
SS
1819@section Your program's environment
1820
1821@cindex environment (of your program)
1822The @dfn{environment} consists of a set of environment variables and
1823their values. Environment variables conventionally record such things as
1824your user name, your home directory, your terminal type, and your search
1825path for programs to run. Usually you set up environment variables with
1826the shell and they are inherited by all the other programs you run. When
1827debugging, it can be useful to try running your program with a modified
1828environment without having to start @value{GDBN} over again.
1829
1830@table @code
1831@kindex path
1832@item path @var{directory}
1833Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
1834(the search path for executables) that will be passed to your program.
1835The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
1836You may specify several directory names, separated by whitespace or by a
1837system-dependent separator character (@samp{:} on Unix, @samp{;} on
1838MS-DOS and MS-Windows). If @var{directory} is already in the path, it
1839is moved to the front, so it is searched sooner.
c906108c
SS
1840
1841You can use the string @samp{$cwd} to refer to whatever is the current
1842working directory at the time @value{GDBN} searches the path. If you
1843use @samp{.} instead, it refers to the directory where you executed the
1844@code{path} command. @value{GDBN} replaces @samp{.} in the
1845@var{directory} argument (with the current path) before adding
1846@var{directory} to the search path.
1847@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
1848@c document that, since repeating it would be a no-op.
1849
1850@kindex show paths
1851@item show paths
1852Display the list of search paths for executables (the @code{PATH}
1853environment variable).
1854
1855@kindex show environment
1856@item show environment @r{[}@var{varname}@r{]}
1857Print the value of environment variable @var{varname} to be given to
1858your program when it starts. If you do not supply @var{varname},
1859print the names and values of all environment variables to be given to
1860your program. You can abbreviate @code{environment} as @code{env}.
1861
1862@kindex set environment
53a5351d 1863@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
1864Set environment variable @var{varname} to @var{value}. The value
1865changes for your program only, not for @value{GDBN} itself. @var{value} may
1866be any string; the values of environment variables are just strings, and
1867any interpretation is supplied by your program itself. The @var{value}
1868parameter is optional; if it is eliminated, the variable is set to a
1869null value.
1870@c "any string" here does not include leading, trailing
1871@c blanks. Gnu asks: does anyone care?
1872
1873For example, this command:
1874
474c8240 1875@smallexample
c906108c 1876set env USER = foo
474c8240 1877@end smallexample
c906108c
SS
1878
1879@noindent
d4f3574e 1880tells the debugged program, when subsequently run, that its user is named
c906108c
SS
1881@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
1882are not actually required.)
1883
1884@kindex unset environment
1885@item unset environment @var{varname}
1886Remove variable @var{varname} from the environment to be passed to your
1887program. This is different from @samp{set env @var{varname} =};
1888@code{unset environment} removes the variable from the environment,
1889rather than assigning it an empty value.
1890@end table
1891
d4f3574e
SS
1892@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
1893the shell indicated
c906108c
SS
1894by your @code{SHELL} environment variable if it exists (or
1895@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
1896that runs an initialization file---such as @file{.cshrc} for C-shell, or
1897@file{.bashrc} for BASH---any variables you set in that file affect
1898your program. You may wish to move setting of environment variables to
1899files that are only run when you sign on, such as @file{.login} or
1900@file{.profile}.
1901
6d2ebf8b 1902@node Working Directory
c906108c
SS
1903@section Your program's working directory
1904
1905@cindex working directory (of your program)
1906Each time you start your program with @code{run}, it inherits its
1907working directory from the current working directory of @value{GDBN}.
1908The @value{GDBN} working directory is initially whatever it inherited
1909from its parent process (typically the shell), but you can specify a new
1910working directory in @value{GDBN} with the @code{cd} command.
1911
1912The @value{GDBN} working directory also serves as a default for the commands
1913that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
1914specify files}.
1915
1916@table @code
1917@kindex cd
1918@item cd @var{directory}
1919Set the @value{GDBN} working directory to @var{directory}.
1920
1921@kindex pwd
1922@item pwd
1923Print the @value{GDBN} working directory.
1924@end table
1925
6d2ebf8b 1926@node Input/Output
c906108c
SS
1927@section Your program's input and output
1928
1929@cindex redirection
1930@cindex i/o
1931@cindex terminal
1932By default, the program you run under @value{GDBN} does input and output to
5d161b24 1933the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
1934to its own terminal modes to interact with you, but it records the terminal
1935modes your program was using and switches back to them when you continue
1936running your program.
1937
1938@table @code
1939@kindex info terminal
1940@item info terminal
1941Displays information recorded by @value{GDBN} about the terminal modes your
1942program is using.
1943@end table
1944
1945You can redirect your program's input and/or output using shell
1946redirection with the @code{run} command. For example,
1947
474c8240 1948@smallexample
c906108c 1949run > outfile
474c8240 1950@end smallexample
c906108c
SS
1951
1952@noindent
1953starts your program, diverting its output to the file @file{outfile}.
1954
1955@kindex tty
1956@cindex controlling terminal
1957Another way to specify where your program should do input and output is
1958with the @code{tty} command. This command accepts a file name as
1959argument, and causes this file to be the default for future @code{run}
1960commands. It also resets the controlling terminal for the child
1961process, for future @code{run} commands. For example,
1962
474c8240 1963@smallexample
c906108c 1964tty /dev/ttyb
474c8240 1965@end smallexample
c906108c
SS
1966
1967@noindent
1968directs that processes started with subsequent @code{run} commands
1969default to do input and output on the terminal @file{/dev/ttyb} and have
1970that as their controlling terminal.
1971
1972An explicit redirection in @code{run} overrides the @code{tty} command's
1973effect on the input/output device, but not its effect on the controlling
1974terminal.
1975
1976When you use the @code{tty} command or redirect input in the @code{run}
1977command, only the input @emph{for your program} is affected. The input
1978for @value{GDBN} still comes from your terminal.
1979
6d2ebf8b 1980@node Attach
c906108c
SS
1981@section Debugging an already-running process
1982@kindex attach
1983@cindex attach
1984
1985@table @code
1986@item attach @var{process-id}
1987This command attaches to a running process---one that was started
1988outside @value{GDBN}. (@code{info files} shows your active
1989targets.) The command takes as argument a process ID. The usual way to
1990find out the process-id of a Unix process is with the @code{ps} utility,
1991or with the @samp{jobs -l} shell command.
1992
1993@code{attach} does not repeat if you press @key{RET} a second time after
1994executing the command.
1995@end table
1996
1997To use @code{attach}, your program must be running in an environment
1998which supports processes; for example, @code{attach} does not work for
1999programs on bare-board targets that lack an operating system. You must
2000also have permission to send the process a signal.
2001
2002When you use @code{attach}, the debugger finds the program running in
2003the process first by looking in the current working directory, then (if
2004the program is not found) by using the source file search path
2005(@pxref{Source Path, ,Specifying source directories}). You can also use
2006the @code{file} command to load the program. @xref{Files, ,Commands to
2007Specify Files}.
2008
2009The first thing @value{GDBN} does after arranging to debug the specified
2010process is to stop it. You can examine and modify an attached process
53a5351d
JM
2011with all the @value{GDBN} commands that are ordinarily available when
2012you start processes with @code{run}. You can insert breakpoints; you
2013can step and continue; you can modify storage. If you would rather the
2014process continue running, you may use the @code{continue} command after
c906108c
SS
2015attaching @value{GDBN} to the process.
2016
2017@table @code
2018@kindex detach
2019@item detach
2020When you have finished debugging the attached process, you can use the
2021@code{detach} command to release it from @value{GDBN} control. Detaching
2022the process continues its execution. After the @code{detach} command,
2023that process and @value{GDBN} become completely independent once more, and you
2024are ready to @code{attach} another process or start one with @code{run}.
2025@code{detach} does not repeat if you press @key{RET} again after
2026executing the command.
2027@end table
2028
2029If you exit @value{GDBN} or use the @code{run} command while you have an
2030attached process, you kill that process. By default, @value{GDBN} asks
2031for confirmation if you try to do either of these things; you can
2032control whether or not you need to confirm by using the @code{set
2033confirm} command (@pxref{Messages/Warnings, ,Optional warnings and
2034messages}).
2035
6d2ebf8b 2036@node Kill Process
c906108c 2037@section Killing the child process
c906108c
SS
2038
2039@table @code
2040@kindex kill
2041@item kill
2042Kill the child process in which your program is running under @value{GDBN}.
2043@end table
2044
2045This command is useful if you wish to debug a core dump instead of a
2046running process. @value{GDBN} ignores any core dump file while your program
2047is running.
2048
2049On some operating systems, a program cannot be executed outside @value{GDBN}
2050while you have breakpoints set on it inside @value{GDBN}. You can use the
2051@code{kill} command in this situation to permit running your program
2052outside the debugger.
2053
2054The @code{kill} command is also useful if you wish to recompile and
2055relink your program, since on many systems it is impossible to modify an
2056executable file while it is running in a process. In this case, when you
2057next type @code{run}, @value{GDBN} notices that the file has changed, and
2058reads the symbol table again (while trying to preserve your current
2059breakpoint settings).
2060
6d2ebf8b 2061@node Threads
c906108c 2062@section Debugging programs with multiple threads
c906108c
SS
2063
2064@cindex threads of execution
2065@cindex multiple threads
2066@cindex switching threads
2067In some operating systems, such as HP-UX and Solaris, a single program
2068may have more than one @dfn{thread} of execution. The precise semantics
2069of threads differ from one operating system to another, but in general
2070the threads of a single program are akin to multiple processes---except
2071that they share one address space (that is, they can all examine and
2072modify the same variables). On the other hand, each thread has its own
2073registers and execution stack, and perhaps private memory.
2074
2075@value{GDBN} provides these facilities for debugging multi-thread
2076programs:
2077
2078@itemize @bullet
2079@item automatic notification of new threads
2080@item @samp{thread @var{threadno}}, a command to switch among threads
2081@item @samp{info threads}, a command to inquire about existing threads
5d161b24 2082@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
2083a command to apply a command to a list of threads
2084@item thread-specific breakpoints
2085@end itemize
2086
c906108c
SS
2087@quotation
2088@emph{Warning:} These facilities are not yet available on every
2089@value{GDBN} configuration where the operating system supports threads.
2090If your @value{GDBN} does not support threads, these commands have no
2091effect. For example, a system without thread support shows no output
2092from @samp{info threads}, and always rejects the @code{thread} command,
2093like this:
2094
2095@smallexample
2096(@value{GDBP}) info threads
2097(@value{GDBP}) thread 1
2098Thread ID 1 not known. Use the "info threads" command to
2099see the IDs of currently known threads.
2100@end smallexample
2101@c FIXME to implementors: how hard would it be to say "sorry, this GDB
2102@c doesn't support threads"?
2103@end quotation
c906108c
SS
2104
2105@cindex focus of debugging
2106@cindex current thread
2107The @value{GDBN} thread debugging facility allows you to observe all
2108threads while your program runs---but whenever @value{GDBN} takes
2109control, one thread in particular is always the focus of debugging.
2110This thread is called the @dfn{current thread}. Debugging commands show
2111program information from the perspective of the current thread.
2112
41afff9a 2113@cindex @code{New} @var{systag} message
c906108c
SS
2114@cindex thread identifier (system)
2115@c FIXME-implementors!! It would be more helpful if the [New...] message
2116@c included GDB's numeric thread handle, so you could just go to that
2117@c thread without first checking `info threads'.
2118Whenever @value{GDBN} detects a new thread in your program, it displays
2119the target system's identification for the thread with a message in the
2120form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2121whose form varies depending on the particular system. For example, on
2122LynxOS, you might see
2123
474c8240 2124@smallexample
c906108c 2125[New process 35 thread 27]
474c8240 2126@end smallexample
c906108c
SS
2127
2128@noindent
2129when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2130the @var{systag} is simply something like @samp{process 368}, with no
2131further qualifier.
2132
2133@c FIXME!! (1) Does the [New...] message appear even for the very first
2134@c thread of a program, or does it only appear for the
6ca652b0 2135@c second---i.e.@: when it becomes obvious we have a multithread
c906108c
SS
2136@c program?
2137@c (2) *Is* there necessarily a first thread always? Or do some
2138@c multithread systems permit starting a program with multiple
5d161b24 2139@c threads ab initio?
c906108c
SS
2140
2141@cindex thread number
2142@cindex thread identifier (GDB)
2143For debugging purposes, @value{GDBN} associates its own thread
2144number---always a single integer---with each thread in your program.
2145
2146@table @code
2147@kindex info threads
2148@item info threads
2149Display a summary of all threads currently in your
2150program. @value{GDBN} displays for each thread (in this order):
2151
2152@enumerate
2153@item the thread number assigned by @value{GDBN}
2154
2155@item the target system's thread identifier (@var{systag})
2156
2157@item the current stack frame summary for that thread
2158@end enumerate
2159
2160@noindent
2161An asterisk @samp{*} to the left of the @value{GDBN} thread number
2162indicates the current thread.
2163
5d161b24 2164For example,
c906108c
SS
2165@end table
2166@c end table here to get a little more width for example
2167
2168@smallexample
2169(@value{GDBP}) info threads
2170 3 process 35 thread 27 0x34e5 in sigpause ()
2171 2 process 35 thread 23 0x34e5 in sigpause ()
2172* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
2173 at threadtest.c:68
2174@end smallexample
53a5351d
JM
2175
2176On HP-UX systems:
c906108c 2177
4644b6e3
EZ
2178@cindex debugging multithreaded programs (on HP-UX)
2179@cindex thread identifier (GDB), on HP-UX
c906108c
SS
2180For debugging purposes, @value{GDBN} associates its own thread
2181number---a small integer assigned in thread-creation order---with each
2182thread in your program.
2183
41afff9a
EZ
2184@cindex @code{New} @var{systag} message, on HP-UX
2185@cindex thread identifier (system), on HP-UX
c906108c
SS
2186@c FIXME-implementors!! It would be more helpful if the [New...] message
2187@c included GDB's numeric thread handle, so you could just go to that
2188@c thread without first checking `info threads'.
2189Whenever @value{GDBN} detects a new thread in your program, it displays
2190both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
2191form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2192whose form varies depending on the particular system. For example, on
2193HP-UX, you see
2194
474c8240 2195@smallexample
c906108c 2196[New thread 2 (system thread 26594)]
474c8240 2197@end smallexample
c906108c
SS
2198
2199@noindent
5d161b24 2200when @value{GDBN} notices a new thread.
c906108c
SS
2201
2202@table @code
4644b6e3 2203@kindex info threads (HP-UX)
c906108c
SS
2204@item info threads
2205Display a summary of all threads currently in your
2206program. @value{GDBN} displays for each thread (in this order):
2207
2208@enumerate
2209@item the thread number assigned by @value{GDBN}
2210
2211@item the target system's thread identifier (@var{systag})
2212
2213@item the current stack frame summary for that thread
2214@end enumerate
2215
2216@noindent
2217An asterisk @samp{*} to the left of the @value{GDBN} thread number
2218indicates the current thread.
2219
5d161b24 2220For example,
c906108c
SS
2221@end table
2222@c end table here to get a little more width for example
2223
474c8240 2224@smallexample
c906108c 2225(@value{GDBP}) info threads
6d2ebf8b
SS
2226 * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") \@*
2227 at quicksort.c:137
2228 2 system thread 26606 0x7b0030d8 in __ksleep () \@*
2229 from /usr/lib/libc.2
2230 1 system thread 27905 0x7b003498 in _brk () \@*
2231 from /usr/lib/libc.2
474c8240 2232@end smallexample
c906108c
SS
2233
2234@table @code
2235@kindex thread @var{threadno}
2236@item thread @var{threadno}
2237Make thread number @var{threadno} the current thread. The command
2238argument @var{threadno} is the internal @value{GDBN} thread number, as
2239shown in the first field of the @samp{info threads} display.
2240@value{GDBN} responds by displaying the system identifier of the thread
2241you selected, and its current stack frame summary:
2242
2243@smallexample
2244@c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one
2245(@value{GDBP}) thread 2
c906108c 2246[Switching to process 35 thread 23]
c906108c
SS
22470x34e5 in sigpause ()
2248@end smallexample
2249
2250@noindent
2251As with the @samp{[New @dots{}]} message, the form of the text after
2252@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2253threads.
c906108c 2254
c906108c
SS
2255@item thread apply [@var{threadno}] [@var{all}] @var{args}
2256The @code{thread apply} command allows you to apply a command to one or
2257more threads. Specify the numbers of the threads that you want affected
2258with the command argument @var{threadno}. @var{threadno} is the internal
2259@value{GDBN} thread number, as shown in the first field of the @samp{info
5d161b24
DB
2260threads} display. To apply a command to all threads, use
2261@code{thread apply all} @var{args}.
c906108c
SS
2262@end table
2263
2264@cindex automatic thread selection
2265@cindex switching threads automatically
2266@cindex threads, automatic switching
2267Whenever @value{GDBN} stops your program, due to a breakpoint or a
2268signal, it automatically selects the thread where that breakpoint or
2269signal happened. @value{GDBN} alerts you to the context switch with a
2270message of the form @samp{[Switching to @var{systag}]} to identify the
2271thread.
2272
2273@xref{Thread Stops,,Stopping and starting multi-thread programs}, for
2274more information about how @value{GDBN} behaves when you stop and start
2275programs with multiple threads.
2276
2277@xref{Set Watchpoints,,Setting watchpoints}, for information about
2278watchpoints in programs with multiple threads.
c906108c 2279
6d2ebf8b 2280@node Processes
c906108c
SS
2281@section Debugging programs with multiple processes
2282
2283@cindex fork, debugging programs which call
2284@cindex multiple processes
2285@cindex processes, multiple
53a5351d
JM
2286On most systems, @value{GDBN} has no special support for debugging
2287programs which create additional processes using the @code{fork}
2288function. When a program forks, @value{GDBN} will continue to debug the
2289parent process and the child process will run unimpeded. If you have
2290set a breakpoint in any code which the child then executes, the child
2291will get a @code{SIGTRAP} signal which (unless it catches the signal)
2292will cause it to terminate.
c906108c
SS
2293
2294However, if you want to debug the child process there is a workaround
2295which isn't too painful. Put a call to @code{sleep} in the code which
2296the child process executes after the fork. It may be useful to sleep
2297only if a certain environment variable is set, or a certain file exists,
2298so that the delay need not occur when you don't want to run @value{GDBN}
2299on the child. While the child is sleeping, use the @code{ps} program to
2300get its process ID. Then tell @value{GDBN} (a new invocation of
2301@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 2302the child process (@pxref{Attach}). From that point on you can debug
c906108c 2303the child process just like any other process which you attached to.
c906108c 2304
b51970ac
DJ
2305On some systems, @value{GDBN} provides support for debugging programs that
2306create additional processes using the @code{fork} or @code{vfork} functions.
2307Currently, the only platforms with this feature are HP-UX (11.x and later
2308only?) and GNU/Linux (kernel version 2.5.60 and later).
c906108c
SS
2309
2310By default, when a program forks, @value{GDBN} will continue to debug
2311the parent process and the child process will run unimpeded.
2312
2313If you want to follow the child process instead of the parent process,
2314use the command @w{@code{set follow-fork-mode}}.
2315
2316@table @code
2317@kindex set follow-fork-mode
2318@item set follow-fork-mode @var{mode}
2319Set the debugger response to a program call of @code{fork} or
2320@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
2321process. The @var{mode} can be:
2322
2323@table @code
2324@item parent
2325The original process is debugged after a fork. The child process runs
2df3850c 2326unimpeded. This is the default.
c906108c
SS
2327
2328@item child
2329The new process is debugged after a fork. The parent process runs
2330unimpeded.
2331
c906108c
SS
2332@end table
2333
2334@item show follow-fork-mode
2df3850c 2335Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
2336@end table
2337
2338If you ask to debug a child process and a @code{vfork} is followed by an
2339@code{exec}, @value{GDBN} executes the new target up to the first
2340breakpoint in the new target. If you have a breakpoint set on
2341@code{main} in your original program, the breakpoint will also be set on
2342the child process's @code{main}.
2343
2344When a child process is spawned by @code{vfork}, you cannot debug the
2345child or parent until an @code{exec} call completes.
2346
2347If you issue a @code{run} command to @value{GDBN} after an @code{exec}
2348call executes, the new target restarts. To restart the parent process,
2349use the @code{file} command with the parent executable name as its
2350argument.
2351
2352You can use the @code{catch} command to make @value{GDBN} stop whenever
2353a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
2354Catchpoints, ,Setting catchpoints}.
c906108c 2355
6d2ebf8b 2356@node Stopping
c906108c
SS
2357@chapter Stopping and Continuing
2358
2359The principal purposes of using a debugger are so that you can stop your
2360program before it terminates; or so that, if your program runs into
2361trouble, you can investigate and find out why.
2362
7a292a7a
SS
2363Inside @value{GDBN}, your program may stop for any of several reasons,
2364such as a signal, a breakpoint, or reaching a new line after a
2365@value{GDBN} command such as @code{step}. You may then examine and
2366change variables, set new breakpoints or remove old ones, and then
2367continue execution. Usually, the messages shown by @value{GDBN} provide
2368ample explanation of the status of your program---but you can also
2369explicitly request this information at any time.
c906108c
SS
2370
2371@table @code
2372@kindex info program
2373@item info program
2374Display information about the status of your program: whether it is
7a292a7a 2375running or not, what process it is, and why it stopped.
c906108c
SS
2376@end table
2377
2378@menu
2379* Breakpoints:: Breakpoints, watchpoints, and catchpoints
2380* Continuing and Stepping:: Resuming execution
c906108c 2381* Signals:: Signals
c906108c 2382* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
2383@end menu
2384
6d2ebf8b 2385@node Breakpoints
c906108c
SS
2386@section Breakpoints, watchpoints, and catchpoints
2387
2388@cindex breakpoints
2389A @dfn{breakpoint} makes your program stop whenever a certain point in
2390the program is reached. For each breakpoint, you can add conditions to
2391control in finer detail whether your program stops. You can set
2392breakpoints with the @code{break} command and its variants (@pxref{Set
2393Breaks, ,Setting breakpoints}), to specify the place where your program
2394should stop by line number, function name or exact address in the
2395program.
2396
2397In HP-UX, SunOS 4.x, SVR4, and Alpha OSF/1 configurations, you can set
2398breakpoints in shared libraries before the executable is run. There is
2399a minor limitation on HP-UX systems: you must wait until the executable
2400is run in order to set breakpoints in shared library routines that are
2401not called directly by the program (for example, routines that are
2402arguments in a @code{pthread_create} call).
2403
2404@cindex watchpoints
2405@cindex memory tracing
2406@cindex breakpoint on memory address
2407@cindex breakpoint on variable modification
2408A @dfn{watchpoint} is a special breakpoint that stops your program
2409when the value of an expression changes. You must use a different
2410command to set watchpoints (@pxref{Set Watchpoints, ,Setting
2411watchpoints}), but aside from that, you can manage a watchpoint like
2412any other breakpoint: you enable, disable, and delete both breakpoints
2413and watchpoints using the same commands.
2414
2415You can arrange to have values from your program displayed automatically
2416whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
2417Automatic display}.
2418
2419@cindex catchpoints
2420@cindex breakpoint on events
2421A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 2422when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
2423exception or the loading of a library. As with watchpoints, you use a
2424different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
2425catchpoints}), but aside from that, you can manage a catchpoint like any
2426other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 2427@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
2428
2429@cindex breakpoint numbers
2430@cindex numbers for breakpoints
2431@value{GDBN} assigns a number to each breakpoint, watchpoint, or
2432catchpoint when you create it; these numbers are successive integers
2433starting with one. In many of the commands for controlling various
2434features of breakpoints you use the breakpoint number to say which
2435breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
2436@dfn{disabled}; if disabled, it has no effect on your program until you
2437enable it again.
2438
c5394b80
JM
2439@cindex breakpoint ranges
2440@cindex ranges of breakpoints
2441Some @value{GDBN} commands accept a range of breakpoints on which to
2442operate. A breakpoint range is either a single breakpoint number, like
2443@samp{5}, or two such numbers, in increasing order, separated by a
2444hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
2445all breakpoint in that range are operated on.
2446
c906108c
SS
2447@menu
2448* Set Breaks:: Setting breakpoints
2449* Set Watchpoints:: Setting watchpoints
2450* Set Catchpoints:: Setting catchpoints
2451* Delete Breaks:: Deleting breakpoints
2452* Disabling:: Disabling breakpoints
2453* Conditions:: Break conditions
2454* Break Commands:: Breakpoint command lists
c906108c 2455* Breakpoint Menus:: Breakpoint menus
d4f3574e 2456* Error in Breakpoints:: ``Cannot insert breakpoints''
e4d5f7e1 2457* Breakpoint related warnings:: ``Breakpoint address adjusted...''
c906108c
SS
2458@end menu
2459
6d2ebf8b 2460@node Set Breaks
c906108c
SS
2461@subsection Setting breakpoints
2462
5d161b24 2463@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
2464@c consider in particular declaration with/without initialization.
2465@c
2466@c FIXME 2 is there stuff on this already? break at fun start, already init?
2467
2468@kindex break
41afff9a
EZ
2469@kindex b @r{(@code{break})}
2470@vindex $bpnum@r{, convenience variable}
c906108c
SS
2471@cindex latest breakpoint
2472Breakpoints are set with the @code{break} command (abbreviated
5d161b24 2473@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 2474number of the breakpoint you've set most recently; see @ref{Convenience
c906108c
SS
2475Vars,, Convenience variables}, for a discussion of what you can do with
2476convenience variables.
2477
2478You have several ways to say where the breakpoint should go.
2479
2480@table @code
2481@item break @var{function}
5d161b24 2482Set a breakpoint at entry to function @var{function}.
c906108c 2483When using source languages that permit overloading of symbols, such as
b37052ae 2484C@t{++}, @var{function} may refer to more than one possible place to break.
c906108c 2485@xref{Breakpoint Menus,,Breakpoint menus}, for a discussion of that situation.
c906108c
SS
2486
2487@item break +@var{offset}
2488@itemx break -@var{offset}
2489Set a breakpoint some number of lines forward or back from the position
d4f3574e 2490at which execution stopped in the currently selected @dfn{stack frame}.
2df3850c 2491(@xref{Frames, ,Frames}, for a description of stack frames.)
c906108c
SS
2492
2493@item break @var{linenum}
2494Set a breakpoint at line @var{linenum} in the current source file.
d4f3574e
SS
2495The current source file is the last file whose source text was printed.
2496The breakpoint will stop your program just before it executes any of the
c906108c
SS
2497code on that line.
2498
2499@item break @var{filename}:@var{linenum}
2500Set a breakpoint at line @var{linenum} in source file @var{filename}.
2501
2502@item break @var{filename}:@var{function}
2503Set a breakpoint at entry to function @var{function} found in file
2504@var{filename}. Specifying a file name as well as a function name is
2505superfluous except when multiple files contain similarly named
2506functions.
2507
2508@item break *@var{address}
2509Set a breakpoint at address @var{address}. You can use this to set
2510breakpoints in parts of your program which do not have debugging
2511information or source files.
2512
2513@item break
2514When called without any arguments, @code{break} sets a breakpoint at
2515the next instruction to be executed in the selected stack frame
2516(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
2517innermost, this makes your program stop as soon as control
2518returns to that frame. This is similar to the effect of a
2519@code{finish} command in the frame inside the selected frame---except
2520that @code{finish} does not leave an active breakpoint. If you use
2521@code{break} without an argument in the innermost frame, @value{GDBN} stops
2522the next time it reaches the current location; this may be useful
2523inside loops.
2524
2525@value{GDBN} normally ignores breakpoints when it resumes execution, until at
2526least one instruction has been executed. If it did not do this, you
2527would be unable to proceed past a breakpoint without first disabling the
2528breakpoint. This rule applies whether or not the breakpoint already
2529existed when your program stopped.
2530
2531@item break @dots{} if @var{cond}
2532Set a breakpoint with condition @var{cond}; evaluate the expression
2533@var{cond} each time the breakpoint is reached, and stop only if the
2534value is nonzero---that is, if @var{cond} evaluates as true.
2535@samp{@dots{}} stands for one of the possible arguments described
2536above (or no argument) specifying where to break. @xref{Conditions,
2537,Break conditions}, for more information on breakpoint conditions.
2538
2539@kindex tbreak
2540@item tbreak @var{args}
2541Set a breakpoint enabled only for one stop. @var{args} are the
2542same as for the @code{break} command, and the breakpoint is set in the same
2543way, but the breakpoint is automatically deleted after the first time your
2544program stops there. @xref{Disabling, ,Disabling breakpoints}.
2545
c906108c
SS
2546@kindex hbreak
2547@item hbreak @var{args}
d4f3574e
SS
2548Set a hardware-assisted breakpoint. @var{args} are the same as for the
2549@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
2550breakpoint requires hardware support and some target hardware may not
2551have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
2552debugging, so you can set a breakpoint at an instruction without
2553changing the instruction. This can be used with the new trap-generation
2554provided by SPARClite DSU and some x86-based targets. These targets
2555will generate traps when a program accesses some data or instruction
2556address that is assigned to the debug registers. However the hardware
2557breakpoint registers can take a limited number of breakpoints. For
2558example, on the DSU, only two data breakpoints can be set at a time, and
2559@value{GDBN} will reject this command if more than two are used. Delete
2560or disable unused hardware breakpoints before setting new ones
2561(@pxref{Disabling, ,Disabling}). @xref{Conditions, ,Break conditions}.
501eef12
AC
2562@xref{set remote hardware-breakpoint-limit}.
2563
c906108c
SS
2564
2565@kindex thbreak
2566@item thbreak @var{args}
2567Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
2568are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 2569the same way. However, like the @code{tbreak} command,
c906108c
SS
2570the breakpoint is automatically deleted after the
2571first time your program stops there. Also, like the @code{hbreak}
5d161b24
DB
2572command, the breakpoint requires hardware support and some target hardware
2573may not have this support. @xref{Disabling, ,Disabling breakpoints}.
d4f3574e 2574See also @ref{Conditions, ,Break conditions}.
c906108c
SS
2575
2576@kindex rbreak
2577@cindex regular expression
2578@item rbreak @var{regex}
c906108c 2579Set breakpoints on all functions matching the regular expression
11cf8741
JM
2580@var{regex}. This command sets an unconditional breakpoint on all
2581matches, printing a list of all breakpoints it set. Once these
2582breakpoints are set, they are treated just like the breakpoints set with
2583the @code{break} command. You can delete them, disable them, or make
2584them conditional the same way as any other breakpoint.
2585
2586The syntax of the regular expression is the standard one used with tools
2587like @file{grep}. Note that this is different from the syntax used by
2588shells, so for instance @code{foo*} matches all functions that include
2589an @code{fo} followed by zero or more @code{o}s. There is an implicit
2590@code{.*} leading and trailing the regular expression you supply, so to
2591match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 2592
f7dc1244 2593@cindex non-member C@t{++} functions, set breakpoint in
b37052ae 2594When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
2595breakpoints on overloaded functions that are not members of any special
2596classes.
c906108c 2597
f7dc1244
EZ
2598@cindex set breakpoints on all functions
2599The @code{rbreak} command can be used to set breakpoints in
2600@strong{all} the functions in a program, like this:
2601
2602@smallexample
2603(@value{GDBP}) rbreak .
2604@end smallexample
2605
c906108c
SS
2606@kindex info breakpoints
2607@cindex @code{$_} and @code{info breakpoints}
2608@item info breakpoints @r{[}@var{n}@r{]}
2609@itemx info break @r{[}@var{n}@r{]}
2610@itemx info watchpoints @r{[}@var{n}@r{]}
2611Print a table of all breakpoints, watchpoints, and catchpoints set and
2612not deleted, with the following columns for each breakpoint:
2613
2614@table @emph
2615@item Breakpoint Numbers
2616@item Type
2617Breakpoint, watchpoint, or catchpoint.
2618@item Disposition
2619Whether the breakpoint is marked to be disabled or deleted when hit.
2620@item Enabled or Disabled
2621Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
2622that are not enabled.
2623@item Address
2650777c
JJ
2624Where the breakpoint is in your program, as a memory address. If the
2625breakpoint is pending (see below for details) on a future load of a shared library, the address
2626will be listed as @samp{<PENDING>}.
c906108c
SS
2627@item What
2628Where the breakpoint is in the source for your program, as a file and
2650777c
JJ
2629line number. For a pending breakpoint, the original string passed to
2630the breakpoint command will be listed as it cannot be resolved until
2631the appropriate shared library is loaded in the future.
c906108c
SS
2632@end table
2633
2634@noindent
2635If a breakpoint is conditional, @code{info break} shows the condition on
2636the line following the affected breakpoint; breakpoint commands, if any,
2650777c
JJ
2637are listed after that. A pending breakpoint is allowed to have a condition
2638specified for it. The condition is not parsed for validity until a shared
2639library is loaded that allows the pending breakpoint to resolve to a
2640valid location.
c906108c
SS
2641
2642@noindent
2643@code{info break} with a breakpoint
2644number @var{n} as argument lists only that breakpoint. The
2645convenience variable @code{$_} and the default examining-address for
2646the @code{x} command are set to the address of the last breakpoint
5d161b24 2647listed (@pxref{Memory, ,Examining memory}).
c906108c
SS
2648
2649@noindent
2650@code{info break} displays a count of the number of times the breakpoint
2651has been hit. This is especially useful in conjunction with the
2652@code{ignore} command. You can ignore a large number of breakpoint
2653hits, look at the breakpoint info to see how many times the breakpoint
2654was hit, and then run again, ignoring one less than that number. This
2655will get you quickly to the last hit of that breakpoint.
2656@end table
2657
2658@value{GDBN} allows you to set any number of breakpoints at the same place in
2659your program. There is nothing silly or meaningless about this. When
2660the breakpoints are conditional, this is even useful
2661(@pxref{Conditions, ,Break conditions}).
2662
2650777c 2663@cindex pending breakpoints
dd79a6cf
JJ
2664If a specified breakpoint location cannot be found, it may be due to the fact
2665that the location is in a shared library that is yet to be loaded. In such
2666a case, you may want @value{GDBN} to create a special breakpoint (known as
2667a @dfn{pending breakpoint}) that
2668attempts to resolve itself in the future when an appropriate shared library
2669gets loaded.
2670
2671Pending breakpoints are useful to set at the start of your
2650777c
JJ
2672@value{GDBN} session for locations that you know will be dynamically loaded
2673later by the program being debugged. When shared libraries are loaded,
dd79a6cf
JJ
2674a check is made to see if the load resolves any pending breakpoint locations.
2675If a pending breakpoint location gets resolved,
2676a regular breakpoint is created and the original pending breakpoint is removed.
2677
2678@value{GDBN} provides some additional commands for controlling pending
2679breakpoint support:
2680
2681@kindex set breakpoint pending
2682@kindex show breakpoint pending
2683@table @code
2684@item set breakpoint pending auto
2685This is the default behavior. When @value{GDBN} cannot find the breakpoint
2686location, it queries you whether a pending breakpoint should be created.
2687
2688@item set breakpoint pending on
2689This indicates that an unrecognized breakpoint location should automatically
2690result in a pending breakpoint being created.
2691
2692@item set breakpoint pending off
2693This indicates that pending breakpoints are not to be created. Any
2694unrecognized breakpoint location results in an error. This setting does
2695not affect any pending breakpoints previously created.
2696
2697@item show breakpoint pending
2698Show the current behavior setting for creating pending breakpoints.
2699@end table
2650777c 2700
649e03f6
RM
2701@cindex operations allowed on pending breakpoints
2702Normal breakpoint operations apply to pending breakpoints as well. You may
2703specify a condition for a pending breakpoint and/or commands to run when the
2650777c
JJ
2704breakpoint is reached. You can also enable or disable
2705the pending breakpoint. When you specify a condition for a pending breakpoint,
2706the parsing of the condition will be deferred until the point where the
2707pending breakpoint location is resolved. Disabling a pending breakpoint
2708tells @value{GDBN} to not attempt to resolve the breakpoint on any subsequent
2709shared library load. When a pending breakpoint is re-enabled,
649e03f6 2710@value{GDBN} checks to see if the location is already resolved.
2650777c
JJ
2711This is done because any number of shared library loads could have
2712occurred since the time the breakpoint was disabled and one or more
2713of these loads could resolve the location.
2714
c906108c
SS
2715@cindex negative breakpoint numbers
2716@cindex internal @value{GDBN} breakpoints
eb12ee30
AC
2717@value{GDBN} itself sometimes sets breakpoints in your program for
2718special purposes, such as proper handling of @code{longjmp} (in C
2719programs). These internal breakpoints are assigned negative numbers,
2720starting with @code{-1}; @samp{info breakpoints} does not display them.
c906108c 2721You can see these breakpoints with the @value{GDBN} maintenance command
eb12ee30 2722@samp{maint info breakpoints} (@pxref{maint info breakpoints}).
c906108c
SS
2723
2724
6d2ebf8b 2725@node Set Watchpoints
c906108c
SS
2726@subsection Setting watchpoints
2727
2728@cindex setting watchpoints
2729@cindex software watchpoints
2730@cindex hardware watchpoints
2731You can use a watchpoint to stop execution whenever the value of an
2732expression changes, without having to predict a particular place where
2733this may happen.
2734
2735Depending on your system, watchpoints may be implemented in software or
2df3850c 2736hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
2737program and testing the variable's value each time, which is hundreds of
2738times slower than normal execution. (But this may still be worth it, to
2739catch errors where you have no clue what part of your program is the
2740culprit.)
2741
1104b9e7 2742On some systems, such as HP-UX, @sc{gnu}/Linux and some other x86-based targets,
2df3850c 2743@value{GDBN} includes support for
c906108c
SS
2744hardware watchpoints, which do not slow down the running of your
2745program.
2746
2747@table @code
2748@kindex watch
2749@item watch @var{expr}
2750Set a watchpoint for an expression. @value{GDBN} will break when @var{expr}
2751is written into by the program and its value changes.
2752
2753@kindex rwatch
2754@item rwatch @var{expr}
2755Set a watchpoint that will break when watch @var{expr} is read by the program.
c906108c
SS
2756
2757@kindex awatch
2758@item awatch @var{expr}
2df3850c 2759Set a watchpoint that will break when @var{expr} is either read or written into
7be570e7 2760by the program.
c906108c
SS
2761
2762@kindex info watchpoints
2763@item info watchpoints
2764This command prints a list of watchpoints, breakpoints, and catchpoints;
2765it is the same as @code{info break}.
2766@end table
2767
2768@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
2769watchpoints execute very quickly, and the debugger reports a change in
2770value at the exact instruction where the change occurs. If @value{GDBN}
2771cannot set a hardware watchpoint, it sets a software watchpoint, which
2772executes more slowly and reports the change in value at the next
2773statement, not the instruction, after the change occurs.
2774
2775When you issue the @code{watch} command, @value{GDBN} reports
2776
474c8240 2777@smallexample
c906108c 2778Hardware watchpoint @var{num}: @var{expr}
474c8240 2779@end smallexample
c906108c
SS
2780
2781@noindent
2782if it was able to set a hardware watchpoint.
2783
7be570e7
JM
2784Currently, the @code{awatch} and @code{rwatch} commands can only set
2785hardware watchpoints, because accesses to data that don't change the
2786value of the watched expression cannot be detected without examining
2787every instruction as it is being executed, and @value{GDBN} does not do
2788that currently. If @value{GDBN} finds that it is unable to set a
2789hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
2790will print a message like this:
2791
2792@smallexample
2793Expression cannot be implemented with read/access watchpoint.
2794@end smallexample
2795
2796Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
2797data type of the watched expression is wider than what a hardware
2798watchpoint on the target machine can handle. For example, some systems
2799can only watch regions that are up to 4 bytes wide; on such systems you
2800cannot set hardware watchpoints for an expression that yields a
2801double-precision floating-point number (which is typically 8 bytes
2802wide). As a work-around, it might be possible to break the large region
2803into a series of smaller ones and watch them with separate watchpoints.
2804
2805If you set too many hardware watchpoints, @value{GDBN} might be unable
2806to insert all of them when you resume the execution of your program.
2807Since the precise number of active watchpoints is unknown until such
2808time as the program is about to be resumed, @value{GDBN} might not be
2809able to warn you about this when you set the watchpoints, and the
2810warning will be printed only when the program is resumed:
2811
2812@smallexample
2813Hardware watchpoint @var{num}: Could not insert watchpoint
2814@end smallexample
2815
2816@noindent
2817If this happens, delete or disable some of the watchpoints.
2818
2819The SPARClite DSU will generate traps when a program accesses some data
2820or instruction address that is assigned to the debug registers. For the
2821data addresses, DSU facilitates the @code{watch} command. However the
2822hardware breakpoint registers can only take two data watchpoints, and
2823both watchpoints must be the same kind. For example, you can set two
2824watchpoints with @code{watch} commands, two with @code{rwatch} commands,
2825@strong{or} two with @code{awatch} commands, but you cannot set one
2826watchpoint with one command and the other with a different command.
c906108c
SS
2827@value{GDBN} will reject the command if you try to mix watchpoints.
2828Delete or disable unused watchpoint commands before setting new ones.
2829
2830If you call a function interactively using @code{print} or @code{call},
2df3850c 2831any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
2832kind of breakpoint or the call completes.
2833
7be570e7
JM
2834@value{GDBN} automatically deletes watchpoints that watch local
2835(automatic) variables, or expressions that involve such variables, when
2836they go out of scope, that is, when the execution leaves the block in
2837which these variables were defined. In particular, when the program
2838being debugged terminates, @emph{all} local variables go out of scope,
2839and so only watchpoints that watch global variables remain set. If you
2840rerun the program, you will need to set all such watchpoints again. One
2841way of doing that would be to set a code breakpoint at the entry to the
2842@code{main} function and when it breaks, set all the watchpoints.
2843
c906108c
SS
2844@quotation
2845@cindex watchpoints and threads
2846@cindex threads and watchpoints
c906108c
SS
2847@emph{Warning:} In multi-thread programs, watchpoints have only limited
2848usefulness. With the current watchpoint implementation, @value{GDBN}
2849can only watch the value of an expression @emph{in a single thread}. If
2850you are confident that the expression can only change due to the current
2851thread's activity (and if you are also confident that no other thread
2852can become current), then you can use watchpoints as usual. However,
2853@value{GDBN} may not notice when a non-current thread's activity changes
2854the expression.
53a5351d 2855
d4f3574e 2856@c FIXME: this is almost identical to the previous paragraph.
53a5351d
JM
2857@emph{HP-UX Warning:} In multi-thread programs, software watchpoints
2858have only limited usefulness. If @value{GDBN} creates a software
2859watchpoint, it can only watch the value of an expression @emph{in a
2860single thread}. If you are confident that the expression can only
2861change due to the current thread's activity (and if you are also
2862confident that no other thread can become current), then you can use
2863software watchpoints as usual. However, @value{GDBN} may not notice
2864when a non-current thread's activity changes the expression. (Hardware
2865watchpoints, in contrast, watch an expression in all threads.)
c906108c 2866@end quotation
c906108c 2867
501eef12
AC
2868@xref{set remote hardware-watchpoint-limit}.
2869
6d2ebf8b 2870@node Set Catchpoints
c906108c 2871@subsection Setting catchpoints
d4f3574e 2872@cindex catchpoints, setting
c906108c
SS
2873@cindex exception handlers
2874@cindex event handling
2875
2876You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 2877kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
2878shared library. Use the @code{catch} command to set a catchpoint.
2879
2880@table @code
2881@kindex catch
2882@item catch @var{event}
2883Stop when @var{event} occurs. @var{event} can be any of the following:
2884@table @code
2885@item throw
4644b6e3 2886@cindex stop on C@t{++} exceptions
b37052ae 2887The throwing of a C@t{++} exception.
c906108c
SS
2888
2889@item catch
b37052ae 2890The catching of a C@t{++} exception.
c906108c
SS
2891
2892@item exec
4644b6e3 2893@cindex break on fork/exec
c906108c
SS
2894A call to @code{exec}. This is currently only available for HP-UX.
2895
2896@item fork
c906108c
SS
2897A call to @code{fork}. This is currently only available for HP-UX.
2898
2899@item vfork
c906108c
SS
2900A call to @code{vfork}. This is currently only available for HP-UX.
2901
2902@item load
2903@itemx load @var{libname}
4644b6e3 2904@cindex break on load/unload of shared library
c906108c
SS
2905The dynamic loading of any shared library, or the loading of the library
2906@var{libname}. This is currently only available for HP-UX.
2907
2908@item unload
2909@itemx unload @var{libname}
c906108c
SS
2910The unloading of any dynamically loaded shared library, or the unloading
2911of the library @var{libname}. This is currently only available for HP-UX.
2912@end table
2913
2914@item tcatch @var{event}
2915Set a catchpoint that is enabled only for one stop. The catchpoint is
2916automatically deleted after the first time the event is caught.
2917
2918@end table
2919
2920Use the @code{info break} command to list the current catchpoints.
2921
b37052ae 2922There are currently some limitations to C@t{++} exception handling
c906108c
SS
2923(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
2924
2925@itemize @bullet
2926@item
2927If you call a function interactively, @value{GDBN} normally returns
2928control to you when the function has finished executing. If the call
2929raises an exception, however, the call may bypass the mechanism that
2930returns control to you and cause your program either to abort or to
2931simply continue running until it hits a breakpoint, catches a signal
2932that @value{GDBN} is listening for, or exits. This is the case even if
2933you set a catchpoint for the exception; catchpoints on exceptions are
2934disabled within interactive calls.
2935
2936@item
2937You cannot raise an exception interactively.
2938
2939@item
2940You cannot install an exception handler interactively.
2941@end itemize
2942
2943@cindex raise exceptions
2944Sometimes @code{catch} is not the best way to debug exception handling:
2945if you need to know exactly where an exception is raised, it is better to
2946stop @emph{before} the exception handler is called, since that way you
2947can see the stack before any unwinding takes place. If you set a
2948breakpoint in an exception handler instead, it may not be easy to find
2949out where the exception was raised.
2950
2951To stop just before an exception handler is called, you need some
b37052ae 2952knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
2953raised by calling a library function named @code{__raise_exception}
2954which has the following ANSI C interface:
2955
474c8240 2956@smallexample
c906108c 2957 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
2958 @var{id} is the exception identifier. */
2959 void __raise_exception (void **addr, void *id);
474c8240 2960@end smallexample
c906108c
SS
2961
2962@noindent
2963To make the debugger catch all exceptions before any stack
2964unwinding takes place, set a breakpoint on @code{__raise_exception}
2965(@pxref{Breakpoints, ,Breakpoints; watchpoints; and exceptions}).
2966
2967With a conditional breakpoint (@pxref{Conditions, ,Break conditions})
2968that depends on the value of @var{id}, you can stop your program when
2969a specific exception is raised. You can use multiple conditional
2970breakpoints to stop your program when any of a number of exceptions are
2971raised.
2972
2973
6d2ebf8b 2974@node Delete Breaks
c906108c
SS
2975@subsection Deleting breakpoints
2976
2977@cindex clearing breakpoints, watchpoints, catchpoints
2978@cindex deleting breakpoints, watchpoints, catchpoints
2979It is often necessary to eliminate a breakpoint, watchpoint, or
2980catchpoint once it has done its job and you no longer want your program
2981to stop there. This is called @dfn{deleting} the breakpoint. A
2982breakpoint that has been deleted no longer exists; it is forgotten.
2983
2984With the @code{clear} command you can delete breakpoints according to
2985where they are in your program. With the @code{delete} command you can
2986delete individual breakpoints, watchpoints, or catchpoints by specifying
2987their breakpoint numbers.
2988
2989It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
2990automatically ignores breakpoints on the first instruction to be executed
2991when you continue execution without changing the execution address.
2992
2993@table @code
2994@kindex clear
2995@item clear
2996Delete any breakpoints at the next instruction to be executed in the
2997selected stack frame (@pxref{Selection, ,Selecting a frame}). When
2998the innermost frame is selected, this is a good way to delete a
2999breakpoint where your program just stopped.
3000
3001@item clear @var{function}
3002@itemx clear @var{filename}:@var{function}
3003Delete any breakpoints set at entry to the function @var{function}.
3004
3005@item clear @var{linenum}
3006@itemx clear @var{filename}:@var{linenum}
3007Delete any breakpoints set at or within the code of the specified line.
3008
3009@cindex delete breakpoints
3010@kindex delete
41afff9a 3011@kindex d @r{(@code{delete})}
c5394b80
JM
3012@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
3013Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
3014ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
3015breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
3016confirm off}). You can abbreviate this command as @code{d}.
3017@end table
3018
6d2ebf8b 3019@node Disabling
c906108c
SS
3020@subsection Disabling breakpoints
3021
4644b6e3 3022@cindex enable/disable a breakpoint
c906108c
SS
3023Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
3024prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
3025it had been deleted, but remembers the information on the breakpoint so
3026that you can @dfn{enable} it again later.
3027
3028You disable and enable breakpoints, watchpoints, and catchpoints with
3029the @code{enable} and @code{disable} commands, optionally specifying one
3030or more breakpoint numbers as arguments. Use @code{info break} or
3031@code{info watch} to print a list of breakpoints, watchpoints, and
3032catchpoints if you do not know which numbers to use.
3033
3034A breakpoint, watchpoint, or catchpoint can have any of four different
3035states of enablement:
3036
3037@itemize @bullet
3038@item
3039Enabled. The breakpoint stops your program. A breakpoint set
3040with the @code{break} command starts out in this state.
3041@item
3042Disabled. The breakpoint has no effect on your program.
3043@item
3044Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 3045disabled.
c906108c
SS
3046@item
3047Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
3048immediately after it does so it is deleted permanently. A breakpoint
3049set with the @code{tbreak} command starts out in this state.
c906108c
SS
3050@end itemize
3051
3052You can use the following commands to enable or disable breakpoints,
3053watchpoints, and catchpoints:
3054
3055@table @code
c906108c 3056@kindex disable
41afff9a 3057@kindex dis @r{(@code{disable})}
c5394b80 3058@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
3059Disable the specified breakpoints---or all breakpoints, if none are
3060listed. A disabled breakpoint has no effect but is not forgotten. All
3061options such as ignore-counts, conditions and commands are remembered in
3062case the breakpoint is enabled again later. You may abbreviate
3063@code{disable} as @code{dis}.
3064
c906108c 3065@kindex enable
c5394b80 3066@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
3067Enable the specified breakpoints (or all defined breakpoints). They
3068become effective once again in stopping your program.
3069
c5394b80 3070@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
3071Enable the specified breakpoints temporarily. @value{GDBN} disables any
3072of these breakpoints immediately after stopping your program.
3073
c5394b80 3074@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
3075Enable the specified breakpoints to work once, then die. @value{GDBN}
3076deletes any of these breakpoints as soon as your program stops there.
3077@end table
3078
d4f3574e
SS
3079@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
3080@c confusing: tbreak is also initially enabled.
c906108c
SS
3081Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
3082,Setting breakpoints}), breakpoints that you set are initially enabled;
3083subsequently, they become disabled or enabled only when you use one of
3084the commands above. (The command @code{until} can set and delete a
3085breakpoint of its own, but it does not change the state of your other
3086breakpoints; see @ref{Continuing and Stepping, ,Continuing and
3087stepping}.)
3088
6d2ebf8b 3089@node Conditions
c906108c
SS
3090@subsection Break conditions
3091@cindex conditional breakpoints
3092@cindex breakpoint conditions
3093
3094@c FIXME what is scope of break condition expr? Context where wanted?
5d161b24 3095@c in particular for a watchpoint?
c906108c
SS
3096The simplest sort of breakpoint breaks every time your program reaches a
3097specified place. You can also specify a @dfn{condition} for a
3098breakpoint. A condition is just a Boolean expression in your
3099programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
3100a condition evaluates the expression each time your program reaches it,
3101and your program stops only if the condition is @emph{true}.
3102
3103This is the converse of using assertions for program validation; in that
3104situation, you want to stop when the assertion is violated---that is,
3105when the condition is false. In C, if you want to test an assertion expressed
3106by the condition @var{assert}, you should set the condition
3107@samp{! @var{assert}} on the appropriate breakpoint.
3108
3109Conditions are also accepted for watchpoints; you may not need them,
3110since a watchpoint is inspecting the value of an expression anyhow---but
3111it might be simpler, say, to just set a watchpoint on a variable name,
3112and specify a condition that tests whether the new value is an interesting
3113one.
3114
3115Break conditions can have side effects, and may even call functions in
3116your program. This can be useful, for example, to activate functions
3117that log program progress, or to use your own print functions to
3118format special data structures. The effects are completely predictable
3119unless there is another enabled breakpoint at the same address. (In
3120that case, @value{GDBN} might see the other breakpoint first and stop your
3121program without checking the condition of this one.) Note that
d4f3574e
SS
3122breakpoint commands are usually more convenient and flexible than break
3123conditions for the
c906108c
SS
3124purpose of performing side effects when a breakpoint is reached
3125(@pxref{Break Commands, ,Breakpoint command lists}).
3126
3127Break conditions can be specified when a breakpoint is set, by using
3128@samp{if} in the arguments to the @code{break} command. @xref{Set
3129Breaks, ,Setting breakpoints}. They can also be changed at any time
3130with the @code{condition} command.
53a5351d 3131
c906108c
SS
3132You can also use the @code{if} keyword with the @code{watch} command.
3133The @code{catch} command does not recognize the @code{if} keyword;
3134@code{condition} is the only way to impose a further condition on a
3135catchpoint.
c906108c
SS
3136
3137@table @code
3138@kindex condition
3139@item condition @var{bnum} @var{expression}
3140Specify @var{expression} as the break condition for breakpoint,
3141watchpoint, or catchpoint number @var{bnum}. After you set a condition,
3142breakpoint @var{bnum} stops your program only if the value of
3143@var{expression} is true (nonzero, in C). When you use
3144@code{condition}, @value{GDBN} checks @var{expression} immediately for
3145syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
3146referents in the context of your breakpoint. If @var{expression} uses
3147symbols not referenced in the context of the breakpoint, @value{GDBN}
3148prints an error message:
3149
474c8240 3150@smallexample
d4f3574e 3151No symbol "foo" in current context.
474c8240 3152@end smallexample
d4f3574e
SS
3153
3154@noindent
c906108c
SS
3155@value{GDBN} does
3156not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
3157command (or a command that sets a breakpoint with a condition, like
3158@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
3159
3160@item condition @var{bnum}
3161Remove the condition from breakpoint number @var{bnum}. It becomes
3162an ordinary unconditional breakpoint.
3163@end table
3164
3165@cindex ignore count (of breakpoint)
3166A special case of a breakpoint condition is to stop only when the
3167breakpoint has been reached a certain number of times. This is so
3168useful that there is a special way to do it, using the @dfn{ignore
3169count} of the breakpoint. Every breakpoint has an ignore count, which
3170is an integer. Most of the time, the ignore count is zero, and
3171therefore has no effect. But if your program reaches a breakpoint whose
3172ignore count is positive, then instead of stopping, it just decrements
3173the ignore count by one and continues. As a result, if the ignore count
3174value is @var{n}, the breakpoint does not stop the next @var{n} times
3175your program reaches it.
3176
3177@table @code
3178@kindex ignore
3179@item ignore @var{bnum} @var{count}
3180Set the ignore count of breakpoint number @var{bnum} to @var{count}.
3181The next @var{count} times the breakpoint is reached, your program's
3182execution does not stop; other than to decrement the ignore count, @value{GDBN}
3183takes no action.
3184
3185To make the breakpoint stop the next time it is reached, specify
3186a count of zero.
3187
3188When you use @code{continue} to resume execution of your program from a
3189breakpoint, you can specify an ignore count directly as an argument to
3190@code{continue}, rather than using @code{ignore}. @xref{Continuing and
3191Stepping,,Continuing and stepping}.
3192
3193If a breakpoint has a positive ignore count and a condition, the
3194condition is not checked. Once the ignore count reaches zero,
3195@value{GDBN} resumes checking the condition.
3196
3197You could achieve the effect of the ignore count with a condition such
3198as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
3199is decremented each time. @xref{Convenience Vars, ,Convenience
3200variables}.
3201@end table
3202
3203Ignore counts apply to breakpoints, watchpoints, and catchpoints.
3204
3205
6d2ebf8b 3206@node Break Commands
c906108c
SS
3207@subsection Breakpoint command lists
3208
3209@cindex breakpoint commands
3210You can give any breakpoint (or watchpoint or catchpoint) a series of
3211commands to execute when your program stops due to that breakpoint. For
3212example, you might want to print the values of certain expressions, or
3213enable other breakpoints.
3214
3215@table @code
3216@kindex commands
3217@kindex end
3218@item commands @r{[}@var{bnum}@r{]}
3219@itemx @dots{} @var{command-list} @dots{}
3220@itemx end
3221Specify a list of commands for breakpoint number @var{bnum}. The commands
3222themselves appear on the following lines. Type a line containing just
3223@code{end} to terminate the commands.
3224
3225To remove all commands from a breakpoint, type @code{commands} and
3226follow it immediately with @code{end}; that is, give no commands.
3227
3228With no @var{bnum} argument, @code{commands} refers to the last
3229breakpoint, watchpoint, or catchpoint set (not to the breakpoint most
3230recently encountered).
3231@end table
3232
3233Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
3234disabled within a @var{command-list}.
3235
3236You can use breakpoint commands to start your program up again. Simply
3237use the @code{continue} command, or @code{step}, or any other command
3238that resumes execution.
3239
3240Any other commands in the command list, after a command that resumes
3241execution, are ignored. This is because any time you resume execution
3242(even with a simple @code{next} or @code{step}), you may encounter
3243another breakpoint---which could have its own command list, leading to
3244ambiguities about which list to execute.
3245
3246@kindex silent
3247If the first command you specify in a command list is @code{silent}, the
3248usual message about stopping at a breakpoint is not printed. This may
3249be desirable for breakpoints that are to print a specific message and
3250then continue. If none of the remaining commands print anything, you
3251see no sign that the breakpoint was reached. @code{silent} is
3252meaningful only at the beginning of a breakpoint command list.
3253
3254The commands @code{echo}, @code{output}, and @code{printf} allow you to
3255print precisely controlled output, and are often useful in silent
3256breakpoints. @xref{Output, ,Commands for controlled output}.
3257
3258For example, here is how you could use breakpoint commands to print the
3259value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
3260
474c8240 3261@smallexample
c906108c
SS
3262break foo if x>0
3263commands
3264silent
3265printf "x is %d\n",x
3266cont
3267end
474c8240 3268@end smallexample
c906108c
SS
3269
3270One application for breakpoint commands is to compensate for one bug so
3271you can test for another. Put a breakpoint just after the erroneous line
3272of code, give it a condition to detect the case in which something
3273erroneous has been done, and give it commands to assign correct values
3274to any variables that need them. End with the @code{continue} command
3275so that your program does not stop, and start with the @code{silent}
3276command so that no output is produced. Here is an example:
3277
474c8240 3278@smallexample
c906108c
SS
3279break 403
3280commands
3281silent
3282set x = y + 4
3283cont
3284end
474c8240 3285@end smallexample
c906108c 3286
6d2ebf8b 3287@node Breakpoint Menus
c906108c
SS
3288@subsection Breakpoint menus
3289@cindex overloading
3290@cindex symbol overloading
3291
b383017d 3292Some programming languages (notably C@t{++} and Objective-C) permit a
b37303ee 3293single function name
c906108c
SS
3294to be defined several times, for application in different contexts.
3295This is called @dfn{overloading}. When a function name is overloaded,
3296@samp{break @var{function}} is not enough to tell @value{GDBN} where you want
3297a breakpoint. If you realize this is a problem, you can use
3298something like @samp{break @var{function}(@var{types})} to specify which
3299particular version of the function you want. Otherwise, @value{GDBN} offers
3300you a menu of numbered choices for different possible breakpoints, and
3301waits for your selection with the prompt @samp{>}. The first two
3302options are always @samp{[0] cancel} and @samp{[1] all}. Typing @kbd{1}
3303sets a breakpoint at each definition of @var{function}, and typing
3304@kbd{0} aborts the @code{break} command without setting any new
3305breakpoints.
3306
3307For example, the following session excerpt shows an attempt to set a
3308breakpoint at the overloaded symbol @code{String::after}.
3309We choose three particular definitions of that function name:
3310
3311@c FIXME! This is likely to change to show arg type lists, at least
3312@smallexample
3313@group
3314(@value{GDBP}) b String::after
3315[0] cancel
3316[1] all
3317[2] file:String.cc; line number:867
3318[3] file:String.cc; line number:860
3319[4] file:String.cc; line number:875
3320[5] file:String.cc; line number:853
3321[6] file:String.cc; line number:846
3322[7] file:String.cc; line number:735
3323> 2 4 6
3324Breakpoint 1 at 0xb26c: file String.cc, line 867.
3325Breakpoint 2 at 0xb344: file String.cc, line 875.
3326Breakpoint 3 at 0xafcc: file String.cc, line 846.
3327Multiple breakpoints were set.
3328Use the "delete" command to delete unwanted
3329 breakpoints.
3330(@value{GDBP})
3331@end group
3332@end smallexample
c906108c
SS
3333
3334@c @ifclear BARETARGET
6d2ebf8b 3335@node Error in Breakpoints
d4f3574e 3336@subsection ``Cannot insert breakpoints''
c906108c
SS
3337@c
3338@c FIXME!! 14/6/95 Is there a real example of this? Let's use it.
3339@c
d4f3574e
SS
3340Under some operating systems, breakpoints cannot be used in a program if
3341any other process is running that program. In this situation,
5d161b24 3342attempting to run or continue a program with a breakpoint causes
d4f3574e
SS
3343@value{GDBN} to print an error message:
3344
474c8240 3345@smallexample
d4f3574e
SS
3346Cannot insert breakpoints.
3347The same program may be running in another process.
474c8240 3348@end smallexample
d4f3574e
SS
3349
3350When this happens, you have three ways to proceed:
3351
3352@enumerate
3353@item
3354Remove or disable the breakpoints, then continue.
3355
3356@item
5d161b24 3357Suspend @value{GDBN}, and copy the file containing your program to a new
d4f3574e 3358name. Resume @value{GDBN} and use the @code{exec-file} command to specify
5d161b24 3359that @value{GDBN} should run your program under that name.
d4f3574e
SS
3360Then start your program again.
3361
3362@item
3363Relink your program so that the text segment is nonsharable, using the
3364linker option @samp{-N}. The operating system limitation may not apply
3365to nonsharable executables.
3366@end enumerate
c906108c
SS
3367@c @end ifclear
3368
d4f3574e
SS
3369A similar message can be printed if you request too many active
3370hardware-assisted breakpoints and watchpoints:
3371
3372@c FIXME: the precise wording of this message may change; the relevant
3373@c source change is not committed yet (Sep 3, 1999).
3374@smallexample
3375Stopped; cannot insert breakpoints.
3376You may have requested too many hardware breakpoints and watchpoints.
3377@end smallexample
3378
3379@noindent
3380This message is printed when you attempt to resume the program, since
3381only then @value{GDBN} knows exactly how many hardware breakpoints and
3382watchpoints it needs to insert.
3383
3384When this message is printed, you need to disable or remove some of the
3385hardware-assisted breakpoints and watchpoints, and then continue.
3386
1485d690
KB
3387@node Breakpoint related warnings
3388@subsection ``Breakpoint address adjusted...''
3389@cindex breakpoint address adjusted
3390
3391Some processor architectures place constraints on the addresses at
3392which breakpoints may be placed. For architectures thus constrained,
3393@value{GDBN} will attempt to adjust the breakpoint's address to comply
3394with the constraints dictated by the architecture.
3395
3396One example of such an architecture is the Fujitsu FR-V. The FR-V is
3397a VLIW architecture in which a number of RISC-like instructions may be
3398bundled together for parallel execution. The FR-V architecture
3399constrains the location of a breakpoint instruction within such a
3400bundle to the instruction with the lowest address. @value{GDBN}
3401honors this constraint by adjusting a breakpoint's address to the
3402first in the bundle.
3403
3404It is not uncommon for optimized code to have bundles which contain
3405instructions from different source statements, thus it may happen that
3406a breakpoint's address will be adjusted from one source statement to
3407another. Since this adjustment may significantly alter @value{GDBN}'s
3408breakpoint related behavior from what the user expects, a warning is
3409printed when the breakpoint is first set and also when the breakpoint
3410is hit.
3411
3412A warning like the one below is printed when setting a breakpoint
3413that's been subject to address adjustment:
3414
3415@smallexample
3416warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
3417@end smallexample
3418
3419Such warnings are printed both for user settable and @value{GDBN}'s
3420internal breakpoints. If you see one of these warnings, you should
3421verify that a breakpoint set at the adjusted address will have the
3422desired affect. If not, the breakpoint in question may be removed and
b383017d 3423other breakpoints may be set which will have the desired behavior.
1485d690
KB
3424E.g., it may be sufficient to place the breakpoint at a later
3425instruction. A conditional breakpoint may also be useful in some
3426cases to prevent the breakpoint from triggering too often.
3427
3428@value{GDBN} will also issue a warning when stopping at one of these
3429adjusted breakpoints:
3430
3431@smallexample
3432warning: Breakpoint 1 address previously adjusted from 0x00010414
3433to 0x00010410.
3434@end smallexample
3435
3436When this warning is encountered, it may be too late to take remedial
3437action except in cases where the breakpoint is hit earlier or more
3438frequently than expected.
d4f3574e 3439
6d2ebf8b 3440@node Continuing and Stepping
c906108c
SS
3441@section Continuing and stepping
3442
3443@cindex stepping
3444@cindex continuing
3445@cindex resuming execution
3446@dfn{Continuing} means resuming program execution until your program
3447completes normally. In contrast, @dfn{stepping} means executing just
3448one more ``step'' of your program, where ``step'' may mean either one
3449line of source code, or one machine instruction (depending on what
7a292a7a
SS
3450particular command you use). Either when continuing or when stepping,
3451your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
3452it stops due to a signal, you may want to use @code{handle}, or use
3453@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
3454
3455@table @code
3456@kindex continue
41afff9a
EZ
3457@kindex c @r{(@code{continue})}
3458@kindex fg @r{(resume foreground execution)}
c906108c
SS
3459@item continue @r{[}@var{ignore-count}@r{]}
3460@itemx c @r{[}@var{ignore-count}@r{]}
3461@itemx fg @r{[}@var{ignore-count}@r{]}
3462Resume program execution, at the address where your program last stopped;
3463any breakpoints set at that address are bypassed. The optional argument
3464@var{ignore-count} allows you to specify a further number of times to
3465ignore a breakpoint at this location; its effect is like that of
3466@code{ignore} (@pxref{Conditions, ,Break conditions}).
3467
3468The argument @var{ignore-count} is meaningful only when your program
3469stopped due to a breakpoint. At other times, the argument to
3470@code{continue} is ignored.
3471
d4f3574e
SS
3472The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
3473debugged program is deemed to be the foreground program) are provided
3474purely for convenience, and have exactly the same behavior as
3475@code{continue}.
c906108c
SS
3476@end table
3477
3478To resume execution at a different place, you can use @code{return}
3479(@pxref{Returning, ,Returning from a function}) to go back to the
3480calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
3481different address}) to go to an arbitrary location in your program.
3482
3483A typical technique for using stepping is to set a breakpoint
3484(@pxref{Breakpoints, ,Breakpoints; watchpoints; and catchpoints}) at the
3485beginning of the function or the section of your program where a problem
3486is believed to lie, run your program until it stops at that breakpoint,
3487and then step through the suspect area, examining the variables that are
3488interesting, until you see the problem happen.
3489
3490@table @code
3491@kindex step
41afff9a 3492@kindex s @r{(@code{step})}
c906108c
SS
3493@item step
3494Continue running your program until control reaches a different source
3495line, then stop it and return control to @value{GDBN}. This command is
3496abbreviated @code{s}.
3497
3498@quotation
3499@c "without debugging information" is imprecise; actually "without line
3500@c numbers in the debugging information". (gcc -g1 has debugging info but
3501@c not line numbers). But it seems complex to try to make that
3502@c distinction here.
3503@emph{Warning:} If you use the @code{step} command while control is
3504within a function that was compiled without debugging information,
3505execution proceeds until control reaches a function that does have
3506debugging information. Likewise, it will not step into a function which
3507is compiled without debugging information. To step through functions
3508without debugging information, use the @code{stepi} command, described
3509below.
3510@end quotation
3511
4a92d011
EZ
3512The @code{step} command only stops at the first instruction of a source
3513line. This prevents the multiple stops that could otherwise occur in
3514@code{switch} statements, @code{for} loops, etc. @code{step} continues
3515to stop if a function that has debugging information is called within
3516the line. In other words, @code{step} @emph{steps inside} any functions
3517called within the line.
c906108c 3518
d4f3574e
SS
3519Also, the @code{step} command only enters a function if there is line
3520number information for the function. Otherwise it acts like the
5d161b24 3521@code{next} command. This avoids problems when using @code{cc -gl}
c906108c 3522on MIPS machines. Previously, @code{step} entered subroutines if there
5d161b24 3523was any debugging information about the routine.
c906108c
SS
3524
3525@item step @var{count}
3526Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
3527breakpoint is reached, or a signal not related to stepping occurs before
3528@var{count} steps, stepping stops right away.
c906108c
SS
3529
3530@kindex next
41afff9a 3531@kindex n @r{(@code{next})}
c906108c
SS
3532@item next @r{[}@var{count}@r{]}
3533Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
3534This is similar to @code{step}, but function calls that appear within
3535the line of code are executed without stopping. Execution stops when
3536control reaches a different line of code at the original stack level
3537that was executing when you gave the @code{next} command. This command
3538is abbreviated @code{n}.
c906108c
SS
3539
3540An argument @var{count} is a repeat count, as for @code{step}.
3541
3542
3543@c FIX ME!! Do we delete this, or is there a way it fits in with
3544@c the following paragraph? --- Vctoria
3545@c
3546@c @code{next} within a function that lacks debugging information acts like
3547@c @code{step}, but any function calls appearing within the code of the
3548@c function are executed without stopping.
3549
d4f3574e
SS
3550The @code{next} command only stops at the first instruction of a
3551source line. This prevents multiple stops that could otherwise occur in
4a92d011 3552@code{switch} statements, @code{for} loops, etc.
c906108c 3553
b90a5f51
CF
3554@kindex set step-mode
3555@item set step-mode
3556@cindex functions without line info, and stepping
3557@cindex stepping into functions with no line info
3558@itemx set step-mode on
4a92d011 3559The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
3560stop at the first instruction of a function which contains no debug line
3561information rather than stepping over it.
3562
4a92d011
EZ
3563This is useful in cases where you may be interested in inspecting the
3564machine instructions of a function which has no symbolic info and do not
3565want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
3566
3567@item set step-mode off
4a92d011 3568Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
3569debug information. This is the default.
3570
c906108c
SS
3571@kindex finish
3572@item finish
3573Continue running until just after function in the selected stack frame
3574returns. Print the returned value (if any).
3575
3576Contrast this with the @code{return} command (@pxref{Returning,
3577,Returning from a function}).
3578
3579@kindex until
41afff9a 3580@kindex u @r{(@code{until})}
c906108c
SS
3581@item until
3582@itemx u
3583Continue running until a source line past the current line, in the
3584current stack frame, is reached. This command is used to avoid single
3585stepping through a loop more than once. It is like the @code{next}
3586command, except that when @code{until} encounters a jump, it
3587automatically continues execution until the program counter is greater
3588than the address of the jump.
3589
3590This means that when you reach the end of a loop after single stepping
3591though it, @code{until} makes your program continue execution until it
3592exits the loop. In contrast, a @code{next} command at the end of a loop
3593simply steps back to the beginning of the loop, which forces you to step
3594through the next iteration.
3595
3596@code{until} always stops your program if it attempts to exit the current
3597stack frame.
3598
3599@code{until} may produce somewhat counterintuitive results if the order
3600of machine code does not match the order of the source lines. For
3601example, in the following excerpt from a debugging session, the @code{f}
3602(@code{frame}) command shows that execution is stopped at line
3603@code{206}; yet when we use @code{until}, we get to line @code{195}:
3604
474c8240 3605@smallexample
c906108c
SS
3606(@value{GDBP}) f
3607#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
3608206 expand_input();
3609(@value{GDBP}) until
3610195 for ( ; argc > 0; NEXTARG) @{
474c8240 3611@end smallexample
c906108c
SS
3612
3613This happened because, for execution efficiency, the compiler had
3614generated code for the loop closure test at the end, rather than the
3615start, of the loop---even though the test in a C @code{for}-loop is
3616written before the body of the loop. The @code{until} command appeared
3617to step back to the beginning of the loop when it advanced to this
3618expression; however, it has not really gone to an earlier
3619statement---not in terms of the actual machine code.
3620
3621@code{until} with no argument works by means of single
3622instruction stepping, and hence is slower than @code{until} with an
3623argument.
3624
3625@item until @var{location}
3626@itemx u @var{location}
3627Continue running your program until either the specified location is
3628reached, or the current stack frame returns. @var{location} is any of
3629the forms of argument acceptable to @code{break} (@pxref{Set Breaks,
c60eb6f1
EZ
3630,Setting breakpoints}). This form of the command uses breakpoints, and
3631hence is quicker than @code{until} without an argument. The specified
3632location is actually reached only if it is in the current frame. This
3633implies that @code{until} can be used to skip over recursive function
3634invocations. For instance in the code below, if the current location is
3635line @code{96}, issuing @code{until 99} will execute the program up to
3636line @code{99} in the same invocation of factorial, i.e. after the inner
3637invocations have returned.
3638
3639@smallexample
364094 int factorial (int value)
364195 @{
364296 if (value > 1) @{
364397 value *= factorial (value - 1);
364498 @}
364599 return (value);
3646100 @}
3647@end smallexample
3648
3649
3650@kindex advance @var{location}
3651@itemx advance @var{location}
3652Continue running the program up to the given location. An argument is
3653required, anything of the same form as arguments for the @code{break}
3654command. Execution will also stop upon exit from the current stack
3655frame. This command is similar to @code{until}, but @code{advance} will
3656not skip over recursive function calls, and the target location doesn't
3657have to be in the same frame as the current one.
3658
c906108c
SS
3659
3660@kindex stepi
41afff9a 3661@kindex si @r{(@code{stepi})}
c906108c 3662@item stepi
96a2c332 3663@itemx stepi @var{arg}
c906108c
SS
3664@itemx si
3665Execute one machine instruction, then stop and return to the debugger.
3666
3667It is often useful to do @samp{display/i $pc} when stepping by machine
3668instructions. This makes @value{GDBN} automatically display the next
3669instruction to be executed, each time your program stops. @xref{Auto
3670Display,, Automatic display}.
3671
3672An argument is a repeat count, as in @code{step}.
3673
3674@need 750
3675@kindex nexti
41afff9a 3676@kindex ni @r{(@code{nexti})}
c906108c 3677@item nexti
96a2c332 3678@itemx nexti @var{arg}
c906108c
SS
3679@itemx ni
3680Execute one machine instruction, but if it is a function call,
3681proceed until the function returns.
3682
3683An argument is a repeat count, as in @code{next}.
3684@end table
3685
6d2ebf8b 3686@node Signals
c906108c
SS
3687@section Signals
3688@cindex signals
3689
3690A signal is an asynchronous event that can happen in a program. The
3691operating system defines the possible kinds of signals, and gives each
3692kind a name and a number. For example, in Unix @code{SIGINT} is the
d4f3574e 3693signal a program gets when you type an interrupt character (often @kbd{C-c});
c906108c
SS
3694@code{SIGSEGV} is the signal a program gets from referencing a place in
3695memory far away from all the areas in use; @code{SIGALRM} occurs when
3696the alarm clock timer goes off (which happens only if your program has
3697requested an alarm).
3698
3699@cindex fatal signals
3700Some signals, including @code{SIGALRM}, are a normal part of the
3701functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 3702errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
3703program has not specified in advance some other way to handle the signal.
3704@code{SIGINT} does not indicate an error in your program, but it is normally
3705fatal so it can carry out the purpose of the interrupt: to kill the program.
3706
3707@value{GDBN} has the ability to detect any occurrence of a signal in your
3708program. You can tell @value{GDBN} in advance what to do for each kind of
3709signal.
3710
3711@cindex handling signals
24f93129
EZ
3712Normally, @value{GDBN} is set up to let the non-erroneous signals like
3713@code{SIGALRM} be silently passed to your program
3714(so as not to interfere with their role in the program's functioning)
c906108c
SS
3715but to stop your program immediately whenever an error signal happens.
3716You can change these settings with the @code{handle} command.
3717
3718@table @code
3719@kindex info signals
3720@item info signals
96a2c332 3721@itemx info handle
c906108c
SS
3722Print a table of all the kinds of signals and how @value{GDBN} has been told to
3723handle each one. You can use this to see the signal numbers of all
3724the defined types of signals.
3725
d4f3574e 3726@code{info handle} is an alias for @code{info signals}.
c906108c
SS
3727
3728@kindex handle
3729@item handle @var{signal} @var{keywords}@dots{}
5ece1a18
EZ
3730Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
3731can be the number of a signal or its name (with or without the
24f93129 3732@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18
EZ
3733@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
3734known signals. The @var{keywords} say what change to make.
c906108c
SS
3735@end table
3736
3737@c @group
3738The keywords allowed by the @code{handle} command can be abbreviated.
3739Their full names are:
3740
3741@table @code
3742@item nostop
3743@value{GDBN} should not stop your program when this signal happens. It may
3744still print a message telling you that the signal has come in.
3745
3746@item stop
3747@value{GDBN} should stop your program when this signal happens. This implies
3748the @code{print} keyword as well.
3749
3750@item print
3751@value{GDBN} should print a message when this signal happens.
3752
3753@item noprint
3754@value{GDBN} should not mention the occurrence of the signal at all. This
3755implies the @code{nostop} keyword as well.
3756
3757@item pass
5ece1a18 3758@itemx noignore
c906108c
SS
3759@value{GDBN} should allow your program to see this signal; your program
3760can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 3761and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
3762
3763@item nopass
5ece1a18 3764@itemx ignore
c906108c 3765@value{GDBN} should not allow your program to see this signal.
5ece1a18 3766@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
3767@end table
3768@c @end group
3769
d4f3574e
SS
3770When a signal stops your program, the signal is not visible to the
3771program until you
c906108c
SS
3772continue. Your program sees the signal then, if @code{pass} is in
3773effect for the signal in question @emph{at that time}. In other words,
3774after @value{GDBN} reports a signal, you can use the @code{handle}
3775command with @code{pass} or @code{nopass} to control whether your
3776program sees that signal when you continue.
3777
24f93129
EZ
3778The default is set to @code{nostop}, @code{noprint}, @code{pass} for
3779non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
3780@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
3781erroneous signals.
3782
c906108c
SS
3783You can also use the @code{signal} command to prevent your program from
3784seeing a signal, or cause it to see a signal it normally would not see,
3785or to give it any signal at any time. For example, if your program stopped
3786due to some sort of memory reference error, you might store correct
3787values into the erroneous variables and continue, hoping to see more
3788execution; but your program would probably terminate immediately as
3789a result of the fatal signal once it saw the signal. To prevent this,
3790you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
5d161b24 3791program a signal}.
c906108c 3792
6d2ebf8b 3793@node Thread Stops
c906108c
SS
3794@section Stopping and starting multi-thread programs
3795
3796When your program has multiple threads (@pxref{Threads,, Debugging
3797programs with multiple threads}), you can choose whether to set
3798breakpoints on all threads, or on a particular thread.
3799
3800@table @code
3801@cindex breakpoints and threads
3802@cindex thread breakpoints
3803@kindex break @dots{} thread @var{threadno}
3804@item break @var{linespec} thread @var{threadno}
3805@itemx break @var{linespec} thread @var{threadno} if @dots{}
3806@var{linespec} specifies source lines; there are several ways of
3807writing them, but the effect is always to specify some source line.
3808
3809Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
3810to specify that you only want @value{GDBN} to stop the program when a
3811particular thread reaches this breakpoint. @var{threadno} is one of the
3812numeric thread identifiers assigned by @value{GDBN}, shown in the first
3813column of the @samp{info threads} display.
3814
3815If you do not specify @samp{thread @var{threadno}} when you set a
3816breakpoint, the breakpoint applies to @emph{all} threads of your
3817program.
3818
3819You can use the @code{thread} qualifier on conditional breakpoints as
3820well; in this case, place @samp{thread @var{threadno}} before the
3821breakpoint condition, like this:
3822
3823@smallexample
2df3850c 3824(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
3825@end smallexample
3826
3827@end table
3828
3829@cindex stopped threads
3830@cindex threads, stopped
3831Whenever your program stops under @value{GDBN} for any reason,
3832@emph{all} threads of execution stop, not just the current thread. This
3833allows you to examine the overall state of the program, including
3834switching between threads, without worrying that things may change
3835underfoot.
3836
36d86913
MC
3837@cindex thread breakpoints and system calls
3838@cindex system calls and thread breakpoints
3839@cindex premature return from system calls
3840There is an unfortunate side effect. If one thread stops for a
3841breakpoint, or for some other reason, and another thread is blocked in a
3842system call, then the system call may return prematurely. This is a
3843consequence of the interaction between multiple threads and the signals
3844that @value{GDBN} uses to implement breakpoints and other events that
3845stop execution.
3846
3847To handle this problem, your program should check the return value of
3848each system call and react appropriately. This is good programming
3849style anyways.
3850
3851For example, do not write code like this:
3852
3853@smallexample
3854 sleep (10);
3855@end smallexample
3856
3857The call to @code{sleep} will return early if a different thread stops
3858at a breakpoint or for some other reason.
3859
3860Instead, write this:
3861
3862@smallexample
3863 int unslept = 10;
3864 while (unslept > 0)
3865 unslept = sleep (unslept);
3866@end smallexample
3867
3868A system call is allowed to return early, so the system is still
3869conforming to its specification. But @value{GDBN} does cause your
3870multi-threaded program to behave differently than it would without
3871@value{GDBN}.
3872
3873Also, @value{GDBN} uses internal breakpoints in the thread library to
3874monitor certain events such as thread creation and thread destruction.
3875When such an event happens, a system call in another thread may return
3876prematurely, even though your program does not appear to stop.
3877
c906108c
SS
3878@cindex continuing threads
3879@cindex threads, continuing
3880Conversely, whenever you restart the program, @emph{all} threads start
3881executing. @emph{This is true even when single-stepping} with commands
5d161b24 3882like @code{step} or @code{next}.
c906108c
SS
3883
3884In particular, @value{GDBN} cannot single-step all threads in lockstep.
3885Since thread scheduling is up to your debugging target's operating
3886system (not controlled by @value{GDBN}), other threads may
3887execute more than one statement while the current thread completes a
3888single step. Moreover, in general other threads stop in the middle of a
3889statement, rather than at a clean statement boundary, when the program
3890stops.
3891
3892You might even find your program stopped in another thread after
3893continuing or even single-stepping. This happens whenever some other
3894thread runs into a breakpoint, a signal, or an exception before the
3895first thread completes whatever you requested.
3896
3897On some OSes, you can lock the OS scheduler and thus allow only a single
3898thread to run.
3899
3900@table @code
3901@item set scheduler-locking @var{mode}
3902Set the scheduler locking mode. If it is @code{off}, then there is no
3903locking and any thread may run at any time. If @code{on}, then only the
3904current thread may run when the inferior is resumed. The @code{step}
3905mode optimizes for single-stepping. It stops other threads from
3906``seizing the prompt'' by preempting the current thread while you are
3907stepping. Other threads will only rarely (or never) get a chance to run
d4f3574e 3908when you step. They are more likely to run when you @samp{next} over a
c906108c 3909function call, and they are completely free to run when you use commands
d4f3574e 3910like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
c906108c 3911thread hits a breakpoint during its timeslice, they will never steal the
2df3850c 3912@value{GDBN} prompt away from the thread that you are debugging.
c906108c
SS
3913
3914@item show scheduler-locking
3915Display the current scheduler locking mode.
3916@end table
3917
c906108c 3918
6d2ebf8b 3919@node Stack
c906108c
SS
3920@chapter Examining the Stack
3921
3922When your program has stopped, the first thing you need to know is where it
3923stopped and how it got there.
3924
3925@cindex call stack
5d161b24
DB
3926Each time your program performs a function call, information about the call
3927is generated.
3928That information includes the location of the call in your program,
3929the arguments of the call,
c906108c 3930and the local variables of the function being called.
5d161b24 3931The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
3932The stack frames are allocated in a region of memory called the @dfn{call
3933stack}.
3934
3935When your program stops, the @value{GDBN} commands for examining the
3936stack allow you to see all of this information.
3937
3938@cindex selected frame
3939One of the stack frames is @dfn{selected} by @value{GDBN} and many
3940@value{GDBN} commands refer implicitly to the selected frame. In
3941particular, whenever you ask @value{GDBN} for the value of a variable in
3942your program, the value is found in the selected frame. There are
3943special @value{GDBN} commands to select whichever frame you are
3944interested in. @xref{Selection, ,Selecting a frame}.
3945
3946When your program stops, @value{GDBN} automatically selects the
5d161b24 3947currently executing frame and describes it briefly, similar to the
c906108c
SS
3948@code{frame} command (@pxref{Frame Info, ,Information about a frame}).
3949
3950@menu
3951* Frames:: Stack frames
3952* Backtrace:: Backtraces
3953* Selection:: Selecting a frame
3954* Frame Info:: Information on a frame
c906108c
SS
3955
3956@end menu
3957
6d2ebf8b 3958@node Frames
c906108c
SS
3959@section Stack frames
3960
d4f3574e 3961@cindex frame, definition
c906108c
SS
3962@cindex stack frame
3963The call stack is divided up into contiguous pieces called @dfn{stack
3964frames}, or @dfn{frames} for short; each frame is the data associated
3965with one call to one function. The frame contains the arguments given
3966to the function, the function's local variables, and the address at
3967which the function is executing.
3968
3969@cindex initial frame
3970@cindex outermost frame
3971@cindex innermost frame
3972When your program is started, the stack has only one frame, that of the
3973function @code{main}. This is called the @dfn{initial} frame or the
3974@dfn{outermost} frame. Each time a function is called, a new frame is
3975made. Each time a function returns, the frame for that function invocation
3976is eliminated. If a function is recursive, there can be many frames for
3977the same function. The frame for the function in which execution is
3978actually occurring is called the @dfn{innermost} frame. This is the most
3979recently created of all the stack frames that still exist.
3980
3981@cindex frame pointer
3982Inside your program, stack frames are identified by their addresses. A
3983stack frame consists of many bytes, each of which has its own address; each
3984kind of computer has a convention for choosing one byte whose
3985address serves as the address of the frame. Usually this address is kept
3986in a register called the @dfn{frame pointer register} while execution is
3987going on in that frame.
3988
3989@cindex frame number
3990@value{GDBN} assigns numbers to all existing stack frames, starting with
3991zero for the innermost frame, one for the frame that called it,
3992and so on upward. These numbers do not really exist in your program;
3993they are assigned by @value{GDBN} to give you a way of designating stack
3994frames in @value{GDBN} commands.
3995
6d2ebf8b
SS
3996@c The -fomit-frame-pointer below perennially causes hbox overflow
3997@c underflow problems.
c906108c
SS
3998@cindex frameless execution
3999Some compilers provide a way to compile functions so that they operate
6d2ebf8b 4000without stack frames. (For example, the @value{GCC} option
474c8240 4001@smallexample
6d2ebf8b 4002@samp{-fomit-frame-pointer}
474c8240 4003@end smallexample
6d2ebf8b 4004generates functions without a frame.)
c906108c
SS
4005This is occasionally done with heavily used library functions to save
4006the frame setup time. @value{GDBN} has limited facilities for dealing
4007with these function invocations. If the innermost function invocation
4008has no stack frame, @value{GDBN} nevertheless regards it as though
4009it had a separate frame, which is numbered zero as usual, allowing
4010correct tracing of the function call chain. However, @value{GDBN} has
4011no provision for frameless functions elsewhere in the stack.
4012
4013@table @code
d4f3574e 4014@kindex frame@r{, command}
41afff9a 4015@cindex current stack frame
c906108c 4016@item frame @var{args}
5d161b24 4017The @code{frame} command allows you to move from one stack frame to another,
c906108c 4018and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
4019address of the frame or the stack frame number. Without an argument,
4020@code{frame} prints the current stack frame.
c906108c
SS
4021
4022@kindex select-frame
41afff9a 4023@cindex selecting frame silently
c906108c
SS
4024@item select-frame
4025The @code{select-frame} command allows you to move from one stack frame
4026to another without printing the frame. This is the silent version of
4027@code{frame}.
4028@end table
4029
6d2ebf8b 4030@node Backtrace
c906108c
SS
4031@section Backtraces
4032
4033@cindex backtraces
4034@cindex tracebacks
4035@cindex stack traces
4036A backtrace is a summary of how your program got where it is. It shows one
4037line per frame, for many frames, starting with the currently executing
4038frame (frame zero), followed by its caller (frame one), and on up the
4039stack.
4040
4041@table @code
4042@kindex backtrace
41afff9a 4043@kindex bt @r{(@code{backtrace})}
c906108c
SS
4044@item backtrace
4045@itemx bt
4046Print a backtrace of the entire stack: one line per frame for all
4047frames in the stack.
4048
4049You can stop the backtrace at any time by typing the system interrupt
4050character, normally @kbd{C-c}.
4051
4052@item backtrace @var{n}
4053@itemx bt @var{n}
4054Similar, but print only the innermost @var{n} frames.
4055
4056@item backtrace -@var{n}
4057@itemx bt -@var{n}
4058Similar, but print only the outermost @var{n} frames.
4059@end table
4060
4061@kindex where
4062@kindex info stack
c906108c
SS
4063The names @code{where} and @code{info stack} (abbreviated @code{info s})
4064are additional aliases for @code{backtrace}.
4065
4066Each line in the backtrace shows the frame number and the function name.
4067The program counter value is also shown---unless you use @code{set
4068print address off}. The backtrace also shows the source file name and
4069line number, as well as the arguments to the function. The program
4070counter value is omitted if it is at the beginning of the code for that
4071line number.
4072
4073Here is an example of a backtrace. It was made with the command
4074@samp{bt 3}, so it shows the innermost three frames.
4075
4076@smallexample
4077@group
5d161b24 4078#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c
SS
4079 at builtin.c:993
4080#1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
4081#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
4082 at macro.c:71
4083(More stack frames follow...)
4084@end group
4085@end smallexample
4086
4087@noindent
4088The display for frame zero does not begin with a program counter
4089value, indicating that your program has stopped at the beginning of the
4090code for line @code{993} of @code{builtin.c}.
4091
25d29d70
AC
4092Most programs have a standard user entry point---a place where system
4093libraries and startup code transition into user code. For C this is
4094@code{main}. When @value{GDBN} finds the entry function in a backtrace
4095it will terminate the backtrace, to avoid tracing into highly
4096system-specific (and generally uninteresting) code.
4097
4098If you need to examine the startup code, or limit the number of levels
4099in a backtrace, you can change this behavior:
95f90d25
DJ
4100
4101@table @code
25d29d70
AC
4102@item set backtrace past-main
4103@itemx set backtrace past-main on
4644b6e3 4104@kindex set backtrace
25d29d70
AC
4105Backtraces will continue past the user entry point.
4106
4107@item set backtrace past-main off
95f90d25
DJ
4108Backtraces will stop when they encounter the user entry point. This is the
4109default.
4110
25d29d70 4111@item show backtrace past-main
4644b6e3 4112@kindex show backtrace
25d29d70
AC
4113Display the current user entry point backtrace policy.
4114
4115@item set backtrace limit @var{n}
4116@itemx set backtrace limit 0
4117@cindex backtrace limit
4118Limit the backtrace to @var{n} levels. A value of zero means
4119unlimited.
95f90d25 4120
25d29d70
AC
4121@item show backtrace limit
4122Display the current limit on backtrace levels.
95f90d25
DJ
4123@end table
4124
6d2ebf8b 4125@node Selection
c906108c
SS
4126@section Selecting a frame
4127
4128Most commands for examining the stack and other data in your program work on
4129whichever stack frame is selected at the moment. Here are the commands for
4130selecting a stack frame; all of them finish by printing a brief description
4131of the stack frame just selected.
4132
4133@table @code
d4f3574e 4134@kindex frame@r{, selecting}
41afff9a 4135@kindex f @r{(@code{frame})}
c906108c
SS
4136@item frame @var{n}
4137@itemx f @var{n}
4138Select frame number @var{n}. Recall that frame zero is the innermost
4139(currently executing) frame, frame one is the frame that called the
4140innermost one, and so on. The highest-numbered frame is the one for
4141@code{main}.
4142
4143@item frame @var{addr}
4144@itemx f @var{addr}
4145Select the frame at address @var{addr}. This is useful mainly if the
4146chaining of stack frames has been damaged by a bug, making it
4147impossible for @value{GDBN} to assign numbers properly to all frames. In
4148addition, this can be useful when your program has multiple stacks and
4149switches between them.
4150
c906108c
SS
4151On the SPARC architecture, @code{frame} needs two addresses to
4152select an arbitrary frame: a frame pointer and a stack pointer.
4153
4154On the MIPS and Alpha architecture, it needs two addresses: a stack
4155pointer and a program counter.
4156
4157On the 29k architecture, it needs three addresses: a register stack
4158pointer, a program counter, and a memory stack pointer.
4159@c note to future updaters: this is conditioned on a flag
4160@c SETUP_ARBITRARY_FRAME in the tm-*.h files. The above is up to date
4161@c as of 27 Jan 1994.
c906108c
SS
4162
4163@kindex up
4164@item up @var{n}
4165Move @var{n} frames up the stack. For positive numbers @var{n}, this
4166advances toward the outermost frame, to higher frame numbers, to frames
4167that have existed longer. @var{n} defaults to one.
4168
4169@kindex down
41afff9a 4170@kindex do @r{(@code{down})}
c906108c
SS
4171@item down @var{n}
4172Move @var{n} frames down the stack. For positive numbers @var{n}, this
4173advances toward the innermost frame, to lower frame numbers, to frames
4174that were created more recently. @var{n} defaults to one. You may
4175abbreviate @code{down} as @code{do}.
4176@end table
4177
4178All of these commands end by printing two lines of output describing the
4179frame. The first line shows the frame number, the function name, the
4180arguments, and the source file and line number of execution in that
5d161b24 4181frame. The second line shows the text of that source line.
c906108c
SS
4182
4183@need 1000
4184For example:
4185
4186@smallexample
4187@group
4188(@value{GDBP}) up
4189#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
4190 at env.c:10
419110 read_input_file (argv[i]);
4192@end group
4193@end smallexample
4194
4195After such a printout, the @code{list} command with no arguments
4196prints ten lines centered on the point of execution in the frame.
87885426
FN
4197You can also edit the program at the point of execution with your favorite
4198editing program by typing @code{edit}.
4199@xref{List, ,Printing source lines},
4200for details.
c906108c
SS
4201
4202@table @code
4203@kindex down-silently
4204@kindex up-silently
4205@item up-silently @var{n}
4206@itemx down-silently @var{n}
4207These two commands are variants of @code{up} and @code{down},
4208respectively; they differ in that they do their work silently, without
4209causing display of the new frame. They are intended primarily for use
4210in @value{GDBN} command scripts, where the output might be unnecessary and
4211distracting.
4212@end table
4213
6d2ebf8b 4214@node Frame Info
c906108c
SS
4215@section Information about a frame
4216
4217There are several other commands to print information about the selected
4218stack frame.
4219
4220@table @code
4221@item frame
4222@itemx f
4223When used without any argument, this command does not change which
4224frame is selected, but prints a brief description of the currently
4225selected stack frame. It can be abbreviated @code{f}. With an
4226argument, this command is used to select a stack frame.
4227@xref{Selection, ,Selecting a frame}.
4228
4229@kindex info frame
41afff9a 4230@kindex info f @r{(@code{info frame})}
c906108c
SS
4231@item info frame
4232@itemx info f
4233This command prints a verbose description of the selected stack frame,
4234including:
4235
4236@itemize @bullet
5d161b24
DB
4237@item
4238the address of the frame
c906108c
SS
4239@item
4240the address of the next frame down (called by this frame)
4241@item
4242the address of the next frame up (caller of this frame)
4243@item
4244the language in which the source code corresponding to this frame is written
4245@item
4246the address of the frame's arguments
4247@item
d4f3574e
SS
4248the address of the frame's local variables
4249@item
c906108c
SS
4250the program counter saved in it (the address of execution in the caller frame)
4251@item
4252which registers were saved in the frame
4253@end itemize
4254
4255@noindent The verbose description is useful when
4256something has gone wrong that has made the stack format fail to fit
4257the usual conventions.
4258
4259@item info frame @var{addr}
4260@itemx info f @var{addr}
4261Print a verbose description of the frame at address @var{addr}, without
4262selecting that frame. The selected frame remains unchanged by this
4263command. This requires the same kind of address (more than one for some
4264architectures) that you specify in the @code{frame} command.
4265@xref{Selection, ,Selecting a frame}.
4266
4267@kindex info args
4268@item info args
4269Print the arguments of the selected frame, each on a separate line.
4270
4271@item info locals
4272@kindex info locals
4273Print the local variables of the selected frame, each on a separate
4274line. These are all variables (declared either static or automatic)
4275accessible at the point of execution of the selected frame.
4276
c906108c 4277@kindex info catch
d4f3574e
SS
4278@cindex catch exceptions, list active handlers
4279@cindex exception handlers, how to list
c906108c
SS
4280@item info catch
4281Print a list of all the exception handlers that are active in the
4282current stack frame at the current point of execution. To see other
4283exception handlers, visit the associated frame (using the @code{up},
4284@code{down}, or @code{frame} commands); then type @code{info catch}.
4285@xref{Set Catchpoints, , Setting catchpoints}.
53a5351d 4286
c906108c
SS
4287@end table
4288
c906108c 4289
6d2ebf8b 4290@node Source
c906108c
SS
4291@chapter Examining Source Files
4292
4293@value{GDBN} can print parts of your program's source, since the debugging
4294information recorded in the program tells @value{GDBN} what source files were
4295used to build it. When your program stops, @value{GDBN} spontaneously prints
4296the line where it stopped. Likewise, when you select a stack frame
4297(@pxref{Selection, ,Selecting a frame}), @value{GDBN} prints the line where
4298execution in that frame has stopped. You can print other portions of
4299source files by explicit command.
4300
7a292a7a 4301If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 4302prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 4303@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
4304
4305@menu
4306* List:: Printing source lines
87885426 4307* Edit:: Editing source files
c906108c 4308* Search:: Searching source files
c906108c
SS
4309* Source Path:: Specifying source directories
4310* Machine Code:: Source and machine code
4311@end menu
4312
6d2ebf8b 4313@node List
c906108c
SS
4314@section Printing source lines
4315
4316@kindex list
41afff9a 4317@kindex l @r{(@code{list})}
c906108c 4318To print lines from a source file, use the @code{list} command
5d161b24 4319(abbreviated @code{l}). By default, ten lines are printed.
c906108c
SS
4320There are several ways to specify what part of the file you want to print.
4321
4322Here are the forms of the @code{list} command most commonly used:
4323
4324@table @code
4325@item list @var{linenum}
4326Print lines centered around line number @var{linenum} in the
4327current source file.
4328
4329@item list @var{function}
4330Print lines centered around the beginning of function
4331@var{function}.
4332
4333@item list
4334Print more lines. If the last lines printed were printed with a
4335@code{list} command, this prints lines following the last lines
4336printed; however, if the last line printed was a solitary line printed
4337as part of displaying a stack frame (@pxref{Stack, ,Examining the
4338Stack}), this prints lines centered around that line.
4339
4340@item list -
4341Print lines just before the lines last printed.
4342@end table
4343
4344By default, @value{GDBN} prints ten source lines with any of these forms of
4345the @code{list} command. You can change this using @code{set listsize}:
4346
4347@table @code
4348@kindex set listsize
4349@item set listsize @var{count}
4350Make the @code{list} command display @var{count} source lines (unless
4351the @code{list} argument explicitly specifies some other number).
4352
4353@kindex show listsize
4354@item show listsize
4355Display the number of lines that @code{list} prints.
4356@end table
4357
4358Repeating a @code{list} command with @key{RET} discards the argument,
4359so it is equivalent to typing just @code{list}. This is more useful
4360than listing the same lines again. An exception is made for an
4361argument of @samp{-}; that argument is preserved in repetition so that
4362each repetition moves up in the source file.
4363
4364@cindex linespec
4365In general, the @code{list} command expects you to supply zero, one or two
4366@dfn{linespecs}. Linespecs specify source lines; there are several ways
d4f3574e 4367of writing them, but the effect is always to specify some source line.
c906108c
SS
4368Here is a complete description of the possible arguments for @code{list}:
4369
4370@table @code
4371@item list @var{linespec}
4372Print lines centered around the line specified by @var{linespec}.
4373
4374@item list @var{first},@var{last}
4375Print lines from @var{first} to @var{last}. Both arguments are
4376linespecs.
4377
4378@item list ,@var{last}
4379Print lines ending with @var{last}.
4380
4381@item list @var{first},
4382Print lines starting with @var{first}.
4383
4384@item list +
4385Print lines just after the lines last printed.
4386
4387@item list -
4388Print lines just before the lines last printed.
4389
4390@item list
4391As described in the preceding table.
4392@end table
4393
4394Here are the ways of specifying a single source line---all the
4395kinds of linespec.
4396
4397@table @code
4398@item @var{number}
4399Specifies line @var{number} of the current source file.
4400When a @code{list} command has two linespecs, this refers to
4401the same source file as the first linespec.
4402
4403@item +@var{offset}
4404Specifies the line @var{offset} lines after the last line printed.
4405When used as the second linespec in a @code{list} command that has
4406two, this specifies the line @var{offset} lines down from the
4407first linespec.
4408
4409@item -@var{offset}
4410Specifies the line @var{offset} lines before the last line printed.
4411
4412@item @var{filename}:@var{number}
4413Specifies line @var{number} in the source file @var{filename}.
4414
4415@item @var{function}
4416Specifies the line that begins the body of the function @var{function}.
4417For example: in C, this is the line with the open brace.
4418
4419@item @var{filename}:@var{function}
4420Specifies the line of the open-brace that begins the body of the
4421function @var{function} in the file @var{filename}. You only need the
4422file name with a function name to avoid ambiguity when there are
4423identically named functions in different source files.
4424
4425@item *@var{address}
4426Specifies the line containing the program address @var{address}.
4427@var{address} may be any expression.
4428@end table
4429
87885426
FN
4430@node Edit
4431@section Editing source files
4432@cindex editing source files
4433
4434@kindex edit
4435@kindex e @r{(@code{edit})}
4436To edit the lines in a source file, use the @code{edit} command.
4437The editing program of your choice
4438is invoked with the current line set to
4439the active line in the program.
4440Alternatively, there are several ways to specify what part of the file you
4441want to print if you want to see other parts of the program.
4442
4443Here are the forms of the @code{edit} command most commonly used:
4444
4445@table @code
4446@item edit
4447Edit the current source file at the active line number in the program.
4448
4449@item edit @var{number}
4450Edit the current source file with @var{number} as the active line number.
4451
4452@item edit @var{function}
4453Edit the file containing @var{function} at the beginning of its definition.
4454
4455@item edit @var{filename}:@var{number}
4456Specifies line @var{number} in the source file @var{filename}.
4457
4458@item edit @var{filename}:@var{function}
4459Specifies the line that begins the body of the
4460function @var{function} in the file @var{filename}. You only need the
4461file name with a function name to avoid ambiguity when there are
4462identically named functions in different source files.
4463
4464@item edit *@var{address}
4465Specifies the line containing the program address @var{address}.
4466@var{address} may be any expression.
4467@end table
4468
4469@subsection Choosing your editor
4470You can customize @value{GDBN} to use any editor you want
4471@footnote{
4472The only restriction is that your editor (say @code{ex}), recognizes the
4473following command-line syntax:
10998722 4474@smallexample
87885426 4475ex +@var{number} file
10998722 4476@end smallexample
15387254
EZ
4477The optional numeric value +@var{number} specifies the number of the line in
4478the file where to start editing.}.
4479By default, it is @file{@value{EDITOR}}, but you can change this
10998722
AC
4480by setting the environment variable @code{EDITOR} before using
4481@value{GDBN}. For example, to configure @value{GDBN} to use the
4482@code{vi} editor, you could use these commands with the @code{sh} shell:
4483@smallexample
87885426
FN
4484EDITOR=/usr/bin/vi
4485export EDITOR
15387254 4486gdb @dots{}
10998722 4487@end smallexample
87885426 4488or in the @code{csh} shell,
10998722 4489@smallexample
87885426 4490setenv EDITOR /usr/bin/vi
15387254 4491gdb @dots{}
10998722 4492@end smallexample
87885426 4493
6d2ebf8b 4494@node Search
c906108c 4495@section Searching source files
15387254 4496@cindex searching source files
c906108c
SS
4497@kindex reverse-search
4498
4499There are two commands for searching through the current source file for a
4500regular expression.
4501
4502@table @code
4503@kindex search
4504@kindex forward-search
4505@item forward-search @var{regexp}
4506@itemx search @var{regexp}
4507The command @samp{forward-search @var{regexp}} checks each line,
4508starting with the one following the last line listed, for a match for
5d161b24 4509@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
4510synonym @samp{search @var{regexp}} or abbreviate the command name as
4511@code{fo}.
4512
4513@item reverse-search @var{regexp}
4514The command @samp{reverse-search @var{regexp}} checks each line, starting
4515with the one before the last line listed and going backward, for a match
4516for @var{regexp}. It lists the line that is found. You can abbreviate
4517this command as @code{rev}.
4518@end table
c906108c 4519
6d2ebf8b 4520@node Source Path
c906108c
SS
4521@section Specifying source directories
4522
4523@cindex source path
4524@cindex directories for source files
4525Executable programs sometimes do not record the directories of the source
4526files from which they were compiled, just the names. Even when they do,
4527the directories could be moved between the compilation and your debugging
4528session. @value{GDBN} has a list of directories to search for source files;
4529this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
4530it tries all the directories in the list, in the order they are present
0b66e38c
EZ
4531in the list, until it finds a file with the desired name.
4532
4533For example, suppose an executable references the file
4534@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
4535@file{/mnt/cross}. The file is first looked up literally; if this
4536fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
4537fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
4538message is printed. @value{GDBN} does not look up the parts of the
4539source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
4540Likewise, the subdirectories of the source path are not searched: if
4541the source path is @file{/mnt/cross}, and the binary refers to
4542@file{foo.c}, @value{GDBN} would not find it under
4543@file{/mnt/cross/usr/src/foo-1.0/lib}.
4544
4545Plain file names, relative file names with leading directories, file
4546names containing dots, etc.@: are all treated as described above; for
4547instance, if the source path is @file{/mnt/cross}, and the source file
4548is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
4549@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
4550that---@file{/mnt/cross/foo.c}.
4551
4552Note that the executable search path is @emph{not} used to locate the
4553source files. Neither is the current working directory, unless it
4554happens to be in the source path.
c906108c
SS
4555
4556Whenever you reset or rearrange the source path, @value{GDBN} clears out
4557any information it has cached about where source files are found and where
4558each line is in the file.
4559
4560@kindex directory
4561@kindex dir
d4f3574e
SS
4562When you start @value{GDBN}, its source path includes only @samp{cdir}
4563and @samp{cwd}, in that order.
c906108c
SS
4564To add other directories, use the @code{directory} command.
4565
4566@table @code
4567@item directory @var{dirname} @dots{}
4568@item dir @var{dirname} @dots{}
4569Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
4570directory names may be given to this command, separated by @samp{:}
4571(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
4572part of absolute file names) or
c906108c
SS
4573whitespace. You may specify a directory that is already in the source
4574path; this moves it forward, so @value{GDBN} searches it sooner.
4575
4576@kindex cdir
4577@kindex cwd
41afff9a
EZ
4578@vindex $cdir@r{, convenience variable}
4579@vindex $cwdr@r{, convenience variable}
c906108c
SS
4580@cindex compilation directory
4581@cindex current directory
4582@cindex working directory
4583@cindex directory, current
4584@cindex directory, compilation
4585You can use the string @samp{$cdir} to refer to the compilation
4586directory (if one is recorded), and @samp{$cwd} to refer to the current
4587working directory. @samp{$cwd} is not the same as @samp{.}---the former
4588tracks the current working directory as it changes during your @value{GDBN}
4589session, while the latter is immediately expanded to the current
4590directory at the time you add an entry to the source path.
4591
4592@item directory
4593Reset the source path to empty again. This requires confirmation.
4594
4595@c RET-repeat for @code{directory} is explicitly disabled, but since
4596@c repeating it would be a no-op we do not say that. (thanks to RMS)
4597
4598@item show directories
4599@kindex show directories
4600Print the source path: show which directories it contains.
4601@end table
4602
4603If your source path is cluttered with directories that are no longer of
4604interest, @value{GDBN} may sometimes cause confusion by finding the wrong
4605versions of source. You can correct the situation as follows:
4606
4607@enumerate
4608@item
4609Use @code{directory} with no argument to reset the source path to empty.
4610
4611@item
4612Use @code{directory} with suitable arguments to reinstall the
4613directories you want in the source path. You can add all the
4614directories in one command.
4615@end enumerate
4616
6d2ebf8b 4617@node Machine Code
c906108c 4618@section Source and machine code
15387254 4619@cindex source line and its code address
c906108c
SS
4620
4621You can use the command @code{info line} to map source lines to program
4622addresses (and vice versa), and the command @code{disassemble} to display
4623a range of addresses as machine instructions. When run under @sc{gnu} Emacs
d4f3574e 4624mode, the @code{info line} command causes the arrow to point to the
5d161b24 4625line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
4626well as hex.
4627
4628@table @code
4629@kindex info line
4630@item info line @var{linespec}
4631Print the starting and ending addresses of the compiled code for
4632source line @var{linespec}. You can specify source lines in any of
4633the ways understood by the @code{list} command (@pxref{List, ,Printing
4634source lines}).
4635@end table
4636
4637For example, we can use @code{info line} to discover the location of
4638the object code for the first line of function
4639@code{m4_changequote}:
4640
d4f3574e
SS
4641@c FIXME: I think this example should also show the addresses in
4642@c symbolic form, as they usually would be displayed.
c906108c 4643@smallexample
96a2c332 4644(@value{GDBP}) info line m4_changequote
c906108c
SS
4645Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
4646@end smallexample
4647
4648@noindent
15387254 4649@cindex code address and its source line
c906108c
SS
4650We can also inquire (using @code{*@var{addr}} as the form for
4651@var{linespec}) what source line covers a particular address:
4652@smallexample
4653(@value{GDBP}) info line *0x63ff
4654Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
4655@end smallexample
4656
4657@cindex @code{$_} and @code{info line}
15387254 4658@cindex @code{x} command, default address
41afff9a 4659@kindex x@r{(examine), and} info line
c906108c
SS
4660After @code{info line}, the default address for the @code{x} command
4661is changed to the starting address of the line, so that @samp{x/i} is
4662sufficient to begin examining the machine code (@pxref{Memory,
4663,Examining memory}). Also, this address is saved as the value of the
4664convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
4665variables}).
4666
4667@table @code
4668@kindex disassemble
4669@cindex assembly instructions
4670@cindex instructions, assembly
4671@cindex machine instructions
4672@cindex listing machine instructions
4673@item disassemble
4674This specialized command dumps a range of memory as machine
4675instructions. The default memory range is the function surrounding the
4676program counter of the selected frame. A single argument to this
4677command is a program counter value; @value{GDBN} dumps the function
4678surrounding this value. Two arguments specify a range of addresses
4679(first inclusive, second exclusive) to dump.
4680@end table
4681
c906108c
SS
4682The following example shows the disassembly of a range of addresses of
4683HP PA-RISC 2.0 code:
4684
4685@smallexample
4686(@value{GDBP}) disas 0x32c4 0x32e4
4687Dump of assembler code from 0x32c4 to 0x32e4:
46880x32c4 <main+204>: addil 0,dp
46890x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
46900x32cc <main+212>: ldil 0x3000,r31
46910x32d0 <main+216>: ble 0x3f8(sr4,r31)
46920x32d4 <main+220>: ldo 0(r31),rp
46930x32d8 <main+224>: addil -0x800,dp
46940x32dc <main+228>: ldo 0x588(r1),r26
46950x32e0 <main+232>: ldil 0x3000,r31
4696End of assembler dump.
4697@end smallexample
c906108c
SS
4698
4699Some architectures have more than one commonly-used set of instruction
4700mnemonics or other syntax.
4701
4702@table @code
d4f3574e 4703@kindex set disassembly-flavor
d4f3574e
SS
4704@cindex Intel disassembly flavor
4705@cindex AT&T disassembly flavor
4706@item set disassembly-flavor @var{instruction-set}
c906108c
SS
4707Select the instruction set to use when disassembling the
4708program via the @code{disassemble} or @code{x/i} commands.
4709
4710Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
4711can set @var{instruction-set} to either @code{intel} or @code{att}.
4712The default is @code{att}, the AT&T flavor used by default by Unix
4713assemblers for x86-based targets.
c906108c
SS
4714@end table
4715
4716
6d2ebf8b 4717@node Data
c906108c
SS
4718@chapter Examining Data
4719
4720@cindex printing data
4721@cindex examining data
4722@kindex print
4723@kindex inspect
4724@c "inspect" is not quite a synonym if you are using Epoch, which we do not
4725@c document because it is nonstandard... Under Epoch it displays in a
4726@c different window or something like that.
4727The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
4728command (abbreviated @code{p}), or its synonym @code{inspect}. It
4729evaluates and prints the value of an expression of the language your
4730program is written in (@pxref{Languages, ,Using @value{GDBN} with
4731Different Languages}).
c906108c
SS
4732
4733@table @code
d4f3574e
SS
4734@item print @var{expr}
4735@itemx print /@var{f} @var{expr}
4736@var{expr} is an expression (in the source language). By default the
4737value of @var{expr} is printed in a format appropriate to its data type;
c906108c 4738you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 4739@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
c906108c
SS
4740formats}.
4741
4742@item print
4743@itemx print /@var{f}
15387254 4744@cindex reprint the last value
d4f3574e 4745If you omit @var{expr}, @value{GDBN} displays the last value again (from the
c906108c
SS
4746@dfn{value history}; @pxref{Value History, ,Value history}). This allows you to
4747conveniently inspect the same value in an alternative format.
4748@end table
4749
4750A more low-level way of examining data is with the @code{x} command.
4751It examines data in memory at a specified address and prints it in a
4752specified format. @xref{Memory, ,Examining memory}.
4753
7a292a7a 4754If you are interested in information about types, or about how the
d4f3574e
SS
4755fields of a struct or a class are declared, use the @code{ptype @var{exp}}
4756command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 4757Table}.
c906108c
SS
4758
4759@menu
4760* Expressions:: Expressions
4761* Variables:: Program variables
4762* Arrays:: Artificial arrays
4763* Output Formats:: Output formats
4764* Memory:: Examining memory
4765* Auto Display:: Automatic display
4766* Print Settings:: Print settings
4767* Value History:: Value history
4768* Convenience Vars:: Convenience variables
4769* Registers:: Registers
c906108c 4770* Floating Point Hardware:: Floating point hardware
53c69bd7 4771* Vector Unit:: Vector Unit
b383017d 4772* Auxiliary Vector:: Auxiliary data provided by operating system
29e57380 4773* Memory Region Attributes:: Memory region attributes
16d9dec6 4774* Dump/Restore Files:: Copy between memory and a file
a0eb71c5
KB
4775* Character Sets:: Debugging programs that use a different
4776 character set than GDB does
c906108c
SS
4777@end menu
4778
6d2ebf8b 4779@node Expressions
c906108c
SS
4780@section Expressions
4781
4782@cindex expressions
4783@code{print} and many other @value{GDBN} commands accept an expression and
4784compute its value. Any kind of constant, variable or operator defined
4785by the programming language you are using is valid in an expression in
e2e0bcd1
JB
4786@value{GDBN}. This includes conditional expressions, function calls,
4787casts, and string constants. It also includes preprocessor macros, if
4788you compiled your program to include this information; see
4789@ref{Compilation}.
c906108c 4790
15387254 4791@cindex arrays in expressions
d4f3574e
SS
4792@value{GDBN} supports array constants in expressions input by
4793the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
5d161b24 4794you can use the command @code{print @{1, 2, 3@}} to build up an array in
d4f3574e 4795memory that is @code{malloc}ed in the target program.
c906108c 4796
c906108c
SS
4797Because C is so widespread, most of the expressions shown in examples in
4798this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
4799Languages}, for information on how to use expressions in other
4800languages.
4801
4802In this section, we discuss operators that you can use in @value{GDBN}
4803expressions regardless of your programming language.
4804
15387254 4805@cindex casts, in expressions
c906108c
SS
4806Casts are supported in all languages, not just in C, because it is so
4807useful to cast a number into a pointer in order to examine a structure
4808at that address in memory.
4809@c FIXME: casts supported---Mod2 true?
c906108c
SS
4810
4811@value{GDBN} supports these operators, in addition to those common
4812to programming languages:
4813
4814@table @code
4815@item @@
4816@samp{@@} is a binary operator for treating parts of memory as arrays.
4817@xref{Arrays, ,Artificial arrays}, for more information.
4818
4819@item ::
4820@samp{::} allows you to specify a variable in terms of the file or
4821function where it is defined. @xref{Variables, ,Program variables}.
4822
4823@cindex @{@var{type}@}
4824@cindex type casting memory
4825@cindex memory, viewing as typed object
4826@cindex casts, to view memory
4827@item @{@var{type}@} @var{addr}
4828Refers to an object of type @var{type} stored at address @var{addr} in
4829memory. @var{addr} may be any expression whose value is an integer or
4830pointer (but parentheses are required around binary operators, just as in
4831a cast). This construct is allowed regardless of what kind of data is
4832normally supposed to reside at @var{addr}.
4833@end table
4834
6d2ebf8b 4835@node Variables
c906108c
SS
4836@section Program variables
4837
4838The most common kind of expression to use is the name of a variable
4839in your program.
4840
4841Variables in expressions are understood in the selected stack frame
4842(@pxref{Selection, ,Selecting a frame}); they must be either:
4843
4844@itemize @bullet
4845@item
4846global (or file-static)
4847@end itemize
4848
5d161b24 4849@noindent or
c906108c
SS
4850
4851@itemize @bullet
4852@item
4853visible according to the scope rules of the
4854programming language from the point of execution in that frame
5d161b24 4855@end itemize
c906108c
SS
4856
4857@noindent This means that in the function
4858
474c8240 4859@smallexample
c906108c
SS
4860foo (a)
4861 int a;
4862@{
4863 bar (a);
4864 @{
4865 int b = test ();
4866 bar (b);
4867 @}
4868@}
474c8240 4869@end smallexample
c906108c
SS
4870
4871@noindent
4872you can examine and use the variable @code{a} whenever your program is
4873executing within the function @code{foo}, but you can only use or
4874examine the variable @code{b} while your program is executing inside
4875the block where @code{b} is declared.
4876
4877@cindex variable name conflict
4878There is an exception: you can refer to a variable or function whose
4879scope is a single source file even if the current execution point is not
4880in this file. But it is possible to have more than one such variable or
4881function with the same name (in different source files). If that
4882happens, referring to that name has unpredictable effects. If you wish,
4883you can specify a static variable in a particular function or file,
15387254 4884using the colon-colon (@code{::}) notation:
c906108c 4885
d4f3574e 4886@cindex colon-colon, context for variables/functions
c906108c
SS
4887@iftex
4888@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 4889@cindex @code{::}, context for variables/functions
c906108c 4890@end iftex
474c8240 4891@smallexample
c906108c
SS
4892@var{file}::@var{variable}
4893@var{function}::@var{variable}
474c8240 4894@end smallexample
c906108c
SS
4895
4896@noindent
4897Here @var{file} or @var{function} is the name of the context for the
4898static @var{variable}. In the case of file names, you can use quotes to
4899make sure @value{GDBN} parses the file name as a single word---for example,
4900to print a global value of @code{x} defined in @file{f2.c}:
4901
474c8240 4902@smallexample
c906108c 4903(@value{GDBP}) p 'f2.c'::x
474c8240 4904@end smallexample
c906108c 4905
b37052ae 4906@cindex C@t{++} scope resolution
c906108c 4907This use of @samp{::} is very rarely in conflict with the very similar
b37052ae 4908use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
4909scope resolution operator in @value{GDBN} expressions.
4910@c FIXME: Um, so what happens in one of those rare cases where it's in
4911@c conflict?? --mew
c906108c
SS
4912
4913@cindex wrong values
4914@cindex variable values, wrong
15387254
EZ
4915@cindex function entry/exit, wrong values of variables
4916@cindex optimized code, wrong values of variables
c906108c
SS
4917@quotation
4918@emph{Warning:} Occasionally, a local variable may appear to have the
4919wrong value at certain points in a function---just after entry to a new
4920scope, and just before exit.
4921@end quotation
4922You may see this problem when you are stepping by machine instructions.
4923This is because, on most machines, it takes more than one instruction to
4924set up a stack frame (including local variable definitions); if you are
4925stepping by machine instructions, variables may appear to have the wrong
4926values until the stack frame is completely built. On exit, it usually
4927also takes more than one machine instruction to destroy a stack frame;
4928after you begin stepping through that group of instructions, local
4929variable definitions may be gone.
4930
4931This may also happen when the compiler does significant optimizations.
4932To be sure of always seeing accurate values, turn off all optimization
4933when compiling.
4934
d4f3574e
SS
4935@cindex ``No symbol "foo" in current context''
4936Another possible effect of compiler optimizations is to optimize
4937unused variables out of existence, or assign variables to registers (as
4938opposed to memory addresses). Depending on the support for such cases
4939offered by the debug info format used by the compiler, @value{GDBN}
4940might not be able to display values for such local variables. If that
4941happens, @value{GDBN} will print a message like this:
4942
474c8240 4943@smallexample
d4f3574e 4944No symbol "foo" in current context.
474c8240 4945@end smallexample
d4f3574e
SS
4946
4947To solve such problems, either recompile without optimizations, or use a
4948different debug info format, if the compiler supports several such
15387254 4949formats. For example, @value{NGCC}, the @sc{gnu} C/C@t{++} compiler,
0179ffac
DC
4950usually supports the @option{-gstabs+} option. @option{-gstabs+}
4951produces debug info in a format that is superior to formats such as
4952COFF. You may be able to use DWARF 2 (@option{-gdwarf-2}), which is also
4953an effective form for debug info. @xref{Debugging Options,,Options
4954for Debugging Your Program or @sc{gnu} CC, gcc.info, Using @sc{gnu} CC}.
15387254
EZ
4955@xref{C, , Debugging C++}, for more info about debug info formats
4956that are best suited to C@t{++} programs.
d4f3574e 4957
6d2ebf8b 4958@node Arrays
c906108c
SS
4959@section Artificial arrays
4960
4961@cindex artificial array
15387254 4962@cindex arrays
41afff9a 4963@kindex @@@r{, referencing memory as an array}
c906108c
SS
4964It is often useful to print out several successive objects of the
4965same type in memory; a section of an array, or an array of
4966dynamically determined size for which only a pointer exists in the
4967program.
4968
4969You can do this by referring to a contiguous span of memory as an
4970@dfn{artificial array}, using the binary operator @samp{@@}. The left
4971operand of @samp{@@} should be the first element of the desired array
4972and be an individual object. The right operand should be the desired length
4973of the array. The result is an array value whose elements are all of
4974the type of the left argument. The first element is actually the left
4975argument; the second element comes from bytes of memory immediately
4976following those that hold the first element, and so on. Here is an
4977example. If a program says
4978
474c8240 4979@smallexample
c906108c 4980int *array = (int *) malloc (len * sizeof (int));
474c8240 4981@end smallexample
c906108c
SS
4982
4983@noindent
4984you can print the contents of @code{array} with
4985
474c8240 4986@smallexample
c906108c 4987p *array@@len
474c8240 4988@end smallexample
c906108c
SS
4989
4990The left operand of @samp{@@} must reside in memory. Array values made
4991with @samp{@@} in this way behave just like other arrays in terms of
4992subscripting, and are coerced to pointers when used in expressions.
4993Artificial arrays most often appear in expressions via the value history
4994(@pxref{Value History, ,Value history}), after printing one out.
4995
4996Another way to create an artificial array is to use a cast.
4997This re-interprets a value as if it were an array.
4998The value need not be in memory:
474c8240 4999@smallexample
c906108c
SS
5000(@value{GDBP}) p/x (short[2])0x12345678
5001$1 = @{0x1234, 0x5678@}
474c8240 5002@end smallexample
c906108c
SS
5003
5004As a convenience, if you leave the array length out (as in
c3f6f71d 5005@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c 5006the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
474c8240 5007@smallexample
c906108c
SS
5008(@value{GDBP}) p/x (short[])0x12345678
5009$2 = @{0x1234, 0x5678@}
474c8240 5010@end smallexample
c906108c
SS
5011
5012Sometimes the artificial array mechanism is not quite enough; in
5013moderately complex data structures, the elements of interest may not
5014actually be adjacent---for example, if you are interested in the values
5015of pointers in an array. One useful work-around in this situation is
5016to use a convenience variable (@pxref{Convenience Vars, ,Convenience
5017variables}) as a counter in an expression that prints the first
5018interesting value, and then repeat that expression via @key{RET}. For
5019instance, suppose you have an array @code{dtab} of pointers to
5020structures, and you are interested in the values of a field @code{fv}
5021in each structure. Here is an example of what you might type:
5022
474c8240 5023@smallexample
c906108c
SS
5024set $i = 0
5025p dtab[$i++]->fv
5026@key{RET}
5027@key{RET}
5028@dots{}
474c8240 5029@end smallexample
c906108c 5030
6d2ebf8b 5031@node Output Formats
c906108c
SS
5032@section Output formats
5033
5034@cindex formatted output
5035@cindex output formats
5036By default, @value{GDBN} prints a value according to its data type. Sometimes
5037this is not what you want. For example, you might want to print a number
5038in hex, or a pointer in decimal. Or you might want to view data in memory
5039at a certain address as a character string or as an instruction. To do
5040these things, specify an @dfn{output format} when you print a value.
5041
5042The simplest use of output formats is to say how to print a value
5043already computed. This is done by starting the arguments of the
5044@code{print} command with a slash and a format letter. The format
5045letters supported are:
5046
5047@table @code
5048@item x
5049Regard the bits of the value as an integer, and print the integer in
5050hexadecimal.
5051
5052@item d
5053Print as integer in signed decimal.
5054
5055@item u
5056Print as integer in unsigned decimal.
5057
5058@item o
5059Print as integer in octal.
5060
5061@item t
5062Print as integer in binary. The letter @samp{t} stands for ``two''.
5063@footnote{@samp{b} cannot be used because these format letters are also
5064used with the @code{x} command, where @samp{b} stands for ``byte'';
d4f3574e 5065see @ref{Memory,,Examining memory}.}
c906108c
SS
5066
5067@item a
5068@cindex unknown address, locating
3d67e040 5069@cindex locate address
c906108c
SS
5070Print as an address, both absolute in hexadecimal and as an offset from
5071the nearest preceding symbol. You can use this format used to discover
5072where (in what function) an unknown address is located:
5073
474c8240 5074@smallexample
c906108c
SS
5075(@value{GDBP}) p/a 0x54320
5076$3 = 0x54320 <_initialize_vx+396>
474c8240 5077@end smallexample
c906108c 5078
3d67e040
EZ
5079@noindent
5080The command @code{info symbol 0x54320} yields similar results.
5081@xref{Symbols, info symbol}.
5082
c906108c
SS
5083@item c
5084Regard as an integer and print it as a character constant.
5085
5086@item f
5087Regard the bits of the value as a floating point number and print
5088using typical floating point syntax.
5089@end table
5090
5091For example, to print the program counter in hex (@pxref{Registers}), type
5092
474c8240 5093@smallexample
c906108c 5094p/x $pc
474c8240 5095@end smallexample
c906108c
SS
5096
5097@noindent
5098Note that no space is required before the slash; this is because command
5099names in @value{GDBN} cannot contain a slash.
5100
5101To reprint the last value in the value history with a different format,
5102you can use the @code{print} command with just a format and no
5103expression. For example, @samp{p/x} reprints the last value in hex.
5104
6d2ebf8b 5105@node Memory
c906108c
SS
5106@section Examining memory
5107
5108You can use the command @code{x} (for ``examine'') to examine memory in
5109any of several formats, independently of your program's data types.
5110
5111@cindex examining memory
5112@table @code
41afff9a 5113@kindex x @r{(examine memory)}
c906108c
SS
5114@item x/@var{nfu} @var{addr}
5115@itemx x @var{addr}
5116@itemx x
5117Use the @code{x} command to examine memory.
5118@end table
5119
5120@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
5121much memory to display and how to format it; @var{addr} is an
5122expression giving the address where you want to start displaying memory.
5123If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
5124Several commands set convenient defaults for @var{addr}.
5125
5126@table @r
5127@item @var{n}, the repeat count
5128The repeat count is a decimal integer; the default is 1. It specifies
5129how much memory (counting by units @var{u}) to display.
5130@c This really is **decimal**; unaffected by 'set radix' as of GDB
5131@c 4.1.2.
5132
5133@item @var{f}, the display format
5134The display format is one of the formats used by @code{print},
5135@samp{s} (null-terminated string), or @samp{i} (machine instruction).
5136The default is @samp{x} (hexadecimal) initially.
5137The default changes each time you use either @code{x} or @code{print}.
5138
5139@item @var{u}, the unit size
5140The unit size is any of
5141
5142@table @code
5143@item b
5144Bytes.
5145@item h
5146Halfwords (two bytes).
5147@item w
5148Words (four bytes). This is the initial default.
5149@item g
5150Giant words (eight bytes).
5151@end table
5152
5153Each time you specify a unit size with @code{x}, that size becomes the
5154default unit the next time you use @code{x}. (For the @samp{s} and
5155@samp{i} formats, the unit size is ignored and is normally not written.)
5156
5157@item @var{addr}, starting display address
5158@var{addr} is the address where you want @value{GDBN} to begin displaying
5159memory. The expression need not have a pointer value (though it may);
5160it is always interpreted as an integer address of a byte of memory.
5161@xref{Expressions, ,Expressions}, for more information on expressions. The default for
5162@var{addr} is usually just after the last address examined---but several
5163other commands also set the default address: @code{info breakpoints} (to
5164the address of the last breakpoint listed), @code{info line} (to the
5165starting address of a line), and @code{print} (if you use it to display
5166a value from memory).
5167@end table
5168
5169For example, @samp{x/3uh 0x54320} is a request to display three halfwords
5170(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
5171starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
5172words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 5173@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
5174
5175Since the letters indicating unit sizes are all distinct from the
5176letters specifying output formats, you do not have to remember whether
5177unit size or format comes first; either order works. The output
5178specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
5179(However, the count @var{n} must come first; @samp{wx4} does not work.)
5180
5181Even though the unit size @var{u} is ignored for the formats @samp{s}
5182and @samp{i}, you might still want to use a count @var{n}; for example,
5183@samp{3i} specifies that you want to see three machine instructions,
5184including any operands. The command @code{disassemble} gives an
d4f3574e 5185alternative way of inspecting machine instructions; see @ref{Machine
c906108c
SS
5186Code,,Source and machine code}.
5187
5188All the defaults for the arguments to @code{x} are designed to make it
5189easy to continue scanning memory with minimal specifications each time
5190you use @code{x}. For example, after you have inspected three machine
5191instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
5192with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
5193the repeat count @var{n} is used again; the other arguments default as
5194for successive uses of @code{x}.
5195
5196@cindex @code{$_}, @code{$__}, and value history
5197The addresses and contents printed by the @code{x} command are not saved
5198in the value history because there is often too much of them and they
5199would get in the way. Instead, @value{GDBN} makes these values available for
5200subsequent use in expressions as values of the convenience variables
5201@code{$_} and @code{$__}. After an @code{x} command, the last address
5202examined is available for use in expressions in the convenience variable
5203@code{$_}. The contents of that address, as examined, are available in
5204the convenience variable @code{$__}.
5205
5206If the @code{x} command has a repeat count, the address and contents saved
5207are from the last memory unit printed; this is not the same as the last
5208address printed if several units were printed on the last line of output.
5209
6d2ebf8b 5210@node Auto Display
c906108c
SS
5211@section Automatic display
5212@cindex automatic display
5213@cindex display of expressions
5214
5215If you find that you want to print the value of an expression frequently
5216(to see how it changes), you might want to add it to the @dfn{automatic
5217display list} so that @value{GDBN} prints its value each time your program stops.
5218Each expression added to the list is given a number to identify it;
5219to remove an expression from the list, you specify that number.
5220The automatic display looks like this:
5221
474c8240 5222@smallexample
c906108c
SS
52232: foo = 38
52243: bar[5] = (struct hack *) 0x3804
474c8240 5225@end smallexample
c906108c
SS
5226
5227@noindent
5228This display shows item numbers, expressions and their current values. As with
5229displays you request manually using @code{x} or @code{print}, you can
5230specify the output format you prefer; in fact, @code{display} decides
5231whether to use @code{print} or @code{x} depending on how elaborate your
5232format specification is---it uses @code{x} if you specify a unit size,
5233or one of the two formats (@samp{i} and @samp{s}) that are only
5234supported by @code{x}; otherwise it uses @code{print}.
5235
5236@table @code
5237@kindex display
d4f3574e
SS
5238@item display @var{expr}
5239Add the expression @var{expr} to the list of expressions to display
c906108c
SS
5240each time your program stops. @xref{Expressions, ,Expressions}.
5241
5242@code{display} does not repeat if you press @key{RET} again after using it.
5243
d4f3574e 5244@item display/@var{fmt} @var{expr}
c906108c 5245For @var{fmt} specifying only a display format and not a size or
d4f3574e 5246count, add the expression @var{expr} to the auto-display list but
c906108c
SS
5247arrange to display it each time in the specified format @var{fmt}.
5248@xref{Output Formats,,Output formats}.
5249
5250@item display/@var{fmt} @var{addr}
5251For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
5252number of units, add the expression @var{addr} as a memory address to
5253be examined each time your program stops. Examining means in effect
5254doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining memory}.
5255@end table
5256
5257For example, @samp{display/i $pc} can be helpful, to see the machine
5258instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 5259is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
5260
5261@table @code
5262@kindex delete display
5263@kindex undisplay
5264@item undisplay @var{dnums}@dots{}
5265@itemx delete display @var{dnums}@dots{}
5266Remove item numbers @var{dnums} from the list of expressions to display.
5267
5268@code{undisplay} does not repeat if you press @key{RET} after using it.
5269(Otherwise you would just get the error @samp{No display number @dots{}}.)
5270
5271@kindex disable display
5272@item disable display @var{dnums}@dots{}
5273Disable the display of item numbers @var{dnums}. A disabled display
5274item is not printed automatically, but is not forgotten. It may be
5275enabled again later.
5276
5277@kindex enable display
5278@item enable display @var{dnums}@dots{}
5279Enable display of item numbers @var{dnums}. It becomes effective once
5280again in auto display of its expression, until you specify otherwise.
5281
5282@item display
5283Display the current values of the expressions on the list, just as is
5284done when your program stops.
5285
5286@kindex info display
5287@item info display
5288Print the list of expressions previously set up to display
5289automatically, each one with its item number, but without showing the
5290values. This includes disabled expressions, which are marked as such.
5291It also includes expressions which would not be displayed right now
5292because they refer to automatic variables not currently available.
5293@end table
5294
15387254 5295@cindex display disabled out of scope
c906108c
SS
5296If a display expression refers to local variables, then it does not make
5297sense outside the lexical context for which it was set up. Such an
5298expression is disabled when execution enters a context where one of its
5299variables is not defined. For example, if you give the command
5300@code{display last_char} while inside a function with an argument
5301@code{last_char}, @value{GDBN} displays this argument while your program
5302continues to stop inside that function. When it stops elsewhere---where
5303there is no variable @code{last_char}---the display is disabled
5304automatically. The next time your program stops where @code{last_char}
5305is meaningful, you can enable the display expression once again.
5306
6d2ebf8b 5307@node Print Settings
c906108c
SS
5308@section Print settings
5309
5310@cindex format options
5311@cindex print settings
5312@value{GDBN} provides the following ways to control how arrays, structures,
5313and symbols are printed.
5314
5315@noindent
5316These settings are useful for debugging programs in any language:
5317
5318@table @code
4644b6e3 5319@kindex set print
c906108c
SS
5320@item set print address
5321@itemx set print address on
4644b6e3 5322@cindex print/don't print memory addresses
c906108c
SS
5323@value{GDBN} prints memory addresses showing the location of stack
5324traces, structure values, pointer values, breakpoints, and so forth,
5325even when it also displays the contents of those addresses. The default
5326is @code{on}. For example, this is what a stack frame display looks like with
5327@code{set print address on}:
5328
5329@smallexample
5330@group
5331(@value{GDBP}) f
5332#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
5333 at input.c:530
5334530 if (lquote != def_lquote)
5335@end group
5336@end smallexample
5337
5338@item set print address off
5339Do not print addresses when displaying their contents. For example,
5340this is the same stack frame displayed with @code{set print address off}:
5341
5342@smallexample
5343@group
5344(@value{GDBP}) set print addr off
5345(@value{GDBP}) f
5346#0 set_quotes (lq="<<", rq=">>") at input.c:530
5347530 if (lquote != def_lquote)
5348@end group
5349@end smallexample
5350
5351You can use @samp{set print address off} to eliminate all machine
5352dependent displays from the @value{GDBN} interface. For example, with
5353@code{print address off}, you should get the same text for backtraces on
5354all machines---whether or not they involve pointer arguments.
5355
4644b6e3 5356@kindex show print
c906108c
SS
5357@item show print address
5358Show whether or not addresses are to be printed.
5359@end table
5360
5361When @value{GDBN} prints a symbolic address, it normally prints the
5362closest earlier symbol plus an offset. If that symbol does not uniquely
5363identify the address (for example, it is a name whose scope is a single
5364source file), you may need to clarify. One way to do this is with
5365@code{info line}, for example @samp{info line *0x4537}. Alternately,
5366you can set @value{GDBN} to print the source file and line number when
5367it prints a symbolic address:
5368
5369@table @code
c906108c 5370@item set print symbol-filename on
4644b6e3 5371@cindex closest symbol and offset for an address
c906108c
SS
5372Tell @value{GDBN} to print the source file name and line number of a
5373symbol in the symbolic form of an address.
5374
5375@item set print symbol-filename off
5376Do not print source file name and line number of a symbol. This is the
5377default.
5378
c906108c
SS
5379@item show print symbol-filename
5380Show whether or not @value{GDBN} will print the source file name and
5381line number of a symbol in the symbolic form of an address.
5382@end table
5383
5384Another situation where it is helpful to show symbol filenames and line
5385numbers is when disassembling code; @value{GDBN} shows you the line
5386number and source file that corresponds to each instruction.
5387
5388Also, you may wish to see the symbolic form only if the address being
5389printed is reasonably close to the closest earlier symbol:
5390
5391@table @code
c906108c 5392@item set print max-symbolic-offset @var{max-offset}
4644b6e3 5393@cindex maximum value for offset of closest symbol
c906108c
SS
5394Tell @value{GDBN} to only display the symbolic form of an address if the
5395offset between the closest earlier symbol and the address is less than
5d161b24 5396@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
5397to always print the symbolic form of an address if any symbol precedes it.
5398
c906108c
SS
5399@item show print max-symbolic-offset
5400Ask how large the maximum offset is that @value{GDBN} prints in a
5401symbolic address.
5402@end table
5403
5404@cindex wild pointer, interpreting
5405@cindex pointer, finding referent
5406If you have a pointer and you are not sure where it points, try
5407@samp{set print symbol-filename on}. Then you can determine the name
5408and source file location of the variable where it points, using
5409@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
5410For example, here @value{GDBN} shows that a variable @code{ptt} points
5411at another variable @code{t}, defined in @file{hi2.c}:
5412
474c8240 5413@smallexample
c906108c
SS
5414(@value{GDBP}) set print symbol-filename on
5415(@value{GDBP}) p/a ptt
5416$4 = 0xe008 <t in hi2.c>
474c8240 5417@end smallexample
c906108c
SS
5418
5419@quotation
5420@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
5421does not show the symbol name and filename of the referent, even with
5422the appropriate @code{set print} options turned on.
5423@end quotation
5424
5425Other settings control how different kinds of objects are printed:
5426
5427@table @code
c906108c
SS
5428@item set print array
5429@itemx set print array on
4644b6e3 5430@cindex pretty print arrays
c906108c
SS
5431Pretty print arrays. This format is more convenient to read,
5432but uses more space. The default is off.
5433
5434@item set print array off
5435Return to compressed format for arrays.
5436
c906108c
SS
5437@item show print array
5438Show whether compressed or pretty format is selected for displaying
5439arrays.
5440
c906108c 5441@item set print elements @var{number-of-elements}
4644b6e3 5442@cindex number of array elements to print
c906108c
SS
5443Set a limit on how many elements of an array @value{GDBN} will print.
5444If @value{GDBN} is printing a large array, it stops printing after it has
5445printed the number of elements set by the @code{set print elements} command.
5446This limit also applies to the display of strings.
d4f3574e 5447When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
5448Setting @var{number-of-elements} to zero means that the printing is unlimited.
5449
c906108c
SS
5450@item show print elements
5451Display the number of elements of a large array that @value{GDBN} will print.
5452If the number is 0, then the printing is unlimited.
5453
c906108c 5454@item set print null-stop
4644b6e3 5455@cindex @sc{null} elements in arrays
c906108c 5456Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 5457@sc{null} is encountered. This is useful when large arrays actually
c906108c 5458contain only short strings.
d4f3574e 5459The default is off.
c906108c 5460
c906108c 5461@item set print pretty on
5d161b24 5462Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
5463per line, like this:
5464
5465@smallexample
5466@group
5467$1 = @{
5468 next = 0x0,
5469 flags = @{
5470 sweet = 1,
5471 sour = 1
5472 @},
5473 meat = 0x54 "Pork"
5474@}
5475@end group
5476@end smallexample
5477
5478@item set print pretty off
5479Cause @value{GDBN} to print structures in a compact format, like this:
5480
5481@smallexample
5482@group
5483$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
5484meat = 0x54 "Pork"@}
5485@end group
5486@end smallexample
5487
5488@noindent
5489This is the default format.
5490
c906108c
SS
5491@item show print pretty
5492Show which format @value{GDBN} is using to print structures.
5493
c906108c 5494@item set print sevenbit-strings on
4644b6e3
EZ
5495@cindex eight-bit characters in strings
5496@cindex octal escapes in strings
c906108c
SS
5497Print using only seven-bit characters; if this option is set,
5498@value{GDBN} displays any eight-bit characters (in strings or
5499character values) using the notation @code{\}@var{nnn}. This setting is
5500best if you are working in English (@sc{ascii}) and you use the
5501high-order bit of characters as a marker or ``meta'' bit.
5502
5503@item set print sevenbit-strings off
5504Print full eight-bit characters. This allows the use of more
5505international character sets, and is the default.
5506
c906108c
SS
5507@item show print sevenbit-strings
5508Show whether or not @value{GDBN} is printing only seven-bit characters.
5509
c906108c 5510@item set print union on
4644b6e3 5511@cindex unions in structures, printing
5d161b24 5512Tell @value{GDBN} to print unions which are contained in structures. This
c906108c
SS
5513is the default setting.
5514
5515@item set print union off
5516Tell @value{GDBN} not to print unions which are contained in structures.
5517
c906108c
SS
5518@item show print union
5519Ask @value{GDBN} whether or not it will print unions which are contained in
5520structures.
5521
5522For example, given the declarations
5523
5524@smallexample
5525typedef enum @{Tree, Bug@} Species;
5526typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 5527typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
5528 Bug_forms;
5529
5530struct thing @{
5531 Species it;
5532 union @{
5533 Tree_forms tree;
5534 Bug_forms bug;
5535 @} form;
5536@};
5537
5538struct thing foo = @{Tree, @{Acorn@}@};
5539@end smallexample
5540
5541@noindent
5542with @code{set print union on} in effect @samp{p foo} would print
5543
5544@smallexample
5545$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
5546@end smallexample
5547
5548@noindent
5549and with @code{set print union off} in effect it would print
5550
5551@smallexample
5552$1 = @{it = Tree, form = @{...@}@}
5553@end smallexample
5554@end table
5555
c906108c
SS
5556@need 1000
5557@noindent
b37052ae 5558These settings are of interest when debugging C@t{++} programs:
c906108c
SS
5559
5560@table @code
4644b6e3 5561@cindex demangling C@t{++} names
c906108c
SS
5562@item set print demangle
5563@itemx set print demangle on
b37052ae 5564Print C@t{++} names in their source form rather than in the encoded
c906108c 5565(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 5566linkage. The default is on.
c906108c 5567
c906108c 5568@item show print demangle
b37052ae 5569Show whether C@t{++} names are printed in mangled or demangled form.
c906108c 5570
c906108c
SS
5571@item set print asm-demangle
5572@itemx set print asm-demangle on
b37052ae 5573Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
5574in assembler code printouts such as instruction disassemblies.
5575The default is off.
5576
c906108c 5577@item show print asm-demangle
b37052ae 5578Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
5579or demangled form.
5580
b37052ae
EZ
5581@cindex C@t{++} symbol decoding style
5582@cindex symbol decoding style, C@t{++}
c906108c
SS
5583@item set demangle-style @var{style}
5584Choose among several encoding schemes used by different compilers to
b37052ae 5585represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
5586
5587@table @code
5588@item auto
5589Allow @value{GDBN} to choose a decoding style by inspecting your program.
5590
5591@item gnu
b37052ae 5592Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c 5593This is the default.
c906108c
SS
5594
5595@item hp
b37052ae 5596Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
5597
5598@item lucid
b37052ae 5599Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
5600
5601@item arm
b37052ae 5602Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
5603@strong{Warning:} this setting alone is not sufficient to allow
5604debugging @code{cfront}-generated executables. @value{GDBN} would
5605require further enhancement to permit that.
5606
5607@end table
5608If you omit @var{style}, you will see a list of possible formats.
5609
c906108c 5610@item show demangle-style
b37052ae 5611Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c 5612
c906108c
SS
5613@item set print object
5614@itemx set print object on
4644b6e3 5615@cindex derived type of an object, printing
c906108c
SS
5616When displaying a pointer to an object, identify the @emph{actual}
5617(derived) type of the object rather than the @emph{declared} type, using
5618the virtual function table.
5619
5620@item set print object off
5621Display only the declared type of objects, without reference to the
5622virtual function table. This is the default setting.
5623
c906108c
SS
5624@item show print object
5625Show whether actual, or declared, object types are displayed.
5626
c906108c
SS
5627@item set print static-members
5628@itemx set print static-members on
4644b6e3 5629@cindex static members of C@t{++} objects
b37052ae 5630Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
5631
5632@item set print static-members off
b37052ae 5633Do not print static members when displaying a C@t{++} object.
c906108c 5634
c906108c 5635@item show print static-members
b37052ae 5636Show whether C@t{++} static members are printed, or not.
c906108c
SS
5637
5638@c These don't work with HP ANSI C++ yet.
c906108c
SS
5639@item set print vtbl
5640@itemx set print vtbl on
4644b6e3 5641@cindex pretty print C@t{++} virtual function tables
b37052ae 5642Pretty print C@t{++} virtual function tables. The default is off.
c906108c 5643(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 5644ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
5645
5646@item set print vtbl off
b37052ae 5647Do not pretty print C@t{++} virtual function tables.
c906108c 5648
c906108c 5649@item show print vtbl
b37052ae 5650Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 5651@end table
c906108c 5652
6d2ebf8b 5653@node Value History
c906108c
SS
5654@section Value history
5655
5656@cindex value history
5d161b24
DB
5657Values printed by the @code{print} command are saved in the @value{GDBN}
5658@dfn{value history}. This allows you to refer to them in other expressions.
5659Values are kept until the symbol table is re-read or discarded
5660(for example with the @code{file} or @code{symbol-file} commands).
5661When the symbol table changes, the value history is discarded,
5662since the values may contain pointers back to the types defined in the
c906108c
SS
5663symbol table.
5664
5665@cindex @code{$}
5666@cindex @code{$$}
5667@cindex history number
5668The values printed are given @dfn{history numbers} by which you can
5669refer to them. These are successive integers starting with one.
5670@code{print} shows you the history number assigned to a value by
5671printing @samp{$@var{num} = } before the value; here @var{num} is the
5672history number.
5673
5674To refer to any previous value, use @samp{$} followed by the value's
5675history number. The way @code{print} labels its output is designed to
5676remind you of this. Just @code{$} refers to the most recent value in
5677the history, and @code{$$} refers to the value before that.
5678@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
5679is the value just prior to @code{$$}, @code{$$1} is equivalent to
5680@code{$$}, and @code{$$0} is equivalent to @code{$}.
5681
5682For example, suppose you have just printed a pointer to a structure and
5683want to see the contents of the structure. It suffices to type
5684
474c8240 5685@smallexample
c906108c 5686p *$
474c8240 5687@end smallexample
c906108c
SS
5688
5689If you have a chain of structures where the component @code{next} points
5690to the next one, you can print the contents of the next one with this:
5691
474c8240 5692@smallexample
c906108c 5693p *$.next
474c8240 5694@end smallexample
c906108c
SS
5695
5696@noindent
5697You can print successive links in the chain by repeating this
5698command---which you can do by just typing @key{RET}.
5699
5700Note that the history records values, not expressions. If the value of
5701@code{x} is 4 and you type these commands:
5702
474c8240 5703@smallexample
c906108c
SS
5704print x
5705set x=5
474c8240 5706@end smallexample
c906108c
SS
5707
5708@noindent
5709then the value recorded in the value history by the @code{print} command
5710remains 4 even though the value of @code{x} has changed.
5711
5712@table @code
5713@kindex show values
5714@item show values
5715Print the last ten values in the value history, with their item numbers.
5716This is like @samp{p@ $$9} repeated ten times, except that @code{show
5717values} does not change the history.
5718
5719@item show values @var{n}
5720Print ten history values centered on history item number @var{n}.
5721
5722@item show values +
5723Print ten history values just after the values last printed. If no more
5724values are available, @code{show values +} produces no display.
5725@end table
5726
5727Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
5728same effect as @samp{show values +}.
5729
6d2ebf8b 5730@node Convenience Vars
c906108c
SS
5731@section Convenience variables
5732
5733@cindex convenience variables
5734@value{GDBN} provides @dfn{convenience variables} that you can use within
5735@value{GDBN} to hold on to a value and refer to it later. These variables
5736exist entirely within @value{GDBN}; they are not part of your program, and
5737setting a convenience variable has no direct effect on further execution
5738of your program. That is why you can use them freely.
5739
5740Convenience variables are prefixed with @samp{$}. Any name preceded by
5741@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 5742the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c
SS
5743(Value history references, in contrast, are @emph{numbers} preceded
5744by @samp{$}. @xref{Value History, ,Value history}.)
5745
5746You can save a value in a convenience variable with an assignment
5747expression, just as you would set a variable in your program.
5748For example:
5749
474c8240 5750@smallexample
c906108c 5751set $foo = *object_ptr
474c8240 5752@end smallexample
c906108c
SS
5753
5754@noindent
5755would save in @code{$foo} the value contained in the object pointed to by
5756@code{object_ptr}.
5757
5758Using a convenience variable for the first time creates it, but its
5759value is @code{void} until you assign a new value. You can alter the
5760value with another assignment at any time.
5761
5762Convenience variables have no fixed types. You can assign a convenience
5763variable any type of value, including structures and arrays, even if
5764that variable already has a value of a different type. The convenience
5765variable, when used as an expression, has the type of its current value.
5766
5767@table @code
5768@kindex show convenience
5769@item show convenience
5770Print a list of convenience variables used so far, and their values.
d4f3574e 5771Abbreviated @code{show conv}.
c906108c
SS
5772@end table
5773
5774One of the ways to use a convenience variable is as a counter to be
5775incremented or a pointer to be advanced. For example, to print
5776a field from successive elements of an array of structures:
5777
474c8240 5778@smallexample
c906108c
SS
5779set $i = 0
5780print bar[$i++]->contents
474c8240 5781@end smallexample
c906108c 5782
d4f3574e
SS
5783@noindent
5784Repeat that command by typing @key{RET}.
c906108c
SS
5785
5786Some convenience variables are created automatically by @value{GDBN} and given
5787values likely to be useful.
5788
5789@table @code
41afff9a 5790@vindex $_@r{, convenience variable}
c906108c
SS
5791@item $_
5792The variable @code{$_} is automatically set by the @code{x} command to
5793the last address examined (@pxref{Memory, ,Examining memory}). Other
5794commands which provide a default address for @code{x} to examine also
5795set @code{$_} to that address; these commands include @code{info line}
5796and @code{info breakpoint}. The type of @code{$_} is @code{void *}
5797except when set by the @code{x} command, in which case it is a pointer
5798to the type of @code{$__}.
5799
41afff9a 5800@vindex $__@r{, convenience variable}
c906108c
SS
5801@item $__
5802The variable @code{$__} is automatically set by the @code{x} command
5803to the value found in the last address examined. Its type is chosen
5804to match the format in which the data was printed.
5805
5806@item $_exitcode
41afff9a 5807@vindex $_exitcode@r{, convenience variable}
c906108c
SS
5808The variable @code{$_exitcode} is automatically set to the exit code when
5809the program being debugged terminates.
5810@end table
5811
53a5351d
JM
5812On HP-UX systems, if you refer to a function or variable name that
5813begins with a dollar sign, @value{GDBN} searches for a user or system
5814name first, before it searches for a convenience variable.
c906108c 5815
6d2ebf8b 5816@node Registers
c906108c
SS
5817@section Registers
5818
5819@cindex registers
5820You can refer to machine register contents, in expressions, as variables
5821with names starting with @samp{$}. The names of registers are different
5822for each machine; use @code{info registers} to see the names used on
5823your machine.
5824
5825@table @code
5826@kindex info registers
5827@item info registers
5828Print the names and values of all registers except floating-point
c85508ee 5829and vector registers (in the selected stack frame).
c906108c
SS
5830
5831@kindex info all-registers
5832@cindex floating point registers
5833@item info all-registers
5834Print the names and values of all registers, including floating-point
c85508ee 5835and vector registers (in the selected stack frame).
c906108c
SS
5836
5837@item info registers @var{regname} @dots{}
5838Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
5839As discussed in detail below, register values are normally relative to
5840the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
5841the machine you are using, with or without the initial @samp{$}.
5842@end table
5843
5844@value{GDBN} has four ``standard'' register names that are available (in
5845expressions) on most machines---whenever they do not conflict with an
5846architecture's canonical mnemonics for registers. The register names
5847@code{$pc} and @code{$sp} are used for the program counter register and
5848the stack pointer. @code{$fp} is used for a register that contains a
5849pointer to the current stack frame, and @code{$ps} is used for a
5850register that contains the processor status. For example,
5851you could print the program counter in hex with
5852
474c8240 5853@smallexample
c906108c 5854p/x $pc
474c8240 5855@end smallexample
c906108c
SS
5856
5857@noindent
5858or print the instruction to be executed next with
5859
474c8240 5860@smallexample
c906108c 5861x/i $pc
474c8240 5862@end smallexample
c906108c
SS
5863
5864@noindent
5865or add four to the stack pointer@footnote{This is a way of removing
5866one word from the stack, on machines where stacks grow downward in
5867memory (most machines, nowadays). This assumes that the innermost
5868stack frame is selected; setting @code{$sp} is not allowed when other
5869stack frames are selected. To pop entire frames off the stack,
5870regardless of machine architecture, use @code{return};
d4f3574e 5871see @ref{Returning, ,Returning from a function}.} with
c906108c 5872
474c8240 5873@smallexample
c906108c 5874set $sp += 4
474c8240 5875@end smallexample
c906108c
SS
5876
5877Whenever possible, these four standard register names are available on
5878your machine even though the machine has different canonical mnemonics,
5879so long as there is no conflict. The @code{info registers} command
5880shows the canonical names. For example, on the SPARC, @code{info
5881registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
5882can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
5883is an alias for the @sc{eflags} register.
c906108c
SS
5884
5885@value{GDBN} always considers the contents of an ordinary register as an
5886integer when the register is examined in this way. Some machines have
5887special registers which can hold nothing but floating point; these
5888registers are considered to have floating point values. There is no way
5889to refer to the contents of an ordinary register as floating point value
5890(although you can @emph{print} it as a floating point value with
5891@samp{print/f $@var{regname}}).
5892
5893Some registers have distinct ``raw'' and ``virtual'' data formats. This
5894means that the data format in which the register contents are saved by
5895the operating system is not the same one that your program normally
5896sees. For example, the registers of the 68881 floating point
5897coprocessor are always saved in ``extended'' (raw) format, but all C
5898programs expect to work with ``double'' (virtual) format. In such
5d161b24 5899cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
5900that makes sense for your program), but the @code{info registers} command
5901prints the data in both formats.
5902
5903Normally, register values are relative to the selected stack frame
5904(@pxref{Selection, ,Selecting a frame}). This means that you get the
5905value that the register would contain if all stack frames farther in
5906were exited and their saved registers restored. In order to see the
5907true contents of hardware registers, you must select the innermost
5908frame (with @samp{frame 0}).
5909
5910However, @value{GDBN} must deduce where registers are saved, from the machine
5911code generated by your compiler. If some registers are not saved, or if
5912@value{GDBN} is unable to locate the saved registers, the selected stack
5913frame makes no difference.
5914
6d2ebf8b 5915@node Floating Point Hardware
c906108c
SS
5916@section Floating point hardware
5917@cindex floating point
5918
5919Depending on the configuration, @value{GDBN} may be able to give
5920you more information about the status of the floating point hardware.
5921
5922@table @code
5923@kindex info float
5924@item info float
5925Display hardware-dependent information about the floating
5926point unit. The exact contents and layout vary depending on the
5927floating point chip. Currently, @samp{info float} is supported on
5928the ARM and x86 machines.
5929@end table
c906108c 5930
e76f1f2e
AC
5931@node Vector Unit
5932@section Vector Unit
5933@cindex vector unit
5934
5935Depending on the configuration, @value{GDBN} may be able to give you
5936more information about the status of the vector unit.
5937
5938@table @code
5939@kindex info vector
5940@item info vector
5941Display information about the vector unit. The exact contents and
5942layout vary depending on the hardware.
5943@end table
5944
b383017d
RM
5945@node Auxiliary Vector
5946@section Operating system auxiliary vector
5947@cindex auxiliary vector
5948@cindex vector, auxiliary
5949
5950Some operating systems supply an @dfn{auxiliary vector} to programs at
5951startup. This is akin to the arguments and environment that you
5952specify for a program, but contains a system-dependent variety of
5953binary values that tell system libraries important details about the
5954hardware, operating system, and process. Each value's purpose is
5955identified by an integer tag; the meanings are well-known but system-specific.
5956Depending on the configuration and operating system facilities,
5957@value{GDBN} may be able to show you this information.
5958
5959@table @code
5960@kindex info auxv
5961@item info auxv
5962Display the auxiliary vector of the inferior, which can be either a
e4937fc1 5963live process or a core dump file. @value{GDBN} prints each tag value
b383017d
RM
5964numerically, and also shows names and text descriptions for recognized
5965tags. Some values in the vector are numbers, some bit masks, and some
e4937fc1 5966pointers to strings or other data. @value{GDBN} displays each value in the
b383017d
RM
5967most appropriate form for a recognized tag, and in hexadecimal for
5968an unrecognized tag.
5969@end table
5970
29e57380 5971@node Memory Region Attributes
b383017d 5972@section Memory region attributes
29e57380
C
5973@cindex memory region attributes
5974
b383017d
RM
5975@dfn{Memory region attributes} allow you to describe special handling
5976required by regions of your target's memory. @value{GDBN} uses attributes
29e57380
C
5977to determine whether to allow certain types of memory accesses; whether to
5978use specific width accesses; and whether to cache target memory.
5979
5980Defined memory regions can be individually enabled and disabled. When a
5981memory region is disabled, @value{GDBN} uses the default attributes when
5982accessing memory in that region. Similarly, if no memory regions have
5983been defined, @value{GDBN} uses the default attributes when accessing
5984all memory.
5985
b383017d 5986When a memory region is defined, it is given a number to identify it;
29e57380
C
5987to enable, disable, or remove a memory region, you specify that number.
5988
5989@table @code
5990@kindex mem
bfac230e
DH
5991@item mem @var{lower} @var{upper} @var{attributes}@dots{}
5992Define memory region bounded by @var{lower} and @var{upper} with
5993attributes @var{attributes}@dots{}. Note that @var{upper} == 0 is a
5994special case: it is treated as the the target's maximum memory address.
5995(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
29e57380
C
5996
5997@kindex delete mem
5998@item delete mem @var{nums}@dots{}
59649f2e 5999Remove memory regions @var{nums}@dots{}.
29e57380
C
6000
6001@kindex disable mem
6002@item disable mem @var{nums}@dots{}
59649f2e 6003Disable memory regions @var{nums}@dots{}.
b383017d 6004A disabled memory region is not forgotten.
29e57380
C
6005It may be enabled again later.
6006
6007@kindex enable mem
6008@item enable mem @var{nums}@dots{}
59649f2e 6009Enable memory regions @var{nums}@dots{}.
29e57380
C
6010
6011@kindex info mem
6012@item info mem
6013Print a table of all defined memory regions, with the following columns
6014for each region.
6015
6016@table @emph
6017@item Memory Region Number
6018@item Enabled or Disabled.
b383017d 6019Enabled memory regions are marked with @samp{y}.
29e57380
C
6020Disabled memory regions are marked with @samp{n}.
6021
6022@item Lo Address
6023The address defining the inclusive lower bound of the memory region.
6024
6025@item Hi Address
6026The address defining the exclusive upper bound of the memory region.
6027
6028@item Attributes
6029The list of attributes set for this memory region.
6030@end table
6031@end table
6032
6033
6034@subsection Attributes
6035
b383017d 6036@subsubsection Memory Access Mode
29e57380
C
6037The access mode attributes set whether @value{GDBN} may make read or
6038write accesses to a memory region.
6039
6040While these attributes prevent @value{GDBN} from performing invalid
6041memory accesses, they do nothing to prevent the target system, I/O DMA,
6042etc. from accessing memory.
6043
6044@table @code
6045@item ro
6046Memory is read only.
6047@item wo
6048Memory is write only.
6049@item rw
6ca652b0 6050Memory is read/write. This is the default.
29e57380
C
6051@end table
6052
6053@subsubsection Memory Access Size
6054The acccess size attributes tells @value{GDBN} to use specific sized
6055accesses in the memory region. Often memory mapped device registers
6056require specific sized accesses. If no access size attribute is
6057specified, @value{GDBN} may use accesses of any size.
6058
6059@table @code
6060@item 8
6061Use 8 bit memory accesses.
6062@item 16
6063Use 16 bit memory accesses.
6064@item 32
6065Use 32 bit memory accesses.
6066@item 64
6067Use 64 bit memory accesses.
6068@end table
6069
6070@c @subsubsection Hardware/Software Breakpoints
6071@c The hardware/software breakpoint attributes set whether @value{GDBN}
6072@c will use hardware or software breakpoints for the internal breakpoints
6073@c used by the step, next, finish, until, etc. commands.
6074@c
6075@c @table @code
6076@c @item hwbreak
b383017d 6077@c Always use hardware breakpoints
29e57380
C
6078@c @item swbreak (default)
6079@c @end table
6080
6081@subsubsection Data Cache
6082The data cache attributes set whether @value{GDBN} will cache target
6083memory. While this generally improves performance by reducing debug
6084protocol overhead, it can lead to incorrect results because @value{GDBN}
6085does not know about volatile variables or memory mapped device
6086registers.
6087
6088@table @code
6089@item cache
b383017d 6090Enable @value{GDBN} to cache target memory.
6ca652b0
EZ
6091@item nocache
6092Disable @value{GDBN} from caching target memory. This is the default.
29e57380
C
6093@end table
6094
6095@c @subsubsection Memory Write Verification
b383017d 6096@c The memory write verification attributes set whether @value{GDBN}
29e57380
C
6097@c will re-reads data after each write to verify the write was successful.
6098@c
6099@c @table @code
6100@c @item verify
6101@c @item noverify (default)
6102@c @end table
6103
16d9dec6
MS
6104@node Dump/Restore Files
6105@section Copy between memory and a file
6106@cindex dump/restore files
6107@cindex append data to a file
6108@cindex dump data to a file
6109@cindex restore data from a file
16d9dec6 6110
df5215a6
JB
6111You can use the commands @code{dump}, @code{append}, and
6112@code{restore} to copy data between target memory and a file. The
6113@code{dump} and @code{append} commands write data to a file, and the
6114@code{restore} command reads data from a file back into the inferior's
6115memory. Files may be in binary, Motorola S-record, Intel hex, or
6116Tektronix Hex format; however, @value{GDBN} can only append to binary
6117files.
6118
6119@table @code
6120
6121@kindex dump
6122@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
6123@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
6124Dump the contents of memory from @var{start_addr} to @var{end_addr},
6125or the value of @var{expr}, to @var{filename} in the given format.
16d9dec6 6126
df5215a6 6127The @var{format} parameter may be any one of:
16d9dec6 6128@table @code
df5215a6
JB
6129@item binary
6130Raw binary form.
6131@item ihex
6132Intel hex format.
6133@item srec
6134Motorola S-record format.
6135@item tekhex
6136Tektronix Hex format.
6137@end table
6138
6139@value{GDBN} uses the same definitions of these formats as the
6140@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
6141@var{format} is omitted, @value{GDBN} dumps the data in raw binary
6142form.
6143
6144@kindex append
6145@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
6146@itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
6147Append the contents of memory from @var{start_addr} to @var{end_addr},
6148or the value of @var{expr}, to @var{filename}, in raw binary form.
6149(@value{GDBN} can only append data to files in raw binary form.)
6150
6151@kindex restore
6152@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
6153Restore the contents of file @var{filename} into memory. The
6154@code{restore} command can automatically recognize any known @sc{bfd}
6155file format, except for raw binary. To restore a raw binary file you
6156must specify the optional keyword @code{binary} after the filename.
16d9dec6 6157
b383017d 6158If @var{bias} is non-zero, its value will be added to the addresses
16d9dec6
MS
6159contained in the file. Binary files always start at address zero, so
6160they will be restored at address @var{bias}. Other bfd files have
6161a built-in location; they will be restored at offset @var{bias}
6162from that location.
6163
6164If @var{start} and/or @var{end} are non-zero, then only data between
6165file offset @var{start} and file offset @var{end} will be restored.
b383017d 6166These offsets are relative to the addresses in the file, before
16d9dec6
MS
6167the @var{bias} argument is applied.
6168
6169@end table
6170
a0eb71c5
KB
6171@node Character Sets
6172@section Character Sets
6173@cindex character sets
6174@cindex charset
6175@cindex translating between character sets
6176@cindex host character set
6177@cindex target character set
6178
6179If the program you are debugging uses a different character set to
6180represent characters and strings than the one @value{GDBN} uses itself,
6181@value{GDBN} can automatically translate between the character sets for
6182you. The character set @value{GDBN} uses we call the @dfn{host
6183character set}; the one the inferior program uses we call the
6184@dfn{target character set}.
6185
6186For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
6187uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
6188remote protocol (@pxref{Remote,Remote Debugging}) to debug a program
6189running on an IBM mainframe, which uses the @sc{ebcdic} character set,
6190then the host character set is Latin-1, and the target character set is
6191@sc{ebcdic}. If you give @value{GDBN} the command @code{set
e33d66ec 6192target-charset EBCDIC-US}, then @value{GDBN} translates between
a0eb71c5
KB
6193@sc{ebcdic} and Latin 1 as you print character or string values, or use
6194character and string literals in expressions.
6195
6196@value{GDBN} has no way to automatically recognize which character set
6197the inferior program uses; you must tell it, using the @code{set
6198target-charset} command, described below.
6199
6200Here are the commands for controlling @value{GDBN}'s character set
6201support:
6202
6203@table @code
6204@item set target-charset @var{charset}
6205@kindex set target-charset
6206Set the current target character set to @var{charset}. We list the
e33d66ec
EZ
6207character set names @value{GDBN} recognizes below, but if you type
6208@code{set target-charset} followed by @key{TAB}@key{TAB}, @value{GDBN} will
6209list the target character sets it supports.
a0eb71c5
KB
6210@end table
6211
6212@table @code
6213@item set host-charset @var{charset}
6214@kindex set host-charset
6215Set the current host character set to @var{charset}.
6216
6217By default, @value{GDBN} uses a host character set appropriate to the
6218system it is running on; you can override that default using the
6219@code{set host-charset} command.
6220
6221@value{GDBN} can only use certain character sets as its host character
6222set. We list the character set names @value{GDBN} recognizes below, and
e33d66ec
EZ
6223indicate which can be host character sets, but if you type
6224@code{set target-charset} followed by @key{TAB}@key{TAB}, @value{GDBN} will
6225list the host character sets it supports.
a0eb71c5
KB
6226
6227@item set charset @var{charset}
6228@kindex set charset
e33d66ec
EZ
6229Set the current host and target character sets to @var{charset}. As
6230above, if you type @code{set charset} followed by @key{TAB}@key{TAB},
6231@value{GDBN} will list the name of the character sets that can be used
6232for both host and target.
6233
a0eb71c5
KB
6234
6235@item show charset
a0eb71c5 6236@kindex show charset
b383017d 6237Show the names of the current host and target charsets.
e33d66ec
EZ
6238
6239@itemx show host-charset
a0eb71c5 6240@kindex show host-charset
b383017d 6241Show the name of the current host charset.
e33d66ec
EZ
6242
6243@itemx show target-charset
a0eb71c5 6244@kindex show target-charset
b383017d 6245Show the name of the current target charset.
a0eb71c5
KB
6246
6247@end table
6248
6249@value{GDBN} currently includes support for the following character
6250sets:
6251
6252@table @code
6253
6254@item ASCII
6255@cindex ASCII character set
6256Seven-bit U.S. @sc{ascii}. @value{GDBN} can use this as its host
6257character set.
6258
6259@item ISO-8859-1
6260@cindex ISO 8859-1 character set
6261@cindex ISO Latin 1 character set
e33d66ec 6262The ISO Latin 1 character set. This extends @sc{ascii} with accented
a0eb71c5
KB
6263characters needed for French, German, and Spanish. @value{GDBN} can use
6264this as its host character set.
6265
6266@item EBCDIC-US
6267@itemx IBM1047
6268@cindex EBCDIC character set
6269@cindex IBM1047 character set
6270Variants of the @sc{ebcdic} character set, used on some of IBM's
6271mainframe operating systems. (@sc{gnu}/Linux on the S/390 uses U.S. @sc{ascii}.)
6272@value{GDBN} cannot use these as its host character set.
6273
6274@end table
6275
6276Note that these are all single-byte character sets. More work inside
6277GDB is needed to support multi-byte or variable-width character
6278encodings, like the UTF-8 and UCS-2 encodings of Unicode.
6279
6280Here is an example of @value{GDBN}'s character set support in action.
6281Assume that the following source code has been placed in the file
6282@file{charset-test.c}:
6283
6284@smallexample
6285#include <stdio.h>
6286
6287char ascii_hello[]
6288 = @{72, 101, 108, 108, 111, 44, 32, 119,
6289 111, 114, 108, 100, 33, 10, 0@};
6290char ibm1047_hello[]
6291 = @{200, 133, 147, 147, 150, 107, 64, 166,
6292 150, 153, 147, 132, 90, 37, 0@};
6293
6294main ()
6295@{
6296 printf ("Hello, world!\n");
6297@}
10998722 6298@end smallexample
a0eb71c5
KB
6299
6300In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
6301containing the string @samp{Hello, world!} followed by a newline,
6302encoded in the @sc{ascii} and @sc{ibm1047} character sets.
6303
6304We compile the program, and invoke the debugger on it:
6305
6306@smallexample
6307$ gcc -g charset-test.c -o charset-test
6308$ gdb -nw charset-test
6309GNU gdb 2001-12-19-cvs
6310Copyright 2001 Free Software Foundation, Inc.
6311@dots{}
f7dc1244 6312(@value{GDBP})
10998722 6313@end smallexample
a0eb71c5
KB
6314
6315We can use the @code{show charset} command to see what character sets
6316@value{GDBN} is currently using to interpret and display characters and
6317strings:
6318
6319@smallexample
f7dc1244 6320(@value{GDBP}) show charset
e33d66ec 6321The current host and target character set is `ISO-8859-1'.
f7dc1244 6322(@value{GDBP})
10998722 6323@end smallexample
a0eb71c5
KB
6324
6325For the sake of printing this manual, let's use @sc{ascii} as our
6326initial character set:
6327@smallexample
f7dc1244
EZ
6328(@value{GDBP}) set charset ASCII
6329(@value{GDBP}) show charset
e33d66ec 6330The current host and target character set is `ASCII'.
f7dc1244 6331(@value{GDBP})
10998722 6332@end smallexample
a0eb71c5
KB
6333
6334Let's assume that @sc{ascii} is indeed the correct character set for our
6335host system --- in other words, let's assume that if @value{GDBN} prints
6336characters using the @sc{ascii} character set, our terminal will display
6337them properly. Since our current target character set is also
6338@sc{ascii}, the contents of @code{ascii_hello} print legibly:
6339
6340@smallexample
f7dc1244 6341(@value{GDBP}) print ascii_hello
a0eb71c5 6342$1 = 0x401698 "Hello, world!\n"
f7dc1244 6343(@value{GDBP}) print ascii_hello[0]
a0eb71c5 6344$2 = 72 'H'
f7dc1244 6345(@value{GDBP})
10998722 6346@end smallexample
a0eb71c5
KB
6347
6348@value{GDBN} uses the target character set for character and string
6349literals you use in expressions:
6350
6351@smallexample
f7dc1244 6352(@value{GDBP}) print '+'
a0eb71c5 6353$3 = 43 '+'
f7dc1244 6354(@value{GDBP})
10998722 6355@end smallexample
a0eb71c5
KB
6356
6357The @sc{ascii} character set uses the number 43 to encode the @samp{+}
6358character.
6359
6360@value{GDBN} relies on the user to tell it which character set the
6361target program uses. If we print @code{ibm1047_hello} while our target
6362character set is still @sc{ascii}, we get jibberish:
6363
6364@smallexample
f7dc1244 6365(@value{GDBP}) print ibm1047_hello
a0eb71c5 6366$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
f7dc1244 6367(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 6368$5 = 200 '\310'
f7dc1244 6369(@value{GDBP})
10998722 6370@end smallexample
a0eb71c5 6371
e33d66ec 6372If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
a0eb71c5
KB
6373@value{GDBN} tells us the character sets it supports:
6374
6375@smallexample
f7dc1244 6376(@value{GDBP}) set target-charset
b383017d 6377ASCII EBCDIC-US IBM1047 ISO-8859-1
f7dc1244 6378(@value{GDBP}) set target-charset
10998722 6379@end smallexample
a0eb71c5
KB
6380
6381We can select @sc{ibm1047} as our target character set, and examine the
6382program's strings again. Now the @sc{ascii} string is wrong, but
6383@value{GDBN} translates the contents of @code{ibm1047_hello} from the
6384target character set, @sc{ibm1047}, to the host character set,
6385@sc{ascii}, and they display correctly:
6386
6387@smallexample
f7dc1244
EZ
6388(@value{GDBP}) set target-charset IBM1047
6389(@value{GDBP}) show charset
e33d66ec
EZ
6390The current host character set is `ASCII'.
6391The current target character set is `IBM1047'.
f7dc1244 6392(@value{GDBP}) print ascii_hello
a0eb71c5 6393$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
f7dc1244 6394(@value{GDBP}) print ascii_hello[0]
a0eb71c5 6395$7 = 72 '\110'
f7dc1244 6396(@value{GDBP}) print ibm1047_hello
a0eb71c5 6397$8 = 0x4016a8 "Hello, world!\n"
f7dc1244 6398(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 6399$9 = 200 'H'
f7dc1244 6400(@value{GDBP})
10998722 6401@end smallexample
a0eb71c5
KB
6402
6403As above, @value{GDBN} uses the target character set for character and
6404string literals you use in expressions:
6405
6406@smallexample
f7dc1244 6407(@value{GDBP}) print '+'
a0eb71c5 6408$10 = 78 '+'
f7dc1244 6409(@value{GDBP})
10998722 6410@end smallexample
a0eb71c5 6411
e33d66ec 6412The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
a0eb71c5
KB
6413character.
6414
6415
e2e0bcd1
JB
6416@node Macros
6417@chapter C Preprocessor Macros
6418
49efadf5 6419Some languages, such as C and C@t{++}, provide a way to define and invoke
e2e0bcd1
JB
6420``preprocessor macros'' which expand into strings of tokens.
6421@value{GDBN} can evaluate expressions containing macro invocations, show
6422the result of macro expansion, and show a macro's definition, including
6423where it was defined.
6424
6425You may need to compile your program specially to provide @value{GDBN}
6426with information about preprocessor macros. Most compilers do not
6427include macros in their debugging information, even when you compile
6428with the @option{-g} flag. @xref{Compilation}.
6429
6430A program may define a macro at one point, remove that definition later,
6431and then provide a different definition after that. Thus, at different
6432points in the program, a macro may have different definitions, or have
6433no definition at all. If there is a current stack frame, @value{GDBN}
6434uses the macros in scope at that frame's source code line. Otherwise,
6435@value{GDBN} uses the macros in scope at the current listing location;
6436see @ref{List}.
6437
6438At the moment, @value{GDBN} does not support the @code{##}
6439token-splicing operator, the @code{#} stringification operator, or
6440variable-arity macros.
6441
6442Whenever @value{GDBN} evaluates an expression, it always expands any
6443macro invocations present in the expression. @value{GDBN} also provides
6444the following commands for working with macros explicitly.
6445
6446@table @code
6447
6448@kindex macro expand
6449@cindex macro expansion, showing the results of preprocessor
6450@cindex preprocessor macro expansion, showing the results of
6451@cindex expanding preprocessor macros
6452@item macro expand @var{expression}
6453@itemx macro exp @var{expression}
6454Show the results of expanding all preprocessor macro invocations in
6455@var{expression}. Since @value{GDBN} simply expands macros, but does
6456not parse the result, @var{expression} need not be a valid expression;
6457it can be any string of tokens.
6458
e2e0bcd1
JB
6459@item macro expand-once @var{expression}
6460@itemx macro exp1 @var{expression}
4644b6e3 6461@cindex expand macro once
e2e0bcd1
JB
6462@i{(This command is not yet implemented.)} Show the results of
6463expanding those preprocessor macro invocations that appear explicitly in
6464@var{expression}. Macro invocations appearing in that expansion are
6465left unchanged. This command allows you to see the effect of a
6466particular macro more clearly, without being confused by further
6467expansions. Since @value{GDBN} simply expands macros, but does not
6468parse the result, @var{expression} need not be a valid expression; it
6469can be any string of tokens.
6470
475b0867 6471@kindex info macro
e2e0bcd1
JB
6472@cindex macro definition, showing
6473@cindex definition, showing a macro's
475b0867 6474@item info macro @var{macro}
e2e0bcd1
JB
6475Show the definition of the macro named @var{macro}, and describe the
6476source location where that definition was established.
6477
6478@kindex macro define
6479@cindex user-defined macros
6480@cindex defining macros interactively
6481@cindex macros, user-defined
6482@item macro define @var{macro} @var{replacement-list}
6483@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
6484@i{(This command is not yet implemented.)} Introduce a definition for a
6485preprocessor macro named @var{macro}, invocations of which are replaced
6486by the tokens given in @var{replacement-list}. The first form of this
6487command defines an ``object-like'' macro, which takes no arguments; the
6488second form defines a ``function-like'' macro, which takes the arguments
6489given in @var{arglist}.
6490
6491A definition introduced by this command is in scope in every expression
6492evaluated in @value{GDBN}, until it is removed with the @command{macro
6493undef} command, described below. The definition overrides all
6494definitions for @var{macro} present in the program being debugged, as
6495well as any previous user-supplied definition.
6496
6497@kindex macro undef
6498@item macro undef @var{macro}
6499@i{(This command is not yet implemented.)} Remove any user-supplied
6500definition for the macro named @var{macro}. This command only affects
6501definitions provided with the @command{macro define} command, described
6502above; it cannot remove definitions present in the program being
6503debugged.
6504
6505@end table
6506
6507@cindex macros, example of debugging with
6508Here is a transcript showing the above commands in action. First, we
6509show our source files:
6510
6511@smallexample
6512$ cat sample.c
6513#include <stdio.h>
6514#include "sample.h"
6515
6516#define M 42
6517#define ADD(x) (M + x)
6518
6519main ()
6520@{
6521#define N 28
6522 printf ("Hello, world!\n");
6523#undef N
6524 printf ("We're so creative.\n");
6525#define N 1729
6526 printf ("Goodbye, world!\n");
6527@}
6528$ cat sample.h
6529#define Q <
6530$
6531@end smallexample
6532
6533Now, we compile the program using the @sc{gnu} C compiler, @value{NGCC}.
6534We pass the @option{-gdwarf-2} and @option{-g3} flags to ensure the
6535compiler includes information about preprocessor macros in the debugging
6536information.
6537
6538@smallexample
6539$ gcc -gdwarf-2 -g3 sample.c -o sample
6540$
6541@end smallexample
6542
6543Now, we start @value{GDBN} on our sample program:
6544
6545@smallexample
6546$ gdb -nw sample
6547GNU gdb 2002-05-06-cvs
6548Copyright 2002 Free Software Foundation, Inc.
6549GDB is free software, @dots{}
f7dc1244 6550(@value{GDBP})
e2e0bcd1
JB
6551@end smallexample
6552
6553We can expand macros and examine their definitions, even when the
6554program is not running. @value{GDBN} uses the current listing position
6555to decide which macro definitions are in scope:
6556
6557@smallexample
f7dc1244 6558(@value{GDBP}) list main
e2e0bcd1
JB
65593
65604 #define M 42
65615 #define ADD(x) (M + x)
65626
65637 main ()
65648 @{
65659 #define N 28
656610 printf ("Hello, world!\n");
656711 #undef N
656812 printf ("We're so creative.\n");
f7dc1244 6569(@value{GDBP}) info macro ADD
e2e0bcd1
JB
6570Defined at /home/jimb/gdb/macros/play/sample.c:5
6571#define ADD(x) (M + x)
f7dc1244 6572(@value{GDBP}) info macro Q
e2e0bcd1
JB
6573Defined at /home/jimb/gdb/macros/play/sample.h:1
6574 included at /home/jimb/gdb/macros/play/sample.c:2
6575#define Q <
f7dc1244 6576(@value{GDBP}) macro expand ADD(1)
e2e0bcd1 6577expands to: (42 + 1)
f7dc1244 6578(@value{GDBP}) macro expand-once ADD(1)
e2e0bcd1 6579expands to: once (M + 1)
f7dc1244 6580(@value{GDBP})
e2e0bcd1
JB
6581@end smallexample
6582
6583In the example above, note that @command{macro expand-once} expands only
6584the macro invocation explicit in the original text --- the invocation of
6585@code{ADD} --- but does not expand the invocation of the macro @code{M},
6586which was introduced by @code{ADD}.
6587
6588Once the program is running, GDB uses the macro definitions in force at
6589the source line of the current stack frame:
6590
6591@smallexample
f7dc1244 6592(@value{GDBP}) break main
e2e0bcd1 6593Breakpoint 1 at 0x8048370: file sample.c, line 10.
f7dc1244 6594(@value{GDBP}) run
b383017d 6595Starting program: /home/jimb/gdb/macros/play/sample
e2e0bcd1
JB
6596
6597Breakpoint 1, main () at sample.c:10
659810 printf ("Hello, world!\n");
f7dc1244 6599(@value{GDBP})
e2e0bcd1
JB
6600@end smallexample
6601
6602At line 10, the definition of the macro @code{N} at line 9 is in force:
6603
6604@smallexample
f7dc1244 6605(@value{GDBP}) info macro N
e2e0bcd1
JB
6606Defined at /home/jimb/gdb/macros/play/sample.c:9
6607#define N 28
f7dc1244 6608(@value{GDBP}) macro expand N Q M
e2e0bcd1 6609expands to: 28 < 42
f7dc1244 6610(@value{GDBP}) print N Q M
e2e0bcd1 6611$1 = 1
f7dc1244 6612(@value{GDBP})
e2e0bcd1
JB
6613@end smallexample
6614
6615As we step over directives that remove @code{N}'s definition, and then
6616give it a new definition, @value{GDBN} finds the definition (or lack
6617thereof) in force at each point:
6618
6619@smallexample
f7dc1244 6620(@value{GDBP}) next
e2e0bcd1
JB
6621Hello, world!
662212 printf ("We're so creative.\n");
f7dc1244 6623(@value{GDBP}) info macro N
e2e0bcd1
JB
6624The symbol `N' has no definition as a C/C++ preprocessor macro
6625at /home/jimb/gdb/macros/play/sample.c:12
f7dc1244 6626(@value{GDBP}) next
e2e0bcd1
JB
6627We're so creative.
662814 printf ("Goodbye, world!\n");
f7dc1244 6629(@value{GDBP}) info macro N
e2e0bcd1
JB
6630Defined at /home/jimb/gdb/macros/play/sample.c:13
6631#define N 1729
f7dc1244 6632(@value{GDBP}) macro expand N Q M
e2e0bcd1 6633expands to: 1729 < 42
f7dc1244 6634(@value{GDBP}) print N Q M
e2e0bcd1 6635$2 = 0
f7dc1244 6636(@value{GDBP})
e2e0bcd1
JB
6637@end smallexample
6638
6639
b37052ae
EZ
6640@node Tracepoints
6641@chapter Tracepoints
6642@c This chapter is based on the documentation written by Michael
6643@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
6644
6645@cindex tracepoints
6646In some applications, it is not feasible for the debugger to interrupt
6647the program's execution long enough for the developer to learn
6648anything helpful about its behavior. If the program's correctness
6649depends on its real-time behavior, delays introduced by a debugger
6650might cause the program to change its behavior drastically, or perhaps
6651fail, even when the code itself is correct. It is useful to be able
6652to observe the program's behavior without interrupting it.
6653
6654Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
6655specify locations in the program, called @dfn{tracepoints}, and
6656arbitrary expressions to evaluate when those tracepoints are reached.
6657Later, using the @code{tfind} command, you can examine the values
6658those expressions had when the program hit the tracepoints. The
6659expressions may also denote objects in memory---structures or arrays,
6660for example---whose values @value{GDBN} should record; while visiting
6661a particular tracepoint, you may inspect those objects as if they were
6662in memory at that moment. However, because @value{GDBN} records these
6663values without interacting with you, it can do so quickly and
6664unobtrusively, hopefully not disturbing the program's behavior.
6665
6666The tracepoint facility is currently available only for remote
2c0069bb
EZ
6667targets. @xref{Targets}. In addition, your remote target must know how
6668to collect trace data. This functionality is implemented in the remote
6669stub; however, none of the stubs distributed with @value{GDBN} support
6670tracepoints as of this writing.
b37052ae
EZ
6671
6672This chapter describes the tracepoint commands and features.
6673
6674@menu
b383017d
RM
6675* Set Tracepoints::
6676* Analyze Collected Data::
6677* Tracepoint Variables::
b37052ae
EZ
6678@end menu
6679
6680@node Set Tracepoints
6681@section Commands to Set Tracepoints
6682
6683Before running such a @dfn{trace experiment}, an arbitrary number of
6684tracepoints can be set. Like a breakpoint (@pxref{Set Breaks}), a
6685tracepoint has a number assigned to it by @value{GDBN}. Like with
6686breakpoints, tracepoint numbers are successive integers starting from
6687one. Many of the commands associated with tracepoints take the
6688tracepoint number as their argument, to identify which tracepoint to
6689work on.
6690
6691For each tracepoint, you can specify, in advance, some arbitrary set
6692of data that you want the target to collect in the trace buffer when
6693it hits that tracepoint. The collected data can include registers,
6694local variables, or global data. Later, you can use @value{GDBN}
6695commands to examine the values these data had at the time the
6696tracepoint was hit.
6697
6698This section describes commands to set tracepoints and associated
6699conditions and actions.
6700
6701@menu
b383017d
RM
6702* Create and Delete Tracepoints::
6703* Enable and Disable Tracepoints::
6704* Tracepoint Passcounts::
6705* Tracepoint Actions::
6706* Listing Tracepoints::
6707* Starting and Stopping Trace Experiment::
b37052ae
EZ
6708@end menu
6709
6710@node Create and Delete Tracepoints
6711@subsection Create and Delete Tracepoints
6712
6713@table @code
6714@cindex set tracepoint
6715@kindex trace
6716@item trace
6717The @code{trace} command is very similar to the @code{break} command.
6718Its argument can be a source line, a function name, or an address in
6719the target program. @xref{Set Breaks}. The @code{trace} command
6720defines a tracepoint, which is a point in the target program where the
6721debugger will briefly stop, collect some data, and then allow the
6722program to continue. Setting a tracepoint or changing its commands
6723doesn't take effect until the next @code{tstart} command; thus, you
6724cannot change the tracepoint attributes once a trace experiment is
6725running.
6726
6727Here are some examples of using the @code{trace} command:
6728
6729@smallexample
6730(@value{GDBP}) @b{trace foo.c:121} // a source file and line number
6731
6732(@value{GDBP}) @b{trace +2} // 2 lines forward
6733
6734(@value{GDBP}) @b{trace my_function} // first source line of function
6735
6736(@value{GDBP}) @b{trace *my_function} // EXACT start address of function
6737
6738(@value{GDBP}) @b{trace *0x2117c4} // an address
6739@end smallexample
6740
6741@noindent
6742You can abbreviate @code{trace} as @code{tr}.
6743
6744@vindex $tpnum
6745@cindex last tracepoint number
6746@cindex recent tracepoint number
6747@cindex tracepoint number
6748The convenience variable @code{$tpnum} records the tracepoint number
6749of the most recently set tracepoint.
6750
6751@kindex delete tracepoint
6752@cindex tracepoint deletion
6753@item delete tracepoint @r{[}@var{num}@r{]}
6754Permanently delete one or more tracepoints. With no argument, the
6755default is to delete all tracepoints.
6756
6757Examples:
6758
6759@smallexample
6760(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
6761
6762(@value{GDBP}) @b{delete trace} // remove all tracepoints
6763@end smallexample
6764
6765@noindent
6766You can abbreviate this command as @code{del tr}.
6767@end table
6768
6769@node Enable and Disable Tracepoints
6770@subsection Enable and Disable Tracepoints
6771
6772@table @code
6773@kindex disable tracepoint
6774@item disable tracepoint @r{[}@var{num}@r{]}
6775Disable tracepoint @var{num}, or all tracepoints if no argument
6776@var{num} is given. A disabled tracepoint will have no effect during
6777the next trace experiment, but it is not forgotten. You can re-enable
6778a disabled tracepoint using the @code{enable tracepoint} command.
6779
6780@kindex enable tracepoint
6781@item enable tracepoint @r{[}@var{num}@r{]}
6782Enable tracepoint @var{num}, or all tracepoints. The enabled
6783tracepoints will become effective the next time a trace experiment is
6784run.
6785@end table
6786
6787@node Tracepoint Passcounts
6788@subsection Tracepoint Passcounts
6789
6790@table @code
6791@kindex passcount
6792@cindex tracepoint pass count
6793@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
6794Set the @dfn{passcount} of a tracepoint. The passcount is a way to
6795automatically stop a trace experiment. If a tracepoint's passcount is
6796@var{n}, then the trace experiment will be automatically stopped on
6797the @var{n}'th time that tracepoint is hit. If the tracepoint number
6798@var{num} is not specified, the @code{passcount} command sets the
6799passcount of the most recently defined tracepoint. If no passcount is
6800given, the trace experiment will run until stopped explicitly by the
6801user.
6802
6803Examples:
6804
6805@smallexample
b383017d 6806(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
6826cf00 6807@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
b37052ae
EZ
6808
6809(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
6826cf00 6810@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
b37052ae
EZ
6811(@value{GDBP}) @b{trace foo}
6812(@value{GDBP}) @b{pass 3}
6813(@value{GDBP}) @b{trace bar}
6814(@value{GDBP}) @b{pass 2}
6815(@value{GDBP}) @b{trace baz}
6816(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
6826cf00
EZ
6817@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
6818@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
6819@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
b37052ae
EZ
6820@end smallexample
6821@end table
6822
6823@node Tracepoint Actions
6824@subsection Tracepoint Action Lists
6825
6826@table @code
6827@kindex actions
6828@cindex tracepoint actions
6829@item actions @r{[}@var{num}@r{]}
6830This command will prompt for a list of actions to be taken when the
6831tracepoint is hit. If the tracepoint number @var{num} is not
6832specified, this command sets the actions for the one that was most
6833recently defined (so that you can define a tracepoint and then say
6834@code{actions} without bothering about its number). You specify the
6835actions themselves on the following lines, one action at a time, and
6836terminate the actions list with a line containing just @code{end}. So
6837far, the only defined actions are @code{collect} and
6838@code{while-stepping}.
6839
6840@cindex remove actions from a tracepoint
6841To remove all actions from a tracepoint, type @samp{actions @var{num}}
6842and follow it immediately with @samp{end}.
6843
6844@smallexample
6845(@value{GDBP}) @b{collect @var{data}} // collect some data
6846
6826cf00 6847(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
b37052ae 6848
6826cf00 6849(@value{GDBP}) @b{end} // signals the end of actions.
b37052ae
EZ
6850@end smallexample
6851
6852In the following example, the action list begins with @code{collect}
6853commands indicating the things to be collected when the tracepoint is
6854hit. Then, in order to single-step and collect additional data
6855following the tracepoint, a @code{while-stepping} command is used,
6856followed by the list of things to be collected while stepping. The
6857@code{while-stepping} command is terminated by its own separate
6858@code{end} command. Lastly, the action list is terminated by an
6859@code{end} command.
6860
6861@smallexample
6862(@value{GDBP}) @b{trace foo}
6863(@value{GDBP}) @b{actions}
6864Enter actions for tracepoint 1, one per line:
6865> collect bar,baz
6866> collect $regs
6867> while-stepping 12
6868 > collect $fp, $sp
6869 > end
6870end
6871@end smallexample
6872
6873@kindex collect @r{(tracepoints)}
6874@item collect @var{expr1}, @var{expr2}, @dots{}
6875Collect values of the given expressions when the tracepoint is hit.
6876This command accepts a comma-separated list of any valid expressions.
6877In addition to global, static, or local variables, the following
6878special arguments are supported:
6879
6880@table @code
6881@item $regs
6882collect all registers
6883
6884@item $args
6885collect all function arguments
6886
6887@item $locals
6888collect all local variables.
6889@end table
6890
6891You can give several consecutive @code{collect} commands, each one
6892with a single argument, or one @code{collect} command with several
6893arguments separated by commas: the effect is the same.
6894
f5c37c66
EZ
6895The command @code{info scope} (@pxref{Symbols, info scope}) is
6896particularly useful for figuring out what data to collect.
6897
b37052ae
EZ
6898@kindex while-stepping @r{(tracepoints)}
6899@item while-stepping @var{n}
6900Perform @var{n} single-step traces after the tracepoint, collecting
6901new data at each step. The @code{while-stepping} command is
6902followed by the list of what to collect while stepping (followed by
6903its own @code{end} command):
6904
6905@smallexample
6906> while-stepping 12
6907 > collect $regs, myglobal
6908 > end
6909>
6910@end smallexample
6911
6912@noindent
6913You may abbreviate @code{while-stepping} as @code{ws} or
6914@code{stepping}.
6915@end table
6916
6917@node Listing Tracepoints
6918@subsection Listing Tracepoints
6919
6920@table @code
6921@kindex info tracepoints
6922@cindex information about tracepoints
6923@item info tracepoints @r{[}@var{num}@r{]}
8a037dd7 6924Display information about the tracepoint @var{num}. If you don't specify
798c8bc6 6925a tracepoint number, displays information about all the tracepoints
b37052ae
EZ
6926defined so far. For each tracepoint, the following information is
6927shown:
6928
6929@itemize @bullet
6930@item
6931its number
6932@item
6933whether it is enabled or disabled
6934@item
6935its address
6936@item
6937its passcount as given by the @code{passcount @var{n}} command
6938@item
6939its step count as given by the @code{while-stepping @var{n}} command
6940@item
6941where in the source files is the tracepoint set
6942@item
6943its action list as given by the @code{actions} command
6944@end itemize
6945
6946@smallexample
6947(@value{GDBP}) @b{info trace}
6948Num Enb Address PassC StepC What
69491 y 0x002117c4 0 0 <gdb_asm>
6826cf00
EZ
69502 y 0x0020dc64 0 0 in g_test at g_test.c:1375
69513 y 0x0020b1f4 0 0 in get_data at ../foo.c:41
b37052ae
EZ
6952(@value{GDBP})
6953@end smallexample
6954
6955@noindent
6956This command can be abbreviated @code{info tp}.
6957@end table
6958
6959@node Starting and Stopping Trace Experiment
6960@subsection Starting and Stopping Trace Experiment
6961
6962@table @code
6963@kindex tstart
6964@cindex start a new trace experiment
6965@cindex collected data discarded
6966@item tstart
6967This command takes no arguments. It starts the trace experiment, and
6968begins collecting data. This has the side effect of discarding all
6969the data collected in the trace buffer during the previous trace
6970experiment.
6971
6972@kindex tstop
6973@cindex stop a running trace experiment
6974@item tstop
6975This command takes no arguments. It ends the trace experiment, and
6976stops collecting data.
6977
6978@strong{Note:} a trace experiment and data collection may stop
6979automatically if any tracepoint's passcount is reached
6980(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
6981
6982@kindex tstatus
6983@cindex status of trace data collection
6984@cindex trace experiment, status of
6985@item tstatus
6986This command displays the status of the current trace data
6987collection.
6988@end table
6989
6990Here is an example of the commands we described so far:
6991
6992@smallexample
6993(@value{GDBP}) @b{trace gdb_c_test}
6994(@value{GDBP}) @b{actions}
6995Enter actions for tracepoint #1, one per line.
6996> collect $regs,$locals,$args
6997> while-stepping 11
6998 > collect $regs
6999 > end
7000> end
7001(@value{GDBP}) @b{tstart}
7002 [time passes @dots{}]
7003(@value{GDBP}) @b{tstop}
7004@end smallexample
7005
7006
7007@node Analyze Collected Data
7008@section Using the collected data
7009
7010After the tracepoint experiment ends, you use @value{GDBN} commands
7011for examining the trace data. The basic idea is that each tracepoint
7012collects a trace @dfn{snapshot} every time it is hit and another
7013snapshot every time it single-steps. All these snapshots are
7014consecutively numbered from zero and go into a buffer, and you can
7015examine them later. The way you examine them is to @dfn{focus} on a
7016specific trace snapshot. When the remote stub is focused on a trace
7017snapshot, it will respond to all @value{GDBN} requests for memory and
7018registers by reading from the buffer which belongs to that snapshot,
7019rather than from @emph{real} memory or registers of the program being
7020debugged. This means that @strong{all} @value{GDBN} commands
7021(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
7022behave as if we were currently debugging the program state as it was
7023when the tracepoint occurred. Any requests for data that are not in
7024the buffer will fail.
7025
7026@menu
7027* tfind:: How to select a trace snapshot
7028* tdump:: How to display all data for a snapshot
7029* save-tracepoints:: How to save tracepoints for a future run
7030@end menu
7031
7032@node tfind
7033@subsection @code{tfind @var{n}}
7034
7035@kindex tfind
7036@cindex select trace snapshot
7037@cindex find trace snapshot
7038The basic command for selecting a trace snapshot from the buffer is
7039@code{tfind @var{n}}, which finds trace snapshot number @var{n},
7040counting from zero. If no argument @var{n} is given, the next
7041snapshot is selected.
7042
7043Here are the various forms of using the @code{tfind} command.
7044
7045@table @code
7046@item tfind start
7047Find the first snapshot in the buffer. This is a synonym for
7048@code{tfind 0} (since 0 is the number of the first snapshot).
7049
7050@item tfind none
7051Stop debugging trace snapshots, resume @emph{live} debugging.
7052
7053@item tfind end
7054Same as @samp{tfind none}.
7055
7056@item tfind
7057No argument means find the next trace snapshot.
7058
7059@item tfind -
7060Find the previous trace snapshot before the current one. This permits
7061retracing earlier steps.
7062
7063@item tfind tracepoint @var{num}
7064Find the next snapshot associated with tracepoint @var{num}. Search
7065proceeds forward from the last examined trace snapshot. If no
7066argument @var{num} is given, it means find the next snapshot collected
7067for the same tracepoint as the current snapshot.
7068
7069@item tfind pc @var{addr}
7070Find the next snapshot associated with the value @var{addr} of the
7071program counter. Search proceeds forward from the last examined trace
7072snapshot. If no argument @var{addr} is given, it means find the next
7073snapshot with the same value of PC as the current snapshot.
7074
7075@item tfind outside @var{addr1}, @var{addr2}
7076Find the next snapshot whose PC is outside the given range of
7077addresses.
7078
7079@item tfind range @var{addr1}, @var{addr2}
7080Find the next snapshot whose PC is between @var{addr1} and
7081@var{addr2}. @c FIXME: Is the range inclusive or exclusive?
7082
7083@item tfind line @r{[}@var{file}:@r{]}@var{n}
7084Find the next snapshot associated with the source line @var{n}. If
7085the optional argument @var{file} is given, refer to line @var{n} in
7086that source file. Search proceeds forward from the last examined
7087trace snapshot. If no argument @var{n} is given, it means find the
7088next line other than the one currently being examined; thus saying
7089@code{tfind line} repeatedly can appear to have the same effect as
7090stepping from line to line in a @emph{live} debugging session.
7091@end table
7092
7093The default arguments for the @code{tfind} commands are specifically
7094designed to make it easy to scan through the trace buffer. For
7095instance, @code{tfind} with no argument selects the next trace
7096snapshot, and @code{tfind -} with no argument selects the previous
7097trace snapshot. So, by giving one @code{tfind} command, and then
7098simply hitting @key{RET} repeatedly you can examine all the trace
7099snapshots in order. Or, by saying @code{tfind -} and then hitting
7100@key{RET} repeatedly you can examine the snapshots in reverse order.
7101The @code{tfind line} command with no argument selects the snapshot
7102for the next source line executed. The @code{tfind pc} command with
7103no argument selects the next snapshot with the same program counter
7104(PC) as the current frame. The @code{tfind tracepoint} command with
7105no argument selects the next trace snapshot collected by the same
7106tracepoint as the current one.
7107
7108In addition to letting you scan through the trace buffer manually,
7109these commands make it easy to construct @value{GDBN} scripts that
7110scan through the trace buffer and print out whatever collected data
7111you are interested in. Thus, if we want to examine the PC, FP, and SP
7112registers from each trace frame in the buffer, we can say this:
7113
7114@smallexample
7115(@value{GDBP}) @b{tfind start}
7116(@value{GDBP}) @b{while ($trace_frame != -1)}
7117> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
7118 $trace_frame, $pc, $sp, $fp
7119> tfind
7120> end
7121
7122Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
7123Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
7124Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
7125Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
7126Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
7127Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
7128Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
7129Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
7130Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
7131Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
7132Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
7133@end smallexample
7134
7135Or, if we want to examine the variable @code{X} at each source line in
7136the buffer:
7137
7138@smallexample
7139(@value{GDBP}) @b{tfind start}
7140(@value{GDBP}) @b{while ($trace_frame != -1)}
7141> printf "Frame %d, X == %d\n", $trace_frame, X
7142> tfind line
7143> end
7144
7145Frame 0, X = 1
7146Frame 7, X = 2
7147Frame 13, X = 255
7148@end smallexample
7149
7150@node tdump
7151@subsection @code{tdump}
7152@kindex tdump
7153@cindex dump all data collected at tracepoint
7154@cindex tracepoint data, display
7155
7156This command takes no arguments. It prints all the data collected at
7157the current trace snapshot.
7158
7159@smallexample
7160(@value{GDBP}) @b{trace 444}
7161(@value{GDBP}) @b{actions}
7162Enter actions for tracepoint #2, one per line:
7163> collect $regs, $locals, $args, gdb_long_test
7164> end
7165
7166(@value{GDBP}) @b{tstart}
7167
7168(@value{GDBP}) @b{tfind line 444}
7169#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
7170at gdb_test.c:444
7171444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
7172
7173(@value{GDBP}) @b{tdump}
7174Data collected at tracepoint 2, trace frame 1:
7175d0 0xc4aa0085 -995491707
7176d1 0x18 24
7177d2 0x80 128
7178d3 0x33 51
7179d4 0x71aea3d 119204413
7180d5 0x22 34
7181d6 0xe0 224
7182d7 0x380035 3670069
7183a0 0x19e24a 1696330
7184a1 0x3000668 50333288
7185a2 0x100 256
7186a3 0x322000 3284992
7187a4 0x3000698 50333336
7188a5 0x1ad3cc 1758156
7189fp 0x30bf3c 0x30bf3c
7190sp 0x30bf34 0x30bf34
7191ps 0x0 0
7192pc 0x20b2c8 0x20b2c8
7193fpcontrol 0x0 0
7194fpstatus 0x0 0
7195fpiaddr 0x0 0
7196p = 0x20e5b4 "gdb-test"
7197p1 = (void *) 0x11
7198p2 = (void *) 0x22
7199p3 = (void *) 0x33
7200p4 = (void *) 0x44
7201p5 = (void *) 0x55
7202p6 = (void *) 0x66
7203gdb_long_test = 17 '\021'
7204
7205(@value{GDBP})
7206@end smallexample
7207
7208@node save-tracepoints
7209@subsection @code{save-tracepoints @var{filename}}
7210@kindex save-tracepoints
7211@cindex save tracepoints for future sessions
7212
7213This command saves all current tracepoint definitions together with
7214their actions and passcounts, into a file @file{@var{filename}}
7215suitable for use in a later debugging session. To read the saved
7216tracepoint definitions, use the @code{source} command (@pxref{Command
7217Files}).
7218
7219@node Tracepoint Variables
7220@section Convenience Variables for Tracepoints
7221@cindex tracepoint variables
7222@cindex convenience variables for tracepoints
7223
7224@table @code
7225@vindex $trace_frame
7226@item (int) $trace_frame
7227The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
7228snapshot is selected.
7229
7230@vindex $tracepoint
7231@item (int) $tracepoint
7232The tracepoint for the current trace snapshot.
7233
7234@vindex $trace_line
7235@item (int) $trace_line
7236The line number for the current trace snapshot.
7237
7238@vindex $trace_file
7239@item (char []) $trace_file
7240The source file for the current trace snapshot.
7241
7242@vindex $trace_func
7243@item (char []) $trace_func
7244The name of the function containing @code{$tracepoint}.
7245@end table
7246
7247Note: @code{$trace_file} is not suitable for use in @code{printf},
7248use @code{output} instead.
7249
7250Here's a simple example of using these convenience variables for
7251stepping through all the trace snapshots and printing some of their
7252data.
7253
7254@smallexample
7255(@value{GDBP}) @b{tfind start}
7256
7257(@value{GDBP}) @b{while $trace_frame != -1}
7258> output $trace_file
7259> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
7260> tfind
7261> end
7262@end smallexample
7263
df0cd8c5
JB
7264@node Overlays
7265@chapter Debugging Programs That Use Overlays
7266@cindex overlays
7267
7268If your program is too large to fit completely in your target system's
7269memory, you can sometimes use @dfn{overlays} to work around this
7270problem. @value{GDBN} provides some support for debugging programs that
7271use overlays.
7272
7273@menu
7274* How Overlays Work:: A general explanation of overlays.
7275* Overlay Commands:: Managing overlays in @value{GDBN}.
7276* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
7277 mapped by asking the inferior.
7278* Overlay Sample Program:: A sample program using overlays.
7279@end menu
7280
7281@node How Overlays Work
7282@section How Overlays Work
7283@cindex mapped overlays
7284@cindex unmapped overlays
7285@cindex load address, overlay's
7286@cindex mapped address
7287@cindex overlay area
7288
7289Suppose you have a computer whose instruction address space is only 64
7290kilobytes long, but which has much more memory which can be accessed by
7291other means: special instructions, segment registers, or memory
7292management hardware, for example. Suppose further that you want to
7293adapt a program which is larger than 64 kilobytes to run on this system.
7294
7295One solution is to identify modules of your program which are relatively
7296independent, and need not call each other directly; call these modules
7297@dfn{overlays}. Separate the overlays from the main program, and place
7298their machine code in the larger memory. Place your main program in
7299instruction memory, but leave at least enough space there to hold the
7300largest overlay as well.
7301
7302Now, to call a function located in an overlay, you must first copy that
7303overlay's machine code from the large memory into the space set aside
7304for it in the instruction memory, and then jump to its entry point
7305there.
7306
c928edc0
AC
7307@c NB: In the below the mapped area's size is greater or equal to the
7308@c size of all overlays. This is intentional to remind the developer
7309@c that overlays don't necessarily need to be the same size.
7310
474c8240 7311@smallexample
df0cd8c5 7312@group
c928edc0
AC
7313 Data Instruction Larger
7314Address Space Address Space Address Space
7315+-----------+ +-----------+ +-----------+
7316| | | | | |
7317+-----------+ +-----------+ +-----------+<-- overlay 1
7318| program | | main | .----| overlay 1 | load address
7319| variables | | program | | +-----------+
7320| and heap | | | | | |
7321+-----------+ | | | +-----------+<-- overlay 2
7322| | +-----------+ | | | load address
7323+-----------+ | | | .-| overlay 2 |
7324 | | | | | |
7325 mapped --->+-----------+ | | +-----------+
7326 address | | | | | |
7327 | overlay | <-' | | |
7328 | area | <---' +-----------+<-- overlay 3
7329 | | <---. | | load address
7330 +-----------+ `--| overlay 3 |
7331 | | | |
7332 +-----------+ | |
7333 +-----------+
7334 | |
7335 +-----------+
7336
7337 @anchor{A code overlay}A code overlay
df0cd8c5 7338@end group
474c8240 7339@end smallexample
df0cd8c5 7340
c928edc0
AC
7341The diagram (@pxref{A code overlay}) shows a system with separate data
7342and instruction address spaces. To map an overlay, the program copies
7343its code from the larger address space to the instruction address space.
7344Since the overlays shown here all use the same mapped address, only one
7345may be mapped at a time. For a system with a single address space for
7346data and instructions, the diagram would be similar, except that the
7347program variables and heap would share an address space with the main
7348program and the overlay area.
df0cd8c5
JB
7349
7350An overlay loaded into instruction memory and ready for use is called a
7351@dfn{mapped} overlay; its @dfn{mapped address} is its address in the
7352instruction memory. An overlay not present (or only partially present)
7353in instruction memory is called @dfn{unmapped}; its @dfn{load address}
7354is its address in the larger memory. The mapped address is also called
7355the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
7356called the @dfn{load memory address}, or @dfn{LMA}.
7357
7358Unfortunately, overlays are not a completely transparent way to adapt a
7359program to limited instruction memory. They introduce a new set of
7360global constraints you must keep in mind as you design your program:
7361
7362@itemize @bullet
7363
7364@item
7365Before calling or returning to a function in an overlay, your program
7366must make sure that overlay is actually mapped. Otherwise, the call or
7367return will transfer control to the right address, but in the wrong
7368overlay, and your program will probably crash.
7369
7370@item
7371If the process of mapping an overlay is expensive on your system, you
7372will need to choose your overlays carefully to minimize their effect on
7373your program's performance.
7374
7375@item
7376The executable file you load onto your system must contain each
7377overlay's instructions, appearing at the overlay's load address, not its
7378mapped address. However, each overlay's instructions must be relocated
7379and its symbols defined as if the overlay were at its mapped address.
7380You can use GNU linker scripts to specify different load and relocation
7381addresses for pieces of your program; see @ref{Overlay Description,,,
7382ld.info, Using ld: the GNU linker}.
7383
7384@item
7385The procedure for loading executable files onto your system must be able
7386to load their contents into the larger address space as well as the
7387instruction and data spaces.
7388
7389@end itemize
7390
7391The overlay system described above is rather simple, and could be
7392improved in many ways:
7393
7394@itemize @bullet
7395
7396@item
7397If your system has suitable bank switch registers or memory management
7398hardware, you could use those facilities to make an overlay's load area
7399contents simply appear at their mapped address in instruction space.
7400This would probably be faster than copying the overlay to its mapped
7401area in the usual way.
7402
7403@item
7404If your overlays are small enough, you could set aside more than one
7405overlay area, and have more than one overlay mapped at a time.
7406
7407@item
7408You can use overlays to manage data, as well as instructions. In
7409general, data overlays are even less transparent to your design than
7410code overlays: whereas code overlays only require care when you call or
7411return to functions, data overlays require care every time you access
7412the data. Also, if you change the contents of a data overlay, you
7413must copy its contents back out to its load address before you can copy a
7414different data overlay into the same mapped area.
7415
7416@end itemize
7417
7418
7419@node Overlay Commands
7420@section Overlay Commands
7421
7422To use @value{GDBN}'s overlay support, each overlay in your program must
7423correspond to a separate section of the executable file. The section's
7424virtual memory address and load memory address must be the overlay's
7425mapped and load addresses. Identifying overlays with sections allows
7426@value{GDBN} to determine the appropriate address of a function or
7427variable, depending on whether the overlay is mapped or not.
7428
7429@value{GDBN}'s overlay commands all start with the word @code{overlay};
7430you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
7431
7432@table @code
7433@item overlay off
4644b6e3 7434@kindex overlay
df0cd8c5
JB
7435Disable @value{GDBN}'s overlay support. When overlay support is
7436disabled, @value{GDBN} assumes that all functions and variables are
7437always present at their mapped addresses. By default, @value{GDBN}'s
7438overlay support is disabled.
7439
7440@item overlay manual
df0cd8c5
JB
7441@cindex manual overlay debugging
7442Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
7443relies on you to tell it which overlays are mapped, and which are not,
7444using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
7445commands described below.
7446
7447@item overlay map-overlay @var{overlay}
7448@itemx overlay map @var{overlay}
df0cd8c5
JB
7449@cindex map an overlay
7450Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
7451be the name of the object file section containing the overlay. When an
7452overlay is mapped, @value{GDBN} assumes it can find the overlay's
7453functions and variables at their mapped addresses. @value{GDBN} assumes
7454that any other overlays whose mapped ranges overlap that of
7455@var{overlay} are now unmapped.
7456
7457@item overlay unmap-overlay @var{overlay}
7458@itemx overlay unmap @var{overlay}
df0cd8c5
JB
7459@cindex unmap an overlay
7460Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
7461must be the name of the object file section containing the overlay.
7462When an overlay is unmapped, @value{GDBN} assumes it can find the
7463overlay's functions and variables at their load addresses.
7464
7465@item overlay auto
df0cd8c5
JB
7466Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
7467consults a data structure the overlay manager maintains in the inferior
7468to see which overlays are mapped. For details, see @ref{Automatic
7469Overlay Debugging}.
7470
7471@item overlay load-target
7472@itemx overlay load
df0cd8c5
JB
7473@cindex reloading the overlay table
7474Re-read the overlay table from the inferior. Normally, @value{GDBN}
7475re-reads the table @value{GDBN} automatically each time the inferior
7476stops, so this command should only be necessary if you have changed the
7477overlay mapping yourself using @value{GDBN}. This command is only
7478useful when using automatic overlay debugging.
7479
7480@item overlay list-overlays
7481@itemx overlay list
7482@cindex listing mapped overlays
7483Display a list of the overlays currently mapped, along with their mapped
7484addresses, load addresses, and sizes.
7485
7486@end table
7487
7488Normally, when @value{GDBN} prints a code address, it includes the name
7489of the function the address falls in:
7490
474c8240 7491@smallexample
f7dc1244 7492(@value{GDBP}) print main
df0cd8c5 7493$3 = @{int ()@} 0x11a0 <main>
474c8240 7494@end smallexample
df0cd8c5
JB
7495@noindent
7496When overlay debugging is enabled, @value{GDBN} recognizes code in
7497unmapped overlays, and prints the names of unmapped functions with
7498asterisks around them. For example, if @code{foo} is a function in an
7499unmapped overlay, @value{GDBN} prints it this way:
7500
474c8240 7501@smallexample
f7dc1244 7502(@value{GDBP}) overlay list
df0cd8c5 7503No sections are mapped.
f7dc1244 7504(@value{GDBP}) print foo
df0cd8c5 7505$5 = @{int (int)@} 0x100000 <*foo*>
474c8240 7506@end smallexample
df0cd8c5
JB
7507@noindent
7508When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
7509name normally:
7510
474c8240 7511@smallexample
f7dc1244 7512(@value{GDBP}) overlay list
b383017d 7513Section .ov.foo.text, loaded at 0x100000 - 0x100034,
df0cd8c5 7514 mapped at 0x1016 - 0x104a
f7dc1244 7515(@value{GDBP}) print foo
df0cd8c5 7516$6 = @{int (int)@} 0x1016 <foo>
474c8240 7517@end smallexample
df0cd8c5
JB
7518
7519When overlay debugging is enabled, @value{GDBN} can find the correct
7520address for functions and variables in an overlay, whether or not the
7521overlay is mapped. This allows most @value{GDBN} commands, like
7522@code{break} and @code{disassemble}, to work normally, even on unmapped
7523code. However, @value{GDBN}'s breakpoint support has some limitations:
7524
7525@itemize @bullet
7526@item
7527@cindex breakpoints in overlays
7528@cindex overlays, setting breakpoints in
7529You can set breakpoints in functions in unmapped overlays, as long as
7530@value{GDBN} can write to the overlay at its load address.
7531@item
7532@value{GDBN} can not set hardware or simulator-based breakpoints in
7533unmapped overlays. However, if you set a breakpoint at the end of your
7534overlay manager (and tell @value{GDBN} which overlays are now mapped, if
7535you are using manual overlay management), @value{GDBN} will re-set its
7536breakpoints properly.
7537@end itemize
7538
7539
7540@node Automatic Overlay Debugging
7541@section Automatic Overlay Debugging
7542@cindex automatic overlay debugging
7543
7544@value{GDBN} can automatically track which overlays are mapped and which
7545are not, given some simple co-operation from the overlay manager in the
7546inferior. If you enable automatic overlay debugging with the
7547@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
7548looks in the inferior's memory for certain variables describing the
7549current state of the overlays.
7550
7551Here are the variables your overlay manager must define to support
7552@value{GDBN}'s automatic overlay debugging:
7553
7554@table @asis
7555
7556@item @code{_ovly_table}:
7557This variable must be an array of the following structures:
7558
474c8240 7559@smallexample
df0cd8c5
JB
7560struct
7561@{
7562 /* The overlay's mapped address. */
7563 unsigned long vma;
7564
7565 /* The size of the overlay, in bytes. */
7566 unsigned long size;
7567
7568 /* The overlay's load address. */
7569 unsigned long lma;
7570
7571 /* Non-zero if the overlay is currently mapped;
7572 zero otherwise. */
7573 unsigned long mapped;
7574@}
474c8240 7575@end smallexample
df0cd8c5
JB
7576
7577@item @code{_novlys}:
7578This variable must be a four-byte signed integer, holding the total
7579number of elements in @code{_ovly_table}.
7580
7581@end table
7582
7583To decide whether a particular overlay is mapped or not, @value{GDBN}
7584looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
7585@code{lma} members equal the VMA and LMA of the overlay's section in the
7586executable file. When @value{GDBN} finds a matching entry, it consults
7587the entry's @code{mapped} member to determine whether the overlay is
7588currently mapped.
7589
81d46470 7590In addition, your overlay manager may define a function called
def71bfa 7591@code{_ovly_debug_event}. If this function is defined, @value{GDBN}
81d46470
MS
7592will silently set a breakpoint there. If the overlay manager then
7593calls this function whenever it has changed the overlay table, this
7594will enable @value{GDBN} to accurately keep track of which overlays
7595are in program memory, and update any breakpoints that may be set
b383017d 7596in overlays. This will allow breakpoints to work even if the
81d46470
MS
7597overlays are kept in ROM or other non-writable memory while they
7598are not being executed.
df0cd8c5
JB
7599
7600@node Overlay Sample Program
7601@section Overlay Sample Program
7602@cindex overlay example program
7603
7604When linking a program which uses overlays, you must place the overlays
7605at their load addresses, while relocating them to run at their mapped
7606addresses. To do this, you must write a linker script (@pxref{Overlay
7607Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
7608since linker scripts are specific to a particular host system, target
7609architecture, and target memory layout, this manual cannot provide
7610portable sample code demonstrating @value{GDBN}'s overlay support.
7611
7612However, the @value{GDBN} source distribution does contain an overlaid
7613program, with linker scripts for a few systems, as part of its test
7614suite. The program consists of the following files from
7615@file{gdb/testsuite/gdb.base}:
7616
7617@table @file
7618@item overlays.c
7619The main program file.
7620@item ovlymgr.c
7621A simple overlay manager, used by @file{overlays.c}.
7622@item foo.c
7623@itemx bar.c
7624@itemx baz.c
7625@itemx grbx.c
7626Overlay modules, loaded and used by @file{overlays.c}.
7627@item d10v.ld
7628@itemx m32r.ld
7629Linker scripts for linking the test program on the @code{d10v-elf}
7630and @code{m32r-elf} targets.
7631@end table
7632
7633You can build the test program using the @code{d10v-elf} GCC
7634cross-compiler like this:
7635
474c8240 7636@smallexample
df0cd8c5
JB
7637$ d10v-elf-gcc -g -c overlays.c
7638$ d10v-elf-gcc -g -c ovlymgr.c
7639$ d10v-elf-gcc -g -c foo.c
7640$ d10v-elf-gcc -g -c bar.c
7641$ d10v-elf-gcc -g -c baz.c
7642$ d10v-elf-gcc -g -c grbx.c
7643$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
7644 baz.o grbx.o -Wl,-Td10v.ld -o overlays
474c8240 7645@end smallexample
df0cd8c5
JB
7646
7647The build process is identical for any other architecture, except that
7648you must substitute the appropriate compiler and linker script for the
7649target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
7650
7651
6d2ebf8b 7652@node Languages
c906108c
SS
7653@chapter Using @value{GDBN} with Different Languages
7654@cindex languages
7655
c906108c
SS
7656Although programming languages generally have common aspects, they are
7657rarely expressed in the same manner. For instance, in ANSI C,
7658dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
7659Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 7660represented (and displayed) differently. Hex numbers in C appear as
c906108c 7661@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
7662
7663@cindex working language
7664Language-specific information is built into @value{GDBN} for some languages,
7665allowing you to express operations like the above in your program's
7666native language, and allowing @value{GDBN} to output values in a manner
7667consistent with the syntax of your program's native language. The
7668language you use to build expressions is called the @dfn{working
7669language}.
7670
7671@menu
7672* Setting:: Switching between source languages
7673* Show:: Displaying the language
c906108c 7674* Checks:: Type and range checks
c906108c 7675* Support:: Supported languages
4e562065 7676* Unsupported languages:: Unsupported languages
c906108c
SS
7677@end menu
7678
6d2ebf8b 7679@node Setting
c906108c
SS
7680@section Switching between source languages
7681
7682There are two ways to control the working language---either have @value{GDBN}
7683set it automatically, or select it manually yourself. You can use the
7684@code{set language} command for either purpose. On startup, @value{GDBN}
7685defaults to setting the language automatically. The working language is
7686used to determine how expressions you type are interpreted, how values
7687are printed, etc.
7688
7689In addition to the working language, every source file that
7690@value{GDBN} knows about has its own working language. For some object
7691file formats, the compiler might indicate which language a particular
7692source file is in. However, most of the time @value{GDBN} infers the
7693language from the name of the file. The language of a source file
b37052ae 7694controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 7695show each frame appropriately for its own language. There is no way to
d4f3574e
SS
7696set the language of a source file from within @value{GDBN}, but you can
7697set the language associated with a filename extension. @xref{Show, ,
7698Displaying the language}.
c906108c
SS
7699
7700This is most commonly a problem when you use a program, such
5d161b24 7701as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
7702another language. In that case, make the
7703program use @code{#line} directives in its C output; that way
7704@value{GDBN} will know the correct language of the source code of the original
7705program, and will display that source code, not the generated C code.
7706
7707@menu
7708* Filenames:: Filename extensions and languages.
7709* Manually:: Setting the working language manually
7710* Automatically:: Having @value{GDBN} infer the source language
7711@end menu
7712
6d2ebf8b 7713@node Filenames
c906108c
SS
7714@subsection List of filename extensions and languages
7715
7716If a source file name ends in one of the following extensions, then
7717@value{GDBN} infers that its language is the one indicated.
7718
7719@table @file
7720
7721@item .c
7722C source file
7723
7724@item .C
7725@itemx .cc
7726@itemx .cp
7727@itemx .cpp
7728@itemx .cxx
7729@itemx .c++
b37052ae 7730C@t{++} source file
c906108c 7731
b37303ee
AF
7732@item .m
7733Objective-C source file
7734
c906108c
SS
7735@item .f
7736@itemx .F
7737Fortran source file
7738
c906108c
SS
7739@item .mod
7740Modula-2 source file
c906108c
SS
7741
7742@item .s
7743@itemx .S
7744Assembler source file. This actually behaves almost like C, but
7745@value{GDBN} does not skip over function prologues when stepping.
7746@end table
7747
7748In addition, you may set the language associated with a filename
7749extension. @xref{Show, , Displaying the language}.
7750
6d2ebf8b 7751@node Manually
c906108c
SS
7752@subsection Setting the working language
7753
7754If you allow @value{GDBN} to set the language automatically,
7755expressions are interpreted the same way in your debugging session and
7756your program.
7757
7758@kindex set language
7759If you wish, you may set the language manually. To do this, issue the
7760command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 7761a language, such as
c906108c 7762@code{c} or @code{modula-2}.
c906108c
SS
7763For a list of the supported languages, type @samp{set language}.
7764
c906108c
SS
7765Setting the language manually prevents @value{GDBN} from updating the working
7766language automatically. This can lead to confusion if you try
7767to debug a program when the working language is not the same as the
7768source language, when an expression is acceptable to both
7769languages---but means different things. For instance, if the current
7770source file were written in C, and @value{GDBN} was parsing Modula-2, a
7771command such as:
7772
474c8240 7773@smallexample
c906108c 7774print a = b + c
474c8240 7775@end smallexample
c906108c
SS
7776
7777@noindent
7778might not have the effect you intended. In C, this means to add
7779@code{b} and @code{c} and place the result in @code{a}. The result
7780printed would be the value of @code{a}. In Modula-2, this means to compare
7781@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 7782
6d2ebf8b 7783@node Automatically
c906108c
SS
7784@subsection Having @value{GDBN} infer the source language
7785
7786To have @value{GDBN} set the working language automatically, use
7787@samp{set language local} or @samp{set language auto}. @value{GDBN}
7788then infers the working language. That is, when your program stops in a
7789frame (usually by encountering a breakpoint), @value{GDBN} sets the
7790working language to the language recorded for the function in that
7791frame. If the language for a frame is unknown (that is, if the function
7792or block corresponding to the frame was defined in a source file that
7793does not have a recognized extension), the current working language is
7794not changed, and @value{GDBN} issues a warning.
7795
7796This may not seem necessary for most programs, which are written
7797entirely in one source language. However, program modules and libraries
7798written in one source language can be used by a main program written in
7799a different source language. Using @samp{set language auto} in this
7800case frees you from having to set the working language manually.
7801
6d2ebf8b 7802@node Show
c906108c 7803@section Displaying the language
c906108c
SS
7804
7805The following commands help you find out which language is the
7806working language, and also what language source files were written in.
7807
7808@kindex show language
c906108c
SS
7809@table @code
7810@item show language
7811Display the current working language. This is the
7812language you can use with commands such as @code{print} to
7813build and compute expressions that may involve variables in your program.
7814
7815@item info frame
4644b6e3 7816@kindex info frame@r{, show the source language}
5d161b24 7817Display the source language for this frame. This language becomes the
c906108c 7818working language if you use an identifier from this frame.
5d161b24 7819@xref{Frame Info, ,Information about a frame}, to identify the other
c906108c
SS
7820information listed here.
7821
7822@item info source
4644b6e3 7823@kindex info source@r{, show the source language}
c906108c 7824Display the source language of this source file.
5d161b24 7825@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
7826information listed here.
7827@end table
7828
7829In unusual circumstances, you may have source files with extensions
7830not in the standard list. You can then set the extension associated
7831with a language explicitly:
7832
7833@kindex set extension-language
7834@kindex info extensions
7835@table @code
7836@item set extension-language @var{.ext} @var{language}
7837Set source files with extension @var{.ext} to be assumed to be in
7838the source language @var{language}.
7839
7840@item info extensions
7841List all the filename extensions and the associated languages.
7842@end table
7843
6d2ebf8b 7844@node Checks
c906108c
SS
7845@section Type and range checking
7846
7847@quotation
7848@emph{Warning:} In this release, the @value{GDBN} commands for type and range
7849checking are included, but they do not yet have any effect. This
7850section documents the intended facilities.
7851@end quotation
7852@c FIXME remove warning when type/range code added
7853
7854Some languages are designed to guard you against making seemingly common
7855errors through a series of compile- and run-time checks. These include
7856checking the type of arguments to functions and operators, and making
7857sure mathematical overflows are caught at run time. Checks such as
7858these help to ensure a program's correctness once it has been compiled
7859by eliminating type mismatches, and providing active checks for range
7860errors when your program is running.
7861
7862@value{GDBN} can check for conditions like the above if you wish.
7863Although @value{GDBN} does not check the statements in your program, it
7864can check expressions entered directly into @value{GDBN} for evaluation via
7865the @code{print} command, for example. As with the working language,
7866@value{GDBN} can also decide whether or not to check automatically based on
7867your program's source language. @xref{Support, ,Supported languages},
7868for the default settings of supported languages.
7869
7870@menu
7871* Type Checking:: An overview of type checking
7872* Range Checking:: An overview of range checking
7873@end menu
7874
7875@cindex type checking
7876@cindex checks, type
6d2ebf8b 7877@node Type Checking
c906108c
SS
7878@subsection An overview of type checking
7879
7880Some languages, such as Modula-2, are strongly typed, meaning that the
7881arguments to operators and functions have to be of the correct type,
7882otherwise an error occurs. These checks prevent type mismatch
7883errors from ever causing any run-time problems. For example,
7884
7885@smallexample
78861 + 2 @result{} 3
7887@exdent but
7888@error{} 1 + 2.3
7889@end smallexample
7890
7891The second example fails because the @code{CARDINAL} 1 is not
7892type-compatible with the @code{REAL} 2.3.
7893
5d161b24
DB
7894For the expressions you use in @value{GDBN} commands, you can tell the
7895@value{GDBN} type checker to skip checking;
7896to treat any mismatches as errors and abandon the expression;
7897or to only issue warnings when type mismatches occur,
c906108c
SS
7898but evaluate the expression anyway. When you choose the last of
7899these, @value{GDBN} evaluates expressions like the second example above, but
7900also issues a warning.
7901
5d161b24
DB
7902Even if you turn type checking off, there may be other reasons
7903related to type that prevent @value{GDBN} from evaluating an expression.
7904For instance, @value{GDBN} does not know how to add an @code{int} and
7905a @code{struct foo}. These particular type errors have nothing to do
7906with the language in use, and usually arise from expressions, such as
c906108c
SS
7907the one described above, which make little sense to evaluate anyway.
7908
7909Each language defines to what degree it is strict about type. For
7910instance, both Modula-2 and C require the arguments to arithmetical
7911operators to be numbers. In C, enumerated types and pointers can be
7912represented as numbers, so that they are valid arguments to mathematical
7913operators. @xref{Support, ,Supported languages}, for further
7914details on specific languages.
7915
7916@value{GDBN} provides some additional commands for controlling the type checker:
7917
c906108c
SS
7918@kindex set check type
7919@kindex show check type
7920@table @code
7921@item set check type auto
7922Set type checking on or off based on the current working language.
7923@xref{Support, ,Supported languages}, for the default settings for
7924each language.
7925
7926@item set check type on
7927@itemx set check type off
7928Set type checking on or off, overriding the default setting for the
7929current working language. Issue a warning if the setting does not
7930match the language default. If any type mismatches occur in
d4f3574e 7931evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
7932message and aborts evaluation of the expression.
7933
7934@item set check type warn
7935Cause the type checker to issue warnings, but to always attempt to
7936evaluate the expression. Evaluating the expression may still
7937be impossible for other reasons. For example, @value{GDBN} cannot add
7938numbers and structures.
7939
7940@item show type
5d161b24 7941Show the current setting of the type checker, and whether or not @value{GDBN}
c906108c
SS
7942is setting it automatically.
7943@end table
7944
7945@cindex range checking
7946@cindex checks, range
6d2ebf8b 7947@node Range Checking
c906108c
SS
7948@subsection An overview of range checking
7949
7950In some languages (such as Modula-2), it is an error to exceed the
7951bounds of a type; this is enforced with run-time checks. Such range
7952checking is meant to ensure program correctness by making sure
7953computations do not overflow, or indices on an array element access do
7954not exceed the bounds of the array.
7955
7956For expressions you use in @value{GDBN} commands, you can tell
7957@value{GDBN} to treat range errors in one of three ways: ignore them,
7958always treat them as errors and abandon the expression, or issue
7959warnings but evaluate the expression anyway.
7960
7961A range error can result from numerical overflow, from exceeding an
7962array index bound, or when you type a constant that is not a member
7963of any type. Some languages, however, do not treat overflows as an
7964error. In many implementations of C, mathematical overflow causes the
7965result to ``wrap around'' to lower values---for example, if @var{m} is
7966the largest integer value, and @var{s} is the smallest, then
7967
474c8240 7968@smallexample
c906108c 7969@var{m} + 1 @result{} @var{s}
474c8240 7970@end smallexample
c906108c
SS
7971
7972This, too, is specific to individual languages, and in some cases
7973specific to individual compilers or machines. @xref{Support, ,
7974Supported languages}, for further details on specific languages.
7975
7976@value{GDBN} provides some additional commands for controlling the range checker:
7977
c906108c
SS
7978@kindex set check range
7979@kindex show check range
7980@table @code
7981@item set check range auto
7982Set range checking on or off based on the current working language.
7983@xref{Support, ,Supported languages}, for the default settings for
7984each language.
7985
7986@item set check range on
7987@itemx set check range off
7988Set range checking on or off, overriding the default setting for the
7989current working language. A warning is issued if the setting does not
c3f6f71d
JM
7990match the language default. If a range error occurs and range checking is on,
7991then a message is printed and evaluation of the expression is aborted.
c906108c
SS
7992
7993@item set check range warn
7994Output messages when the @value{GDBN} range checker detects a range error,
7995but attempt to evaluate the expression anyway. Evaluating the
7996expression may still be impossible for other reasons, such as accessing
7997memory that the process does not own (a typical example from many Unix
7998systems).
7999
8000@item show range
8001Show the current setting of the range checker, and whether or not it is
8002being set automatically by @value{GDBN}.
8003@end table
c906108c 8004
6d2ebf8b 8005@node Support
c906108c 8006@section Supported languages
c906108c 8007
b37303ee 8008@value{GDBN} supports C, C@t{++}, Objective-C, Fortran, Java, assembly, and Modula-2.
cce74817 8009@c This is false ...
c906108c
SS
8010Some @value{GDBN} features may be used in expressions regardless of the
8011language you use: the @value{GDBN} @code{@@} and @code{::} operators,
8012and the @samp{@{type@}addr} construct (@pxref{Expressions,
8013,Expressions}) can be used with the constructs of any supported
8014language.
8015
8016The following sections detail to what degree each source language is
8017supported by @value{GDBN}. These sections are not meant to be language
8018tutorials or references, but serve only as a reference guide to what the
8019@value{GDBN} expression parser accepts, and what input and output
8020formats should look like for different languages. There are many good
8021books written on each of these languages; please look to these for a
8022language reference or tutorial.
8023
c906108c 8024@menu
b37303ee 8025* C:: C and C@t{++}
b383017d 8026* Objective-C:: Objective-C
b37303ee 8027* Modula-2:: Modula-2
c906108c
SS
8028@end menu
8029
6d2ebf8b 8030@node C
b37052ae 8031@subsection C and C@t{++}
7a292a7a 8032
b37052ae
EZ
8033@cindex C and C@t{++}
8034@cindex expressions in C or C@t{++}
c906108c 8035
b37052ae 8036Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
8037to both languages. Whenever this is the case, we discuss those languages
8038together.
8039
41afff9a
EZ
8040@cindex C@t{++}
8041@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
8042@cindex @sc{gnu} C@t{++}
8043The C@t{++} debugging facilities are jointly implemented by the C@t{++}
8044compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
8045effectively, you must compile your C@t{++} programs with a supported
8046C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
8047compiler (@code{aCC}).
8048
0179ffac
DC
8049For best results when using @sc{gnu} C@t{++}, use the DWARF 2 debugging
8050format; if it doesn't work on your system, try the stabs+ debugging
8051format. You can select those formats explicitly with the @code{g++}
8052command-line options @option{-gdwarf-2} and @option{-gstabs+}.
8053@xref{Debugging Options,,Options for Debugging Your Program or @sc{gnu}
8054CC, gcc.info, Using @sc{gnu} CC}.
c906108c 8055
c906108c 8056@menu
b37052ae
EZ
8057* C Operators:: C and C@t{++} operators
8058* C Constants:: C and C@t{++} constants
8059* C plus plus expressions:: C@t{++} expressions
8060* C Defaults:: Default settings for C and C@t{++}
8061* C Checks:: C and C@t{++} type and range checks
c906108c 8062* Debugging C:: @value{GDBN} and C
b37052ae 8063* Debugging C plus plus:: @value{GDBN} features for C@t{++}
c906108c 8064@end menu
c906108c 8065
6d2ebf8b 8066@node C Operators
b37052ae 8067@subsubsection C and C@t{++} operators
7a292a7a 8068
b37052ae 8069@cindex C and C@t{++} operators
c906108c
SS
8070
8071Operators must be defined on values of specific types. For instance,
8072@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 8073often defined on groups of types.
c906108c 8074
b37052ae 8075For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
8076
8077@itemize @bullet
53a5351d 8078
c906108c 8079@item
c906108c 8080@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 8081specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
8082
8083@item
d4f3574e
SS
8084@emph{Floating-point types} include @code{float}, @code{double}, and
8085@code{long double} (if supported by the target platform).
c906108c
SS
8086
8087@item
53a5351d 8088@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
8089
8090@item
8091@emph{Scalar types} include all of the above.
53a5351d 8092
c906108c
SS
8093@end itemize
8094
8095@noindent
8096The following operators are supported. They are listed here
8097in order of increasing precedence:
8098
8099@table @code
8100@item ,
8101The comma or sequencing operator. Expressions in a comma-separated list
8102are evaluated from left to right, with the result of the entire
8103expression being the last expression evaluated.
8104
8105@item =
8106Assignment. The value of an assignment expression is the value
8107assigned. Defined on scalar types.
8108
8109@item @var{op}=
8110Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
8111and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 8112@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
8113@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
8114@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
8115
8116@item ?:
8117The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
8118of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
8119integral type.
8120
8121@item ||
8122Logical @sc{or}. Defined on integral types.
8123
8124@item &&
8125Logical @sc{and}. Defined on integral types.
8126
8127@item |
8128Bitwise @sc{or}. Defined on integral types.
8129
8130@item ^
8131Bitwise exclusive-@sc{or}. Defined on integral types.
8132
8133@item &
8134Bitwise @sc{and}. Defined on integral types.
8135
8136@item ==@r{, }!=
8137Equality and inequality. Defined on scalar types. The value of these
8138expressions is 0 for false and non-zero for true.
8139
8140@item <@r{, }>@r{, }<=@r{, }>=
8141Less than, greater than, less than or equal, greater than or equal.
8142Defined on scalar types. The value of these expressions is 0 for false
8143and non-zero for true.
8144
8145@item <<@r{, }>>
8146left shift, and right shift. Defined on integral types.
8147
8148@item @@
8149The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
8150
8151@item +@r{, }-
8152Addition and subtraction. Defined on integral types, floating-point types and
8153pointer types.
8154
8155@item *@r{, }/@r{, }%
8156Multiplication, division, and modulus. Multiplication and division are
8157defined on integral and floating-point types. Modulus is defined on
8158integral types.
8159
8160@item ++@r{, }--
8161Increment and decrement. When appearing before a variable, the
8162operation is performed before the variable is used in an expression;
8163when appearing after it, the variable's value is used before the
8164operation takes place.
8165
8166@item *
8167Pointer dereferencing. Defined on pointer types. Same precedence as
8168@code{++}.
8169
8170@item &
8171Address operator. Defined on variables. Same precedence as @code{++}.
8172
b37052ae
EZ
8173For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
8174allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
c906108c 8175(or, if you prefer, simply @samp{&&@var{ref}}) to examine the address
b37052ae 8176where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 8177stored.
c906108c
SS
8178
8179@item -
8180Negative. Defined on integral and floating-point types. Same
8181precedence as @code{++}.
8182
8183@item !
8184Logical negation. Defined on integral types. Same precedence as
8185@code{++}.
8186
8187@item ~
8188Bitwise complement operator. Defined on integral types. Same precedence as
8189@code{++}.
8190
8191
8192@item .@r{, }->
8193Structure member, and pointer-to-structure member. For convenience,
8194@value{GDBN} regards the two as equivalent, choosing whether to dereference a
8195pointer based on the stored type information.
8196Defined on @code{struct} and @code{union} data.
8197
c906108c
SS
8198@item .*@r{, }->*
8199Dereferences of pointers to members.
c906108c
SS
8200
8201@item []
8202Array indexing. @code{@var{a}[@var{i}]} is defined as
8203@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
8204
8205@item ()
8206Function parameter list. Same precedence as @code{->}.
8207
c906108c 8208@item ::
b37052ae 8209C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 8210and @code{class} types.
c906108c
SS
8211
8212@item ::
7a292a7a
SS
8213Doubled colons also represent the @value{GDBN} scope operator
8214(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
8215above.
c906108c
SS
8216@end table
8217
c906108c
SS
8218If an operator is redefined in the user code, @value{GDBN} usually
8219attempts to invoke the redefined version instead of using the operator's
8220predefined meaning.
c906108c 8221
c906108c 8222@menu
5d161b24 8223* C Constants::
c906108c
SS
8224@end menu
8225
6d2ebf8b 8226@node C Constants
b37052ae 8227@subsubsection C and C@t{++} constants
c906108c 8228
b37052ae 8229@cindex C and C@t{++} constants
c906108c 8230
b37052ae 8231@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 8232following ways:
c906108c
SS
8233
8234@itemize @bullet
8235@item
8236Integer constants are a sequence of digits. Octal constants are
6ca652b0
EZ
8237specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
8238by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
c906108c
SS
8239@samp{l}, specifying that the constant should be treated as a
8240@code{long} value.
8241
8242@item
8243Floating point constants are a sequence of digits, followed by a decimal
8244point, followed by a sequence of digits, and optionally followed by an
8245exponent. An exponent is of the form:
8246@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
8247sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
8248A floating-point constant may also end with a letter @samp{f} or
8249@samp{F}, specifying that the constant should be treated as being of
8250the @code{float} (as opposed to the default @code{double}) type; or with
8251a letter @samp{l} or @samp{L}, which specifies a @code{long double}
8252constant.
c906108c
SS
8253
8254@item
8255Enumerated constants consist of enumerated identifiers, or their
8256integral equivalents.
8257
8258@item
8259Character constants are a single character surrounded by single quotes
8260(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 8261(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
8262be represented by a letter or by @dfn{escape sequences}, which are of
8263the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
8264of the character's ordinal value; or of the form @samp{\@var{x}}, where
8265@samp{@var{x}} is a predefined special character---for example,
8266@samp{\n} for newline.
8267
8268@item
96a2c332
SS
8269String constants are a sequence of character constants surrounded by
8270double quotes (@code{"}). Any valid character constant (as described
8271above) may appear. Double quotes within the string must be preceded by
8272a backslash, so for instance @samp{"a\"b'c"} is a string of five
8273characters.
c906108c
SS
8274
8275@item
8276Pointer constants are an integral value. You can also write pointers
8277to constants using the C operator @samp{&}.
8278
8279@item
8280Array constants are comma-separated lists surrounded by braces @samp{@{}
8281and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
8282integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
8283and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
8284@end itemize
8285
c906108c 8286@menu
5d161b24
DB
8287* C plus plus expressions::
8288* C Defaults::
8289* C Checks::
c906108c 8290
5d161b24 8291* Debugging C::
c906108c
SS
8292@end menu
8293
6d2ebf8b 8294@node C plus plus expressions
b37052ae
EZ
8295@subsubsection C@t{++} expressions
8296
8297@cindex expressions in C@t{++}
8298@value{GDBN} expression handling can interpret most C@t{++} expressions.
8299
0179ffac
DC
8300@cindex debugging C@t{++} programs
8301@cindex C@t{++} compilers
8302@cindex debug formats and C@t{++}
8303@cindex @value{NGCC} and C@t{++}
c906108c 8304@quotation
b37052ae 8305@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use the
0179ffac
DC
8306proper compiler and the proper debug format. Currently, @value{GDBN}
8307works best when debugging C@t{++} code that is compiled with
8308@value{NGCC} 2.95.3 or with @value{NGCC} 3.1 or newer, using the options
8309@option{-gdwarf-2} or @option{-gstabs+}. DWARF 2 is preferred over
8310stabs+. Most configurations of @value{NGCC} emit either DWARF 2 or
8311stabs+ as their default debug format, so you usually don't need to
8312specify a debug format explicitly. Other compilers and/or debug formats
8313are likely to work badly or not at all when using @value{GDBN} to debug
8314C@t{++} code.
c906108c 8315@end quotation
c906108c
SS
8316
8317@enumerate
8318
8319@cindex member functions
8320@item
8321Member function calls are allowed; you can use expressions like
8322
474c8240 8323@smallexample
c906108c 8324count = aml->GetOriginal(x, y)
474c8240 8325@end smallexample
c906108c 8326
41afff9a 8327@vindex this@r{, inside C@t{++} member functions}
b37052ae 8328@cindex namespace in C@t{++}
c906108c
SS
8329@item
8330While a member function is active (in the selected stack frame), your
8331expressions have the same namespace available as the member function;
8332that is, @value{GDBN} allows implicit references to the class instance
b37052ae 8333pointer @code{this} following the same rules as C@t{++}.
c906108c 8334
c906108c 8335@cindex call overloaded functions
d4f3574e 8336@cindex overloaded functions, calling
b37052ae 8337@cindex type conversions in C@t{++}
c906108c
SS
8338@item
8339You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 8340call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
8341perform overload resolution involving user-defined type conversions,
8342calls to constructors, or instantiations of templates that do not exist
8343in the program. It also cannot handle ellipsis argument lists or
8344default arguments.
8345
8346It does perform integral conversions and promotions, floating-point
8347promotions, arithmetic conversions, pointer conversions, conversions of
8348class objects to base classes, and standard conversions such as those of
8349functions or arrays to pointers; it requires an exact match on the
8350number of function arguments.
8351
8352Overload resolution is always performed, unless you have specified
8353@code{set overload-resolution off}. @xref{Debugging C plus plus,
b37052ae 8354,@value{GDBN} features for C@t{++}}.
c906108c 8355
d4f3574e 8356You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
8357explicit function signature to call an overloaded function, as in
8358@smallexample
8359p 'foo(char,int)'('x', 13)
8360@end smallexample
d4f3574e 8361
c906108c 8362The @value{GDBN} command-completion facility can simplify this;
d4f3574e 8363see @ref{Completion, ,Command completion}.
c906108c 8364
c906108c
SS
8365@cindex reference declarations
8366@item
b37052ae
EZ
8367@value{GDBN} understands variables declared as C@t{++} references; you can use
8368them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
8369dereferenced.
8370
8371In the parameter list shown when @value{GDBN} displays a frame, the values of
8372reference variables are not displayed (unlike other variables); this
8373avoids clutter, since references are often used for large structures.
8374The @emph{address} of a reference variable is always shown, unless
8375you have specified @samp{set print address off}.
8376
8377@item
b37052ae 8378@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
8379expressions can use it just as expressions in your program do. Since
8380one scope may be defined in another, you can use @code{::} repeatedly if
8381necessary, for example in an expression like
8382@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 8383resolving name scope by reference to source files, in both C and C@t{++}
c906108c
SS
8384debugging (@pxref{Variables, ,Program variables}).
8385@end enumerate
8386
b37052ae 8387In addition, when used with HP's C@t{++} compiler, @value{GDBN} supports
53a5351d
JM
8388calling virtual functions correctly, printing out virtual bases of
8389objects, calling functions in a base subobject, casting objects, and
8390invoking user-defined operators.
c906108c 8391
6d2ebf8b 8392@node C Defaults
b37052ae 8393@subsubsection C and C@t{++} defaults
7a292a7a 8394
b37052ae 8395@cindex C and C@t{++} defaults
c906108c 8396
c906108c
SS
8397If you allow @value{GDBN} to set type and range checking automatically, they
8398both default to @code{off} whenever the working language changes to
b37052ae 8399C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 8400selects the working language.
c906108c
SS
8401
8402If you allow @value{GDBN} to set the language automatically, it
8403recognizes source files whose names end with @file{.c}, @file{.C}, or
8404@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
b37052ae 8405these files, it sets the working language to C or C@t{++}.
c906108c
SS
8406@xref{Automatically, ,Having @value{GDBN} infer the source language},
8407for further details.
8408
c906108c
SS
8409@c Type checking is (a) primarily motivated by Modula-2, and (b)
8410@c unimplemented. If (b) changes, it might make sense to let this node
8411@c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7a292a7a 8412
6d2ebf8b 8413@node C Checks
b37052ae 8414@subsubsection C and C@t{++} type and range checks
7a292a7a 8415
b37052ae 8416@cindex C and C@t{++} checks
c906108c 8417
b37052ae 8418By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
c906108c
SS
8419is not used. However, if you turn type checking on, @value{GDBN}
8420considers two variables type equivalent if:
8421
8422@itemize @bullet
8423@item
8424The two variables are structured and have the same structure, union, or
8425enumerated tag.
8426
8427@item
8428The two variables have the same type name, or types that have been
8429declared equivalent through @code{typedef}.
8430
8431@ignore
8432@c leaving this out because neither J Gilmore nor R Pesch understand it.
8433@c FIXME--beers?
8434@item
8435The two @code{struct}, @code{union}, or @code{enum} variables are
8436declared in the same declaration. (Note: this may not be true for all C
8437compilers.)
8438@end ignore
8439@end itemize
8440
8441Range checking, if turned on, is done on mathematical operations. Array
8442indices are not checked, since they are often used to index a pointer
8443that is not itself an array.
c906108c 8444
6d2ebf8b 8445@node Debugging C
c906108c 8446@subsubsection @value{GDBN} and C
c906108c
SS
8447
8448The @code{set print union} and @code{show print union} commands apply to
8449the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
8450inside a @code{struct} or @code{class} is also printed. Otherwise, it
8451appears as @samp{@{...@}}.
c906108c
SS
8452
8453The @code{@@} operator aids in the debugging of dynamic arrays, formed
8454with pointers and a memory allocation function. @xref{Expressions,
8455,Expressions}.
8456
c906108c 8457@menu
5d161b24 8458* Debugging C plus plus::
c906108c
SS
8459@end menu
8460
6d2ebf8b 8461@node Debugging C plus plus
b37052ae 8462@subsubsection @value{GDBN} features for C@t{++}
c906108c 8463
b37052ae 8464@cindex commands for C@t{++}
7a292a7a 8465
b37052ae
EZ
8466Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
8467designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
8468
8469@table @code
8470@cindex break in overloaded functions
8471@item @r{breakpoint menus}
8472When you want a breakpoint in a function whose name is overloaded,
8473@value{GDBN} breakpoint menus help you specify which function definition
8474you want. @xref{Breakpoint Menus,,Breakpoint menus}.
8475
b37052ae 8476@cindex overloading in C@t{++}
c906108c
SS
8477@item rbreak @var{regex}
8478Setting breakpoints using regular expressions is helpful for setting
8479breakpoints on overloaded functions that are not members of any special
8480classes.
8481@xref{Set Breaks, ,Setting breakpoints}.
8482
b37052ae 8483@cindex C@t{++} exception handling
c906108c
SS
8484@item catch throw
8485@itemx catch catch
b37052ae 8486Debug C@t{++} exception handling using these commands. @xref{Set
c906108c
SS
8487Catchpoints, , Setting catchpoints}.
8488
8489@cindex inheritance
8490@item ptype @var{typename}
8491Print inheritance relationships as well as other information for type
8492@var{typename}.
8493@xref{Symbols, ,Examining the Symbol Table}.
8494
b37052ae 8495@cindex C@t{++} symbol display
c906108c
SS
8496@item set print demangle
8497@itemx show print demangle
8498@itemx set print asm-demangle
8499@itemx show print asm-demangle
b37052ae
EZ
8500Control whether C@t{++} symbols display in their source form, both when
8501displaying code as C@t{++} source and when displaying disassemblies.
c906108c
SS
8502@xref{Print Settings, ,Print settings}.
8503
8504@item set print object
8505@itemx show print object
8506Choose whether to print derived (actual) or declared types of objects.
8507@xref{Print Settings, ,Print settings}.
8508
8509@item set print vtbl
8510@itemx show print vtbl
8511Control the format for printing virtual function tables.
8512@xref{Print Settings, ,Print settings}.
c906108c 8513(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 8514ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
8515
8516@kindex set overload-resolution
d4f3574e 8517@cindex overloaded functions, overload resolution
c906108c 8518@item set overload-resolution on
b37052ae 8519Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
8520is on. For overloaded functions, @value{GDBN} evaluates the arguments
8521and searches for a function whose signature matches the argument types,
b37052ae 8522using the standard C@t{++} conversion rules (see @ref{C plus plus expressions, ,C@t{++}
d4f3574e 8523expressions}, for details). If it cannot find a match, it emits a
c906108c
SS
8524message.
8525
8526@item set overload-resolution off
b37052ae 8527Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
8528overloaded functions that are not class member functions, @value{GDBN}
8529chooses the first function of the specified name that it finds in the
8530symbol table, whether or not its arguments are of the correct type. For
8531overloaded functions that are class member functions, @value{GDBN}
8532searches for a function whose signature @emph{exactly} matches the
8533argument types.
c906108c
SS
8534
8535@item @r{Overloaded symbol names}
8536You can specify a particular definition of an overloaded symbol, using
b37052ae 8537the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
8538@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
8539also use the @value{GDBN} command-line word completion facilities to list the
8540available choices, or to finish the type list for you.
8541@xref{Completion,, Command completion}, for details on how to do this.
8542@end table
c906108c 8543
b37303ee
AF
8544@node Objective-C
8545@subsection Objective-C
8546
8547@cindex Objective-C
8548This section provides information about some commands and command
8549options that are useful for debugging Objective-C code.
8550
8551@menu
b383017d
RM
8552* Method Names in Commands::
8553* The Print Command with Objective-C::
b37303ee
AF
8554@end menu
8555
8556@node Method Names in Commands, The Print Command with Objective-C, Objective-C, Objective-C
8557@subsubsection Method Names in Commands
8558
8559The following commands have been extended to accept Objective-C method
8560names as line specifications:
8561
8562@kindex clear@r{, and Objective-C}
8563@kindex break@r{, and Objective-C}
8564@kindex info line@r{, and Objective-C}
8565@kindex jump@r{, and Objective-C}
8566@kindex list@r{, and Objective-C}
8567@itemize
8568@item @code{clear}
8569@item @code{break}
8570@item @code{info line}
8571@item @code{jump}
8572@item @code{list}
8573@end itemize
8574
8575A fully qualified Objective-C method name is specified as
8576
8577@smallexample
8578-[@var{Class} @var{methodName}]
8579@end smallexample
8580
c552b3bb
JM
8581where the minus sign is used to indicate an instance method and a
8582plus sign (not shown) is used to indicate a class method. The class
8583name @var{Class} and method name @var{methodName} are enclosed in
8584brackets, similar to the way messages are specified in Objective-C
8585source code. For example, to set a breakpoint at the @code{create}
8586instance method of class @code{Fruit} in the program currently being
8587debugged, enter:
b37303ee
AF
8588
8589@smallexample
8590break -[Fruit create]
8591@end smallexample
8592
8593To list ten program lines around the @code{initialize} class method,
8594enter:
8595
8596@smallexample
8597list +[NSText initialize]
8598@end smallexample
8599
c552b3bb
JM
8600In the current version of @value{GDBN}, the plus or minus sign is
8601required. In future versions of @value{GDBN}, the plus or minus
8602sign will be optional, but you can use it to narrow the search. It
8603is also possible to specify just a method name:
b37303ee
AF
8604
8605@smallexample
8606break create
8607@end smallexample
8608
8609You must specify the complete method name, including any colons. If
8610your program's source files contain more than one @code{create} method,
8611you'll be presented with a numbered list of classes that implement that
8612method. Indicate your choice by number, or type @samp{0} to exit if
8613none apply.
8614
8615As another example, to clear a breakpoint established at the
8616@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
8617
8618@smallexample
8619clear -[NSWindow makeKeyAndOrderFront:]
8620@end smallexample
8621
8622@node The Print Command with Objective-C
8623@subsubsection The Print Command With Objective-C
c552b3bb
JM
8624@kindex print-object
8625@kindex po @r{(@code{print-object})}
b37303ee 8626
c552b3bb 8627The print command has also been extended to accept methods. For example:
b37303ee
AF
8628
8629@smallexample
c552b3bb 8630print -[@var{object} hash]
b37303ee
AF
8631@end smallexample
8632
8633@cindex print an Objective-C object description
c552b3bb
JM
8634@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
8635@noindent
8636will tell @value{GDBN} to send the @code{hash} message to @var{object}
8637and print the result. Also, an additional command has been added,
8638@code{print-object} or @code{po} for short, which is meant to print
8639the description of an object. However, this command may only work
8640with certain Objective-C libraries that have a particular hook
8641function, @code{_NSPrintForDebugger}, defined.
b37303ee
AF
8642
8643@node Modula-2, , Objective-C, Support
c906108c 8644@subsection Modula-2
7a292a7a 8645
d4f3574e 8646@cindex Modula-2, @value{GDBN} support
c906108c
SS
8647
8648The extensions made to @value{GDBN} to support Modula-2 only support
8649output from the @sc{gnu} Modula-2 compiler (which is currently being
8650developed). Other Modula-2 compilers are not currently supported, and
8651attempting to debug executables produced by them is most likely
8652to give an error as @value{GDBN} reads in the executable's symbol
8653table.
8654
8655@cindex expressions in Modula-2
8656@menu
8657* M2 Operators:: Built-in operators
8658* Built-In Func/Proc:: Built-in functions and procedures
8659* M2 Constants:: Modula-2 constants
8660* M2 Defaults:: Default settings for Modula-2
8661* Deviations:: Deviations from standard Modula-2
8662* M2 Checks:: Modula-2 type and range checks
8663* M2 Scope:: The scope operators @code{::} and @code{.}
8664* GDB/M2:: @value{GDBN} and Modula-2
8665@end menu
8666
6d2ebf8b 8667@node M2 Operators
c906108c
SS
8668@subsubsection Operators
8669@cindex Modula-2 operators
8670
8671Operators must be defined on values of specific types. For instance,
8672@code{+} is defined on numbers, but not on structures. Operators are
8673often defined on groups of types. For the purposes of Modula-2, the
8674following definitions hold:
8675
8676@itemize @bullet
8677
8678@item
8679@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
8680their subranges.
8681
8682@item
8683@emph{Character types} consist of @code{CHAR} and its subranges.
8684
8685@item
8686@emph{Floating-point types} consist of @code{REAL}.
8687
8688@item
8689@emph{Pointer types} consist of anything declared as @code{POINTER TO
8690@var{type}}.
8691
8692@item
8693@emph{Scalar types} consist of all of the above.
8694
8695@item
8696@emph{Set types} consist of @code{SET} and @code{BITSET} types.
8697
8698@item
8699@emph{Boolean types} consist of @code{BOOLEAN}.
8700@end itemize
8701
8702@noindent
8703The following operators are supported, and appear in order of
8704increasing precedence:
8705
8706@table @code
8707@item ,
8708Function argument or array index separator.
8709
8710@item :=
8711Assignment. The value of @var{var} @code{:=} @var{value} is
8712@var{value}.
8713
8714@item <@r{, }>
8715Less than, greater than on integral, floating-point, or enumerated
8716types.
8717
8718@item <=@r{, }>=
96a2c332 8719Less than or equal to, greater than or equal to
c906108c
SS
8720on integral, floating-point and enumerated types, or set inclusion on
8721set types. Same precedence as @code{<}.
8722
8723@item =@r{, }<>@r{, }#
8724Equality and two ways of expressing inequality, valid on scalar types.
8725Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
8726available for inequality, since @code{#} conflicts with the script
8727comment character.
8728
8729@item IN
8730Set membership. Defined on set types and the types of their members.
8731Same precedence as @code{<}.
8732
8733@item OR
8734Boolean disjunction. Defined on boolean types.
8735
8736@item AND@r{, }&
d4f3574e 8737Boolean conjunction. Defined on boolean types.
c906108c
SS
8738
8739@item @@
8740The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
8741
8742@item +@r{, }-
8743Addition and subtraction on integral and floating-point types, or union
8744and difference on set types.
8745
8746@item *
8747Multiplication on integral and floating-point types, or set intersection
8748on set types.
8749
8750@item /
8751Division on floating-point types, or symmetric set difference on set
8752types. Same precedence as @code{*}.
8753
8754@item DIV@r{, }MOD
8755Integer division and remainder. Defined on integral types. Same
8756precedence as @code{*}.
8757
8758@item -
8759Negative. Defined on @code{INTEGER} and @code{REAL} data.
8760
8761@item ^
8762Pointer dereferencing. Defined on pointer types.
8763
8764@item NOT
8765Boolean negation. Defined on boolean types. Same precedence as
8766@code{^}.
8767
8768@item .
8769@code{RECORD} field selector. Defined on @code{RECORD} data. Same
8770precedence as @code{^}.
8771
8772@item []
8773Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
8774
8775@item ()
8776Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
8777as @code{^}.
8778
8779@item ::@r{, }.
8780@value{GDBN} and Modula-2 scope operators.
8781@end table
8782
8783@quotation
8784@emph{Warning:} Sets and their operations are not yet supported, so @value{GDBN}
8785treats the use of the operator @code{IN}, or the use of operators
8786@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
8787@code{<=}, and @code{>=} on sets as an error.
8788@end quotation
8789
cb51c4e0 8790
6d2ebf8b 8791@node Built-In Func/Proc
c906108c 8792@subsubsection Built-in functions and procedures
cb51c4e0 8793@cindex Modula-2 built-ins
c906108c
SS
8794
8795Modula-2 also makes available several built-in procedures and functions.
8796In describing these, the following metavariables are used:
8797
8798@table @var
8799
8800@item a
8801represents an @code{ARRAY} variable.
8802
8803@item c
8804represents a @code{CHAR} constant or variable.
8805
8806@item i
8807represents a variable or constant of integral type.
8808
8809@item m
8810represents an identifier that belongs to a set. Generally used in the
8811same function with the metavariable @var{s}. The type of @var{s} should
8812be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
8813
8814@item n
8815represents a variable or constant of integral or floating-point type.
8816
8817@item r
8818represents a variable or constant of floating-point type.
8819
8820@item t
8821represents a type.
8822
8823@item v
8824represents a variable.
8825
8826@item x
8827represents a variable or constant of one of many types. See the
8828explanation of the function for details.
8829@end table
8830
8831All Modula-2 built-in procedures also return a result, described below.
8832
8833@table @code
8834@item ABS(@var{n})
8835Returns the absolute value of @var{n}.
8836
8837@item CAP(@var{c})
8838If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 8839equivalent, otherwise it returns its argument.
c906108c
SS
8840
8841@item CHR(@var{i})
8842Returns the character whose ordinal value is @var{i}.
8843
8844@item DEC(@var{v})
c3f6f71d 8845Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
8846
8847@item DEC(@var{v},@var{i})
8848Decrements the value in the variable @var{v} by @var{i}. Returns the
8849new value.
8850
8851@item EXCL(@var{m},@var{s})
8852Removes the element @var{m} from the set @var{s}. Returns the new
8853set.
8854
8855@item FLOAT(@var{i})
8856Returns the floating point equivalent of the integer @var{i}.
8857
8858@item HIGH(@var{a})
8859Returns the index of the last member of @var{a}.
8860
8861@item INC(@var{v})
c3f6f71d 8862Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
8863
8864@item INC(@var{v},@var{i})
8865Increments the value in the variable @var{v} by @var{i}. Returns the
8866new value.
8867
8868@item INCL(@var{m},@var{s})
8869Adds the element @var{m} to the set @var{s} if it is not already
8870there. Returns the new set.
8871
8872@item MAX(@var{t})
8873Returns the maximum value of the type @var{t}.
8874
8875@item MIN(@var{t})
8876Returns the minimum value of the type @var{t}.
8877
8878@item ODD(@var{i})
8879Returns boolean TRUE if @var{i} is an odd number.
8880
8881@item ORD(@var{x})
8882Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
8883value of a character is its @sc{ascii} value (on machines supporting the
8884@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
8885integral, character and enumerated types.
8886
8887@item SIZE(@var{x})
8888Returns the size of its argument. @var{x} can be a variable or a type.
8889
8890@item TRUNC(@var{r})
8891Returns the integral part of @var{r}.
8892
8893@item VAL(@var{t},@var{i})
8894Returns the member of the type @var{t} whose ordinal value is @var{i}.
8895@end table
8896
8897@quotation
8898@emph{Warning:} Sets and their operations are not yet supported, so
8899@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
8900an error.
8901@end quotation
8902
8903@cindex Modula-2 constants
6d2ebf8b 8904@node M2 Constants
c906108c
SS
8905@subsubsection Constants
8906
8907@value{GDBN} allows you to express the constants of Modula-2 in the following
8908ways:
8909
8910@itemize @bullet
8911
8912@item
8913Integer constants are simply a sequence of digits. When used in an
8914expression, a constant is interpreted to be type-compatible with the
8915rest of the expression. Hexadecimal integers are specified by a
8916trailing @samp{H}, and octal integers by a trailing @samp{B}.
8917
8918@item
8919Floating point constants appear as a sequence of digits, followed by a
8920decimal point and another sequence of digits. An optional exponent can
8921then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
8922@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
8923digits of the floating point constant must be valid decimal (base 10)
8924digits.
8925
8926@item
8927Character constants consist of a single character enclosed by a pair of
8928like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 8929also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
8930followed by a @samp{C}.
8931
8932@item
8933String constants consist of a sequence of characters enclosed by a
8934pair of like quotes, either single (@code{'}) or double (@code{"}).
8935Escape sequences in the style of C are also allowed. @xref{C
b37052ae 8936Constants, ,C and C@t{++} constants}, for a brief explanation of escape
c906108c
SS
8937sequences.
8938
8939@item
8940Enumerated constants consist of an enumerated identifier.
8941
8942@item
8943Boolean constants consist of the identifiers @code{TRUE} and
8944@code{FALSE}.
8945
8946@item
8947Pointer constants consist of integral values only.
8948
8949@item
8950Set constants are not yet supported.
8951@end itemize
8952
6d2ebf8b 8953@node M2 Defaults
c906108c
SS
8954@subsubsection Modula-2 defaults
8955@cindex Modula-2 defaults
8956
8957If type and range checking are set automatically by @value{GDBN}, they
8958both default to @code{on} whenever the working language changes to
d4f3574e 8959Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
8960selected the working language.
8961
8962If you allow @value{GDBN} to set the language automatically, then entering
8963code compiled from a file whose name ends with @file{.mod} sets the
d4f3574e 8964working language to Modula-2. @xref{Automatically, ,Having @value{GDBN} set
c906108c
SS
8965the language automatically}, for further details.
8966
6d2ebf8b 8967@node Deviations
c906108c
SS
8968@subsubsection Deviations from standard Modula-2
8969@cindex Modula-2, deviations from
8970
8971A few changes have been made to make Modula-2 programs easier to debug.
8972This is done primarily via loosening its type strictness:
8973
8974@itemize @bullet
8975@item
8976Unlike in standard Modula-2, pointer constants can be formed by
8977integers. This allows you to modify pointer variables during
8978debugging. (In standard Modula-2, the actual address contained in a
8979pointer variable is hidden from you; it can only be modified
8980through direct assignment to another pointer variable or expression that
8981returned a pointer.)
8982
8983@item
8984C escape sequences can be used in strings and characters to represent
8985non-printable characters. @value{GDBN} prints out strings with these
8986escape sequences embedded. Single non-printable characters are
8987printed using the @samp{CHR(@var{nnn})} format.
8988
8989@item
8990The assignment operator (@code{:=}) returns the value of its right-hand
8991argument.
8992
8993@item
8994All built-in procedures both modify @emph{and} return their argument.
8995@end itemize
8996
6d2ebf8b 8997@node M2 Checks
c906108c
SS
8998@subsubsection Modula-2 type and range checks
8999@cindex Modula-2 checks
9000
9001@quotation
9002@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
9003range checking.
9004@end quotation
9005@c FIXME remove warning when type/range checks added
9006
9007@value{GDBN} considers two Modula-2 variables type equivalent if:
9008
9009@itemize @bullet
9010@item
9011They are of types that have been declared equivalent via a @code{TYPE
9012@var{t1} = @var{t2}} statement
9013
9014@item
9015They have been declared on the same line. (Note: This is true of the
9016@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
9017@end itemize
9018
9019As long as type checking is enabled, any attempt to combine variables
9020whose types are not equivalent is an error.
9021
9022Range checking is done on all mathematical operations, assignment, array
9023index bounds, and all built-in functions and procedures.
9024
6d2ebf8b 9025@node M2 Scope
c906108c
SS
9026@subsubsection The scope operators @code{::} and @code{.}
9027@cindex scope
41afff9a 9028@cindex @code{.}, Modula-2 scope operator
c906108c
SS
9029@cindex colon, doubled as scope operator
9030@ifinfo
41afff9a 9031@vindex colon-colon@r{, in Modula-2}
c906108c
SS
9032@c Info cannot handle :: but TeX can.
9033@end ifinfo
9034@iftex
41afff9a 9035@vindex ::@r{, in Modula-2}
c906108c
SS
9036@end iftex
9037
9038There are a few subtle differences between the Modula-2 scope operator
9039(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
9040similar syntax:
9041
474c8240 9042@smallexample
c906108c
SS
9043
9044@var{module} . @var{id}
9045@var{scope} :: @var{id}
474c8240 9046@end smallexample
c906108c
SS
9047
9048@noindent
9049where @var{scope} is the name of a module or a procedure,
9050@var{module} the name of a module, and @var{id} is any declared
9051identifier within your program, except another module.
9052
9053Using the @code{::} operator makes @value{GDBN} search the scope
9054specified by @var{scope} for the identifier @var{id}. If it is not
9055found in the specified scope, then @value{GDBN} searches all scopes
9056enclosing the one specified by @var{scope}.
9057
9058Using the @code{.} operator makes @value{GDBN} search the current scope for
9059the identifier specified by @var{id} that was imported from the
9060definition module specified by @var{module}. With this operator, it is
9061an error if the identifier @var{id} was not imported from definition
9062module @var{module}, or if @var{id} is not an identifier in
9063@var{module}.
9064
6d2ebf8b 9065@node GDB/M2
c906108c
SS
9066@subsubsection @value{GDBN} and Modula-2
9067
9068Some @value{GDBN} commands have little use when debugging Modula-2 programs.
9069Five subcommands of @code{set print} and @code{show print} apply
b37052ae 9070specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 9071@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 9072apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
9073analogue in Modula-2.
9074
9075The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 9076with any language, is not useful with Modula-2. Its
c906108c 9077intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 9078created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 9079address can be specified by an integral constant, the construct
d4f3574e 9080@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
9081
9082@cindex @code{#} in Modula-2
9083In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
9084interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 9085
4e562065
JB
9086@node Unsupported languages
9087@section Unsupported languages
9088
9089@cindex unsupported languages
9090@cindex minimal language
9091In addition to the other fully-supported programming languages,
9092@value{GDBN} also provides a pseudo-language, called @code{minimal}.
9093It does not represent a real programming language, but provides a set
9094of capabilities close to what the C or assembly languages provide.
9095This should allow most simple operations to be performed while debugging
9096an application that uses a language currently not supported by @value{GDBN}.
9097
9098If the language is set to @code{auto}, @value{GDBN} will automatically
9099select this language if the current frame corresponds to an unsupported
9100language.
9101
6d2ebf8b 9102@node Symbols
c906108c
SS
9103@chapter Examining the Symbol Table
9104
d4f3574e 9105The commands described in this chapter allow you to inquire about the
c906108c
SS
9106symbols (names of variables, functions and types) defined in your
9107program. This information is inherent in the text of your program and
9108does not change as your program executes. @value{GDBN} finds it in your
9109program's symbol table, in the file indicated when you started @value{GDBN}
9110(@pxref{File Options, ,Choosing files}), or by one of the
9111file-management commands (@pxref{Files, ,Commands to specify files}).
9112
9113@cindex symbol names
9114@cindex names of symbols
9115@cindex quoting names
9116Occasionally, you may need to refer to symbols that contain unusual
9117characters, which @value{GDBN} ordinarily treats as word delimiters. The
9118most frequent case is in referring to static variables in other
9119source files (@pxref{Variables,,Program variables}). File names
9120are recorded in object files as debugging symbols, but @value{GDBN} would
9121ordinarily parse a typical file name, like @file{foo.c}, as the three words
9122@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
9123@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
9124
474c8240 9125@smallexample
c906108c 9126p 'foo.c'::x
474c8240 9127@end smallexample
c906108c
SS
9128
9129@noindent
9130looks up the value of @code{x} in the scope of the file @file{foo.c}.
9131
9132@table @code
9133@kindex info address
b37052ae 9134@cindex address of a symbol
c906108c
SS
9135@item info address @var{symbol}
9136Describe where the data for @var{symbol} is stored. For a register
9137variable, this says which register it is kept in. For a non-register
9138local variable, this prints the stack-frame offset at which the variable
9139is always stored.
9140
9141Note the contrast with @samp{print &@var{symbol}}, which does not work
9142at all for a register variable, and for a stack local variable prints
9143the exact address of the current instantiation of the variable.
9144
3d67e040 9145@kindex info symbol
b37052ae 9146@cindex symbol from address
3d67e040
EZ
9147@item info symbol @var{addr}
9148Print the name of a symbol which is stored at the address @var{addr}.
9149If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
9150nearest symbol and an offset from it:
9151
474c8240 9152@smallexample
3d67e040
EZ
9153(@value{GDBP}) info symbol 0x54320
9154_initialize_vx + 396 in section .text
474c8240 9155@end smallexample
3d67e040
EZ
9156
9157@noindent
9158This is the opposite of the @code{info address} command. You can use
9159it to find out the name of a variable or a function given its address.
9160
c906108c 9161@kindex whatis
d4f3574e
SS
9162@item whatis @var{expr}
9163Print the data type of expression @var{expr}. @var{expr} is not
c906108c
SS
9164actually evaluated, and any side-effecting operations (such as
9165assignments or function calls) inside it do not take place.
9166@xref{Expressions, ,Expressions}.
9167
9168@item whatis
9169Print the data type of @code{$}, the last value in the value history.
9170
9171@kindex ptype
9172@item ptype @var{typename}
9173Print a description of data type @var{typename}. @var{typename} may be
7a292a7a
SS
9174the name of a type, or for C code it may have the form @samp{class
9175@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
9176@var{union-tag}} or @samp{enum @var{enum-tag}}.
c906108c 9177
d4f3574e 9178@item ptype @var{expr}
c906108c 9179@itemx ptype
d4f3574e 9180Print a description of the type of expression @var{expr}. @code{ptype}
c906108c
SS
9181differs from @code{whatis} by printing a detailed description, instead
9182of just the name of the type.
9183
9184For example, for this variable declaration:
9185
474c8240 9186@smallexample
c906108c 9187struct complex @{double real; double imag;@} v;
474c8240 9188@end smallexample
c906108c
SS
9189
9190@noindent
9191the two commands give this output:
9192
474c8240 9193@smallexample
c906108c
SS
9194@group
9195(@value{GDBP}) whatis v
9196type = struct complex
9197(@value{GDBP}) ptype v
9198type = struct complex @{
9199 double real;
9200 double imag;
9201@}
9202@end group
474c8240 9203@end smallexample
c906108c
SS
9204
9205@noindent
9206As with @code{whatis}, using @code{ptype} without an argument refers to
9207the type of @code{$}, the last value in the value history.
9208
9209@kindex info types
9210@item info types @var{regexp}
9211@itemx info types
d4f3574e 9212Print a brief description of all types whose names match @var{regexp}
c906108c
SS
9213(or all types in your program, if you supply no argument). Each
9214complete typename is matched as though it were a complete line; thus,
9215@samp{i type value} gives information on all types in your program whose
d4f3574e 9216names include the string @code{value}, but @samp{i type ^value$} gives
c906108c
SS
9217information only on types whose complete name is @code{value}.
9218
9219This command differs from @code{ptype} in two ways: first, like
9220@code{whatis}, it does not print a detailed description; second, it
9221lists all source files where a type is defined.
9222
b37052ae
EZ
9223@kindex info scope
9224@cindex local variables
9225@item info scope @var{addr}
9226List all the variables local to a particular scope. This command
9227accepts a location---a function name, a source line, or an address
9228preceded by a @samp{*}, and prints all the variables local to the
9229scope defined by that location. For example:
9230
9231@smallexample
9232(@value{GDBP}) @b{info scope command_line_handler}
9233Scope for command_line_handler:
9234Symbol rl is an argument at stack/frame offset 8, length 4.
9235Symbol linebuffer is in static storage at address 0x150a18, length 4.
9236Symbol linelength is in static storage at address 0x150a1c, length 4.
9237Symbol p is a local variable in register $esi, length 4.
9238Symbol p1 is a local variable in register $ebx, length 4.
9239Symbol nline is a local variable in register $edx, length 4.
9240Symbol repeat is a local variable at frame offset -8, length 4.
9241@end smallexample
9242
f5c37c66
EZ
9243@noindent
9244This command is especially useful for determining what data to collect
9245during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
9246collect}.
9247
c906108c
SS
9248@kindex info source
9249@item info source
919d772c
JB
9250Show information about the current source file---that is, the source file for
9251the function containing the current point of execution:
9252@itemize @bullet
9253@item
9254the name of the source file, and the directory containing it,
9255@item
9256the directory it was compiled in,
9257@item
9258its length, in lines,
9259@item
9260which programming language it is written in,
9261@item
9262whether the executable includes debugging information for that file, and
9263if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
9264@item
9265whether the debugging information includes information about
9266preprocessor macros.
9267@end itemize
9268
c906108c
SS
9269
9270@kindex info sources
9271@item info sources
9272Print the names of all source files in your program for which there is
9273debugging information, organized into two lists: files whose symbols
9274have already been read, and files whose symbols will be read when needed.
9275
9276@kindex info functions
9277@item info functions
9278Print the names and data types of all defined functions.
9279
9280@item info functions @var{regexp}
9281Print the names and data types of all defined functions
9282whose names contain a match for regular expression @var{regexp}.
9283Thus, @samp{info fun step} finds all functions whose names
9284include @code{step}; @samp{info fun ^step} finds those whose names
b383017d
RM
9285start with @code{step}. If a function name contains characters
9286that conflict with the regular expression language (eg.
1c5dfdad 9287@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
9288
9289@kindex info variables
9290@item info variables
9291Print the names and data types of all variables that are declared
6ca652b0 9292outside of functions (i.e.@: excluding local variables).
c906108c
SS
9293
9294@item info variables @var{regexp}
9295Print the names and data types of all variables (except for local
9296variables) whose names contain a match for regular expression
9297@var{regexp}.
9298
b37303ee
AF
9299@kindex info classes
9300@item info classes
9301@itemx info classes @var{regexp}
9302Display all Objective-C classes in your program, or
9303(with the @var{regexp} argument) all those matching a particular regular
9304expression.
9305
9306@kindex info selectors
9307@item info selectors
9308@itemx info selectors @var{regexp}
9309Display all Objective-C selectors in your program, or
9310(with the @var{regexp} argument) all those matching a particular regular
9311expression.
9312
c906108c
SS
9313@ignore
9314This was never implemented.
9315@kindex info methods
9316@item info methods
9317@itemx info methods @var{regexp}
9318The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
9319methods within C@t{++} program, or (with the @var{regexp} argument) a
9320specific set of methods found in the various C@t{++} classes. Many
9321C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
9322from the @code{ptype} command can be overwhelming and hard to use. The
9323@code{info-methods} command filters the methods, printing only those
9324which match the regular-expression @var{regexp}.
9325@end ignore
9326
c906108c
SS
9327@cindex reloading symbols
9328Some systems allow individual object files that make up your program to
7a292a7a
SS
9329be replaced without stopping and restarting your program. For example,
9330in VxWorks you can simply recompile a defective object file and keep on
9331running. If you are running on one of these systems, you can allow
9332@value{GDBN} to reload the symbols for automatically relinked modules:
c906108c
SS
9333
9334@table @code
9335@kindex set symbol-reloading
9336@item set symbol-reloading on
9337Replace symbol definitions for the corresponding source file when an
9338object file with a particular name is seen again.
9339
9340@item set symbol-reloading off
6d2ebf8b
SS
9341Do not replace symbol definitions when encountering object files of the
9342same name more than once. This is the default state; if you are not
9343running on a system that permits automatic relinking of modules, you
9344should leave @code{symbol-reloading} off, since otherwise @value{GDBN}
9345may discard symbols when linking large programs, that may contain
9346several modules (from different directories or libraries) with the same
9347name.
c906108c
SS
9348
9349@kindex show symbol-reloading
9350@item show symbol-reloading
9351Show the current @code{on} or @code{off} setting.
9352@end table
c906108c 9353
c906108c
SS
9354@kindex set opaque-type-resolution
9355@item set opaque-type-resolution on
9356Tell @value{GDBN} to resolve opaque types. An opaque type is a type
9357declared as a pointer to a @code{struct}, @code{class}, or
9358@code{union}---for example, @code{struct MyType *}---that is used in one
9359source file although the full declaration of @code{struct MyType} is in
9360another source file. The default is on.
9361
9362A change in the setting of this subcommand will not take effect until
9363the next time symbols for a file are loaded.
9364
9365@item set opaque-type-resolution off
9366Tell @value{GDBN} not to resolve opaque types. In this case, the type
9367is printed as follows:
9368@smallexample
9369@{<no data fields>@}
9370@end smallexample
9371
9372@kindex show opaque-type-resolution
9373@item show opaque-type-resolution
9374Show whether opaque types are resolved or not.
c906108c
SS
9375
9376@kindex maint print symbols
9377@cindex symbol dump
9378@kindex maint print psymbols
9379@cindex partial symbol dump
9380@item maint print symbols @var{filename}
9381@itemx maint print psymbols @var{filename}
9382@itemx maint print msymbols @var{filename}
9383Write a dump of debugging symbol data into the file @var{filename}.
9384These commands are used to debug the @value{GDBN} symbol-reading code. Only
9385symbols with debugging data are included. If you use @samp{maint print
9386symbols}, @value{GDBN} includes all the symbols for which it has already
9387collected full details: that is, @var{filename} reflects symbols for
9388only those files whose symbols @value{GDBN} has read. You can use the
9389command @code{info sources} to find out which files these are. If you
9390use @samp{maint print psymbols} instead, the dump shows information about
9391symbols that @value{GDBN} only knows partially---that is, symbols defined in
9392files that @value{GDBN} has skimmed, but not yet read completely. Finally,
9393@samp{maint print msymbols} dumps just the minimal symbol information
9394required for each object file from which @value{GDBN} has read some symbols.
9395@xref{Files, ,Commands to specify files}, for a discussion of how
9396@value{GDBN} reads symbols (in the description of @code{symbol-file}).
44ea7b70 9397
5e7b2f39
JB
9398@kindex maint info symtabs
9399@kindex maint info psymtabs
44ea7b70
JB
9400@cindex listing @value{GDBN}'s internal symbol tables
9401@cindex symbol tables, listing @value{GDBN}'s internal
9402@cindex full symbol tables, listing @value{GDBN}'s internal
9403@cindex partial symbol tables, listing @value{GDBN}'s internal
5e7b2f39
JB
9404@item maint info symtabs @r{[} @var{regexp} @r{]}
9405@itemx maint info psymtabs @r{[} @var{regexp} @r{]}
44ea7b70
JB
9406
9407List the @code{struct symtab} or @code{struct partial_symtab}
9408structures whose names match @var{regexp}. If @var{regexp} is not
9409given, list them all. The output includes expressions which you can
9410copy into a @value{GDBN} debugging this one to examine a particular
9411structure in more detail. For example:
9412
9413@smallexample
5e7b2f39 9414(@value{GDBP}) maint info psymtabs dwarf2read
44ea7b70
JB
9415@{ objfile /home/gnu/build/gdb/gdb
9416 ((struct objfile *) 0x82e69d0)
b383017d 9417 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
9418 ((struct partial_symtab *) 0x8474b10)
9419 readin no
9420 fullname (null)
9421 text addresses 0x814d3c8 -- 0x8158074
9422 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
9423 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
9424 dependencies (none)
9425 @}
9426@}
5e7b2f39 9427(@value{GDBP}) maint info symtabs
44ea7b70
JB
9428(@value{GDBP})
9429@end smallexample
9430@noindent
9431We see that there is one partial symbol table whose filename contains
9432the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
9433and we see that @value{GDBN} has not read in any symtabs yet at all.
9434If we set a breakpoint on a function, that will cause @value{GDBN} to
9435read the symtab for the compilation unit containing that function:
9436
9437@smallexample
9438(@value{GDBP}) break dwarf2_psymtab_to_symtab
9439Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
9440line 1574.
5e7b2f39 9441(@value{GDBP}) maint info symtabs
b383017d 9442@{ objfile /home/gnu/build/gdb/gdb
44ea7b70 9443 ((struct objfile *) 0x82e69d0)
b383017d 9444 @{ symtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
9445 ((struct symtab *) 0x86c1f38)
9446 dirname (null)
9447 fullname (null)
9448 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
9449 debugformat DWARF 2
9450 @}
9451@}
b383017d 9452(@value{GDBP})
44ea7b70 9453@end smallexample
c906108c
SS
9454@end table
9455
44ea7b70 9456
6d2ebf8b 9457@node Altering
c906108c
SS
9458@chapter Altering Execution
9459
9460Once you think you have found an error in your program, you might want to
9461find out for certain whether correcting the apparent error would lead to
9462correct results in the rest of the run. You can find the answer by
9463experiment, using the @value{GDBN} features for altering execution of the
9464program.
9465
9466For example, you can store new values into variables or memory
7a292a7a
SS
9467locations, give your program a signal, restart it at a different
9468address, or even return prematurely from a function.
c906108c
SS
9469
9470@menu
9471* Assignment:: Assignment to variables
9472* Jumping:: Continuing at a different address
c906108c 9473* Signaling:: Giving your program a signal
c906108c
SS
9474* Returning:: Returning from a function
9475* Calling:: Calling your program's functions
9476* Patching:: Patching your program
9477@end menu
9478
6d2ebf8b 9479@node Assignment
c906108c
SS
9480@section Assignment to variables
9481
9482@cindex assignment
9483@cindex setting variables
9484To alter the value of a variable, evaluate an assignment expression.
9485@xref{Expressions, ,Expressions}. For example,
9486
474c8240 9487@smallexample
c906108c 9488print x=4
474c8240 9489@end smallexample
c906108c
SS
9490
9491@noindent
9492stores the value 4 into the variable @code{x}, and then prints the
5d161b24 9493value of the assignment expression (which is 4).
c906108c
SS
9494@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
9495information on operators in supported languages.
c906108c
SS
9496
9497@kindex set variable
9498@cindex variables, setting
9499If you are not interested in seeing the value of the assignment, use the
9500@code{set} command instead of the @code{print} command. @code{set} is
9501really the same as @code{print} except that the expression's value is
9502not printed and is not put in the value history (@pxref{Value History,
9503,Value history}). The expression is evaluated only for its effects.
9504
c906108c
SS
9505If the beginning of the argument string of the @code{set} command
9506appears identical to a @code{set} subcommand, use the @code{set
9507variable} command instead of just @code{set}. This command is identical
9508to @code{set} except for its lack of subcommands. For example, if your
9509program has a variable @code{width}, you get an error if you try to set
9510a new value with just @samp{set width=13}, because @value{GDBN} has the
9511command @code{set width}:
9512
474c8240 9513@smallexample
c906108c
SS
9514(@value{GDBP}) whatis width
9515type = double
9516(@value{GDBP}) p width
9517$4 = 13
9518(@value{GDBP}) set width=47
9519Invalid syntax in expression.
474c8240 9520@end smallexample
c906108c
SS
9521
9522@noindent
9523The invalid expression, of course, is @samp{=47}. In
9524order to actually set the program's variable @code{width}, use
9525
474c8240 9526@smallexample
c906108c 9527(@value{GDBP}) set var width=47
474c8240 9528@end smallexample
53a5351d 9529
c906108c
SS
9530Because the @code{set} command has many subcommands that can conflict
9531with the names of program variables, it is a good idea to use the
9532@code{set variable} command instead of just @code{set}. For example, if
9533your program has a variable @code{g}, you run into problems if you try
9534to set a new value with just @samp{set g=4}, because @value{GDBN} has
9535the command @code{set gnutarget}, abbreviated @code{set g}:
9536
474c8240 9537@smallexample
c906108c
SS
9538@group
9539(@value{GDBP}) whatis g
9540type = double
9541(@value{GDBP}) p g
9542$1 = 1
9543(@value{GDBP}) set g=4
2df3850c 9544(@value{GDBP}) p g
c906108c
SS
9545$2 = 1
9546(@value{GDBP}) r
9547The program being debugged has been started already.
9548Start it from the beginning? (y or n) y
9549Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
9550"/home/smith/cc_progs/a.out": can't open to read symbols:
9551 Invalid bfd target.
c906108c
SS
9552(@value{GDBP}) show g
9553The current BFD target is "=4".
9554@end group
474c8240 9555@end smallexample
c906108c
SS
9556
9557@noindent
9558The program variable @code{g} did not change, and you silently set the
9559@code{gnutarget} to an invalid value. In order to set the variable
9560@code{g}, use
9561
474c8240 9562@smallexample
c906108c 9563(@value{GDBP}) set var g=4
474c8240 9564@end smallexample
c906108c
SS
9565
9566@value{GDBN} allows more implicit conversions in assignments than C; you can
9567freely store an integer value into a pointer variable or vice versa,
9568and you can convert any structure to any other structure that is the
9569same length or shorter.
9570@comment FIXME: how do structs align/pad in these conversions?
9571@comment /doc@cygnus.com 18dec1990
9572
9573To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
9574construct to generate a value of specified type at a specified address
9575(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
9576to memory location @code{0x83040} as an integer (which implies a certain size
9577and representation in memory), and
9578
474c8240 9579@smallexample
c906108c 9580set @{int@}0x83040 = 4
474c8240 9581@end smallexample
c906108c
SS
9582
9583@noindent
9584stores the value 4 into that memory location.
9585
6d2ebf8b 9586@node Jumping
c906108c
SS
9587@section Continuing at a different address
9588
9589Ordinarily, when you continue your program, you do so at the place where
9590it stopped, with the @code{continue} command. You can instead continue at
9591an address of your own choosing, with the following commands:
9592
9593@table @code
9594@kindex jump
9595@item jump @var{linespec}
9596Resume execution at line @var{linespec}. Execution stops again
9597immediately if there is a breakpoint there. @xref{List, ,Printing
9598source lines}, for a description of the different forms of
9599@var{linespec}. It is common practice to use the @code{tbreak} command
9600in conjunction with @code{jump}. @xref{Set Breaks, ,Setting
9601breakpoints}.
9602
9603The @code{jump} command does not change the current stack frame, or
9604the stack pointer, or the contents of any memory location or any
9605register other than the program counter. If line @var{linespec} is in
9606a different function from the one currently executing, the results may
9607be bizarre if the two functions expect different patterns of arguments or
9608of local variables. For this reason, the @code{jump} command requests
9609confirmation if the specified line is not in the function currently
9610executing. However, even bizarre results are predictable if you are
9611well acquainted with the machine-language code of your program.
9612
9613@item jump *@var{address}
9614Resume execution at the instruction at address @var{address}.
9615@end table
9616
c906108c 9617@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
9618On many systems, you can get much the same effect as the @code{jump}
9619command by storing a new value into the register @code{$pc}. The
9620difference is that this does not start your program running; it only
9621changes the address of where it @emph{will} run when you continue. For
9622example,
c906108c 9623
474c8240 9624@smallexample
c906108c 9625set $pc = 0x485
474c8240 9626@end smallexample
c906108c
SS
9627
9628@noindent
9629makes the next @code{continue} command or stepping command execute at
9630address @code{0x485}, rather than at the address where your program stopped.
9631@xref{Continuing and Stepping, ,Continuing and stepping}.
c906108c
SS
9632
9633The most common occasion to use the @code{jump} command is to back
9634up---perhaps with more breakpoints set---over a portion of a program
9635that has already executed, in order to examine its execution in more
9636detail.
9637
c906108c 9638@c @group
6d2ebf8b 9639@node Signaling
c906108c
SS
9640@section Giving your program a signal
9641
9642@table @code
9643@kindex signal
9644@item signal @var{signal}
9645Resume execution where your program stopped, but immediately give it the
9646signal @var{signal}. @var{signal} can be the name or the number of a
9647signal. For example, on many systems @code{signal 2} and @code{signal
9648SIGINT} are both ways of sending an interrupt signal.
9649
9650Alternatively, if @var{signal} is zero, continue execution without
9651giving a signal. This is useful when your program stopped on account of
9652a signal and would ordinary see the signal when resumed with the
9653@code{continue} command; @samp{signal 0} causes it to resume without a
9654signal.
9655
9656@code{signal} does not repeat when you press @key{RET} a second time
9657after executing the command.
9658@end table
9659@c @end group
9660
9661Invoking the @code{signal} command is not the same as invoking the
9662@code{kill} utility from the shell. Sending a signal with @code{kill}
9663causes @value{GDBN} to decide what to do with the signal depending on
9664the signal handling tables (@pxref{Signals}). The @code{signal} command
9665passes the signal directly to your program.
9666
c906108c 9667
6d2ebf8b 9668@node Returning
c906108c
SS
9669@section Returning from a function
9670
9671@table @code
9672@cindex returning from a function
9673@kindex return
9674@item return
9675@itemx return @var{expression}
9676You can cancel execution of a function call with the @code{return}
9677command. If you give an
9678@var{expression} argument, its value is used as the function's return
9679value.
9680@end table
9681
9682When you use @code{return}, @value{GDBN} discards the selected stack frame
9683(and all frames within it). You can think of this as making the
9684discarded frame return prematurely. If you wish to specify a value to
9685be returned, give that value as the argument to @code{return}.
9686
9687This pops the selected stack frame (@pxref{Selection, ,Selecting a
9688frame}), and any other frames inside of it, leaving its caller as the
9689innermost remaining frame. That frame becomes selected. The
9690specified value is stored in the registers used for returning values
9691of functions.
9692
9693The @code{return} command does not resume execution; it leaves the
9694program stopped in the state that would exist if the function had just
9695returned. In contrast, the @code{finish} command (@pxref{Continuing
9696and Stepping, ,Continuing and stepping}) resumes execution until the
9697selected stack frame returns naturally.
9698
6d2ebf8b 9699@node Calling
c906108c
SS
9700@section Calling program functions
9701
9702@cindex calling functions
9703@kindex call
9704@table @code
9705@item call @var{expr}
9706Evaluate the expression @var{expr} without displaying @code{void}
9707returned values.
9708@end table
9709
9710You can use this variant of the @code{print} command if you want to
9711execute a function from your program, but without cluttering the output
5d161b24
DB
9712with @code{void} returned values. If the result is not void, it
9713is printed and saved in the value history.
c906108c 9714
6d2ebf8b 9715@node Patching
c906108c 9716@section Patching programs
7a292a7a 9717
c906108c
SS
9718@cindex patching binaries
9719@cindex writing into executables
c906108c 9720@cindex writing into corefiles
c906108c 9721
7a292a7a
SS
9722By default, @value{GDBN} opens the file containing your program's
9723executable code (or the corefile) read-only. This prevents accidental
9724alterations to machine code; but it also prevents you from intentionally
9725patching your program's binary.
c906108c
SS
9726
9727If you'd like to be able to patch the binary, you can specify that
9728explicitly with the @code{set write} command. For example, you might
9729want to turn on internal debugging flags, or even to make emergency
9730repairs.
9731
9732@table @code
9733@kindex set write
9734@item set write on
9735@itemx set write off
7a292a7a
SS
9736If you specify @samp{set write on}, @value{GDBN} opens executable and
9737core files for both reading and writing; if you specify @samp{set write
c906108c
SS
9738off} (the default), @value{GDBN} opens them read-only.
9739
9740If you have already loaded a file, you must load it again (using the
7a292a7a
SS
9741@code{exec-file} or @code{core-file} command) after changing @code{set
9742write}, for your new setting to take effect.
c906108c
SS
9743
9744@item show write
9745@kindex show write
7a292a7a
SS
9746Display whether executable files and core files are opened for writing
9747as well as reading.
c906108c
SS
9748@end table
9749
6d2ebf8b 9750@node GDB Files
c906108c
SS
9751@chapter @value{GDBN} Files
9752
7a292a7a
SS
9753@value{GDBN} needs to know the file name of the program to be debugged,
9754both in order to read its symbol table and in order to start your
9755program. To debug a core dump of a previous run, you must also tell
9756@value{GDBN} the name of the core dump file.
c906108c
SS
9757
9758@menu
9759* Files:: Commands to specify files
5b5d99cf 9760* Separate Debug Files:: Debugging information in separate files
c906108c
SS
9761* Symbol Errors:: Errors reading symbol files
9762@end menu
9763
6d2ebf8b 9764@node Files
c906108c 9765@section Commands to specify files
c906108c 9766
7a292a7a 9767@cindex symbol table
c906108c 9768@cindex core dump file
7a292a7a
SS
9769
9770You may want to specify executable and core dump file names. The usual
9771way to do this is at start-up time, using the arguments to
9772@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
9773Out of @value{GDBN}}).
c906108c
SS
9774
9775Occasionally it is necessary to change to a different file during a
9776@value{GDBN} session. Or you may run @value{GDBN} and forget to specify
9777a file you want to use. In these situations the @value{GDBN} commands
9778to specify new files are useful.
9779
9780@table @code
9781@cindex executable file
9782@kindex file
9783@item file @var{filename}
9784Use @var{filename} as the program to be debugged. It is read for its
9785symbols and for the contents of pure memory. It is also the program
9786executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
9787directory and the file is not found in the @value{GDBN} working directory,
9788@value{GDBN} uses the environment variable @code{PATH} as a list of
9789directories to search, just as the shell does when looking for a program
9790to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
9791and your program, using the @code{path} command.
9792
6d2ebf8b 9793On systems with memory-mapped files, an auxiliary file named
c906108c
SS
9794@file{@var{filename}.syms} may hold symbol table information for
9795@var{filename}. If so, @value{GDBN} maps in the symbol table from
9796@file{@var{filename}.syms}, starting up more quickly. See the
9797descriptions of the file options @samp{-mapped} and @samp{-readnow}
9798(available on the command line, and with the commands @code{file},
5d161b24 9799@code{symbol-file}, or @code{add-symbol-file}, described below),
c906108c 9800for more information.
c906108c
SS
9801
9802@item file
9803@code{file} with no argument makes @value{GDBN} discard any information it
9804has on both executable file and the symbol table.
9805
9806@kindex exec-file
9807@item exec-file @r{[} @var{filename} @r{]}
9808Specify that the program to be run (but not the symbol table) is found
9809in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
9810if necessary to locate your program. Omitting @var{filename} means to
9811discard information on the executable file.
9812
9813@kindex symbol-file
9814@item symbol-file @r{[} @var{filename} @r{]}
9815Read symbol table information from file @var{filename}. @code{PATH} is
9816searched when necessary. Use the @code{file} command to get both symbol
9817table and program to run from the same file.
9818
9819@code{symbol-file} with no argument clears out @value{GDBN} information on your
9820program's symbol table.
9821
5d161b24 9822The @code{symbol-file} command causes @value{GDBN} to forget the contents
c906108c
SS
9823of its convenience variables, the value history, and all breakpoints and
9824auto-display expressions. This is because they may contain pointers to
9825the internal data recording symbols and data types, which are part of
9826the old symbol table data being discarded inside @value{GDBN}.
9827
9828@code{symbol-file} does not repeat if you press @key{RET} again after
9829executing it once.
9830
9831When @value{GDBN} is configured for a particular environment, it
9832understands debugging information in whatever format is the standard
9833generated for that environment; you may use either a @sc{gnu} compiler, or
9834other compilers that adhere to the local conventions.
c906108c
SS
9835Best results are usually obtained from @sc{gnu} compilers; for example,
9836using @code{@value{GCC}} you can generate debugging information for
9837optimized code.
c906108c
SS
9838
9839For most kinds of object files, with the exception of old SVR3 systems
9840using COFF, the @code{symbol-file} command does not normally read the
9841symbol table in full right away. Instead, it scans the symbol table
9842quickly to find which source files and which symbols are present. The
9843details are read later, one source file at a time, as they are needed.
9844
9845The purpose of this two-stage reading strategy is to make @value{GDBN}
9846start up faster. For the most part, it is invisible except for
9847occasional pauses while the symbol table details for a particular source
9848file are being read. (The @code{set verbose} command can turn these
9849pauses into messages if desired. @xref{Messages/Warnings, ,Optional
9850warnings and messages}.)
9851
c906108c
SS
9852We have not implemented the two-stage strategy for COFF yet. When the
9853symbol table is stored in COFF format, @code{symbol-file} reads the
9854symbol table data in full right away. Note that ``stabs-in-COFF''
9855still does the two-stage strategy, since the debug info is actually
9856in stabs format.
9857
9858@kindex readnow
9859@cindex reading symbols immediately
9860@cindex symbols, reading immediately
9861@kindex mapped
9862@cindex memory-mapped symbol file
9863@cindex saving symbol table
9864@item symbol-file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9865@itemx file @var{filename} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
9866You can override the @value{GDBN} two-stage strategy for reading symbol
9867tables by using the @samp{-readnow} option with any of the commands that
9868load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 9869entire symbol table available.
c906108c 9870
c906108c
SS
9871If memory-mapped files are available on your system through the
9872@code{mmap} system call, you can use another option, @samp{-mapped}, to
9873cause @value{GDBN} to write the symbols for your program into a reusable
9874file. Future @value{GDBN} debugging sessions map in symbol information
9875from this auxiliary symbol file (if the program has not changed), rather
9876than spending time reading the symbol table from the executable
9877program. Using the @samp{-mapped} option has the same effect as
9878starting @value{GDBN} with the @samp{-mapped} command-line option.
9879
9880You can use both options together, to make sure the auxiliary symbol
9881file has all the symbol information for your program.
9882
9883The auxiliary symbol file for a program called @var{myprog} is called
9884@samp{@var{myprog}.syms}. Once this file exists (so long as it is newer
9885than the corresponding executable), @value{GDBN} always attempts to use
9886it when you debug @var{myprog}; no special options or commands are
9887needed.
9888
9889The @file{.syms} file is specific to the host machine where you run
9890@value{GDBN}. It holds an exact image of the internal @value{GDBN}
9891symbol table. It cannot be shared across multiple host platforms.
c906108c
SS
9892
9893@c FIXME: for now no mention of directories, since this seems to be in
9894@c flux. 13mar1992 status is that in theory GDB would look either in
9895@c current dir or in same dir as myprog; but issues like competing
9896@c GDB's, or clutter in system dirs, mean that in practice right now
9897@c only current dir is used. FFish says maybe a special GDB hierarchy
9898@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
9899@c files.
9900
c906108c
SS
9901@kindex core-file
9902@item core-file @r{[} @var{filename} @r{]}
4644b6e3 9903@itemx core
c906108c
SS
9904Specify the whereabouts of a core dump file to be used as the ``contents
9905of memory''. Traditionally, core files contain only some parts of the
9906address space of the process that generated them; @value{GDBN} can access the
9907executable file itself for other parts.
9908
9909@code{core-file} with no argument specifies that no core file is
9910to be used.
9911
9912Note that the core file is ignored when your program is actually running
7a292a7a
SS
9913under @value{GDBN}. So, if you have been running your program and you
9914wish to debug a core file instead, you must kill the subprocess in which
9915the program is running. To do this, use the @code{kill} command
c906108c 9916(@pxref{Kill Process, ,Killing the child process}).
c906108c 9917
c906108c
SS
9918@kindex add-symbol-file
9919@cindex dynamic linking
9920@item add-symbol-file @var{filename} @var{address}
9921@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]} @r{[} -mapped @r{]}
17d9d558 9922@itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address} @dots{}
96a2c332
SS
9923The @code{add-symbol-file} command reads additional symbol table
9924information from the file @var{filename}. You would use this command
9925when @var{filename} has been dynamically loaded (by some other means)
9926into the program that is running. @var{address} should be the memory
9927address at which the file has been loaded; @value{GDBN} cannot figure
d167840f
EZ
9928this out for itself. You can additionally specify an arbitrary number
9929of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
9930section name and base address for that section. You can specify any
9931@var{address} as an expression.
c906108c
SS
9932
9933The symbol table of the file @var{filename} is added to the symbol table
9934originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
9935@code{add-symbol-file} command any number of times; the new symbol data
9936thus read keeps adding to the old. To discard all old symbol data
9937instead, use the @code{symbol-file} command without any arguments.
c906108c 9938
17d9d558
JB
9939@cindex relocatable object files, reading symbols from
9940@cindex object files, relocatable, reading symbols from
9941@cindex reading symbols from relocatable object files
9942@cindex symbols, reading from relocatable object files
9943@cindex @file{.o} files, reading symbols from
9944Although @var{filename} is typically a shared library file, an
9945executable file, or some other object file which has been fully
9946relocated for loading into a process, you can also load symbolic
9947information from relocatable @file{.o} files, as long as:
9948
9949@itemize @bullet
9950@item
9951the file's symbolic information refers only to linker symbols defined in
9952that file, not to symbols defined by other object files,
9953@item
9954every section the file's symbolic information refers to has actually
9955been loaded into the inferior, as it appears in the file, and
9956@item
9957you can determine the address at which every section was loaded, and
9958provide these to the @code{add-symbol-file} command.
9959@end itemize
9960
9961@noindent
9962Some embedded operating systems, like Sun Chorus and VxWorks, can load
9963relocatable files into an already running program; such systems
9964typically make the requirements above easy to meet. However, it's
9965important to recognize that many native systems use complex link
49efadf5 9966procedures (@code{.linkonce} section factoring and C@t{++} constructor table
17d9d558
JB
9967assembly, for example) that make the requirements difficult to meet. In
9968general, one cannot assume that using @code{add-symbol-file} to read a
9969relocatable object file's symbolic information will have the same effect
9970as linking the relocatable object file into the program in the normal
9971way.
9972
c906108c
SS
9973@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
9974
9975You can use the @samp{-mapped} and @samp{-readnow} options just as with
9976the @code{symbol-file} command, to change how @value{GDBN} manages the symbol
9977table information for @var{filename}.
9978
9979@kindex add-shared-symbol-file
9980@item add-shared-symbol-file
9981The @code{add-shared-symbol-file} command can be used only under Harris' CXUX
5d161b24
DB
9982operating system for the Motorola 88k. @value{GDBN} automatically looks for
9983shared libraries, however if @value{GDBN} does not find yours, you can run
c906108c 9984@code{add-shared-symbol-file}. It takes no arguments.
c906108c 9985
c906108c
SS
9986@kindex section
9987@item section
5d161b24
DB
9988The @code{section} command changes the base address of section SECTION of
9989the exec file to ADDR. This can be used if the exec file does not contain
9990section addresses, (such as in the a.out format), or when the addresses
9991specified in the file itself are wrong. Each section must be changed
d4f3574e
SS
9992separately. The @code{info files} command, described below, lists all
9993the sections and their addresses.
c906108c
SS
9994
9995@kindex info files
9996@kindex info target
9997@item info files
9998@itemx info target
7a292a7a
SS
9999@code{info files} and @code{info target} are synonymous; both print the
10000current target (@pxref{Targets, ,Specifying a Debugging Target}),
10001including the names of the executable and core dump files currently in
10002use by @value{GDBN}, and the files from which symbols were loaded. The
10003command @code{help target} lists all possible targets rather than
10004current ones.
10005
fe95c787
MS
10006@kindex maint info sections
10007@item maint info sections
10008Another command that can give you extra information about program sections
10009is @code{maint info sections}. In addition to the section information
10010displayed by @code{info files}, this command displays the flags and file
10011offset of each section in the executable and core dump files. In addition,
10012@code{maint info sections} provides the following command options (which
10013may be arbitrarily combined):
10014
10015@table @code
10016@item ALLOBJ
10017Display sections for all loaded object files, including shared libraries.
10018@item @var{sections}
6600abed 10019Display info only for named @var{sections}.
fe95c787
MS
10020@item @var{section-flags}
10021Display info only for sections for which @var{section-flags} are true.
10022The section flags that @value{GDBN} currently knows about are:
10023@table @code
10024@item ALLOC
10025Section will have space allocated in the process when loaded.
10026Set for all sections except those containing debug information.
10027@item LOAD
10028Section will be loaded from the file into the child process memory.
10029Set for pre-initialized code and data, clear for @code{.bss} sections.
10030@item RELOC
10031Section needs to be relocated before loading.
10032@item READONLY
10033Section cannot be modified by the child process.
10034@item CODE
10035Section contains executable code only.
6600abed 10036@item DATA
fe95c787
MS
10037Section contains data only (no executable code).
10038@item ROM
10039Section will reside in ROM.
10040@item CONSTRUCTOR
10041Section contains data for constructor/destructor lists.
10042@item HAS_CONTENTS
10043Section is not empty.
10044@item NEVER_LOAD
10045An instruction to the linker to not output the section.
10046@item COFF_SHARED_LIBRARY
10047A notification to the linker that the section contains
10048COFF shared library information.
10049@item IS_COMMON
10050Section contains common symbols.
10051@end table
10052@end table
6763aef9
MS
10053@kindex set trust-readonly-sections
10054@item set trust-readonly-sections on
10055Tell @value{GDBN} that readonly sections in your object file
6ca652b0 10056really are read-only (i.e.@: that their contents will not change).
6763aef9
MS
10057In that case, @value{GDBN} can fetch values from these sections
10058out of the object file, rather than from the target program.
10059For some targets (notably embedded ones), this can be a significant
10060enhancement to debugging performance.
10061
10062The default is off.
10063
10064@item set trust-readonly-sections off
15110bc3 10065Tell @value{GDBN} not to trust readonly sections. This means that
6763aef9
MS
10066the contents of the section might change while the program is running,
10067and must therefore be fetched from the target when needed.
c906108c
SS
10068@end table
10069
10070All file-specifying commands allow both absolute and relative file names
10071as arguments. @value{GDBN} always converts the file name to an absolute file
10072name and remembers it that way.
10073
c906108c 10074@cindex shared libraries
c906108c
SS
10075@value{GDBN} supports HP-UX, SunOS, SVr4, Irix 5, and IBM RS/6000 shared
10076libraries.
53a5351d 10077
c906108c
SS
10078@value{GDBN} automatically loads symbol definitions from shared libraries
10079when you use the @code{run} command, or when you examine a core file.
10080(Before you issue the @code{run} command, @value{GDBN} does not understand
10081references to a function in a shared library, however---unless you are
10082debugging a core file).
53a5351d
JM
10083
10084On HP-UX, if the program loads a library explicitly, @value{GDBN}
10085automatically loads the symbols at the time of the @code{shl_load} call.
10086
c906108c
SS
10087@c FIXME: some @value{GDBN} release may permit some refs to undef
10088@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
10089@c FIXME...lib; check this from time to time when updating manual
10090
b7209cb4
FF
10091There are times, however, when you may wish to not automatically load
10092symbol definitions from shared libraries, such as when they are
10093particularly large or there are many of them.
10094
10095To control the automatic loading of shared library symbols, use the
10096commands:
10097
10098@table @code
10099@kindex set auto-solib-add
10100@item set auto-solib-add @var{mode}
10101If @var{mode} is @code{on}, symbols from all shared object libraries
10102will be loaded automatically when the inferior begins execution, you
10103attach to an independently started inferior, or when the dynamic linker
10104informs @value{GDBN} that a new library has been loaded. If @var{mode}
10105is @code{off}, symbols must be loaded manually, using the
10106@code{sharedlibrary} command. The default value is @code{on}.
10107
10108@kindex show auto-solib-add
10109@item show auto-solib-add
10110Display the current autoloading mode.
10111@end table
10112
10113To explicitly load shared library symbols, use the @code{sharedlibrary}
10114command:
10115
c906108c
SS
10116@table @code
10117@kindex info sharedlibrary
10118@kindex info share
10119@item info share
10120@itemx info sharedlibrary
10121Print the names of the shared libraries which are currently loaded.
10122
10123@kindex sharedlibrary
10124@kindex share
10125@item sharedlibrary @var{regex}
10126@itemx share @var{regex}
c906108c
SS
10127Load shared object library symbols for files matching a
10128Unix regular expression.
10129As with files loaded automatically, it only loads shared libraries
10130required by your program for a core file or after typing @code{run}. If
10131@var{regex} is omitted all shared libraries required by your program are
10132loaded.
10133@end table
10134
b7209cb4
FF
10135On some systems, such as HP-UX systems, @value{GDBN} supports
10136autoloading shared library symbols until a limiting threshold size is
10137reached. This provides the benefit of allowing autoloading to remain on
10138by default, but avoids autoloading excessively large shared libraries,
10139up to a threshold that is initially set, but which you can modify if you
10140wish.
c906108c
SS
10141
10142Beyond that threshold, symbols from shared libraries must be explicitly
d4f3574e
SS
10143loaded. To load these symbols, use the command @code{sharedlibrary
10144@var{filename}}. The base address of the shared library is determined
c906108c
SS
10145automatically by @value{GDBN} and need not be specified.
10146
10147To display or set the threshold, use the commands:
10148
10149@table @code
b7209cb4
FF
10150@kindex set auto-solib-limit
10151@item set auto-solib-limit @var{threshold}
10152Set the autoloading size threshold, in an integral number of megabytes.
10153If @var{threshold} is nonzero and shared library autoloading is enabled,
10154symbols from all shared object libraries will be loaded until the total
10155size of the loaded shared library symbols exceeds this threshold.
c906108c 10156Otherwise, symbols must be loaded manually, using the
6ca652b0 10157@code{sharedlibrary} command. The default threshold is 100 (i.e.@: 100
b7209cb4 10158Mb).
c906108c 10159
b7209cb4
FF
10160@kindex show auto-solib-limit
10161@item show auto-solib-limit
c906108c
SS
10162Display the current autoloading size threshold, in megabytes.
10163@end table
c906108c 10164
f5ebfba0
DJ
10165Shared libraries are also supported in many cross or remote debugging
10166configurations. A copy of the target's libraries need to be present on the
10167host system; they need to be the same as the target libraries, although the
10168copies on the target can be stripped as long as the copies on the host are
10169not.
10170
10171You need to tell @value{GDBN} where the target libraries are, so that it can
10172load the correct copies---otherwise, it may try to load the host's libraries.
10173@value{GDBN} has two variables to specify the search directories for target
10174libraries.
10175
10176@table @code
10177@kindex set solib-absolute-prefix
10178@item set solib-absolute-prefix @var{path}
10179If this variable is set, @var{path} will be used as a prefix for any
10180absolute shared library paths; many runtime loaders store the absolute
10181paths to the shared library in the target program's memory. If you use
10182@samp{solib-absolute-prefix} to find shared libraries, they need to be laid
10183out in the same way that they are on the target, with e.g.@: a
10184@file{/usr/lib} hierarchy under @var{path}.
10185
10186You can set the default value of @samp{solib-absolute-prefix} by using the
10187configure-time @samp{--with-sysroot} option.
10188
10189@kindex show solib-absolute-prefix
10190@item show solib-absolute-prefix
10191Display the current shared library prefix.
10192
10193@kindex set solib-search-path
10194@item set solib-search-path @var{path}
10195If this variable is set, @var{path} is a colon-separated list of directories
10196to search for shared libraries. @samp{solib-search-path} is used after
10197@samp{solib-absolute-prefix} fails to locate the library, or if the path to
10198the library is relative instead of absolute. If you want to use
10199@samp{solib-search-path} instead of @samp{solib-absolute-prefix}, be sure to
10200set @samp{solib-absolute-prefix} to a nonexistant directory to prevent
10201@value{GDBN} from finding your host's libraries.
10202
10203@kindex show solib-search-path
10204@item show solib-search-path
10205Display the current shared library search path.
10206@end table
10207
5b5d99cf
JB
10208
10209@node Separate Debug Files
10210@section Debugging Information in Separate Files
10211@cindex separate debugging information files
10212@cindex debugging information in separate files
10213@cindex @file{.debug} subdirectories
10214@cindex debugging information directory, global
10215@cindex global debugging information directory
10216
10217@value{GDBN} allows you to put a program's debugging information in a
10218file separate from the executable itself, in a way that allows
10219@value{GDBN} to find and load the debugging information automatically.
10220Since debugging information can be very large --- sometimes larger
10221than the executable code itself --- some systems distribute debugging
10222information for their executables in separate files, which users can
10223install only when they need to debug a problem.
10224
10225If an executable's debugging information has been extracted to a
10226separate file, the executable should contain a @dfn{debug link} giving
10227the name of the debugging information file (with no directory
10228components), and a checksum of its contents. (The exact form of a
10229debug link is described below.) If the full name of the directory
10230containing the executable is @var{execdir}, and the executable has a
10231debug link that specifies the name @var{debugfile}, then @value{GDBN}
10232will automatically search for the debugging information file in three
10233places:
10234
10235@itemize @bullet
10236@item
10237the directory containing the executable file (that is, it will look
10238for a file named @file{@var{execdir}/@var{debugfile}},
10239@item
10240a subdirectory of that directory named @file{.debug} (that is, the
10241file @file{@var{execdir}/.debug/@var{debugfile}}, and
10242@item
10243a subdirectory of the global debug file directory that includes the
10244executable's full path, and the name from the link (that is, the file
10245@file{@var{globaldebugdir}/@var{execdir}/@var{debugfile}}, where
10246@var{globaldebugdir} is the global debug file directory, and
10247@var{execdir} has been turned into a relative path).
10248@end itemize
10249@noindent
10250@value{GDBN} checks under each of these names for a debugging
10251information file whose checksum matches that given in the link, and
10252reads the debugging information from the first one it finds.
10253
10254So, for example, if you ask @value{GDBN} to debug @file{/usr/bin/ls},
10255which has a link containing the name @file{ls.debug}, and the global
10256debug directory is @file{/usr/lib/debug}, then @value{GDBN} will look
10257for debug information in @file{/usr/bin/ls.debug},
10258@file{/usr/bin/.debug/ls.debug}, and
10259@file{/usr/lib/debug/usr/bin/ls.debug}.
10260
10261You can set the global debugging info directory's name, and view the
10262name @value{GDBN} is currently using.
10263
10264@table @code
10265
10266@kindex set debug-file-directory
10267@item set debug-file-directory @var{directory}
10268Set the directory which @value{GDBN} searches for separate debugging
10269information files to @var{directory}.
10270
10271@kindex show debug-file-directory
10272@item show debug-file-directory
10273Show the directory @value{GDBN} searches for separate debugging
10274information files.
10275
10276@end table
10277
10278@cindex @code{.gnu_debuglink} sections
10279@cindex debug links
10280A debug link is a special section of the executable file named
10281@code{.gnu_debuglink}. The section must contain:
10282
10283@itemize
10284@item
10285A filename, with any leading directory components removed, followed by
10286a zero byte,
10287@item
10288zero to three bytes of padding, as needed to reach the next four-byte
10289boundary within the section, and
10290@item
10291a four-byte CRC checksum, stored in the same endianness used for the
10292executable file itself. The checksum is computed on the debugging
10293information file's full contents by the function given below, passing
10294zero as the @var{crc} argument.
10295@end itemize
10296
10297Any executable file format can carry a debug link, as long as it can
10298contain a section named @code{.gnu_debuglink} with the contents
10299described above.
10300
10301The debugging information file itself should be an ordinary
10302executable, containing a full set of linker symbols, sections, and
10303debugging information. The sections of the debugging information file
10304should have the same names, addresses and sizes as the original file,
10305but they need not contain any data --- much like a @code{.bss} section
10306in an ordinary executable.
10307
10308As of December 2002, there is no standard GNU utility to produce
10309separated executable / debugging information file pairs. Ulrich
10310Drepper's @file{elfutils} package, starting with version 0.53,
10311contains a version of the @code{strip} command such that the command
10312@kbd{strip foo -f foo.debug} removes the debugging information from
10313the executable file @file{foo}, places it in the file
10314@file{foo.debug}, and leaves behind a debug link in @file{foo}.
10315
10316Since there are many different ways to compute CRC's (different
10317polynomials, reversals, byte ordering, etc.), the simplest way to
10318describe the CRC used in @code{.gnu_debuglink} sections is to give the
10319complete code for a function that computes it:
10320
4644b6e3 10321@kindex gnu_debuglink_crc32
5b5d99cf
JB
10322@smallexample
10323unsigned long
10324gnu_debuglink_crc32 (unsigned long crc,
10325 unsigned char *buf, size_t len)
10326@{
10327 static const unsigned long crc32_table[256] =
10328 @{
10329 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
10330 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
10331 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
10332 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
10333 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
10334 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
10335 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
10336 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
10337 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
10338 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
10339 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
10340 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
10341 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
10342 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
10343 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
10344 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
10345 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
10346 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
10347 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
10348 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
10349 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
10350 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
10351 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
10352 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
10353 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
10354 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
10355 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
10356 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
10357 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
10358 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
10359 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
10360 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
10361 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
10362 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
10363 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
10364 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
10365 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
10366 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
10367 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
10368 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
10369 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
10370 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
10371 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
10372 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
10373 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
10374 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
10375 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
10376 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
10377 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
10378 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
10379 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
10380 0x2d02ef8d
10381 @};
10382 unsigned char *end;
10383
10384 crc = ~crc & 0xffffffff;
10385 for (end = buf + len; buf < end; ++buf)
10386 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
e7a3abfc 10387 return ~crc & 0xffffffff;
5b5d99cf
JB
10388@}
10389@end smallexample
10390
10391
6d2ebf8b 10392@node Symbol Errors
c906108c
SS
10393@section Errors reading symbol files
10394
10395While reading a symbol file, @value{GDBN} occasionally encounters problems,
10396such as symbol types it does not recognize, or known bugs in compiler
10397output. By default, @value{GDBN} does not notify you of such problems, since
10398they are relatively common and primarily of interest to people
10399debugging compilers. If you are interested in seeing information
10400about ill-constructed symbol tables, you can either ask @value{GDBN} to print
10401only one message about each such type of problem, no matter how many
10402times the problem occurs; or you can ask @value{GDBN} to print more messages,
10403to see how many times the problems occur, with the @code{set
10404complaints} command (@pxref{Messages/Warnings, ,Optional warnings and
10405messages}).
10406
10407The messages currently printed, and their meanings, include:
10408
10409@table @code
10410@item inner block not inside outer block in @var{symbol}
10411
10412The symbol information shows where symbol scopes begin and end
10413(such as at the start of a function or a block of statements). This
10414error indicates that an inner scope block is not fully contained
10415in its outer scope blocks.
10416
10417@value{GDBN} circumvents the problem by treating the inner block as if it had
10418the same scope as the outer block. In the error message, @var{symbol}
10419may be shown as ``@code{(don't know)}'' if the outer block is not a
10420function.
10421
10422@item block at @var{address} out of order
10423
10424The symbol information for symbol scope blocks should occur in
10425order of increasing addresses. This error indicates that it does not
10426do so.
10427
10428@value{GDBN} does not circumvent this problem, and has trouble
10429locating symbols in the source file whose symbols it is reading. (You
10430can often determine what source file is affected by specifying
10431@code{set verbose on}. @xref{Messages/Warnings, ,Optional warnings and
10432messages}.)
10433
10434@item bad block start address patched
10435
10436The symbol information for a symbol scope block has a start address
10437smaller than the address of the preceding source line. This is known
10438to occur in the SunOS 4.1.1 (and earlier) C compiler.
10439
10440@value{GDBN} circumvents the problem by treating the symbol scope block as
10441starting on the previous source line.
10442
10443@item bad string table offset in symbol @var{n}
10444
10445@cindex foo
10446Symbol number @var{n} contains a pointer into the string table which is
10447larger than the size of the string table.
10448
10449@value{GDBN} circumvents the problem by considering the symbol to have the
10450name @code{foo}, which may cause other problems if many symbols end up
10451with this name.
10452
10453@item unknown symbol type @code{0x@var{nn}}
10454
7a292a7a
SS
10455The symbol information contains new data types that @value{GDBN} does
10456not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 10457uncomprehended information, in hexadecimal.
c906108c 10458
7a292a7a
SS
10459@value{GDBN} circumvents the error by ignoring this symbol information.
10460This usually allows you to debug your program, though certain symbols
c906108c 10461are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
10462debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
10463on @code{complain}, then go up to the function @code{read_dbx_symtab}
10464and examine @code{*bufp} to see the symbol.
c906108c
SS
10465
10466@item stub type has NULL name
c906108c 10467
7a292a7a 10468@value{GDBN} could not find the full definition for a struct or class.
c906108c 10469
7a292a7a 10470@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 10471The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
10472information that recent versions of the compiler should have output for
10473it.
c906108c
SS
10474
10475@item info mismatch between compiler and debugger
10476
10477@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 10478
c906108c
SS
10479@end table
10480
6d2ebf8b 10481@node Targets
c906108c 10482@chapter Specifying a Debugging Target
7a292a7a 10483
c906108c
SS
10484@cindex debugging target
10485@kindex target
10486
10487A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
10488
10489Often, @value{GDBN} runs in the same host environment as your program;
10490in that case, the debugging target is specified as a side effect when
10491you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
10492flexibility---for example, running @value{GDBN} on a physically separate
10493host, or controlling a standalone system over a serial port or a
53a5351d
JM
10494realtime system over a TCP/IP connection---you can use the @code{target}
10495command to specify one of the target types configured for @value{GDBN}
10496(@pxref{Target Commands, ,Commands for managing targets}).
c906108c
SS
10497
10498@menu
10499* Active Targets:: Active targets
10500* Target Commands:: Commands for managing targets
c906108c
SS
10501* Byte Order:: Choosing target byte order
10502* Remote:: Remote debugging
96baa820 10503* KOD:: Kernel Object Display
c906108c
SS
10504
10505@end menu
10506
6d2ebf8b 10507@node Active Targets
c906108c 10508@section Active targets
7a292a7a 10509
c906108c
SS
10510@cindex stacking targets
10511@cindex active targets
10512@cindex multiple targets
10513
c906108c 10514There are three classes of targets: processes, core files, and
7a292a7a
SS
10515executable files. @value{GDBN} can work concurrently on up to three
10516active targets, one in each class. This allows you to (for example)
10517start a process and inspect its activity without abandoning your work on
10518a core file.
c906108c
SS
10519
10520For example, if you execute @samp{gdb a.out}, then the executable file
10521@code{a.out} is the only active target. If you designate a core file as
10522well---presumably from a prior run that crashed and coredumped---then
10523@value{GDBN} has two active targets and uses them in tandem, looking
10524first in the corefile target, then in the executable file, to satisfy
10525requests for memory addresses. (Typically, these two classes of target
10526are complementary, since core files contain only a program's
10527read-write memory---variables and so on---plus machine status, while
10528executable files contain only the program text and initialized data.)
c906108c
SS
10529
10530When you type @code{run}, your executable file becomes an active process
7a292a7a
SS
10531target as well. When a process target is active, all @value{GDBN}
10532commands requesting memory addresses refer to that target; addresses in
10533an active core file or executable file target are obscured while the
10534process target is active.
c906108c 10535
7a292a7a
SS
10536Use the @code{core-file} and @code{exec-file} commands to select a new
10537core file or executable target (@pxref{Files, ,Commands to specify
c906108c 10538files}). To specify as a target a process that is already running, use
7a292a7a
SS
10539the @code{attach} command (@pxref{Attach, ,Debugging an already-running
10540process}).
c906108c 10541
6d2ebf8b 10542@node Target Commands
c906108c
SS
10543@section Commands for managing targets
10544
10545@table @code
10546@item target @var{type} @var{parameters}
7a292a7a
SS
10547Connects the @value{GDBN} host environment to a target machine or
10548process. A target is typically a protocol for talking to debugging
10549facilities. You use the argument @var{type} to specify the type or
10550protocol of the target machine.
c906108c
SS
10551
10552Further @var{parameters} are interpreted by the target protocol, but
10553typically include things like device names or host names to connect
10554with, process numbers, and baud rates.
c906108c
SS
10555
10556The @code{target} command does not repeat if you press @key{RET} again
10557after executing the command.
10558
10559@kindex help target
10560@item help target
10561Displays the names of all targets available. To display targets
10562currently selected, use either @code{info target} or @code{info files}
10563(@pxref{Files, ,Commands to specify files}).
10564
10565@item help target @var{name}
10566Describe a particular target, including any parameters necessary to
10567select it.
10568
10569@kindex set gnutarget
10570@item set gnutarget @var{args}
5d161b24 10571@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 10572knows whether it is reading an @dfn{executable},
5d161b24
DB
10573a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
10574with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
10575with @code{gnutarget} the @code{target} refers to a program, not a machine.
10576
d4f3574e 10577@quotation
c906108c
SS
10578@emph{Warning:} To specify a file format with @code{set gnutarget},
10579you must know the actual BFD name.
d4f3574e 10580@end quotation
c906108c 10581
d4f3574e
SS
10582@noindent
10583@xref{Files, , Commands to specify files}.
c906108c 10584
5d161b24 10585@kindex show gnutarget
c906108c
SS
10586@item show gnutarget
10587Use the @code{show gnutarget} command to display what file format
10588@code{gnutarget} is set to read. If you have not set @code{gnutarget},
10589@value{GDBN} will determine the file format for each file automatically,
10590and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
10591@end table
10592
4644b6e3 10593@cindex common targets
c906108c
SS
10594Here are some common targets (available, or not, depending on the GDB
10595configuration):
c906108c
SS
10596
10597@table @code
4644b6e3 10598@kindex target
c906108c 10599@item target exec @var{program}
4644b6e3 10600@cindex executable file target
c906108c
SS
10601An executable file. @samp{target exec @var{program}} is the same as
10602@samp{exec-file @var{program}}.
10603
c906108c 10604@item target core @var{filename}
4644b6e3 10605@cindex core dump file target
c906108c
SS
10606A core dump file. @samp{target core @var{filename}} is the same as
10607@samp{core-file @var{filename}}.
c906108c 10608
c906108c 10609@item target remote @var{dev}
4644b6e3 10610@cindex remote target
c906108c
SS
10611Remote serial target in GDB-specific protocol. The argument @var{dev}
10612specifies what serial device to use for the connection (e.g.
10613@file{/dev/ttya}). @xref{Remote, ,Remote debugging}. @code{target remote}
d4f3574e 10614supports the @code{load} command. This is only useful if you have
c906108c
SS
10615some other way of getting the stub to the target system, and you can put
10616it somewhere in memory where it won't get clobbered by the download.
10617
c906108c 10618@item target sim
4644b6e3 10619@cindex built-in simulator target
2df3850c 10620Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213 10621In general,
474c8240 10622@smallexample
104c1213
JM
10623 target sim
10624 load
10625 run
474c8240 10626@end smallexample
d4f3574e 10627@noindent
104c1213 10628works; however, you cannot assume that a specific memory map, device
d4f3574e 10629drivers, or even basic I/O is available, although some simulators do
104c1213
JM
10630provide these. For info about any processor-specific simulator details,
10631see the appropriate section in @ref{Embedded Processors, ,Embedded
10632Processors}.
10633
c906108c
SS
10634@end table
10635
104c1213 10636Some configurations may include these targets as well:
c906108c
SS
10637
10638@table @code
10639
c906108c 10640@item target nrom @var{dev}
4644b6e3 10641@cindex NetROM ROM emulator target
c906108c
SS
10642NetROM ROM emulator. This target only supports downloading.
10643
c906108c
SS
10644@end table
10645
5d161b24 10646Different targets are available on different configurations of @value{GDBN};
c906108c 10647your configuration may have more or fewer targets.
c906108c
SS
10648
10649Many remote targets require you to download the executable's code
10650once you've successfully established a connection.
10651
10652@table @code
10653
10654@kindex load @var{filename}
10655@item load @var{filename}
c906108c
SS
10656Depending on what remote debugging facilities are configured into
10657@value{GDBN}, the @code{load} command may be available. Where it exists, it
10658is meant to make @var{filename} (an executable) available for debugging
10659on the remote system---by downloading, or dynamic linking, for example.
10660@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
10661the @code{add-symbol-file} command.
10662
10663If your @value{GDBN} does not have a @code{load} command, attempting to
10664execute it gets the error message ``@code{You can't do that when your
10665target is @dots{}}''
c906108c
SS
10666
10667The file is loaded at whatever address is specified in the executable.
10668For some object file formats, you can specify the load address when you
10669link the program; for other formats, like a.out, the object file format
10670specifies a fixed address.
10671@c FIXME! This would be a good place for an xref to the GNU linker doc.
10672
c906108c
SS
10673@code{load} does not repeat if you press @key{RET} again after using it.
10674@end table
10675
6d2ebf8b 10676@node Byte Order
c906108c 10677@section Choosing target byte order
7a292a7a 10678
c906108c
SS
10679@cindex choosing target byte order
10680@cindex target byte order
c906108c 10681
172c2a43 10682Some types of processors, such as the MIPS, PowerPC, and Renesas SH,
c906108c
SS
10683offer the ability to run either big-endian or little-endian byte
10684orders. Usually the executable or symbol will include a bit to
10685designate the endian-ness, and you will not need to worry about
10686which to use. However, you may still find it useful to adjust
d4f3574e 10687@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
10688
10689@table @code
4644b6e3 10690@kindex set endian
c906108c
SS
10691@item set endian big
10692Instruct @value{GDBN} to assume the target is big-endian.
10693
c906108c
SS
10694@item set endian little
10695Instruct @value{GDBN} to assume the target is little-endian.
10696
c906108c
SS
10697@item set endian auto
10698Instruct @value{GDBN} to use the byte order associated with the
10699executable.
10700
10701@item show endian
10702Display @value{GDBN}'s current idea of the target byte order.
10703
10704@end table
10705
10706Note that these commands merely adjust interpretation of symbolic
10707data on the host, and that they have absolutely no effect on the
10708target system.
10709
6d2ebf8b 10710@node Remote
c906108c
SS
10711@section Remote debugging
10712@cindex remote debugging
10713
10714If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
10715@value{GDBN} in the usual way, it is often useful to use remote debugging.
10716For example, you might use remote debugging on an operating system kernel,
c906108c
SS
10717or on a small system which does not have a general purpose operating system
10718powerful enough to run a full-featured debugger.
10719
10720Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
10721to make this work with particular debugging targets. In addition,
5d161b24 10722@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
10723but not specific to any particular target system) which you can use if you
10724write the remote stubs---the code that runs on the remote system to
10725communicate with @value{GDBN}.
10726
10727Other remote targets may be available in your
10728configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 10729
6f05cf9f
AC
10730@node KOD
10731@section Kernel Object Display
6f05cf9f 10732@cindex kernel object display
6f05cf9f
AC
10733@cindex KOD
10734
10735Some targets support kernel object display. Using this facility,
10736@value{GDBN} communicates specially with the underlying operating system
10737and can display information about operating system-level objects such as
10738mutexes and other synchronization objects. Exactly which objects can be
10739displayed is determined on a per-OS basis.
10740
3bbe9696 10741@kindex set os
6f05cf9f
AC
10742Use the @code{set os} command to set the operating system. This tells
10743@value{GDBN} which kernel object display module to initialize:
10744
474c8240 10745@smallexample
6f05cf9f 10746(@value{GDBP}) set os cisco
474c8240 10747@end smallexample
6f05cf9f 10748
3bbe9696
EZ
10749@kindex show os
10750The associated command @code{show os} displays the operating system
10751set with the @code{set os} command; if no operating system has been
10752set, @code{show os} will display an empty string @samp{""}.
10753
6f05cf9f
AC
10754If @code{set os} succeeds, @value{GDBN} will display some information
10755about the operating system, and will create a new @code{info} command
10756which can be used to query the target. The @code{info} command is named
10757after the operating system:
c906108c 10758
3bbe9696 10759@kindex info cisco
474c8240 10760@smallexample
6f05cf9f
AC
10761(@value{GDBP}) info cisco
10762List of Cisco Kernel Objects
10763Object Description
10764any Any and all objects
474c8240 10765@end smallexample
6f05cf9f
AC
10766
10767Further subcommands can be used to query about particular objects known
10768by the kernel.
10769
3bbe9696
EZ
10770There is currently no way to determine whether a given operating
10771system is supported other than to try setting it with @kbd{set os
10772@var{name}}, where @var{name} is the name of the operating system you
10773want to try.
6f05cf9f
AC
10774
10775
10776@node Remote Debugging
10777@chapter Debugging remote programs
10778
6b2f586d 10779@menu
07f31aa6 10780* Connecting:: Connecting to a remote target
6b2f586d
AC
10781* Server:: Using the gdbserver program
10782* NetWare:: Using the gdbserve.nlm program
501eef12 10783* Remote configuration:: Remote configuration
6b2f586d 10784* remote stub:: Implementing a remote stub
6b2f586d
AC
10785@end menu
10786
07f31aa6
DJ
10787@node Connecting
10788@section Connecting to a remote target
10789
10790On the @value{GDBN} host machine, you will need an unstripped copy of
10791your program, since @value{GDBN} needs symobl and debugging information.
10792Start up @value{GDBN} as usual, using the name of the local copy of your
10793program as the first argument.
10794
10795@cindex serial line, @code{target remote}
10796If you're using a serial line, you may want to give @value{GDBN} the
10797@w{@samp{--baud}} option, or use the @code{set remotebaud} command
10798before the @code{target} command.
10799
10800After that, use @code{target remote} to establish communications with
10801the target machine. Its argument specifies how to communicate---either
10802via a devicename attached to a direct serial line, or a TCP or UDP port
10803(possibly to a terminal server which in turn has a serial line to the
10804target). For example, to use a serial line connected to the device
10805named @file{/dev/ttyb}:
10806
10807@smallexample
10808target remote /dev/ttyb
10809@end smallexample
10810
10811@cindex TCP port, @code{target remote}
10812To use a TCP connection, use an argument of the form
10813@code{@var{host}:@var{port}} or @code{tcp:@var{host}:@var{port}}.
10814For example, to connect to port 2828 on a
10815terminal server named @code{manyfarms}:
10816
10817@smallexample
10818target remote manyfarms:2828
10819@end smallexample
10820
10821If your remote target is actually running on the same machine as
10822your debugger session (e.g.@: a simulator of your target running on
10823the same host), you can omit the hostname. For example, to connect
10824to port 1234 on your local machine:
10825
10826@smallexample
10827target remote :1234
10828@end smallexample
10829@noindent
10830
10831Note that the colon is still required here.
10832
10833@cindex UDP port, @code{target remote}
10834To use a UDP connection, use an argument of the form
10835@code{udp:@var{host}:@var{port}}. For example, to connect to UDP port 2828
10836on a terminal server named @code{manyfarms}:
10837
10838@smallexample
10839target remote udp:manyfarms:2828
10840@end smallexample
10841
10842When using a UDP connection for remote debugging, you should keep in mind
10843that the `U' stands for ``Unreliable''. UDP can silently drop packets on
10844busy or unreliable networks, which will cause havoc with your debugging
10845session.
10846
10847Now you can use all the usual commands to examine and change data and to
10848step and continue the remote program.
10849
10850@cindex interrupting remote programs
10851@cindex remote programs, interrupting
10852Whenever @value{GDBN} is waiting for the remote program, if you type the
10853interrupt character (often @key{C-C}), @value{GDBN} attempts to stop the
10854program. This may or may not succeed, depending in part on the hardware
10855and the serial drivers the remote system uses. If you type the
10856interrupt character once again, @value{GDBN} displays this prompt:
10857
10858@smallexample
10859Interrupted while waiting for the program.
10860Give up (and stop debugging it)? (y or n)
10861@end smallexample
10862
10863If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
10864(If you decide you want to try again later, you can use @samp{target
10865remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
10866goes back to waiting.
10867
10868@table @code
10869@kindex detach (remote)
10870@item detach
10871When you have finished debugging the remote program, you can use the
10872@code{detach} command to release it from @value{GDBN} control.
10873Detaching from the target normally resumes its execution, but the results
10874will depend on your particular remote stub. After the @code{detach}
10875command, @value{GDBN} is free to connect to another target.
10876
10877@kindex disconnect
10878@item disconnect
10879The @code{disconnect} command behaves like @code{detach}, except that
10880the target is generally not resumed. It will wait for @value{GDBN}
10881(this instance or another one) to connect and continue debugging. After
10882the @code{disconnect} command, @value{GDBN} is again free to connect to
10883another target.
10884@end table
10885
6f05cf9f
AC
10886@node Server
10887@section Using the @code{gdbserver} program
10888
10889@kindex gdbserver
10890@cindex remote connection without stubs
10891@code{gdbserver} is a control program for Unix-like systems, which
10892allows you to connect your program with a remote @value{GDBN} via
10893@code{target remote}---but without linking in the usual debugging stub.
10894
10895@code{gdbserver} is not a complete replacement for the debugging stubs,
10896because it requires essentially the same operating-system facilities
10897that @value{GDBN} itself does. In fact, a system that can run
10898@code{gdbserver} to connect to a remote @value{GDBN} could also run
10899@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
10900because it is a much smaller program than @value{GDBN} itself. It is
10901also easier to port than all of @value{GDBN}, so you may be able to get
10902started more quickly on a new system by using @code{gdbserver}.
10903Finally, if you develop code for real-time systems, you may find that
10904the tradeoffs involved in real-time operation make it more convenient to
10905do as much development work as possible on another system, for example
10906by cross-compiling. You can use @code{gdbserver} to make a similar
10907choice for debugging.
10908
10909@value{GDBN} and @code{gdbserver} communicate via either a serial line
10910or a TCP connection, using the standard @value{GDBN} remote serial
10911protocol.
10912
10913@table @emph
10914@item On the target machine,
10915you need to have a copy of the program you want to debug.
10916@code{gdbserver} does not need your program's symbol table, so you can
10917strip the program if necessary to save space. @value{GDBN} on the host
10918system does all the symbol handling.
10919
10920To use the server, you must tell it how to communicate with @value{GDBN};
56460a61 10921the name of your program; and the arguments for your program. The usual
6f05cf9f
AC
10922syntax is:
10923
10924@smallexample
10925target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
10926@end smallexample
10927
10928@var{comm} is either a device name (to use a serial line) or a TCP
10929hostname and portnumber. For example, to debug Emacs with the argument
10930@samp{foo.txt} and communicate with @value{GDBN} over the serial port
10931@file{/dev/com1}:
10932
10933@smallexample
10934target> gdbserver /dev/com1 emacs foo.txt
10935@end smallexample
10936
10937@code{gdbserver} waits passively for the host @value{GDBN} to communicate
10938with it.
10939
10940To use a TCP connection instead of a serial line:
10941
10942@smallexample
10943target> gdbserver host:2345 emacs foo.txt
10944@end smallexample
10945
10946The only difference from the previous example is the first argument,
10947specifying that you are communicating with the host @value{GDBN} via
10948TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
10949expect a TCP connection from machine @samp{host} to local TCP port 2345.
10950(Currently, the @samp{host} part is ignored.) You can choose any number
10951you want for the port number as long as it does not conflict with any
10952TCP ports already in use on the target system (for example, @code{23} is
10953reserved for @code{telnet}).@footnote{If you choose a port number that
10954conflicts with another service, @code{gdbserver} prints an error message
10955and exits.} You must use the same port number with the host @value{GDBN}
10956@code{target remote} command.
10957
56460a61
DJ
10958On some targets, @code{gdbserver} can also attach to running programs.
10959This is accomplished via the @code{--attach} argument. The syntax is:
10960
10961@smallexample
10962target> gdbserver @var{comm} --attach @var{pid}
10963@end smallexample
10964
10965@var{pid} is the process ID of a currently running process. It isn't necessary
10966to point @code{gdbserver} at a binary for the running process.
10967
b1fe9455
DJ
10968@pindex pidof
10969@cindex attach to a program by name
10970You can debug processes by name instead of process ID if your target has the
10971@code{pidof} utility:
10972
10973@smallexample
10974target> gdbserver @var{comm} --attach `pidof @var{PROGRAM}`
10975@end smallexample
10976
10977In case more than one copy of @var{PROGRAM} is running, or @var{PROGRAM}
10978has multiple threads, most versions of @code{pidof} support the
10979@code{-s} option to only return the first process ID.
10980
07f31aa6
DJ
10981@item On the host machine,
10982connect to your target (@pxref{Connecting,,Connecting to a remote target}).
6f05cf9f
AC
10983For TCP connections, you must start up @code{gdbserver} prior to using
10984the @code{target remote} command. Otherwise you may get an error whose
10985text depends on the host system, but which usually looks something like
07f31aa6
DJ
10986@samp{Connection refused}. You don't need to use the @code{load}
10987command in @value{GDBN} when using gdbserver, since the program is
10988already on the target.
10989
6f05cf9f
AC
10990@end table
10991
10992@node NetWare
10993@section Using the @code{gdbserve.nlm} program
10994
10995@kindex gdbserve.nlm
10996@code{gdbserve.nlm} is a control program for NetWare systems, which
10997allows you to connect your program with a remote @value{GDBN} via
10998@code{target remote}.
10999
11000@value{GDBN} and @code{gdbserve.nlm} communicate via a serial line,
11001using the standard @value{GDBN} remote serial protocol.
11002
11003@table @emph
11004@item On the target machine,
11005you need to have a copy of the program you want to debug.
11006@code{gdbserve.nlm} does not need your program's symbol table, so you
11007can strip the program if necessary to save space. @value{GDBN} on the
11008host system does all the symbol handling.
11009
11010To use the server, you must tell it how to communicate with
11011@value{GDBN}; the name of your program; and the arguments for your
11012program. The syntax is:
11013
11014@smallexample
11015load gdbserve [ BOARD=@var{board} ] [ PORT=@var{port} ]
11016 [ BAUD=@var{baud} ] @var{program} [ @var{args} @dots{} ]
11017@end smallexample
11018
11019@var{board} and @var{port} specify the serial line; @var{baud} specifies
11020the baud rate used by the connection. @var{port} and @var{node} default
11021to 0, @var{baud} defaults to 9600@dmn{bps}.
11022
11023For example, to debug Emacs with the argument @samp{foo.txt}and
11024communicate with @value{GDBN} over serial port number 2 or board 1
11025using a 19200@dmn{bps} connection:
11026
11027@smallexample
11028load gdbserve BOARD=1 PORT=2 BAUD=19200 emacs foo.txt
11029@end smallexample
11030
07f31aa6
DJ
11031@item
11032On the @value{GDBN} host machine, connect to your target (@pxref{Connecting,,
11033Connecting to a remote target}).
6f05cf9f 11034
6f05cf9f
AC
11035@end table
11036
501eef12
AC
11037@node Remote configuration
11038@section Remote configuration
11039
11040The following configuration options are available when debugging remote
11041programs:
11042
11043@table @code
11044@kindex set remote hardware-watchpoint-limit
11045@kindex set remote hardware-breakpoint-limit
11046@anchor{set remote hardware-watchpoint-limit}
11047@anchor{set remote hardware-breakpoint-limit}
11048@item set remote hardware-watchpoint-limit @var{limit}
11049@itemx set remote hardware-breakpoint-limit @var{limit}
11050Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
11051watchpoints. A limit of -1, the default, is treated as unlimited.
11052@end table
11053
6f05cf9f
AC
11054@node remote stub
11055@section Implementing a remote stub
7a292a7a 11056
8e04817f
AC
11057@cindex debugging stub, example
11058@cindex remote stub, example
11059@cindex stub example, remote debugging
11060The stub files provided with @value{GDBN} implement the target side of the
11061communication protocol, and the @value{GDBN} side is implemented in the
11062@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
11063these subroutines to communicate, and ignore the details. (If you're
11064implementing your own stub file, you can still ignore the details: start
11065with one of the existing stub files. @file{sparc-stub.c} is the best
11066organized, and therefore the easiest to read.)
11067
104c1213
JM
11068@cindex remote serial debugging, overview
11069To debug a program running on another machine (the debugging
11070@dfn{target} machine), you must first arrange for all the usual
11071prerequisites for the program to run by itself. For example, for a C
11072program, you need:
c906108c 11073
104c1213
JM
11074@enumerate
11075@item
11076A startup routine to set up the C runtime environment; these usually
11077have a name like @file{crt0}. The startup routine may be supplied by
11078your hardware supplier, or you may have to write your own.
96baa820 11079
5d161b24 11080@item
d4f3574e 11081A C subroutine library to support your program's
104c1213 11082subroutine calls, notably managing input and output.
96baa820 11083
104c1213
JM
11084@item
11085A way of getting your program to the other machine---for example, a
11086download program. These are often supplied by the hardware
11087manufacturer, but you may have to write your own from hardware
11088documentation.
11089@end enumerate
96baa820 11090
104c1213
JM
11091The next step is to arrange for your program to use a serial port to
11092communicate with the machine where @value{GDBN} is running (the @dfn{host}
11093machine). In general terms, the scheme looks like this:
96baa820 11094
104c1213
JM
11095@table @emph
11096@item On the host,
11097@value{GDBN} already understands how to use this protocol; when everything
11098else is set up, you can simply use the @samp{target remote} command
11099(@pxref{Targets,,Specifying a Debugging Target}).
11100
11101@item On the target,
11102you must link with your program a few special-purpose subroutines that
11103implement the @value{GDBN} remote serial protocol. The file containing these
11104subroutines is called a @dfn{debugging stub}.
11105
11106On certain remote targets, you can use an auxiliary program
11107@code{gdbserver} instead of linking a stub into your program.
11108@xref{Server,,Using the @code{gdbserver} program}, for details.
11109@end table
96baa820 11110
104c1213
JM
11111The debugging stub is specific to the architecture of the remote
11112machine; for example, use @file{sparc-stub.c} to debug programs on
11113@sc{sparc} boards.
96baa820 11114
104c1213
JM
11115@cindex remote serial stub list
11116These working remote stubs are distributed with @value{GDBN}:
96baa820 11117
104c1213
JM
11118@table @code
11119
11120@item i386-stub.c
41afff9a 11121@cindex @file{i386-stub.c}
104c1213
JM
11122@cindex Intel
11123@cindex i386
11124For Intel 386 and compatible architectures.
11125
11126@item m68k-stub.c
41afff9a 11127@cindex @file{m68k-stub.c}
104c1213
JM
11128@cindex Motorola 680x0
11129@cindex m680x0
11130For Motorola 680x0 architectures.
11131
11132@item sh-stub.c
41afff9a 11133@cindex @file{sh-stub.c}
172c2a43 11134@cindex Renesas
104c1213 11135@cindex SH
172c2a43 11136For Renesas SH architectures.
104c1213
JM
11137
11138@item sparc-stub.c
41afff9a 11139@cindex @file{sparc-stub.c}
104c1213
JM
11140@cindex Sparc
11141For @sc{sparc} architectures.
11142
11143@item sparcl-stub.c
41afff9a 11144@cindex @file{sparcl-stub.c}
104c1213
JM
11145@cindex Fujitsu
11146@cindex SparcLite
11147For Fujitsu @sc{sparclite} architectures.
11148
11149@end table
11150
11151The @file{README} file in the @value{GDBN} distribution may list other
11152recently added stubs.
11153
11154@menu
11155* Stub Contents:: What the stub can do for you
11156* Bootstrapping:: What you must do for the stub
11157* Debug Session:: Putting it all together
104c1213
JM
11158@end menu
11159
6d2ebf8b 11160@node Stub Contents
6f05cf9f 11161@subsection What the stub can do for you
104c1213
JM
11162
11163@cindex remote serial stub
11164The debugging stub for your architecture supplies these three
11165subroutines:
11166
11167@table @code
11168@item set_debug_traps
4644b6e3 11169@findex set_debug_traps
104c1213
JM
11170@cindex remote serial stub, initialization
11171This routine arranges for @code{handle_exception} to run when your
11172program stops. You must call this subroutine explicitly near the
11173beginning of your program.
11174
11175@item handle_exception
4644b6e3 11176@findex handle_exception
104c1213
JM
11177@cindex remote serial stub, main routine
11178This is the central workhorse, but your program never calls it
11179explicitly---the setup code arranges for @code{handle_exception} to
11180run when a trap is triggered.
11181
11182@code{handle_exception} takes control when your program stops during
11183execution (for example, on a breakpoint), and mediates communications
11184with @value{GDBN} on the host machine. This is where the communications
11185protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 11186representative on the target machine. It begins by sending summary
104c1213
JM
11187information on the state of your program, then continues to execute,
11188retrieving and transmitting any information @value{GDBN} needs, until you
11189execute a @value{GDBN} command that makes your program resume; at that point,
11190@code{handle_exception} returns control to your own code on the target
5d161b24 11191machine.
104c1213
JM
11192
11193@item breakpoint
11194@cindex @code{breakpoint} subroutine, remote
11195Use this auxiliary subroutine to make your program contain a
11196breakpoint. Depending on the particular situation, this may be the only
11197way for @value{GDBN} to get control. For instance, if your target
11198machine has some sort of interrupt button, you won't need to call this;
11199pressing the interrupt button transfers control to
11200@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
11201simply receiving characters on the serial port may also trigger a trap;
11202again, in that situation, you don't need to call @code{breakpoint} from
11203your own program---simply running @samp{target remote} from the host
5d161b24 11204@value{GDBN} session gets control.
104c1213
JM
11205
11206Call @code{breakpoint} if none of these is true, or if you simply want
11207to make certain your program stops at a predetermined point for the
11208start of your debugging session.
11209@end table
11210
6d2ebf8b 11211@node Bootstrapping
6f05cf9f 11212@subsection What you must do for the stub
104c1213
JM
11213
11214@cindex remote stub, support routines
11215The debugging stubs that come with @value{GDBN} are set up for a particular
11216chip architecture, but they have no information about the rest of your
11217debugging target machine.
11218
11219First of all you need to tell the stub how to communicate with the
11220serial port.
11221
11222@table @code
11223@item int getDebugChar()
4644b6e3 11224@findex getDebugChar
104c1213
JM
11225Write this subroutine to read a single character from the serial port.
11226It may be identical to @code{getchar} for your target system; a
11227different name is used to allow you to distinguish the two if you wish.
11228
11229@item void putDebugChar(int)
4644b6e3 11230@findex putDebugChar
104c1213 11231Write this subroutine to write a single character to the serial port.
5d161b24 11232It may be identical to @code{putchar} for your target system; a
104c1213
JM
11233different name is used to allow you to distinguish the two if you wish.
11234@end table
11235
11236@cindex control C, and remote debugging
11237@cindex interrupting remote targets
11238If you want @value{GDBN} to be able to stop your program while it is
11239running, you need to use an interrupt-driven serial driver, and arrange
11240for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
11241character). That is the character which @value{GDBN} uses to tell the
11242remote system to stop.
11243
11244Getting the debugging target to return the proper status to @value{GDBN}
11245probably requires changes to the standard stub; one quick and dirty way
11246is to just execute a breakpoint instruction (the ``dirty'' part is that
11247@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
11248
11249Other routines you need to supply are:
11250
11251@table @code
11252@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
4644b6e3 11253@findex exceptionHandler
104c1213
JM
11254Write this function to install @var{exception_address} in the exception
11255handling tables. You need to do this because the stub does not have any
11256way of knowing what the exception handling tables on your target system
11257are like (for example, the processor's table might be in @sc{rom},
11258containing entries which point to a table in @sc{ram}).
11259@var{exception_number} is the exception number which should be changed;
11260its meaning is architecture-dependent (for example, different numbers
11261might represent divide by zero, misaligned access, etc). When this
11262exception occurs, control should be transferred directly to
11263@var{exception_address}, and the processor state (stack, registers,
11264and so on) should be just as it is when a processor exception occurs. So if
11265you want to use a jump instruction to reach @var{exception_address}, it
11266should be a simple jump, not a jump to subroutine.
11267
11268For the 386, @var{exception_address} should be installed as an interrupt
11269gate so that interrupts are masked while the handler runs. The gate
11270should be at privilege level 0 (the most privileged level). The
11271@sc{sparc} and 68k stubs are able to mask interrupts themselves without
11272help from @code{exceptionHandler}.
11273
11274@item void flush_i_cache()
4644b6e3 11275@findex flush_i_cache
d4f3574e 11276On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
11277instruction cache, if any, on your target machine. If there is no
11278instruction cache, this subroutine may be a no-op.
11279
11280On target machines that have instruction caches, @value{GDBN} requires this
11281function to make certain that the state of your program is stable.
11282@end table
11283
11284@noindent
11285You must also make sure this library routine is available:
11286
11287@table @code
11288@item void *memset(void *, int, int)
4644b6e3 11289@findex memset
104c1213
JM
11290This is the standard library function @code{memset} that sets an area of
11291memory to a known value. If you have one of the free versions of
11292@code{libc.a}, @code{memset} can be found there; otherwise, you must
11293either obtain it from your hardware manufacturer, or write your own.
11294@end table
11295
11296If you do not use the GNU C compiler, you may need other standard
11297library subroutines as well; this varies from one stub to another,
11298but in general the stubs are likely to use any of the common library
d4f3574e 11299subroutines which @code{@value{GCC}} generates as inline code.
104c1213
JM
11300
11301
6d2ebf8b 11302@node Debug Session
6f05cf9f 11303@subsection Putting it all together
104c1213
JM
11304
11305@cindex remote serial debugging summary
11306In summary, when your program is ready to debug, you must follow these
11307steps.
11308
11309@enumerate
11310@item
6d2ebf8b 11311Make sure you have defined the supporting low-level routines
104c1213
JM
11312(@pxref{Bootstrapping,,What you must do for the stub}):
11313@display
11314@code{getDebugChar}, @code{putDebugChar},
11315@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
11316@end display
11317
11318@item
11319Insert these lines near the top of your program:
11320
474c8240 11321@smallexample
104c1213
JM
11322set_debug_traps();
11323breakpoint();
474c8240 11324@end smallexample
104c1213
JM
11325
11326@item
11327For the 680x0 stub only, you need to provide a variable called
11328@code{exceptionHook}. Normally you just use:
11329
474c8240 11330@smallexample
104c1213 11331void (*exceptionHook)() = 0;
474c8240 11332@end smallexample
104c1213 11333
d4f3574e 11334@noindent
104c1213 11335but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 11336function in your program, that function is called when
104c1213
JM
11337@code{@value{GDBN}} continues after stopping on a trap (for example, bus
11338error). The function indicated by @code{exceptionHook} is called with
11339one parameter: an @code{int} which is the exception number.
11340
11341@item
11342Compile and link together: your program, the @value{GDBN} debugging stub for
11343your target architecture, and the supporting subroutines.
11344
11345@item
11346Make sure you have a serial connection between your target machine and
11347the @value{GDBN} host, and identify the serial port on the host.
11348
11349@item
11350@c The "remote" target now provides a `load' command, so we should
11351@c document that. FIXME.
11352Download your program to your target machine (or get it there by
11353whatever means the manufacturer provides), and start it.
11354
11355@item
07f31aa6
DJ
11356Start @value{GDBN} on the host, and connect to the target
11357(@pxref{Connecting,,Connecting to a remote target}).
9db8d71f 11358
104c1213
JM
11359@end enumerate
11360
8e04817f
AC
11361@node Configurations
11362@chapter Configuration-Specific Information
104c1213 11363
8e04817f
AC
11364While nearly all @value{GDBN} commands are available for all native and
11365cross versions of the debugger, there are some exceptions. This chapter
11366describes things that are only available in certain configurations.
104c1213 11367
8e04817f
AC
11368There are three major categories of configurations: native
11369configurations, where the host and target are the same, embedded
11370operating system configurations, which are usually the same for several
11371different processor architectures, and bare embedded processors, which
11372are quite different from each other.
104c1213 11373
8e04817f
AC
11374@menu
11375* Native::
11376* Embedded OS::
11377* Embedded Processors::
11378* Architectures::
11379@end menu
104c1213 11380
8e04817f
AC
11381@node Native
11382@section Native
104c1213 11383
8e04817f
AC
11384This section describes details specific to particular native
11385configurations.
6cf7e474 11386
8e04817f
AC
11387@menu
11388* HP-UX:: HP-UX
7561d450 11389* BSD libkvm Interface:: Debugging BSD kernel memory images
8e04817f
AC
11390* SVR4 Process Information:: SVR4 process information
11391* DJGPP Native:: Features specific to the DJGPP port
78c47bea 11392* Cygwin Native:: Features specific to the Cygwin port
8e04817f 11393@end menu
6cf7e474 11394
8e04817f
AC
11395@node HP-UX
11396@subsection HP-UX
104c1213 11397
8e04817f
AC
11398On HP-UX systems, if you refer to a function or variable name that
11399begins with a dollar sign, @value{GDBN} searches for a user or system
11400name first, before it searches for a convenience variable.
104c1213 11401
7561d450
MK
11402@node BSD libkvm Interface
11403@subsection BSD libkvm Interface
11404
11405@cindex libkvm
11406@cindex kernel memory image
11407@cindex kernel crash dump
11408
11409BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
11410interface that provides a uniform interface for accessing kernel virtual
11411memory images, including live systems and crash dumps. @value{GDBN}
11412uses this interface to allow you to debug live kernels and kernel crash
11413dumps on many native BSD configurations. This is implemented as a
11414special @code{kvm} debugging target. For debugging a live system, load
11415the currently running kernel into @value{GDBN} and connect to the
11416@code{kvm} target:
11417
11418@smallexample
11419(@value{GDBP}) @b{target kvm}
11420@end smallexample
11421
11422For debugging crash dumps, provide the file name of the crash dump as an
11423argument:
11424
11425@smallexample
11426(@value{GDBP}) @b{target kvm /var/crash/bsd.0}
11427@end smallexample
11428
11429Once connected to the @code{kvm} target, the following commands are
11430available:
11431
11432@table @code
11433@kindex kvm
11434@item kvm pcb
11435Set current context from pcb address.
11436
11437@item kvm proc
11438Set current context from proc address. This command isn't available on
11439modern FreeBSD systems.
11440@end table
11441
8e04817f
AC
11442@node SVR4 Process Information
11443@subsection SVR4 process information
104c1213 11444
8e04817f
AC
11445@kindex /proc
11446@cindex process image
104c1213 11447
8e04817f
AC
11448Many versions of SVR4 provide a facility called @samp{/proc} that can be
11449used to examine the image of a running process using file-system
11450subroutines. If @value{GDBN} is configured for an operating system with
11451this facility, the command @code{info proc} is available to report on
11452several kinds of information about the process running your program.
11453@code{info proc} works only on SVR4 systems that include the
11454@code{procfs} code. This includes OSF/1 (Digital Unix), Solaris, Irix,
1104b9e7 11455and Unixware, but not HP-UX or @sc{gnu}/Linux, for example.
104c1213 11456
8e04817f
AC
11457@table @code
11458@kindex info proc
11459@item info proc
11460Summarize available information about the process.
6cf7e474 11461
8e04817f
AC
11462@kindex info proc mappings
11463@item info proc mappings
11464Report on the address ranges accessible in the program, with information
11465on whether your program may read, write, or execute each range.
11466@ignore
11467@comment These sub-options of 'info proc' were not included when
11468@comment procfs.c was re-written. Keep their descriptions around
11469@comment against the day when someone finds the time to put them back in.
11470@kindex info proc times
11471@item info proc times
11472Starting time, user CPU time, and system CPU time for your program and
11473its children.
6cf7e474 11474
8e04817f
AC
11475@kindex info proc id
11476@item info proc id
11477Report on the process IDs related to your program: its own process ID,
11478the ID of its parent, the process group ID, and the session ID.
104c1213 11479
8e04817f
AC
11480@kindex info proc status
11481@item info proc status
11482General information on the state of the process. If the process is
11483stopped, this report includes the reason for stopping, and any signal
11484received.
d4f3574e 11485
8e04817f
AC
11486@item info proc all
11487Show all the above information about the process.
11488@end ignore
11489@end table
104c1213 11490
8e04817f
AC
11491@node DJGPP Native
11492@subsection Features for Debugging @sc{djgpp} Programs
11493@cindex @sc{djgpp} debugging
11494@cindex native @sc{djgpp} debugging
11495@cindex MS-DOS-specific commands
104c1213 11496
8e04817f
AC
11497@sc{djgpp} is the port of @sc{gnu} development tools to MS-DOS and
11498MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
11499that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
11500top of real-mode DOS systems and their emulations.
104c1213 11501
8e04817f
AC
11502@value{GDBN} supports native debugging of @sc{djgpp} programs, and
11503defines a few commands specific to the @sc{djgpp} port. This
11504subsection describes those commands.
104c1213 11505
8e04817f
AC
11506@table @code
11507@kindex info dos
11508@item info dos
11509This is a prefix of @sc{djgpp}-specific commands which print
11510information about the target system and important OS structures.
f1251bdd 11511
8e04817f
AC
11512@kindex sysinfo
11513@cindex MS-DOS system info
11514@cindex free memory information (MS-DOS)
11515@item info dos sysinfo
11516This command displays assorted information about the underlying
11517platform: the CPU type and features, the OS version and flavor, the
11518DPMI version, and the available conventional and DPMI memory.
104c1213 11519
8e04817f
AC
11520@cindex GDT
11521@cindex LDT
11522@cindex IDT
11523@cindex segment descriptor tables
11524@cindex descriptor tables display
11525@item info dos gdt
11526@itemx info dos ldt
11527@itemx info dos idt
11528These 3 commands display entries from, respectively, Global, Local,
11529and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
11530tables are data structures which store a descriptor for each segment
11531that is currently in use. The segment's selector is an index into a
11532descriptor table; the table entry for that index holds the
11533descriptor's base address and limit, and its attributes and access
11534rights.
104c1213 11535
8e04817f
AC
11536A typical @sc{djgpp} program uses 3 segments: a code segment, a data
11537segment (used for both data and the stack), and a DOS segment (which
11538allows access to DOS/BIOS data structures and absolute addresses in
11539conventional memory). However, the DPMI host will usually define
11540additional segments in order to support the DPMI environment.
d4f3574e 11541
8e04817f
AC
11542@cindex garbled pointers
11543These commands allow to display entries from the descriptor tables.
11544Without an argument, all entries from the specified table are
11545displayed. An argument, which should be an integer expression, means
11546display a single entry whose index is given by the argument. For
11547example, here's a convenient way to display information about the
11548debugged program's data segment:
104c1213 11549
8e04817f
AC
11550@smallexample
11551@exdent @code{(@value{GDBP}) info dos ldt $ds}
11552@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
11553@end smallexample
104c1213 11554
8e04817f
AC
11555@noindent
11556This comes in handy when you want to see whether a pointer is outside
11557the data segment's limit (i.e.@: @dfn{garbled}).
104c1213 11558
8e04817f
AC
11559@cindex page tables display (MS-DOS)
11560@item info dos pde
11561@itemx info dos pte
11562These two commands display entries from, respectively, the Page
11563Directory and the Page Tables. Page Directories and Page Tables are
11564data structures which control how virtual memory addresses are mapped
11565into physical addresses. A Page Table includes an entry for every
11566page of memory that is mapped into the program's address space; there
11567may be several Page Tables, each one holding up to 4096 entries. A
11568Page Directory has up to 4096 entries, one each for every Page Table
11569that is currently in use.
104c1213 11570
8e04817f
AC
11571Without an argument, @kbd{info dos pde} displays the entire Page
11572Directory, and @kbd{info dos pte} displays all the entries in all of
11573the Page Tables. An argument, an integer expression, given to the
11574@kbd{info dos pde} command means display only that entry from the Page
11575Directory table. An argument given to the @kbd{info dos pte} command
11576means display entries from a single Page Table, the one pointed to by
11577the specified entry in the Page Directory.
104c1213 11578
8e04817f
AC
11579@cindex direct memory access (DMA) on MS-DOS
11580These commands are useful when your program uses @dfn{DMA} (Direct
11581Memory Access), which needs physical addresses to program the DMA
11582controller.
104c1213 11583
8e04817f 11584These commands are supported only with some DPMI servers.
104c1213 11585
8e04817f
AC
11586@cindex physical address from linear address
11587@item info dos address-pte @var{addr}
11588This command displays the Page Table entry for a specified linear
11589address. The argument linear address @var{addr} should already have the
11590appropriate segment's base address added to it, because this command
11591accepts addresses which may belong to @emph{any} segment. For
11592example, here's how to display the Page Table entry for the page where
11593the variable @code{i} is stored:
104c1213 11594
b383017d 11595@smallexample
8e04817f
AC
11596@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
11597@exdent @code{Page Table entry for address 0x11a00d30:}
b383017d 11598@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
8e04817f 11599@end smallexample
104c1213 11600
8e04817f
AC
11601@noindent
11602This says that @code{i} is stored at offset @code{0xd30} from the page
11603whose physical base address is @code{0x02698000}, and prints all the
11604attributes of that page.
104c1213 11605
8e04817f
AC
11606Note that you must cast the addresses of variables to a @code{char *},
11607since otherwise the value of @code{__djgpp_base_address}, the base
11608address of all variables and functions in a @sc{djgpp} program, will
11609be added using the rules of C pointer arithmetics: if @code{i} is
11610declared an @code{int}, @value{GDBN} will add 4 times the value of
11611@code{__djgpp_base_address} to the address of @code{i}.
104c1213 11612
8e04817f
AC
11613Here's another example, it displays the Page Table entry for the
11614transfer buffer:
104c1213 11615
8e04817f
AC
11616@smallexample
11617@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
11618@exdent @code{Page Table entry for address 0x29110:}
11619@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
11620@end smallexample
104c1213 11621
8e04817f
AC
11622@noindent
11623(The @code{+ 3} offset is because the transfer buffer's address is the
116243rd member of the @code{_go32_info_block} structure.) The output of
11625this command clearly shows that addresses in conventional memory are
11626mapped 1:1, i.e.@: the physical and linear addresses are identical.
104c1213 11627
8e04817f
AC
11628This command is supported only with some DPMI servers.
11629@end table
104c1213 11630
78c47bea
PM
11631@node Cygwin Native
11632@subsection Features for Debugging MS Windows PE executables
11633@cindex MS Windows debugging
11634@cindex native Cygwin debugging
11635@cindex Cygwin-specific commands
11636
be448670
CF
11637@value{GDBN} supports native debugging of MS Windows programs, including
11638DLLs with and without symbolic debugging information. There are various
11639additional Cygwin-specific commands, described in this subsection. The
11640subsubsection @pxref{Non-debug DLL symbols} describes working with DLLs
11641that have no debugging symbols.
11642
78c47bea
PM
11643
11644@table @code
11645@kindex info w32
11646@item info w32
11647This is a prefix of MS Windows specific commands which print
11648information about the target system and important OS structures.
11649
11650@item info w32 selector
11651This command displays information returned by
11652the Win32 API @code{GetThreadSelectorEntry} function.
11653It takes an optional argument that is evaluated to
11654a long value to give the information about this given selector.
11655Without argument, this command displays information
11656about the the six segment registers.
11657
11658@kindex info dll
11659@item info dll
11660This is a Cygwin specific alias of info shared.
11661
11662@kindex dll-symbols
11663@item dll-symbols
11664This command loads symbols from a dll similarly to
11665add-sym command but without the need to specify a base address.
11666
b383017d 11667@kindex set new-console
78c47bea 11668@item set new-console @var{mode}
b383017d 11669If @var{mode} is @code{on} the debuggee will
78c47bea
PM
11670be started in a new console on next start.
11671If @var{mode} is @code{off}i, the debuggee will
11672be started in the same console as the debugger.
11673
11674@kindex show new-console
11675@item show new-console
11676Displays whether a new console is used
11677when the debuggee is started.
11678
11679@kindex set new-group
11680@item set new-group @var{mode}
11681This boolean value controls whether the debuggee should
11682start a new group or stay in the same group as the debugger.
11683This affects the way the Windows OS handles
11684Ctrl-C.
11685
11686@kindex show new-group
11687@item show new-group
11688Displays current value of new-group boolean.
11689
11690@kindex set debugevents
11691@item set debugevents
11692This boolean value adds debug output concerning events seen by the debugger.
11693
11694@kindex set debugexec
11695@item set debugexec
b383017d 11696This boolean value adds debug output concerning execute events
78c47bea
PM
11697seen by the debugger.
11698
11699@kindex set debugexceptions
11700@item set debugexceptions
b383017d 11701This boolean value adds debug ouptut concerning exception events
78c47bea
PM
11702seen by the debugger.
11703
11704@kindex set debugmemory
11705@item set debugmemory
b383017d 11706This boolean value adds debug ouptut concerning memory events
78c47bea
PM
11707seen by the debugger.
11708
11709@kindex set shell
11710@item set shell
11711This boolean values specifies whether the debuggee is called
11712via a shell or directly (default value is on).
11713
11714@kindex show shell
11715@item show shell
11716Displays if the debuggee will be started with a shell.
11717
11718@end table
11719
be448670
CF
11720@menu
11721* Non-debug DLL symbols:: Support for DLLs without debugging symbols
11722@end menu
11723
11724@node Non-debug DLL symbols
11725@subsubsection Support for DLLs without debugging symbols
11726@cindex DLLs with no debugging symbols
11727@cindex Minimal symbols and DLLs
11728
11729Very often on windows, some of the DLLs that your program relies on do
11730not include symbolic debugging information (for example,
11731@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
11732symbols in a DLL, it relies on the minimal amount of symbolic
11733information contained in the DLL's export table. This subsubsection
11734describes working with such symbols, known internally to @value{GDBN} as
11735``minimal symbols''.
11736
11737Note that before the debugged program has started execution, no DLLs
11738will have been loaded. The easiest way around this problem is simply to
11739start the program --- either by setting a breakpoint or letting the
11740program run once to completion. It is also possible to force
11741@value{GDBN} to load a particular DLL before starting the executable ---
11742see the shared library information in @pxref{Files} or the
11743@code{dll-symbols} command in @pxref{Cygwin Native}. Currently,
11744explicitly loading symbols from a DLL with no debugging information will
11745cause the symbol names to be duplicated in @value{GDBN}'s lookup table,
11746which may adversely affect symbol lookup performance.
11747
11748@subsubsection DLL name prefixes
11749
11750In keeping with the naming conventions used by the Microsoft debugging
11751tools, DLL export symbols are made available with a prefix based on the
11752DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
11753also entered into the symbol table, so @code{CreateFileA} is often
11754sufficient. In some cases there will be name clashes within a program
11755(particularly if the executable itself includes full debugging symbols)
11756necessitating the use of the fully qualified name when referring to the
11757contents of the DLL. Use single-quotes around the name to avoid the
11758exclamation mark (``!'') being interpreted as a language operator.
11759
11760Note that the internal name of the DLL may be all upper-case, even
11761though the file name of the DLL is lower-case, or vice-versa. Since
11762symbols within @value{GDBN} are @emph{case-sensitive} this may cause
11763some confusion. If in doubt, try the @code{info functions} and
11764@code{info variables} commands or even @code{maint print msymbols} (see
11765@pxref{Symbols}). Here's an example:
11766
11767@smallexample
f7dc1244 11768(@value{GDBP}) info function CreateFileA
be448670
CF
11769All functions matching regular expression "CreateFileA":
11770
11771Non-debugging symbols:
117720x77e885f4 CreateFileA
117730x77e885f4 KERNEL32!CreateFileA
11774@end smallexample
11775
11776@smallexample
f7dc1244 11777(@value{GDBP}) info function !
be448670
CF
11778All functions matching regular expression "!":
11779
11780Non-debugging symbols:
117810x6100114c cygwin1!__assert
117820x61004034 cygwin1!_dll_crt0@@0
117830x61004240 cygwin1!dll_crt0(per_process *)
11784[etc...]
11785@end smallexample
11786
11787@subsubsection Working with minimal symbols
11788
11789Symbols extracted from a DLL's export table do not contain very much
11790type information. All that @value{GDBN} can do is guess whether a symbol
11791refers to a function or variable depending on the linker section that
11792contains the symbol. Also note that the actual contents of the memory
11793contained in a DLL are not available unless the program is running. This
11794means that you cannot examine the contents of a variable or disassemble
11795a function within a DLL without a running program.
11796
11797Variables are generally treated as pointers and dereferenced
11798automatically. For this reason, it is often necessary to prefix a
11799variable name with the address-of operator (``&'') and provide explicit
11800type information in the command. Here's an example of the type of
11801problem:
11802
11803@smallexample
f7dc1244 11804(@value{GDBP}) print 'cygwin1!__argv'
be448670
CF
11805$1 = 268572168
11806@end smallexample
11807
11808@smallexample
f7dc1244 11809(@value{GDBP}) x 'cygwin1!__argv'
be448670
CF
118100x10021610: "\230y\""
11811@end smallexample
11812
11813And two possible solutions:
11814
11815@smallexample
f7dc1244 11816(@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
be448670
CF
11817$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
11818@end smallexample
11819
11820@smallexample
f7dc1244 11821(@value{GDBP}) x/2x &'cygwin1!__argv'
be448670 118220x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
f7dc1244 11823(@value{GDBP}) x/x 0x10021608
be448670 118240x10021608: 0x0022fd98
f7dc1244 11825(@value{GDBP}) x/s 0x0022fd98
be448670
CF
118260x22fd98: "/cygdrive/c/mydirectory/myprogram"
11827@end smallexample
11828
11829Setting a break point within a DLL is possible even before the program
11830starts execution. However, under these circumstances, @value{GDBN} can't
11831examine the initial instructions of the function in order to skip the
11832function's frame set-up code. You can work around this by using ``*&''
11833to set the breakpoint at a raw memory address:
11834
11835@smallexample
f7dc1244 11836(@value{GDBP}) break *&'python22!PyOS_Readline'
be448670
CF
11837Breakpoint 1 at 0x1e04eff0
11838@end smallexample
11839
11840The author of these extensions is not entirely convinced that setting a
11841break point within a shared DLL like @file{kernel32.dll} is completely
11842safe.
11843
8e04817f
AC
11844@node Embedded OS
11845@section Embedded Operating Systems
104c1213 11846
8e04817f
AC
11847This section describes configurations involving the debugging of
11848embedded operating systems that are available for several different
11849architectures.
d4f3574e 11850
8e04817f
AC
11851@menu
11852* VxWorks:: Using @value{GDBN} with VxWorks
11853@end menu
104c1213 11854
8e04817f
AC
11855@value{GDBN} includes the ability to debug programs running on
11856various real-time operating systems.
104c1213 11857
8e04817f
AC
11858@node VxWorks
11859@subsection Using @value{GDBN} with VxWorks
104c1213 11860
8e04817f 11861@cindex VxWorks
104c1213 11862
8e04817f 11863@table @code
104c1213 11864
8e04817f
AC
11865@kindex target vxworks
11866@item target vxworks @var{machinename}
11867A VxWorks system, attached via TCP/IP. The argument @var{machinename}
11868is the target system's machine name or IP address.
104c1213 11869
8e04817f 11870@end table
104c1213 11871
8e04817f
AC
11872On VxWorks, @code{load} links @var{filename} dynamically on the
11873current target system as well as adding its symbols in @value{GDBN}.
104c1213 11874
8e04817f
AC
11875@value{GDBN} enables developers to spawn and debug tasks running on networked
11876VxWorks targets from a Unix host. Already-running tasks spawned from
11877the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
11878both the Unix host and on the VxWorks target. The program
11879@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
11880installed with the name @code{vxgdb}, to distinguish it from a
11881@value{GDBN} for debugging programs on the host itself.)
104c1213 11882
8e04817f
AC
11883@table @code
11884@item VxWorks-timeout @var{args}
11885@kindex vxworks-timeout
11886All VxWorks-based targets now support the option @code{vxworks-timeout}.
11887This option is set by the user, and @var{args} represents the number of
11888seconds @value{GDBN} waits for responses to rpc's. You might use this if
11889your VxWorks target is a slow software simulator or is on the far side
11890of a thin network line.
11891@end table
104c1213 11892
8e04817f
AC
11893The following information on connecting to VxWorks was current when
11894this manual was produced; newer releases of VxWorks may use revised
11895procedures.
104c1213 11896
4644b6e3 11897@findex INCLUDE_RDB
8e04817f
AC
11898To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
11899to include the remote debugging interface routines in the VxWorks
11900library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
11901VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
11902kernel. The resulting kernel contains @file{rdb.a}, and spawns the
11903source debugging task @code{tRdbTask} when VxWorks is booted. For more
11904information on configuring and remaking VxWorks, see the manufacturer's
11905manual.
11906@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
104c1213 11907
8e04817f
AC
11908Once you have included @file{rdb.a} in your VxWorks system image and set
11909your Unix execution search path to find @value{GDBN}, you are ready to
11910run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
11911@code{vxgdb}, depending on your installation).
104c1213 11912
8e04817f 11913@value{GDBN} comes up showing the prompt:
104c1213 11914
474c8240 11915@smallexample
8e04817f 11916(vxgdb)
474c8240 11917@end smallexample
104c1213 11918
8e04817f
AC
11919@menu
11920* VxWorks Connection:: Connecting to VxWorks
11921* VxWorks Download:: VxWorks download
11922* VxWorks Attach:: Running tasks
11923@end menu
104c1213 11924
8e04817f
AC
11925@node VxWorks Connection
11926@subsubsection Connecting to VxWorks
104c1213 11927
8e04817f
AC
11928The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
11929network. To connect to a target whose host name is ``@code{tt}'', type:
104c1213 11930
474c8240 11931@smallexample
8e04817f 11932(vxgdb) target vxworks tt
474c8240 11933@end smallexample
104c1213 11934
8e04817f
AC
11935@need 750
11936@value{GDBN} displays messages like these:
104c1213 11937
8e04817f
AC
11938@smallexample
11939Attaching remote machine across net...
11940Connected to tt.
11941@end smallexample
104c1213 11942
8e04817f
AC
11943@need 1000
11944@value{GDBN} then attempts to read the symbol tables of any object modules
11945loaded into the VxWorks target since it was last booted. @value{GDBN} locates
11946these files by searching the directories listed in the command search
11947path (@pxref{Environment, ,Your program's environment}); if it fails
11948to find an object file, it displays a message such as:
5d161b24 11949
474c8240 11950@smallexample
8e04817f 11951prog.o: No such file or directory.
474c8240 11952@end smallexample
104c1213 11953
8e04817f
AC
11954When this happens, add the appropriate directory to the search path with
11955the @value{GDBN} command @code{path}, and execute the @code{target}
11956command again.
104c1213 11957
8e04817f
AC
11958@node VxWorks Download
11959@subsubsection VxWorks download
104c1213 11960
8e04817f
AC
11961@cindex download to VxWorks
11962If you have connected to the VxWorks target and you want to debug an
11963object that has not yet been loaded, you can use the @value{GDBN}
11964@code{load} command to download a file from Unix to VxWorks
11965incrementally. The object file given as an argument to the @code{load}
11966command is actually opened twice: first by the VxWorks target in order
11967to download the code, then by @value{GDBN} in order to read the symbol
11968table. This can lead to problems if the current working directories on
11969the two systems differ. If both systems have NFS mounted the same
11970filesystems, you can avoid these problems by using absolute paths.
11971Otherwise, it is simplest to set the working directory on both systems
11972to the directory in which the object file resides, and then to reference
11973the file by its name, without any path. For instance, a program
11974@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
11975and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
11976program, type this on VxWorks:
104c1213 11977
474c8240 11978@smallexample
8e04817f 11979-> cd "@var{vxpath}/vw/demo/rdb"
474c8240 11980@end smallexample
104c1213 11981
8e04817f
AC
11982@noindent
11983Then, in @value{GDBN}, type:
104c1213 11984
474c8240 11985@smallexample
8e04817f
AC
11986(vxgdb) cd @var{hostpath}/vw/demo/rdb
11987(vxgdb) load prog.o
474c8240 11988@end smallexample
104c1213 11989
8e04817f 11990@value{GDBN} displays a response similar to this:
104c1213 11991
8e04817f
AC
11992@smallexample
11993Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
11994@end smallexample
104c1213 11995
8e04817f
AC
11996You can also use the @code{load} command to reload an object module
11997after editing and recompiling the corresponding source file. Note that
11998this makes @value{GDBN} delete all currently-defined breakpoints,
11999auto-displays, and convenience variables, and to clear the value
12000history. (This is necessary in order to preserve the integrity of
12001debugger's data structures that reference the target system's symbol
12002table.)
104c1213 12003
8e04817f
AC
12004@node VxWorks Attach
12005@subsubsection Running tasks
104c1213
JM
12006
12007@cindex running VxWorks tasks
12008You can also attach to an existing task using the @code{attach} command as
12009follows:
12010
474c8240 12011@smallexample
104c1213 12012(vxgdb) attach @var{task}
474c8240 12013@end smallexample
104c1213
JM
12014
12015@noindent
12016where @var{task} is the VxWorks hexadecimal task ID. The task can be running
12017or suspended when you attach to it. Running tasks are suspended at
12018the time of attachment.
12019
6d2ebf8b 12020@node Embedded Processors
104c1213
JM
12021@section Embedded Processors
12022
12023This section goes into details specific to particular embedded
12024configurations.
12025
7d86b5d5 12026
104c1213 12027@menu
104c1213 12028* ARM:: ARM
172c2a43
KI
12029* H8/300:: Renesas H8/300
12030* H8/500:: Renesas H8/500
12031* M32R/D:: Renesas M32R/D
104c1213 12032* M68K:: Motorola M68K
104c1213 12033* MIPS Embedded:: MIPS Embedded
a37295f9 12034* OpenRISC 1000:: OpenRisc 1000
104c1213
JM
12035* PA:: HP PA Embedded
12036* PowerPC: PowerPC
172c2a43 12037* SH:: Renesas SH
104c1213
JM
12038* Sparclet:: Tsqware Sparclet
12039* Sparclite:: Fujitsu Sparclite
12040* ST2000:: Tandem ST2000
12041* Z8000:: Zilog Z8000
12042@end menu
12043
6d2ebf8b 12044@node ARM
104c1213
JM
12045@subsection ARM
12046
12047@table @code
12048
8e04817f
AC
12049@kindex target rdi
12050@item target rdi @var{dev}
12051ARM Angel monitor, via RDI library interface to ADP protocol. You may
12052use this target to communicate with both boards running the Angel
12053monitor, or with the EmbeddedICE JTAG debug device.
12054
12055@kindex target rdp
12056@item target rdp @var{dev}
12057ARM Demon monitor.
12058
12059@end table
12060
12061@node H8/300
172c2a43 12062@subsection Renesas H8/300
8e04817f
AC
12063
12064@table @code
12065
12066@kindex target hms@r{, with H8/300}
12067@item target hms @var{dev}
172c2a43 12068A Renesas SH, H8/300, or H8/500 board, attached via serial line to your host.
8e04817f
AC
12069Use special commands @code{device} and @code{speed} to control the serial
12070line and the communications speed used.
12071
12072@kindex target e7000@r{, with H8/300}
12073@item target e7000 @var{dev}
172c2a43 12074E7000 emulator for Renesas H8 and SH.
8e04817f
AC
12075
12076@kindex target sh3@r{, with H8/300}
12077@kindex target sh3e@r{, with H8/300}
12078@item target sh3 @var{dev}
12079@itemx target sh3e @var{dev}
172c2a43 12080Renesas SH-3 and SH-3E target systems.
8e04817f
AC
12081
12082@end table
12083
12084@cindex download to H8/300 or H8/500
12085@cindex H8/300 or H8/500 download
172c2a43
KI
12086@cindex download to Renesas SH
12087@cindex Renesas SH download
12088When you select remote debugging to a Renesas SH, H8/300, or H8/500
12089board, the @code{load} command downloads your program to the Renesas
8e04817f
AC
12090board and also opens it as the current executable target for
12091@value{GDBN} on your host (like the @code{file} command).
12092
12093@value{GDBN} needs to know these things to talk to your
172c2a43 12094Renesas SH, H8/300, or H8/500:
8e04817f
AC
12095
12096@enumerate
12097@item
12098that you want to use @samp{target hms}, the remote debugging interface
172c2a43
KI
12099for Renesas microprocessors, or @samp{target e7000}, the in-circuit
12100emulator for the Renesas SH and the Renesas 300H. (@samp{target hms} is
12101the default when @value{GDBN} is configured specifically for the Renesas SH,
8e04817f
AC
12102H8/300, or H8/500.)
12103
12104@item
172c2a43 12105what serial device connects your host to your Renesas board (the first
8e04817f
AC
12106serial device available on your host is the default).
12107
12108@item
12109what speed to use over the serial device.
12110@end enumerate
12111
12112@menu
172c2a43
KI
12113* Renesas Boards:: Connecting to Renesas boards.
12114* Renesas ICE:: Using the E7000 In-Circuit Emulator.
12115* Renesas Special:: Special @value{GDBN} commands for Renesas micros.
8e04817f
AC
12116@end menu
12117
172c2a43
KI
12118@node Renesas Boards
12119@subsubsection Connecting to Renesas boards
8e04817f
AC
12120
12121@c only for Unix hosts
12122@kindex device
172c2a43 12123@cindex serial device, Renesas micros
8e04817f
AC
12124Use the special @code{@value{GDBN}} command @samp{device @var{port}} if you
12125need to explicitly set the serial device. The default @var{port} is the
12126first available port on your host. This is only necessary on Unix
12127hosts, where it is typically something like @file{/dev/ttya}.
12128
12129@kindex speed
172c2a43 12130@cindex serial line speed, Renesas micros
8e04817f
AC
12131@code{@value{GDBN}} has another special command to set the communications
12132speed: @samp{speed @var{bps}}. This command also is only used from Unix
12133hosts; on DOS hosts, set the line speed as usual from outside @value{GDBN} with
12134the DOS @code{mode} command (for instance,
12135@w{@kbd{mode com2:9600,n,8,1,p}} for a 9600@dmn{bps} connection).
12136
12137The @samp{device} and @samp{speed} commands are available only when you
172c2a43 12138use a Unix host to debug your Renesas microprocessor programs. If you
8e04817f
AC
12139use a DOS host,
12140@value{GDBN} depends on an auxiliary terminate-and-stay-resident program
12141called @code{asynctsr} to communicate with the development board
12142through a PC serial port. You must also use the DOS @code{mode} command
12143to set up the serial port on the DOS side.
12144
12145The following sample session illustrates the steps needed to start a
12146program under @value{GDBN} control on an H8/300. The example uses a
12147sample H8/300 program called @file{t.x}. The procedure is the same for
172c2a43 12148the Renesas SH and the H8/500.
8e04817f
AC
12149
12150First hook up your development board. In this example, we use a
12151board attached to serial port @code{COM2}; if you use a different serial
12152port, substitute its name in the argument of the @code{mode} command.
12153When you call @code{asynctsr}, the auxiliary comms program used by the
12154debugger, you give it just the numeric part of the serial port's name;
12155for example, @samp{asyncstr 2} below runs @code{asyncstr} on
12156@code{COM2}.
12157
474c8240 12158@smallexample
8e04817f
AC
12159C:\H8300\TEST> asynctsr 2
12160C:\H8300\TEST> mode com2:9600,n,8,1,p
12161
12162Resident portion of MODE loaded
12163
12164COM2: 9600, n, 8, 1, p
12165
474c8240 12166@end smallexample
8e04817f
AC
12167
12168@quotation
12169@emph{Warning:} We have noticed a bug in PC-NFS that conflicts with
12170@code{asynctsr}. If you also run PC-NFS on your DOS host, you may need to
12171disable it, or even boot without it, to use @code{asynctsr} to control
12172your development board.
12173@end quotation
12174
12175@kindex target hms@r{, and serial protocol}
12176Now that serial communications are set up, and the development board is
12177connected, you can start up @value{GDBN}. Call @code{@value{GDBP}} with
12178the name of your program as the argument. @code{@value{GDBN}} prompts
12179you, as usual, with the prompt @samp{(@value{GDBP})}. Use two special
12180commands to begin your debugging session: @samp{target hms} to specify
172c2a43 12181cross-debugging to the Renesas board, and the @code{load} command to
8e04817f
AC
12182download your program to the board. @code{load} displays the names of
12183the program's sections, and a @samp{*} for each 2K of data downloaded.
12184(If you want to refresh @value{GDBN} data on symbols or on the
12185executable file without downloading, use the @value{GDBN} commands
12186@code{file} or @code{symbol-file}. These commands, and @code{load}
12187itself, are described in @ref{Files,,Commands to specify files}.)
12188
12189@smallexample
12190(eg-C:\H8300\TEST) @value{GDBP} t.x
12191@value{GDBN} is free software and you are welcome to distribute copies
12192 of it under certain conditions; type "show copying" to see
12193 the conditions.
12194There is absolutely no warranty for @value{GDBN}; type "show warranty"
12195for details.
12196@value{GDBN} @value{GDBVN}, Copyright 1992 Free Software Foundation, Inc...
12197(@value{GDBP}) target hms
12198Connected to remote H8/300 HMS system.
12199(@value{GDBP}) load t.x
12200.text : 0x8000 .. 0xabde ***********
12201.data : 0xabde .. 0xad30 *
12202.stack : 0xf000 .. 0xf014 *
12203@end smallexample
12204
12205At this point, you're ready to run or debug your program. From here on,
12206you can use all the usual @value{GDBN} commands. The @code{break} command
12207sets breakpoints; the @code{run} command starts your program;
12208@code{print} or @code{x} display data; the @code{continue} command
12209resumes execution after stopping at a breakpoint. You can use the
12210@code{help} command at any time to find out more about @value{GDBN} commands.
12211
12212Remember, however, that @emph{operating system} facilities aren't
12213available on your development board; for example, if your program hangs,
12214you can't send an interrupt---but you can press the @sc{reset} switch!
12215
12216Use the @sc{reset} button on the development board
12217@itemize @bullet
12218@item
12219to interrupt your program (don't use @kbd{ctl-C} on the DOS host---it has
12220no way to pass an interrupt signal to the development board); and
12221
12222@item
12223to return to the @value{GDBN} command prompt after your program finishes
12224normally. The communications protocol provides no other way for @value{GDBN}
12225to detect program completion.
12226@end itemize
12227
12228In either case, @value{GDBN} sees the effect of a @sc{reset} on the
12229development board as a ``normal exit'' of your program.
12230
172c2a43 12231@node Renesas ICE
8e04817f
AC
12232@subsubsection Using the E7000 in-circuit emulator
12233
172c2a43 12234@kindex target e7000@r{, with Renesas ICE}
8e04817f 12235You can use the E7000 in-circuit emulator to develop code for either the
172c2a43 12236Renesas SH or the H8/300H. Use one of these forms of the @samp{target
8e04817f
AC
12237e7000} command to connect @value{GDBN} to your E7000:
12238
12239@table @code
12240@item target e7000 @var{port} @var{speed}
12241Use this form if your E7000 is connected to a serial port. The
12242@var{port} argument identifies what serial port to use (for example,
12243@samp{com2}). The third argument is the line speed in bits per second
12244(for example, @samp{9600}).
12245
12246@item target e7000 @var{hostname}
12247If your E7000 is installed as a host on a TCP/IP network, you can just
12248specify its hostname; @value{GDBN} uses @code{telnet} to connect.
12249@end table
12250
172c2a43
KI
12251@node Renesas Special
12252@subsubsection Special @value{GDBN} commands for Renesas micros
8e04817f
AC
12253
12254Some @value{GDBN} commands are available only for the H8/300:
12255
12256@table @code
12257
12258@kindex set machine
12259@kindex show machine
12260@item set machine h8300
12261@itemx set machine h8300h
12262Condition @value{GDBN} for one of the two variants of the H8/300
12263architecture with @samp{set machine}. You can use @samp{show machine}
12264to check which variant is currently in effect.
104c1213
JM
12265
12266@end table
12267
8e04817f
AC
12268@node H8/500
12269@subsection H8/500
104c1213
JM
12270
12271@table @code
12272
8e04817f
AC
12273@kindex set memory @var{mod}
12274@cindex memory models, H8/500
12275@item set memory @var{mod}
12276@itemx show memory
12277Specify which H8/500 memory model (@var{mod}) you are using with
12278@samp{set memory}; check which memory model is in effect with @samp{show
12279memory}. The accepted values for @var{mod} are @code{small},
12280@code{big}, @code{medium}, and @code{compact}.
104c1213 12281
8e04817f 12282@end table
104c1213 12283
8e04817f 12284@node M32R/D
172c2a43 12285@subsection Renesas M32R/D
8e04817f
AC
12286
12287@table @code
12288
12289@kindex target m32r
12290@item target m32r @var{dev}
172c2a43 12291Renesas M32R/D ROM monitor.
8e04817f 12292
fb3e19c0
KI
12293@kindex target m32rsdi
12294@item target m32rsdi @var{dev}
12295Renesas M32R SDI server, connected via parallel port to the board.
12296
8e04817f
AC
12297@end table
12298
12299@node M68K
12300@subsection M68k
12301
12302The Motorola m68k configuration includes ColdFire support, and
12303target command for the following ROM monitors.
12304
12305@table @code
12306
12307@kindex target abug
12308@item target abug @var{dev}
12309ABug ROM monitor for M68K.
12310
12311@kindex target cpu32bug
12312@item target cpu32bug @var{dev}
12313CPU32BUG monitor, running on a CPU32 (M68K) board.
12314
12315@kindex target dbug
12316@item target dbug @var{dev}
12317dBUG ROM monitor for Motorola ColdFire.
12318
12319@kindex target est
12320@item target est @var{dev}
12321EST-300 ICE monitor, running on a CPU32 (M68K) board.
12322
12323@kindex target rom68k
12324@item target rom68k @var{dev}
12325ROM 68K monitor, running on an M68K IDP board.
12326
12327@end table
12328
8e04817f
AC
12329@table @code
12330
12331@kindex target rombug
12332@item target rombug @var{dev}
12333ROMBUG ROM monitor for OS/9000.
12334
12335@end table
12336
8e04817f
AC
12337@node MIPS Embedded
12338@subsection MIPS Embedded
12339
12340@cindex MIPS boards
12341@value{GDBN} can use the MIPS remote debugging protocol to talk to a
12342MIPS board attached to a serial line. This is available when
12343you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
104c1213 12344
8e04817f
AC
12345@need 1000
12346Use these @value{GDBN} commands to specify the connection to your target board:
104c1213 12347
8e04817f
AC
12348@table @code
12349@item target mips @var{port}
12350@kindex target mips @var{port}
12351To run a program on the board, start up @code{@value{GDBP}} with the
12352name of your program as the argument. To connect to the board, use the
12353command @samp{target mips @var{port}}, where @var{port} is the name of
12354the serial port connected to the board. If the program has not already
12355been downloaded to the board, you may use the @code{load} command to
12356download it. You can then use all the usual @value{GDBN} commands.
104c1213 12357
8e04817f
AC
12358For example, this sequence connects to the target board through a serial
12359port, and loads and runs a program called @var{prog} through the
12360debugger:
104c1213 12361
474c8240 12362@smallexample
8e04817f
AC
12363host$ @value{GDBP} @var{prog}
12364@value{GDBN} is free software and @dots{}
12365(@value{GDBP}) target mips /dev/ttyb
12366(@value{GDBP}) load @var{prog}
12367(@value{GDBP}) run
474c8240 12368@end smallexample
104c1213 12369
8e04817f
AC
12370@item target mips @var{hostname}:@var{portnumber}
12371On some @value{GDBN} host configurations, you can specify a TCP
12372connection (for instance, to a serial line managed by a terminal
12373concentrator) instead of a serial port, using the syntax
12374@samp{@var{hostname}:@var{portnumber}}.
104c1213 12375
8e04817f
AC
12376@item target pmon @var{port}
12377@kindex target pmon @var{port}
12378PMON ROM monitor.
104c1213 12379
8e04817f
AC
12380@item target ddb @var{port}
12381@kindex target ddb @var{port}
12382NEC's DDB variant of PMON for Vr4300.
104c1213 12383
8e04817f
AC
12384@item target lsi @var{port}
12385@kindex target lsi @var{port}
12386LSI variant of PMON.
104c1213 12387
8e04817f
AC
12388@kindex target r3900
12389@item target r3900 @var{dev}
12390Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
104c1213 12391
8e04817f
AC
12392@kindex target array
12393@item target array @var{dev}
12394Array Tech LSI33K RAID controller board.
104c1213 12395
8e04817f 12396@end table
104c1213 12397
104c1213 12398
8e04817f
AC
12399@noindent
12400@value{GDBN} also supports these special commands for MIPS targets:
104c1213 12401
8e04817f
AC
12402@table @code
12403@item set processor @var{args}
12404@itemx show processor
12405@kindex set processor @var{args}
12406@kindex show processor
12407Use the @code{set processor} command to set the type of MIPS
12408processor when you want to access processor-type-specific registers.
12409For example, @code{set processor @var{r3041}} tells @value{GDBN}
12410to use the CPU registers appropriate for the 3041 chip.
12411Use the @code{show processor} command to see what MIPS processor @value{GDBN}
12412is using. Use the @code{info reg} command to see what registers
12413@value{GDBN} is using.
104c1213 12414
8e04817f
AC
12415@item set mipsfpu double
12416@itemx set mipsfpu single
12417@itemx set mipsfpu none
12418@itemx show mipsfpu
12419@kindex set mipsfpu
12420@kindex show mipsfpu
12421@cindex MIPS remote floating point
12422@cindex floating point, MIPS remote
12423If your target board does not support the MIPS floating point
12424coprocessor, you should use the command @samp{set mipsfpu none} (if you
12425need this, you may wish to put the command in your @value{GDBN} init
12426file). This tells @value{GDBN} how to find the return value of
12427functions which return floating point values. It also allows
12428@value{GDBN} to avoid saving the floating point registers when calling
12429functions on the board. If you are using a floating point coprocessor
12430with only single precision floating point support, as on the @sc{r4650}
12431processor, use the command @samp{set mipsfpu single}. The default
12432double precision floating point coprocessor may be selected using
12433@samp{set mipsfpu double}.
104c1213 12434
8e04817f
AC
12435In previous versions the only choices were double precision or no
12436floating point, so @samp{set mipsfpu on} will select double precision
12437and @samp{set mipsfpu off} will select no floating point.
104c1213 12438
8e04817f
AC
12439As usual, you can inquire about the @code{mipsfpu} variable with
12440@samp{show mipsfpu}.
104c1213 12441
8e04817f
AC
12442@item set remotedebug @var{n}
12443@itemx show remotedebug
12444@kindex set remotedebug@r{, MIPS protocol}
12445@kindex show remotedebug@r{, MIPS protocol}
12446@cindex @code{remotedebug}, MIPS protocol
12447@cindex MIPS @code{remotedebug} protocol
12448@c FIXME! For this to be useful, you must know something about the MIPS
12449@c FIXME...protocol. Where is it described?
12450You can see some debugging information about communications with the board
12451by setting the @code{remotedebug} variable. If you set it to @code{1} using
12452@samp{set remotedebug 1}, every packet is displayed. If you set it
12453to @code{2}, every character is displayed. You can check the current value
12454at any time with the command @samp{show remotedebug}.
104c1213 12455
8e04817f
AC
12456@item set timeout @var{seconds}
12457@itemx set retransmit-timeout @var{seconds}
12458@itemx show timeout
12459@itemx show retransmit-timeout
12460@cindex @code{timeout}, MIPS protocol
12461@cindex @code{retransmit-timeout}, MIPS protocol
12462@kindex set timeout
12463@kindex show timeout
12464@kindex set retransmit-timeout
12465@kindex show retransmit-timeout
12466You can control the timeout used while waiting for a packet, in the MIPS
12467remote protocol, with the @code{set timeout @var{seconds}} command. The
12468default is 5 seconds. Similarly, you can control the timeout used while
12469waiting for an acknowledgement of a packet with the @code{set
12470retransmit-timeout @var{seconds}} command. The default is 3 seconds.
12471You can inspect both values with @code{show timeout} and @code{show
12472retransmit-timeout}. (These commands are @emph{only} available when
12473@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
104c1213 12474
8e04817f
AC
12475The timeout set by @code{set timeout} does not apply when @value{GDBN}
12476is waiting for your program to stop. In that case, @value{GDBN} waits
12477forever because it has no way of knowing how long the program is going
12478to run before stopping.
12479@end table
104c1213 12480
a37295f9
MM
12481@node OpenRISC 1000
12482@subsection OpenRISC 1000
12483@cindex OpenRISC 1000
12484
12485@cindex or1k boards
12486See OR1k Architecture document (@uref{www.opencores.org}) for more information
12487about platform and commands.
12488
12489@table @code
12490
12491@kindex target jtag
12492@item target jtag jtag://@var{host}:@var{port}
12493
12494Connects to remote JTAG server.
12495JTAG remote server can be either an or1ksim or JTAG server,
12496connected via parallel port to the board.
12497
12498Example: @code{target jtag jtag://localhost:9999}
12499
12500@kindex or1ksim
12501@item or1ksim @var{command}
12502If connected to @code{or1ksim} OpenRISC 1000 Architectural
12503Simulator, proprietary commands can be executed.
12504
12505@kindex info or1k spr
12506@item info or1k spr
12507Displays spr groups.
12508
12509@item info or1k spr @var{group}
12510@itemx info or1k spr @var{groupno}
12511Displays register names in selected group.
12512
12513@item info or1k spr @var{group} @var{register}
12514@itemx info or1k spr @var{register}
12515@itemx info or1k spr @var{groupno} @var{registerno}
12516@itemx info or1k spr @var{registerno}
12517Shows information about specified spr register.
12518
12519@kindex spr
12520@item spr @var{group} @var{register} @var{value}
12521@itemx spr @var{register @var{value}}
12522@itemx spr @var{groupno} @var{registerno @var{value}}
12523@itemx spr @var{registerno @var{value}}
12524Writes @var{value} to specified spr register.
12525@end table
12526
12527Some implementations of OpenRISC 1000 Architecture also have hardware trace.
12528It is very similar to @value{GDBN} trace, except it does not interfere with normal
12529program execution and is thus much faster. Hardware breakpoints/watchpoint
12530triggers can be set using:
12531@table @code
12532@item $LEA/$LDATA
12533Load effective address/data
12534@item $SEA/$SDATA
12535Store effective address/data
12536@item $AEA/$ADATA
12537Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
12538@item $FETCH
12539Fetch data
12540@end table
12541
12542When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
12543@code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
12544
12545@code{htrace} commands:
12546@cindex OpenRISC 1000 htrace
12547@table @code
12548@kindex hwatch
12549@item hwatch @var{conditional}
12550Set hardware watchpoint on combination of Load/Store Effecive Address(es)
12551or Data. For example:
12552
12553@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
12554
12555@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
12556
4644b6e3 12557@kindex htrace
a37295f9
MM
12558@item htrace info
12559Display information about current HW trace configuration.
12560
a37295f9
MM
12561@item htrace trigger @var{conditional}
12562Set starting criteria for HW trace.
12563
a37295f9
MM
12564@item htrace qualifier @var{conditional}
12565Set acquisition qualifier for HW trace.
12566
a37295f9
MM
12567@item htrace stop @var{conditional}
12568Set HW trace stopping criteria.
12569
f153cc92 12570@item htrace record [@var{data}]*
a37295f9
MM
12571Selects the data to be recorded, when qualifier is met and HW trace was
12572triggered.
12573
a37295f9 12574@item htrace enable
a37295f9
MM
12575@itemx htrace disable
12576Enables/disables the HW trace.
12577
f153cc92 12578@item htrace rewind [@var{filename}]
a37295f9
MM
12579Clears currently recorded trace data.
12580
12581If filename is specified, new trace file is made and any newly collected data
12582will be written there.
12583
f153cc92 12584@item htrace print [@var{start} [@var{len}]]
a37295f9
MM
12585Prints trace buffer, using current record configuration.
12586
a37295f9
MM
12587@item htrace mode continuous
12588Set continuous trace mode.
12589
a37295f9
MM
12590@item htrace mode suspend
12591Set suspend trace mode.
12592
12593@end table
12594
8e04817f
AC
12595@node PowerPC
12596@subsection PowerPC
104c1213
JM
12597
12598@table @code
104c1213 12599
8e04817f
AC
12600@kindex target dink32
12601@item target dink32 @var{dev}
12602DINK32 ROM monitor.
104c1213 12603
8e04817f
AC
12604@kindex target ppcbug
12605@item target ppcbug @var{dev}
12606@kindex target ppcbug1
12607@item target ppcbug1 @var{dev}
12608PPCBUG ROM monitor for PowerPC.
104c1213 12609
8e04817f
AC
12610@kindex target sds
12611@item target sds @var{dev}
12612SDS monitor, running on a PowerPC board (such as Motorola's ADS).
12613
12614@end table
12615
12616@node PA
12617@subsection HP PA Embedded
104c1213
JM
12618
12619@table @code
12620
8e04817f
AC
12621@kindex target op50n
12622@item target op50n @var{dev}
12623OP50N monitor, running on an OKI HPPA board.
12624
12625@kindex target w89k
12626@item target w89k @var{dev}
12627W89K monitor, running on a Winbond HPPA board.
104c1213
JM
12628
12629@end table
12630
8e04817f 12631@node SH
172c2a43 12632@subsection Renesas SH
104c1213
JM
12633
12634@table @code
12635
172c2a43 12636@kindex target hms@r{, with Renesas SH}
8e04817f 12637@item target hms @var{dev}
172c2a43 12638A Renesas SH board attached via serial line to your host. Use special
8e04817f
AC
12639commands @code{device} and @code{speed} to control the serial line and
12640the communications speed used.
104c1213 12641
172c2a43 12642@kindex target e7000@r{, with Renesas SH}
8e04817f 12643@item target e7000 @var{dev}
172c2a43 12644E7000 emulator for Renesas SH.
104c1213 12645
8e04817f
AC
12646@kindex target sh3@r{, with SH}
12647@kindex target sh3e@r{, with SH}
12648@item target sh3 @var{dev}
12649@item target sh3e @var{dev}
172c2a43 12650Renesas SH-3 and SH-3E target systems.
104c1213 12651
8e04817f 12652@end table
104c1213 12653
8e04817f
AC
12654@node Sparclet
12655@subsection Tsqware Sparclet
104c1213 12656
8e04817f
AC
12657@cindex Sparclet
12658
12659@value{GDBN} enables developers to debug tasks running on
12660Sparclet targets from a Unix host.
12661@value{GDBN} uses code that runs on
12662both the Unix host and on the Sparclet target. The program
12663@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213 12664
8e04817f
AC
12665@table @code
12666@item remotetimeout @var{args}
12667@kindex remotetimeout
12668@value{GDBN} supports the option @code{remotetimeout}.
12669This option is set by the user, and @var{args} represents the number of
12670seconds @value{GDBN} waits for responses.
104c1213
JM
12671@end table
12672
8e04817f
AC
12673@cindex compiling, on Sparclet
12674When compiling for debugging, include the options @samp{-g} to get debug
12675information and @samp{-Ttext} to relocate the program to where you wish to
12676load it on the target. You may also want to add the options @samp{-n} or
12677@samp{-N} in order to reduce the size of the sections. Example:
104c1213 12678
474c8240 12679@smallexample
8e04817f 12680sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
474c8240 12681@end smallexample
104c1213 12682
8e04817f 12683You can use @code{objdump} to verify that the addresses are what you intended:
104c1213 12684
474c8240 12685@smallexample
8e04817f 12686sparclet-aout-objdump --headers --syms prog
474c8240 12687@end smallexample
104c1213 12688
8e04817f
AC
12689@cindex running, on Sparclet
12690Once you have set
12691your Unix execution search path to find @value{GDBN}, you are ready to
12692run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
12693(or @code{sparclet-aout-gdb}, depending on your installation).
104c1213 12694
8e04817f
AC
12695@value{GDBN} comes up showing the prompt:
12696
474c8240 12697@smallexample
8e04817f 12698(gdbslet)
474c8240 12699@end smallexample
104c1213
JM
12700
12701@menu
8e04817f
AC
12702* Sparclet File:: Setting the file to debug
12703* Sparclet Connection:: Connecting to Sparclet
12704* Sparclet Download:: Sparclet download
12705* Sparclet Execution:: Running and debugging
104c1213
JM
12706@end menu
12707
8e04817f
AC
12708@node Sparclet File
12709@subsubsection Setting file to debug
104c1213 12710
8e04817f 12711The @value{GDBN} command @code{file} lets you choose with program to debug.
104c1213 12712
474c8240 12713@smallexample
8e04817f 12714(gdbslet) file prog
474c8240 12715@end smallexample
104c1213 12716
8e04817f
AC
12717@need 1000
12718@value{GDBN} then attempts to read the symbol table of @file{prog}.
12719@value{GDBN} locates
12720the file by searching the directories listed in the command search
12721path.
12722If the file was compiled with debug information (option "-g"), source
12723files will be searched as well.
12724@value{GDBN} locates
12725the source files by searching the directories listed in the directory search
12726path (@pxref{Environment, ,Your program's environment}).
12727If it fails
12728to find a file, it displays a message such as:
104c1213 12729
474c8240 12730@smallexample
8e04817f 12731prog: No such file or directory.
474c8240 12732@end smallexample
104c1213 12733
8e04817f
AC
12734When this happens, add the appropriate directories to the search paths with
12735the @value{GDBN} commands @code{path} and @code{dir}, and execute the
12736@code{target} command again.
104c1213 12737
8e04817f
AC
12738@node Sparclet Connection
12739@subsubsection Connecting to Sparclet
104c1213 12740
8e04817f
AC
12741The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
12742To connect to a target on serial port ``@code{ttya}'', type:
104c1213 12743
474c8240 12744@smallexample
8e04817f
AC
12745(gdbslet) target sparclet /dev/ttya
12746Remote target sparclet connected to /dev/ttya
12747main () at ../prog.c:3
474c8240 12748@end smallexample
104c1213 12749
8e04817f
AC
12750@need 750
12751@value{GDBN} displays messages like these:
104c1213 12752
474c8240 12753@smallexample
8e04817f 12754Connected to ttya.
474c8240 12755@end smallexample
104c1213 12756
8e04817f
AC
12757@node Sparclet Download
12758@subsubsection Sparclet download
104c1213 12759
8e04817f
AC
12760@cindex download to Sparclet
12761Once connected to the Sparclet target,
12762you can use the @value{GDBN}
12763@code{load} command to download the file from the host to the target.
12764The file name and load offset should be given as arguments to the @code{load}
12765command.
12766Since the file format is aout, the program must be loaded to the starting
12767address. You can use @code{objdump} to find out what this value is. The load
12768offset is an offset which is added to the VMA (virtual memory address)
12769of each of the file's sections.
12770For instance, if the program
12771@file{prog} was linked to text address 0x1201000, with data at 0x12010160
12772and bss at 0x12010170, in @value{GDBN}, type:
104c1213 12773
474c8240 12774@smallexample
8e04817f
AC
12775(gdbslet) load prog 0x12010000
12776Loading section .text, size 0xdb0 vma 0x12010000
474c8240 12777@end smallexample
104c1213 12778
8e04817f
AC
12779If the code is loaded at a different address then what the program was linked
12780to, you may need to use the @code{section} and @code{add-symbol-file} commands
12781to tell @value{GDBN} where to map the symbol table.
12782
12783@node Sparclet Execution
12784@subsubsection Running and debugging
12785
12786@cindex running and debugging Sparclet programs
12787You can now begin debugging the task using @value{GDBN}'s execution control
12788commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
12789manual for the list of commands.
12790
474c8240 12791@smallexample
8e04817f
AC
12792(gdbslet) b main
12793Breakpoint 1 at 0x12010000: file prog.c, line 3.
12794(gdbslet) run
12795Starting program: prog
12796Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
127973 char *symarg = 0;
12798(gdbslet) step
127994 char *execarg = "hello!";
12800(gdbslet)
474c8240 12801@end smallexample
8e04817f
AC
12802
12803@node Sparclite
12804@subsection Fujitsu Sparclite
104c1213
JM
12805
12806@table @code
12807
8e04817f
AC
12808@kindex target sparclite
12809@item target sparclite @var{dev}
12810Fujitsu sparclite boards, used only for the purpose of loading.
12811You must use an additional command to debug the program.
12812For example: target remote @var{dev} using @value{GDBN} standard
12813remote protocol.
104c1213
JM
12814
12815@end table
12816
8e04817f
AC
12817@node ST2000
12818@subsection Tandem ST2000
104c1213 12819
8e04817f
AC
12820@value{GDBN} may be used with a Tandem ST2000 phone switch, running Tandem's
12821STDBUG protocol.
104c1213 12822
8e04817f
AC
12823To connect your ST2000 to the host system, see the manufacturer's
12824manual. Once the ST2000 is physically attached, you can run:
104c1213 12825
474c8240 12826@smallexample
8e04817f 12827target st2000 @var{dev} @var{speed}
474c8240 12828@end smallexample
104c1213 12829
8e04817f
AC
12830@noindent
12831to establish it as your debugging environment. @var{dev} is normally
12832the name of a serial device, such as @file{/dev/ttya}, connected to the
12833ST2000 via a serial line. You can instead specify @var{dev} as a TCP
12834connection (for example, to a serial line attached via a terminal
12835concentrator) using the syntax @code{@var{hostname}:@var{portnumber}}.
104c1213 12836
8e04817f
AC
12837The @code{load} and @code{attach} commands are @emph{not} defined for
12838this target; you must load your program into the ST2000 as you normally
12839would for standalone operation. @value{GDBN} reads debugging information
12840(such as symbols) from a separate, debugging version of the program
12841available on your host computer.
12842@c FIXME!! This is terribly vague; what little content is here is
12843@c basically hearsay.
104c1213 12844
8e04817f
AC
12845@cindex ST2000 auxiliary commands
12846These auxiliary @value{GDBN} commands are available to help you with the ST2000
12847environment:
104c1213 12848
8e04817f
AC
12849@table @code
12850@item st2000 @var{command}
12851@kindex st2000 @var{cmd}
12852@cindex STDBUG commands (ST2000)
12853@cindex commands to STDBUG (ST2000)
12854Send a @var{command} to the STDBUG monitor. See the manufacturer's
12855manual for available commands.
104c1213 12856
8e04817f
AC
12857@item connect
12858@cindex connect (to STDBUG)
12859Connect the controlling terminal to the STDBUG command monitor. When
12860you are done interacting with STDBUG, typing either of two character
12861sequences gets you back to the @value{GDBN} command prompt:
12862@kbd{@key{RET}~.} (Return, followed by tilde and period) or
12863@kbd{@key{RET}~@key{C-d}} (Return, followed by tilde and control-D).
104c1213
JM
12864@end table
12865
8e04817f
AC
12866@node Z8000
12867@subsection Zilog Z8000
104c1213 12868
8e04817f
AC
12869@cindex Z8000
12870@cindex simulator, Z8000
12871@cindex Zilog Z8000 simulator
104c1213 12872
8e04817f
AC
12873When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
12874a Z8000 simulator.
12875
12876For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
12877unsegmented variant of the Z8000 architecture) or the Z8001 (the
12878segmented variant). The simulator recognizes which architecture is
12879appropriate by inspecting the object code.
104c1213 12880
8e04817f
AC
12881@table @code
12882@item target sim @var{args}
12883@kindex sim
12884@kindex target sim@r{, with Z8000}
12885Debug programs on a simulated CPU. If the simulator supports setup
12886options, specify them via @var{args}.
104c1213
JM
12887@end table
12888
8e04817f
AC
12889@noindent
12890After specifying this target, you can debug programs for the simulated
12891CPU in the same style as programs for your host computer; use the
12892@code{file} command to load a new program image, the @code{run} command
12893to run your program, and so on.
12894
12895As well as making available all the usual machine registers
12896(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
12897additional items of information as specially named registers:
104c1213
JM
12898
12899@table @code
12900
8e04817f
AC
12901@item cycles
12902Counts clock-ticks in the simulator.
104c1213 12903
8e04817f
AC
12904@item insts
12905Counts instructions run in the simulator.
104c1213 12906
8e04817f
AC
12907@item time
12908Execution time in 60ths of a second.
104c1213 12909
8e04817f 12910@end table
104c1213 12911
8e04817f
AC
12912You can refer to these values in @value{GDBN} expressions with the usual
12913conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
12914conditional breakpoint that suspends only after at least 5000
12915simulated clock ticks.
104c1213 12916
8e04817f
AC
12917@node Architectures
12918@section Architectures
104c1213 12919
8e04817f
AC
12920This section describes characteristics of architectures that affect
12921all uses of @value{GDBN} with the architecture, both native and cross.
104c1213 12922
8e04817f
AC
12923@menu
12924* A29K::
12925* Alpha::
12926* MIPS::
12927@end menu
104c1213 12928
8e04817f
AC
12929@node A29K
12930@subsection A29K
104c1213
JM
12931
12932@table @code
104c1213 12933
8e04817f
AC
12934@kindex set rstack_high_address
12935@cindex AMD 29K register stack
12936@cindex register stack, AMD29K
12937@item set rstack_high_address @var{address}
12938On AMD 29000 family processors, registers are saved in a separate
12939@dfn{register stack}. There is no way for @value{GDBN} to determine the
12940extent of this stack. Normally, @value{GDBN} just assumes that the
12941stack is ``large enough''. This may result in @value{GDBN} referencing
12942memory locations that do not exist. If necessary, you can get around
12943this problem by specifying the ending address of the register stack with
12944the @code{set rstack_high_address} command. The argument should be an
12945address, which you probably want to precede with @samp{0x} to specify in
12946hexadecimal.
104c1213 12947
8e04817f
AC
12948@kindex show rstack_high_address
12949@item show rstack_high_address
12950Display the current limit of the register stack, on AMD 29000 family
12951processors.
104c1213 12952
8e04817f 12953@end table
104c1213 12954
8e04817f
AC
12955@node Alpha
12956@subsection Alpha
104c1213 12957
8e04817f 12958See the following section.
104c1213 12959
8e04817f
AC
12960@node MIPS
12961@subsection MIPS
104c1213 12962
8e04817f
AC
12963@cindex stack on Alpha
12964@cindex stack on MIPS
12965@cindex Alpha stack
12966@cindex MIPS stack
12967Alpha- and MIPS-based computers use an unusual stack frame, which
12968sometimes requires @value{GDBN} to search backward in the object code to
12969find the beginning of a function.
104c1213 12970
8e04817f
AC
12971@cindex response time, MIPS debugging
12972To improve response time (especially for embedded applications, where
12973@value{GDBN} may be restricted to a slow serial line for this search)
12974you may want to limit the size of this search, using one of these
12975commands:
104c1213 12976
8e04817f
AC
12977@table @code
12978@cindex @code{heuristic-fence-post} (Alpha, MIPS)
12979@item set heuristic-fence-post @var{limit}
12980Restrict @value{GDBN} to examining at most @var{limit} bytes in its
12981search for the beginning of a function. A value of @var{0} (the
12982default) means there is no limit. However, except for @var{0}, the
12983larger the limit the more bytes @code{heuristic-fence-post} must search
12984and therefore the longer it takes to run.
104c1213 12985
8e04817f
AC
12986@item show heuristic-fence-post
12987Display the current limit.
12988@end table
104c1213
JM
12989
12990@noindent
8e04817f
AC
12991These commands are available @emph{only} when @value{GDBN} is configured
12992for debugging programs on Alpha or MIPS processors.
104c1213 12993
104c1213 12994
8e04817f
AC
12995@node Controlling GDB
12996@chapter Controlling @value{GDBN}
12997
12998You can alter the way @value{GDBN} interacts with you by using the
12999@code{set} command. For commands controlling how @value{GDBN} displays
13000data, see @ref{Print Settings, ,Print settings}. Other settings are
13001described here.
13002
13003@menu
13004* Prompt:: Prompt
13005* Editing:: Command editing
13006* History:: Command history
13007* Screen Size:: Screen size
13008* Numbers:: Numbers
1e698235 13009* ABI:: Configuring the current ABI
8e04817f
AC
13010* Messages/Warnings:: Optional warnings and messages
13011* Debugging Output:: Optional messages about internal happenings
13012@end menu
13013
13014@node Prompt
13015@section Prompt
104c1213 13016
8e04817f 13017@cindex prompt
104c1213 13018
8e04817f
AC
13019@value{GDBN} indicates its readiness to read a command by printing a string
13020called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
13021can change the prompt string with the @code{set prompt} command. For
13022instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
13023the prompt in one of the @value{GDBN} sessions so that you can always tell
13024which one you are talking to.
104c1213 13025
8e04817f
AC
13026@emph{Note:} @code{set prompt} does not add a space for you after the
13027prompt you set. This allows you to set a prompt which ends in a space
13028or a prompt that does not.
104c1213 13029
8e04817f
AC
13030@table @code
13031@kindex set prompt
13032@item set prompt @var{newprompt}
13033Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
104c1213 13034
8e04817f
AC
13035@kindex show prompt
13036@item show prompt
13037Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
104c1213
JM
13038@end table
13039
8e04817f
AC
13040@node Editing
13041@section Command editing
13042@cindex readline
13043@cindex command line editing
104c1213 13044
8e04817f
AC
13045@value{GDBN} reads its input commands via the @dfn{readline} interface. This
13046@sc{gnu} library provides consistent behavior for programs which provide a
13047command line interface to the user. Advantages are @sc{gnu} Emacs-style
13048or @dfn{vi}-style inline editing of commands, @code{csh}-like history
13049substitution, and a storage and recall of command history across
13050debugging sessions.
104c1213 13051
8e04817f
AC
13052You may control the behavior of command line editing in @value{GDBN} with the
13053command @code{set}.
104c1213 13054
8e04817f
AC
13055@table @code
13056@kindex set editing
13057@cindex editing
13058@item set editing
13059@itemx set editing on
13060Enable command line editing (enabled by default).
104c1213 13061
8e04817f
AC
13062@item set editing off
13063Disable command line editing.
104c1213 13064
8e04817f
AC
13065@kindex show editing
13066@item show editing
13067Show whether command line editing is enabled.
104c1213
JM
13068@end table
13069
8e04817f
AC
13070@node History
13071@section Command history
13072
13073@value{GDBN} can keep track of the commands you type during your
13074debugging sessions, so that you can be certain of precisely what
13075happened. Use these commands to manage the @value{GDBN} command
13076history facility.
104c1213
JM
13077
13078@table @code
8e04817f
AC
13079@cindex history substitution
13080@cindex history file
13081@kindex set history filename
4644b6e3 13082@cindex @env{GDBHISTFILE}, environment variable
8e04817f
AC
13083@item set history filename @var{fname}
13084Set the name of the @value{GDBN} command history file to @var{fname}.
13085This is the file where @value{GDBN} reads an initial command history
13086list, and where it writes the command history from this session when it
13087exits. You can access this list through history expansion or through
13088the history command editing characters listed below. This file defaults
13089to the value of the environment variable @code{GDBHISTFILE}, or to
13090@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
13091is not set.
104c1213 13092
8e04817f 13093@cindex history save
4644b6e3 13094@kindex set history
8e04817f
AC
13095@item set history save
13096@itemx set history save on
13097Record command history in a file, whose name may be specified with the
13098@code{set history filename} command. By default, this option is disabled.
104c1213 13099
8e04817f
AC
13100@item set history save off
13101Stop recording command history in a file.
104c1213 13102
8e04817f 13103@cindex history size
8e04817f
AC
13104@item set history size @var{size}
13105Set the number of commands which @value{GDBN} keeps in its history list.
13106This defaults to the value of the environment variable
13107@code{HISTSIZE}, or to 256 if this variable is not set.
104c1213
JM
13108@end table
13109
8e04817f
AC
13110@cindex history expansion
13111History expansion assigns special meaning to the character @kbd{!}.
13112@ifset have-readline-appendices
13113@xref{Event Designators}.
13114@end ifset
13115
13116Since @kbd{!} is also the logical not operator in C, history expansion
13117is off by default. If you decide to enable history expansion with the
13118@code{set history expansion on} command, you may sometimes need to
13119follow @kbd{!} (when it is used as logical not, in an expression) with
13120a space or a tab to prevent it from being expanded. The readline
13121history facilities do not attempt substitution on the strings
13122@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
13123
13124The commands to control history expansion are:
104c1213
JM
13125
13126@table @code
8e04817f
AC
13127@item set history expansion on
13128@itemx set history expansion
4644b6e3 13129@cindex history expansion
8e04817f 13130Enable history expansion. History expansion is off by default.
104c1213 13131
8e04817f
AC
13132@item set history expansion off
13133Disable history expansion.
104c1213 13134
8e04817f
AC
13135The readline code comes with more complete documentation of
13136editing and history expansion features. Users unfamiliar with @sc{gnu} Emacs
13137or @code{vi} may wish to read it.
13138@ifset have-readline-appendices
13139@xref{Command Line Editing}.
13140@end ifset
104c1213 13141
8e04817f
AC
13142@c @group
13143@kindex show history
13144@item show history
13145@itemx show history filename
13146@itemx show history save
13147@itemx show history size
13148@itemx show history expansion
13149These commands display the state of the @value{GDBN} history parameters.
13150@code{show history} by itself displays all four states.
13151@c @end group
13152@end table
13153
13154@table @code
13155@kindex shows
13156@item show commands
13157Display the last ten commands in the command history.
104c1213 13158
8e04817f
AC
13159@item show commands @var{n}
13160Print ten commands centered on command number @var{n}.
13161
13162@item show commands +
13163Print ten commands just after the commands last printed.
104c1213
JM
13164@end table
13165
8e04817f
AC
13166@node Screen Size
13167@section Screen size
13168@cindex size of screen
13169@cindex pauses in output
104c1213 13170
8e04817f
AC
13171Certain commands to @value{GDBN} may produce large amounts of
13172information output to the screen. To help you read all of it,
13173@value{GDBN} pauses and asks you for input at the end of each page of
13174output. Type @key{RET} when you want to continue the output, or @kbd{q}
13175to discard the remaining output. Also, the screen width setting
13176determines when to wrap lines of output. Depending on what is being
13177printed, @value{GDBN} tries to break the line at a readable place,
13178rather than simply letting it overflow onto the following line.
13179
13180Normally @value{GDBN} knows the size of the screen from the terminal
13181driver software. For example, on Unix @value{GDBN} uses the termcap data base
13182together with the value of the @code{TERM} environment variable and the
13183@code{stty rows} and @code{stty cols} settings. If this is not correct,
13184you can override it with the @code{set height} and @code{set
13185width} commands:
13186
13187@table @code
13188@kindex set height
13189@kindex set width
13190@kindex show width
13191@kindex show height
13192@item set height @var{lpp}
13193@itemx show height
13194@itemx set width @var{cpl}
13195@itemx show width
13196These @code{set} commands specify a screen height of @var{lpp} lines and
13197a screen width of @var{cpl} characters. The associated @code{show}
13198commands display the current settings.
104c1213 13199
8e04817f
AC
13200If you specify a height of zero lines, @value{GDBN} does not pause during
13201output no matter how long the output is. This is useful if output is to a
13202file or to an editor buffer.
104c1213 13203
8e04817f
AC
13204Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
13205from wrapping its output.
104c1213
JM
13206@end table
13207
8e04817f
AC
13208@node Numbers
13209@section Numbers
13210@cindex number representation
13211@cindex entering numbers
104c1213 13212
8e04817f
AC
13213You can always enter numbers in octal, decimal, or hexadecimal in
13214@value{GDBN} by the usual conventions: octal numbers begin with
13215@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
13216begin with @samp{0x}. Numbers that begin with none of these are, by
13217default, entered in base 10; likewise, the default display for
13218numbers---when no particular format is specified---is base 10. You can
13219change the default base for both input and output with the @code{set
13220radix} command.
104c1213 13221
8e04817f
AC
13222@table @code
13223@kindex set input-radix
13224@item set input-radix @var{base}
13225Set the default base for numeric input. Supported choices
13226for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
13227specified either unambiguously or using the current default radix; for
13228example, any of
104c1213 13229
8e04817f
AC
13230@smallexample
13231set radix 012
13232set radix 10.
13233set radix 0xa
13234@end smallexample
104c1213 13235
8e04817f
AC
13236@noindent
13237sets the base to decimal. On the other hand, @samp{set radix 10}
13238leaves the radix unchanged no matter what it was.
104c1213 13239
8e04817f
AC
13240@kindex set output-radix
13241@item set output-radix @var{base}
13242Set the default base for numeric display. Supported choices
13243for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
13244specified either unambiguously or using the current default radix.
104c1213 13245
8e04817f
AC
13246@kindex show input-radix
13247@item show input-radix
13248Display the current default base for numeric input.
104c1213 13249
8e04817f
AC
13250@kindex show output-radix
13251@item show output-radix
13252Display the current default base for numeric display.
13253@end table
104c1213 13254
1e698235
DJ
13255@node ABI
13256@section Configuring the current ABI
13257
13258@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
13259application automatically. However, sometimes you need to override its
13260conclusions. Use these commands to manage @value{GDBN}'s view of the
13261current ABI.
13262
98b45e30
DJ
13263@cindex OS ABI
13264@kindex set osabi
b4e9345d 13265@kindex show osabi
98b45e30
DJ
13266
13267One @value{GDBN} configuration can debug binaries for multiple operating
b383017d 13268system targets, either via remote debugging or native emulation.
98b45e30
DJ
13269@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
13270but you can override its conclusion using the @code{set osabi} command.
13271One example where this is useful is in debugging of binaries which use
13272an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
13273not have the same identifying marks that the standard C library for your
13274platform provides.
13275
13276@table @code
13277@item show osabi
13278Show the OS ABI currently in use.
13279
13280@item set osabi
13281With no argument, show the list of registered available OS ABI's.
13282
13283@item set osabi @var{abi}
13284Set the current OS ABI to @var{abi}.
13285@end table
13286
1e698235
DJ
13287@cindex float promotion
13288@kindex set coerce-float-to-double
13289
13290Generally, the way that an argument of type @code{float} is passed to a
13291function depends on whether the function is prototyped. For a prototyped
13292(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
13293according to the architecture's convention for @code{float}. For unprototyped
13294(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
13295@code{double} and then passed.
13296
13297Unfortunately, some forms of debug information do not reliably indicate whether
13298a function is prototyped. If @value{GDBN} calls a function that is not marked
13299as prototyped, it consults @kbd{set coerce-float-to-double}.
13300
13301@table @code
13302@item set coerce-float-to-double
13303@itemx set coerce-float-to-double on
13304Arguments of type @code{float} will be promoted to @code{double} when passed
13305to an unprototyped function. This is the default setting.
13306
13307@item set coerce-float-to-double off
13308Arguments of type @code{float} will be passed directly to unprototyped
13309functions.
13310@end table
13311
f1212245
DJ
13312@kindex set cp-abi
13313@kindex show cp-abi
13314@value{GDBN} needs to know the ABI used for your program's C@t{++}
13315objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
13316used to build your application. @value{GDBN} only fully supports
13317programs with a single C@t{++} ABI; if your program contains code using
13318multiple C@t{++} ABI's or if @value{GDBN} can not identify your
13319program's ABI correctly, you can tell @value{GDBN} which ABI to use.
13320Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
13321before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
13322``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
13323use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
13324``auto''.
13325
13326@table @code
13327@item show cp-abi
13328Show the C@t{++} ABI currently in use.
13329
13330@item set cp-abi
13331With no argument, show the list of supported C@t{++} ABI's.
13332
13333@item set cp-abi @var{abi}
13334@itemx set cp-abi auto
13335Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
13336@end table
13337
8e04817f
AC
13338@node Messages/Warnings
13339@section Optional warnings and messages
104c1213 13340
8e04817f
AC
13341By default, @value{GDBN} is silent about its inner workings. If you are
13342running on a slow machine, you may want to use the @code{set verbose}
13343command. This makes @value{GDBN} tell you when it does a lengthy
13344internal operation, so you will not think it has crashed.
104c1213 13345
8e04817f
AC
13346Currently, the messages controlled by @code{set verbose} are those
13347which announce that the symbol table for a source file is being read;
13348see @code{symbol-file} in @ref{Files, ,Commands to specify files}.
104c1213 13349
8e04817f
AC
13350@table @code
13351@kindex set verbose
13352@item set verbose on
13353Enables @value{GDBN} output of certain informational messages.
104c1213 13354
8e04817f
AC
13355@item set verbose off
13356Disables @value{GDBN} output of certain informational messages.
104c1213 13357
8e04817f
AC
13358@kindex show verbose
13359@item show verbose
13360Displays whether @code{set verbose} is on or off.
13361@end table
104c1213 13362
8e04817f
AC
13363By default, if @value{GDBN} encounters bugs in the symbol table of an
13364object file, it is silent; but if you are debugging a compiler, you may
13365find this information useful (@pxref{Symbol Errors, ,Errors reading
13366symbol files}).
104c1213 13367
8e04817f 13368@table @code
104c1213 13369
8e04817f
AC
13370@kindex set complaints
13371@item set complaints @var{limit}
13372Permits @value{GDBN} to output @var{limit} complaints about each type of
13373unusual symbols before becoming silent about the problem. Set
13374@var{limit} to zero to suppress all complaints; set it to a large number
13375to prevent complaints from being suppressed.
104c1213 13376
8e04817f
AC
13377@kindex show complaints
13378@item show complaints
13379Displays how many symbol complaints @value{GDBN} is permitted to produce.
104c1213 13380
8e04817f 13381@end table
104c1213 13382
8e04817f
AC
13383By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
13384lot of stupid questions to confirm certain commands. For example, if
13385you try to run a program which is already running:
104c1213 13386
474c8240 13387@smallexample
8e04817f
AC
13388(@value{GDBP}) run
13389The program being debugged has been started already.
13390Start it from the beginning? (y or n)
474c8240 13391@end smallexample
104c1213 13392
8e04817f
AC
13393If you are willing to unflinchingly face the consequences of your own
13394commands, you can disable this ``feature'':
104c1213 13395
8e04817f 13396@table @code
104c1213 13397
8e04817f
AC
13398@kindex set confirm
13399@cindex flinching
13400@cindex confirmation
13401@cindex stupid questions
13402@item set confirm off
13403Disables confirmation requests.
104c1213 13404
8e04817f
AC
13405@item set confirm on
13406Enables confirmation requests (the default).
104c1213 13407
8e04817f
AC
13408@kindex show confirm
13409@item show confirm
13410Displays state of confirmation requests.
13411
13412@end table
104c1213 13413
8e04817f
AC
13414@node Debugging Output
13415@section Optional messages about internal happenings
4644b6e3
EZ
13416@cindex optional debugging messages
13417
104c1213 13418@table @code
4644b6e3
EZ
13419@kindex set debug
13420@cindex gdbarch debugging info
8e04817f
AC
13421@item set debug arch
13422Turns on or off display of gdbarch debugging info. The default is off
4644b6e3 13423@kindex show debug
8e04817f
AC
13424@item show debug arch
13425Displays the current state of displaying gdbarch debugging info.
8e04817f 13426@item set debug event
4644b6e3 13427@cindex event debugging info
8e04817f
AC
13428Turns on or off display of @value{GDBN} event debugging info. The
13429default is off.
8e04817f
AC
13430@item show debug event
13431Displays the current state of displaying @value{GDBN} event debugging
13432info.
8e04817f 13433@item set debug expression
4644b6e3 13434@cindex expression debugging info
8e04817f
AC
13435Turns on or off display of @value{GDBN} expression debugging info. The
13436default is off.
8e04817f
AC
13437@item show debug expression
13438Displays the current state of displaying @value{GDBN} expression
13439debugging info.
7453dc06 13440@item set debug frame
4644b6e3 13441@cindex frame debugging info
7453dc06
AC
13442Turns on or off display of @value{GDBN} frame debugging info. The
13443default is off.
7453dc06
AC
13444@item show debug frame
13445Displays the current state of displaying @value{GDBN} frame debugging
13446info.
2b4855ab 13447@item set debug observer
4644b6e3 13448@cindex observer debugging info
2b4855ab
AC
13449Turns on or off display of @value{GDBN} observer debugging. This
13450includes info such as the notification of observable events.
2b4855ab
AC
13451@item show debug observer
13452Displays the current state of observer debugging.
8e04817f 13453@item set debug overload
4644b6e3 13454@cindex C@t{++} overload debugging info
8e04817f
AC
13455Turns on or off display of @value{GDBN} C@t{++} overload debugging
13456info. This includes info such as ranking of functions, etc. The default
13457is off.
8e04817f
AC
13458@item show debug overload
13459Displays the current state of displaying @value{GDBN} C@t{++} overload
13460debugging info.
8e04817f
AC
13461@cindex packets, reporting on stdout
13462@cindex serial connections, debugging
13463@item set debug remote
13464Turns on or off display of reports on all packets sent back and forth across
13465the serial line to the remote machine. The info is printed on the
13466@value{GDBN} standard output stream. The default is off.
8e04817f
AC
13467@item show debug remote
13468Displays the state of display of remote packets.
8e04817f
AC
13469@item set debug serial
13470Turns on or off display of @value{GDBN} serial debugging info. The
13471default is off.
8e04817f
AC
13472@item show debug serial
13473Displays the current state of displaying @value{GDBN} serial debugging
13474info.
8e04817f 13475@item set debug target
4644b6e3 13476@cindex target debugging info
8e04817f
AC
13477Turns on or off display of @value{GDBN} target debugging info. This info
13478includes what is going on at the target level of GDB, as it happens. The
701b08bb
DJ
13479default is 0. Set it to 1 to track events, and to 2 to also track the
13480value of large memory transfers. Changes to this flag do not take effect
13481until the next time you connect to a target or use the @code{run} command.
8e04817f
AC
13482@item show debug target
13483Displays the current state of displaying @value{GDBN} target debugging
13484info.
8e04817f 13485@item set debug varobj
4644b6e3 13486@cindex variable object debugging info
8e04817f
AC
13487Turns on or off display of @value{GDBN} variable object debugging
13488info. The default is off.
8e04817f
AC
13489@item show debug varobj
13490Displays the current state of displaying @value{GDBN} variable object
13491debugging info.
13492@end table
104c1213 13493
8e04817f
AC
13494@node Sequences
13495@chapter Canned Sequences of Commands
104c1213 13496
8e04817f
AC
13497Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
13498command lists}), @value{GDBN} provides two ways to store sequences of
13499commands for execution as a unit: user-defined commands and command
13500files.
104c1213 13501
8e04817f
AC
13502@menu
13503* Define:: User-defined commands
13504* Hooks:: User-defined command hooks
13505* Command Files:: Command files
13506* Output:: Commands for controlled output
13507@end menu
104c1213 13508
8e04817f
AC
13509@node Define
13510@section User-defined commands
104c1213 13511
8e04817f
AC
13512@cindex user-defined command
13513A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
13514which you assign a new name as a command. This is done with the
13515@code{define} command. User commands may accept up to 10 arguments
13516separated by whitespace. Arguments are accessed within the user command
13517via @var{$arg0@dots{}$arg9}. A trivial example:
104c1213 13518
8e04817f
AC
13519@smallexample
13520define adder
13521 print $arg0 + $arg1 + $arg2
13522@end smallexample
104c1213
JM
13523
13524@noindent
8e04817f 13525To execute the command use:
104c1213 13526
8e04817f
AC
13527@smallexample
13528adder 1 2 3
13529@end smallexample
104c1213 13530
8e04817f
AC
13531@noindent
13532This defines the command @code{adder}, which prints the sum of
13533its three arguments. Note the arguments are text substitutions, so they may
13534reference variables, use complex expressions, or even perform inferior
13535functions calls.
104c1213
JM
13536
13537@table @code
104c1213 13538
8e04817f
AC
13539@kindex define
13540@item define @var{commandname}
13541Define a command named @var{commandname}. If there is already a command
13542by that name, you are asked to confirm that you want to redefine it.
104c1213 13543
8e04817f
AC
13544The definition of the command is made up of other @value{GDBN} command lines,
13545which are given following the @code{define} command. The end of these
13546commands is marked by a line containing @code{end}.
104c1213 13547
8e04817f
AC
13548@kindex if
13549@kindex else
13550@item if
13551Takes a single argument, which is an expression to evaluate.
13552It is followed by a series of commands that are executed
13553only if the expression is true (nonzero).
13554There can then optionally be a line @code{else}, followed
13555by a series of commands that are only executed if the expression
13556was false. The end of the list is marked by a line containing @code{end}.
104c1213 13557
8e04817f
AC
13558@kindex while
13559@item while
13560The syntax is similar to @code{if}: the command takes a single argument,
13561which is an expression to evaluate, and must be followed by the commands to
13562execute, one per line, terminated by an @code{end}.
13563The commands are executed repeatedly as long as the expression
13564evaluates to true.
104c1213 13565
8e04817f
AC
13566@kindex document
13567@item document @var{commandname}
13568Document the user-defined command @var{commandname}, so that it can be
13569accessed by @code{help}. The command @var{commandname} must already be
13570defined. This command reads lines of documentation just as @code{define}
13571reads the lines of the command definition, ending with @code{end}.
13572After the @code{document} command is finished, @code{help} on command
13573@var{commandname} displays the documentation you have written.
104c1213 13574
8e04817f
AC
13575You may use the @code{document} command again to change the
13576documentation of a command. Redefining the command with @code{define}
13577does not change the documentation.
104c1213 13578
8e04817f
AC
13579@kindex help user-defined
13580@item help user-defined
13581List all user-defined commands, with the first line of the documentation
13582(if any) for each.
104c1213 13583
8e04817f
AC
13584@kindex show user
13585@item show user
13586@itemx show user @var{commandname}
13587Display the @value{GDBN} commands used to define @var{commandname} (but
13588not its documentation). If no @var{commandname} is given, display the
13589definitions for all user-defined commands.
104c1213 13590
20f01a46
DH
13591@kindex show max-user-call-depth
13592@kindex set max-user-call-depth
13593@item show max-user-call-depth
5ca0cb28
DH
13594@itemx set max-user-call-depth
13595The value of @code{max-user-call-depth} controls how many recursion
13596levels are allowed in user-defined commands before GDB suspects an
13597infinite recursion and aborts the command.
20f01a46 13598
104c1213
JM
13599@end table
13600
8e04817f
AC
13601When user-defined commands are executed, the
13602commands of the definition are not printed. An error in any command
13603stops execution of the user-defined command.
104c1213 13604
8e04817f
AC
13605If used interactively, commands that would ask for confirmation proceed
13606without asking when used inside a user-defined command. Many @value{GDBN}
13607commands that normally print messages to say what they are doing omit the
13608messages when used in a user-defined command.
104c1213 13609
8e04817f
AC
13610@node Hooks
13611@section User-defined command hooks
13612@cindex command hooks
13613@cindex hooks, for commands
13614@cindex hooks, pre-command
104c1213 13615
8e04817f 13616@kindex hook
8e04817f
AC
13617You may define @dfn{hooks}, which are a special kind of user-defined
13618command. Whenever you run the command @samp{foo}, if the user-defined
13619command @samp{hook-foo} exists, it is executed (with no arguments)
13620before that command.
104c1213 13621
8e04817f
AC
13622@cindex hooks, post-command
13623@kindex hookpost
8e04817f
AC
13624A hook may also be defined which is run after the command you executed.
13625Whenever you run the command @samp{foo}, if the user-defined command
13626@samp{hookpost-foo} exists, it is executed (with no arguments) after
13627that command. Post-execution hooks may exist simultaneously with
13628pre-execution hooks, for the same command.
104c1213 13629
8e04817f
AC
13630It is valid for a hook to call the command which it hooks. If this
13631occurs, the hook is not re-executed, thereby avoiding infinte recursion.
104c1213 13632
8e04817f
AC
13633@c It would be nice if hookpost could be passed a parameter indicating
13634@c if the command it hooks executed properly or not. FIXME!
104c1213 13635
8e04817f
AC
13636@kindex stop@r{, a pseudo-command}
13637In addition, a pseudo-command, @samp{stop} exists. Defining
13638(@samp{hook-stop}) makes the associated commands execute every time
13639execution stops in your program: before breakpoint commands are run,
13640displays are printed, or the stack frame is printed.
104c1213 13641
8e04817f
AC
13642For example, to ignore @code{SIGALRM} signals while
13643single-stepping, but treat them normally during normal execution,
13644you could define:
104c1213 13645
474c8240 13646@smallexample
8e04817f
AC
13647define hook-stop
13648handle SIGALRM nopass
13649end
104c1213 13650
8e04817f
AC
13651define hook-run
13652handle SIGALRM pass
13653end
104c1213 13654
8e04817f
AC
13655define hook-continue
13656handle SIGLARM pass
13657end
474c8240 13658@end smallexample
104c1213 13659
8e04817f 13660As a further example, to hook at the begining and end of the @code{echo}
b383017d 13661command, and to add extra text to the beginning and end of the message,
8e04817f 13662you could define:
104c1213 13663
474c8240 13664@smallexample
8e04817f
AC
13665define hook-echo
13666echo <<<---
13667end
104c1213 13668
8e04817f
AC
13669define hookpost-echo
13670echo --->>>\n
13671end
104c1213 13672
8e04817f
AC
13673(@value{GDBP}) echo Hello World
13674<<<---Hello World--->>>
13675(@value{GDBP})
104c1213 13676
474c8240 13677@end smallexample
104c1213 13678
8e04817f
AC
13679You can define a hook for any single-word command in @value{GDBN}, but
13680not for command aliases; you should define a hook for the basic command
13681name, e.g. @code{backtrace} rather than @code{bt}.
13682@c FIXME! So how does Joe User discover whether a command is an alias
13683@c or not?
13684If an error occurs during the execution of your hook, execution of
13685@value{GDBN} commands stops and @value{GDBN} issues a prompt
13686(before the command that you actually typed had a chance to run).
104c1213 13687
8e04817f
AC
13688If you try to define a hook which does not match any known command, you
13689get a warning from the @code{define} command.
c906108c 13690
8e04817f
AC
13691@node Command Files
13692@section Command files
c906108c 13693
8e04817f
AC
13694@cindex command files
13695A command file for @value{GDBN} is a file of lines that are @value{GDBN}
13696commands. Comments (lines starting with @kbd{#}) may also be included.
13697An empty line in a command file does nothing; it does not mean to repeat
13698the last command, as it would from the terminal.
c906108c 13699
8e04817f
AC
13700@cindex init file
13701@cindex @file{.gdbinit}
13702@cindex @file{gdb.ini}
13703When you start @value{GDBN}, it automatically executes commands from its
13704@dfn{init files}, normally called @file{.gdbinit}@footnote{The DJGPP
13705port of @value{GDBN} uses the name @file{gdb.ini} instead, due to the
13706limitations of file names imposed by DOS filesystems.}.
13707During startup, @value{GDBN} does the following:
c906108c 13708
8e04817f
AC
13709@enumerate
13710@item
13711Reads the init file (if any) in your home directory@footnote{On
13712DOS/Windows systems, the home directory is the one pointed to by the
13713@code{HOME} environment variable.}.
c906108c 13714
8e04817f
AC
13715@item
13716Processes command line options and operands.
c906108c 13717
8e04817f
AC
13718@item
13719Reads the init file (if any) in the current working directory.
c906108c 13720
8e04817f
AC
13721@item
13722Reads command files specified by the @samp{-x} option.
13723@end enumerate
c906108c 13724
8e04817f
AC
13725The init file in your home directory can set options (such as @samp{set
13726complaints}) that affect subsequent processing of command line options
13727and operands. Init files are not executed if you use the @samp{-nx}
13728option (@pxref{Mode Options, ,Choosing modes}).
c906108c 13729
8e04817f
AC
13730@cindex init file name
13731On some configurations of @value{GDBN}, the init file is known by a
13732different name (these are typically environments where a specialized
13733form of @value{GDBN} may need to coexist with other forms, hence a
13734different name for the specialized version's init file). These are the
13735environments with special init file names:
c906108c 13736
8e04817f
AC
13737@cindex @file{.vxgdbinit}
13738@itemize @bullet
13739@item
13740VxWorks (Wind River Systems real-time OS): @file{.vxgdbinit}
c906108c 13741
8e04817f
AC
13742@cindex @file{.os68gdbinit}
13743@item
13744OS68K (Enea Data Systems real-time OS): @file{.os68gdbinit}
c906108c 13745
8e04817f
AC
13746@cindex @file{.esgdbinit}
13747@item
13748ES-1800 (Ericsson Telecom AB M68000 emulator): @file{.esgdbinit}
13749@end itemize
c906108c 13750
8e04817f
AC
13751You can also request the execution of a command file with the
13752@code{source} command:
c906108c 13753
8e04817f
AC
13754@table @code
13755@kindex source
13756@item source @var{filename}
13757Execute the command file @var{filename}.
c906108c
SS
13758@end table
13759
8e04817f 13760The lines in a command file are executed sequentially. They are not
a71ec265
DH
13761printed as they are executed. An error in any command terminates
13762execution of the command file and control is returned to the console.
c906108c 13763
8e04817f
AC
13764Commands that would ask for confirmation if used interactively proceed
13765without asking when used in a command file. Many @value{GDBN} commands that
13766normally print messages to say what they are doing omit the messages
13767when called from command files.
c906108c 13768
8e04817f
AC
13769@value{GDBN} also accepts command input from standard input. In this
13770mode, normal output goes to standard output and error output goes to
13771standard error. Errors in a command file supplied on standard input do
13772not terminate execution of the command file --- execution continues with
13773the next command.
c906108c 13774
474c8240 13775@smallexample
8e04817f 13776gdb < cmds > log 2>&1
474c8240 13777@end smallexample
c906108c 13778
8e04817f
AC
13779(The syntax above will vary depending on the shell used.) This example
13780will execute commands from the file @file{cmds}. All output and errors
13781would be directed to @file{log}.
c906108c 13782
8e04817f
AC
13783@node Output
13784@section Commands for controlled output
c906108c 13785
8e04817f
AC
13786During the execution of a command file or a user-defined command, normal
13787@value{GDBN} output is suppressed; the only output that appears is what is
13788explicitly printed by the commands in the definition. This section
13789describes three commands useful for generating exactly the output you
13790want.
c906108c
SS
13791
13792@table @code
8e04817f
AC
13793@kindex echo
13794@item echo @var{text}
13795@c I do not consider backslash-space a standard C escape sequence
13796@c because it is not in ANSI.
13797Print @var{text}. Nonprinting characters can be included in
13798@var{text} using C escape sequences, such as @samp{\n} to print a
13799newline. @strong{No newline is printed unless you specify one.}
13800In addition to the standard C escape sequences, a backslash followed
13801by a space stands for a space. This is useful for displaying a
13802string with spaces at the beginning or the end, since leading and
13803trailing spaces are otherwise trimmed from all arguments.
13804To print @samp{@w{ }and foo =@w{ }}, use the command
13805@samp{echo \@w{ }and foo = \@w{ }}.
c906108c 13806
8e04817f
AC
13807A backslash at the end of @var{text} can be used, as in C, to continue
13808the command onto subsequent lines. For example,
c906108c 13809
474c8240 13810@smallexample
8e04817f
AC
13811echo This is some text\n\
13812which is continued\n\
13813onto several lines.\n
474c8240 13814@end smallexample
c906108c 13815
8e04817f 13816produces the same output as
c906108c 13817
474c8240 13818@smallexample
8e04817f
AC
13819echo This is some text\n
13820echo which is continued\n
13821echo onto several lines.\n
474c8240 13822@end smallexample
c906108c 13823
8e04817f
AC
13824@kindex output
13825@item output @var{expression}
13826Print the value of @var{expression} and nothing but that value: no
13827newlines, no @samp{$@var{nn} = }. The value is not entered in the
13828value history either. @xref{Expressions, ,Expressions}, for more information
13829on expressions.
c906108c 13830
8e04817f
AC
13831@item output/@var{fmt} @var{expression}
13832Print the value of @var{expression} in format @var{fmt}. You can use
13833the same formats as for @code{print}. @xref{Output Formats,,Output
13834formats}, for more information.
c906108c 13835
8e04817f
AC
13836@kindex printf
13837@item printf @var{string}, @var{expressions}@dots{}
13838Print the values of the @var{expressions} under the control of
13839@var{string}. The @var{expressions} are separated by commas and may be
13840either numbers or pointers. Their values are printed as specified by
13841@var{string}, exactly as if your program were to execute the C
13842subroutine
13843@c FIXME: the above implies that at least all ANSI C formats are
13844@c supported, but it isn't true: %E and %G don't work (or so it seems).
13845@c Either this is a bug, or the manual should document what formats are
13846@c supported.
c906108c 13847
474c8240 13848@smallexample
8e04817f 13849printf (@var{string}, @var{expressions}@dots{});
474c8240 13850@end smallexample
c906108c 13851
8e04817f 13852For example, you can print two values in hex like this:
c906108c 13853
8e04817f
AC
13854@smallexample
13855printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
13856@end smallexample
c906108c 13857
8e04817f
AC
13858The only backslash-escape sequences that you can use in the format
13859string are the simple ones that consist of backslash followed by a
13860letter.
c906108c
SS
13861@end table
13862
21c294e6
AC
13863@node Interpreters
13864@chapter Command Interpreters
13865@cindex command interpreters
13866
13867@value{GDBN} supports multiple command interpreters, and some command
13868infrastructure to allow users or user interface writers to switch
13869between interpreters or run commands in other interpreters.
13870
13871@value{GDBN} currently supports two command interpreters, the console
13872interpreter (sometimes called the command-line interpreter or @sc{cli})
13873and the machine interface interpreter (or @sc{gdb/mi}). This manual
13874describes both of these interfaces in great detail.
13875
13876By default, @value{GDBN} will start with the console interpreter.
13877However, the user may choose to start @value{GDBN} with another
13878interpreter by specifying the @option{-i} or @option{--interpreter}
13879startup options. Defined interpreters include:
13880
13881@table @code
13882@item console
13883@cindex console interpreter
13884The traditional console or command-line interpreter. This is the most often
13885used interpreter with @value{GDBN}. With no interpreter specified at runtime,
13886@value{GDBN} will use this interpreter.
13887
13888@item mi
13889@cindex mi interpreter
13890The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
13891by programs wishing to use @value{GDBN} as a backend for a debugger GUI
13892or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
13893Interface}.
13894
13895@item mi2
13896@cindex mi2 interpreter
13897The current @sc{gdb/mi} interface.
13898
13899@item mi1
13900@cindex mi1 interpreter
13901The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
13902
13903@end table
13904
13905@cindex invoke another interpreter
13906The interpreter being used by @value{GDBN} may not be dynamically
13907switched at runtime. Although possible, this could lead to a very
13908precarious situation. Consider an IDE using @sc{gdb/mi}. If a user
13909enters the command "interpreter-set console" in a console view,
13910@value{GDBN} would switch to using the console interpreter, rendering
13911the IDE inoperable!
13912
13913@kindex interpreter-exec
13914Although you may only choose a single interpreter at startup, you may execute
13915commands in any interpreter from the current interpreter using the appropriate
13916command. If you are running the console interpreter, simply use the
13917@code{interpreter-exec} command:
13918
13919@smallexample
13920interpreter-exec mi "-data-list-register-names"
13921@end smallexample
13922
13923@sc{gdb/mi} has a similar command, although it is only available in versions of
13924@value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
13925
8e04817f
AC
13926@node TUI
13927@chapter @value{GDBN} Text User Interface
13928@cindex TUI
d0d5df6f 13929@cindex Text User Interface
c906108c 13930
8e04817f
AC
13931@menu
13932* TUI Overview:: TUI overview
13933* TUI Keys:: TUI key bindings
7cf36c78 13934* TUI Single Key Mode:: TUI single key mode
8e04817f
AC
13935* TUI Commands:: TUI specific commands
13936* TUI Configuration:: TUI configuration variables
13937@end menu
c906108c 13938
d0d5df6f
AC
13939The @value{GDBN} Text User Interface, TUI in short, is a terminal
13940interface which uses the @code{curses} library to show the source
13941file, the assembly output, the program registers and @value{GDBN}
13942commands in separate text windows.
13943
13944The TUI is enabled by invoking @value{GDBN} using either
13945@pindex gdbtui
13946@samp{gdbtui} or @samp{gdb -tui}.
c906108c 13947
8e04817f
AC
13948@node TUI Overview
13949@section TUI overview
c906108c 13950
8e04817f
AC
13951The TUI has two display modes that can be switched while
13952@value{GDBN} runs:
c906108c 13953
8e04817f
AC
13954@itemize @bullet
13955@item
13956A curses (or TUI) mode in which it displays several text
13957windows on the terminal.
c906108c 13958
8e04817f
AC
13959@item
13960A standard mode which corresponds to the @value{GDBN} configured without
13961the TUI.
13962@end itemize
c906108c 13963
8e04817f
AC
13964In the TUI mode, @value{GDBN} can display several text window
13965on the terminal:
c906108c 13966
8e04817f
AC
13967@table @emph
13968@item command
13969This window is the @value{GDBN} command window with the @value{GDBN}
13970prompt and the @value{GDBN} outputs. The @value{GDBN} input is still
13971managed using readline but through the TUI. The @emph{command}
13972window is always visible.
c906108c 13973
8e04817f
AC
13974@item source
13975The source window shows the source file of the program. The current
13976line as well as active breakpoints are displayed in this window.
c906108c 13977
8e04817f
AC
13978@item assembly
13979The assembly window shows the disassembly output of the program.
c906108c 13980
8e04817f
AC
13981@item register
13982This window shows the processor registers. It detects when
13983a register is changed and when this is the case, registers that have
6a1b180d 13984changed are highlighted.
c906108c 13985
c906108c
SS
13986@end table
13987
269c21fe
SC
13988The source and assembly windows show the current program position
13989by highlighting the current line and marking them with the @samp{>} marker.
13990Breakpoints are also indicated with two markers. A first one
13991indicates the breakpoint type:
13992
13993@table @code
13994@item B
13995Breakpoint which was hit at least once.
13996
13997@item b
13998Breakpoint which was never hit.
13999
14000@item H
14001Hardware breakpoint which was hit at least once.
14002
14003@item h
14004Hardware breakpoint which was never hit.
14005
14006@end table
14007
14008The second marker indicates whether the breakpoint is enabled or not:
14009
14010@table @code
14011@item +
14012Breakpoint is enabled.
14013
14014@item -
14015Breakpoint is disabled.
14016
14017@end table
14018
8e04817f
AC
14019The source, assembly and register windows are attached to the thread
14020and the frame position. They are updated when the current thread
14021changes, when the frame changes or when the program counter changes.
14022These three windows are arranged by the TUI according to several
14023layouts. The layout defines which of these three windows are visible.
14024The following layouts are available:
c906108c 14025
8e04817f
AC
14026@itemize @bullet
14027@item
14028source
2df3850c 14029
8e04817f
AC
14030@item
14031assembly
14032
14033@item
14034source and assembly
14035
14036@item
14037source and registers
c906108c 14038
8e04817f
AC
14039@item
14040assembly and registers
2df3850c 14041
8e04817f 14042@end itemize
c906108c 14043
b7bb15bc
SC
14044On top of the command window a status line gives various information
14045concerning the current process begin debugged. The status line is
14046updated when the information it shows changes. The following fields
14047are displayed:
14048
14049@table @emph
14050@item target
14051Indicates the current gdb target
14052(@pxref{Targets, ,Specifying a Debugging Target}).
14053
14054@item process
14055Gives information about the current process or thread number.
14056When no process is being debugged, this field is set to @code{No process}.
14057
14058@item function
14059Gives the current function name for the selected frame.
14060The name is demangled if demangling is turned on (@pxref{Print Settings}).
14061When there is no symbol corresponding to the current program counter
14062the string @code{??} is displayed.
14063
14064@item line
14065Indicates the current line number for the selected frame.
14066When the current line number is not known the string @code{??} is displayed.
14067
14068@item pc
14069Indicates the current program counter address.
14070
14071@end table
14072
8e04817f
AC
14073@node TUI Keys
14074@section TUI Key Bindings
14075@cindex TUI key bindings
c906108c 14076
8e04817f
AC
14077The TUI installs several key bindings in the readline keymaps
14078(@pxref{Command Line Editing}).
14079They allow to leave or enter in the TUI mode or they operate
7cf36c78
SC
14080directly on the TUI layout and windows. The TUI also provides
14081a @emph{SingleKey} keymap which binds several keys directly to
14082@value{GDBN} commands. The following key bindings
8e04817f 14083are installed for both TUI mode and the @value{GDBN} standard mode.
c906108c 14084
8e04817f
AC
14085@table @kbd
14086@kindex C-x C-a
14087@item C-x C-a
14088@kindex C-x a
14089@itemx C-x a
14090@kindex C-x A
14091@itemx C-x A
14092Enter or leave the TUI mode. When the TUI mode is left,
14093the curses window management is left and @value{GDBN} operates using
14094its standard mode writing on the terminal directly. When the TUI
14095mode is entered, the control is given back to the curses windows.
14096The screen is then refreshed.
c906108c 14097
8e04817f
AC
14098@kindex C-x 1
14099@item C-x 1
14100Use a TUI layout with only one window. The layout will
14101either be @samp{source} or @samp{assembly}. When the TUI mode
14102is not active, it will switch to the TUI mode.
2df3850c 14103
8e04817f 14104Think of this key binding as the Emacs @kbd{C-x 1} binding.
c906108c 14105
8e04817f
AC
14106@kindex C-x 2
14107@item C-x 2
14108Use a TUI layout with at least two windows. When the current
14109layout shows already two windows, a next layout with two windows is used.
14110When a new layout is chosen, one window will always be common to the
14111previous layout and the new one.
c906108c 14112
8e04817f 14113Think of it as the Emacs @kbd{C-x 2} binding.
2df3850c 14114
72ffddc9
SC
14115@kindex C-x o
14116@item C-x o
14117Change the active window. The TUI associates several key bindings
14118(like scrolling and arrow keys) to the active window. This command
14119gives the focus to the next TUI window.
14120
14121Think of it as the Emacs @kbd{C-x o} binding.
14122
7cf36c78
SC
14123@kindex C-x s
14124@item C-x s
14125Use the TUI @emph{SingleKey} keymap that binds single key to gdb commands
14126(@pxref{TUI Single Key Mode}).
14127
c906108c
SS
14128@end table
14129
8e04817f 14130The following key bindings are handled only by the TUI mode:
5d161b24 14131
8e04817f
AC
14132@table @key
14133@kindex PgUp
14134@item PgUp
14135Scroll the active window one page up.
c906108c 14136
8e04817f
AC
14137@kindex PgDn
14138@item PgDn
14139Scroll the active window one page down.
c906108c 14140
8e04817f
AC
14141@kindex Up
14142@item Up
14143Scroll the active window one line up.
c906108c 14144
8e04817f
AC
14145@kindex Down
14146@item Down
14147Scroll the active window one line down.
c906108c 14148
8e04817f
AC
14149@kindex Left
14150@item Left
14151Scroll the active window one column left.
c906108c 14152
8e04817f
AC
14153@kindex Right
14154@item Right
14155Scroll the active window one column right.
c906108c 14156
8e04817f
AC
14157@kindex C-L
14158@item C-L
14159Refresh the screen.
c906108c 14160
8e04817f 14161@end table
c906108c 14162
8e04817f 14163In the TUI mode, the arrow keys are used by the active window
72ffddc9
SC
14164for scrolling. This means they are available for readline when the
14165active window is the command window. When the command window
14166does not have the focus, it is necessary to use other readline
14167key bindings such as @key{C-p}, @key{C-n}, @key{C-b} and @key{C-f}.
8e04817f 14168
7cf36c78
SC
14169@node TUI Single Key Mode
14170@section TUI Single Key Mode
14171@cindex TUI single key mode
14172
14173The TUI provides a @emph{SingleKey} mode in which it installs a particular
14174key binding in the readline keymaps to connect single keys to
b383017d 14175some gdb commands.
7cf36c78
SC
14176
14177@table @kbd
14178@kindex c @r{(SingleKey TUI key)}
14179@item c
14180continue
14181
14182@kindex d @r{(SingleKey TUI key)}
14183@item d
14184down
14185
14186@kindex f @r{(SingleKey TUI key)}
14187@item f
14188finish
14189
14190@kindex n @r{(SingleKey TUI key)}
14191@item n
14192next
14193
14194@kindex q @r{(SingleKey TUI key)}
14195@item q
14196exit the @emph{SingleKey} mode.
14197
14198@kindex r @r{(SingleKey TUI key)}
14199@item r
14200run
14201
14202@kindex s @r{(SingleKey TUI key)}
14203@item s
14204step
14205
14206@kindex u @r{(SingleKey TUI key)}
14207@item u
14208up
14209
14210@kindex v @r{(SingleKey TUI key)}
14211@item v
14212info locals
14213
14214@kindex w @r{(SingleKey TUI key)}
14215@item w
14216where
14217
14218@end table
14219
14220Other keys temporarily switch to the @value{GDBN} command prompt.
14221The key that was pressed is inserted in the editing buffer so that
14222it is possible to type most @value{GDBN} commands without interaction
14223with the TUI @emph{SingleKey} mode. Once the command is entered the TUI
14224@emph{SingleKey} mode is restored. The only way to permanently leave
14225this mode is by hitting @key{q} or @samp{@key{C-x} @key{s}}.
14226
14227
8e04817f
AC
14228@node TUI Commands
14229@section TUI specific commands
14230@cindex TUI commands
14231
14232The TUI has specific commands to control the text windows.
14233These commands are always available, that is they do not depend on
14234the current terminal mode in which @value{GDBN} runs. When @value{GDBN}
14235is in the standard mode, using these commands will automatically switch
14236in the TUI mode.
c906108c
SS
14237
14238@table @code
3d757584
SC
14239@item info win
14240@kindex info win
14241List and give the size of all displayed windows.
14242
8e04817f 14243@item layout next
4644b6e3 14244@kindex layout
8e04817f 14245Display the next layout.
2df3850c 14246
8e04817f 14247@item layout prev
8e04817f 14248Display the previous layout.
c906108c 14249
8e04817f 14250@item layout src
8e04817f 14251Display the source window only.
c906108c 14252
8e04817f 14253@item layout asm
8e04817f 14254Display the assembly window only.
c906108c 14255
8e04817f 14256@item layout split
8e04817f 14257Display the source and assembly window.
c906108c 14258
8e04817f 14259@item layout regs
8e04817f
AC
14260Display the register window together with the source or assembly window.
14261
14262@item focus next | prev | src | asm | regs | split
14263@kindex focus
14264Set the focus to the named window.
14265This command allows to change the active window so that scrolling keys
14266can be affected to another window.
c906108c 14267
8e04817f
AC
14268@item refresh
14269@kindex refresh
14270Refresh the screen. This is similar to using @key{C-L} key.
c906108c 14271
6a1b180d
SC
14272@item tui reg float
14273@kindex tui reg
14274Show the floating point registers in the register window.
14275
14276@item tui reg general
14277Show the general registers in the register window.
14278
14279@item tui reg next
14280Show the next register group. The list of register groups as well as
14281their order is target specific. The predefined register groups are the
14282following: @code{general}, @code{float}, @code{system}, @code{vector},
14283@code{all}, @code{save}, @code{restore}.
14284
14285@item tui reg system
14286Show the system registers in the register window.
14287
8e04817f
AC
14288@item update
14289@kindex update
14290Update the source window and the current execution point.
c906108c 14291
8e04817f
AC
14292@item winheight @var{name} +@var{count}
14293@itemx winheight @var{name} -@var{count}
14294@kindex winheight
14295Change the height of the window @var{name} by @var{count}
14296lines. Positive counts increase the height, while negative counts
14297decrease it.
2df3850c 14298
c906108c
SS
14299@end table
14300
8e04817f
AC
14301@node TUI Configuration
14302@section TUI configuration variables
14303@cindex TUI configuration variables
c906108c 14304
8e04817f
AC
14305The TUI has several configuration variables that control the
14306appearance of windows on the terminal.
c906108c 14307
8e04817f
AC
14308@table @code
14309@item set tui border-kind @var{kind}
14310@kindex set tui border-kind
14311Select the border appearance for the source, assembly and register windows.
14312The possible values are the following:
14313@table @code
14314@item space
14315Use a space character to draw the border.
c906108c 14316
8e04817f
AC
14317@item ascii
14318Use ascii characters + - and | to draw the border.
c906108c 14319
8e04817f
AC
14320@item acs
14321Use the Alternate Character Set to draw the border. The border is
14322drawn using character line graphics if the terminal supports them.
c78b4128 14323
8e04817f 14324@end table
c78b4128 14325
8e04817f
AC
14326@item set tui active-border-mode @var{mode}
14327@kindex set tui active-border-mode
14328Select the attributes to display the border of the active window.
14329The possible values are @code{normal}, @code{standout}, @code{reverse},
14330@code{half}, @code{half-standout}, @code{bold} and @code{bold-standout}.
c78b4128 14331
8e04817f
AC
14332@item set tui border-mode @var{mode}
14333@kindex set tui border-mode
14334Select the attributes to display the border of other windows.
14335The @var{mode} can be one of the following:
14336@table @code
14337@item normal
14338Use normal attributes to display the border.
c906108c 14339
8e04817f
AC
14340@item standout
14341Use standout mode.
c906108c 14342
8e04817f
AC
14343@item reverse
14344Use reverse video mode.
c906108c 14345
8e04817f
AC
14346@item half
14347Use half bright mode.
c906108c 14348
8e04817f
AC
14349@item half-standout
14350Use half bright and standout mode.
c906108c 14351
8e04817f
AC
14352@item bold
14353Use extra bright or bold mode.
c78b4128 14354
8e04817f
AC
14355@item bold-standout
14356Use extra bright or bold and standout mode.
c78b4128 14357
8e04817f 14358@end table
c78b4128 14359
8e04817f 14360@end table
c78b4128 14361
8e04817f
AC
14362@node Emacs
14363@chapter Using @value{GDBN} under @sc{gnu} Emacs
c78b4128 14364
8e04817f
AC
14365@cindex Emacs
14366@cindex @sc{gnu} Emacs
14367A special interface allows you to use @sc{gnu} Emacs to view (and
14368edit) the source files for the program you are debugging with
14369@value{GDBN}.
c906108c 14370
8e04817f
AC
14371To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
14372executable file you want to debug as an argument. This command starts
14373@value{GDBN} as a subprocess of Emacs, with input and output through a newly
14374created Emacs buffer.
14375@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c 14376
8e04817f
AC
14377Using @value{GDBN} under Emacs is just like using @value{GDBN} normally except for two
14378things:
c906108c 14379
8e04817f
AC
14380@itemize @bullet
14381@item
14382All ``terminal'' input and output goes through the Emacs buffer.
14383@end itemize
c906108c 14384
8e04817f
AC
14385This applies both to @value{GDBN} commands and their output, and to the input
14386and output done by the program you are debugging.
bf0184be 14387
8e04817f
AC
14388This is useful because it means that you can copy the text of previous
14389commands and input them again; you can even use parts of the output
14390in this way.
bf0184be 14391
8e04817f
AC
14392All the facilities of Emacs' Shell mode are available for interacting
14393with your program. In particular, you can send signals the usual
14394way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
14395stop.
bf0184be 14396
8e04817f 14397@itemize @bullet
bf0184be 14398@item
8e04817f
AC
14399@value{GDBN} displays source code through Emacs.
14400@end itemize
bf0184be 14401
8e04817f
AC
14402Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
14403source file for that frame and puts an arrow (@samp{=>}) at the
14404left margin of the current line. Emacs uses a separate buffer for
14405source display, and splits the screen to show both your @value{GDBN} session
14406and the source.
bf0184be 14407
8e04817f
AC
14408Explicit @value{GDBN} @code{list} or search commands still produce output as
14409usual, but you probably have no reason to use them from Emacs.
c906108c 14410
64fabec2
AC
14411If you specify an absolute file name when prompted for the @kbd{M-x
14412gdb} argument, then Emacs sets your current working directory to where
14413your program resides. If you only specify the file name, then Emacs
14414sets your current working directory to to the directory associated
14415with the previous buffer. In this case, @value{GDBN} may find your
14416program by searching your environment's @code{PATH} variable, but on
14417some operating systems it might not find the source. So, although the
14418@value{GDBN} input and output session proceeds normally, the auxiliary
14419buffer does not display the current source and line of execution.
14420
14421The initial working directory of @value{GDBN} is printed on the top
14422line of the @value{GDBN} I/O buffer and this serves as a default for
14423the commands that specify files for @value{GDBN} to operate
14424on. @xref{Files, ,Commands to specify files}.
14425
14426By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
14427need to call @value{GDBN} by a different name (for example, if you
14428keep several configurations around, with different names) you can
14429customize the Emacs variable @code{gud-gdb-command-name} to run the
14430one you want.
8e04817f
AC
14431
14432In the @value{GDBN} I/O buffer, you can use these special Emacs commands in
14433addition to the standard Shell mode commands:
c906108c 14434
8e04817f
AC
14435@table @kbd
14436@item C-h m
14437Describe the features of Emacs' @value{GDBN} Mode.
c906108c 14438
64fabec2 14439@item C-c C-s
8e04817f
AC
14440Execute to another source line, like the @value{GDBN} @code{step} command; also
14441update the display window to show the current file and location.
c906108c 14442
64fabec2 14443@item C-c C-n
8e04817f
AC
14444Execute to next source line in this function, skipping all function
14445calls, like the @value{GDBN} @code{next} command. Then update the display window
14446to show the current file and location.
c906108c 14447
64fabec2 14448@item C-c C-i
8e04817f
AC
14449Execute one instruction, like the @value{GDBN} @code{stepi} command; update
14450display window accordingly.
c906108c 14451
8e04817f
AC
14452@item C-c C-f
14453Execute until exit from the selected stack frame, like the @value{GDBN}
14454@code{finish} command.
c906108c 14455
64fabec2 14456@item C-c C-r
8e04817f
AC
14457Continue execution of your program, like the @value{GDBN} @code{continue}
14458command.
b433d00b 14459
64fabec2 14460@item C-c <
8e04817f
AC
14461Go up the number of frames indicated by the numeric argument
14462(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
14463like the @value{GDBN} @code{up} command.
b433d00b 14464
64fabec2 14465@item C-c >
8e04817f
AC
14466Go down the number of frames indicated by the numeric argument, like the
14467@value{GDBN} @code{down} command.
8e04817f 14468@end table
c906108c 14469
64fabec2 14470In any source file, the Emacs command @kbd{C-x SPC} (@code{gud-break})
8e04817f 14471tells @value{GDBN} to set a breakpoint on the source line point is on.
c906108c 14472
64fabec2
AC
14473If you type @kbd{M-x speedbar}, then Emacs displays a separate frame which
14474shows a backtrace when the @value{GDBN} I/O buffer is current. Move
14475point to any frame in the stack and type @key{RET} to make it become the
14476current frame and display the associated source in the source buffer.
14477Alternatively, click @kbd{Mouse-2} to make the selected frame become the
14478current one.
14479
8e04817f
AC
14480If you accidentally delete the source-display buffer, an easy way to get
14481it back is to type the command @code{f} in the @value{GDBN} buffer, to
14482request a frame display; when you run under Emacs, this recreates
14483the source buffer if necessary to show you the context of the current
14484frame.
c906108c 14485
8e04817f
AC
14486The source files displayed in Emacs are in ordinary Emacs buffers
14487which are visiting the source files in the usual way. You can edit
14488the files with these buffers if you wish; but keep in mind that @value{GDBN}
14489communicates with Emacs in terms of line numbers. If you add or
14490delete lines from the text, the line numbers that @value{GDBN} knows cease
14491to correspond properly with the code.
b383017d 14492
64fabec2
AC
14493The description given here is for GNU Emacs version 21.3 and a more
14494detailed description of its interaction with @value{GDBN} is given in
14495the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu} Emacs Manual}).
c906108c 14496
8e04817f
AC
14497@c The following dropped because Epoch is nonstandard. Reactivate
14498@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
14499@ignore
14500@kindex Emacs Epoch environment
14501@kindex Epoch
14502@kindex inspect
c906108c 14503
8e04817f
AC
14504Version 18 of @sc{gnu} Emacs has a built-in window system
14505called the @code{epoch}
14506environment. Users of this environment can use a new command,
14507@code{inspect} which performs identically to @code{print} except that
14508each value is printed in its own window.
14509@end ignore
c906108c 14510
922fbb7b
AC
14511
14512@node GDB/MI
14513@chapter The @sc{gdb/mi} Interface
14514
14515@unnumberedsec Function and Purpose
14516
14517@cindex @sc{gdb/mi}, its purpose
14518@sc{gdb/mi} is a line based machine oriented text interface to @value{GDBN}. It is
14519specifically intended to support the development of systems which use
14520the debugger as just one small component of a larger system.
14521
14522This chapter is a specification of the @sc{gdb/mi} interface. It is written
14523in the form of a reference manual.
14524
14525Note that @sc{gdb/mi} is still under construction, so some of the
14526features described below are incomplete and subject to change.
14527
14528@unnumberedsec Notation and Terminology
14529
14530@cindex notational conventions, for @sc{gdb/mi}
14531This chapter uses the following notation:
14532
14533@itemize @bullet
14534@item
14535@code{|} separates two alternatives.
14536
14537@item
14538@code{[ @var{something} ]} indicates that @var{something} is optional:
14539it may or may not be given.
14540
14541@item
14542@code{( @var{group} )*} means that @var{group} inside the parentheses
14543may repeat zero or more times.
14544
14545@item
14546@code{( @var{group} )+} means that @var{group} inside the parentheses
14547may repeat one or more times.
14548
14549@item
14550@code{"@var{string}"} means a literal @var{string}.
14551@end itemize
14552
14553@ignore
14554@heading Dependencies
14555@end ignore
14556
14557@heading Acknowledgments
14558
14559In alphabetic order: Andrew Cagney, Fernando Nasser, Stan Shebs and
14560Elena Zannoni.
14561
14562@menu
14563* GDB/MI Command Syntax::
14564* GDB/MI Compatibility with CLI::
14565* GDB/MI Output Records::
14566* GDB/MI Command Description Format::
14567* GDB/MI Breakpoint Table Commands::
14568* GDB/MI Data Manipulation::
14569* GDB/MI Program Control::
14570* GDB/MI Miscellaneous Commands::
14571@ignore
14572* GDB/MI Kod Commands::
14573* GDB/MI Memory Overlay Commands::
14574* GDB/MI Signal Handling Commands::
14575@end ignore
14576* GDB/MI Stack Manipulation::
14577* GDB/MI Symbol Query::
14578* GDB/MI Target Manipulation::
14579* GDB/MI Thread Commands::
14580* GDB/MI Tracepoint Commands::
14581* GDB/MI Variable Objects::
14582@end menu
14583
14584@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14585@node GDB/MI Command Syntax
14586@section @sc{gdb/mi} Command Syntax
14587
14588@menu
14589* GDB/MI Input Syntax::
14590* GDB/MI Output Syntax::
14591* GDB/MI Simple Examples::
14592@end menu
14593
14594@node GDB/MI Input Syntax
14595@subsection @sc{gdb/mi} Input Syntax
14596
14597@cindex input syntax for @sc{gdb/mi}
14598@cindex @sc{gdb/mi}, input syntax
14599@table @code
14600@item @var{command} @expansion{}
14601@code{@var{cli-command} | @var{mi-command}}
14602
14603@item @var{cli-command} @expansion{}
14604@code{[ @var{token} ] @var{cli-command} @var{nl}}, where
14605@var{cli-command} is any existing @value{GDBN} CLI command.
14606
14607@item @var{mi-command} @expansion{}
14608@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
14609@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
14610
14611@item @var{token} @expansion{}
14612"any sequence of digits"
14613
14614@item @var{option} @expansion{}
14615@code{"-" @var{parameter} [ " " @var{parameter} ]}
14616
14617@item @var{parameter} @expansion{}
14618@code{@var{non-blank-sequence} | @var{c-string}}
14619
14620@item @var{operation} @expansion{}
14621@emph{any of the operations described in this chapter}
14622
14623@item @var{non-blank-sequence} @expansion{}
14624@emph{anything, provided it doesn't contain special characters such as
14625"-", @var{nl}, """ and of course " "}
14626
14627@item @var{c-string} @expansion{}
14628@code{""" @var{seven-bit-iso-c-string-content} """}
14629
14630@item @var{nl} @expansion{}
14631@code{CR | CR-LF}
14632@end table
14633
14634@noindent
14635Notes:
14636
14637@itemize @bullet
14638@item
14639The CLI commands are still handled by the @sc{mi} interpreter; their
14640output is described below.
14641
14642@item
14643The @code{@var{token}}, when present, is passed back when the command
14644finishes.
14645
14646@item
14647Some @sc{mi} commands accept optional arguments as part of the parameter
14648list. Each option is identified by a leading @samp{-} (dash) and may be
14649followed by an optional argument parameter. Options occur first in the
14650parameter list and can be delimited from normal parameters using
14651@samp{--} (this is useful when some parameters begin with a dash).
14652@end itemize
14653
14654Pragmatics:
14655
14656@itemize @bullet
14657@item
14658We want easy access to the existing CLI syntax (for debugging).
14659
14660@item
14661We want it to be easy to spot a @sc{mi} operation.
14662@end itemize
14663
14664@node GDB/MI Output Syntax
14665@subsection @sc{gdb/mi} Output Syntax
14666
14667@cindex output syntax of @sc{gdb/mi}
14668@cindex @sc{gdb/mi}, output syntax
14669The output from @sc{gdb/mi} consists of zero or more out-of-band records
14670followed, optionally, by a single result record. This result record
14671is for the most recent command. The sequence of output records is
14672terminated by @samp{(@value{GDBP})}.
14673
14674If an input command was prefixed with a @code{@var{token}} then the
14675corresponding output for that command will also be prefixed by that same
14676@var{token}.
14677
14678@table @code
14679@item @var{output} @expansion{}
f7dc1244 14680@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(@value{GDBP})" @var{nl}}
922fbb7b
AC
14681
14682@item @var{result-record} @expansion{}
14683@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
14684
14685@item @var{out-of-band-record} @expansion{}
14686@code{@var{async-record} | @var{stream-record}}
14687
14688@item @var{async-record} @expansion{}
14689@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
14690
14691@item @var{exec-async-output} @expansion{}
14692@code{[ @var{token} ] "*" @var{async-output}}
14693
14694@item @var{status-async-output} @expansion{}
14695@code{[ @var{token} ] "+" @var{async-output}}
14696
14697@item @var{notify-async-output} @expansion{}
14698@code{[ @var{token} ] "=" @var{async-output}}
14699
14700@item @var{async-output} @expansion{}
14701@code{@var{async-class} ( "," @var{result} )* @var{nl}}
14702
14703@item @var{result-class} @expansion{}
14704@code{"done" | "running" | "connected" | "error" | "exit"}
14705
14706@item @var{async-class} @expansion{}
14707@code{"stopped" | @var{others}} (where @var{others} will be added
14708depending on the needs---this is still in development).
14709
14710@item @var{result} @expansion{}
14711@code{ @var{variable} "=" @var{value}}
14712
14713@item @var{variable} @expansion{}
14714@code{ @var{string} }
14715
14716@item @var{value} @expansion{}
14717@code{ @var{const} | @var{tuple} | @var{list} }
14718
14719@item @var{const} @expansion{}
14720@code{@var{c-string}}
14721
14722@item @var{tuple} @expansion{}
14723@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
14724
14725@item @var{list} @expansion{}
14726@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
14727@var{result} ( "," @var{result} )* "]" }
14728
14729@item @var{stream-record} @expansion{}
14730@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
14731
14732@item @var{console-stream-output} @expansion{}
14733@code{"~" @var{c-string}}
14734
14735@item @var{target-stream-output} @expansion{}
14736@code{"@@" @var{c-string}}
14737
14738@item @var{log-stream-output} @expansion{}
14739@code{"&" @var{c-string}}
14740
14741@item @var{nl} @expansion{}
14742@code{CR | CR-LF}
14743
14744@item @var{token} @expansion{}
14745@emph{any sequence of digits}.
14746@end table
14747
14748@noindent
14749Notes:
14750
14751@itemize @bullet
14752@item
14753All output sequences end in a single line containing a period.
14754
14755@item
14756The @code{@var{token}} is from the corresponding request. If an execution
14757command is interrupted by the @samp{-exec-interrupt} command, the
14758@var{token} associated with the @samp{*stopped} message is the one of the
14759original execution command, not the one of the interrupt command.
14760
14761@item
14762@cindex status output in @sc{gdb/mi}
14763@var{status-async-output} contains on-going status information about the
14764progress of a slow operation. It can be discarded. All status output is
14765prefixed by @samp{+}.
14766
14767@item
14768@cindex async output in @sc{gdb/mi}
14769@var{exec-async-output} contains asynchronous state change on the target
14770(stopped, started, disappeared). All async output is prefixed by
14771@samp{*}.
14772
14773@item
14774@cindex notify output in @sc{gdb/mi}
14775@var{notify-async-output} contains supplementary information that the
14776client should handle (e.g., a new breakpoint information). All notify
14777output is prefixed by @samp{=}.
14778
14779@item
14780@cindex console output in @sc{gdb/mi}
14781@var{console-stream-output} is output that should be displayed as is in the
14782console. It is the textual response to a CLI command. All the console
14783output is prefixed by @samp{~}.
14784
14785@item
14786@cindex target output in @sc{gdb/mi}
14787@var{target-stream-output} is the output produced by the target program.
14788All the target output is prefixed by @samp{@@}.
14789
14790@item
14791@cindex log output in @sc{gdb/mi}
14792@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
14793instance messages that should be displayed as part of an error log. All
14794the log output is prefixed by @samp{&}.
14795
14796@item
14797@cindex list output in @sc{gdb/mi}
14798New @sc{gdb/mi} commands should only output @var{lists} containing
14799@var{values}.
14800
14801
14802@end itemize
14803
14804@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
14805details about the various output records.
14806
14807@node GDB/MI Simple Examples
14808@subsection Simple Examples of @sc{gdb/mi} Interaction
14809@cindex @sc{gdb/mi}, simple examples
14810
14811This subsection presents several simple examples of interaction using
14812the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
14813following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
14814the output received from @sc{gdb/mi}.
14815
14816@subsubheading Target Stop
14817@c Ummm... There is no "-stop" command. This assumes async, no?
14818Here's an example of stopping the inferior process:
14819
14820@smallexample
14821-> -stop
14822<- (@value{GDBP})
14823@end smallexample
14824
14825@noindent
14826and later:
14827
14828@smallexample
14829<- *stop,reason="stop",address="0x123",source="a.c:123"
14830<- (@value{GDBP})
14831@end smallexample
14832
14833@subsubheading Simple CLI Command
14834
14835Here's an example of a simple CLI command being passed through
14836@sc{gdb/mi} and on to the CLI.
14837
14838@smallexample
14839-> print 1+2
14840<- &"print 1+2\n"
14841<- ~"$1 = 3\n"
14842<- ^done
14843<- (@value{GDBP})
14844@end smallexample
14845
14846@subsubheading Command With Side Effects
14847
14848@smallexample
14849-> -symbol-file xyz.exe
14850<- *breakpoint,nr="3",address="0x123",source="a.c:123"
14851<- (@value{GDBP})
14852@end smallexample
14853
14854@subsubheading A Bad Command
14855
14856Here's what happens if you pass a non-existent command:
14857
14858@smallexample
14859-> -rubbish
14860<- ^error,msg="Undefined MI command: rubbish"
14861<- (@value{GDBP})
14862@end smallexample
14863
14864@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14865@node GDB/MI Compatibility with CLI
14866@section @sc{gdb/mi} Compatibility with CLI
14867
14868@cindex compatibility, @sc{gdb/mi} and CLI
14869@cindex @sc{gdb/mi}, compatibility with CLI
14870To help users familiar with @value{GDBN}'s existing CLI interface, @sc{gdb/mi}
14871accepts existing CLI commands. As specified by the syntax, such
14872commands can be directly entered into the @sc{gdb/mi} interface and @value{GDBN} will
14873respond.
14874
14875This mechanism is provided as an aid to developers of @sc{gdb/mi}
14876clients and not as a reliable interface into the CLI. Since the command
14877is being interpreteted in an environment that assumes @sc{gdb/mi}
14878behaviour, the exact output of such commands is likely to end up being
14879an un-supported hybrid of @sc{gdb/mi} and CLI output.
14880
14881@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14882@node GDB/MI Output Records
14883@section @sc{gdb/mi} Output Records
14884
14885@menu
14886* GDB/MI Result Records::
14887* GDB/MI Stream Records::
14888* GDB/MI Out-of-band Records::
14889@end menu
14890
14891@node GDB/MI Result Records
14892@subsection @sc{gdb/mi} Result Records
14893
14894@cindex result records in @sc{gdb/mi}
14895@cindex @sc{gdb/mi}, result records
14896In addition to a number of out-of-band notifications, the response to a
14897@sc{gdb/mi} command includes one of the following result indications:
14898
14899@table @code
14900@findex ^done
14901@item "^done" [ "," @var{results} ]
14902The synchronous operation was successful, @code{@var{results}} are the return
14903values.
14904
14905@item "^running"
14906@findex ^running
14907@c Is this one correct? Should it be an out-of-band notification?
14908The asynchronous operation was successfully started. The target is
14909running.
14910
14911@item "^error" "," @var{c-string}
14912@findex ^error
14913The operation failed. The @code{@var{c-string}} contains the corresponding
14914error message.
14915@end table
14916
14917@node GDB/MI Stream Records
14918@subsection @sc{gdb/mi} Stream Records
14919
14920@cindex @sc{gdb/mi}, stream records
14921@cindex stream records in @sc{gdb/mi}
14922@value{GDBN} internally maintains a number of output streams: the console, the
14923target, and the log. The output intended for each of these streams is
14924funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
14925
14926Each stream record begins with a unique @dfn{prefix character} which
14927identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
14928Syntax}). In addition to the prefix, each stream record contains a
14929@code{@var{string-output}}. This is either raw text (with an implicit new
14930line) or a quoted C string (which does not contain an implicit newline).
14931
14932@table @code
14933@item "~" @var{string-output}
14934The console output stream contains text that should be displayed in the
14935CLI console window. It contains the textual responses to CLI commands.
14936
14937@item "@@" @var{string-output}
14938The target output stream contains any textual output from the running
14939target.
14940
14941@item "&" @var{string-output}
14942The log stream contains debugging messages being produced by @value{GDBN}'s
14943internals.
14944@end table
14945
14946@node GDB/MI Out-of-band Records
14947@subsection @sc{gdb/mi} Out-of-band Records
14948
14949@cindex out-of-band records in @sc{gdb/mi}
14950@cindex @sc{gdb/mi}, out-of-band records
14951@dfn{Out-of-band} records are used to notify the @sc{gdb/mi} client of
14952additional changes that have occurred. Those changes can either be a
14953consequence of @sc{gdb/mi} (e.g., a breakpoint modified) or a result of
14954target activity (e.g., target stopped).
14955
14956The following is a preliminary list of possible out-of-band records.
14957
14958@table @code
14959@item "*" "stop"
14960@end table
14961
14962
14963@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14964@node GDB/MI Command Description Format
14965@section @sc{gdb/mi} Command Description Format
14966
14967The remaining sections describe blocks of commands. Each block of
14968commands is laid out in a fashion similar to this section.
14969
14970Note the the line breaks shown in the examples are here only for
14971readability. They don't appear in the real output.
14972Also note that the commands with a non-available example (N.A.@:) are
14973not yet implemented.
14974
14975@subheading Motivation
14976
14977The motivation for this collection of commands.
14978
14979@subheading Introduction
14980
14981A brief introduction to this collection of commands as a whole.
14982
14983@subheading Commands
14984
14985For each command in the block, the following is described:
14986
14987@subsubheading Synopsis
14988
14989@smallexample
14990 -command @var{args}@dots{}
14991@end smallexample
14992
14993@subsubheading @value{GDBN} Command
14994
14995The corresponding @value{GDBN} CLI command.
14996
14997@subsubheading Result
14998
14999@subsubheading Out-of-band
15000
15001@subsubheading Notes
15002
15003@subsubheading Example
15004
15005
15006@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15007@node GDB/MI Breakpoint Table Commands
15008@section @sc{gdb/mi} Breakpoint table commands
15009
15010@cindex breakpoint commands for @sc{gdb/mi}
15011@cindex @sc{gdb/mi}, breakpoint commands
15012This section documents @sc{gdb/mi} commands for manipulating
15013breakpoints.
15014
15015@subheading The @code{-break-after} Command
15016@findex -break-after
15017
15018@subsubheading Synopsis
15019
15020@smallexample
15021 -break-after @var{number} @var{count}
15022@end smallexample
15023
15024The breakpoint number @var{number} is not in effect until it has been
15025hit @var{count} times. To see how this is reflected in the output of
15026the @samp{-break-list} command, see the description of the
15027@samp{-break-list} command below.
15028
15029@subsubheading @value{GDBN} Command
15030
15031The corresponding @value{GDBN} command is @samp{ignore}.
15032
15033@subsubheading Example
15034
15035@smallexample
15036(@value{GDBP})
15037-break-insert main
15038^done,bkpt=@{number="1",addr="0x000100d0",file="hello.c",line="5"@}
15039(@value{GDBP})
15040-break-after 1 3
15041~
15042^done
15043(@value{GDBP})
15044-break-list
15045^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
15046hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15047@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15048@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15049@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15050@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15051@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15052body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
15053addr="0x000100d0",func="main",file="hello.c",line="5",times="0",
15054ignore="3"@}]@}
15055(@value{GDBP})
15056@end smallexample
15057
15058@ignore
15059@subheading The @code{-break-catch} Command
15060@findex -break-catch
15061
15062@subheading The @code{-break-commands} Command
15063@findex -break-commands
15064@end ignore
15065
15066
15067@subheading The @code{-break-condition} Command
15068@findex -break-condition
15069
15070@subsubheading Synopsis
15071
15072@smallexample
15073 -break-condition @var{number} @var{expr}
15074@end smallexample
15075
15076Breakpoint @var{number} will stop the program only if the condition in
15077@var{expr} is true. The condition becomes part of the
15078@samp{-break-list} output (see the description of the @samp{-break-list}
15079command below).
15080
15081@subsubheading @value{GDBN} Command
15082
15083The corresponding @value{GDBN} command is @samp{condition}.
15084
15085@subsubheading Example
15086
15087@smallexample
15088(@value{GDBP})
15089-break-condition 1 1
15090^done
15091(@value{GDBP})
15092-break-list
15093^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
15094hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15095@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15096@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15097@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15098@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15099@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15100body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
15101addr="0x000100d0",func="main",file="hello.c",line="5",cond="1",
15102times="0",ignore="3"@}]@}
15103(@value{GDBP})
15104@end smallexample
15105
15106@subheading The @code{-break-delete} Command
15107@findex -break-delete
15108
15109@subsubheading Synopsis
15110
15111@smallexample
15112 -break-delete ( @var{breakpoint} )+
15113@end smallexample
15114
15115Delete the breakpoint(s) whose number(s) are specified in the argument
15116list. This is obviously reflected in the breakpoint list.
15117
15118@subsubheading @value{GDBN} command
15119
15120The corresponding @value{GDBN} command is @samp{delete}.
15121
15122@subsubheading Example
15123
15124@smallexample
15125(@value{GDBP})
15126-break-delete 1
15127^done
15128(@value{GDBP})
15129-break-list
15130^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
15131hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15132@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15133@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15134@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15135@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15136@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15137body=[]@}
15138(@value{GDBP})
15139@end smallexample
15140
15141@subheading The @code{-break-disable} Command
15142@findex -break-disable
15143
15144@subsubheading Synopsis
15145
15146@smallexample
15147 -break-disable ( @var{breakpoint} )+
15148@end smallexample
15149
15150Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
15151break list is now set to @samp{n} for the named @var{breakpoint}(s).
15152
15153@subsubheading @value{GDBN} Command
15154
15155The corresponding @value{GDBN} command is @samp{disable}.
15156
15157@subsubheading Example
15158
15159@smallexample
15160(@value{GDBP})
15161-break-disable 2
15162^done
15163(@value{GDBP})
15164-break-list
15165^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
15166hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15167@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15168@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15169@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15170@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15171@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15172body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
15173addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
15174(@value{GDBP})
15175@end smallexample
15176
15177@subheading The @code{-break-enable} Command
15178@findex -break-enable
15179
15180@subsubheading Synopsis
15181
15182@smallexample
15183 -break-enable ( @var{breakpoint} )+
15184@end smallexample
15185
15186Enable (previously disabled) @var{breakpoint}(s).
15187
15188@subsubheading @value{GDBN} Command
15189
15190The corresponding @value{GDBN} command is @samp{enable}.
15191
15192@subsubheading Example
15193
15194@smallexample
15195(@value{GDBP})
15196-break-enable 2
15197^done
15198(@value{GDBP})
15199-break-list
15200^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
15201hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15202@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15203@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15204@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15205@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15206@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15207body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
15208addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@}]@}
15209(@value{GDBP})
15210@end smallexample
15211
15212@subheading The @code{-break-info} Command
15213@findex -break-info
15214
15215@subsubheading Synopsis
15216
15217@smallexample
15218 -break-info @var{breakpoint}
15219@end smallexample
15220
15221@c REDUNDANT???
15222Get information about a single breakpoint.
15223
15224@subsubheading @value{GDBN} command
15225
15226The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
15227
15228@subsubheading Example
15229N.A.
15230
15231@subheading The @code{-break-insert} Command
15232@findex -break-insert
15233
15234@subsubheading Synopsis
15235
15236@smallexample
15237 -break-insert [ -t ] [ -h ] [ -r ]
15238 [ -c @var{condition} ] [ -i @var{ignore-count} ]
15239 [ -p @var{thread} ] [ @var{line} | @var{addr} ]
15240@end smallexample
15241
15242@noindent
15243If specified, @var{line}, can be one of:
15244
15245@itemize @bullet
15246@item function
15247@c @item +offset
15248@c @item -offset
15249@c @item linenum
15250@item filename:linenum
15251@item filename:function
15252@item *address
15253@end itemize
15254
15255The possible optional parameters of this command are:
15256
15257@table @samp
15258@item -t
15259Insert a tempoary breakpoint.
15260@item -h
15261Insert a hardware breakpoint.
15262@item -c @var{condition}
15263Make the breakpoint conditional on @var{condition}.
15264@item -i @var{ignore-count}
15265Initialize the @var{ignore-count}.
15266@item -r
15267Insert a regular breakpoint in all the functions whose names match the
15268given regular expression. Other flags are not applicable to regular
15269expresson.
15270@end table
15271
15272@subsubheading Result
15273
15274The result is in the form:
15275
15276@smallexample
15277 ^done,bkptno="@var{number}",func="@var{funcname}",
15278 file="@var{filename}",line="@var{lineno}"
15279@end smallexample
15280
15281@noindent
15282where @var{number} is the @value{GDBN} number for this breakpoint, @var{funcname}
15283is the name of the function where the breakpoint was inserted,
15284@var{filename} is the name of the source file which contains this
15285function, and @var{lineno} is the source line number within that file.
15286
15287Note: this format is open to change.
15288@c An out-of-band breakpoint instead of part of the result?
15289
15290@subsubheading @value{GDBN} Command
15291
15292The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
15293@samp{hbreak}, @samp{thbreak}, and @samp{rbreak}.
15294
15295@subsubheading Example
15296
15297@smallexample
15298(@value{GDBP})
15299-break-insert main
15300^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
15301(@value{GDBP})
15302-break-insert -t foo
15303^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",line="11"@}
15304(@value{GDBP})
15305-break-list
15306^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
15307hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15308@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15309@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15310@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15311@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15312@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15313body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
15314addr="0x0001072c", func="main",file="recursive2.c",line="4",times="0"@},
15315bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
15316addr="0x00010774",func="foo",file="recursive2.c",line="11",times="0"@}]@}
15317(@value{GDBP})
15318-break-insert -r foo.*
15319~int foo(int, int);
15320^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c",line="11"@}
15321(@value{GDBP})
15322@end smallexample
15323
15324@subheading The @code{-break-list} Command
15325@findex -break-list
15326
15327@subsubheading Synopsis
15328
15329@smallexample
15330 -break-list
15331@end smallexample
15332
15333Displays the list of inserted breakpoints, showing the following fields:
15334
15335@table @samp
15336@item Number
15337number of the breakpoint
15338@item Type
15339type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
15340@item Disposition
15341should the breakpoint be deleted or disabled when it is hit: @samp{keep}
15342or @samp{nokeep}
15343@item Enabled
15344is the breakpoint enabled or no: @samp{y} or @samp{n}
15345@item Address
15346memory location at which the breakpoint is set
15347@item What
15348logical location of the breakpoint, expressed by function name, file
15349name, line number
15350@item Times
15351number of times the breakpoint has been hit
15352@end table
15353
15354If there are no breakpoints or watchpoints, the @code{BreakpointTable}
15355@code{body} field is an empty list.
15356
15357@subsubheading @value{GDBN} Command
15358
15359The corresponding @value{GDBN} command is @samp{info break}.
15360
15361@subsubheading Example
15362
15363@smallexample
15364(@value{GDBP})
15365-break-list
15366^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
15367hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15368@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15369@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15370@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15371@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15372@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15373body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
15374addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
15375bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
15376addr="0x00010114",func="foo",file="hello.c",line="13",times="0"@}]@}
15377(@value{GDBP})
15378@end smallexample
15379
15380Here's an example of the result when there are no breakpoints:
15381
15382@smallexample
15383(@value{GDBP})
15384-break-list
15385^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
15386hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15387@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15388@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15389@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15390@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15391@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15392body=[]@}
15393(@value{GDBP})
15394@end smallexample
15395
15396@subheading The @code{-break-watch} Command
15397@findex -break-watch
15398
15399@subsubheading Synopsis
15400
15401@smallexample
15402 -break-watch [ -a | -r ]
15403@end smallexample
15404
15405Create a watchpoint. With the @samp{-a} option it will create an
15406@dfn{access} watchpoint, i.e. a watchpoint that triggers either on a
15407read from or on a write to the memory location. With the @samp{-r}
15408option, the watchpoint created is a @dfn{read} watchpoint, i.e. it will
15409trigger only when the memory location is accessed for reading. Without
15410either of the options, the watchpoint created is a regular watchpoint,
15411i.e. it will trigger when the memory location is accessed for writing.
15412@xref{Set Watchpoints, , Setting watchpoints}.
15413
15414Note that @samp{-break-list} will report a single list of watchpoints and
15415breakpoints inserted.
15416
15417@subsubheading @value{GDBN} Command
15418
15419The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
15420@samp{rwatch}.
15421
15422@subsubheading Example
15423
15424Setting a watchpoint on a variable in the @code{main} function:
15425
15426@smallexample
15427(@value{GDBP})
15428-break-watch x
15429^done,wpt=@{number="2",exp="x"@}
15430(@value{GDBP})
15431-exec-continue
15432^running
15433^done,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
15434value=@{old="-268439212",new="55"@},
15435frame=@{func="main",args=[],file="recursive2.c",line="5"@}
15436(@value{GDBP})
15437@end smallexample
15438
15439Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
15440the program execution twice: first for the variable changing value, then
15441for the watchpoint going out of scope.
15442
15443@smallexample
15444(@value{GDBP})
15445-break-watch C
15446^done,wpt=@{number="5",exp="C"@}
15447(@value{GDBP})
15448-exec-continue
15449^running
15450^done,reason="watchpoint-trigger",
15451wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
15452frame=@{func="callee4",args=[],
15453file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
15454(@value{GDBP})
15455-exec-continue
15456^running
15457^done,reason="watchpoint-scope",wpnum="5",
15458frame=@{func="callee3",args=[@{name="strarg",
15459value="0x11940 \"A string argument.\""@}],
15460file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
15461(@value{GDBP})
15462@end smallexample
15463
15464Listing breakpoints and watchpoints, at different points in the program
15465execution. Note that once the watchpoint goes out of scope, it is
15466deleted.
15467
15468@smallexample
15469(@value{GDBP})
15470-break-watch C
15471^done,wpt=@{number="2",exp="C"@}
15472(@value{GDBP})
15473-break-list
15474^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
15475hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15476@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15477@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15478@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15479@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15480@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15481body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
15482addr="0x00010734",func="callee4",
15483file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
15484bkpt=@{number="2",type="watchpoint",disp="keep",
15485enabled="y",addr="",what="C",times="0"@}]@}
15486(@value{GDBP})
15487-exec-continue
15488^running
15489^done,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
15490value=@{old="-276895068",new="3"@},
15491frame=@{func="callee4",args=[],
15492file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
15493(@value{GDBP})
15494-break-list
15495^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
15496hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15497@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15498@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15499@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15500@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15501@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15502body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
15503addr="0x00010734",func="callee4",
15504file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
15505bkpt=@{number="2",type="watchpoint",disp="keep",
15506enabled="y",addr="",what="C",times="-5"@}]@}
15507(@value{GDBP})
15508-exec-continue
15509^running
15510^done,reason="watchpoint-scope",wpnum="2",
15511frame=@{func="callee3",args=[@{name="strarg",
15512value="0x11940 \"A string argument.\""@}],
15513file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
15514(@value{GDBP})
15515-break-list
15516^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
15517hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
15518@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
15519@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
15520@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
15521@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
15522@{width="40",alignment="2",col_name="what",colhdr="What"@}],
15523body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
15524addr="0x00010734",func="callee4",
15525file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@}]@}
15526(@value{GDBP})
15527@end smallexample
15528
15529@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15530@node GDB/MI Data Manipulation
15531@section @sc{gdb/mi} Data Manipulation
15532
15533@cindex data manipulation, in @sc{gdb/mi}
15534@cindex @sc{gdb/mi}, data manipulation
15535This section describes the @sc{gdb/mi} commands that manipulate data:
15536examine memory and registers, evaluate expressions, etc.
15537
15538@c REMOVED FROM THE INTERFACE.
15539@c @subheading -data-assign
15540@c Change the value of a program variable. Plenty of side effects.
15541@c @subsubheading GDB command
15542@c set variable
15543@c @subsubheading Example
15544@c N.A.
15545
15546@subheading The @code{-data-disassemble} Command
15547@findex -data-disassemble
15548
15549@subsubheading Synopsis
15550
15551@smallexample
15552 -data-disassemble
15553 [ -s @var{start-addr} -e @var{end-addr} ]
15554 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
15555 -- @var{mode}
15556@end smallexample
15557
15558@noindent
15559Where:
15560
15561@table @samp
15562@item @var{start-addr}
15563is the beginning address (or @code{$pc})
15564@item @var{end-addr}
15565is the end address
15566@item @var{filename}
15567is the name of the file to disassemble
15568@item @var{linenum}
15569is the line number to disassemble around
15570@item @var{lines}
15571is the the number of disassembly lines to be produced. If it is -1,
15572the whole function will be disassembled, in case no @var{end-addr} is
15573specified. If @var{end-addr} is specified as a non-zero value, and
15574@var{lines} is lower than the number of disassembly lines between
15575@var{start-addr} and @var{end-addr}, only @var{lines} lines are
15576displayed; if @var{lines} is higher than the number of lines between
15577@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
15578are displayed.
15579@item @var{mode}
15580is either 0 (meaning only disassembly) or 1 (meaning mixed source and
15581disassembly).
15582@end table
15583
15584@subsubheading Result
15585
15586The output for each instruction is composed of four fields:
15587
15588@itemize @bullet
15589@item Address
15590@item Func-name
15591@item Offset
15592@item Instruction
15593@end itemize
15594
15595Note that whatever included in the instruction field, is not manipulated
15596directely by @sc{gdb/mi}, i.e. it is not possible to adjust its format.
15597
15598@subsubheading @value{GDBN} Command
15599
15600There's no direct mapping from this command to the CLI.
15601
15602@subsubheading Example
15603
15604Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
15605
15606@smallexample
15607(@value{GDBP})
15608-data-disassemble -s $pc -e "$pc + 20" -- 0
15609^done,
15610asm_insns=[
15611@{address="0x000107c0",func-name="main",offset="4",
15612inst="mov 2, %o0"@},
15613@{address="0x000107c4",func-name="main",offset="8",
15614inst="sethi %hi(0x11800), %o2"@},
15615@{address="0x000107c8",func-name="main",offset="12",
15616inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
15617@{address="0x000107cc",func-name="main",offset="16",
15618inst="sethi %hi(0x11800), %o2"@},
15619@{address="0x000107d0",func-name="main",offset="20",
15620inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
15621(@value{GDBP})
15622@end smallexample
15623
15624Disassemble the whole @code{main} function. Line 32 is part of
15625@code{main}.
15626
15627@smallexample
15628-data-disassemble -f basics.c -l 32 -- 0
15629^done,asm_insns=[
15630@{address="0x000107bc",func-name="main",offset="0",
15631inst="save %sp, -112, %sp"@},
15632@{address="0x000107c0",func-name="main",offset="4",
15633inst="mov 2, %o0"@},
15634@{address="0x000107c4",func-name="main",offset="8",
15635inst="sethi %hi(0x11800), %o2"@},
15636[@dots{}]
15637@{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
15638@{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
15639(@value{GDBP})
15640@end smallexample
15641
15642Disassemble 3 instructions from the start of @code{main}:
15643
15644@smallexample
15645(@value{GDBP})
15646-data-disassemble -f basics.c -l 32 -n 3 -- 0
15647^done,asm_insns=[
15648@{address="0x000107bc",func-name="main",offset="0",
15649inst="save %sp, -112, %sp"@},
15650@{address="0x000107c0",func-name="main",offset="4",
15651inst="mov 2, %o0"@},
15652@{address="0x000107c4",func-name="main",offset="8",
15653inst="sethi %hi(0x11800), %o2"@}]
15654(@value{GDBP})
15655@end smallexample
15656
15657Disassemble 3 instructions from the start of @code{main} in mixed mode:
15658
15659@smallexample
15660(@value{GDBP})
15661-data-disassemble -f basics.c -l 32 -n 3 -- 1
15662^done,asm_insns=[
15663src_and_asm_line=@{line="31",
15664file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
15665 testsuite/gdb.mi/basics.c",line_asm_insn=[
15666@{address="0x000107bc",func-name="main",offset="0",
15667inst="save %sp, -112, %sp"@}]@},
15668src_and_asm_line=@{line="32",
15669file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
15670 testsuite/gdb.mi/basics.c",line_asm_insn=[
15671@{address="0x000107c0",func-name="main",offset="4",
15672inst="mov 2, %o0"@},
15673@{address="0x000107c4",func-name="main",offset="8",
15674inst="sethi %hi(0x11800), %o2"@}]@}]
15675(@value{GDBP})
15676@end smallexample
15677
15678
15679@subheading The @code{-data-evaluate-expression} Command
15680@findex -data-evaluate-expression
15681
15682@subsubheading Synopsis
15683
15684@smallexample
15685 -data-evaluate-expression @var{expr}
15686@end smallexample
15687
15688Evaluate @var{expr} as an expression. The expression could contain an
15689inferior function call. The function call will execute synchronously.
15690If the expression contains spaces, it must be enclosed in double quotes.
15691
15692@subsubheading @value{GDBN} Command
15693
15694The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
15695@samp{call}. In @code{gdbtk} only, there's a corresponding
15696@samp{gdb_eval} command.
15697
15698@subsubheading Example
15699
15700In the following example, the numbers that precede the commands are the
15701@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
15702Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
15703output.
15704
15705@smallexample
15706211-data-evaluate-expression A
15707211^done,value="1"
15708(@value{GDBP})
15709311-data-evaluate-expression &A
15710311^done,value="0xefffeb7c"
15711(@value{GDBP})
15712411-data-evaluate-expression A+3
15713411^done,value="4"
15714(@value{GDBP})
15715511-data-evaluate-expression "A + 3"
15716511^done,value="4"
15717(@value{GDBP})
15718@end smallexample
15719
15720
15721@subheading The @code{-data-list-changed-registers} Command
15722@findex -data-list-changed-registers
15723
15724@subsubheading Synopsis
15725
15726@smallexample
15727 -data-list-changed-registers
15728@end smallexample
15729
15730Display a list of the registers that have changed.
15731
15732@subsubheading @value{GDBN} Command
15733
15734@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
15735has the corresponding command @samp{gdb_changed_register_list}.
15736
15737@subsubheading Example
15738
15739On a PPC MBX board:
15740
15741@smallexample
15742(@value{GDBP})
15743-exec-continue
15744^running
15745
15746(@value{GDBP})
15747*stopped,reason="breakpoint-hit",bkptno="1",frame=@{func="main",
15748args=[],file="try.c",line="5"@}
15749(@value{GDBP})
15750-data-list-changed-registers
15751^done,changed-registers=["0","1","2","4","5","6","7","8","9",
15752"10","11","13","14","15","16","17","18","19","20","21","22","23",
15753"24","25","26","27","28","30","31","64","65","66","67","69"]
15754(@value{GDBP})
15755@end smallexample
15756
15757
15758@subheading The @code{-data-list-register-names} Command
15759@findex -data-list-register-names
15760
15761@subsubheading Synopsis
15762
15763@smallexample
15764 -data-list-register-names [ ( @var{regno} )+ ]
15765@end smallexample
15766
15767Show a list of register names for the current target. If no arguments
15768are given, it shows a list of the names of all the registers. If
15769integer numbers are given as arguments, it will print a list of the
15770names of the registers corresponding to the arguments. To ensure
15771consistency between a register name and its number, the output list may
15772include empty register names.
15773
15774@subsubheading @value{GDBN} Command
15775
15776@value{GDBN} does not have a command which corresponds to
15777@samp{-data-list-register-names}. In @code{gdbtk} there is a
15778corresponding command @samp{gdb_regnames}.
15779
15780@subsubheading Example
15781
15782For the PPC MBX board:
15783@smallexample
15784(@value{GDBP})
15785-data-list-register-names
15786^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
15787"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
15788"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
15789"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
15790"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
15791"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
15792"", "pc","ps","cr","lr","ctr","xer"]
15793(@value{GDBP})
15794-data-list-register-names 1 2 3
15795^done,register-names=["r1","r2","r3"]
15796(@value{GDBP})
15797@end smallexample
15798
15799@subheading The @code{-data-list-register-values} Command
15800@findex -data-list-register-values
15801
15802@subsubheading Synopsis
15803
15804@smallexample
15805 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
15806@end smallexample
15807
15808Display the registers' contents. @var{fmt} is the format according to
15809which the registers' contents are to be returned, followed by an optional
15810list of numbers specifying the registers to display. A missing list of
15811numbers indicates that the contents of all the registers must be returned.
15812
15813Allowed formats for @var{fmt} are:
15814
15815@table @code
15816@item x
15817Hexadecimal
15818@item o
15819Octal
15820@item t
15821Binary
15822@item d
15823Decimal
15824@item r
15825Raw
15826@item N
15827Natural
15828@end table
15829
15830@subsubheading @value{GDBN} Command
15831
15832The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
15833all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
15834
15835@subsubheading Example
15836
15837For a PPC MBX board (note: line breaks are for readability only, they
15838don't appear in the actual output):
15839
15840@smallexample
15841(@value{GDBP})
15842-data-list-register-values r 64 65
15843^done,register-values=[@{number="64",value="0xfe00a300"@},
15844@{number="65",value="0x00029002"@}]
15845(@value{GDBP})
15846-data-list-register-values x
15847^done,register-values=[@{number="0",value="0xfe0043c8"@},
15848@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
15849@{number="3",value="0x0"@},@{number="4",value="0xa"@},
15850@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
15851@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
15852@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
15853@{number="11",value="0x1"@},@{number="12",value="0x0"@},
15854@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
15855@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
15856@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
15857@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
15858@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
15859@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
15860@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
15861@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
15862@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
15863@{number="31",value="0x0"@},@{number="32",value="0x0"@},
15864@{number="33",value="0x0"@},@{number="34",value="0x0"@},
15865@{number="35",value="0x0"@},@{number="36",value="0x0"@},
15866@{number="37",value="0x0"@},@{number="38",value="0x0"@},
15867@{number="39",value="0x0"@},@{number="40",value="0x0"@},
15868@{number="41",value="0x0"@},@{number="42",value="0x0"@},
15869@{number="43",value="0x0"@},@{number="44",value="0x0"@},
15870@{number="45",value="0x0"@},@{number="46",value="0x0"@},
15871@{number="47",value="0x0"@},@{number="48",value="0x0"@},
15872@{number="49",value="0x0"@},@{number="50",value="0x0"@},
15873@{number="51",value="0x0"@},@{number="52",value="0x0"@},
15874@{number="53",value="0x0"@},@{number="54",value="0x0"@},
15875@{number="55",value="0x0"@},@{number="56",value="0x0"@},
15876@{number="57",value="0x0"@},@{number="58",value="0x0"@},
15877@{number="59",value="0x0"@},@{number="60",value="0x0"@},
15878@{number="61",value="0x0"@},@{number="62",value="0x0"@},
15879@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
15880@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
15881@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
15882@{number="69",value="0x20002b03"@}]
15883(@value{GDBP})
15884@end smallexample
15885
15886
15887@subheading The @code{-data-read-memory} Command
15888@findex -data-read-memory
15889
15890@subsubheading Synopsis
15891
15892@smallexample
15893 -data-read-memory [ -o @var{byte-offset} ]
15894 @var{address} @var{word-format} @var{word-size}
15895 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
15896@end smallexample
15897
15898@noindent
15899where:
15900
15901@table @samp
15902@item @var{address}
15903An expression specifying the address of the first memory word to be
15904read. Complex expressions containing embedded white space should be
15905quoted using the C convention.
15906
15907@item @var{word-format}
15908The format to be used to print the memory words. The notation is the
15909same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
15910,Output formats}).
15911
15912@item @var{word-size}
15913The size of each memory word in bytes.
15914
15915@item @var{nr-rows}
15916The number of rows in the output table.
15917
15918@item @var{nr-cols}
15919The number of columns in the output table.
15920
15921@item @var{aschar}
15922If present, indicates that each row should include an @sc{ascii} dump. The
15923value of @var{aschar} is used as a padding character when a byte is not a
15924member of the printable @sc{ascii} character set (printable @sc{ascii}
15925characters are those whose code is between 32 and 126, inclusively).
15926
15927@item @var{byte-offset}
15928An offset to add to the @var{address} before fetching memory.
15929@end table
15930
15931This command displays memory contents as a table of @var{nr-rows} by
15932@var{nr-cols} words, each word being @var{word-size} bytes. In total,
15933@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
15934(returned as @samp{total-bytes}). Should less than the requested number
15935of bytes be returned by the target, the missing words are identified
15936using @samp{N/A}. The number of bytes read from the target is returned
15937in @samp{nr-bytes} and the starting address used to read memory in
15938@samp{addr}.
15939
15940The address of the next/previous row or page is available in
15941@samp{next-row} and @samp{prev-row}, @samp{next-page} and
15942@samp{prev-page}.
15943
15944@subsubheading @value{GDBN} Command
15945
15946The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
15947@samp{gdb_get_mem} memory read command.
15948
15949@subsubheading Example
15950
15951Read six bytes of memory starting at @code{bytes+6} but then offset by
15952@code{-6} bytes. Format as three rows of two columns. One byte per
15953word. Display each word in hex.
15954
15955@smallexample
15956(@value{GDBP})
159579-data-read-memory -o -6 -- bytes+6 x 1 3 2
159589^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
15959next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
15960prev-page="0x0000138a",memory=[
15961@{addr="0x00001390",data=["0x00","0x01"]@},
15962@{addr="0x00001392",data=["0x02","0x03"]@},
15963@{addr="0x00001394",data=["0x04","0x05"]@}]
15964(@value{GDBP})
15965@end smallexample
15966
15967Read two bytes of memory starting at address @code{shorts + 64} and
15968display as a single word formatted in decimal.
15969
15970@smallexample
15971(@value{GDBP})
159725-data-read-memory shorts+64 d 2 1 1
159735^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
15974next-row="0x00001512",prev-row="0x0000150e",
15975next-page="0x00001512",prev-page="0x0000150e",memory=[
15976@{addr="0x00001510",data=["128"]@}]
15977(@value{GDBP})
15978@end smallexample
15979
15980Read thirty two bytes of memory starting at @code{bytes+16} and format
15981as eight rows of four columns. Include a string encoding with @samp{x}
15982used as the non-printable character.
15983
15984@smallexample
15985(@value{GDBP})
159864-data-read-memory bytes+16 x 1 8 4 x
159874^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
15988next-row="0x000013c0",prev-row="0x0000139c",
15989next-page="0x000013c0",prev-page="0x00001380",memory=[
15990@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
15991@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
15992@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
15993@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
15994@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
15995@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
15996@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
15997@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
15998(@value{GDBP})
15999@end smallexample
16000
16001@subheading The @code{-display-delete} Command
16002@findex -display-delete
16003
16004@subsubheading Synopsis
16005
16006@smallexample
16007 -display-delete @var{number}
16008@end smallexample
16009
16010Delete the display @var{number}.
16011
16012@subsubheading @value{GDBN} Command
16013
16014The corresponding @value{GDBN} command is @samp{delete display}.
16015
16016@subsubheading Example
16017N.A.
16018
16019
16020@subheading The @code{-display-disable} Command
16021@findex -display-disable
16022
16023@subsubheading Synopsis
16024
16025@smallexample
16026 -display-disable @var{number}
16027@end smallexample
16028
16029Disable display @var{number}.
16030
16031@subsubheading @value{GDBN} Command
16032
16033The corresponding @value{GDBN} command is @samp{disable display}.
16034
16035@subsubheading Example
16036N.A.
16037
16038
16039@subheading The @code{-display-enable} Command
16040@findex -display-enable
16041
16042@subsubheading Synopsis
16043
16044@smallexample
16045 -display-enable @var{number}
16046@end smallexample
16047
16048Enable display @var{number}.
16049
16050@subsubheading @value{GDBN} Command
16051
16052The corresponding @value{GDBN} command is @samp{enable display}.
16053
16054@subsubheading Example
16055N.A.
16056
16057
16058@subheading The @code{-display-insert} Command
16059@findex -display-insert
16060
16061@subsubheading Synopsis
16062
16063@smallexample
16064 -display-insert @var{expression}
16065@end smallexample
16066
16067Display @var{expression} every time the program stops.
16068
16069@subsubheading @value{GDBN} Command
16070
16071The corresponding @value{GDBN} command is @samp{display}.
16072
16073@subsubheading Example
16074N.A.
16075
16076
16077@subheading The @code{-display-list} Command
16078@findex -display-list
16079
16080@subsubheading Synopsis
16081
16082@smallexample
16083 -display-list
16084@end smallexample
16085
16086List the displays. Do not show the current values.
16087
16088@subsubheading @value{GDBN} Command
16089
16090The corresponding @value{GDBN} command is @samp{info display}.
16091
16092@subsubheading Example
16093N.A.
16094
16095
16096@subheading The @code{-environment-cd} Command
16097@findex -environment-cd
16098
16099@subsubheading Synopsis
16100
16101@smallexample
16102 -environment-cd @var{pathdir}
16103@end smallexample
16104
16105Set @value{GDBN}'s working directory.
16106
16107@subsubheading @value{GDBN} Command
16108
16109The corresponding @value{GDBN} command is @samp{cd}.
16110
16111@subsubheading Example
16112
16113@smallexample
16114(@value{GDBP})
16115-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
16116^done
16117(@value{GDBP})
16118@end smallexample
16119
16120
16121@subheading The @code{-environment-directory} Command
16122@findex -environment-directory
16123
16124@subsubheading Synopsis
16125
16126@smallexample
16127 -environment-directory [ -r ] [ @var{pathdir} ]+
16128@end smallexample
16129
16130Add directories @var{pathdir} to beginning of search path for source files.
16131If the @samp{-r} option is used, the search path is reset to the default
b383017d 16132search path. If directories @var{pathdir} are supplied in addition to the
922fbb7b
AC
16133@samp{-r} option, the search path is first reset and then addition
16134occurs as normal.
b383017d 16135Multiple directories may be specified, separated by blanks. Specifying
922fbb7b
AC
16136multiple directories in a single command
16137results in the directories added to the beginning of the
16138search path in the same order they were presented in the command.
16139If blanks are needed as
16140part of a directory name, double-quotes should be used around
16141the name. In the command output, the path will show up separated
b383017d 16142by the system directory-separator character. The directory-seperator
922fbb7b
AC
16143character must not be used
16144in any directory name.
16145If no directories are specified, the current search path is displayed.
16146
16147@subsubheading @value{GDBN} Command
16148
16149The corresponding @value{GDBN} command is @samp{dir}.
16150
16151@subsubheading Example
16152
16153@smallexample
16154(@value{GDBP})
16155-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
16156^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
16157(@value{GDBP})
16158-environment-directory ""
16159^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
16160(@value{GDBP})
16161-environment-directory -r /home/jjohnstn/src/gdb /usr/src
16162^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
16163(@value{GDBP})
16164-environment-directory -r
16165^done,source-path="$cdir:$cwd"
16166(@value{GDBP})
16167@end smallexample
16168
16169
16170@subheading The @code{-environment-path} Command
16171@findex -environment-path
16172
16173@subsubheading Synopsis
16174
16175@smallexample
16176 -environment-path [ -r ] [ @var{pathdir} ]+
16177@end smallexample
16178
16179Add directories @var{pathdir} to beginning of search path for object files.
16180If the @samp{-r} option is used, the search path is reset to the original
b383017d
RM
16181search path that existed at gdb start-up. If directories @var{pathdir} are
16182supplied in addition to the
922fbb7b
AC
16183@samp{-r} option, the search path is first reset and then addition
16184occurs as normal.
b383017d 16185Multiple directories may be specified, separated by blanks. Specifying
922fbb7b
AC
16186multiple directories in a single command
16187results in the directories added to the beginning of the
16188search path in the same order they were presented in the command.
16189If blanks are needed as
16190part of a directory name, double-quotes should be used around
16191the name. In the command output, the path will show up separated
b383017d 16192by the system directory-separator character. The directory-seperator
922fbb7b
AC
16193character must not be used
16194in any directory name.
16195If no directories are specified, the current path is displayed.
16196
16197
16198@subsubheading @value{GDBN} Command
16199
16200The corresponding @value{GDBN} command is @samp{path}.
16201
16202@subsubheading Example
16203
16204@smallexample
16205(@value{GDBP})
b383017d 16206-environment-path
922fbb7b
AC
16207^done,path="/usr/bin"
16208(@value{GDBP})
16209-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
16210^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
16211(@value{GDBP})
16212-environment-path -r /usr/local/bin
16213^done,path="/usr/local/bin:/usr/bin"
16214(@value{GDBP})
16215@end smallexample
16216
16217
16218@subheading The @code{-environment-pwd} Command
16219@findex -environment-pwd
16220
16221@subsubheading Synopsis
16222
16223@smallexample
16224 -environment-pwd
16225@end smallexample
16226
16227Show the current working directory.
16228
16229@subsubheading @value{GDBN} command
16230
16231The corresponding @value{GDBN} command is @samp{pwd}.
16232
16233@subsubheading Example
16234
16235@smallexample
16236(@value{GDBP})
16237-environment-pwd
16238^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
16239(@value{GDBP})
16240@end smallexample
16241
16242@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16243@node GDB/MI Program Control
16244@section @sc{gdb/mi} Program control
16245
16246@subsubheading Program termination
16247
16248As a result of execution, the inferior program can run to completion, if
16249it doesn't encounter any breakpoints. In this case the output will
16250include an exit code, if the program has exited exceptionally.
16251
16252@subsubheading Examples
16253
16254@noindent
16255Program exited normally:
16256
16257@smallexample
16258(@value{GDBP})
16259-exec-run
16260^running
16261(@value{GDBP})
16262x = 55
16263*stopped,reason="exited-normally"
16264(@value{GDBP})
16265@end smallexample
16266
16267@noindent
16268Program exited exceptionally:
16269
16270@smallexample
16271(@value{GDBP})
16272-exec-run
16273^running
16274(@value{GDBP})
16275x = 55
16276*stopped,reason="exited",exit-code="01"
16277(@value{GDBP})
16278@end smallexample
16279
16280Another way the program can terminate is if it receives a signal such as
16281@code{SIGINT}. In this case, @sc{gdb/mi} displays this:
16282
16283@smallexample
16284(@value{GDBP})
16285*stopped,reason="exited-signalled",signal-name="SIGINT",
16286signal-meaning="Interrupt"
16287@end smallexample
16288
16289
16290@subheading The @code{-exec-abort} Command
16291@findex -exec-abort
16292
16293@subsubheading Synopsis
16294
16295@smallexample
16296 -exec-abort
16297@end smallexample
16298
16299Kill the inferior running program.
16300
16301@subsubheading @value{GDBN} Command
16302
16303The corresponding @value{GDBN} command is @samp{kill}.
16304
16305@subsubheading Example
16306N.A.
16307
16308
16309@subheading The @code{-exec-arguments} Command
16310@findex -exec-arguments
16311
16312@subsubheading Synopsis
16313
16314@smallexample
16315 -exec-arguments @var{args}
16316@end smallexample
16317
16318Set the inferior program arguments, to be used in the next
16319@samp{-exec-run}.
16320
16321@subsubheading @value{GDBN} Command
16322
16323The corresponding @value{GDBN} command is @samp{set args}.
16324
16325@subsubheading Example
16326
16327@c FIXME!
16328Don't have one around.
16329
16330
16331@subheading The @code{-exec-continue} Command
16332@findex -exec-continue
16333
16334@subsubheading Synopsis
16335
16336@smallexample
16337 -exec-continue
16338@end smallexample
16339
16340Asynchronous command. Resumes the execution of the inferior program
16341until a breakpoint is encountered, or until the inferior exits.
16342
16343@subsubheading @value{GDBN} Command
16344
16345The corresponding @value{GDBN} corresponding is @samp{continue}.
16346
16347@subsubheading Example
16348
16349@smallexample
16350-exec-continue
16351^running
16352(@value{GDBP})
16353@@Hello world
16354*stopped,reason="breakpoint-hit",bkptno="2",frame=@{func="foo",args=[],
16355file="hello.c",line="13"@}
16356(@value{GDBP})
16357@end smallexample
16358
16359
16360@subheading The @code{-exec-finish} Command
16361@findex -exec-finish
16362
16363@subsubheading Synopsis
16364
16365@smallexample
16366 -exec-finish
16367@end smallexample
16368
16369Asynchronous command. Resumes the execution of the inferior program
16370until the current function is exited. Displays the results returned by
16371the function.
16372
16373@subsubheading @value{GDBN} Command
16374
16375The corresponding @value{GDBN} command is @samp{finish}.
16376
16377@subsubheading Example
16378
16379Function returning @code{void}.
16380
16381@smallexample
16382-exec-finish
16383^running
16384(@value{GDBP})
16385@@hello from foo
16386*stopped,reason="function-finished",frame=@{func="main",args=[],
16387file="hello.c",line="7"@}
16388(@value{GDBP})
16389@end smallexample
16390
16391Function returning other than @code{void}. The name of the internal
16392@value{GDBN} variable storing the result is printed, together with the
16393value itself.
16394
16395@smallexample
16396-exec-finish
16397^running
16398(@value{GDBP})
16399*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
16400args=[@{name="a",value="1"],@{name="b",value="9"@}@},
16401file="recursive2.c",line="14"@},
16402gdb-result-var="$1",return-value="0"
16403(@value{GDBP})
16404@end smallexample
16405
16406
16407@subheading The @code{-exec-interrupt} Command
16408@findex -exec-interrupt
16409
16410@subsubheading Synopsis
16411
16412@smallexample
16413 -exec-interrupt
16414@end smallexample
16415
16416Asynchronous command. Interrupts the background execution of the target.
16417Note how the token associated with the stop message is the one for the
16418execution command that has been interrupted. The token for the interrupt
16419itself only appears in the @samp{^done} output. If the user is trying to
16420interrupt a non-running program, an error message will be printed.
16421
16422@subsubheading @value{GDBN} Command
16423
16424The corresponding @value{GDBN} command is @samp{interrupt}.
16425
16426@subsubheading Example
16427
16428@smallexample
16429(@value{GDBP})
16430111-exec-continue
16431111^running
16432
16433(@value{GDBP})
16434222-exec-interrupt
16435222^done
16436(@value{GDBP})
16437111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
16438frame=@{addr="0x00010140",func="foo",args=[],file="try.c",line="13"@}
16439(@value{GDBP})
16440
16441(@value{GDBP})
16442-exec-interrupt
16443^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
16444(@value{GDBP})
16445@end smallexample
16446
16447
16448@subheading The @code{-exec-next} Command
16449@findex -exec-next
16450
16451@subsubheading Synopsis
16452
16453@smallexample
16454 -exec-next
16455@end smallexample
16456
16457Asynchronous command. Resumes execution of the inferior program, stopping
16458when the beginning of the next source line is reached.
16459
16460@subsubheading @value{GDBN} Command
16461
16462The corresponding @value{GDBN} command is @samp{next}.
16463
16464@subsubheading Example
16465
16466@smallexample
16467-exec-next
16468^running
16469(@value{GDBP})
16470*stopped,reason="end-stepping-range",line="8",file="hello.c"
16471(@value{GDBP})
16472@end smallexample
16473
16474
16475@subheading The @code{-exec-next-instruction} Command
16476@findex -exec-next-instruction
16477
16478@subsubheading Synopsis
16479
16480@smallexample
16481 -exec-next-instruction
16482@end smallexample
16483
16484Asynchronous command. Executes one machine instruction. If the
16485instruction is a function call continues until the function returns. If
16486the program stops at an instruction in the middle of a source line, the
16487address will be printed as well.
16488
16489@subsubheading @value{GDBN} Command
16490
16491The corresponding @value{GDBN} command is @samp{nexti}.
16492
16493@subsubheading Example
16494
16495@smallexample
16496(@value{GDBP})
16497-exec-next-instruction
16498^running
16499
16500(@value{GDBP})
16501*stopped,reason="end-stepping-range",
16502addr="0x000100d4",line="5",file="hello.c"
16503(@value{GDBP})
16504@end smallexample
16505
16506
16507@subheading The @code{-exec-return} Command
16508@findex -exec-return
16509
16510@subsubheading Synopsis
16511
16512@smallexample
16513 -exec-return
16514@end smallexample
16515
16516Makes current function return immediately. Doesn't execute the inferior.
16517Displays the new current frame.
16518
16519@subsubheading @value{GDBN} Command
16520
16521The corresponding @value{GDBN} command is @samp{return}.
16522
16523@subsubheading Example
16524
16525@smallexample
16526(@value{GDBP})
16527200-break-insert callee4
16528200^done,bkpt=@{number="1",addr="0x00010734",
16529file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
16530(@value{GDBP})
16531000-exec-run
16532000^running
16533(@value{GDBP})
16534000*stopped,reason="breakpoint-hit",bkptno="1",
16535frame=@{func="callee4",args=[],
16536file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
16537(@value{GDBP})
16538205-break-delete
16539205^done
16540(@value{GDBP})
16541111-exec-return
16542111^done,frame=@{level="0",func="callee3",
16543args=[@{name="strarg",
16544value="0x11940 \"A string argument.\""@}],
16545file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
16546(@value{GDBP})
16547@end smallexample
16548
16549
16550@subheading The @code{-exec-run} Command
16551@findex -exec-run
16552
16553@subsubheading Synopsis
16554
16555@smallexample
16556 -exec-run
16557@end smallexample
16558
16559Asynchronous command. Starts execution of the inferior from the
16560beginning. The inferior executes until either a breakpoint is
16561encountered or the program exits.
16562
16563@subsubheading @value{GDBN} Command
16564
16565The corresponding @value{GDBN} command is @samp{run}.
16566
16567@subsubheading Example
16568
16569@smallexample
16570(@value{GDBP})
16571-break-insert main
16572^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
16573(@value{GDBP})
16574-exec-run
16575^running
16576(@value{GDBP})
16577*stopped,reason="breakpoint-hit",bkptno="1",
16578frame=@{func="main",args=[],file="recursive2.c",line="4"@}
16579(@value{GDBP})
16580@end smallexample
16581
16582
16583@subheading The @code{-exec-show-arguments} Command
16584@findex -exec-show-arguments
16585
16586@subsubheading Synopsis
16587
16588@smallexample
16589 -exec-show-arguments
16590@end smallexample
16591
16592Print the arguments of the program.
16593
16594@subsubheading @value{GDBN} Command
16595
16596The corresponding @value{GDBN} command is @samp{show args}.
16597
16598@subsubheading Example
16599N.A.
16600
16601@c @subheading -exec-signal
16602
16603@subheading The @code{-exec-step} Command
16604@findex -exec-step
16605
16606@subsubheading Synopsis
16607
16608@smallexample
16609 -exec-step
16610@end smallexample
16611
16612Asynchronous command. Resumes execution of the inferior program, stopping
16613when the beginning of the next source line is reached, if the next
16614source line is not a function call. If it is, stop at the first
16615instruction of the called function.
16616
16617@subsubheading @value{GDBN} Command
16618
16619The corresponding @value{GDBN} command is @samp{step}.
16620
16621@subsubheading Example
16622
16623Stepping into a function:
16624
16625@smallexample
16626-exec-step
16627^running
16628(@value{GDBP})
16629*stopped,reason="end-stepping-range",
16630frame=@{func="foo",args=[@{name="a",value="10"@},
16631@{name="b",value="0"@}],file="recursive2.c",line="11"@}
16632(@value{GDBP})
16633@end smallexample
16634
16635Regular stepping:
16636
16637@smallexample
16638-exec-step
16639^running
16640(@value{GDBP})
16641*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
16642(@value{GDBP})
16643@end smallexample
16644
16645
16646@subheading The @code{-exec-step-instruction} Command
16647@findex -exec-step-instruction
16648
16649@subsubheading Synopsis
16650
16651@smallexample
16652 -exec-step-instruction
16653@end smallexample
16654
16655Asynchronous command. Resumes the inferior which executes one machine
16656instruction. The output, once @value{GDBN} has stopped, will vary depending on
16657whether we have stopped in the middle of a source line or not. In the
16658former case, the address at which the program stopped will be printed as
16659well.
16660
16661@subsubheading @value{GDBN} Command
16662
16663The corresponding @value{GDBN} command is @samp{stepi}.
16664
16665@subsubheading Example
16666
16667@smallexample
16668(@value{GDBP})
16669-exec-step-instruction
16670^running
16671
16672(@value{GDBP})
16673*stopped,reason="end-stepping-range",
16674frame=@{func="foo",args=[],file="try.c",line="10"@}
16675(@value{GDBP})
16676-exec-step-instruction
16677^running
16678
16679(@value{GDBP})
16680*stopped,reason="end-stepping-range",
16681frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",line="10"@}
16682(@value{GDBP})
16683@end smallexample
16684
16685
16686@subheading The @code{-exec-until} Command
16687@findex -exec-until
16688
16689@subsubheading Synopsis
16690
16691@smallexample
16692 -exec-until [ @var{location} ]
16693@end smallexample
16694
16695Asynchronous command. Executes the inferior until the @var{location}
16696specified in the argument is reached. If there is no argument, the inferior
16697executes until a source line greater than the current one is reached.
16698The reason for stopping in this case will be @samp{location-reached}.
16699
16700@subsubheading @value{GDBN} Command
16701
16702The corresponding @value{GDBN} command is @samp{until}.
16703
16704@subsubheading Example
16705
16706@smallexample
16707(@value{GDBP})
16708-exec-until recursive2.c:6
16709^running
16710(@value{GDBP})
16711x = 55
16712*stopped,reason="location-reached",frame=@{func="main",args=[],
16713file="recursive2.c",line="6"@}
16714(@value{GDBP})
16715@end smallexample
16716
16717@ignore
16718@subheading -file-clear
16719Is this going away????
16720@end ignore
16721
16722
16723@subheading The @code{-file-exec-and-symbols} Command
16724@findex -file-exec-and-symbols
16725
16726@subsubheading Synopsis
16727
16728@smallexample
16729 -file-exec-and-symbols @var{file}
16730@end smallexample
16731
16732Specify the executable file to be debugged. This file is the one from
16733which the symbol table is also read. If no file is specified, the
16734command clears the executable and symbol information. If breakpoints
16735are set when using this command with no arguments, @value{GDBN} will produce
16736error messages. Otherwise, no output is produced, except a completion
16737notification.
16738
16739@subsubheading @value{GDBN} Command
16740
16741The corresponding @value{GDBN} command is @samp{file}.
16742
16743@subsubheading Example
16744
16745@smallexample
16746(@value{GDBP})
16747-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
16748^done
16749(@value{GDBP})
16750@end smallexample
16751
16752
16753@subheading The @code{-file-exec-file} Command
16754@findex -file-exec-file
16755
16756@subsubheading Synopsis
16757
16758@smallexample
16759 -file-exec-file @var{file}
16760@end smallexample
16761
16762Specify the executable file to be debugged. Unlike
16763@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
16764from this file. If used without argument, @value{GDBN} clears the information
16765about the executable file. No output is produced, except a completion
16766notification.
16767
16768@subsubheading @value{GDBN} Command
16769
16770The corresponding @value{GDBN} command is @samp{exec-file}.
16771
16772@subsubheading Example
16773
16774@smallexample
16775(@value{GDBP})
16776-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
16777^done
16778(@value{GDBP})
16779@end smallexample
16780
16781
16782@subheading The @code{-file-list-exec-sections} Command
16783@findex -file-list-exec-sections
16784
16785@subsubheading Synopsis
16786
16787@smallexample
16788 -file-list-exec-sections
16789@end smallexample
16790
16791List the sections of the current executable file.
16792
16793@subsubheading @value{GDBN} Command
16794
16795The @value{GDBN} command @samp{info file} shows, among the rest, the same
16796information as this command. @code{gdbtk} has a corresponding command
16797@samp{gdb_load_info}.
16798
16799@subsubheading Example
16800N.A.
16801
16802
1abaf70c
BR
16803@subheading The @code{-file-list-exec-source-file} Command
16804@findex -file-list-exec-source-file
16805
16806@subsubheading Synopsis
16807
16808@smallexample
16809 -file-list-exec-source-file
16810@end smallexample
16811
b383017d 16812List the line number, the current source file, and the absolute path
1abaf70c
BR
16813to the current source file for the current executable.
16814
16815@subsubheading @value{GDBN} Command
16816
16817There's no @value{GDBN} command which directly corresponds to this one.
16818
16819@subsubheading Example
16820
16821@smallexample
16822(@value{GDBP})
16823123-file-list-exec-source-file
16824123^done,line="1",file="foo.c",fullname="/home/bar/foo.c"
16825(@value{GDBP})
16826@end smallexample
16827
16828
922fbb7b
AC
16829@subheading The @code{-file-list-exec-source-files} Command
16830@findex -file-list-exec-source-files
16831
16832@subsubheading Synopsis
16833
16834@smallexample
16835 -file-list-exec-source-files
16836@end smallexample
16837
16838List the source files for the current executable.
16839
57c22c6c
BR
16840It will always output the filename, but only when GDB can find the absolute
16841file name of a source file, will it output the fullname.
16842
922fbb7b
AC
16843@subsubheading @value{GDBN} Command
16844
16845There's no @value{GDBN} command which directly corresponds to this one.
16846@code{gdbtk} has an analogous command @samp{gdb_listfiles}.
16847
16848@subsubheading Example
57c22c6c
BR
16849@smallexample
16850(@value{GDBP})
16851-file-list-exec-source-files
16852^done,files=[
16853@{file=foo.c,fullname=/home/foo.c@},
16854@{file=/home/bar.c,fullname=/home/bar.c@},
16855@{file=gdb_could_not_find_fullpath.c@}]
16856(@value{GDBP})
16857@end smallexample
922fbb7b
AC
16858
16859@subheading The @code{-file-list-shared-libraries} Command
16860@findex -file-list-shared-libraries
16861
16862@subsubheading Synopsis
16863
16864@smallexample
16865 -file-list-shared-libraries
16866@end smallexample
16867
16868List the shared libraries in the program.
16869
16870@subsubheading @value{GDBN} Command
16871
16872The corresponding @value{GDBN} command is @samp{info shared}.
16873
16874@subsubheading Example
16875N.A.
16876
16877
16878@subheading The @code{-file-list-symbol-files} Command
16879@findex -file-list-symbol-files
16880
16881@subsubheading Synopsis
16882
16883@smallexample
16884 -file-list-symbol-files
16885@end smallexample
16886
16887List symbol files.
16888
16889@subsubheading @value{GDBN} Command
16890
16891The corresponding @value{GDBN} command is @samp{info file} (part of it).
16892
16893@subsubheading Example
16894N.A.
16895
16896
16897@subheading The @code{-file-symbol-file} Command
16898@findex -file-symbol-file
16899
16900@subsubheading Synopsis
16901
16902@smallexample
16903 -file-symbol-file @var{file}
16904@end smallexample
16905
16906Read symbol table info from the specified @var{file} argument. When
16907used without arguments, clears @value{GDBN}'s symbol table info. No output is
16908produced, except for a completion notification.
16909
16910@subsubheading @value{GDBN} Command
16911
16912The corresponding @value{GDBN} command is @samp{symbol-file}.
16913
16914@subsubheading Example
16915
16916@smallexample
16917(@value{GDBP})
16918-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
16919^done
16920(@value{GDBP})
16921@end smallexample
16922
16923@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16924@node GDB/MI Miscellaneous Commands
16925@section Miscellaneous @value{GDBN} commands in @sc{gdb/mi}
16926
16927@c @subheading -gdb-complete
16928
16929@subheading The @code{-gdb-exit} Command
16930@findex -gdb-exit
16931
16932@subsubheading Synopsis
16933
16934@smallexample
16935 -gdb-exit
16936@end smallexample
16937
16938Exit @value{GDBN} immediately.
16939
16940@subsubheading @value{GDBN} Command
16941
16942Approximately corresponds to @samp{quit}.
16943
16944@subsubheading Example
16945
16946@smallexample
16947(@value{GDBP})
16948-gdb-exit
16949@end smallexample
16950
16951@subheading The @code{-gdb-set} Command
16952@findex -gdb-set
16953
16954@subsubheading Synopsis
16955
16956@smallexample
16957 -gdb-set
16958@end smallexample
16959
16960Set an internal @value{GDBN} variable.
16961@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
16962
16963@subsubheading @value{GDBN} Command
16964
16965The corresponding @value{GDBN} command is @samp{set}.
16966
16967@subsubheading Example
16968
16969@smallexample
16970(@value{GDBP})
16971-gdb-set $foo=3
16972^done
16973(@value{GDBP})
16974@end smallexample
16975
16976
16977@subheading The @code{-gdb-show} Command
16978@findex -gdb-show
16979
16980@subsubheading Synopsis
16981
16982@smallexample
16983 -gdb-show
16984@end smallexample
16985
16986Show the current value of a @value{GDBN} variable.
16987
16988@subsubheading @value{GDBN} command
16989
16990The corresponding @value{GDBN} command is @samp{show}.
16991
16992@subsubheading Example
16993
16994@smallexample
16995(@value{GDBP})
16996-gdb-show annotate
16997^done,value="0"
16998(@value{GDBP})
16999@end smallexample
17000
17001@c @subheading -gdb-source
17002
17003
17004@subheading The @code{-gdb-version} Command
17005@findex -gdb-version
17006
17007@subsubheading Synopsis
17008
17009@smallexample
17010 -gdb-version
17011@end smallexample
17012
17013Show version information for @value{GDBN}. Used mostly in testing.
17014
17015@subsubheading @value{GDBN} Command
17016
17017There's no equivalent @value{GDBN} command. @value{GDBN} by default shows this
17018information when you start an interactive session.
17019
17020@subsubheading Example
17021
17022@c This example modifies the actual output from GDB to avoid overfull
17023@c box in TeX.
17024@smallexample
17025(@value{GDBP})
17026-gdb-version
17027~GNU gdb 5.2.1
17028~Copyright 2000 Free Software Foundation, Inc.
17029~GDB is free software, covered by the GNU General Public License, and
17030~you are welcome to change it and/or distribute copies of it under
17031~ certain conditions.
17032~Type "show copying" to see the conditions.
17033~There is absolutely no warranty for GDB. Type "show warranty" for
17034~ details.
b383017d 17035~This GDB was configured as
922fbb7b
AC
17036 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
17037^done
17038(@value{GDBP})
17039@end smallexample
17040
17041@subheading The @code{-interpreter-exec} Command
17042@findex -interpreter-exec
17043
17044@subheading Synopsis
17045
17046@smallexample
17047-interpreter-exec @var{interpreter} @var{command}
17048@end smallexample
17049
17050Execute the specified @var{command} in the given @var{interpreter}.
17051
17052@subheading @value{GDBN} Command
17053
17054The corresponding @value{GDBN} command is @samp{interpreter-exec}.
17055
17056@subheading Example
17057
17058@smallexample
17059(@value{GDBP})
17060-interpreter-exec console "break main"
17061&"During symbol reading, couldn't parse type; debugger out of date?.\n"
17062&"During symbol reading, bad structure-type format.\n"
17063~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
17064^done
17065(@value{GDBP})
17066@end smallexample
17067
17068@ignore
17069@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17070@node GDB/MI Kod Commands
17071@section @sc{gdb/mi} Kod Commands
17072
17073The Kod commands are not implemented.
17074
17075@c @subheading -kod-info
17076
17077@c @subheading -kod-list
17078
17079@c @subheading -kod-list-object-types
17080
17081@c @subheading -kod-show
17082
17083@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17084@node GDB/MI Memory Overlay Commands
17085@section @sc{gdb/mi} Memory Overlay Commands
17086
17087The memory overlay commands are not implemented.
17088
17089@c @subheading -overlay-auto
17090
17091@c @subheading -overlay-list-mapping-state
17092
17093@c @subheading -overlay-list-overlays
17094
17095@c @subheading -overlay-map
17096
17097@c @subheading -overlay-off
17098
17099@c @subheading -overlay-on
17100
17101@c @subheading -overlay-unmap
17102
17103@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17104@node GDB/MI Signal Handling Commands
17105@section @sc{gdb/mi} Signal Handling Commands
17106
17107Signal handling commands are not implemented.
17108
17109@c @subheading -signal-handle
17110
17111@c @subheading -signal-list-handle-actions
17112
17113@c @subheading -signal-list-signal-types
17114@end ignore
17115
17116
17117@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17118@node GDB/MI Stack Manipulation
17119@section @sc{gdb/mi} Stack Manipulation Commands
17120
17121
17122@subheading The @code{-stack-info-frame} Command
17123@findex -stack-info-frame
17124
17125@subsubheading Synopsis
17126
17127@smallexample
17128 -stack-info-frame
17129@end smallexample
17130
17131Get info on the current frame.
17132
17133@subsubheading @value{GDBN} Command
17134
17135The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
17136(without arguments).
17137
17138@subsubheading Example
17139N.A.
17140
17141@subheading The @code{-stack-info-depth} Command
17142@findex -stack-info-depth
17143
17144@subsubheading Synopsis
17145
17146@smallexample
17147 -stack-info-depth [ @var{max-depth} ]
17148@end smallexample
17149
17150Return the depth of the stack. If the integer argument @var{max-depth}
17151is specified, do not count beyond @var{max-depth} frames.
17152
17153@subsubheading @value{GDBN} Command
17154
17155There's no equivalent @value{GDBN} command.
17156
17157@subsubheading Example
17158
17159For a stack with frame levels 0 through 11:
17160
17161@smallexample
17162(@value{GDBP})
17163-stack-info-depth
17164^done,depth="12"
17165(@value{GDBP})
17166-stack-info-depth 4
17167^done,depth="4"
17168(@value{GDBP})
17169-stack-info-depth 12
17170^done,depth="12"
17171(@value{GDBP})
17172-stack-info-depth 11
17173^done,depth="11"
17174(@value{GDBP})
17175-stack-info-depth 13
17176^done,depth="12"
17177(@value{GDBP})
17178@end smallexample
17179
17180@subheading The @code{-stack-list-arguments} Command
17181@findex -stack-list-arguments
17182
17183@subsubheading Synopsis
17184
17185@smallexample
17186 -stack-list-arguments @var{show-values}
17187 [ @var{low-frame} @var{high-frame} ]
17188@end smallexample
17189
17190Display a list of the arguments for the frames between @var{low-frame}
17191and @var{high-frame} (inclusive). If @var{low-frame} and
17192@var{high-frame} are not provided, list the arguments for the whole call
17193stack.
17194
17195The @var{show-values} argument must have a value of 0 or 1. A value of
171960 means that only the names of the arguments are listed, a value of 1
17197means that both names and values of the arguments are printed.
17198
17199@subsubheading @value{GDBN} Command
17200
17201@value{GDBN} does not have an equivalent command. @code{gdbtk} has a
17202@samp{gdb_get_args} command which partially overlaps with the
17203functionality of @samp{-stack-list-arguments}.
17204
17205@subsubheading Example
17206
17207@smallexample
17208(@value{GDBP})
17209-stack-list-frames
17210^done,
17211stack=[
17212frame=@{level="0",addr="0x00010734",func="callee4",
17213file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
17214frame=@{level="1",addr="0x0001076c",func="callee3",
17215file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
17216frame=@{level="2",addr="0x0001078c",func="callee2",
17217file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
17218frame=@{level="3",addr="0x000107b4",func="callee1",
17219file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
17220frame=@{level="4",addr="0x000107e0",func="main",
17221file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
17222(@value{GDBP})
17223-stack-list-arguments 0
17224^done,
17225stack-args=[
17226frame=@{level="0",args=[]@},
17227frame=@{level="1",args=[name="strarg"]@},
17228frame=@{level="2",args=[name="intarg",name="strarg"]@},
17229frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
17230frame=@{level="4",args=[]@}]
17231(@value{GDBP})
17232-stack-list-arguments 1
17233^done,
17234stack-args=[
17235frame=@{level="0",args=[]@},
17236frame=@{level="1",
17237 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
17238frame=@{level="2",args=[
17239@{name="intarg",value="2"@},
17240@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
17241@{frame=@{level="3",args=[
17242@{name="intarg",value="2"@},
17243@{name="strarg",value="0x11940 \"A string argument.\""@},
17244@{name="fltarg",value="3.5"@}]@},
17245frame=@{level="4",args=[]@}]
17246(@value{GDBP})
17247-stack-list-arguments 0 2 2
17248^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
17249(@value{GDBP})
17250-stack-list-arguments 1 2 2
17251^done,stack-args=[frame=@{level="2",
17252args=[@{name="intarg",value="2"@},
17253@{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
17254(@value{GDBP})
17255@end smallexample
17256
17257@c @subheading -stack-list-exception-handlers
17258
17259
17260@subheading The @code{-stack-list-frames} Command
17261@findex -stack-list-frames
17262
17263@subsubheading Synopsis
17264
17265@smallexample
17266 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
17267@end smallexample
17268
17269List the frames currently on the stack. For each frame it displays the
17270following info:
17271
17272@table @samp
17273@item @var{level}
17274The frame number, 0 being the topmost frame, i.e. the innermost function.
17275@item @var{addr}
17276The @code{$pc} value for that frame.
17277@item @var{func}
17278Function name.
17279@item @var{file}
17280File name of the source file where the function lives.
17281@item @var{line}
17282Line number corresponding to the @code{$pc}.
17283@end table
17284
17285If invoked without arguments, this command prints a backtrace for the
17286whole stack. If given two integer arguments, it shows the frames whose
17287levels are between the two arguments (inclusive). If the two arguments
17288are equal, it shows the single frame at the corresponding level.
17289
17290@subsubheading @value{GDBN} Command
17291
17292The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
17293
17294@subsubheading Example
17295
17296Full stack backtrace:
17297
17298@smallexample
17299(@value{GDBP})
17300-stack-list-frames
17301^done,stack=
17302[frame=@{level="0",addr="0x0001076c",func="foo",
17303 file="recursive2.c",line="11"@},
17304frame=@{level="1",addr="0x000107a4",func="foo",
17305 file="recursive2.c",line="14"@},
17306frame=@{level="2",addr="0x000107a4",func="foo",
17307 file="recursive2.c",line="14"@},
17308frame=@{level="3",addr="0x000107a4",func="foo",
17309 file="recursive2.c",line="14"@},
17310frame=@{level="4",addr="0x000107a4",func="foo",
17311 file="recursive2.c",line="14"@},
17312frame=@{level="5",addr="0x000107a4",func="foo",
17313 file="recursive2.c",line="14"@},
17314frame=@{level="6",addr="0x000107a4",func="foo",
17315 file="recursive2.c",line="14"@},
17316frame=@{level="7",addr="0x000107a4",func="foo",
17317 file="recursive2.c",line="14"@},
17318frame=@{level="8",addr="0x000107a4",func="foo",
17319 file="recursive2.c",line="14"@},
17320frame=@{level="9",addr="0x000107a4",func="foo",
17321 file="recursive2.c",line="14"@},
17322frame=@{level="10",addr="0x000107a4",func="foo",
17323 file="recursive2.c",line="14"@},
17324frame=@{level="11",addr="0x00010738",func="main",
17325 file="recursive2.c",line="4"@}]
17326(@value{GDBP})
17327@end smallexample
17328
17329Show frames between @var{low_frame} and @var{high_frame}:
17330
17331@smallexample
17332(@value{GDBP})
17333-stack-list-frames 3 5
17334^done,stack=
17335[frame=@{level="3",addr="0x000107a4",func="foo",
17336 file="recursive2.c",line="14"@},
17337frame=@{level="4",addr="0x000107a4",func="foo",
17338 file="recursive2.c",line="14"@},
17339frame=@{level="5",addr="0x000107a4",func="foo",
17340 file="recursive2.c",line="14"@}]
17341(@value{GDBP})
17342@end smallexample
17343
17344Show a single frame:
17345
17346@smallexample
17347(@value{GDBP})
17348-stack-list-frames 3 3
17349^done,stack=
17350[frame=@{level="3",addr="0x000107a4",func="foo",
17351 file="recursive2.c",line="14"@}]
17352(@value{GDBP})
17353@end smallexample
17354
17355
17356@subheading The @code{-stack-list-locals} Command
17357@findex -stack-list-locals
17358
17359@subsubheading Synopsis
17360
17361@smallexample
17362 -stack-list-locals @var{print-values}
17363@end smallexample
17364
17365Display the local variable names for the current frame. With an
bc8ced35
NR
17366argument of 0 or @code{--no-values}, prints only the names of the variables.
17367With argument of 1 or @code{--all-values}, prints also their values. With
17368argument of 2 or @code{--simple-values}, prints the name, type and value for
17369simple data types and the name and type for arrays, structures and
17370unions. In this last case, the idea is that the user can see the
17371value of simple data types immediately and he can create variable
17372objects for other data types if he wishes to explore their values in
17373more detail.
922fbb7b
AC
17374
17375@subsubheading @value{GDBN} Command
17376
17377@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
17378
17379@subsubheading Example
17380
17381@smallexample
17382(@value{GDBP})
17383-stack-list-locals 0
17384^done,locals=[name="A",name="B",name="C"]
17385(@value{GDBP})
bc8ced35 17386-stack-list-locals --all-values
922fbb7b 17387^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
bc8ced35
NR
17388 @{name="C",value="@{1, 2, 3@}"@}]
17389-stack-list-locals --simple-values
17390^done,locals=[@{name="A",type="int",value="1"@},
17391 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
922fbb7b
AC
17392(@value{GDBP})
17393@end smallexample
17394
17395
17396@subheading The @code{-stack-select-frame} Command
17397@findex -stack-select-frame
17398
17399@subsubheading Synopsis
17400
17401@smallexample
17402 -stack-select-frame @var{framenum}
17403@end smallexample
17404
17405Change the current frame. Select a different frame @var{framenum} on
17406the stack.
17407
17408@subsubheading @value{GDBN} Command
17409
17410The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
17411@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
17412
17413@subsubheading Example
17414
17415@smallexample
17416(@value{GDBP})
17417-stack-select-frame 2
17418^done
17419(@value{GDBP})
17420@end smallexample
17421
17422@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17423@node GDB/MI Symbol Query
17424@section @sc{gdb/mi} Symbol Query Commands
17425
17426
17427@subheading The @code{-symbol-info-address} Command
17428@findex -symbol-info-address
17429
17430@subsubheading Synopsis
17431
17432@smallexample
17433 -symbol-info-address @var{symbol}
17434@end smallexample
17435
17436Describe where @var{symbol} is stored.
17437
17438@subsubheading @value{GDBN} Command
17439
17440The corresponding @value{GDBN} command is @samp{info address}.
17441
17442@subsubheading Example
17443N.A.
17444
17445
17446@subheading The @code{-symbol-info-file} Command
17447@findex -symbol-info-file
17448
17449@subsubheading Synopsis
17450
17451@smallexample
17452 -symbol-info-file
17453@end smallexample
17454
17455Show the file for the symbol.
17456
17457@subsubheading @value{GDBN} Command
17458
17459There's no equivalent @value{GDBN} command. @code{gdbtk} has
17460@samp{gdb_find_file}.
17461
17462@subsubheading Example
17463N.A.
17464
17465
17466@subheading The @code{-symbol-info-function} Command
17467@findex -symbol-info-function
17468
17469@subsubheading Synopsis
17470
17471@smallexample
17472 -symbol-info-function
17473@end smallexample
17474
17475Show which function the symbol lives in.
17476
17477@subsubheading @value{GDBN} Command
17478
17479@samp{gdb_get_function} in @code{gdbtk}.
17480
17481@subsubheading Example
17482N.A.
17483
17484
17485@subheading The @code{-symbol-info-line} Command
17486@findex -symbol-info-line
17487
17488@subsubheading Synopsis
17489
17490@smallexample
17491 -symbol-info-line
17492@end smallexample
17493
17494Show the core addresses of the code for a source line.
17495
17496@subsubheading @value{GDBN} Command
17497
71952f4c 17498The corresponding @value{GDBN} command is @samp{info line}.
922fbb7b
AC
17499@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
17500
17501@subsubheading Example
17502N.A.
17503
17504
17505@subheading The @code{-symbol-info-symbol} Command
17506@findex -symbol-info-symbol
17507
17508@subsubheading Synopsis
17509
17510@smallexample
17511 -symbol-info-symbol @var{addr}
17512@end smallexample
17513
17514Describe what symbol is at location @var{addr}.
17515
17516@subsubheading @value{GDBN} Command
17517
17518The corresponding @value{GDBN} command is @samp{info symbol}.
17519
17520@subsubheading Example
17521N.A.
17522
17523
17524@subheading The @code{-symbol-list-functions} Command
17525@findex -symbol-list-functions
17526
17527@subsubheading Synopsis
17528
17529@smallexample
17530 -symbol-list-functions
17531@end smallexample
17532
17533List the functions in the executable.
17534
17535@subsubheading @value{GDBN} Command
17536
17537@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
17538@samp{gdb_search} in @code{gdbtk}.
17539
17540@subsubheading Example
17541N.A.
17542
17543
32e7087d
JB
17544@subheading The @code{-symbol-list-lines} Command
17545@findex -symbol-list-lines
17546
17547@subsubheading Synopsis
17548
17549@smallexample
17550 -symbol-list-lines @var{filename}
17551@end smallexample
17552
17553Print the list of lines that contain code and their associated program
17554addresses for the given source filename. The entries are sorted in
17555ascending PC order.
17556
17557@subsubheading @value{GDBN} Command
17558
17559There is no corresponding @value{GDBN} command.
17560
17561@subsubheading Example
17562@smallexample
17563(@value{GDBP})
17564-symbol-list-lines basics.c
54ff5908 17565^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
32e7087d
JB
17566(@value{GDBP})
17567@end smallexample
17568
17569
922fbb7b
AC
17570@subheading The @code{-symbol-list-types} Command
17571@findex -symbol-list-types
17572
17573@subsubheading Synopsis
17574
17575@smallexample
17576 -symbol-list-types
17577@end smallexample
17578
17579List all the type names.
17580
17581@subsubheading @value{GDBN} Command
17582
17583The corresponding commands are @samp{info types} in @value{GDBN},
17584@samp{gdb_search} in @code{gdbtk}.
17585
17586@subsubheading Example
17587N.A.
17588
17589
17590@subheading The @code{-symbol-list-variables} Command
17591@findex -symbol-list-variables
17592
17593@subsubheading Synopsis
17594
17595@smallexample
17596 -symbol-list-variables
17597@end smallexample
17598
17599List all the global and static variable names.
17600
17601@subsubheading @value{GDBN} Command
17602
17603@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
17604
17605@subsubheading Example
17606N.A.
17607
17608
17609@subheading The @code{-symbol-locate} Command
17610@findex -symbol-locate
17611
17612@subsubheading Synopsis
17613
17614@smallexample
17615 -symbol-locate
17616@end smallexample
17617
17618@subsubheading @value{GDBN} Command
17619
17620@samp{gdb_loc} in @code{gdbtk}.
17621
17622@subsubheading Example
17623N.A.
17624
17625
17626@subheading The @code{-symbol-type} Command
17627@findex -symbol-type
17628
17629@subsubheading Synopsis
17630
17631@smallexample
17632 -symbol-type @var{variable}
17633@end smallexample
17634
17635Show type of @var{variable}.
17636
17637@subsubheading @value{GDBN} Command
17638
17639The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
17640@samp{gdb_obj_variable}.
17641
17642@subsubheading Example
17643N.A.
17644
17645
17646@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17647@node GDB/MI Target Manipulation
17648@section @sc{gdb/mi} Target Manipulation Commands
17649
17650
17651@subheading The @code{-target-attach} Command
17652@findex -target-attach
17653
17654@subsubheading Synopsis
17655
17656@smallexample
17657 -target-attach @var{pid} | @var{file}
17658@end smallexample
17659
17660Attach to a process @var{pid} or a file @var{file} outside of @value{GDBN}.
17661
17662@subsubheading @value{GDBN} command
17663
17664The corresponding @value{GDBN} command is @samp{attach}.
17665
17666@subsubheading Example
17667N.A.
17668
17669
17670@subheading The @code{-target-compare-sections} Command
17671@findex -target-compare-sections
17672
17673@subsubheading Synopsis
17674
17675@smallexample
17676 -target-compare-sections [ @var{section} ]
17677@end smallexample
17678
17679Compare data of section @var{section} on target to the exec file.
17680Without the argument, all sections are compared.
17681
17682@subsubheading @value{GDBN} Command
17683
17684The @value{GDBN} equivalent is @samp{compare-sections}.
17685
17686@subsubheading Example
17687N.A.
17688
17689
17690@subheading The @code{-target-detach} Command
17691@findex -target-detach
17692
17693@subsubheading Synopsis
17694
17695@smallexample
17696 -target-detach
17697@end smallexample
17698
17699Disconnect from the remote target. There's no output.
17700
17701@subsubheading @value{GDBN} command
17702
17703The corresponding @value{GDBN} command is @samp{detach}.
17704
17705@subsubheading Example
17706
17707@smallexample
17708(@value{GDBP})
17709-target-detach
17710^done
17711(@value{GDBP})
17712@end smallexample
17713
17714
07f31aa6
DJ
17715@subheading The @code{-target-disconnect} Command
17716@findex -target-disconnect
17717
17718@subsubheading Synopsis
17719
17720@example
17721 -target-disconnect
17722@end example
17723
17724Disconnect from the remote target. There's no output.
17725
17726@subsubheading @value{GDBN} command
17727
17728The corresponding @value{GDBN} command is @samp{disconnect}.
17729
17730@subsubheading Example
17731
17732@smallexample
17733(@value{GDBP})
17734-target-disconnect
17735^done
17736(@value{GDBP})
17737@end smallexample
17738
17739
922fbb7b
AC
17740@subheading The @code{-target-download} Command
17741@findex -target-download
17742
17743@subsubheading Synopsis
17744
17745@smallexample
17746 -target-download
17747@end smallexample
17748
17749Loads the executable onto the remote target.
17750It prints out an update message every half second, which includes the fields:
17751
17752@table @samp
17753@item section
17754The name of the section.
17755@item section-sent
17756The size of what has been sent so far for that section.
17757@item section-size
17758The size of the section.
17759@item total-sent
17760The total size of what was sent so far (the current and the previous sections).
17761@item total-size
17762The size of the overall executable to download.
17763@end table
17764
17765@noindent
17766Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
17767@sc{gdb/mi} Output Syntax}).
17768
17769In addition, it prints the name and size of the sections, as they are
17770downloaded. These messages include the following fields:
17771
17772@table @samp
17773@item section
17774The name of the section.
17775@item section-size
17776The size of the section.
17777@item total-size
17778The size of the overall executable to download.
17779@end table
17780
17781@noindent
17782At the end, a summary is printed.
17783
17784@subsubheading @value{GDBN} Command
17785
17786The corresponding @value{GDBN} command is @samp{load}.
17787
17788@subsubheading Example
17789
17790Note: each status message appears on a single line. Here the messages
17791have been broken down so that they can fit onto a page.
17792
17793@smallexample
17794(@value{GDBP})
17795-target-download
17796+download,@{section=".text",section-size="6668",total-size="9880"@}
17797+download,@{section=".text",section-sent="512",section-size="6668",
17798total-sent="512",total-size="9880"@}
17799+download,@{section=".text",section-sent="1024",section-size="6668",
17800total-sent="1024",total-size="9880"@}
17801+download,@{section=".text",section-sent="1536",section-size="6668",
17802total-sent="1536",total-size="9880"@}
17803+download,@{section=".text",section-sent="2048",section-size="6668",
17804total-sent="2048",total-size="9880"@}
17805+download,@{section=".text",section-sent="2560",section-size="6668",
17806total-sent="2560",total-size="9880"@}
17807+download,@{section=".text",section-sent="3072",section-size="6668",
17808total-sent="3072",total-size="9880"@}
17809+download,@{section=".text",section-sent="3584",section-size="6668",
17810total-sent="3584",total-size="9880"@}
17811+download,@{section=".text",section-sent="4096",section-size="6668",
17812total-sent="4096",total-size="9880"@}
17813+download,@{section=".text",section-sent="4608",section-size="6668",
17814total-sent="4608",total-size="9880"@}
17815+download,@{section=".text",section-sent="5120",section-size="6668",
17816total-sent="5120",total-size="9880"@}
17817+download,@{section=".text",section-sent="5632",section-size="6668",
17818total-sent="5632",total-size="9880"@}
17819+download,@{section=".text",section-sent="6144",section-size="6668",
17820total-sent="6144",total-size="9880"@}
17821+download,@{section=".text",section-sent="6656",section-size="6668",
17822total-sent="6656",total-size="9880"@}
17823+download,@{section=".init",section-size="28",total-size="9880"@}
17824+download,@{section=".fini",section-size="28",total-size="9880"@}
17825+download,@{section=".data",section-size="3156",total-size="9880"@}
17826+download,@{section=".data",section-sent="512",section-size="3156",
17827total-sent="7236",total-size="9880"@}
17828+download,@{section=".data",section-sent="1024",section-size="3156",
17829total-sent="7748",total-size="9880"@}
17830+download,@{section=".data",section-sent="1536",section-size="3156",
17831total-sent="8260",total-size="9880"@}
17832+download,@{section=".data",section-sent="2048",section-size="3156",
17833total-sent="8772",total-size="9880"@}
17834+download,@{section=".data",section-sent="2560",section-size="3156",
17835total-sent="9284",total-size="9880"@}
17836+download,@{section=".data",section-sent="3072",section-size="3156",
17837total-sent="9796",total-size="9880"@}
17838^done,address="0x10004",load-size="9880",transfer-rate="6586",
17839write-rate="429"
17840(@value{GDBP})
17841@end smallexample
17842
17843
17844@subheading The @code{-target-exec-status} Command
17845@findex -target-exec-status
17846
17847@subsubheading Synopsis
17848
17849@smallexample
17850 -target-exec-status
17851@end smallexample
17852
17853Provide information on the state of the target (whether it is running or
17854not, for instance).
17855
17856@subsubheading @value{GDBN} Command
17857
17858There's no equivalent @value{GDBN} command.
17859
17860@subsubheading Example
17861N.A.
17862
17863
17864@subheading The @code{-target-list-available-targets} Command
17865@findex -target-list-available-targets
17866
17867@subsubheading Synopsis
17868
17869@smallexample
17870 -target-list-available-targets
17871@end smallexample
17872
17873List the possible targets to connect to.
17874
17875@subsubheading @value{GDBN} Command
17876
17877The corresponding @value{GDBN} command is @samp{help target}.
17878
17879@subsubheading Example
17880N.A.
17881
17882
17883@subheading The @code{-target-list-current-targets} Command
17884@findex -target-list-current-targets
17885
17886@subsubheading Synopsis
17887
17888@smallexample
17889 -target-list-current-targets
17890@end smallexample
17891
17892Describe the current target.
17893
17894@subsubheading @value{GDBN} Command
17895
17896The corresponding information is printed by @samp{info file} (among
17897other things).
17898
17899@subsubheading Example
17900N.A.
17901
17902
17903@subheading The @code{-target-list-parameters} Command
17904@findex -target-list-parameters
17905
17906@subsubheading Synopsis
17907
17908@smallexample
17909 -target-list-parameters
17910@end smallexample
17911
17912@c ????
17913
17914@subsubheading @value{GDBN} Command
17915
17916No equivalent.
17917
17918@subsubheading Example
17919N.A.
17920
17921
17922@subheading The @code{-target-select} Command
17923@findex -target-select
17924
17925@subsubheading Synopsis
17926
17927@smallexample
17928 -target-select @var{type} @var{parameters @dots{}}
17929@end smallexample
17930
17931Connect @value{GDBN} to the remote target. This command takes two args:
17932
17933@table @samp
17934@item @var{type}
17935The type of target, for instance @samp{async}, @samp{remote}, etc.
17936@item @var{parameters}
17937Device names, host names and the like. @xref{Target Commands, ,
17938Commands for managing targets}, for more details.
17939@end table
17940
17941The output is a connection notification, followed by the address at
17942which the target program is, in the following form:
17943
17944@smallexample
17945^connected,addr="@var{address}",func="@var{function name}",
17946 args=[@var{arg list}]
17947@end smallexample
17948
17949@subsubheading @value{GDBN} Command
17950
17951The corresponding @value{GDBN} command is @samp{target}.
17952
17953@subsubheading Example
17954
17955@smallexample
17956(@value{GDBP})
17957-target-select async /dev/ttya
17958^connected,addr="0xfe00a300",func="??",args=[]
17959(@value{GDBP})
17960@end smallexample
17961
17962@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17963@node GDB/MI Thread Commands
17964@section @sc{gdb/mi} Thread Commands
17965
17966
17967@subheading The @code{-thread-info} Command
17968@findex -thread-info
17969
17970@subsubheading Synopsis
17971
17972@smallexample
17973 -thread-info
17974@end smallexample
17975
17976@subsubheading @value{GDBN} command
17977
17978No equivalent.
17979
17980@subsubheading Example
17981N.A.
17982
17983
17984@subheading The @code{-thread-list-all-threads} Command
17985@findex -thread-list-all-threads
17986
17987@subsubheading Synopsis
17988
17989@smallexample
17990 -thread-list-all-threads
17991@end smallexample
17992
17993@subsubheading @value{GDBN} Command
17994
17995The equivalent @value{GDBN} command is @samp{info threads}.
17996
17997@subsubheading Example
17998N.A.
17999
18000
18001@subheading The @code{-thread-list-ids} Command
18002@findex -thread-list-ids
18003
18004@subsubheading Synopsis
18005
18006@smallexample
18007 -thread-list-ids
18008@end smallexample
18009
18010Produces a list of the currently known @value{GDBN} thread ids. At the
18011end of the list it also prints the total number of such threads.
18012
18013@subsubheading @value{GDBN} Command
18014
18015Part of @samp{info threads} supplies the same information.
18016
18017@subsubheading Example
18018
18019No threads present, besides the main process:
18020
18021@smallexample
18022(@value{GDBP})
18023-thread-list-ids
18024^done,thread-ids=@{@},number-of-threads="0"
18025(@value{GDBP})
18026@end smallexample
18027
18028
18029Several threads:
18030
18031@smallexample
18032(@value{GDBP})
18033-thread-list-ids
18034^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
18035number-of-threads="3"
18036(@value{GDBP})
18037@end smallexample
18038
18039
18040@subheading The @code{-thread-select} Command
18041@findex -thread-select
18042
18043@subsubheading Synopsis
18044
18045@smallexample
18046 -thread-select @var{threadnum}
18047@end smallexample
18048
18049Make @var{threadnum} the current thread. It prints the number of the new
18050current thread, and the topmost frame for that thread.
18051
18052@subsubheading @value{GDBN} Command
18053
18054The corresponding @value{GDBN} command is @samp{thread}.
18055
18056@subsubheading Example
18057
18058@smallexample
18059(@value{GDBP})
18060-exec-next
18061^running
18062(@value{GDBP})
18063*stopped,reason="end-stepping-range",thread-id="2",line="187",
18064file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
18065(@value{GDBP})
18066-thread-list-ids
18067^done,
18068thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
18069number-of-threads="3"
18070(@value{GDBP})
18071-thread-select 3
18072^done,new-thread-id="3",
18073frame=@{level="0",func="vprintf",
18074args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
18075@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
18076(@value{GDBP})
18077@end smallexample
18078
18079@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18080@node GDB/MI Tracepoint Commands
18081@section @sc{gdb/mi} Tracepoint Commands
18082
18083The tracepoint commands are not yet implemented.
18084
18085@c @subheading -trace-actions
18086
18087@c @subheading -trace-delete
18088
18089@c @subheading -trace-disable
18090
18091@c @subheading -trace-dump
18092
18093@c @subheading -trace-enable
18094
18095@c @subheading -trace-exists
18096
18097@c @subheading -trace-find
18098
18099@c @subheading -trace-frame-number
18100
18101@c @subheading -trace-info
18102
18103@c @subheading -trace-insert
18104
18105@c @subheading -trace-list
18106
18107@c @subheading -trace-pass-count
18108
18109@c @subheading -trace-save
18110
18111@c @subheading -trace-start
18112
18113@c @subheading -trace-stop
18114
18115
18116@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18117@node GDB/MI Variable Objects
18118@section @sc{gdb/mi} Variable Objects
18119
18120
18121@subheading Motivation for Variable Objects in @sc{gdb/mi}
18122
18123For the implementation of a variable debugger window (locals, watched
18124expressions, etc.), we are proposing the adaptation of the existing code
18125used by @code{Insight}.
18126
18127The two main reasons for that are:
18128
18129@enumerate 1
18130@item
18131It has been proven in practice (it is already on its second generation).
18132
18133@item
18134It will shorten development time (needless to say how important it is
18135now).
18136@end enumerate
18137
18138The original interface was designed to be used by Tcl code, so it was
18139slightly changed so it could be used through @sc{gdb/mi}. This section
18140describes the @sc{gdb/mi} operations that will be available and gives some
18141hints about their use.
18142
18143@emph{Note}: In addition to the set of operations described here, we
18144expect the @sc{gui} implementation of a variable window to require, at
18145least, the following operations:
18146
18147@itemize @bullet
18148@item @code{-gdb-show} @code{output-radix}
18149@item @code{-stack-list-arguments}
18150@item @code{-stack-list-locals}
18151@item @code{-stack-select-frame}
18152@end itemize
18153
18154@subheading Introduction to Variable Objects in @sc{gdb/mi}
18155
18156@cindex variable objects in @sc{gdb/mi}
18157The basic idea behind variable objects is the creation of a named object
18158to represent a variable, an expression, a memory location or even a CPU
18159register. For each object created, a set of operations is available for
18160examining or changing its properties.
18161
18162Furthermore, complex data types, such as C structures, are represented
18163in a tree format. For instance, the @code{struct} type variable is the
18164root and the children will represent the struct members. If a child
18165is itself of a complex type, it will also have children of its own.
18166Appropriate language differences are handled for C, C@t{++} and Java.
18167
18168When returning the actual values of the objects, this facility allows
18169for the individual selection of the display format used in the result
18170creation. It can be chosen among: binary, decimal, hexadecimal, octal
18171and natural. Natural refers to a default format automatically
18172chosen based on the variable type (like decimal for an @code{int}, hex
18173for pointers, etc.).
18174
18175The following is the complete set of @sc{gdb/mi} operations defined to
18176access this functionality:
18177
18178@multitable @columnfractions .4 .6
18179@item @strong{Operation}
18180@tab @strong{Description}
18181
18182@item @code{-var-create}
18183@tab create a variable object
18184@item @code{-var-delete}
18185@tab delete the variable object and its children
18186@item @code{-var-set-format}
18187@tab set the display format of this variable
18188@item @code{-var-show-format}
18189@tab show the display format of this variable
18190@item @code{-var-info-num-children}
18191@tab tells how many children this object has
18192@item @code{-var-list-children}
18193@tab return a list of the object's children
18194@item @code{-var-info-type}
18195@tab show the type of this variable object
18196@item @code{-var-info-expression}
18197@tab print what this variable object represents
18198@item @code{-var-show-attributes}
18199@tab is this variable editable? does it exist here?
18200@item @code{-var-evaluate-expression}
18201@tab get the value of this variable
18202@item @code{-var-assign}
18203@tab set the value of this variable
18204@item @code{-var-update}
18205@tab update the variable and its children
18206@end multitable
18207
18208In the next subsection we describe each operation in detail and suggest
18209how it can be used.
18210
18211@subheading Description And Use of Operations on Variable Objects
18212
18213@subheading The @code{-var-create} Command
18214@findex -var-create
18215
18216@subsubheading Synopsis
18217
18218@smallexample
18219 -var-create @{@var{name} | "-"@}
18220 @{@var{frame-addr} | "*"@} @var{expression}
18221@end smallexample
18222
18223This operation creates a variable object, which allows the monitoring of
18224a variable, the result of an expression, a memory cell or a CPU
18225register.
18226
18227The @var{name} parameter is the string by which the object can be
18228referenced. It must be unique. If @samp{-} is specified, the varobj
18229system will generate a string ``varNNNNNN'' automatically. It will be
18230unique provided that one does not specify @var{name} on that format.
18231The command fails if a duplicate name is found.
18232
18233The frame under which the expression should be evaluated can be
18234specified by @var{frame-addr}. A @samp{*} indicates that the current
18235frame should be used.
18236
18237@var{expression} is any expression valid on the current language set (must not
18238begin with a @samp{*}), or one of the following:
18239
18240@itemize @bullet
18241@item
18242@samp{*@var{addr}}, where @var{addr} is the address of a memory cell
18243
18244@item
18245@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
18246
18247@item
18248@samp{$@var{regname}} --- a CPU register name
18249@end itemize
18250
18251@subsubheading Result
18252
18253This operation returns the name, number of children and the type of the
18254object created. Type is returned as a string as the ones generated by
18255the @value{GDBN} CLI:
18256
18257@smallexample
18258 name="@var{name}",numchild="N",type="@var{type}"
18259@end smallexample
18260
18261
18262@subheading The @code{-var-delete} Command
18263@findex -var-delete
18264
18265@subsubheading Synopsis
18266
18267@smallexample
18268 -var-delete @var{name}
18269@end smallexample
18270
18271Deletes a previously created variable object and all of its children.
18272
18273Returns an error if the object @var{name} is not found.
18274
18275
18276@subheading The @code{-var-set-format} Command
18277@findex -var-set-format
18278
18279@subsubheading Synopsis
18280
18281@smallexample
18282 -var-set-format @var{name} @var{format-spec}
18283@end smallexample
18284
18285Sets the output format for the value of the object @var{name} to be
18286@var{format-spec}.
18287
18288The syntax for the @var{format-spec} is as follows:
18289
18290@smallexample
18291 @var{format-spec} @expansion{}
18292 @{binary | decimal | hexadecimal | octal | natural@}
18293@end smallexample
18294
18295
18296@subheading The @code{-var-show-format} Command
18297@findex -var-show-format
18298
18299@subsubheading Synopsis
18300
18301@smallexample
18302 -var-show-format @var{name}
18303@end smallexample
18304
18305Returns the format used to display the value of the object @var{name}.
18306
18307@smallexample
18308 @var{format} @expansion{}
18309 @var{format-spec}
18310@end smallexample
18311
18312
18313@subheading The @code{-var-info-num-children} Command
18314@findex -var-info-num-children
18315
18316@subsubheading Synopsis
18317
18318@smallexample
18319 -var-info-num-children @var{name}
18320@end smallexample
18321
18322Returns the number of children of a variable object @var{name}:
18323
18324@smallexample
18325 numchild=@var{n}
18326@end smallexample
18327
18328
18329@subheading The @code{-var-list-children} Command
18330@findex -var-list-children
18331
18332@subsubheading Synopsis
18333
18334@smallexample
bc8ced35 18335 -var-list-children [@var{print-values}] @var{name}
922fbb7b
AC
18336@end smallexample
18337
bc8ced35
NR
18338Returns a list of the children of the specified variable object. With
18339just the variable object name as an argument or with an optional
18340preceding argument of 0 or @code{--no-values}, prints only the names of the
18341variables. With an optional preceding argument of 1 or @code{--all-values},
18342also prints their values.
18343
18344@subsubheading Example
922fbb7b
AC
18345
18346@smallexample
bc8ced35
NR
18347(@value{GDBP})
18348 -var-list-children n
922fbb7b
AC
18349 numchild=@var{n},children=[@{name=@var{name},
18350 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
bc8ced35
NR
18351(@value{GDBP})
18352 -var-list-children --all-values n
18353 numchild=@var{n},children=[@{name=@var{name},
18354 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
922fbb7b
AC
18355@end smallexample
18356
18357
18358@subheading The @code{-var-info-type} Command
18359@findex -var-info-type
18360
18361@subsubheading Synopsis
18362
18363@smallexample
18364 -var-info-type @var{name}
18365@end smallexample
18366
18367Returns the type of the specified variable @var{name}. The type is
18368returned as a string in the same format as it is output by the
18369@value{GDBN} CLI:
18370
18371@smallexample
18372 type=@var{typename}
18373@end smallexample
18374
18375
18376@subheading The @code{-var-info-expression} Command
18377@findex -var-info-expression
18378
18379@subsubheading Synopsis
18380
18381@smallexample
18382 -var-info-expression @var{name}
18383@end smallexample
18384
18385Returns what is represented by the variable object @var{name}:
18386
18387@smallexample
18388 lang=@var{lang-spec},exp=@var{expression}
18389@end smallexample
18390
18391@noindent
18392where @var{lang-spec} is @code{@{"C" | "C++" | "Java"@}}.
18393
18394@subheading The @code{-var-show-attributes} Command
18395@findex -var-show-attributes
18396
18397@subsubheading Synopsis
18398
18399@smallexample
18400 -var-show-attributes @var{name}
18401@end smallexample
18402
18403List attributes of the specified variable object @var{name}:
18404
18405@smallexample
18406 status=@var{attr} [ ( ,@var{attr} )* ]
18407@end smallexample
18408
18409@noindent
18410where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
18411
18412@subheading The @code{-var-evaluate-expression} Command
18413@findex -var-evaluate-expression
18414
18415@subsubheading Synopsis
18416
18417@smallexample
18418 -var-evaluate-expression @var{name}
18419@end smallexample
18420
18421Evaluates the expression that is represented by the specified variable
18422object and returns its value as a string in the current format specified
18423for the object:
18424
18425@smallexample
18426 value=@var{value}
18427@end smallexample
18428
18429Note that one must invoke @code{-var-list-children} for a variable
18430before the value of a child variable can be evaluated.
18431
18432@subheading The @code{-var-assign} Command
18433@findex -var-assign
18434
18435@subsubheading Synopsis
18436
18437@smallexample
18438 -var-assign @var{name} @var{expression}
18439@end smallexample
18440
18441Assigns the value of @var{expression} to the variable object specified
18442by @var{name}. The object must be @samp{editable}. If the variable's
b383017d 18443value is altered by the assign, the variable will show up in any
922fbb7b
AC
18444subsequent @code{-var-update} list.
18445
18446@subsubheading Example
18447
18448@smallexample
18449(@value{GDBP})
18450-var-assign var1 3
18451^done,value="3"
18452(@value{GDBP})
18453-var-update *
18454^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
18455(@value{GDBP})
18456@end smallexample
18457
18458@subheading The @code{-var-update} Command
18459@findex -var-update
18460
18461@subsubheading Synopsis
18462
18463@smallexample
18464 -var-update @{@var{name} | "*"@}
18465@end smallexample
18466
18467Update the value of the variable object @var{name} by evaluating its
18468expression after fetching all the new values from memory or registers.
18469A @samp{*} causes all existing variable objects to be updated.
18470
18471
18472@node Annotations
18473@chapter @value{GDBN} Annotations
18474
086432e2
AC
18475This chapter describes annotations in @value{GDBN}. Annotations were
18476designed to interface @value{GDBN} to graphical user interfaces or other
18477similar programs which want to interact with @value{GDBN} at a
922fbb7b
AC
18478relatively high level.
18479
086432e2
AC
18480The annotation mechanism has largely been superseeded by @sc{gdb/mi}
18481(@pxref{GDB/MI}).
18482
922fbb7b
AC
18483@ignore
18484This is Edition @value{EDITION}, @value{DATE}.
18485@end ignore
18486
18487@menu
18488* Annotations Overview:: What annotations are; the general syntax.
18489* Server Prefix:: Issuing a command without affecting user state.
922fbb7b
AC
18490* Prompting:: Annotations marking @value{GDBN}'s need for input.
18491* Errors:: Annotations for error messages.
922fbb7b
AC
18492* Invalidation:: Some annotations describe things now invalid.
18493* Annotations for Running::
18494 Whether the program is running, how it stopped, etc.
18495* Source Annotations:: Annotations describing source code.
922fbb7b
AC
18496@end menu
18497
18498@node Annotations Overview
18499@section What is an Annotation?
18500@cindex annotations
18501
922fbb7b
AC
18502Annotations start with a newline character, two @samp{control-z}
18503characters, and the name of the annotation. If there is no additional
18504information associated with this annotation, the name of the annotation
18505is followed immediately by a newline. If there is additional
18506information, the name of the annotation is followed by a space, the
18507additional information, and a newline. The additional information
18508cannot contain newline characters.
18509
18510Any output not beginning with a newline and two @samp{control-z}
18511characters denotes literal output from @value{GDBN}. Currently there is
18512no need for @value{GDBN} to output a newline followed by two
18513@samp{control-z} characters, but if there was such a need, the
18514annotations could be extended with an @samp{escape} annotation which
18515means those three characters as output.
18516
086432e2
AC
18517The annotation @var{level}, which is specified using the
18518@option{--annotate} command line option (@pxref{Mode Options}), controls
18519how much information @value{GDBN} prints together with its prompt,
18520values of expressions, source lines, and other types of output. Level 0
18521is for no anntations, level 1 is for use when @value{GDBN} is run as a
18522subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
18523for programs that control @value{GDBN}, and level 2 annotations have
18524been made obsolete (@pxref{Limitations, , Limitations of the Annotation
18525Interface, annotate, GDB's Obsolete Annotations}). This chapter
18526describes level 3 annotations.
18527
922fbb7b
AC
18528A simple example of starting up @value{GDBN} with annotations is:
18529
18530@smallexample
086432e2
AC
18531$ @kbd{gdb --annotate=3}
18532GNU gdb 6.0
18533Copyright 2003 Free Software Foundation, Inc.
922fbb7b
AC
18534GDB is free software, covered by the GNU General Public License,
18535and you are welcome to change it and/or distribute copies of it
18536under certain conditions.
18537Type "show copying" to see the conditions.
18538There is absolutely no warranty for GDB. Type "show warranty"
18539for details.
086432e2 18540This GDB was configured as "i386-pc-linux-gnu"
922fbb7b
AC
18541
18542^Z^Zpre-prompt
f7dc1244 18543(@value{GDBP})
922fbb7b 18544^Z^Zprompt
086432e2 18545@kbd{quit}
922fbb7b
AC
18546
18547^Z^Zpost-prompt
b383017d 18548$
922fbb7b
AC
18549@end smallexample
18550
18551Here @samp{quit} is input to @value{GDBN}; the rest is output from
18552@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
18553denotes a @samp{control-z} character) are annotations; the rest is
18554output from @value{GDBN}.
18555
18556@node Server Prefix
18557@section The Server Prefix
18558@cindex server prefix for annotations
18559
18560To issue a command to @value{GDBN} without affecting certain aspects of
18561the state which is seen by users, prefix it with @samp{server }. This
18562means that this command will not affect the command history, nor will it
18563affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
18564pressed on a line by itself.
18565
18566The server prefix does not affect the recording of values into the value
18567history; to print a value without recording it into the value history,
18568use the @code{output} command instead of the @code{print} command.
18569
922fbb7b
AC
18570@node Prompting
18571@section Annotation for @value{GDBN} Input
18572
18573@cindex annotations for prompts
18574When @value{GDBN} prompts for input, it annotates this fact so it is possible
18575to know when to send output, when the output from a given command is
18576over, etc.
18577
18578Different kinds of input each have a different @dfn{input type}. Each
18579input type has three annotations: a @code{pre-} annotation, which
18580denotes the beginning of any prompt which is being output, a plain
18581annotation, which denotes the end of the prompt, and then a @code{post-}
18582annotation which denotes the end of any echo which may (or may not) be
18583associated with the input. For example, the @code{prompt} input type
18584features the following annotations:
18585
18586@smallexample
18587^Z^Zpre-prompt
18588^Z^Zprompt
18589^Z^Zpost-prompt
18590@end smallexample
18591
18592The input types are
18593
18594@table @code
18595@findex pre-prompt
18596@findex prompt
18597@findex post-prompt
18598@item prompt
18599When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
18600
18601@findex pre-commands
18602@findex commands
18603@findex post-commands
18604@item commands
18605When @value{GDBN} prompts for a set of commands, like in the @code{commands}
18606command. The annotations are repeated for each command which is input.
18607
18608@findex pre-overload-choice
18609@findex overload-choice
18610@findex post-overload-choice
18611@item overload-choice
18612When @value{GDBN} wants the user to select between various overloaded functions.
18613
18614@findex pre-query
18615@findex query
18616@findex post-query
18617@item query
18618When @value{GDBN} wants the user to confirm a potentially dangerous operation.
18619
18620@findex pre-prompt-for-continue
18621@findex prompt-for-continue
18622@findex post-prompt-for-continue
18623@item prompt-for-continue
18624When @value{GDBN} is asking the user to press return to continue. Note: Don't
18625expect this to work well; instead use @code{set height 0} to disable
18626prompting. This is because the counting of lines is buggy in the
18627presence of annotations.
18628@end table
18629
18630@node Errors
18631@section Errors
18632@cindex annotations for errors, warnings and interrupts
18633
18634@findex quit
18635@smallexample
18636^Z^Zquit
18637@end smallexample
18638
18639This annotation occurs right before @value{GDBN} responds to an interrupt.
18640
18641@findex error
18642@smallexample
18643^Z^Zerror
18644@end smallexample
18645
18646This annotation occurs right before @value{GDBN} responds to an error.
18647
18648Quit and error annotations indicate that any annotations which @value{GDBN} was
18649in the middle of may end abruptly. For example, if a
18650@code{value-history-begin} annotation is followed by a @code{error}, one
18651cannot expect to receive the matching @code{value-history-end}. One
18652cannot expect not to receive it either, however; an error annotation
18653does not necessarily mean that @value{GDBN} is immediately returning all the way
18654to the top level.
18655
18656@findex error-begin
18657A quit or error annotation may be preceded by
18658
18659@smallexample
18660^Z^Zerror-begin
18661@end smallexample
18662
18663Any output between that and the quit or error annotation is the error
18664message.
18665
18666Warning messages are not yet annotated.
18667@c If we want to change that, need to fix warning(), type_error(),
18668@c range_error(), and possibly other places.
18669
922fbb7b
AC
18670@node Invalidation
18671@section Invalidation Notices
18672
18673@cindex annotations for invalidation messages
18674The following annotations say that certain pieces of state may have
18675changed.
18676
18677@table @code
18678@findex frames-invalid
18679@item ^Z^Zframes-invalid
18680
18681The frames (for example, output from the @code{backtrace} command) may
18682have changed.
18683
18684@findex breakpoints-invalid
18685@item ^Z^Zbreakpoints-invalid
18686
18687The breakpoints may have changed. For example, the user just added or
18688deleted a breakpoint.
18689@end table
18690
18691@node Annotations for Running
18692@section Running the Program
18693@cindex annotations for running programs
18694
18695@findex starting
18696@findex stopping
18697When the program starts executing due to a @value{GDBN} command such as
b383017d 18698@code{step} or @code{continue},
922fbb7b
AC
18699
18700@smallexample
18701^Z^Zstarting
18702@end smallexample
18703
b383017d 18704is output. When the program stops,
922fbb7b
AC
18705
18706@smallexample
18707^Z^Zstopped
18708@end smallexample
18709
18710is output. Before the @code{stopped} annotation, a variety of
18711annotations describe how the program stopped.
18712
18713@table @code
18714@findex exited
18715@item ^Z^Zexited @var{exit-status}
18716The program exited, and @var{exit-status} is the exit status (zero for
18717successful exit, otherwise nonzero).
18718
18719@findex signalled
18720@findex signal-name
18721@findex signal-name-end
18722@findex signal-string
18723@findex signal-string-end
18724@item ^Z^Zsignalled
18725The program exited with a signal. After the @code{^Z^Zsignalled}, the
18726annotation continues:
18727
18728@smallexample
18729@var{intro-text}
18730^Z^Zsignal-name
18731@var{name}
18732^Z^Zsignal-name-end
18733@var{middle-text}
18734^Z^Zsignal-string
18735@var{string}
18736^Z^Zsignal-string-end
18737@var{end-text}
18738@end smallexample
18739
18740@noindent
18741where @var{name} is the name of the signal, such as @code{SIGILL} or
18742@code{SIGSEGV}, and @var{string} is the explanation of the signal, such
18743as @code{Illegal Instruction} or @code{Segmentation fault}.
18744@var{intro-text}, @var{middle-text}, and @var{end-text} are for the
18745user's benefit and have no particular format.
18746
18747@findex signal
18748@item ^Z^Zsignal
18749The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
18750just saying that the program received the signal, not that it was
18751terminated with it.
18752
18753@findex breakpoint
18754@item ^Z^Zbreakpoint @var{number}
18755The program hit breakpoint number @var{number}.
18756
18757@findex watchpoint
18758@item ^Z^Zwatchpoint @var{number}
18759The program hit watchpoint number @var{number}.
18760@end table
18761
18762@node Source Annotations
18763@section Displaying Source
18764@cindex annotations for source display
18765
18766@findex source
18767The following annotation is used instead of displaying source code:
18768
18769@smallexample
18770^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
18771@end smallexample
18772
18773where @var{filename} is an absolute file name indicating which source
18774file, @var{line} is the line number within that file (where 1 is the
18775first line in the file), @var{character} is the character position
18776within the file (where 0 is the first character in the file) (for most
18777debug formats this will necessarily point to the beginning of a line),
18778@var{middle} is @samp{middle} if @var{addr} is in the middle of the
18779line, or @samp{beg} if @var{addr} is at the beginning of the line, and
18780@var{addr} is the address in the target program associated with the
18781source which is being displayed. @var{addr} is in the form @samp{0x}
18782followed by one or more lowercase hex digits (note that this does not
18783depend on the language).
18784
8e04817f
AC
18785@node GDB Bugs
18786@chapter Reporting Bugs in @value{GDBN}
18787@cindex bugs in @value{GDBN}
18788@cindex reporting bugs in @value{GDBN}
c906108c 18789
8e04817f 18790Your bug reports play an essential role in making @value{GDBN} reliable.
c906108c 18791
8e04817f
AC
18792Reporting a bug may help you by bringing a solution to your problem, or it
18793may not. But in any case the principal function of a bug report is to help
18794the entire community by making the next version of @value{GDBN} work better. Bug
18795reports are your contribution to the maintenance of @value{GDBN}.
c906108c 18796
8e04817f
AC
18797In order for a bug report to serve its purpose, you must include the
18798information that enables us to fix the bug.
c4555f82
SC
18799
18800@menu
8e04817f
AC
18801* Bug Criteria:: Have you found a bug?
18802* Bug Reporting:: How to report bugs
c4555f82
SC
18803@end menu
18804
8e04817f
AC
18805@node Bug Criteria
18806@section Have you found a bug?
18807@cindex bug criteria
c4555f82 18808
8e04817f 18809If you are not sure whether you have found a bug, here are some guidelines:
c4555f82
SC
18810
18811@itemize @bullet
8e04817f
AC
18812@cindex fatal signal
18813@cindex debugger crash
18814@cindex crash of debugger
c4555f82 18815@item
8e04817f
AC
18816If the debugger gets a fatal signal, for any input whatever, that is a
18817@value{GDBN} bug. Reliable debuggers never crash.
18818
18819@cindex error on valid input
18820@item
18821If @value{GDBN} produces an error message for valid input, that is a
18822bug. (Note that if you're cross debugging, the problem may also be
18823somewhere in the connection to the target.)
c4555f82 18824
8e04817f 18825@cindex invalid input
c4555f82 18826@item
8e04817f
AC
18827If @value{GDBN} does not produce an error message for invalid input,
18828that is a bug. However, you should note that your idea of
18829``invalid input'' might be our idea of ``an extension'' or ``support
18830for traditional practice''.
18831
18832@item
18833If you are an experienced user of debugging tools, your suggestions
18834for improvement of @value{GDBN} are welcome in any case.
c4555f82
SC
18835@end itemize
18836
8e04817f
AC
18837@node Bug Reporting
18838@section How to report bugs
18839@cindex bug reports
18840@cindex @value{GDBN} bugs, reporting
18841
18842A number of companies and individuals offer support for @sc{gnu} products.
18843If you obtained @value{GDBN} from a support organization, we recommend you
18844contact that organization first.
18845
18846You can find contact information for many support companies and
18847individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
18848distribution.
18849@c should add a web page ref...
18850
129188f6
AC
18851In any event, we also recommend that you submit bug reports for
18852@value{GDBN}. The prefered method is to submit them directly using
18853@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
18854page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
18855be used.
8e04817f
AC
18856
18857@strong{Do not send bug reports to @samp{info-gdb}, or to
18858@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
18859not want to receive bug reports. Those that do have arranged to receive
18860@samp{bug-gdb}.
18861
18862The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
18863serves as a repeater. The mailing list and the newsgroup carry exactly
18864the same messages. Often people think of posting bug reports to the
18865newsgroup instead of mailing them. This appears to work, but it has one
18866problem which can be crucial: a newsgroup posting often lacks a mail
18867path back to the sender. Thus, if we need to ask for more information,
18868we may be unable to reach you. For this reason, it is better to send
18869bug reports to the mailing list.
c4555f82 18870
8e04817f
AC
18871The fundamental principle of reporting bugs usefully is this:
18872@strong{report all the facts}. If you are not sure whether to state a
18873fact or leave it out, state it!
c4555f82 18874
8e04817f
AC
18875Often people omit facts because they think they know what causes the
18876problem and assume that some details do not matter. Thus, you might
18877assume that the name of the variable you use in an example does not matter.
18878Well, probably it does not, but one cannot be sure. Perhaps the bug is a
18879stray memory reference which happens to fetch from the location where that
18880name is stored in memory; perhaps, if the name were different, the contents
18881of that location would fool the debugger into doing the right thing despite
18882the bug. Play it safe and give a specific, complete example. That is the
18883easiest thing for you to do, and the most helpful.
c4555f82 18884
8e04817f
AC
18885Keep in mind that the purpose of a bug report is to enable us to fix the
18886bug. It may be that the bug has been reported previously, but neither
18887you nor we can know that unless your bug report is complete and
18888self-contained.
c4555f82 18889
8e04817f
AC
18890Sometimes people give a few sketchy facts and ask, ``Does this ring a
18891bell?'' Those bug reports are useless, and we urge everyone to
18892@emph{refuse to respond to them} except to chide the sender to report
18893bugs properly.
18894
18895To enable us to fix the bug, you should include all these things:
c4555f82
SC
18896
18897@itemize @bullet
18898@item
8e04817f
AC
18899The version of @value{GDBN}. @value{GDBN} announces it if you start
18900with no arguments; you can also print it at any time using @code{show
18901version}.
c4555f82 18902
8e04817f
AC
18903Without this, we will not know whether there is any point in looking for
18904the bug in the current version of @value{GDBN}.
c4555f82
SC
18905
18906@item
8e04817f
AC
18907The type of machine you are using, and the operating system name and
18908version number.
c4555f82
SC
18909
18910@item
8e04817f
AC
18911What compiler (and its version) was used to compile @value{GDBN}---e.g.
18912``@value{GCC}--2.8.1''.
c4555f82
SC
18913
18914@item
8e04817f
AC
18915What compiler (and its version) was used to compile the program you are
18916debugging---e.g. ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
18917C Compiler''. For GCC, you can say @code{gcc --version} to get this
18918information; for other compilers, see the documentation for those
18919compilers.
c4555f82 18920
8e04817f
AC
18921@item
18922The command arguments you gave the compiler to compile your example and
18923observe the bug. For example, did you use @samp{-O}? To guarantee
18924you will not omit something important, list them all. A copy of the
18925Makefile (or the output from make) is sufficient.
c4555f82 18926
8e04817f
AC
18927If we were to try to guess the arguments, we would probably guess wrong
18928and then we might not encounter the bug.
c4555f82 18929
8e04817f
AC
18930@item
18931A complete input script, and all necessary source files, that will
18932reproduce the bug.
c4555f82 18933
8e04817f
AC
18934@item
18935A description of what behavior you observe that you believe is
18936incorrect. For example, ``It gets a fatal signal.''
c4555f82 18937
8e04817f
AC
18938Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
18939will certainly notice it. But if the bug is incorrect output, we might
18940not notice unless it is glaringly wrong. You might as well not give us
18941a chance to make a mistake.
c4555f82 18942
8e04817f
AC
18943Even if the problem you experience is a fatal signal, you should still
18944say so explicitly. Suppose something strange is going on, such as, your
18945copy of @value{GDBN} is out of synch, or you have encountered a bug in
18946the C library on your system. (This has happened!) Your copy might
18947crash and ours would not. If you told us to expect a crash, then when
18948ours fails to crash, we would know that the bug was not happening for
18949us. If you had not told us to expect a crash, then we would not be able
18950to draw any conclusion from our observations.
c4555f82 18951
e0c07bf0
MC
18952@pindex script
18953@cindex recording a session script
18954To collect all this information, you can use a session recording program
18955such as @command{script}, which is available on many Unix systems.
18956Just run your @value{GDBN} session inside @command{script} and then
18957include the @file{typescript} file with your bug report.
18958
18959Another way to record a @value{GDBN} session is to run @value{GDBN}
18960inside Emacs and then save the entire buffer to a file.
18961
8e04817f
AC
18962@item
18963If you wish to suggest changes to the @value{GDBN} source, send us context
18964diffs. If you even discuss something in the @value{GDBN} source, refer to
18965it by context, not by line number.
c4555f82 18966
8e04817f
AC
18967The line numbers in our development sources will not match those in your
18968sources. Your line numbers would convey no useful information to us.
c4555f82 18969
8e04817f 18970@end itemize
c4555f82 18971
8e04817f 18972Here are some things that are not necessary:
c4555f82 18973
8e04817f
AC
18974@itemize @bullet
18975@item
18976A description of the envelope of the bug.
c4555f82 18977
8e04817f
AC
18978Often people who encounter a bug spend a lot of time investigating
18979which changes to the input file will make the bug go away and which
18980changes will not affect it.
c4555f82 18981
8e04817f
AC
18982This is often time consuming and not very useful, because the way we
18983will find the bug is by running a single example under the debugger
18984with breakpoints, not by pure deduction from a series of examples.
18985We recommend that you save your time for something else.
c4555f82 18986
8e04817f
AC
18987Of course, if you can find a simpler example to report @emph{instead}
18988of the original one, that is a convenience for us. Errors in the
18989output will be easier to spot, running under the debugger will take
18990less time, and so on.
c4555f82 18991
8e04817f
AC
18992However, simplification is not vital; if you do not want to do this,
18993report the bug anyway and send us the entire test case you used.
c4555f82 18994
8e04817f
AC
18995@item
18996A patch for the bug.
c4555f82 18997
8e04817f
AC
18998A patch for the bug does help us if it is a good one. But do not omit
18999the necessary information, such as the test case, on the assumption that
19000a patch is all we need. We might see problems with your patch and decide
19001to fix the problem another way, or we might not understand it at all.
c4555f82 19002
8e04817f
AC
19003Sometimes with a program as complicated as @value{GDBN} it is very hard to
19004construct an example that will make the program follow a certain path
19005through the code. If you do not send us the example, we will not be able
19006to construct one, so we will not be able to verify that the bug is fixed.
c4555f82 19007
8e04817f
AC
19008And if we cannot understand what bug you are trying to fix, or why your
19009patch should be an improvement, we will not install it. A test case will
19010help us to understand.
c4555f82 19011
8e04817f
AC
19012@item
19013A guess about what the bug is or what it depends on.
c4555f82 19014
8e04817f
AC
19015Such guesses are usually wrong. Even we cannot guess right about such
19016things without first using the debugger to find the facts.
19017@end itemize
c4555f82 19018
8e04817f
AC
19019@c The readline documentation is distributed with the readline code
19020@c and consists of the two following files:
19021@c rluser.texinfo
19022@c inc-hist.texinfo
19023@c Use -I with makeinfo to point to the appropriate directory,
19024@c environment var TEXINPUTS with TeX.
19025@include rluser.texinfo
19026@include inc-hist.texinfo
c4555f82 19027
c4555f82 19028
8e04817f
AC
19029@node Formatting Documentation
19030@appendix Formatting Documentation
c4555f82 19031
8e04817f
AC
19032@cindex @value{GDBN} reference card
19033@cindex reference card
19034The @value{GDBN} 4 release includes an already-formatted reference card, ready
19035for printing with PostScript or Ghostscript, in the @file{gdb}
19036subdirectory of the main source directory@footnote{In
19037@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
19038release.}. If you can use PostScript or Ghostscript with your printer,
19039you can print the reference card immediately with @file{refcard.ps}.
c4555f82 19040
8e04817f
AC
19041The release also includes the source for the reference card. You
19042can format it, using @TeX{}, by typing:
c4555f82 19043
474c8240 19044@smallexample
8e04817f 19045make refcard.dvi
474c8240 19046@end smallexample
c4555f82 19047
8e04817f
AC
19048The @value{GDBN} reference card is designed to print in @dfn{landscape}
19049mode on US ``letter'' size paper;
19050that is, on a sheet 11 inches wide by 8.5 inches
19051high. You will need to specify this form of printing as an option to
19052your @sc{dvi} output program.
c4555f82 19053
8e04817f 19054@cindex documentation
c4555f82 19055
8e04817f
AC
19056All the documentation for @value{GDBN} comes as part of the machine-readable
19057distribution. The documentation is written in Texinfo format, which is
19058a documentation system that uses a single source file to produce both
19059on-line information and a printed manual. You can use one of the Info
19060formatting commands to create the on-line version of the documentation
19061and @TeX{} (or @code{texi2roff}) to typeset the printed version.
c4555f82 19062
8e04817f
AC
19063@value{GDBN} includes an already formatted copy of the on-line Info
19064version of this manual in the @file{gdb} subdirectory. The main Info
19065file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
19066subordinate files matching @samp{gdb.info*} in the same directory. If
19067necessary, you can print out these files, or read them with any editor;
19068but they are easier to read using the @code{info} subsystem in @sc{gnu}
19069Emacs or the standalone @code{info} program, available as part of the
19070@sc{gnu} Texinfo distribution.
c4555f82 19071
8e04817f
AC
19072If you want to format these Info files yourself, you need one of the
19073Info formatting programs, such as @code{texinfo-format-buffer} or
19074@code{makeinfo}.
c4555f82 19075
8e04817f
AC
19076If you have @code{makeinfo} installed, and are in the top level
19077@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
19078version @value{GDBVN}), you can make the Info file by typing:
c4555f82 19079
474c8240 19080@smallexample
8e04817f
AC
19081cd gdb
19082make gdb.info
474c8240 19083@end smallexample
c4555f82 19084
8e04817f
AC
19085If you want to typeset and print copies of this manual, you need @TeX{},
19086a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
19087Texinfo definitions file.
c4555f82 19088
8e04817f
AC
19089@TeX{} is a typesetting program; it does not print files directly, but
19090produces output files called @sc{dvi} files. To print a typeset
19091document, you need a program to print @sc{dvi} files. If your system
19092has @TeX{} installed, chances are it has such a program. The precise
19093command to use depends on your system; @kbd{lpr -d} is common; another
19094(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
19095require a file name without any extension or a @samp{.dvi} extension.
c4555f82 19096
8e04817f
AC
19097@TeX{} also requires a macro definitions file called
19098@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
19099written in Texinfo format. On its own, @TeX{} cannot either read or
19100typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
19101and is located in the @file{gdb-@var{version-number}/texinfo}
19102directory.
c4555f82 19103
8e04817f
AC
19104If you have @TeX{} and a @sc{dvi} printer program installed, you can
19105typeset and print this manual. First switch to the the @file{gdb}
19106subdirectory of the main source directory (for example, to
19107@file{gdb-@value{GDBVN}/gdb}) and type:
c4555f82 19108
474c8240 19109@smallexample
8e04817f 19110make gdb.dvi
474c8240 19111@end smallexample
c4555f82 19112
8e04817f 19113Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c4555f82 19114
8e04817f
AC
19115@node Installing GDB
19116@appendix Installing @value{GDBN}
19117@cindex configuring @value{GDBN}
19118@cindex installation
94e91d6d 19119@cindex configuring @value{GDBN}, and source tree subdirectories
c4555f82 19120
8e04817f
AC
19121@value{GDBN} comes with a @code{configure} script that automates the process
19122of preparing @value{GDBN} for installation; you can then use @code{make} to
19123build the @code{gdb} program.
19124@iftex
19125@c irrelevant in info file; it's as current as the code it lives with.
19126@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
19127look at the @file{README} file in the sources; we may have improved the
19128installation procedures since publishing this manual.}
19129@end iftex
c4555f82 19130
8e04817f
AC
19131The @value{GDBN} distribution includes all the source code you need for
19132@value{GDBN} in a single directory, whose name is usually composed by
19133appending the version number to @samp{gdb}.
c4555f82 19134
8e04817f
AC
19135For example, the @value{GDBN} version @value{GDBVN} distribution is in the
19136@file{gdb-@value{GDBVN}} directory. That directory contains:
c4555f82 19137
8e04817f
AC
19138@table @code
19139@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
19140script for configuring @value{GDBN} and all its supporting libraries
c4555f82 19141
8e04817f
AC
19142@item gdb-@value{GDBVN}/gdb
19143the source specific to @value{GDBN} itself
c4555f82 19144
8e04817f
AC
19145@item gdb-@value{GDBVN}/bfd
19146source for the Binary File Descriptor library
c906108c 19147
8e04817f
AC
19148@item gdb-@value{GDBVN}/include
19149@sc{gnu} include files
c906108c 19150
8e04817f
AC
19151@item gdb-@value{GDBVN}/libiberty
19152source for the @samp{-liberty} free software library
c906108c 19153
8e04817f
AC
19154@item gdb-@value{GDBVN}/opcodes
19155source for the library of opcode tables and disassemblers
c906108c 19156
8e04817f
AC
19157@item gdb-@value{GDBVN}/readline
19158source for the @sc{gnu} command-line interface
c906108c 19159
8e04817f
AC
19160@item gdb-@value{GDBVN}/glob
19161source for the @sc{gnu} filename pattern-matching subroutine
c906108c 19162
8e04817f
AC
19163@item gdb-@value{GDBVN}/mmalloc
19164source for the @sc{gnu} memory-mapped malloc package
19165@end table
c906108c 19166
8e04817f
AC
19167The simplest way to configure and build @value{GDBN} is to run @code{configure}
19168from the @file{gdb-@var{version-number}} source directory, which in
19169this example is the @file{gdb-@value{GDBVN}} directory.
c906108c 19170
8e04817f
AC
19171First switch to the @file{gdb-@var{version-number}} source directory
19172if you are not already in it; then run @code{configure}. Pass the
19173identifier for the platform on which @value{GDBN} will run as an
19174argument.
c906108c 19175
8e04817f 19176For example:
c906108c 19177
474c8240 19178@smallexample
8e04817f
AC
19179cd gdb-@value{GDBVN}
19180./configure @var{host}
19181make
474c8240 19182@end smallexample
c906108c 19183
8e04817f
AC
19184@noindent
19185where @var{host} is an identifier such as @samp{sun4} or
19186@samp{decstation}, that identifies the platform where @value{GDBN} will run.
19187(You can often leave off @var{host}; @code{configure} tries to guess the
19188correct value by examining your system.)
c906108c 19189
8e04817f
AC
19190Running @samp{configure @var{host}} and then running @code{make} builds the
19191@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
19192libraries, then @code{gdb} itself. The configured source files, and the
19193binaries, are left in the corresponding source directories.
c906108c 19194
8e04817f
AC
19195@need 750
19196@code{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
19197system does not recognize this automatically when you run a different
19198shell, you may need to run @code{sh} on it explicitly:
c906108c 19199
474c8240 19200@smallexample
8e04817f 19201sh configure @var{host}
474c8240 19202@end smallexample
c906108c 19203
8e04817f
AC
19204If you run @code{configure} from a directory that contains source
19205directories for multiple libraries or programs, such as the
19206@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN}, @code{configure}
19207creates configuration files for every directory level underneath (unless
19208you tell it not to, with the @samp{--norecursion} option).
19209
94e91d6d
MC
19210You should run the @code{configure} script from the top directory in the
19211source tree, the @file{gdb-@var{version-number}} directory. If you run
19212@code{configure} from one of the subdirectories, you will configure only
19213that subdirectory. That is usually not what you want. In particular,
19214if you run the first @code{configure} from the @file{gdb} subdirectory
19215of the @file{gdb-@var{version-number}} directory, you will omit the
19216configuration of @file{bfd}, @file{readline}, and other sibling
19217directories of the @file{gdb} subdirectory. This leads to build errors
19218about missing include files such as @file{bfd/bfd.h}.
c906108c 19219
8e04817f
AC
19220You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
19221However, you should make sure that the shell on your path (named by
19222the @samp{SHELL} environment variable) is publicly readable. Remember
19223that @value{GDBN} uses the shell to start your program---some systems refuse to
19224let @value{GDBN} debug child processes whose programs are not readable.
c906108c 19225
8e04817f
AC
19226@menu
19227* Separate Objdir:: Compiling @value{GDBN} in another directory
19228* Config Names:: Specifying names for hosts and targets
19229* Configure Options:: Summary of options for configure
19230@end menu
c906108c 19231
8e04817f
AC
19232@node Separate Objdir
19233@section Compiling @value{GDBN} in another directory
c906108c 19234
8e04817f
AC
19235If you want to run @value{GDBN} versions for several host or target machines,
19236you need a different @code{gdb} compiled for each combination of
19237host and target. @code{configure} is designed to make this easy by
19238allowing you to generate each configuration in a separate subdirectory,
19239rather than in the source directory. If your @code{make} program
19240handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
19241@code{make} in each of these directories builds the @code{gdb}
19242program specified there.
c906108c 19243
8e04817f
AC
19244To build @code{gdb} in a separate directory, run @code{configure}
19245with the @samp{--srcdir} option to specify where to find the source.
19246(You also need to specify a path to find @code{configure}
19247itself from your working directory. If the path to @code{configure}
19248would be the same as the argument to @samp{--srcdir}, you can leave out
19249the @samp{--srcdir} option; it is assumed.)
c906108c 19250
8e04817f
AC
19251For example, with version @value{GDBVN}, you can build @value{GDBN} in a
19252separate directory for a Sun 4 like this:
c906108c 19253
474c8240 19254@smallexample
8e04817f
AC
19255@group
19256cd gdb-@value{GDBVN}
19257mkdir ../gdb-sun4
19258cd ../gdb-sun4
19259../gdb-@value{GDBVN}/configure sun4
19260make
19261@end group
474c8240 19262@end smallexample
c906108c 19263
8e04817f
AC
19264When @code{configure} builds a configuration using a remote source
19265directory, it creates a tree for the binaries with the same structure
19266(and using the same names) as the tree under the source directory. In
19267the example, you'd find the Sun 4 library @file{libiberty.a} in the
19268directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
19269@file{gdb-sun4/gdb}.
c906108c 19270
94e91d6d
MC
19271Make sure that your path to the @file{configure} script has just one
19272instance of @file{gdb} in it. If your path to @file{configure} looks
19273like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
19274one subdirectory of @value{GDBN}, not the whole package. This leads to
19275build errors about missing include files such as @file{bfd/bfd.h}.
19276
8e04817f
AC
19277One popular reason to build several @value{GDBN} configurations in separate
19278directories is to configure @value{GDBN} for cross-compiling (where
19279@value{GDBN} runs on one machine---the @dfn{host}---while debugging
19280programs that run on another machine---the @dfn{target}).
19281You specify a cross-debugging target by
19282giving the @samp{--target=@var{target}} option to @code{configure}.
c906108c 19283
8e04817f
AC
19284When you run @code{make} to build a program or library, you must run
19285it in a configured directory---whatever directory you were in when you
19286called @code{configure} (or one of its subdirectories).
c906108c 19287
8e04817f
AC
19288The @code{Makefile} that @code{configure} generates in each source
19289directory also runs recursively. If you type @code{make} in a source
19290directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
19291directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
19292will build all the required libraries, and then build GDB.
c906108c 19293
8e04817f
AC
19294When you have multiple hosts or targets configured in separate
19295directories, you can run @code{make} on them in parallel (for example,
19296if they are NFS-mounted on each of the hosts); they will not interfere
19297with each other.
c906108c 19298
8e04817f
AC
19299@node Config Names
19300@section Specifying names for hosts and targets
c906108c 19301
8e04817f
AC
19302The specifications used for hosts and targets in the @code{configure}
19303script are based on a three-part naming scheme, but some short predefined
19304aliases are also supported. The full naming scheme encodes three pieces
19305of information in the following pattern:
c906108c 19306
474c8240 19307@smallexample
8e04817f 19308@var{architecture}-@var{vendor}-@var{os}
474c8240 19309@end smallexample
c906108c 19310
8e04817f
AC
19311For example, you can use the alias @code{sun4} as a @var{host} argument,
19312or as the value for @var{target} in a @code{--target=@var{target}}
19313option. The equivalent full name is @samp{sparc-sun-sunos4}.
c906108c 19314
8e04817f
AC
19315The @code{configure} script accompanying @value{GDBN} does not provide
19316any query facility to list all supported host and target names or
19317aliases. @code{configure} calls the Bourne shell script
19318@code{config.sub} to map abbreviations to full names; you can read the
19319script, if you wish, or you can use it to test your guesses on
19320abbreviations---for example:
c906108c 19321
8e04817f
AC
19322@smallexample
19323% sh config.sub i386-linux
19324i386-pc-linux-gnu
19325% sh config.sub alpha-linux
19326alpha-unknown-linux-gnu
19327% sh config.sub hp9k700
19328hppa1.1-hp-hpux
19329% sh config.sub sun4
19330sparc-sun-sunos4.1.1
19331% sh config.sub sun3
19332m68k-sun-sunos4.1.1
19333% sh config.sub i986v
19334Invalid configuration `i986v': machine `i986v' not recognized
19335@end smallexample
c906108c 19336
8e04817f
AC
19337@noindent
19338@code{config.sub} is also distributed in the @value{GDBN} source
19339directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
d700128c 19340
8e04817f
AC
19341@node Configure Options
19342@section @code{configure} options
c906108c 19343
8e04817f
AC
19344Here is a summary of the @code{configure} options and arguments that
19345are most often useful for building @value{GDBN}. @code{configure} also has
19346several other options not listed here. @inforef{What Configure
19347Does,,configure.info}, for a full explanation of @code{configure}.
c906108c 19348
474c8240 19349@smallexample
8e04817f
AC
19350configure @r{[}--help@r{]}
19351 @r{[}--prefix=@var{dir}@r{]}
19352 @r{[}--exec-prefix=@var{dir}@r{]}
19353 @r{[}--srcdir=@var{dirname}@r{]}
19354 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
19355 @r{[}--target=@var{target}@r{]}
19356 @var{host}
474c8240 19357@end smallexample
c906108c 19358
8e04817f
AC
19359@noindent
19360You may introduce options with a single @samp{-} rather than
19361@samp{--} if you prefer; but you may abbreviate option names if you use
19362@samp{--}.
c906108c 19363
8e04817f
AC
19364@table @code
19365@item --help
19366Display a quick summary of how to invoke @code{configure}.
c906108c 19367
8e04817f
AC
19368@item --prefix=@var{dir}
19369Configure the source to install programs and files under directory
19370@file{@var{dir}}.
c906108c 19371
8e04817f
AC
19372@item --exec-prefix=@var{dir}
19373Configure the source to install programs under directory
19374@file{@var{dir}}.
c906108c 19375
8e04817f
AC
19376@c avoid splitting the warning from the explanation:
19377@need 2000
19378@item --srcdir=@var{dirname}
19379@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
19380@code{make} that implements the @code{VPATH} feature.}@*
19381Use this option to make configurations in directories separate from the
19382@value{GDBN} source directories. Among other things, you can use this to
19383build (or maintain) several configurations simultaneously, in separate
19384directories. @code{configure} writes configuration specific files in
19385the current directory, but arranges for them to use the source in the
19386directory @var{dirname}. @code{configure} creates directories under
19387the working directory in parallel to the source directories below
19388@var{dirname}.
c906108c 19389
8e04817f
AC
19390@item --norecursion
19391Configure only the directory level where @code{configure} is executed; do not
19392propagate configuration to subdirectories.
c906108c 19393
8e04817f
AC
19394@item --target=@var{target}
19395Configure @value{GDBN} for cross-debugging programs running on the specified
19396@var{target}. Without this option, @value{GDBN} is configured to debug
19397programs that run on the same machine (@var{host}) as @value{GDBN} itself.
c906108c 19398
8e04817f 19399There is no convenient way to generate a list of all available targets.
c906108c 19400
8e04817f
AC
19401@item @var{host} @dots{}
19402Configure @value{GDBN} to run on the specified @var{host}.
c906108c 19403
8e04817f
AC
19404There is no convenient way to generate a list of all available hosts.
19405@end table
c906108c 19406
8e04817f
AC
19407There are many other options available as well, but they are generally
19408needed for special purposes only.
c906108c 19409
8e04817f
AC
19410@node Maintenance Commands
19411@appendix Maintenance Commands
19412@cindex maintenance commands
19413@cindex internal commands
c906108c 19414
8e04817f
AC
19415In addition to commands intended for @value{GDBN} users, @value{GDBN}
19416includes a number of commands intended for @value{GDBN} developers.
19417These commands are provided here for reference.
c906108c 19418
8e04817f
AC
19419@table @code
19420@kindex maint info breakpoints
19421@item @anchor{maint info breakpoints}maint info breakpoints
19422Using the same format as @samp{info breakpoints}, display both the
19423breakpoints you've set explicitly, and those @value{GDBN} is using for
19424internal purposes. Internal breakpoints are shown with negative
19425breakpoint numbers. The type column identifies what kind of breakpoint
19426is shown:
c906108c 19427
8e04817f
AC
19428@table @code
19429@item breakpoint
19430Normal, explicitly set breakpoint.
c906108c 19431
8e04817f
AC
19432@item watchpoint
19433Normal, explicitly set watchpoint.
c906108c 19434
8e04817f
AC
19435@item longjmp
19436Internal breakpoint, used to handle correctly stepping through
19437@code{longjmp} calls.
c906108c 19438
8e04817f
AC
19439@item longjmp resume
19440Internal breakpoint at the target of a @code{longjmp}.
c906108c 19441
8e04817f
AC
19442@item until
19443Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
c906108c 19444
8e04817f
AC
19445@item finish
19446Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
c906108c 19447
8e04817f
AC
19448@item shlib events
19449Shared library events.
c906108c 19450
8e04817f 19451@end table
c906108c 19452
8d30a00d
AC
19453@kindex maint internal-error
19454@kindex maint internal-warning
19455@item maint internal-error
19456@itemx maint internal-warning
19457Cause @value{GDBN} to call the internal function @code{internal_error}
19458or @code{internal_warning} and hence behave as though an internal error
19459or internal warning has been detected. In addition to reporting the
19460internal problem, these functions give the user the opportunity to
19461either quit @value{GDBN} or create a core file of the current
19462@value{GDBN} session.
19463
19464@smallexample
f7dc1244 19465(@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
8d30a00d
AC
19466@dots{}/maint.c:121: internal-error: testing, 1, 2
19467A problem internal to GDB has been detected. Further
19468debugging may prove unreliable.
19469Quit this debugging session? (y or n) @kbd{n}
19470Create a core file? (y or n) @kbd{n}
f7dc1244 19471(@value{GDBP})
8d30a00d
AC
19472@end smallexample
19473
19474Takes an optional parameter that is used as the text of the error or
19475warning message.
19476
00905d52
AC
19477@kindex maint print dummy-frames
19478@item maint print dummy-frames
19479
19480Prints the contents of @value{GDBN}'s internal dummy-frame stack.
19481
19482@smallexample
f7dc1244 19483(@value{GDBP}) @kbd{b add}
00905d52 19484@dots{}
f7dc1244 19485(@value{GDBP}) @kbd{print add(2,3)}
00905d52
AC
19486Breakpoint 2, add (a=2, b=3) at @dots{}
1948758 return (a + b);
19488The program being debugged stopped while in a function called from GDB.
19489@dots{}
f7dc1244 19490(@value{GDBP}) @kbd{maint print dummy-frames}
00905d52
AC
194910x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
19492 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@}
19493 call_lo=0x01014000 call_hi=0x01014001
f7dc1244 19494(@value{GDBP})
00905d52
AC
19495@end smallexample
19496
19497Takes an optional file parameter.
19498
0680b120
AC
19499@kindex maint print registers
19500@kindex maint print raw-registers
19501@kindex maint print cooked-registers
617073a9 19502@kindex maint print register-groups
0680b120
AC
19503@item maint print registers
19504@itemx maint print raw-registers
19505@itemx maint print cooked-registers
617073a9 19506@itemx maint print register-groups
0680b120
AC
19507Print @value{GDBN}'s internal register data structures.
19508
617073a9
AC
19509The command @code{maint print raw-registers} includes the contents of
19510the raw register cache; the command @code{maint print cooked-registers}
19511includes the (cooked) value of all registers; and the command
19512@code{maint print register-groups} includes the groups that each
19513register is a member of. @xref{Registers,, Registers, gdbint,
19514@value{GDBN} Internals}.
0680b120
AC
19515
19516Takes an optional file parameter.
19517
617073a9
AC
19518@kindex maint print reggroups
19519@item maint print reggroups
19520Print @value{GDBN}'s internal register group data structures.
19521
19522Takes an optional file parameter.
19523
19524@smallexample
f7dc1244 19525(@value{GDBP}) @kbd{maint print reggroups}
b383017d
RM
19526 Group Type
19527 general user
19528 float user
19529 all user
19530 vector user
19531 system user
19532 save internal
19533 restore internal
617073a9
AC
19534@end smallexample
19535
e7ba9c65
DJ
19536@kindex maint set profile
19537@kindex maint show profile
19538@cindex profiling GDB
19539@item maint set profile
19540@itemx maint show profile
19541Control profiling of @value{GDBN}.
19542
19543Profiling will be disabled until you use the @samp{maint set profile}
19544command to enable it. When you enable profiling, the system will begin
19545collecting timing and execution count data; when you disable profiling or
19546exit @value{GDBN}, the results will be written to a log file. Remember that
19547if you use profiling, @value{GDBN} will overwrite the profiling log file
19548(often called @file{gmon.out}). If you have a record of important profiling
19549data in a @file{gmon.out} file, be sure to move it to a safe location.
19550
19551Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
b383017d 19552compiled with the @samp{-pg} compiler option.
e7ba9c65 19553
ae038cb0
DJ
19554@kindex maint set dwarf2 max-cache-age
19555@kindex maint show dwarf2 max-cache-age
19556@item maint set dwarf2 max-cache-age
19557@itemx maint show dwarf2 max-cache-age
19558Control the DWARF 2 compilation unit cache.
19559
19560In object files with inter-compilation-unit references, such as those
19561produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2
19562reader needs to frequently refer to previously read compilation units.
19563This setting controls how long a compilation unit will remain in the cache
19564if it is not referenced. Setting it to zero disables caching, which will
19565slow down @value{GDBN} startup but reduce memory consumption.
19566
8e04817f 19567@end table
c906108c 19568
c906108c 19569
e0ce93ac 19570@node Remote Protocol
8e04817f 19571@appendix @value{GDBN} Remote Serial Protocol
c906108c 19572
ee2d5c50
AC
19573@menu
19574* Overview::
19575* Packets::
19576* Stop Reply Packets::
19577* General Query Packets::
19578* Register Packet Format::
19579* Examples::
0ce1b118 19580* File-I/O remote protocol extension::
ee2d5c50
AC
19581@end menu
19582
19583@node Overview
19584@section Overview
19585
8e04817f
AC
19586There may be occasions when you need to know something about the
19587protocol---for example, if there is only one serial port to your target
19588machine, you might want your program to do something special if it
19589recognizes a packet meant for @value{GDBN}.
c906108c 19590
d2c6833e 19591In the examples below, @samp{->} and @samp{<-} are used to indicate
8e04817f 19592transmitted and received data respectfully.
c906108c 19593
8e04817f
AC
19594@cindex protocol, @value{GDBN} remote serial
19595@cindex serial protocol, @value{GDBN} remote
19596@cindex remote serial protocol
19597All @value{GDBN} commands and responses (other than acknowledgments) are
19598sent as a @var{packet}. A @var{packet} is introduced with the character
19599@samp{$}, the actual @var{packet-data}, and the terminating character
19600@samp{#} followed by a two-digit @var{checksum}:
c906108c 19601
474c8240 19602@smallexample
8e04817f 19603@code{$}@var{packet-data}@code{#}@var{checksum}
474c8240 19604@end smallexample
8e04817f 19605@noindent
c906108c 19606
8e04817f
AC
19607@cindex checksum, for @value{GDBN} remote
19608@noindent
19609The two-digit @var{checksum} is computed as the modulo 256 sum of all
19610characters between the leading @samp{$} and the trailing @samp{#} (an
19611eight bit unsigned checksum).
c906108c 19612
8e04817f
AC
19613Implementors should note that prior to @value{GDBN} 5.0 the protocol
19614specification also included an optional two-digit @var{sequence-id}:
c906108c 19615
474c8240 19616@smallexample
8e04817f 19617@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
474c8240 19618@end smallexample
c906108c 19619
8e04817f
AC
19620@cindex sequence-id, for @value{GDBN} remote
19621@noindent
19622That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
19623has never output @var{sequence-id}s. Stubs that handle packets added
19624since @value{GDBN} 5.0 must not accept @var{sequence-id}.
c906108c 19625
8e04817f
AC
19626@cindex acknowledgment, for @value{GDBN} remote
19627When either the host or the target machine receives a packet, the first
19628response expected is an acknowledgment: either @samp{+} (to indicate
19629the package was received correctly) or @samp{-} (to request
19630retransmission):
c906108c 19631
474c8240 19632@smallexample
d2c6833e
AC
19633-> @code{$}@var{packet-data}@code{#}@var{checksum}
19634<- @code{+}
474c8240 19635@end smallexample
8e04817f 19636@noindent
53a5351d 19637
8e04817f
AC
19638The host (@value{GDBN}) sends @var{command}s, and the target (the
19639debugging stub incorporated in your program) sends a @var{response}. In
19640the case of step and continue @var{command}s, the response is only sent
19641when the operation has completed (the target has again stopped).
c906108c 19642
8e04817f
AC
19643@var{packet-data} consists of a sequence of characters with the
19644exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
19645exceptions).
c906108c 19646
8e04817f 19647Fields within the packet should be separated using @samp{,} @samp{;} or
ee2d5c50 19648@cindex remote protocol, field separator
8e04817f 19649@samp{:}. Except where otherwise noted all numbers are represented in
ee2d5c50 19650@sc{hex} with leading zeros suppressed.
c906108c 19651
8e04817f
AC
19652Implementors should note that prior to @value{GDBN} 5.0, the character
19653@samp{:} could not appear as the third character in a packet (as it
19654would potentially conflict with the @var{sequence-id}).
c906108c 19655
8e04817f
AC
19656Response @var{data} can be run-length encoded to save space. A @samp{*}
19657means that the next character is an @sc{ascii} encoding giving a repeat count
19658which stands for that many repetitions of the character preceding the
19659@samp{*}. The encoding is @code{n+29}, yielding a printable character
19660where @code{n >=3} (which is where rle starts to win). The printable
19661characters @samp{$}, @samp{#}, @samp{+} and @samp{-} or with a numeric
19662value greater than 126 should not be used.
c906108c 19663
8e04817f 19664So:
474c8240 19665@smallexample
8e04817f 19666"@code{0* }"
474c8240 19667@end smallexample
8e04817f
AC
19668@noindent
19669means the same as "0000".
c906108c 19670
8e04817f
AC
19671The error response returned for some packets includes a two character
19672error number. That number is not well defined.
c906108c 19673
8e04817f
AC
19674For any @var{command} not supported by the stub, an empty response
19675(@samp{$#00}) should be returned. That way it is possible to extend the
19676protocol. A newer @value{GDBN} can tell if a packet is supported based
19677on that response.
c906108c 19678
b383017d
RM
19679A stub is required to support the @samp{g}, @samp{G}, @samp{m}, @samp{M},
19680@samp{c}, and @samp{s} @var{command}s. All other @var{command}s are
8e04817f 19681optional.
c906108c 19682
ee2d5c50
AC
19683@node Packets
19684@section Packets
19685
19686The following table provides a complete list of all currently defined
19687@var{command}s and their corresponding response @var{data}.
19688
19689@table @r
19690
19691@item @code{!} --- extended mode
19692@cindex @code{!} packet
19693
8e04817f
AC
19694Enable extended mode. In extended mode, the remote server is made
19695persistent. The @samp{R} packet is used to restart the program being
19696debugged.
ee2d5c50
AC
19697
19698Reply:
19699@table @samp
19700@item OK
8e04817f 19701The remote target both supports and has enabled extended mode.
ee2d5c50 19702@end table
c906108c 19703
ee2d5c50
AC
19704@item @code{?} --- last signal
19705@cindex @code{?} packet
c906108c 19706
ee2d5c50
AC
19707Indicate the reason the target halted. The reply is the same as for
19708step and continue.
c906108c 19709
ee2d5c50
AC
19710Reply:
19711@xref{Stop Reply Packets}, for the reply specifications.
19712
19713@item @code{a} --- reserved
19714
19715Reserved for future use.
19716
19717@item @code{A}@var{arglen}@code{,}@var{argnum}@code{,}@var{arg}@code{,@dots{}} --- set program arguments @strong{(reserved)}
19718@cindex @code{A} packet
c906108c 19719
8e04817f
AC
19720Initialized @samp{argv[]} array passed into program. @var{arglen}
19721specifies the number of bytes in the hex encoded byte stream @var{arg}.
ee2d5c50
AC
19722See @code{gdbserver} for more details.
19723
19724Reply:
19725@table @samp
19726@item OK
19727@item E@var{NN}
19728@end table
19729
19730@item @code{b}@var{baud} --- set baud @strong{(deprecated)}
19731@cindex @code{b} packet
19732
19733Change the serial line speed to @var{baud}.
19734
19735JTC: @emph{When does the transport layer state change? When it's
19736received, or after the ACK is transmitted. In either case, there are
19737problems if the command or the acknowledgment packet is dropped.}
19738
19739Stan: @emph{If people really wanted to add something like this, and get
19740it working for the first time, they ought to modify ser-unix.c to send
19741some kind of out-of-band message to a specially-setup stub and have the
19742switch happen "in between" packets, so that from remote protocol's point
19743of view, nothing actually happened.}
19744
19745@item @code{B}@var{addr},@var{mode} --- set breakpoint @strong{(deprecated)}
19746@cindex @code{B} packet
19747
8e04817f 19748Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
2f870471
AC
19749breakpoint at @var{addr}.
19750
19751This packet has been replaced by the @samp{Z} and @samp{z} packets
19752(@pxref{insert breakpoint or watchpoint packet}).
c906108c 19753
ee2d5c50
AC
19754@item @code{c}@var{addr} --- continue
19755@cindex @code{c} packet
19756
19757@var{addr} is address to resume. If @var{addr} is omitted, resume at
8e04817f 19758current address.
c906108c 19759
ee2d5c50
AC
19760Reply:
19761@xref{Stop Reply Packets}, for the reply specifications.
19762
19763@item @code{C}@var{sig}@code{;}@var{addr} --- continue with signal
19764@cindex @code{C} packet
19765
8e04817f
AC
19766Continue with signal @var{sig} (hex signal number). If
19767@code{;}@var{addr} is omitted, resume at same address.
c906108c 19768
ee2d5c50
AC
19769Reply:
19770@xref{Stop Reply Packets}, for the reply specifications.
c906108c 19771
ee2d5c50
AC
19772@item @code{d} --- toggle debug @strong{(deprecated)}
19773@cindex @code{d} packet
19774
19775Toggle debug flag.
19776
19777@item @code{D} --- detach
19778@cindex @code{D} packet
19779
19780Detach @value{GDBN} from the remote system. Sent to the remote target
07f31aa6 19781before @value{GDBN} disconnects via the @code{detach} command.
ee2d5c50
AC
19782
19783Reply:
19784@table @samp
19785@item @emph{no response}
8e04817f 19786@value{GDBN} does not check for any response after sending this packet.
ee2d5c50 19787@end table
c906108c 19788
ee2d5c50 19789@item @code{e} --- reserved
c906108c 19790
ee2d5c50 19791Reserved for future use.
c906108c 19792
ee2d5c50 19793@item @code{E} --- reserved
c906108c 19794
ee2d5c50 19795Reserved for future use.
c906108c 19796
ee2d5c50
AC
19797@item @code{f} --- reserved
19798
19799Reserved for future use.
19800
0ce1b118
CV
19801@item @code{F}@var{RC}@code{,}@var{EE}@code{,}@var{CF}@code{;}@var{XX} --- Reply to target's F packet.
19802@cindex @code{F} packet
ee2d5c50 19803
0ce1b118
CV
19804This packet is send by @value{GDBN} as reply to a @code{F} request packet
19805sent by the target. This is part of the File-I/O protocol extension.
19806@xref{File-I/O remote protocol extension}, for the specification.
ee2d5c50
AC
19807
19808@item @code{g} --- read registers
19809@anchor{read registers packet}
19810@cindex @code{g} packet
19811
19812Read general registers.
19813
19814Reply:
19815@table @samp
19816@item @var{XX@dots{}}
8e04817f
AC
19817Each byte of register data is described by two hex digits. The bytes
19818with the register are transmitted in target byte order. The size of
19819each register and their position within the @samp{g} @var{packet} are
12c266ea
AC
19820determined by the @value{GDBN} internal macros
19821@var{DEPRECATED_REGISTER_RAW_SIZE} and @var{REGISTER_NAME} macros. The
19822specification of several standard @code{g} packets is specified below.
ee2d5c50
AC
19823@item E@var{NN}
19824for an error.
19825@end table
c906108c 19826
ee2d5c50
AC
19827@item @code{G}@var{XX@dots{}} --- write regs
19828@cindex @code{G} packet
c906108c 19829
ee2d5c50
AC
19830@xref{read registers packet}, for a description of the @var{XX@dots{}}
19831data.
19832
19833Reply:
19834@table @samp
19835@item OK
19836for success
19837@item E@var{NN}
19838for an error
19839@end table
19840
19841@item @code{h} --- reserved
19842
19843Reserved for future use.
19844
b383017d 19845@item @code{H}@var{c}@var{t@dots{}} --- set thread
ee2d5c50 19846@cindex @code{H} packet
c906108c 19847
8e04817f 19848Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
ee2d5c50
AC
19849@samp{G}, et.al.). @var{c} depends on the operation to be performed: it
19850should be @samp{c} for step and continue operations, @samp{g} for other
19851operations. The thread designator @var{t@dots{}} may be -1, meaning all
19852the threads, a thread number, or zero which means pick any thread.
19853
19854Reply:
19855@table @samp
19856@item OK
19857for success
19858@item E@var{NN}
19859for an error
19860@end table
c906108c 19861
8e04817f
AC
19862@c FIXME: JTC:
19863@c 'H': How restrictive (or permissive) is the thread model. If a
19864@c thread is selected and stopped, are other threads allowed
19865@c to continue to execute? As I mentioned above, I think the
19866@c semantics of each command when a thread is selected must be
19867@c described. For example:
19868@c
19869@c 'g': If the stub supports threads and a specific thread is
19870@c selected, returns the register block from that thread;
19871@c otherwise returns current registers.
19872@c
19873@c 'G' If the stub supports threads and a specific thread is
19874@c selected, sets the registers of the register block of
19875@c that thread; otherwise sets current registers.
c906108c 19876
ee2d5c50
AC
19877@item @code{i}@var{addr}@code{,}@var{nnn} --- cycle step @strong{(draft)}
19878@anchor{cycle step packet}
19879@cindex @code{i} packet
19880
8e04817f
AC
19881Step the remote target by a single clock cycle. If @code{,}@var{nnn} is
19882present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
19883step starting at that address.
c906108c 19884
ee2d5c50
AC
19885@item @code{I} --- signal then cycle step @strong{(reserved)}
19886@cindex @code{I} packet
19887
19888@xref{step with signal packet}. @xref{cycle step packet}.
19889
19890@item @code{j} --- reserved
19891
19892Reserved for future use.
19893
19894@item @code{J} --- reserved
c906108c 19895
ee2d5c50 19896Reserved for future use.
c906108c 19897
ee2d5c50
AC
19898@item @code{k} --- kill request
19899@cindex @code{k} packet
c906108c 19900
ac282366 19901FIXME: @emph{There is no description of how to operate when a specific
ee2d5c50
AC
19902thread context has been selected (i.e.@: does 'k' kill only that
19903thread?)}.
c906108c 19904
ee2d5c50 19905@item @code{K} --- reserved
c906108c 19906
ee2d5c50
AC
19907Reserved for future use.
19908
19909@item @code{l} --- reserved
19910
19911Reserved for future use.
19912
19913@item @code{L} --- reserved
19914
19915Reserved for future use.
19916
19917@item @code{m}@var{addr}@code{,}@var{length} --- read memory
19918@cindex @code{m} packet
c906108c 19919
8e04817f 19920Read @var{length} bytes of memory starting at address @var{addr}.
ee2d5c50 19921Neither @value{GDBN} nor the stub assume that sized memory transfers are
2e834e49 19922assumed using word aligned accesses. FIXME: @emph{A word aligned memory
8e04817f 19923transfer mechanism is needed.}
c906108c 19924
ee2d5c50
AC
19925Reply:
19926@table @samp
19927@item @var{XX@dots{}}
19928@var{XX@dots{}} is mem contents. Can be fewer bytes than requested if able
19929to read only part of the data. Neither @value{GDBN} nor the stub assume
2e834e49 19930that sized memory transfers are assumed using word aligned
ee2d5c50
AC
19931accesses. FIXME: @emph{A word aligned memory transfer mechanism is
19932needed.}
19933@item E@var{NN}
19934@var{NN} is errno
19935@end table
19936
19937@item @code{M}@var{addr},@var{length}@code{:}@var{XX@dots{}} --- write mem
19938@cindex @code{M} packet
19939
8e04817f 19940Write @var{length} bytes of memory starting at address @var{addr}.
ee2d5c50
AC
19941@var{XX@dots{}} is the data.
19942
19943Reply:
19944@table @samp
19945@item OK
19946for success
19947@item E@var{NN}
8e04817f
AC
19948for an error (this includes the case where only part of the data was
19949written).
ee2d5c50 19950@end table
c906108c 19951
ee2d5c50 19952@item @code{n} --- reserved
c906108c 19953
ee2d5c50 19954Reserved for future use.
c906108c 19955
ee2d5c50 19956@item @code{N} --- reserved
c906108c 19957
ee2d5c50 19958Reserved for future use.
c906108c 19959
ee2d5c50
AC
19960@item @code{o} --- reserved
19961
19962Reserved for future use.
19963
19964@item @code{O} --- reserved
19965
19966Reserved for future use.
c906108c 19967
ee2d5c50
AC
19968@item @code{p}@var{n@dots{}} --- read reg @strong{(reserved)}
19969@cindex @code{p} packet
19970
19971@xref{write register packet}.
19972
19973Reply:
19974@table @samp
19975@item @var{r@dots{}.}
19976The hex encoded value of the register in target byte order.
19977@end table
19978
19979@item @code{P}@var{n@dots{}}@code{=}@var{r@dots{}} --- write register
19980@anchor{write register packet}
19981@cindex @code{P} packet
19982
19983Write register @var{n@dots{}} with value @var{r@dots{}}, which contains two hex
8e04817f 19984digits for each byte in the register (target byte order).
c906108c 19985
ee2d5c50
AC
19986Reply:
19987@table @samp
19988@item OK
19989for success
19990@item E@var{NN}
19991for an error
19992@end table
19993
19994@item @code{q}@var{query} --- general query
19995@anchor{general query packet}
19996@cindex @code{q} packet
19997
19998Request info about @var{query}. In general @value{GDBN} queries have a
19999leading upper case letter. Custom vendor queries should use a company
20000prefix (in lower case) ex: @samp{qfsf.var}. @var{query} may optionally
20001be followed by a @samp{,} or @samp{;} separated list. Stubs must ensure
20002that they match the full @var{query} name.
20003
20004Reply:
20005@table @samp
20006@item @var{XX@dots{}}
20007Hex encoded data from query. The reply can not be empty.
20008@item E@var{NN}
20009error reply
8e04817f 20010@item
ee2d5c50
AC
20011Indicating an unrecognized @var{query}.
20012@end table
20013
20014@item @code{Q}@var{var}@code{=}@var{val} --- general set
20015@cindex @code{Q} packet
20016
20017Set value of @var{var} to @var{val}.
20018
20019@xref{general query packet}, for a discussion of naming conventions.
c906108c 20020
ee2d5c50
AC
20021@item @code{r} --- reset @strong{(deprecated)}
20022@cindex @code{r} packet
c906108c 20023
8e04817f 20024Reset the entire system.
c906108c 20025
ee2d5c50
AC
20026@item @code{R}@var{XX} --- remote restart
20027@cindex @code{R} packet
20028
8e04817f
AC
20029Restart the program being debugged. @var{XX}, while needed, is ignored.
20030This packet is only available in extended mode.
ee2d5c50
AC
20031
20032Reply:
20033@table @samp
20034@item @emph{no reply}
8e04817f 20035The @samp{R} packet has no reply.
ee2d5c50
AC
20036@end table
20037
20038@item @code{s}@var{addr} --- step
20039@cindex @code{s} packet
c906108c 20040
8e04817f
AC
20041@var{addr} is address to resume. If @var{addr} is omitted, resume at
20042same address.
c906108c 20043
ee2d5c50
AC
20044Reply:
20045@xref{Stop Reply Packets}, for the reply specifications.
20046
20047@item @code{S}@var{sig}@code{;}@var{addr} --- step with signal
20048@anchor{step with signal packet}
20049@cindex @code{S} packet
20050
8e04817f 20051Like @samp{C} but step not continue.
c906108c 20052
ee2d5c50
AC
20053Reply:
20054@xref{Stop Reply Packets}, for the reply specifications.
20055
b383017d 20056@item @code{t}@var{addr}@code{:}@var{PP}@code{,}@var{MM} --- search
ee2d5c50
AC
20057@cindex @code{t} packet
20058
8e04817f 20059Search backwards starting at address @var{addr} for a match with pattern
ee2d5c50
AC
20060@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes.
20061@var{addr} must be at least 3 digits.
c906108c 20062
ee2d5c50
AC
20063@item @code{T}@var{XX} --- thread alive
20064@cindex @code{T} packet
c906108c 20065
ee2d5c50 20066Find out if the thread XX is alive.
c906108c 20067
ee2d5c50
AC
20068Reply:
20069@table @samp
20070@item OK
20071thread is still alive
20072@item E@var{NN}
20073thread is dead
20074@end table
20075
20076@item @code{u} --- reserved
20077
20078Reserved for future use.
20079
20080@item @code{U} --- reserved
20081
20082Reserved for future use.
20083
86d30acc 20084@item @code{v} --- verbose packet prefix
ee2d5c50 20085
86d30acc
DJ
20086Packets starting with @code{v} are identified by a multi-letter name,
20087up to the first @code{;} or @code{?} (or the end of the packet).
20088
20089@item @code{vCont}[;@var{action}[@code{:}@var{tid}]]... --- extended resume
20090@cindex @code{vCont} packet
20091
20092Resume the inferior. Different actions may be specified for each thread.
20093If an action is specified with no @var{tid}, then it is applied to any
20094threads that don't have a specific action specified; if no default action is
20095specified then other threads should remain stopped. Specifying multiple
20096default actions is an error; specifying no actions is also an error.
20097Thread IDs are specified in hexadecimal. Currently supported actions are:
20098
20099@table @code
20100@item c
20101Continue.
20102@item C@var{sig}
20103Continue with signal @var{sig}. @var{sig} should be two hex digits.
20104@item s
20105Step.
20106@item S@var{sig}
20107Step with signal @var{sig}. @var{sig} should be two hex digits.
20108@end table
20109
20110The optional @var{addr} argument normally associated with these packets is
20111not supported in @code{vCont}.
20112
20113Reply:
20114@xref{Stop Reply Packets}, for the reply specifications.
20115
20116@item @code{vCont?} --- extended resume query
20117@cindex @code{vCont?} packet
20118
20119Query support for the @code{vCont} packet.
20120
20121Reply:
20122@table @samp
20123@item @code{vCont}[;@var{action}]...
20124The @code{vCont} packet is supported. Each @var{action} is a supported
20125command in the @code{vCont} packet.
20126@item
20127The @code{vCont} packet is not supported.
20128@end table
ee2d5c50
AC
20129
20130@item @code{V} --- reserved
c906108c 20131
ee2d5c50 20132Reserved for future use.
c906108c 20133
ee2d5c50 20134@item @code{w} --- reserved
c906108c 20135
ee2d5c50 20136Reserved for future use.
c906108c 20137
ee2d5c50 20138@item @code{W} --- reserved
c906108c 20139
ee2d5c50 20140Reserved for future use.
c906108c 20141
ee2d5c50
AC
20142@item @code{x} --- reserved
20143
20144Reserved for future use.
20145
20146@item @code{X}@var{addr}@code{,}@var{length}@var{:}@var{XX@dots{}} --- write mem (binary)
20147@cindex @code{X} packet
20148
20149@var{addr} is address, @var{length} is number of bytes, @var{XX@dots{}}
20150is binary data. The characters @code{$}, @code{#}, and @code{0x7d} are
8e04817f 20151escaped using @code{0x7d}.
c906108c 20152
ee2d5c50
AC
20153Reply:
20154@table @samp
20155@item OK
20156for success
20157@item E@var{NN}
20158for an error
20159@end table
20160
20161@item @code{y} --- reserved
c906108c 20162
ee2d5c50 20163Reserved for future use.
c906108c 20164
ee2d5c50
AC
20165@item @code{Y} reserved
20166
20167Reserved for future use.
20168
2f870471
AC
20169@item @code{z}@var{type}@code{,}@var{addr}@code{,}@var{length} --- remove breakpoint or watchpoint @strong{(draft)}
20170@itemx @code{Z}@var{type}@code{,}@var{addr}@code{,}@var{length} --- insert breakpoint or watchpoint @strong{(draft)}
20171@anchor{insert breakpoint or watchpoint packet}
ee2d5c50 20172@cindex @code{z} packet
2f870471 20173@cindex @code{Z} packets
ee2d5c50 20174
2f870471
AC
20175Insert (@code{Z}) or remove (@code{z}) a @var{type} breakpoint or
20176watchpoint starting at address @var{address} and covering the next
20177@var{length} bytes.
ee2d5c50 20178
2f870471
AC
20179Each breakpoint and watchpoint packet @var{type} is documented
20180separately.
20181
512217c7
AC
20182@emph{Implementation notes: A remote target shall return an empty string
20183for an unrecognized breakpoint or watchpoint packet @var{type}. A
20184remote target shall support either both or neither of a given
2f870471
AC
20185@code{Z}@var{type}@dots{} and @code{z}@var{type}@dots{} packet pair. To
20186avoid potential problems with duplicate packets, the operations should
20187be implemented in an idempotent way.}
20188
20189@item @code{z}@code{0}@code{,}@var{addr}@code{,}@var{length} --- remove memory breakpoint @strong{(draft)}
20190@item @code{Z}@code{0}@code{,}@var{addr}@code{,}@var{length} --- insert memory breakpoint @strong{(draft)}
20191@cindex @code{z0} packet
20192@cindex @code{Z0} packet
20193
20194Insert (@code{Z0}) or remove (@code{z0}) a memory breakpoint at address
20195@code{addr} of size @code{length}.
20196
20197A memory breakpoint is implemented by replacing the instruction at
20198@var{addr} with a software breakpoint or trap instruction. The
20199@code{length} is used by targets that indicates the size of the
20200breakpoint (in bytes) that should be inserted (e.g., the @sc{arm} and
20201@sc{mips} can insert either a 2 or 4 byte breakpoint).
c906108c 20202
2f870471
AC
20203@emph{Implementation note: It is possible for a target to copy or move
20204code that contains memory breakpoints (e.g., when implementing
20205overlays). The behavior of this packet, in the presence of such a
20206target, is not defined.}
c906108c 20207
ee2d5c50
AC
20208Reply:
20209@table @samp
2f870471
AC
20210@item OK
20211success
20212@item
20213not supported
ee2d5c50
AC
20214@item E@var{NN}
20215for an error
2f870471
AC
20216@end table
20217
20218@item @code{z}@code{1}@code{,}@var{addr}@code{,}@var{length} --- remove hardware breakpoint @strong{(draft)}
20219@item @code{Z}@code{1}@code{,}@var{addr}@code{,}@var{length} --- insert hardware breakpoint @strong{(draft)}
20220@cindex @code{z1} packet
20221@cindex @code{Z1} packet
20222
20223Insert (@code{Z1}) or remove (@code{z1}) a hardware breakpoint at
20224address @code{addr} of size @code{length}.
20225
20226A hardware breakpoint is implemented using a mechanism that is not
20227dependant on being able to modify the target's memory.
20228
20229@emph{Implementation note: A hardware breakpoint is not affected by code
20230movement.}
20231
20232Reply:
20233@table @samp
ee2d5c50 20234@item OK
2f870471
AC
20235success
20236@item
20237not supported
20238@item E@var{NN}
20239for an error
20240@end table
20241
20242@item @code{z}@code{2}@code{,}@var{addr}@code{,}@var{length} --- remove write watchpoint @strong{(draft)}
20243@item @code{Z}@code{2}@code{,}@var{addr}@code{,}@var{length} --- insert write watchpoint @strong{(draft)}
20244@cindex @code{z2} packet
20245@cindex @code{Z2} packet
20246
20247Insert (@code{Z2}) or remove (@code{z2}) a write watchpoint.
20248
20249Reply:
20250@table @samp
20251@item OK
20252success
20253@item
20254not supported
20255@item E@var{NN}
20256for an error
20257@end table
20258
20259@item @code{z}@code{3}@code{,}@var{addr}@code{,}@var{length} --- remove read watchpoint @strong{(draft)}
20260@item @code{Z}@code{3}@code{,}@var{addr}@code{,}@var{length} --- insert read watchpoint @strong{(draft)}
20261@cindex @code{z3} packet
20262@cindex @code{Z3} packet
20263
2e834e49 20264Insert (@code{Z3}) or remove (@code{z3}) a read watchpoint.
2f870471
AC
20265
20266Reply:
20267@table @samp
20268@item OK
20269success
20270@item
20271not supported
20272@item E@var{NN}
20273for an error
20274@end table
20275
2e834e49
HPN
20276@item @code{z}@code{4}@code{,}@var{addr}@code{,}@var{length} --- remove access watchpoint @strong{(draft)}
20277@item @code{Z}@code{4}@code{,}@var{addr}@code{,}@var{length} --- insert access watchpoint @strong{(draft)}
2f870471
AC
20278@cindex @code{z4} packet
20279@cindex @code{Z4} packet
20280
20281Insert (@code{Z4}) or remove (@code{z4}) an access watchpoint.
20282
20283Reply:
20284@table @samp
20285@item OK
20286success
20287@item
20288not supported
20289@item E@var{NN}
20290for an error
ee2d5c50
AC
20291@end table
20292
20293@end table
c906108c 20294
ee2d5c50
AC
20295@node Stop Reply Packets
20296@section Stop Reply Packets
20297@cindex stop reply packets
c906108c 20298
8e04817f
AC
20299The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
20300receive any of the below as a reply. In the case of the @samp{C},
20301@samp{c}, @samp{S} and @samp{s} packets, that reply is only returned
20302when the target halts. In the below the exact meaning of @samp{signal
20303number} is poorly defined. In general one of the UNIX signal numbering
20304conventions is used.
c906108c 20305
ee2d5c50 20306@table @samp
c906108c 20307
ee2d5c50
AC
20308@item S@var{AA}
20309@var{AA} is the signal number
c906108c 20310
8e04817f 20311@item @code{T}@var{AA}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}@var{n...}@code{:}@var{r...}@code{;}
ee2d5c50
AC
20312@cindex @code{T} packet reply
20313
8e04817f
AC
20314@var{AA} = two hex digit signal number; @var{n...} = register number
20315(hex), @var{r...} = target byte ordered register contents, size defined
12c266ea
AC
20316by @code{DEPRECATED_REGISTER_RAW_SIZE}; @var{n...} = @samp{thread},
20317@var{r...} = thread process ID, this is a hex integer; @var{n...} =
20318(@samp{watch} | @samp{rwatch} | @samp{awatch}, @var{r...} = data
20319address, this is a hex integer; @var{n...} = other string not starting
20320with valid hex digit. @value{GDBN} should ignore this @var{n...},
20321@var{r...} pair and go on to the next. This way we can extend the
20322protocol.
c906108c 20323
ee2d5c50
AC
20324@item W@var{AA}
20325
8e04817f 20326The process exited, and @var{AA} is the exit status. This is only
ee2d5c50
AC
20327applicable to certain targets.
20328
20329@item X@var{AA}
c906108c 20330
8e04817f 20331The process terminated with signal @var{AA}.
c906108c 20332
ee2d5c50 20333@item O@var{XX@dots{}}
c906108c 20334
ee2d5c50
AC
20335@var{XX@dots{}} is hex encoding of @sc{ascii} data. This can happen at
20336any time while the program is running and the debugger should continue
20337to wait for @samp{W}, @samp{T}, etc.
20338
0ce1b118
CV
20339@item F@var{call-id}@code{,}@var{parameter@dots{}}
20340
20341@var{call-id} is the identifier which says which host system call should
20342be called. This is just the name of the function. Translation into the
20343correct system call is only applicable as it's defined in @value{GDBN}.
20344@xref{File-I/O remote protocol extension}, for a list of implemented
20345system calls.
20346
20347@var{parameter@dots{}} is a list of parameters as defined for this very
20348system call.
20349
20350The target replies with this packet when it expects @value{GDBN} to call
20351a host system call on behalf of the target. @value{GDBN} replies with
20352an appropriate @code{F} packet and keeps up waiting for the next reply
20353packet from the target. The latest @samp{C}, @samp{c}, @samp{S} or
20354@samp{s} action is expected to be continued.
20355@xref{File-I/O remote protocol extension}, for more details.
20356
ee2d5c50
AC
20357@end table
20358
20359@node General Query Packets
20360@section General Query Packets
c906108c 20361
8e04817f 20362The following set and query packets have already been defined.
c906108c 20363
ee2d5c50 20364@table @r
c906108c 20365
ee2d5c50
AC
20366@item @code{q}@code{C} --- current thread
20367
20368Return the current thread id.
20369
20370Reply:
20371@table @samp
20372@item @code{QC}@var{pid}
8e04817f 20373Where @var{pid} is a HEX encoded 16 bit process id.
ee2d5c50
AC
20374@item *
20375Any other reply implies the old pid.
20376@end table
20377
20378@item @code{q}@code{fThreadInfo} -- all thread ids
20379
20380@code{q}@code{sThreadInfo}
c906108c 20381
8e04817f
AC
20382Obtain a list of active thread ids from the target (OS). Since there
20383may be too many active threads to fit into one reply packet, this query
20384works iteratively: it may require more than one query/reply sequence to
20385obtain the entire list of threads. The first query of the sequence will
20386be the @code{qf}@code{ThreadInfo} query; subsequent queries in the
20387sequence will be the @code{qs}@code{ThreadInfo} query.
ee2d5c50
AC
20388
20389NOTE: replaces the @code{qL} query (see below).
20390
20391Reply:
20392@table @samp
20393@item @code{m}@var{id}
20394A single thread id
20395@item @code{m}@var{id},@var{id}@dots{}
20396a comma-separated list of thread ids
20397@item @code{l}
20398(lower case 'el') denotes end of list.
20399@end table
20400
20401In response to each query, the target will reply with a list of one or
20402more thread ids, in big-endian hex, separated by commas. @value{GDBN}
20403will respond to each reply with a request for more thread ids (using the
8e04817f
AC
20404@code{qs} form of the query), until the target responds with @code{l}
20405(lower-case el, for @code{'last'}).
c906108c 20406
ee2d5c50
AC
20407@item @code{q}@code{ThreadExtraInfo}@code{,}@var{id} --- extra thread info
20408
20409Where @var{id} is a thread-id in big-endian hex. Obtain a printable
20410string description of a thread's attributes from the target OS. This
20411string may contain anything that the target OS thinks is interesting for
20412@value{GDBN} to tell the user about the thread. The string is displayed
20413in @value{GDBN}'s @samp{info threads} display. Some examples of
20414possible thread extra info strings are ``Runnable'', or ``Blocked on
20415Mutex''.
20416
20417Reply:
20418@table @samp
20419@item @var{XX@dots{}}
20420Where @var{XX@dots{}} is a hex encoding of @sc{ascii} data, comprising
20421the printable string containing the extra information about the thread's
8e04817f 20422attributes.
ee2d5c50
AC
20423@end table
20424
20425@item @code{q}@code{L}@var{startflag}@var{threadcount}@var{nextthread} --- query @var{LIST} or @var{threadLIST} @strong{(deprecated)}
c906108c 20426
8e04817f
AC
20427Obtain thread information from RTOS. Where: @var{startflag} (one hex
20428digit) is one to indicate the first query and zero to indicate a
20429subsequent query; @var{threadcount} (two hex digits) is the maximum
20430number of threads the response packet can contain; and @var{nextthread}
20431(eight hex digits), for subsequent queries (@var{startflag} is zero), is
20432returned in the response as @var{argthread}.
ee2d5c50
AC
20433
20434NOTE: this query is replaced by the @code{q}@code{fThreadInfo} query
20435(see above).
20436
20437Reply:
20438@table @samp
20439@item @code{q}@code{M}@var{count}@var{done}@var{argthread}@var{thread@dots{}}
8e04817f
AC
20440Where: @var{count} (two hex digits) is the number of threads being
20441returned; @var{done} (one hex digit) is zero to indicate more threads
20442and one indicates no further threads; @var{argthreadid} (eight hex
ee2d5c50
AC
20443digits) is @var{nextthread} from the request packet; @var{thread@dots{}}
20444is a sequence of thread IDs from the target. @var{threadid} (eight hex
8e04817f 20445digits). See @code{remote.c:parse_threadlist_response()}.
ee2d5c50 20446@end table
c906108c 20447
ee2d5c50
AC
20448@item @code{q}@code{CRC:}@var{addr}@code{,}@var{length} --- compute CRC of memory block
20449
20450Reply:
20451@table @samp
20452@item @code{E}@var{NN}
20453An error (such as memory fault)
20454@item @code{C}@var{CRC32}
20455A 32 bit cyclic redundancy check of the specified memory region.
20456@end table
20457
20458@item @code{q}@code{Offsets} --- query sect offs
c906108c 20459
8e04817f
AC
20460Get section offsets that the target used when re-locating the downloaded
20461image. @emph{Note: while a @code{Bss} offset is included in the
20462response, @value{GDBN} ignores this and instead applies the @code{Data}
20463offset to the @code{Bss} section.}
c906108c 20464
ee2d5c50
AC
20465Reply:
20466@table @samp
20467@item @code{Text=}@var{xxx}@code{;Data=}@var{yyy}@code{;Bss=}@var{zzz}
20468@end table
20469
20470@item @code{q}@code{P}@var{mode}@var{threadid} --- thread info request
20471
8e04817f
AC
20472Returns information on @var{threadid}. Where: @var{mode} is a hex
20473encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
ee2d5c50
AC
20474
20475Reply:
20476@table @samp
20477@item *
20478@end table
20479
8e04817f 20480See @code{remote.c:remote_unpack_thread_info_response()}.
c906108c 20481
ee2d5c50
AC
20482@item @code{q}@code{Rcmd,}@var{command} --- remote command
20483
20484@var{command} (hex encoded) is passed to the local interpreter for
8e04817f
AC
20485execution. Invalid commands should be reported using the output string.
20486Before the final result packet, the target may also respond with a
ee2d5c50
AC
20487number of intermediate @code{O}@var{output} console output packets.
20488@emph{Implementors should note that providing access to a stubs's
20489interpreter may have security implications}.
20490
20491Reply:
20492@table @samp
20493@item OK
8e04817f 20494A command response with no output.
ee2d5c50 20495@item @var{OUTPUT}
8e04817f 20496A command response with the hex encoded output string @var{OUTPUT}.
ee2d5c50 20497@item @code{E}@var{NN}
8e04817f 20498Indicate a badly formed request.
ee2d5c50 20499@item @samp{}
8e04817f 20500When @samp{q}@samp{Rcmd} is not recognized.
ee2d5c50
AC
20501@end table
20502
20503@item @code{qSymbol::} --- symbol lookup
c906108c 20504
8e04817f
AC
20505Notify the target that @value{GDBN} is prepared to serve symbol lookup
20506requests. Accept requests from the target for the values of symbols.
ee2d5c50
AC
20507
20508Reply:
20509@table @samp
20510@item @code{OK}
8e04817f 20511The target does not need to look up any (more) symbols.
ee2d5c50
AC
20512@item @code{qSymbol:}@var{sym_name}
20513The target requests the value of symbol @var{sym_name} (hex encoded).
20514@value{GDBN} may provide the value by using the
20515@code{qSymbol:}@var{sym_value}:@var{sym_name} message, described below.
20516@end table
20517
20518@item @code{qSymbol:}@var{sym_value}:@var{sym_name} --- symbol value
20519
20520Set the value of @var{sym_name} to @var{sym_value}.
20521
20522@var{sym_name} (hex encoded) is the name of a symbol whose value the
20523target has previously requested.
20524
20525@var{sym_value} (hex) is the value for symbol @var{sym_name}. If
20526@value{GDBN} cannot supply a value for @var{sym_name}, then this field
20527will be empty.
20528
20529Reply:
20530@table @samp
20531@item @code{OK}
8e04817f 20532The target does not need to look up any (more) symbols.
ee2d5c50
AC
20533@item @code{qSymbol:}@var{sym_name}
20534The target requests the value of a new symbol @var{sym_name} (hex
20535encoded). @value{GDBN} will continue to supply the values of symbols
20536(if available), until the target ceases to request them.
20537@end table
eb12ee30 20538
649e03f6
RM
20539@item @code{qPart}:@var{object}:@code{read}:@var{annex}:@var{offset},@var{length} --- read special data
20540
20541Read uninterpreted bytes from the target's special data area
20542identified by the keyword @code{object}.
20543Request @var{length} bytes starting at @var{offset} bytes into the data.
20544The content and encoding of @var{annex} is specific to the object;
20545it can supply additional details about what data to access.
20546
20547Here are the specific requests of this form defined so far.
20548All @samp{@code{qPart}:@var{object}:@code{read}:@dots{}}
20549requests use the same reply formats, listed below.
20550
20551@table @asis
20552@item @code{qPart}:@code{auxv}:@code{read}::@var{offset},@var{length}
20553Access the target's @dfn{auxiliary vector}. @xref{Auxiliary Vector}.
20554Note @var{annex} must be empty.
20555@end table
20556
20557Reply:
20558@table @asis
20559@item @code{OK}
20560The @var{offset} in the request is at the end of the data.
20561There is no more data to be read.
20562
20563@item @var{XX@dots{}}
20564Hex encoded data bytes read.
20565This may be fewer bytes than the @var{length} in the request.
20566
20567@item @code{E00}
20568The request was malformed, or @var{annex} was invalid.
20569
20570@item @code{E}@var{nn}
20571The offset was invalid, or there was an error encountered reading the data.
20572@var{nn} is a hex-encoded @code{errno} value.
20573
20574@item @code{""} (empty)
20575An empty reply indicates the @var{object} or @var{annex} string was not
20576recognized by the stub.
20577@end table
20578
20579@item @code{qPart}:@var{object}:@code{write}:@var{annex}:@var{offset}:@var{data@dots{}}
20580
20581Write uninterpreted bytes into the target's special data area
20582identified by the keyword @code{object},
20583starting at @var{offset} bytes into the data.
20584@var{data@dots{}} is the hex-encoded data to be written.
20585The content and encoding of @var{annex} is specific to the object;
20586it can supply additional details about what data to access.
20587
20588No requests of this form are presently in use. This specification
20589serves as a placeholder to document the common format that new
20590specific request specifications ought to use.
20591
20592Reply:
20593@table @asis
20594@item @var{nn}
20595@var{nn} (hex encoded) is the number of bytes written.
20596This may be fewer bytes than supplied in the request.
20597
20598@item @code{E00}
20599The request was malformed, or @var{annex} was invalid.
20600
20601@item @code{E}@var{nn}
20602The offset was invalid, or there was an error encountered writing the data.
20603@var{nn} is a hex-encoded @code{errno} value.
20604
20605@item @code{""} (empty)
20606An empty reply indicates the @var{object} or @var{annex} string was not
20607recognized by the stub, or that the object does not support writing.
20608@end table
20609
20610@item @code{qPart}:@var{object}:@var{operation}:@dots{}
20611Requests of this form may be added in the future. When a stub does
20612not recognize the @var{object} keyword, or its support for
20613@var{object} does not recognize the @var{operation} keyword,
20614the stub must respond with an empty packet.
ee2d5c50
AC
20615@end table
20616
20617@node Register Packet Format
20618@section Register Packet Format
eb12ee30 20619
8e04817f 20620The following @samp{g}/@samp{G} packets have previously been defined.
ee2d5c50
AC
20621In the below, some thirty-two bit registers are transferred as
20622sixty-four bits. Those registers should be zero/sign extended (which?)
20623to fill the space allocated. Register bytes are transfered in target
20624byte order. The two nibbles within a register byte are transfered
20625most-significant - least-significant.
eb12ee30 20626
ee2d5c50 20627@table @r
eb12ee30 20628
8e04817f 20629@item MIPS32
ee2d5c50 20630
8e04817f
AC
20631All registers are transfered as thirty-two bit quantities in the order:
2063232 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
20633registers; fsr; fir; fp.
eb12ee30 20634
8e04817f 20635@item MIPS64
ee2d5c50 20636
8e04817f
AC
20637All registers are transfered as sixty-four bit quantities (including
20638thirty-two bit registers such as @code{sr}). The ordering is the same
20639as @code{MIPS32}.
eb12ee30 20640
ee2d5c50
AC
20641@end table
20642
20643@node Examples
20644@section Examples
eb12ee30 20645
8e04817f
AC
20646Example sequence of a target being re-started. Notice how the restart
20647does not get any direct output:
eb12ee30 20648
474c8240 20649@smallexample
d2c6833e
AC
20650-> @code{R00}
20651<- @code{+}
8e04817f 20652@emph{target restarts}
d2c6833e 20653-> @code{?}
8e04817f 20654<- @code{+}
d2c6833e
AC
20655<- @code{T001:1234123412341234}
20656-> @code{+}
474c8240 20657@end smallexample
eb12ee30 20658
8e04817f 20659Example sequence of a target being stepped by a single instruction:
eb12ee30 20660
474c8240 20661@smallexample
d2c6833e 20662-> @code{G1445@dots{}}
8e04817f 20663<- @code{+}
d2c6833e
AC
20664-> @code{s}
20665<- @code{+}
20666@emph{time passes}
20667<- @code{T001:1234123412341234}
8e04817f 20668-> @code{+}
d2c6833e 20669-> @code{g}
8e04817f 20670<- @code{+}
d2c6833e
AC
20671<- @code{1455@dots{}}
20672-> @code{+}
474c8240 20673@end smallexample
eb12ee30 20674
0ce1b118
CV
20675@node File-I/O remote protocol extension
20676@section File-I/O remote protocol extension
20677@cindex File-I/O remote protocol extension
20678
20679@menu
20680* File-I/O Overview::
20681* Protocol basics::
1d8b2f28
JB
20682* The F request packet::
20683* The F reply packet::
0ce1b118
CV
20684* Memory transfer::
20685* The Ctrl-C message::
20686* Console I/O::
20687* The isatty call::
20688* The system call::
20689* List of supported calls::
20690* Protocol specific representation of datatypes::
20691* Constants::
20692* File-I/O Examples::
20693@end menu
20694
20695@node File-I/O Overview
20696@subsection File-I/O Overview
20697@cindex file-i/o overview
20698
20699The File I/O remote protocol extension (short: File-I/O) allows the
20700target to use the hosts file system and console I/O when calling various
20701system calls. System calls on the target system are translated into a
20702remote protocol packet to the host system which then performs the needed
20703actions and returns with an adequate response packet to the target system.
20704This simulates file system operations even on targets that lack file systems.
20705
20706The protocol is defined host- and target-system independent. It uses
20707it's own independent representation of datatypes and values. Both,
20708@value{GDBN} and the target's @value{GDBN} stub are responsible for
20709translating the system dependent values into the unified protocol values
20710when data is transmitted.
20711
20712The communication is synchronous. A system call is possible only
20713when GDB is waiting for the @samp{C}, @samp{c}, @samp{S} or @samp{s}
20714packets. While @value{GDBN} handles the request for a system call,
20715the target is stopped to allow deterministic access to the target's
20716memory. Therefore File-I/O is not interuptible by target signals. It
20717is possible to interrupt File-I/O by a user interrupt (Ctrl-C), though.
20718
20719The target's request to perform a host system call does not finish
20720the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
20721after finishing the system call, the target returns to continuing the
20722previous activity (continue, step). No additional continue or step
20723request from @value{GDBN} is required.
20724
20725@smallexample
f7dc1244 20726(@value{GDBP}) continue
0ce1b118
CV
20727 <- target requests 'system call X'
20728 target is stopped, @value{GDBN} executes system call
20729 -> GDB returns result
20730 ... target continues, GDB returns to wait for the target
20731 <- target hits breakpoint and sends a Txx packet
20732@end smallexample
20733
20734The protocol is only used for files on the host file system and
20735for I/O on the console. Character or block special devices, pipes,
20736named pipes or sockets or any other communication method on the host
20737system are not supported by this protocol.
20738
20739@node Protocol basics
20740@subsection Protocol basics
20741@cindex protocol basics, file-i/o
20742
20743The File-I/O protocol uses the @code{F} packet, as request as well
20744as as reply packet. Since a File-I/O system call can only occur when
b383017d 20745@value{GDBN} is waiting for the continuing or stepping target, the
0ce1b118
CV
20746File-I/O request is a reply that @value{GDBN} has to expect as a result
20747of a former @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
20748This @code{F} packet contains all information needed to allow @value{GDBN}
20749to call the appropriate host system call:
20750
20751@itemize @bullet
b383017d 20752@item
0ce1b118
CV
20753A unique identifier for the requested system call.
20754
20755@item
20756All parameters to the system call. Pointers are given as addresses
20757in the target memory address space. Pointers to strings are given as
b383017d 20758pointer/length pair. Numerical values are given as they are.
0ce1b118
CV
20759Numerical control values are given in a protocol specific representation.
20760
20761@end itemize
20762
20763At that point @value{GDBN} has to perform the following actions.
20764
20765@itemize @bullet
b383017d 20766@item
0ce1b118
CV
20767If parameter pointer values are given, which point to data needed as input
20768to a system call, @value{GDBN} requests this data from the target with a
20769standard @code{m} packet request. This additional communication has to be
20770expected by the target implementation and is handled as any other @code{m}
20771packet.
20772
20773@item
20774@value{GDBN} translates all value from protocol representation to host
20775representation as needed. Datatypes are coerced into the host types.
20776
20777@item
20778@value{GDBN} calls the system call
20779
20780@item
20781It then coerces datatypes back to protocol representation.
20782
20783@item
20784If pointer parameters in the request packet point to buffer space in which
20785a system call is expected to copy data to, the data is transmitted to the
20786target using a @code{M} or @code{X} packet. This packet has to be expected
20787by the target implementation and is handled as any other @code{M} or @code{X}
20788packet.
20789
20790@end itemize
20791
20792Eventually @value{GDBN} replies with another @code{F} packet which contains all
20793necessary information for the target to continue. This at least contains
20794
20795@itemize @bullet
20796@item
20797Return value.
20798
20799@item
20800@code{errno}, if has been changed by the system call.
20801
20802@item
20803``Ctrl-C'' flag.
20804
20805@end itemize
20806
20807After having done the needed type and value coercion, the target continues
20808the latest continue or step action.
20809
1d8b2f28 20810@node The F request packet
0ce1b118
CV
20811@subsection The @code{F} request packet
20812@cindex file-i/o request packet
20813@cindex @code{F} request packet
20814
20815The @code{F} request packet has the following format:
20816
20817@table @samp
20818
20819@smallexample
20820@code{F}@var{call-id}@code{,}@var{parameter@dots{}}
20821@end smallexample
20822
20823@var{call-id} is the identifier to indicate the host system call to be called.
20824This is just the name of the function.
20825
20826@var{parameter@dots{}} are the parameters to the system call.
20827
b383017d 20828@end table
0ce1b118
CV
20829
20830Parameters are hexadecimal integer values, either the real values in case
20831of scalar datatypes, as pointers to target buffer space in case of compound
20832datatypes and unspecified memory areas or as pointer/length pairs in case
20833of string parameters. These are appended to the call-id, each separated
20834from its predecessor by a comma. All values are transmitted in ASCII
20835string representation, pointer/length pairs separated by a slash.
20836
1d8b2f28 20837@node The F reply packet
0ce1b118
CV
20838@subsection The @code{F} reply packet
20839@cindex file-i/o reply packet
20840@cindex @code{F} reply packet
20841
20842The @code{F} reply packet has the following format:
20843
20844@table @samp
20845
20846@smallexample
20847@code{F}@var{retcode}@code{,}@var{errno}@code{,}@var{Ctrl-C flag}@code{;}@var{call specific attachment}
20848@end smallexample
20849
20850@var{retcode} is the return code of the system call as hexadecimal value.
20851
20852@var{errno} is the errno set by the call, in protocol specific representation.
20853This parameter can be omitted if the call was successful.
20854
20855@var{Ctrl-C flag} is only send if the user requested a break. In this
20856case, @var{errno} must be send as well, even if the call was successful.
20857The @var{Ctrl-C flag} itself consists of the character 'C':
20858
20859@smallexample
20860F0,0,C
20861@end smallexample
20862
20863@noindent
20864or, if the call was interupted before the host call has been performed:
20865
20866@smallexample
20867F-1,4,C
20868@end smallexample
20869
20870@noindent
20871assuming 4 is the protocol specific representation of @code{EINTR}.
20872
20873@end table
20874
20875@node Memory transfer
20876@subsection Memory transfer
20877@cindex memory transfer, in file-i/o protocol
20878
20879Structured data which is transferred using a memory read or write as e.g.@:
20880a @code{struct stat} is expected to be in a protocol specific format with
20881all scalar multibyte datatypes being big endian. This should be done by
20882the target before the @code{F} packet is sent resp.@: by @value{GDBN} before
20883it transfers memory to the target. Transferred pointers to structured
20884data should point to the already coerced data at any time.
20885
20886@node The Ctrl-C message
20887@subsection The Ctrl-C message
20888@cindex ctrl-c message, in file-i/o protocol
20889
20890A special case is, if the @var{Ctrl-C flag} is set in the @value{GDBN}
20891reply packet. In this case the target should behave, as if it had
20892gotten a break message. The meaning for the target is ``system call
20893interupted by @code{SIGINT}''. Consequentially, the target should actually stop
20894(as with a break message) and return to @value{GDBN} with a @code{T02}
b383017d 20895packet. In this case, it's important for the target to know, in which
0ce1b118
CV
20896state the system call was interrupted. Since this action is by design
20897not an atomic operation, we have to differ between two cases:
20898
20899@itemize @bullet
20900@item
20901The system call hasn't been performed on the host yet.
20902
20903@item
20904The system call on the host has been finished.
20905
20906@end itemize
20907
20908These two states can be distinguished by the target by the value of the
20909returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
20910call hasn't been performed. This is equivalent to the @code{EINTR} handling
20911on POSIX systems. In any other case, the target may presume that the
20912system call has been finished --- successful or not --- and should behave
20913as if the break message arrived right after the system call.
20914
20915@value{GDBN} must behave reliable. If the system call has not been called
20916yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
20917@code{errno} in the packet. If the system call on the host has been finished
20918before the user requests a break, the full action must be finshed by
20919@value{GDBN}. This requires sending @code{M} or @code{X} packets as they fit.
20920The @code{F} packet may only be send when either nothing has happened
20921or the full action has been completed.
20922
20923@node Console I/O
20924@subsection Console I/O
20925@cindex console i/o as part of file-i/o
20926
20927By default and if not explicitely closed by the target system, the file
20928descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
20929on the @value{GDBN} console is handled as any other file output operation
20930(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
20931by @value{GDBN} so that after the target read request from file descriptor
209320 all following typing is buffered until either one of the following
20933conditions is met:
20934
20935@itemize @bullet
20936@item
20937The user presses @kbd{Ctrl-C}. The behaviour is as explained above, the
20938@code{read}
20939system call is treated as finished.
20940
20941@item
20942The user presses @kbd{Enter}. This is treated as end of input with a trailing
20943line feed.
20944
20945@item
20946The user presses @kbd{Ctrl-D}. This is treated as end of input. No trailing
20947character, especially no Ctrl-D is appended to the input.
20948
20949@end itemize
20950
20951If the user has typed more characters as fit in the buffer given to
20952the read call, the trailing characters are buffered in @value{GDBN} until
20953either another @code{read(0, @dots{})} is requested by the target or debugging
20954is stopped on users request.
20955
20956@node The isatty call
20957@subsection The isatty(3) call
20958@cindex isatty call, file-i/o protocol
20959
20960A special case in this protocol is the library call @code{isatty} which
20961is implemented as it's own call inside of this protocol. It returns
209621 to the target if the file descriptor given as parameter is attached
20963to the @value{GDBN} console, 0 otherwise. Implementing through system calls
20964would require implementing @code{ioctl} and would be more complex than
20965needed.
20966
20967@node The system call
20968@subsection The system(3) call
20969@cindex system call, file-i/o protocol
20970
20971The other special case in this protocol is the @code{system} call which
20972is implemented as it's own call, too. @value{GDBN} is taking over the full
20973task of calling the necessary host calls to perform the @code{system}
20974call. The return value of @code{system} is simplified before it's returned
20975to the target. Basically, the only signal transmitted back is @code{EINTR}
20976in case the user pressed @kbd{Ctrl-C}. Otherwise the return value consists
20977entirely of the exit status of the called command.
20978
20979Due to security concerns, the @code{system} call is refused to be called
b383017d 20980by @value{GDBN} by default. The user has to allow this call explicitly by
0ce1b118
CV
20981entering
20982
20983@table @samp
20984@kindex set remote system-call-allowed 1
20985@item @code{set remote system-call-allowed 1}
20986@end table
20987
20988Disabling the @code{system} call is done by
20989
20990@table @samp
20991@kindex set remote system-call-allowed 0
20992@item @code{set remote system-call-allowed 0}
20993@end table
20994
20995The current setting is shown by typing
20996
20997@table @samp
20998@kindex show remote system-call-allowed
20999@item @code{show remote system-call-allowed}
21000@end table
21001
21002@node List of supported calls
21003@subsection List of supported calls
21004@cindex list of supported file-i/o calls
21005
21006@menu
21007* open::
21008* close::
21009* read::
21010* write::
21011* lseek::
21012* rename::
21013* unlink::
21014* stat/fstat::
21015* gettimeofday::
21016* isatty::
21017* system::
21018@end menu
21019
21020@node open
21021@unnumberedsubsubsec open
21022@cindex open, file-i/o system call
21023
21024@smallexample
21025@exdent Synopsis:
21026int open(const char *pathname, int flags);
21027int open(const char *pathname, int flags, mode_t mode);
21028
b383017d 21029@exdent Request:
0ce1b118
CV
21030Fopen,pathptr/len,flags,mode
21031@end smallexample
21032
21033@noindent
21034@code{flags} is the bitwise or of the following values:
21035
21036@table @code
b383017d 21037@item O_CREAT
0ce1b118
CV
21038If the file does not exist it will be created. The host
21039rules apply as far as file ownership and time stamps
21040are concerned.
21041
b383017d 21042@item O_EXCL
0ce1b118
CV
21043When used with O_CREAT, if the file already exists it is
21044an error and open() fails.
21045
b383017d 21046@item O_TRUNC
0ce1b118
CV
21047If the file already exists and the open mode allows
21048writing (O_RDWR or O_WRONLY is given) it will be
21049truncated to length 0.
21050
b383017d 21051@item O_APPEND
0ce1b118
CV
21052The file is opened in append mode.
21053
b383017d 21054@item O_RDONLY
0ce1b118
CV
21055The file is opened for reading only.
21056
b383017d 21057@item O_WRONLY
0ce1b118
CV
21058The file is opened for writing only.
21059
b383017d 21060@item O_RDWR
0ce1b118
CV
21061The file is opened for reading and writing.
21062
21063@noindent
21064Each other bit is silently ignored.
21065
21066@end table
21067
21068@noindent
21069@code{mode} is the bitwise or of the following values:
21070
21071@table @code
b383017d 21072@item S_IRUSR
0ce1b118
CV
21073User has read permission.
21074
b383017d 21075@item S_IWUSR
0ce1b118
CV
21076User has write permission.
21077
b383017d 21078@item S_IRGRP
0ce1b118
CV
21079Group has read permission.
21080
b383017d 21081@item S_IWGRP
0ce1b118
CV
21082Group has write permission.
21083
b383017d 21084@item S_IROTH
0ce1b118
CV
21085Others have read permission.
21086
b383017d 21087@item S_IWOTH
0ce1b118
CV
21088Others have write permission.
21089
21090@noindent
21091Each other bit is silently ignored.
21092
21093@end table
21094
21095@smallexample
21096@exdent Return value:
21097open returns the new file descriptor or -1 if an error
21098occured.
21099
21100@exdent Errors:
21101@end smallexample
21102
21103@table @code
b383017d 21104@item EEXIST
0ce1b118
CV
21105pathname already exists and O_CREAT and O_EXCL were used.
21106
b383017d 21107@item EISDIR
0ce1b118
CV
21108pathname refers to a directory.
21109
b383017d 21110@item EACCES
0ce1b118
CV
21111The requested access is not allowed.
21112
21113@item ENAMETOOLONG
21114pathname was too long.
21115
b383017d 21116@item ENOENT
0ce1b118
CV
21117A directory component in pathname does not exist.
21118
b383017d 21119@item ENODEV
0ce1b118
CV
21120pathname refers to a device, pipe, named pipe or socket.
21121
b383017d 21122@item EROFS
0ce1b118
CV
21123pathname refers to a file on a read-only filesystem and
21124write access was requested.
21125
b383017d 21126@item EFAULT
0ce1b118
CV
21127pathname is an invalid pointer value.
21128
b383017d 21129@item ENOSPC
0ce1b118
CV
21130No space on device to create the file.
21131
b383017d 21132@item EMFILE
0ce1b118
CV
21133The process already has the maximum number of files open.
21134
b383017d 21135@item ENFILE
0ce1b118
CV
21136The limit on the total number of files open on the system
21137has been reached.
21138
b383017d 21139@item EINTR
0ce1b118
CV
21140The call was interrupted by the user.
21141@end table
21142
21143@node close
21144@unnumberedsubsubsec close
21145@cindex close, file-i/o system call
21146
21147@smallexample
b383017d 21148@exdent Synopsis:
0ce1b118
CV
21149int close(int fd);
21150
b383017d 21151@exdent Request:
0ce1b118
CV
21152Fclose,fd
21153
21154@exdent Return value:
21155close returns zero on success, or -1 if an error occurred.
21156
21157@exdent Errors:
21158@end smallexample
21159
21160@table @code
b383017d 21161@item EBADF
0ce1b118
CV
21162fd isn't a valid open file descriptor.
21163
b383017d 21164@item EINTR
0ce1b118
CV
21165The call was interrupted by the user.
21166@end table
21167
21168@node read
21169@unnumberedsubsubsec read
21170@cindex read, file-i/o system call
21171
21172@smallexample
b383017d 21173@exdent Synopsis:
0ce1b118
CV
21174int read(int fd, void *buf, unsigned int count);
21175
b383017d 21176@exdent Request:
0ce1b118
CV
21177Fread,fd,bufptr,count
21178
21179@exdent Return value:
21180On success, the number of bytes read is returned.
21181Zero indicates end of file. If count is zero, read
b383017d 21182returns zero as well. On error, -1 is returned.
0ce1b118
CV
21183
21184@exdent Errors:
21185@end smallexample
21186
21187@table @code
b383017d 21188@item EBADF
0ce1b118
CV
21189fd is not a valid file descriptor or is not open for
21190reading.
21191
b383017d 21192@item EFAULT
0ce1b118
CV
21193buf is an invalid pointer value.
21194
b383017d 21195@item EINTR
0ce1b118
CV
21196The call was interrupted by the user.
21197@end table
21198
21199@node write
21200@unnumberedsubsubsec write
21201@cindex write, file-i/o system call
21202
21203@smallexample
b383017d 21204@exdent Synopsis:
0ce1b118
CV
21205int write(int fd, const void *buf, unsigned int count);
21206
b383017d 21207@exdent Request:
0ce1b118
CV
21208Fwrite,fd,bufptr,count
21209
21210@exdent Return value:
21211On success, the number of bytes written are returned.
21212Zero indicates nothing was written. On error, -1
21213is returned.
21214
21215@exdent Errors:
21216@end smallexample
21217
21218@table @code
b383017d 21219@item EBADF
0ce1b118
CV
21220fd is not a valid file descriptor or is not open for
21221writing.
21222
b383017d 21223@item EFAULT
0ce1b118
CV
21224buf is an invalid pointer value.
21225
b383017d 21226@item EFBIG
0ce1b118
CV
21227An attempt was made to write a file that exceeds the
21228host specific maximum file size allowed.
21229
b383017d 21230@item ENOSPC
0ce1b118
CV
21231No space on device to write the data.
21232
b383017d 21233@item EINTR
0ce1b118
CV
21234The call was interrupted by the user.
21235@end table
21236
21237@node lseek
21238@unnumberedsubsubsec lseek
21239@cindex lseek, file-i/o system call
21240
21241@smallexample
b383017d 21242@exdent Synopsis:
0ce1b118
CV
21243long lseek (int fd, long offset, int flag);
21244
b383017d 21245@exdent Request:
0ce1b118
CV
21246Flseek,fd,offset,flag
21247@end smallexample
21248
21249@code{flag} is one of:
21250
21251@table @code
b383017d 21252@item SEEK_SET
0ce1b118
CV
21253The offset is set to offset bytes.
21254
b383017d 21255@item SEEK_CUR
0ce1b118
CV
21256The offset is set to its current location plus offset
21257bytes.
21258
b383017d 21259@item SEEK_END
0ce1b118
CV
21260The offset is set to the size of the file plus offset
21261bytes.
21262@end table
21263
21264@smallexample
21265@exdent Return value:
21266On success, the resulting unsigned offset in bytes from
21267the beginning of the file is returned. Otherwise, a
21268value of -1 is returned.
21269
21270@exdent Errors:
21271@end smallexample
21272
21273@table @code
b383017d 21274@item EBADF
0ce1b118
CV
21275fd is not a valid open file descriptor.
21276
b383017d 21277@item ESPIPE
0ce1b118
CV
21278fd is associated with the @value{GDBN} console.
21279
b383017d 21280@item EINVAL
0ce1b118
CV
21281flag is not a proper value.
21282
b383017d 21283@item EINTR
0ce1b118
CV
21284The call was interrupted by the user.
21285@end table
21286
21287@node rename
21288@unnumberedsubsubsec rename
21289@cindex rename, file-i/o system call
21290
21291@smallexample
b383017d 21292@exdent Synopsis:
0ce1b118
CV
21293int rename(const char *oldpath, const char *newpath);
21294
b383017d 21295@exdent Request:
0ce1b118
CV
21296Frename,oldpathptr/len,newpathptr/len
21297
21298@exdent Return value:
21299On success, zero is returned. On error, -1 is returned.
21300
21301@exdent Errors:
21302@end smallexample
21303
21304@table @code
b383017d 21305@item EISDIR
0ce1b118
CV
21306newpath is an existing directory, but oldpath is not a
21307directory.
21308
b383017d 21309@item EEXIST
0ce1b118
CV
21310newpath is a non-empty directory.
21311
b383017d 21312@item EBUSY
0ce1b118
CV
21313oldpath or newpath is a directory that is in use by some
21314process.
21315
b383017d 21316@item EINVAL
0ce1b118
CV
21317An attempt was made to make a directory a subdirectory
21318of itself.
21319
b383017d 21320@item ENOTDIR
0ce1b118
CV
21321A component used as a directory in oldpath or new
21322path is not a directory. Or oldpath is a directory
21323and newpath exists but is not a directory.
21324
b383017d 21325@item EFAULT
0ce1b118
CV
21326oldpathptr or newpathptr are invalid pointer values.
21327
b383017d 21328@item EACCES
0ce1b118
CV
21329No access to the file or the path of the file.
21330
21331@item ENAMETOOLONG
b383017d 21332
0ce1b118
CV
21333oldpath or newpath was too long.
21334
b383017d 21335@item ENOENT
0ce1b118
CV
21336A directory component in oldpath or newpath does not exist.
21337
b383017d 21338@item EROFS
0ce1b118
CV
21339The file is on a read-only filesystem.
21340
b383017d 21341@item ENOSPC
0ce1b118
CV
21342The device containing the file has no room for the new
21343directory entry.
21344
b383017d 21345@item EINTR
0ce1b118
CV
21346The call was interrupted by the user.
21347@end table
21348
21349@node unlink
21350@unnumberedsubsubsec unlink
21351@cindex unlink, file-i/o system call
21352
21353@smallexample
b383017d 21354@exdent Synopsis:
0ce1b118
CV
21355int unlink(const char *pathname);
21356
b383017d 21357@exdent Request:
0ce1b118
CV
21358Funlink,pathnameptr/len
21359
21360@exdent Return value:
21361On success, zero is returned. On error, -1 is returned.
21362
21363@exdent Errors:
21364@end smallexample
21365
21366@table @code
b383017d 21367@item EACCES
0ce1b118
CV
21368No access to the file or the path of the file.
21369
b383017d 21370@item EPERM
0ce1b118
CV
21371The system does not allow unlinking of directories.
21372
b383017d 21373@item EBUSY
0ce1b118
CV
21374The file pathname cannot be unlinked because it's
21375being used by another process.
21376
b383017d 21377@item EFAULT
0ce1b118
CV
21378pathnameptr is an invalid pointer value.
21379
21380@item ENAMETOOLONG
21381pathname was too long.
21382
b383017d 21383@item ENOENT
0ce1b118
CV
21384A directory component in pathname does not exist.
21385
b383017d 21386@item ENOTDIR
0ce1b118
CV
21387A component of the path is not a directory.
21388
b383017d 21389@item EROFS
0ce1b118
CV
21390The file is on a read-only filesystem.
21391
b383017d 21392@item EINTR
0ce1b118
CV
21393The call was interrupted by the user.
21394@end table
21395
21396@node stat/fstat
21397@unnumberedsubsubsec stat/fstat
21398@cindex fstat, file-i/o system call
21399@cindex stat, file-i/o system call
21400
21401@smallexample
b383017d 21402@exdent Synopsis:
0ce1b118
CV
21403int stat(const char *pathname, struct stat *buf);
21404int fstat(int fd, struct stat *buf);
21405
b383017d 21406@exdent Request:
0ce1b118
CV
21407Fstat,pathnameptr/len,bufptr
21408Ffstat,fd,bufptr
21409
21410@exdent Return value:
21411On success, zero is returned. On error, -1 is returned.
21412
21413@exdent Errors:
21414@end smallexample
21415
21416@table @code
b383017d 21417@item EBADF
0ce1b118
CV
21418fd is not a valid open file.
21419
b383017d 21420@item ENOENT
0ce1b118
CV
21421A directory component in pathname does not exist or the
21422path is an empty string.
21423
b383017d 21424@item ENOTDIR
0ce1b118
CV
21425A component of the path is not a directory.
21426
b383017d 21427@item EFAULT
0ce1b118
CV
21428pathnameptr is an invalid pointer value.
21429
b383017d 21430@item EACCES
0ce1b118
CV
21431No access to the file or the path of the file.
21432
21433@item ENAMETOOLONG
21434pathname was too long.
21435
b383017d 21436@item EINTR
0ce1b118
CV
21437The call was interrupted by the user.
21438@end table
21439
21440@node gettimeofday
21441@unnumberedsubsubsec gettimeofday
21442@cindex gettimeofday, file-i/o system call
21443
21444@smallexample
b383017d 21445@exdent Synopsis:
0ce1b118
CV
21446int gettimeofday(struct timeval *tv, void *tz);
21447
b383017d 21448@exdent Request:
0ce1b118
CV
21449Fgettimeofday,tvptr,tzptr
21450
21451@exdent Return value:
21452On success, 0 is returned, -1 otherwise.
21453
21454@exdent Errors:
21455@end smallexample
21456
21457@table @code
b383017d 21458@item EINVAL
0ce1b118
CV
21459tz is a non-NULL pointer.
21460
b383017d 21461@item EFAULT
0ce1b118
CV
21462tvptr and/or tzptr is an invalid pointer value.
21463@end table
21464
21465@node isatty
21466@unnumberedsubsubsec isatty
21467@cindex isatty, file-i/o system call
21468
21469@smallexample
b383017d 21470@exdent Synopsis:
0ce1b118
CV
21471int isatty(int fd);
21472
b383017d 21473@exdent Request:
0ce1b118
CV
21474Fisatty,fd
21475
21476@exdent Return value:
21477Returns 1 if fd refers to the @value{GDBN} console, 0 otherwise.
21478
21479@exdent Errors:
21480@end smallexample
21481
21482@table @code
b383017d 21483@item EINTR
0ce1b118
CV
21484The call was interrupted by the user.
21485@end table
21486
21487@node system
21488@unnumberedsubsubsec system
21489@cindex system, file-i/o system call
21490
21491@smallexample
b383017d 21492@exdent Synopsis:
0ce1b118
CV
21493int system(const char *command);
21494
b383017d 21495@exdent Request:
0ce1b118
CV
21496Fsystem,commandptr/len
21497
21498@exdent Return value:
21499The value returned is -1 on error and the return status
21500of the command otherwise. Only the exit status of the
21501command is returned, which is extracted from the hosts
21502system return value by calling WEXITSTATUS(retval).
21503In case /bin/sh could not be executed, 127 is returned.
21504
21505@exdent Errors:
21506@end smallexample
21507
21508@table @code
b383017d 21509@item EINTR
0ce1b118
CV
21510The call was interrupted by the user.
21511@end table
21512
21513@node Protocol specific representation of datatypes
21514@subsection Protocol specific representation of datatypes
21515@cindex protocol specific representation of datatypes, in file-i/o protocol
21516
21517@menu
21518* Integral datatypes::
21519* Pointer values::
21520* struct stat::
21521* struct timeval::
21522@end menu
21523
21524@node Integral datatypes
21525@unnumberedsubsubsec Integral datatypes
21526@cindex integral datatypes, in file-i/o protocol
21527
21528The integral datatypes used in the system calls are
21529
21530@smallexample
21531int@r{,} unsigned int@r{,} long@r{,} unsigned long@r{,} mode_t @r{and} time_t
21532@end smallexample
21533
21534@code{Int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
21535implemented as 32 bit values in this protocol.
21536
b383017d
RM
21537@code{Long} and @code{unsigned long} are implemented as 64 bit types.
21538
0ce1b118
CV
21539@xref{Limits}, for corresponding MIN and MAX values (similar to those
21540in @file{limits.h}) to allow range checking on host and target.
21541
21542@code{time_t} datatypes are defined as seconds since the Epoch.
21543
21544All integral datatypes transferred as part of a memory read or write of a
21545structured datatype e.g.@: a @code{struct stat} have to be given in big endian
21546byte order.
21547
21548@node Pointer values
21549@unnumberedsubsubsec Pointer values
21550@cindex pointer values, in file-i/o protocol
21551
21552Pointers to target data are transmitted as they are. An exception
21553is made for pointers to buffers for which the length isn't
21554transmitted as part of the function call, namely strings. Strings
21555are transmitted as a pointer/length pair, both as hex values, e.g.@:
21556
21557@smallexample
21558@code{1aaf/12}
21559@end smallexample
21560
21561@noindent
21562which is a pointer to data of length 18 bytes at position 0x1aaf.
21563The length is defined as the full string length in bytes, including
21564the trailing null byte. Example:
21565
21566@smallexample
21567``hello, world'' at address 0x123456
21568@end smallexample
21569
21570@noindent
21571is transmitted as
21572
21573@smallexample
21574@code{123456/d}
21575@end smallexample
21576
21577@node struct stat
21578@unnumberedsubsubsec struct stat
21579@cindex struct stat, in file-i/o protocol
21580
21581The buffer of type struct stat used by the target and @value{GDBN} is defined
21582as follows:
21583
21584@smallexample
21585struct stat @{
21586 unsigned int st_dev; /* device */
21587 unsigned int st_ino; /* inode */
21588 mode_t st_mode; /* protection */
21589 unsigned int st_nlink; /* number of hard links */
21590 unsigned int st_uid; /* user ID of owner */
21591 unsigned int st_gid; /* group ID of owner */
21592 unsigned int st_rdev; /* device type (if inode device) */
21593 unsigned long st_size; /* total size, in bytes */
21594 unsigned long st_blksize; /* blocksize for filesystem I/O */
21595 unsigned long st_blocks; /* number of blocks allocated */
21596 time_t st_atime; /* time of last access */
21597 time_t st_mtime; /* time of last modification */
21598 time_t st_ctime; /* time of last change */
21599@};
21600@end smallexample
21601
21602The integral datatypes are conforming to the definitions given in the
21603approriate section (see @ref{Integral datatypes}, for details) so this
21604structure is of size 64 bytes.
21605
21606The values of several fields have a restricted meaning and/or
21607range of values.
21608
21609@smallexample
21610st_dev: 0 file
21611 1 console
21612
21613st_ino: No valid meaning for the target. Transmitted unchanged.
21614
21615st_mode: Valid mode bits are described in Appendix C. Any other
21616 bits have currently no meaning for the target.
21617
21618st_uid: No valid meaning for the target. Transmitted unchanged.
21619
21620st_gid: No valid meaning for the target. Transmitted unchanged.
21621
21622st_rdev: No valid meaning for the target. Transmitted unchanged.
21623
21624st_atime, st_mtime, st_ctime:
21625 These values have a host and file system dependent
21626 accuracy. Especially on Windows hosts the file systems
21627 don't support exact timing values.
21628@end smallexample
21629
21630The target gets a struct stat of the above representation and is
21631responsible to coerce it to the target representation before
21632continuing.
21633
21634Note that due to size differences between the host and target
21635representation of stat members, these members could eventually
21636get truncated on the target.
21637
21638@node struct timeval
21639@unnumberedsubsubsec struct timeval
21640@cindex struct timeval, in file-i/o protocol
21641
21642The buffer of type struct timeval used by the target and @value{GDBN}
21643is defined as follows:
21644
21645@smallexample
b383017d 21646struct timeval @{
0ce1b118
CV
21647 time_t tv_sec; /* second */
21648 long tv_usec; /* microsecond */
21649@};
21650@end smallexample
21651
21652The integral datatypes are conforming to the definitions given in the
21653approriate section (see @ref{Integral datatypes}, for details) so this
21654structure is of size 8 bytes.
21655
21656@node Constants
21657@subsection Constants
21658@cindex constants, in file-i/o protocol
21659
21660The following values are used for the constants inside of the
21661protocol. @value{GDBN} and target are resposible to translate these
21662values before and after the call as needed.
21663
21664@menu
21665* Open flags::
21666* mode_t values::
21667* Errno values::
21668* Lseek flags::
21669* Limits::
21670@end menu
21671
21672@node Open flags
21673@unnumberedsubsubsec Open flags
21674@cindex open flags, in file-i/o protocol
21675
21676All values are given in hexadecimal representation.
21677
21678@smallexample
21679 O_RDONLY 0x0
21680 O_WRONLY 0x1
21681 O_RDWR 0x2
21682 O_APPEND 0x8
21683 O_CREAT 0x200
21684 O_TRUNC 0x400
21685 O_EXCL 0x800
21686@end smallexample
21687
21688@node mode_t values
21689@unnumberedsubsubsec mode_t values
21690@cindex mode_t values, in file-i/o protocol
21691
21692All values are given in octal representation.
21693
21694@smallexample
21695 S_IFREG 0100000
21696 S_IFDIR 040000
21697 S_IRUSR 0400
21698 S_IWUSR 0200
21699 S_IXUSR 0100
21700 S_IRGRP 040
21701 S_IWGRP 020
21702 S_IXGRP 010
21703 S_IROTH 04
21704 S_IWOTH 02
21705 S_IXOTH 01
21706@end smallexample
21707
21708@node Errno values
21709@unnumberedsubsubsec Errno values
21710@cindex errno values, in file-i/o protocol
21711
21712All values are given in decimal representation.
21713
21714@smallexample
21715 EPERM 1
21716 ENOENT 2
21717 EINTR 4
21718 EBADF 9
21719 EACCES 13
21720 EFAULT 14
21721 EBUSY 16
21722 EEXIST 17
21723 ENODEV 19
21724 ENOTDIR 20
21725 EISDIR 21
21726 EINVAL 22
21727 ENFILE 23
21728 EMFILE 24
21729 EFBIG 27
21730 ENOSPC 28
21731 ESPIPE 29
21732 EROFS 30
21733 ENAMETOOLONG 91
21734 EUNKNOWN 9999
21735@end smallexample
21736
21737 EUNKNOWN is used as a fallback error value if a host system returns
21738 any error value not in the list of supported error numbers.
21739
21740@node Lseek flags
21741@unnumberedsubsubsec Lseek flags
21742@cindex lseek flags, in file-i/o protocol
21743
21744@smallexample
21745 SEEK_SET 0
21746 SEEK_CUR 1
21747 SEEK_END 2
21748@end smallexample
21749
21750@node Limits
21751@unnumberedsubsubsec Limits
21752@cindex limits, in file-i/o protocol
21753
21754All values are given in decimal representation.
21755
21756@smallexample
21757 INT_MIN -2147483648
21758 INT_MAX 2147483647
21759 UINT_MAX 4294967295
21760 LONG_MIN -9223372036854775808
21761 LONG_MAX 9223372036854775807
21762 ULONG_MAX 18446744073709551615
21763@end smallexample
21764
21765@node File-I/O Examples
21766@subsection File-I/O Examples
21767@cindex file-i/o examples
21768
21769Example sequence of a write call, file descriptor 3, buffer is at target
21770address 0x1234, 6 bytes should be written:
21771
21772@smallexample
21773<- @code{Fwrite,3,1234,6}
21774@emph{request memory read from target}
21775-> @code{m1234,6}
21776<- XXXXXX
21777@emph{return "6 bytes written"}
21778-> @code{F6}
21779@end smallexample
21780
21781Example sequence of a read call, file descriptor 3, buffer is at target
21782address 0x1234, 6 bytes should be read:
21783
21784@smallexample
21785<- @code{Fread,3,1234,6}
21786@emph{request memory write to target}
21787-> @code{X1234,6:XXXXXX}
21788@emph{return "6 bytes read"}
21789-> @code{F6}
21790@end smallexample
21791
21792Example sequence of a read call, call fails on the host due to invalid
21793file descriptor (EBADF):
21794
21795@smallexample
21796<- @code{Fread,3,1234,6}
21797-> @code{F-1,9}
21798@end smallexample
21799
21800Example sequence of a read call, user presses Ctrl-C before syscall on
21801host is called:
21802
21803@smallexample
21804<- @code{Fread,3,1234,6}
21805-> @code{F-1,4,C}
21806<- @code{T02}
21807@end smallexample
21808
21809Example sequence of a read call, user presses Ctrl-C after syscall on
21810host is called:
21811
21812@smallexample
21813<- @code{Fread,3,1234,6}
21814-> @code{X1234,6:XXXXXX}
21815<- @code{T02}
21816@end smallexample
21817
f418dd93
DJ
21818@include agentexpr.texi
21819
aab4e0ec 21820@include gpl.texi
eb12ee30 21821
2154891a 21822@raisesections
6826cf00 21823@include fdl.texi
2154891a 21824@lowersections
6826cf00 21825
6d2ebf8b 21826@node Index
c906108c
SS
21827@unnumbered Index
21828
21829@printindex cp
21830
21831@tex
21832% I think something like @colophon should be in texinfo. In the
21833% meantime:
21834\long\def\colophon{\hbox to0pt{}\vfill
21835\centerline{The body of this manual is set in}
21836\centerline{\fontname\tenrm,}
21837\centerline{with headings in {\bf\fontname\tenbf}}
21838\centerline{and examples in {\tt\fontname\tentt}.}
21839\centerline{{\it\fontname\tenit\/},}
21840\centerline{{\bf\fontname\tenbf}, and}
21841\centerline{{\sl\fontname\tensl\/}}
21842\centerline{are used for emphasis.}\vfill}
21843\page\colophon
21844% Blame: doc@cygnus.com, 1991.
21845@end tex
21846
c906108c 21847@bye
This page took 2.265844 seconds and 4 git commands to generate.