* bfd.c (bfd_demangle): Always trim off bfd_get_symbol_leading_char.
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
CommitLineData
c906108c 1\input texinfo @c -*-texinfo-*-
c02a867d 2@c Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
65d12d83 3@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008
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}
c16158bc
JM
52@ifset VERSION_PACKAGE
53@value{VERSION_PACKAGE}
54@end ifset
9fe8321b 55Version @value{GDBVN}.
c906108c 56
8a037dd7 57Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@*
b620eb07 58 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006@*
7d51c7de 59 Free Software Foundation, Inc.
c906108c 60
e9c75b65
EZ
61Permission is granted to copy, distribute and/or modify this document
62under the terms of the GNU Free Documentation License, Version 1.1 or
63any later version published by the Free Software Foundation; with the
959acfd1
EZ
64Invariant Sections being ``Free Software'' and ``Free Software Needs
65Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
66and with the Back-Cover Texts as in (a) below.
c906108c 67
b8533aec
DJ
68(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
69this GNU Manual. Buying copies from GNU Press supports the FSF in
70developing GNU and promoting software freedom.''
c906108c
SS
71@end ifinfo
72
73@titlepage
74@title Debugging with @value{GDBN}
75@subtitle The @sc{gnu} Source-Level Debugger
c906108c 76@sp 1
c906108c 77@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
c16158bc
JM
78@ifset VERSION_PACKAGE
79@sp 1
80@subtitle @value{VERSION_PACKAGE}
81@end ifset
9e9c5ae7 82@author Richard Stallman, Roland Pesch, Stan Shebs, et al.
c906108c 83@page
c906108c
SS
84@tex
85{\parskip=0pt
c16158bc 86\hfill (Send bugs and comments on @value{GDBN} to @value{BUGURL}.)\par
c906108c
SS
87\hfill {\it Debugging with @value{GDBN}}\par
88\hfill \TeX{}info \texinfoversion\par
89}
90@end tex
53a5351d 91
c906108c 92@vskip 0pt plus 1filll
8a037dd7 93Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
b620eb07 941996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006
7d51c7de 95Free Software Foundation, Inc.
c906108c 96@sp 2
c906108c 97Published by the Free Software Foundation @*
c02a867d
EZ
9851 Franklin Street, Fifth Floor,
99Boston, MA 02110-1301, USA@*
6d2ebf8b 100ISBN 1-882114-77-9 @*
e9c75b65
EZ
101
102Permission is granted to copy, distribute and/or modify this document
103under the terms of the GNU Free Documentation License, Version 1.1 or
104any later version published by the Free Software Foundation; with the
959acfd1
EZ
105Invariant Sections being ``Free Software'' and ``Free Software Needs
106Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
107and with the Back-Cover Texts as in (a) below.
e9c75b65 108
b8533aec
DJ
109(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
110this GNU Manual. Buying copies from GNU Press supports the FSF in
111developing GNU and promoting software freedom.''
3fb6a982
JB
112@page
113This edition of the GDB manual is dedicated to the memory of Fred
114Fish. Fred was a long-standing contributor to GDB and to Free
115software in general. We will miss him.
c906108c
SS
116@end titlepage
117@page
118
6c0e9fb3 119@ifnottex
6d2ebf8b
SS
120@node Top, Summary, (dir), (dir)
121
c906108c
SS
122@top Debugging with @value{GDBN}
123
124This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
125
c16158bc
JM
126This is the @value{EDITION} Edition, for @value{GDBN}
127@ifset VERSION_PACKAGE
128@value{VERSION_PACKAGE}
129@end ifset
130Version @value{GDBVN}.
c906108c 131
b620eb07 132Copyright (C) 1988-2006 Free Software Foundation, Inc.
6d2ebf8b 133
3fb6a982
JB
134This edition of the GDB manual is dedicated to the memory of Fred
135Fish. Fred was a long-standing contributor to GDB and to Free
136software in general. We will miss him.
137
6d2ebf8b
SS
138@menu
139* Summary:: Summary of @value{GDBN}
140* Sample Session:: A sample @value{GDBN} session
141
142* Invocation:: Getting in and out of @value{GDBN}
143* Commands:: @value{GDBN} commands
144* Running:: Running programs under @value{GDBN}
145* Stopping:: Stopping and continuing
146* Stack:: Examining the stack
147* Source:: Examining source files
148* Data:: Examining data
e2e0bcd1 149* Macros:: Preprocessor Macros
b37052ae 150* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 151* Overlays:: Debugging programs that use overlays
6d2ebf8b
SS
152
153* Languages:: Using @value{GDBN} with different languages
154
155* Symbols:: Examining the symbol table
156* Altering:: Altering execution
157* GDB Files:: @value{GDBN} files
158* Targets:: Specifying a debugging target
6b2f586d 159* Remote Debugging:: Debugging remote programs
6d2ebf8b
SS
160* Configurations:: Configuration-specific information
161* Controlling GDB:: Controlling @value{GDBN}
162* Sequences:: Canned sequences of commands
21c294e6 163* Interpreters:: Command Interpreters
c8f4133a 164* TUI:: @value{GDBN} Text User Interface
6d2ebf8b 165* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
7162c0ca 166* GDB/MI:: @value{GDBN}'s Machine Interface.
c8f4133a 167* Annotations:: @value{GDBN}'s annotation interface.
6d2ebf8b
SS
168
169* GDB Bugs:: Reporting bugs in @value{GDBN}
6d2ebf8b
SS
170
171* Command Line Editing:: Command Line Editing
172* Using History Interactively:: Using History Interactively
0869d01b 173* Formatting Documentation:: How to format and print @value{GDBN} documentation
6d2ebf8b 174* Installing GDB:: Installing GDB
eb12ee30 175* Maintenance Commands:: Maintenance Commands
e0ce93ac 176* Remote Protocol:: GDB Remote Serial Protocol
f418dd93 177* Agent Expressions:: The GDB Agent Expression Mechanism
23181151
DJ
178* Target Descriptions:: How targets can describe themselves to
179 @value{GDBN}
aab4e0ec
AC
180* Copying:: GNU General Public License says
181 how you can copy and share GDB
6826cf00 182* GNU Free Documentation License:: The license for this documentation
6d2ebf8b
SS
183* Index:: Index
184@end menu
185
6c0e9fb3 186@end ifnottex
c906108c 187
449f3b6c 188@contents
449f3b6c 189
6d2ebf8b 190@node Summary
c906108c
SS
191@unnumbered Summary of @value{GDBN}
192
193The purpose of a debugger such as @value{GDBN} is to allow you to see what is
194going on ``inside'' another program while it executes---or what another
195program was doing at the moment it crashed.
196
197@value{GDBN} can do four main kinds of things (plus other things in support of
198these) to help you catch bugs in the act:
199
200@itemize @bullet
201@item
202Start your program, specifying anything that might affect its behavior.
203
204@item
205Make your program stop on specified conditions.
206
207@item
208Examine what has happened, when your program has stopped.
209
210@item
211Change things in your program, so you can experiment with correcting the
212effects of one bug and go on to learn about another.
213@end itemize
214
49efadf5 215You can use @value{GDBN} to debug programs written in C and C@t{++}.
79a6e687 216For more information, see @ref{Supported Languages,,Supported Languages}.
c906108c
SS
217For more information, see @ref{C,,C and C++}.
218
cce74817 219@cindex Modula-2
e632838e
AC
220Support for Modula-2 is partial. For information on Modula-2, see
221@ref{Modula-2,,Modula-2}.
c906108c 222
cce74817
JM
223@cindex Pascal
224Debugging Pascal programs which use sets, subranges, file variables, or
225nested functions does not currently work. @value{GDBN} does not support
226entering expressions, printing values, or similar features using Pascal
227syntax.
c906108c 228
c906108c
SS
229@cindex Fortran
230@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 231it may be necessary to refer to some variables with a trailing
cce74817 232underscore.
c906108c 233
b37303ee
AF
234@value{GDBN} can be used to debug programs written in Objective-C,
235using either the Apple/NeXT or the GNU Objective-C runtime.
236
c906108c
SS
237@menu
238* Free Software:: Freely redistributable software
239* Contributors:: Contributors to GDB
240@end menu
241
6d2ebf8b 242@node Free Software
79a6e687 243@unnumberedsec Free Software
c906108c 244
5d161b24 245@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
c906108c
SS
246General Public License
247(GPL). The GPL gives you the freedom to copy or adapt a licensed
248program---but every person getting a copy also gets with it the
249freedom to modify that copy (which means that they must get access to
250the source code), and the freedom to distribute further copies.
251Typical software companies use copyrights to limit your freedoms; the
252Free Software Foundation uses the GPL to preserve these freedoms.
253
254Fundamentally, the General Public License is a license which says that
255you have these freedoms and that you cannot take these freedoms away
256from anyone else.
257
2666264b 258@unnumberedsec Free Software Needs Free Documentation
959acfd1
EZ
259
260The biggest deficiency in the free software community today is not in
261the software---it is the lack of good free documentation that we can
262include with the free software. Many of our most important
263programs do not come with free reference manuals and free introductory
264texts. Documentation is an essential part of any software package;
265when an important free software package does not come with a free
266manual and a free tutorial, that is a major gap. We have many such
267gaps today.
268
269Consider Perl, for instance. The tutorial manuals that people
270normally use are non-free. How did this come about? Because the
271authors of those manuals published them with restrictive terms---no
272copying, no modification, source files not available---which exclude
273them from the free software world.
274
275That wasn't the first time this sort of thing happened, and it was far
276from the last. Many times we have heard a GNU user eagerly describe a
277manual that he is writing, his intended contribution to the community,
278only to learn that he had ruined everything by signing a publication
279contract to make it non-free.
280
281Free documentation, like free software, is a matter of freedom, not
282price. The problem with the non-free manual is not that publishers
283charge a price for printed copies---that in itself is fine. (The Free
284Software Foundation sells printed copies of manuals, too.) The
285problem is the restrictions on the use of the manual. Free manuals
286are available in source code form, and give you permission to copy and
287modify. Non-free manuals do not allow this.
288
289The criteria of freedom for a free manual are roughly the same as for
290free software. Redistribution (including the normal kinds of
291commercial redistribution) must be permitted, so that the manual can
292accompany every copy of the program, both on-line and on paper.
293
294Permission for modification of the technical content is crucial too.
295When people modify the software, adding or changing features, if they
296are conscientious they will change the manual too---so they can
297provide accurate and clear documentation for the modified program. A
298manual that leaves you no choice but to write a new manual to document
299a changed version of the program is not really available to our
300community.
301
302Some kinds of limits on the way modification is handled are
303acceptable. For example, requirements to preserve the original
304author's copyright notice, the distribution terms, or the list of
305authors, are ok. It is also no problem to require modified versions
306to include notice that they were modified. Even entire sections that
307may not be deleted or changed are acceptable, as long as they deal
308with nontechnical topics (like this one). These kinds of restrictions
309are acceptable because they don't obstruct the community's normal use
310of the manual.
311
312However, it must be possible to modify all the @emph{technical}
313content of the manual, and then distribute the result in all the usual
314media, through all the usual channels. Otherwise, the restrictions
315obstruct the use of the manual, it is not free, and we need another
316manual to replace it.
317
318Please spread the word about this issue. Our community continues to
319lose manuals to proprietary publishing. If we spread the word that
320free software needs free reference manuals and free tutorials, perhaps
321the next person who wants to contribute by writing documentation will
322realize, before it is too late, that only free manuals contribute to
323the free software community.
324
325If you are writing documentation, please insist on publishing it under
326the GNU Free Documentation License or another free documentation
327license. Remember that this decision requires your approval---you
328don't have to let the publisher decide. Some commercial publishers
329will use a free license if you insist, but they will not propose the
330option; it is up to you to raise the issue and say firmly that this is
331what you want. If the publisher you are dealing with refuses, please
332try other publishers. If you're not sure whether a proposed license
42584a72 333is free, write to @email{licensing@@gnu.org}.
959acfd1
EZ
334
335You can encourage commercial publishers to sell more free, copylefted
336manuals and tutorials by buying them, and particularly by buying
337copies from the publishers that paid for their writing or for major
338improvements. Meanwhile, try to avoid buying non-free documentation
339at all. Check the distribution terms of a manual before you buy it,
340and insist that whoever seeks your business must respect your freedom.
72c9928d
EZ
341Check the history of the book, and try to reward the publishers that
342have paid or pay the authors to work on it.
959acfd1
EZ
343
344The Free Software Foundation maintains a list of free documentation
345published by other publishers, at
346@url{http://www.fsf.org/doc/other-free-books.html}.
347
6d2ebf8b 348@node Contributors
96a2c332
SS
349@unnumberedsec Contributors to @value{GDBN}
350
351Richard Stallman was the original author of @value{GDBN}, and of many
352other @sc{gnu} programs. Many others have contributed to its
353development. This section attempts to credit major contributors. One
354of the virtues of free software is that everyone is free to contribute
355to it; with regret, we cannot actually acknowledge everyone here. The
356file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
357blow-by-blow account.
358
359Changes much prior to version 2.0 are lost in the mists of time.
360
361@quotation
362@emph{Plea:} Additions to this section are particularly welcome. If you
363or your friends (or enemies, to be evenhanded) have been unfairly
364omitted from this list, we would like to add your names!
365@end quotation
366
367So that they may not regard their many labors as thankless, we
368particularly thank those who shepherded @value{GDBN} through major
369releases:
7ba3cf9c 370Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0);
c906108c
SS
371Jim Blandy (release 4.18);
372Jason Molenda (release 4.17);
373Stan Shebs (release 4.14);
374Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
375Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
376John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
377Jim Kingdon (releases 3.5, 3.4, and 3.3);
378and Randy Smith (releases 3.2, 3.1, and 3.0).
379
380Richard Stallman, assisted at various times by Peter TerMaat, Chris
381Hanson, and Richard Mlynarik, handled releases through 2.8.
382
b37052ae
EZ
383Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
384in @value{GDBN}, with significant additional contributions from Per
385Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
386demangler. Early work on C@t{++} was by Peter TerMaat (who also did
387much general update work leading to release 3.0).
c906108c 388
b37052ae 389@value{GDBN} uses the BFD subroutine library to examine multiple
c906108c
SS
390object-file formats; BFD was a joint project of David V.
391Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
392
393David Johnson wrote the original COFF support; Pace Willison did
394the original support for encapsulated COFF.
395
0179ffac 396Brent Benson of Harris Computer Systems contributed DWARF 2 support.
c906108c
SS
397
398Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
399Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
400support.
401Jean-Daniel Fekete contributed Sun 386i support.
402Chris Hanson improved the HP9000 support.
403Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
404David Johnson contributed Encore Umax support.
405Jyrki Kuoppala contributed Altos 3068 support.
406Jeff Law contributed HP PA and SOM support.
407Keith Packard contributed NS32K support.
408Doug Rabson contributed Acorn Risc Machine support.
409Bob Rusk contributed Harris Nighthawk CX-UX support.
410Chris Smith contributed Convex support (and Fortran debugging).
411Jonathan Stone contributed Pyramid support.
412Michael Tiemann contributed SPARC support.
413Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
414Pace Willison contributed Intel 386 support.
415Jay Vosburgh contributed Symmetry support.
a37295f9 416Marko Mlinar contributed OpenRISC 1000 support.
c906108c 417
1104b9e7 418Andreas Schwab contributed M68K @sc{gnu}/Linux support.
c906108c
SS
419
420Rich Schaefer and Peter Schauer helped with support of SunOS shared
421libraries.
422
423Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
424about several machine instruction sets.
425
426Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
427remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
428contributed remote debugging modules for the i960, VxWorks, A29K UDI,
429and RDI targets, respectively.
430
431Brian Fox is the author of the readline libraries providing
432command-line editing and command history.
433
7a292a7a
SS
434Andrew Beers of SUNY Buffalo wrote the language-switching code, the
435Modula-2 support, and contributed the Languages chapter of this manual.
c906108c 436
5d161b24 437Fred Fish wrote most of the support for Unix System Vr4.
b37052ae 438He also enhanced the command-completion support to cover C@t{++} overloaded
c906108c 439symbols.
c906108c 440
f24c5e49
KI
441Hitachi America (now Renesas America), Ltd. sponsored the support for
442H8/300, H8/500, and Super-H processors.
c906108c
SS
443
444NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
445
f24c5e49
KI
446Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D
447processors.
c906108c
SS
448
449Toshiba sponsored the support for the TX39 Mips processor.
450
451Matsushita sponsored the support for the MN10200 and MN10300 processors.
452
96a2c332 453Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
454
455Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
456watchpoints.
457
458Michael Snyder added support for tracepoints.
459
460Stu Grossman wrote gdbserver.
461
462Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 463nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
464
465The following people at the Hewlett-Packard Company contributed
466support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
b37052ae 467(narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
d0d5df6f
AC
468compiler, and the Text User Interface (nee Terminal User Interface):
469Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann,
470Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase
471provided HP-specific information in this manual.
c906108c 472
b37052ae
EZ
473DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
474Robert Hoehne made significant contributions to the DJGPP port.
475
96a2c332
SS
476Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
477development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
478fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
479Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
480Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
481Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
482Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
483addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
484JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
485Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
486Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
487Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
488Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
489Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
490Zuhn have made contributions both large and small.
c906108c 491
ffed4509
AC
492Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for
493Cygnus Solutions, implemented the original @sc{gdb/mi} interface.
494
e2e0bcd1
JB
495Jim Blandy added support for preprocessor macros, while working for Red
496Hat.
c906108c 497
a9967aef
AC
498Andrew Cagney designed @value{GDBN}'s architecture vector. Many
499people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick
500Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei
501Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason
502Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped
503with the migration of old architectures to this new framework.
504
c5e30d01
AC
505Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s
506unwinder framework, this consisting of a fresh new design featuring
507frame IDs, independent frame sniffers, and the sentinel frame. Mark
508Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the
509libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and
db2e3e2e 510trad unwinders. The architecture-specific changes, each involving a
c5e30d01
AC
511complete rewrite of the architecture's frame code, were carried out by
512Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane
513Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel
514Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei
515Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich
516Weigand.
517
ca3bf3bd
DJ
518Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from
519Tensilica, Inc.@: contributed support for Xtensa processors. Others
520who have worked on the Xtensa port of @value{GDBN} in the past include
521Steve Tjiang, John Newlin, and Scott Foehner.
522
6d2ebf8b 523@node Sample Session
c906108c
SS
524@chapter A Sample @value{GDBN} Session
525
526You can use this manual at your leisure to read all about @value{GDBN}.
527However, a handful of commands are enough to get started using the
528debugger. This chapter illustrates those commands.
529
530@iftex
531In this sample session, we emphasize user input like this: @b{input},
532to make it easier to pick out from the surrounding output.
533@end iftex
534
535@c FIXME: this example may not be appropriate for some configs, where
536@c FIXME...primary interest is in remote use.
537
538One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
539processor) exhibits the following bug: sometimes, when we change its
540quote strings from the default, the commands used to capture one macro
541definition within another stop working. In the following short @code{m4}
542session, we define a macro @code{foo} which expands to @code{0000}; we
543then use the @code{m4} built-in @code{defn} to define @code{bar} as the
544same thing. However, when we change the open quote string to
545@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
546procedure fails to define a new synonym @code{baz}:
547
548@smallexample
549$ @b{cd gnu/m4}
550$ @b{./m4}
551@b{define(foo,0000)}
552
553@b{foo}
5540000
555@b{define(bar,defn(`foo'))}
556
557@b{bar}
5580000
559@b{changequote(<QUOTE>,<UNQUOTE>)}
560
561@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
562@b{baz}
c8aa23ab 563@b{Ctrl-d}
c906108c
SS
564m4: End of input: 0: fatal error: EOF in string
565@end smallexample
566
567@noindent
568Let us use @value{GDBN} to try to see what is going on.
569
c906108c
SS
570@smallexample
571$ @b{@value{GDBP} m4}
572@c FIXME: this falsifies the exact text played out, to permit smallbook
573@c FIXME... format to come out better.
574@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 575 of it under certain conditions; type "show copying" to see
c906108c 576 the conditions.
5d161b24 577There is absolutely no warranty for @value{GDBN}; type "show warranty"
c906108c
SS
578 for details.
579
580@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
581(@value{GDBP})
582@end smallexample
c906108c
SS
583
584@noindent
585@value{GDBN} reads only enough symbol data to know where to find the
586rest when needed; as a result, the first prompt comes up very quickly.
587We now tell @value{GDBN} to use a narrower display width than usual, so
588that examples fit in this manual.
589
590@smallexample
591(@value{GDBP}) @b{set width 70}
592@end smallexample
593
594@noindent
595We need to see how the @code{m4} built-in @code{changequote} works.
596Having looked at the source, we know the relevant subroutine is
597@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
598@code{break} command.
599
600@smallexample
601(@value{GDBP}) @b{break m4_changequote}
602Breakpoint 1 at 0x62f4: file builtin.c, line 879.
603@end smallexample
604
605@noindent
606Using the @code{run} command, we start @code{m4} running under @value{GDBN}
607control; as long as control does not reach the @code{m4_changequote}
608subroutine, the program runs as usual:
609
610@smallexample
611(@value{GDBP}) @b{run}
612Starting program: /work/Editorial/gdb/gnu/m4/m4
613@b{define(foo,0000)}
614
615@b{foo}
6160000
617@end smallexample
618
619@noindent
620To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
621suspends execution of @code{m4}, displaying information about the
622context where it stops.
623
624@smallexample
625@b{changequote(<QUOTE>,<UNQUOTE>)}
626
5d161b24 627Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
628 at builtin.c:879
629879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
630@end smallexample
631
632@noindent
633Now we use the command @code{n} (@code{next}) to advance execution to
634the next line of the current function.
635
636@smallexample
637(@value{GDBP}) @b{n}
638882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
639 : nil,
640@end smallexample
641
642@noindent
643@code{set_quotes} looks like a promising subroutine. We can go into it
644by using the command @code{s} (@code{step}) instead of @code{next}.
645@code{step} goes to the next line to be executed in @emph{any}
646subroutine, so it steps into @code{set_quotes}.
647
648@smallexample
649(@value{GDBP}) @b{s}
650set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
651 at input.c:530
652530 if (lquote != def_lquote)
653@end smallexample
654
655@noindent
656The display that shows the subroutine where @code{m4} is now
657suspended (and its arguments) is called a stack frame display. It
658shows a summary of the stack. We can use the @code{backtrace}
659command (which can also be spelled @code{bt}), to see where we are
660in the stack as a whole: the @code{backtrace} command displays a
661stack frame for each active subroutine.
662
663@smallexample
664(@value{GDBP}) @b{bt}
665#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
666 at input.c:530
5d161b24 667#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
668 at builtin.c:882
669#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
670#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
671 at macro.c:71
672#4 0x79dc in expand_input () at macro.c:40
673#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
674@end smallexample
675
676@noindent
677We step through a few more lines to see what happens. The first two
678times, we can use @samp{s}; the next two times we use @code{n} to avoid
679falling into the @code{xstrdup} subroutine.
680
681@smallexample
682(@value{GDBP}) @b{s}
6830x3b5c 532 if (rquote != def_rquote)
684(@value{GDBP}) @b{s}
6850x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
686def_lquote : xstrdup(lq);
687(@value{GDBP}) @b{n}
688536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
689 : xstrdup(rq);
690(@value{GDBP}) @b{n}
691538 len_lquote = strlen(rquote);
692@end smallexample
693
694@noindent
695The last line displayed looks a little odd; we can examine the variables
696@code{lquote} and @code{rquote} to see if they are in fact the new left
697and right quotes we specified. We use the command @code{p}
698(@code{print}) to see their values.
699
700@smallexample
701(@value{GDBP}) @b{p lquote}
702$1 = 0x35d40 "<QUOTE>"
703(@value{GDBP}) @b{p rquote}
704$2 = 0x35d50 "<UNQUOTE>"
705@end smallexample
706
707@noindent
708@code{lquote} and @code{rquote} are indeed the new left and right quotes.
709To look at some context, we can display ten lines of source
710surrounding the current line with the @code{l} (@code{list}) command.
711
712@smallexample
713(@value{GDBP}) @b{l}
714533 xfree(rquote);
715534
716535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
717 : xstrdup (lq);
718536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
719 : xstrdup (rq);
720537
721538 len_lquote = strlen(rquote);
722539 len_rquote = strlen(lquote);
723540 @}
724541
725542 void
726@end smallexample
727
728@noindent
729Let us step past the two lines that set @code{len_lquote} and
730@code{len_rquote}, and then examine the values of those variables.
731
732@smallexample
733(@value{GDBP}) @b{n}
734539 len_rquote = strlen(lquote);
735(@value{GDBP}) @b{n}
736540 @}
737(@value{GDBP}) @b{p len_lquote}
738$3 = 9
739(@value{GDBP}) @b{p len_rquote}
740$4 = 7
741@end smallexample
742
743@noindent
744That certainly looks wrong, assuming @code{len_lquote} and
745@code{len_rquote} are meant to be the lengths of @code{lquote} and
746@code{rquote} respectively. We can set them to better values using
747the @code{p} command, since it can print the value of
748any expression---and that expression can include subroutine calls and
749assignments.
750
751@smallexample
752(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
753$5 = 7
754(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
755$6 = 9
756@end smallexample
757
758@noindent
759Is that enough to fix the problem of using the new quotes with the
760@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
761executing with the @code{c} (@code{continue}) command, and then try the
762example that caused trouble initially:
763
764@smallexample
765(@value{GDBP}) @b{c}
766Continuing.
767
768@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
769
770baz
7710000
772@end smallexample
773
774@noindent
775Success! The new quotes now work just as well as the default ones. The
776problem seems to have been just the two typos defining the wrong
777lengths. We allow @code{m4} exit by giving it an EOF as input:
778
779@smallexample
c8aa23ab 780@b{Ctrl-d}
c906108c
SS
781Program exited normally.
782@end smallexample
783
784@noindent
785The message @samp{Program exited normally.} is from @value{GDBN}; it
786indicates @code{m4} has finished executing. We can end our @value{GDBN}
787session with the @value{GDBN} @code{quit} command.
788
789@smallexample
790(@value{GDBP}) @b{quit}
791@end smallexample
c906108c 792
6d2ebf8b 793@node Invocation
c906108c
SS
794@chapter Getting In and Out of @value{GDBN}
795
796This chapter discusses how to start @value{GDBN}, and how to get out of it.
5d161b24 797The essentials are:
c906108c 798@itemize @bullet
5d161b24 799@item
53a5351d 800type @samp{@value{GDBP}} to start @value{GDBN}.
5d161b24 801@item
c8aa23ab 802type @kbd{quit} or @kbd{Ctrl-d} to exit.
c906108c
SS
803@end itemize
804
805@menu
806* Invoking GDB:: How to start @value{GDBN}
807* Quitting GDB:: How to quit @value{GDBN}
808* Shell Commands:: How to use shell commands inside @value{GDBN}
79a6e687 809* Logging Output:: How to log @value{GDBN}'s output to a file
c906108c
SS
810@end menu
811
6d2ebf8b 812@node Invoking GDB
c906108c
SS
813@section Invoking @value{GDBN}
814
c906108c
SS
815Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
816@value{GDBN} reads commands from the terminal until you tell it to exit.
817
818You can also run @code{@value{GDBP}} with a variety of arguments and options,
819to specify more of your debugging environment at the outset.
820
c906108c
SS
821The command-line options described here are designed
822to cover a variety of situations; in some environments, some of these
5d161b24 823options may effectively be unavailable.
c906108c
SS
824
825The most usual way to start @value{GDBN} is with one argument,
826specifying an executable program:
827
474c8240 828@smallexample
c906108c 829@value{GDBP} @var{program}
474c8240 830@end smallexample
c906108c 831
c906108c
SS
832@noindent
833You can also start with both an executable program and a core file
834specified:
835
474c8240 836@smallexample
c906108c 837@value{GDBP} @var{program} @var{core}
474c8240 838@end smallexample
c906108c
SS
839
840You can, instead, specify a process ID as a second argument, if you want
841to debug a running process:
842
474c8240 843@smallexample
c906108c 844@value{GDBP} @var{program} 1234
474c8240 845@end smallexample
c906108c
SS
846
847@noindent
848would attach @value{GDBN} to process @code{1234} (unless you also have a file
849named @file{1234}; @value{GDBN} does check for a core file first).
850
c906108c 851Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
852complete operating system; when you use @value{GDBN} as a remote
853debugger attached to a bare board, there may not be any notion of
854``process'', and there is often no way to get a core dump. @value{GDBN}
855will warn you if it is unable to attach or to read core dumps.
c906108c 856
aa26fa3a
TT
857You can optionally have @code{@value{GDBP}} pass any arguments after the
858executable file to the inferior using @code{--args}. This option stops
859option processing.
474c8240 860@smallexample
3f94c067 861@value{GDBP} --args gcc -O2 -c foo.c
474c8240 862@end smallexample
aa26fa3a
TT
863This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
864@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
865
96a2c332 866You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
867@value{GDBN}'s non-warranty, by specifying @code{-silent}:
868
869@smallexample
870@value{GDBP} -silent
871@end smallexample
872
873@noindent
874You can further control how @value{GDBN} starts up by using command-line
875options. @value{GDBN} itself can remind you of the options available.
876
877@noindent
878Type
879
474c8240 880@smallexample
c906108c 881@value{GDBP} -help
474c8240 882@end smallexample
c906108c
SS
883
884@noindent
885to display all available options and briefly describe their use
886(@samp{@value{GDBP} -h} is a shorter equivalent).
887
888All options and command line arguments you give are processed
889in sequential order. The order makes a difference when the
890@samp{-x} option is used.
891
892
893@menu
c906108c
SS
894* File Options:: Choosing files
895* Mode Options:: Choosing modes
6fc08d32 896* Startup:: What @value{GDBN} does during startup
c906108c
SS
897@end menu
898
6d2ebf8b 899@node File Options
79a6e687 900@subsection Choosing Files
c906108c 901
2df3850c 902When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
903specifying an executable file and core file (or process ID). This is
904the same as if the arguments were specified by the @samp{-se} and
d52fb0e9 905@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the
19837790
MS
906first argument that does not have an associated option flag as
907equivalent to the @samp{-se} option followed by that argument; and the
908second argument that does not have an associated option flag, if any, as
909equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
910If the second argument begins with a decimal digit, @value{GDBN} will
911first attempt to attach to it as a process, and if that fails, attempt
912to open it as a corefile. If you have a corefile whose name begins with
b383017d 913a digit, you can prevent @value{GDBN} from treating it as a pid by
c1468174 914prefixing it with @file{./}, e.g.@: @file{./12345}.
7a292a7a
SS
915
916If @value{GDBN} has not been configured to included core file support,
917such as for most embedded targets, then it will complain about a second
918argument and ignore it.
c906108c
SS
919
920Many options have both long and short forms; both are shown in the
921following list. @value{GDBN} also recognizes the long forms if you truncate
922them, so long as enough of the option is present to be unambiguous.
923(If you prefer, you can flag option arguments with @samp{--} rather
924than @samp{-}, though we illustrate the more usual convention.)
925
d700128c
EZ
926@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
927@c way, both those who look for -foo and --foo in the index, will find
928@c it.
929
c906108c
SS
930@table @code
931@item -symbols @var{file}
932@itemx -s @var{file}
d700128c
EZ
933@cindex @code{--symbols}
934@cindex @code{-s}
c906108c
SS
935Read symbol table from file @var{file}.
936
937@item -exec @var{file}
938@itemx -e @var{file}
d700128c
EZ
939@cindex @code{--exec}
940@cindex @code{-e}
7a292a7a
SS
941Use file @var{file} as the executable file to execute when appropriate,
942and for examining pure data in conjunction with a core dump.
c906108c
SS
943
944@item -se @var{file}
d700128c 945@cindex @code{--se}
c906108c
SS
946Read symbol table from file @var{file} and use it as the executable
947file.
948
c906108c
SS
949@item -core @var{file}
950@itemx -c @var{file}
d700128c
EZ
951@cindex @code{--core}
952@cindex @code{-c}
b383017d 953Use file @var{file} as a core dump to examine.
c906108c 954
19837790
MS
955@item -pid @var{number}
956@itemx -p @var{number}
957@cindex @code{--pid}
958@cindex @code{-p}
959Connect to process ID @var{number}, as with the @code{attach} command.
c906108c
SS
960
961@item -command @var{file}
962@itemx -x @var{file}
d700128c
EZ
963@cindex @code{--command}
964@cindex @code{-x}
c906108c
SS
965Execute @value{GDBN} commands from file @var{file}. @xref{Command
966Files,, Command files}.
967
8a5a3c82
AS
968@item -eval-command @var{command}
969@itemx -ex @var{command}
970@cindex @code{--eval-command}
971@cindex @code{-ex}
972Execute a single @value{GDBN} command.
973
974This option may be used multiple times to call multiple commands. It may
975also be interleaved with @samp{-command} as required.
976
977@smallexample
978@value{GDBP} -ex 'target sim' -ex 'load' \
979 -x setbreakpoints -ex 'run' a.out
980@end smallexample
981
c906108c
SS
982@item -directory @var{directory}
983@itemx -d @var{directory}
d700128c
EZ
984@cindex @code{--directory}
985@cindex @code{-d}
4b505b12 986Add @var{directory} to the path to search for source and script files.
c906108c 987
c906108c
SS
988@item -r
989@itemx -readnow
d700128c
EZ
990@cindex @code{--readnow}
991@cindex @code{-r}
c906108c
SS
992Read each symbol file's entire symbol table immediately, rather than
993the default, which is to read it incrementally as it is needed.
994This makes startup slower, but makes future operations faster.
53a5351d 995
c906108c
SS
996@end table
997
6d2ebf8b 998@node Mode Options
79a6e687 999@subsection Choosing Modes
c906108c
SS
1000
1001You can run @value{GDBN} in various alternative modes---for example, in
1002batch mode or quiet mode.
1003
1004@table @code
1005@item -nx
1006@itemx -n
d700128c
EZ
1007@cindex @code{--nx}
1008@cindex @code{-n}
96565e91 1009Do not execute commands found in any initialization files. Normally,
2df3850c
JM
1010@value{GDBN} executes the commands in these files after all the command
1011options and arguments have been processed. @xref{Command Files,,Command
79a6e687 1012Files}.
c906108c
SS
1013
1014@item -quiet
d700128c 1015@itemx -silent
c906108c 1016@itemx -q
d700128c
EZ
1017@cindex @code{--quiet}
1018@cindex @code{--silent}
1019@cindex @code{-q}
c906108c
SS
1020``Quiet''. Do not print the introductory and copyright messages. These
1021messages are also suppressed in batch mode.
1022
1023@item -batch
d700128c 1024@cindex @code{--batch}
c906108c
SS
1025Run in batch mode. Exit with status @code{0} after processing all the
1026command files specified with @samp{-x} (and all commands from
1027initialization files, if not inhibited with @samp{-n}). Exit with
1028nonzero status if an error occurs in executing the @value{GDBN} commands
1029in the command files.
1030
2df3850c
JM
1031Batch mode may be useful for running @value{GDBN} as a filter, for
1032example to download and run a program on another computer; in order to
1033make this more useful, the message
c906108c 1034
474c8240 1035@smallexample
c906108c 1036Program exited normally.
474c8240 1037@end smallexample
c906108c
SS
1038
1039@noindent
2df3850c
JM
1040(which is ordinarily issued whenever a program running under
1041@value{GDBN} control terminates) is not issued when running in batch
1042mode.
1043
1a088d06
AS
1044@item -batch-silent
1045@cindex @code{--batch-silent}
1046Run in batch mode exactly like @samp{-batch}, but totally silently. All
1047@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
1048unaffected). This is much quieter than @samp{-silent} and would be useless
1049for an interactive session.
1050
1051This is particularly useful when using targets that give @samp{Loading section}
1052messages, for example.
1053
1054Note that targets that give their output via @value{GDBN}, as opposed to
1055writing directly to @code{stdout}, will also be made silent.
1056
4b0ad762
AS
1057@item -return-child-result
1058@cindex @code{--return-child-result}
1059The return code from @value{GDBN} will be the return code from the child
1060process (the process being debugged), with the following exceptions:
1061
1062@itemize @bullet
1063@item
1064@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an
1065internal error. In this case the exit code is the same as it would have been
1066without @samp{-return-child-result}.
1067@item
1068The user quits with an explicit value. E.g., @samp{quit 1}.
1069@item
1070The child process never runs, or is not allowed to terminate, in which case
1071the exit code will be -1.
1072@end itemize
1073
1074This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
1075when @value{GDBN} is being used as a remote program loader or simulator
1076interface.
1077
2df3850c
JM
1078@item -nowindows
1079@itemx -nw
d700128c
EZ
1080@cindex @code{--nowindows}
1081@cindex @code{-nw}
2df3850c 1082``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 1083(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
1084interface. If no GUI is available, this option has no effect.
1085
1086@item -windows
1087@itemx -w
d700128c
EZ
1088@cindex @code{--windows}
1089@cindex @code{-w}
2df3850c
JM
1090If @value{GDBN} includes a GUI, then this option requires it to be
1091used if possible.
c906108c
SS
1092
1093@item -cd @var{directory}
d700128c 1094@cindex @code{--cd}
c906108c
SS
1095Run @value{GDBN} using @var{directory} as its working directory,
1096instead of the current directory.
1097
c906108c
SS
1098@item -fullname
1099@itemx -f
d700128c
EZ
1100@cindex @code{--fullname}
1101@cindex @code{-f}
7a292a7a
SS
1102@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1103subprocess. It tells @value{GDBN} to output the full file name and line
1104number in a standard, recognizable fashion each time a stack frame is
1105displayed (which includes each time your program stops). This
1106recognizable format looks like two @samp{\032} characters, followed by
1107the file name, line number and character position separated by colons,
1108and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1109@samp{\032} characters as a signal to display the source code for the
1110frame.
c906108c 1111
d700128c
EZ
1112@item -epoch
1113@cindex @code{--epoch}
1114The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1115@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1116routines so as to allow Epoch to display values of expressions in a
1117separate window.
1118
1119@item -annotate @var{level}
1120@cindex @code{--annotate}
1121This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1122effect is identical to using @samp{set annotate @var{level}}
086432e2
AC
1123(@pxref{Annotations}). The annotation @var{level} controls how much
1124information @value{GDBN} prints together with its prompt, values of
1125expressions, source lines, and other types of output. Level 0 is the
1126normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1127@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1128that control @value{GDBN}, and level 2 has been deprecated.
1129
265eeb58 1130The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2 1131(@pxref{GDB/MI}).
d700128c 1132
aa26fa3a
TT
1133@item --args
1134@cindex @code{--args}
1135Change interpretation of command line so that arguments following the
1136executable file are passed as command line arguments to the inferior.
1137This option stops option processing.
1138
2df3850c
JM
1139@item -baud @var{bps}
1140@itemx -b @var{bps}
d700128c
EZ
1141@cindex @code{--baud}
1142@cindex @code{-b}
c906108c
SS
1143Set the line speed (baud rate or bits per second) of any serial
1144interface used by @value{GDBN} for remote debugging.
c906108c 1145
f47b1503
AS
1146@item -l @var{timeout}
1147@cindex @code{-l}
1148Set the timeout (in seconds) of any communication used by @value{GDBN}
1149for remote debugging.
1150
c906108c 1151@item -tty @var{device}
d700128c
EZ
1152@itemx -t @var{device}
1153@cindex @code{--tty}
1154@cindex @code{-t}
c906108c
SS
1155Run using @var{device} for your program's standard input and output.
1156@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1157
53a5351d 1158@c resolve the situation of these eventually
c4555f82
SC
1159@item -tui
1160@cindex @code{--tui}
d0d5df6f
AC
1161Activate the @dfn{Text User Interface} when starting. The Text User
1162Interface manages several text windows on the terminal, showing
1163source, assembly, registers and @value{GDBN} command outputs
1164(@pxref{TUI, ,@value{GDBN} Text User Interface}). Alternatively, the
1165Text User Interface can be enabled by invoking the program
46ba6afa 1166@samp{@value{GDBTUI}}. Do not use this option if you run @value{GDBN} from
d0d5df6f 1167Emacs (@pxref{Emacs, ,Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1168
1169@c @item -xdb
d700128c 1170@c @cindex @code{--xdb}
53a5351d
JM
1171@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1172@c For information, see the file @file{xdb_trans.html}, which is usually
1173@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1174@c systems.
1175
d700128c
EZ
1176@item -interpreter @var{interp}
1177@cindex @code{--interpreter}
1178Use the interpreter @var{interp} for interface with the controlling
1179program or device. This option is meant to be set by programs which
94bbb2c0 1180communicate with @value{GDBN} using it as a back end.
21c294e6 1181@xref{Interpreters, , Command Interpreters}.
94bbb2c0 1182
da0f9dcd 1183@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
2fcf52f0 1184@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
6b5e8c01 1185The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The
6c74ac8b
AC
1186previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1187selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1188@sc{gdb/mi} interfaces are no longer supported.
d700128c
EZ
1189
1190@item -write
1191@cindex @code{--write}
1192Open the executable and core files for both reading and writing. This
1193is equivalent to the @samp{set write on} command inside @value{GDBN}
1194(@pxref{Patching}).
1195
1196@item -statistics
1197@cindex @code{--statistics}
1198This option causes @value{GDBN} to print statistics about time and
1199memory usage after it completes each command and returns to the prompt.
1200
1201@item -version
1202@cindex @code{--version}
1203This option causes @value{GDBN} to print its version number and
1204no-warranty blurb, and exit.
1205
c906108c
SS
1206@end table
1207
6fc08d32 1208@node Startup
79a6e687 1209@subsection What @value{GDBN} Does During Startup
6fc08d32
EZ
1210@cindex @value{GDBN} startup
1211
1212Here's the description of what @value{GDBN} does during session startup:
1213
1214@enumerate
1215@item
1216Sets up the command interpreter as specified by the command line
1217(@pxref{Mode Options, interpreter}).
1218
1219@item
1220@cindex init file
1221Reads the @dfn{init file} (if any) in your home directory@footnote{On
1222DOS/Windows systems, the home directory is the one pointed to by the
1223@code{HOME} environment variable.} and executes all the commands in
1224that file.
1225
1226@item
1227Processes command line options and operands.
1228
1229@item
1230Reads and executes the commands from init file (if any) in the current
119b882a
EZ
1231working directory. This is only done if the current directory is
1232different from your home directory. Thus, you can have more than one
1233init file, one generic in your home directory, and another, specific
1234to the program you are debugging, in the directory where you invoke
6fc08d32
EZ
1235@value{GDBN}.
1236
1237@item
1238Reads command files specified by the @samp{-x} option. @xref{Command
1239Files}, for more details about @value{GDBN} command files.
1240
1241@item
1242Reads the command history recorded in the @dfn{history file}.
d620b259 1243@xref{Command History}, for more details about the command history and the
6fc08d32
EZ
1244files where @value{GDBN} records it.
1245@end enumerate
1246
1247Init files use the same syntax as @dfn{command files} (@pxref{Command
1248Files}) and are processed by @value{GDBN} in the same way. The init
1249file in your home directory can set options (such as @samp{set
1250complaints}) that affect subsequent processing of command line options
1251and operands. Init files are not executed if you use the @samp{-nx}
79a6e687 1252option (@pxref{Mode Options, ,Choosing Modes}).
6fc08d32
EZ
1253
1254@cindex init file name
1255@cindex @file{.gdbinit}
119b882a 1256@cindex @file{gdb.ini}
8807d78b 1257The @value{GDBN} init files are normally called @file{.gdbinit}.
119b882a
EZ
1258The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to
1259the limitations of file names imposed by DOS filesystems. The Windows
1260ports of @value{GDBN} use the standard name, but if they find a
1261@file{gdb.ini} file, they warn you about that and suggest to rename
1262the file to the standard name.
1263
6fc08d32 1264
6d2ebf8b 1265@node Quitting GDB
c906108c
SS
1266@section Quitting @value{GDBN}
1267@cindex exiting @value{GDBN}
1268@cindex leaving @value{GDBN}
1269
1270@table @code
1271@kindex quit @r{[}@var{expression}@r{]}
41afff9a 1272@kindex q @r{(@code{quit})}
96a2c332
SS
1273@item quit @r{[}@var{expression}@r{]}
1274@itemx q
1275To exit @value{GDBN}, use the @code{quit} command (abbreviated
c8aa23ab 1276@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you
96a2c332
SS
1277do not supply @var{expression}, @value{GDBN} will terminate normally;
1278otherwise it will terminate using the result of @var{expression} as the
1279error code.
c906108c
SS
1280@end table
1281
1282@cindex interrupt
c8aa23ab 1283An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather
c906108c
SS
1284terminates the action of any @value{GDBN} command that is in progress and
1285returns to @value{GDBN} command level. It is safe to type the interrupt
1286character at any time because @value{GDBN} does not allow it to take effect
1287until a time when it is safe.
1288
c906108c
SS
1289If you have been using @value{GDBN} to control an attached process or
1290device, you can release it with the @code{detach} command
79a6e687 1291(@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 1292
6d2ebf8b 1293@node Shell Commands
79a6e687 1294@section Shell Commands
c906108c
SS
1295
1296If you need to execute occasional shell commands during your
1297debugging session, there is no need to leave or suspend @value{GDBN}; you can
1298just use the @code{shell} command.
1299
1300@table @code
1301@kindex shell
1302@cindex shell escape
1303@item shell @var{command string}
1304Invoke a standard shell to execute @var{command string}.
c906108c 1305If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1306shell to run. Otherwise @value{GDBN} uses the default shell
1307(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1308@end table
1309
1310The utility @code{make} is often needed in development environments.
1311You do not have to use the @code{shell} command for this purpose in
1312@value{GDBN}:
1313
1314@table @code
1315@kindex make
1316@cindex calling make
1317@item make @var{make-args}
1318Execute the @code{make} program with the specified
1319arguments. This is equivalent to @samp{shell make @var{make-args}}.
1320@end table
1321
79a6e687
BW
1322@node Logging Output
1323@section Logging Output
0fac0b41 1324@cindex logging @value{GDBN} output
9c16f35a 1325@cindex save @value{GDBN} output to a file
0fac0b41
DJ
1326
1327You may want to save the output of @value{GDBN} commands to a file.
1328There are several commands to control @value{GDBN}'s logging.
1329
1330@table @code
1331@kindex set logging
1332@item set logging on
1333Enable logging.
1334@item set logging off
1335Disable logging.
9c16f35a 1336@cindex logging file name
0fac0b41
DJ
1337@item set logging file @var{file}
1338Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1339@item set logging overwrite [on|off]
1340By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1341you want @code{set logging on} to overwrite the logfile instead.
1342@item set logging redirect [on|off]
1343By default, @value{GDBN} output will go to both the terminal and the logfile.
1344Set @code{redirect} if you want output to go only to the log file.
1345@kindex show logging
1346@item show logging
1347Show the current values of the logging settings.
1348@end table
1349
6d2ebf8b 1350@node Commands
c906108c
SS
1351@chapter @value{GDBN} Commands
1352
1353You can abbreviate a @value{GDBN} command to the first few letters of the command
1354name, if that abbreviation is unambiguous; and you can repeat certain
1355@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1356key to get @value{GDBN} to fill out the rest of a word in a command (or to
1357show you the alternatives available, if there is more than one possibility).
1358
1359@menu
1360* Command Syntax:: How to give commands to @value{GDBN}
1361* Completion:: Command completion
1362* Help:: How to ask @value{GDBN} for help
1363@end menu
1364
6d2ebf8b 1365@node Command Syntax
79a6e687 1366@section Command Syntax
c906108c
SS
1367
1368A @value{GDBN} command is a single line of input. There is no limit on
1369how long it can be. It starts with a command name, which is followed by
1370arguments whose meaning depends on the command name. For example, the
1371command @code{step} accepts an argument which is the number of times to
1372step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1373with no arguments. Some commands do not allow any arguments.
c906108c
SS
1374
1375@cindex abbreviation
1376@value{GDBN} command names may always be truncated if that abbreviation is
1377unambiguous. Other possible command abbreviations are listed in the
1378documentation for individual commands. In some cases, even ambiguous
1379abbreviations are allowed; for example, @code{s} is specially defined as
1380equivalent to @code{step} even though there are other commands whose
1381names start with @code{s}. You can test abbreviations by using them as
1382arguments to the @code{help} command.
1383
1384@cindex repeating commands
41afff9a 1385@kindex RET @r{(repeat last command)}
c906108c 1386A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1387repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1388will not repeat this way; these are commands whose unintentional
1389repetition might cause trouble and which you are unlikely to want to
c45da7e6
EZ
1390repeat. User-defined commands can disable this feature; see
1391@ref{Define, dont-repeat}.
c906108c
SS
1392
1393The @code{list} and @code{x} commands, when you repeat them with
1394@key{RET}, construct new arguments rather than repeating
1395exactly as typed. This permits easy scanning of source or memory.
1396
1397@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1398output, in a way similar to the common utility @code{more}
79a6e687 1399(@pxref{Screen Size,,Screen Size}). Since it is easy to press one
c906108c
SS
1400@key{RET} too many in this situation, @value{GDBN} disables command
1401repetition after any command that generates this sort of display.
1402
41afff9a 1403@kindex # @r{(a comment)}
c906108c
SS
1404@cindex comment
1405Any text from a @kbd{#} to the end of the line is a comment; it does
1406nothing. This is useful mainly in command files (@pxref{Command
79a6e687 1407Files,,Command Files}).
c906108c 1408
88118b3a 1409@cindex repeating command sequences
c8aa23ab
EZ
1410@kindex Ctrl-o @r{(operate-and-get-next)}
1411The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of
7f9087cb 1412commands. This command accepts the current line, like @key{RET}, and
88118b3a
TT
1413then fetches the next line relative to the current line from the history
1414for editing.
1415
6d2ebf8b 1416@node Completion
79a6e687 1417@section Command Completion
c906108c
SS
1418
1419@cindex completion
1420@cindex word completion
1421@value{GDBN} can fill in the rest of a word in a command for you, if there is
1422only one possibility; it can also show you what the valid possibilities
1423are for the next word in a command, at any time. This works for @value{GDBN}
1424commands, @value{GDBN} subcommands, and the names of symbols in your program.
1425
1426Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1427of a word. If there is only one possibility, @value{GDBN} fills in the
1428word, and waits for you to finish the command (or press @key{RET} to
1429enter it). For example, if you type
1430
1431@c FIXME "@key" does not distinguish its argument sufficiently to permit
1432@c complete accuracy in these examples; space introduced for clarity.
1433@c If texinfo enhancements make it unnecessary, it would be nice to
1434@c replace " @key" by "@key" in the following...
474c8240 1435@smallexample
c906108c 1436(@value{GDBP}) info bre @key{TAB}
474c8240 1437@end smallexample
c906108c
SS
1438
1439@noindent
1440@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1441the only @code{info} subcommand beginning with @samp{bre}:
1442
474c8240 1443@smallexample
c906108c 1444(@value{GDBP}) info breakpoints
474c8240 1445@end smallexample
c906108c
SS
1446
1447@noindent
1448You can either press @key{RET} at this point, to run the @code{info
1449breakpoints} command, or backspace and enter something else, if
1450@samp{breakpoints} does not look like the command you expected. (If you
1451were sure you wanted @code{info breakpoints} in the first place, you
1452might as well just type @key{RET} immediately after @samp{info bre},
1453to exploit command abbreviations rather than command completion).
1454
1455If there is more than one possibility for the next word when you press
1456@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1457characters and try again, or just press @key{TAB} a second time;
1458@value{GDBN} displays all the possible completions for that word. For
1459example, you might want to set a breakpoint on a subroutine whose name
1460begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1461just sounds the bell. Typing @key{TAB} again displays all the
1462function names in your program that begin with those characters, for
1463example:
1464
474c8240 1465@smallexample
c906108c
SS
1466(@value{GDBP}) b make_ @key{TAB}
1467@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1468make_a_section_from_file make_environ
1469make_abs_section make_function_type
1470make_blockvector make_pointer_type
1471make_cleanup make_reference_type
c906108c
SS
1472make_command make_symbol_completion_list
1473(@value{GDBP}) b make_
474c8240 1474@end smallexample
c906108c
SS
1475
1476@noindent
1477After displaying the available possibilities, @value{GDBN} copies your
1478partial input (@samp{b make_} in the example) so you can finish the
1479command.
1480
1481If you just want to see the list of alternatives in the first place, you
b37052ae 1482can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1483means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1484key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1485one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1486
1487@cindex quotes in commands
1488@cindex completion of quoted strings
1489Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1490parentheses or other characters that @value{GDBN} normally excludes from
1491its notion of a word. To permit word completion to work in this
1492situation, you may enclose words in @code{'} (single quote marks) in
1493@value{GDBN} commands.
c906108c 1494
c906108c 1495The most likely situation where you might need this is in typing the
b37052ae
EZ
1496name of a C@t{++} function. This is because C@t{++} allows function
1497overloading (multiple definitions of the same function, distinguished
1498by argument type). For example, when you want to set a breakpoint you
1499may need to distinguish whether you mean the version of @code{name}
1500that takes an @code{int} parameter, @code{name(int)}, or the version
1501that takes a @code{float} parameter, @code{name(float)}. To use the
1502word-completion facilities in this situation, type a single quote
1503@code{'} at the beginning of the function name. This alerts
1504@value{GDBN} that it may need to consider more information than usual
1505when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c 1506
474c8240 1507@smallexample
96a2c332 1508(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1509bubble(double,double) bubble(int,int)
1510(@value{GDBP}) b 'bubble(
474c8240 1511@end smallexample
c906108c
SS
1512
1513In some cases, @value{GDBN} can tell that completing a name requires using
1514quotes. When this happens, @value{GDBN} inserts the quote for you (while
1515completing as much as it can) if you do not type the quote in the first
1516place:
1517
474c8240 1518@smallexample
c906108c
SS
1519(@value{GDBP}) b bub @key{TAB}
1520@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1521(@value{GDBP}) b 'bubble(
474c8240 1522@end smallexample
c906108c
SS
1523
1524@noindent
1525In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1526you have not yet started typing the argument list when you ask for
1527completion on an overloaded symbol.
1528
79a6e687
BW
1529For more information about overloaded functions, see @ref{C Plus Plus
1530Expressions, ,C@t{++} Expressions}. You can use the command @code{set
c906108c 1531overload-resolution off} to disable overload resolution;
79a6e687 1532see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}.
c906108c 1533
65d12d83
TT
1534@cindex completion of structure field names
1535@cindex structure field name completion
1536@cindex completion of union field names
1537@cindex union field name completion
1538When completing in an expression which looks up a field in a
1539structure, @value{GDBN} also tries@footnote{The completer can be
1540confused by certain kinds of invalid expressions. Also, it only
1541examines the static type of the expression, not the dynamic type.} to
1542limit completions to the field names available in the type of the
1543left-hand-side:
1544
1545@smallexample
1546(@value{GDBP}) p gdb_stdout.@kbd{M-?}
1547magic to_delete to_fputs to_put to_rewind
1548to_data to_flush to_isatty to_read to_write
1549@end smallexample
1550
1551@noindent
1552This is because the @code{gdb_stdout} is a variable of the type
1553@code{struct ui_file} that is defined in @value{GDBN} sources as
1554follows:
1555
1556@smallexample
1557struct ui_file
1558@{
1559 int *magic;
1560 ui_file_flush_ftype *to_flush;
1561 ui_file_write_ftype *to_write;
1562 ui_file_fputs_ftype *to_fputs;
1563 ui_file_read_ftype *to_read;
1564 ui_file_delete_ftype *to_delete;
1565 ui_file_isatty_ftype *to_isatty;
1566 ui_file_rewind_ftype *to_rewind;
1567 ui_file_put_ftype *to_put;
1568 void *to_data;
1569@}
1570@end smallexample
1571
c906108c 1572
6d2ebf8b 1573@node Help
79a6e687 1574@section Getting Help
c906108c
SS
1575@cindex online documentation
1576@kindex help
1577
5d161b24 1578You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1579using the command @code{help}.
1580
1581@table @code
41afff9a 1582@kindex h @r{(@code{help})}
c906108c
SS
1583@item help
1584@itemx h
1585You can use @code{help} (abbreviated @code{h}) with no arguments to
1586display a short list of named classes of commands:
1587
1588@smallexample
1589(@value{GDBP}) help
1590List of classes of commands:
1591
2df3850c 1592aliases -- Aliases of other commands
c906108c 1593breakpoints -- Making program stop at certain points
2df3850c 1594data -- Examining data
c906108c 1595files -- Specifying and examining files
2df3850c
JM
1596internals -- Maintenance commands
1597obscure -- Obscure features
1598running -- Running the program
1599stack -- Examining the stack
c906108c
SS
1600status -- Status inquiries
1601support -- Support facilities
12c27660 1602tracepoints -- Tracing of program execution without
96a2c332 1603 stopping the program
c906108c 1604user-defined -- User-defined commands
c906108c 1605
5d161b24 1606Type "help" followed by a class name for a list of
c906108c 1607commands in that class.
5d161b24 1608Type "help" followed by command name for full
c906108c
SS
1609documentation.
1610Command name abbreviations are allowed if unambiguous.
1611(@value{GDBP})
1612@end smallexample
96a2c332 1613@c the above line break eliminates huge line overfull...
c906108c
SS
1614
1615@item help @var{class}
1616Using one of the general help classes as an argument, you can get a
1617list of the individual commands in that class. For example, here is the
1618help display for the class @code{status}:
1619
1620@smallexample
1621(@value{GDBP}) help status
1622Status inquiries.
1623
1624List of commands:
1625
1626@c Line break in "show" line falsifies real output, but needed
1627@c to fit in smallbook page size.
2df3850c 1628info -- Generic command for showing things
12c27660 1629 about the program being debugged
2df3850c 1630show -- Generic command for showing things
12c27660 1631 about the debugger
c906108c 1632
5d161b24 1633Type "help" followed by command name for full
c906108c
SS
1634documentation.
1635Command name abbreviations are allowed if unambiguous.
1636(@value{GDBP})
1637@end smallexample
1638
1639@item help @var{command}
1640With a command name as @code{help} argument, @value{GDBN} displays a
1641short paragraph on how to use that command.
1642
6837a0a2
DB
1643@kindex apropos
1644@item apropos @var{args}
09d4efe1 1645The @code{apropos} command searches through all of the @value{GDBN}
6837a0a2
DB
1646commands, and their documentation, for the regular expression specified in
1647@var{args}. It prints out all matches found. For example:
1648
1649@smallexample
1650apropos reload
1651@end smallexample
1652
b37052ae
EZ
1653@noindent
1654results in:
6837a0a2
DB
1655
1656@smallexample
6d2ebf8b
SS
1657@c @group
1658set symbol-reloading -- Set dynamic symbol table reloading
12c27660 1659 multiple times in one run
6d2ebf8b 1660show symbol-reloading -- Show dynamic symbol table reloading
12c27660 1661 multiple times in one run
6d2ebf8b 1662@c @end group
6837a0a2
DB
1663@end smallexample
1664
c906108c
SS
1665@kindex complete
1666@item complete @var{args}
1667The @code{complete @var{args}} command lists all the possible completions
1668for the beginning of a command. Use @var{args} to specify the beginning of the
1669command you want completed. For example:
1670
1671@smallexample
1672complete i
1673@end smallexample
1674
1675@noindent results in:
1676
1677@smallexample
1678@group
2df3850c
JM
1679if
1680ignore
c906108c
SS
1681info
1682inspect
c906108c
SS
1683@end group
1684@end smallexample
1685
1686@noindent This is intended for use by @sc{gnu} Emacs.
1687@end table
1688
1689In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1690and @code{show} to inquire about the state of your program, or the state
1691of @value{GDBN} itself. Each command supports many topics of inquiry; this
1692manual introduces each of them in the appropriate context. The listings
1693under @code{info} and under @code{show} in the Index point to
1694all the sub-commands. @xref{Index}.
1695
1696@c @group
1697@table @code
1698@kindex info
41afff9a 1699@kindex i @r{(@code{info})}
c906108c
SS
1700@item info
1701This command (abbreviated @code{i}) is for describing the state of your
cda4ce5a 1702program. For example, you can show the arguments passed to a function
c906108c
SS
1703with @code{info args}, list the registers currently in use with @code{info
1704registers}, or list the breakpoints you have set with @code{info breakpoints}.
1705You can get a complete list of the @code{info} sub-commands with
1706@w{@code{help info}}.
1707
1708@kindex set
1709@item set
5d161b24 1710You can assign the result of an expression to an environment variable with
c906108c
SS
1711@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1712@code{set prompt $}.
1713
1714@kindex show
1715@item show
5d161b24 1716In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1717@value{GDBN} itself.
1718You can change most of the things you can @code{show}, by using the
1719related command @code{set}; for example, you can control what number
1720system is used for displays with @code{set radix}, or simply inquire
1721which is currently in use with @code{show radix}.
1722
1723@kindex info set
1724To display all the settable parameters and their current
1725values, you can use @code{show} with no arguments; you may also use
1726@code{info set}. Both commands produce the same display.
1727@c FIXME: "info set" violates the rule that "info" is for state of
1728@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1729@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1730@end table
1731@c @end group
1732
1733Here are three miscellaneous @code{show} subcommands, all of which are
1734exceptional in lacking corresponding @code{set} commands:
1735
1736@table @code
1737@kindex show version
9c16f35a 1738@cindex @value{GDBN} version number
c906108c
SS
1739@item show version
1740Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1741information in @value{GDBN} bug-reports. If multiple versions of
1742@value{GDBN} are in use at your site, you may need to determine which
1743version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1744commands are introduced, and old ones may wither away. Also, many
1745system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1746variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1747The version number is the same as the one announced when you start
1748@value{GDBN}.
c906108c
SS
1749
1750@kindex show copying
09d4efe1 1751@kindex info copying
9c16f35a 1752@cindex display @value{GDBN} copyright
c906108c 1753@item show copying
09d4efe1 1754@itemx info copying
c906108c
SS
1755Display information about permission for copying @value{GDBN}.
1756
1757@kindex show warranty
09d4efe1 1758@kindex info warranty
c906108c 1759@item show warranty
09d4efe1 1760@itemx info warranty
2df3850c 1761Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1762if your version of @value{GDBN} comes with one.
2df3850c 1763
c906108c
SS
1764@end table
1765
6d2ebf8b 1766@node Running
c906108c
SS
1767@chapter Running Programs Under @value{GDBN}
1768
1769When you run a program under @value{GDBN}, you must first generate
1770debugging information when you compile it.
7a292a7a
SS
1771
1772You may start @value{GDBN} with its arguments, if any, in an environment
1773of your choice. If you are doing native debugging, you may redirect
1774your program's input and output, debug an already running process, or
1775kill a child process.
c906108c
SS
1776
1777@menu
1778* Compilation:: Compiling for debugging
1779* Starting:: Starting your program
c906108c
SS
1780* Arguments:: Your program's arguments
1781* Environment:: Your program's environment
c906108c
SS
1782
1783* Working Directory:: Your program's working directory
1784* Input/Output:: Your program's input and output
1785* Attach:: Debugging an already-running process
1786* Kill Process:: Killing the child process
c906108c
SS
1787
1788* Threads:: Debugging programs with multiple threads
1789* Processes:: Debugging programs with multiple processes
5c95884b 1790* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later
c906108c
SS
1791@end menu
1792
6d2ebf8b 1793@node Compilation
79a6e687 1794@section Compiling for Debugging
c906108c
SS
1795
1796In order to debug a program effectively, you need to generate
1797debugging information when you compile it. This debugging information
1798is stored in the object file; it describes the data type of each
1799variable or function and the correspondence between source line numbers
1800and addresses in the executable code.
1801
1802To request debugging information, specify the @samp{-g} option when you run
1803the compiler.
1804
514c4d71
EZ
1805Programs that are to be shipped to your customers are compiled with
1806optimizations, using the @samp{-O} compiler option. However, many
1807compilers are unable to handle the @samp{-g} and @samp{-O} options
1808together. Using those compilers, you cannot generate optimized
c906108c
SS
1809executables containing debugging information.
1810
514c4d71 1811@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or
53a5351d
JM
1812without @samp{-O}, making it possible to debug optimized code. We
1813recommend that you @emph{always} use @samp{-g} whenever you compile a
1814program. You may think your program is correct, but there is no sense
1815in pushing your luck.
c906108c
SS
1816
1817@cindex optimized code, debugging
1818@cindex debugging optimized code
1819When you debug a program compiled with @samp{-g -O}, remember that the
1820optimizer is rearranging your code; the debugger shows you what is
1821really there. Do not be too surprised when the execution path does not
1822exactly match your source file! An extreme example: if you define a
1823variable, but never use it, @value{GDBN} never sees that
1824variable---because the compiler optimizes it out of existence.
1825
1826Some things do not work as well with @samp{-g -O} as with just
1827@samp{-g}, particularly on machines with instruction scheduling. If in
1828doubt, recompile with @samp{-g} alone, and if this fixes the problem,
1829please report it to us as a bug (including a test case!).
15387254 1830@xref{Variables}, for more information about debugging optimized code.
c906108c
SS
1831
1832Older versions of the @sc{gnu} C compiler permitted a variant option
1833@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1834format; if your @sc{gnu} C compiler has this option, do not use it.
1835
514c4d71
EZ
1836@value{GDBN} knows about preprocessor macros and can show you their
1837expansion (@pxref{Macros}). Most compilers do not include information
1838about preprocessor macros in the debugging information if you specify
1839the @option{-g} flag alone, because this information is rather large.
1840Version 3.1 and later of @value{NGCC}, the @sc{gnu} C compiler,
1841provides macro information if you specify the options
1842@option{-gdwarf-2} and @option{-g3}; the former option requests
1843debugging information in the Dwarf 2 format, and the latter requests
1844``extra information''. In the future, we hope to find more compact
1845ways to represent macro information, so that it can be included with
1846@option{-g} alone.
1847
c906108c 1848@need 2000
6d2ebf8b 1849@node Starting
79a6e687 1850@section Starting your Program
c906108c
SS
1851@cindex starting
1852@cindex running
1853
1854@table @code
1855@kindex run
41afff9a 1856@kindex r @r{(@code{run})}
c906108c
SS
1857@item run
1858@itemx r
7a292a7a
SS
1859Use the @code{run} command to start your program under @value{GDBN}.
1860You must first specify the program name (except on VxWorks) with an
1861argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1862@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
79a6e687 1863(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
1864
1865@end table
1866
c906108c
SS
1867If you are running your program in an execution environment that
1868supports processes, @code{run} creates an inferior process and makes
8edfe269
DJ
1869that process run your program. In some environments without processes,
1870@code{run} jumps to the start of your program. Other targets,
1871like @samp{remote}, are always running. If you get an error
1872message like this one:
1873
1874@smallexample
1875The "remote" target does not support "run".
1876Try "help target" or "continue".
1877@end smallexample
1878
1879@noindent
1880then use @code{continue} to run your program. You may need @code{load}
1881first (@pxref{load}).
c906108c
SS
1882
1883The execution of a program is affected by certain information it
1884receives from its superior. @value{GDBN} provides ways to specify this
1885information, which you must do @emph{before} starting your program. (You
1886can change it after starting your program, but such changes only affect
1887your program the next time you start it.) This information may be
1888divided into four categories:
1889
1890@table @asis
1891@item The @emph{arguments.}
1892Specify the arguments to give your program as the arguments of the
1893@code{run} command. If a shell is available on your target, the shell
1894is used to pass the arguments, so that you may use normal conventions
1895(such as wildcard expansion or variable substitution) in describing
1896the arguments.
1897In Unix systems, you can control which shell is used with the
1898@code{SHELL} environment variable.
79a6e687 1899@xref{Arguments, ,Your Program's Arguments}.
c906108c
SS
1900
1901@item The @emph{environment.}
1902Your program normally inherits its environment from @value{GDBN}, but you can
1903use the @value{GDBN} commands @code{set environment} and @code{unset
1904environment} to change parts of the environment that affect
79a6e687 1905your program. @xref{Environment, ,Your Program's Environment}.
c906108c
SS
1906
1907@item The @emph{working directory.}
1908Your program inherits its working directory from @value{GDBN}. You can set
1909the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
79a6e687 1910@xref{Working Directory, ,Your Program's Working Directory}.
c906108c
SS
1911
1912@item The @emph{standard input and output.}
1913Your program normally uses the same device for standard input and
1914standard output as @value{GDBN} is using. You can redirect input and output
1915in the @code{run} command line, or you can use the @code{tty} command to
1916set a different device for your program.
79a6e687 1917@xref{Input/Output, ,Your Program's Input and Output}.
c906108c
SS
1918
1919@cindex pipes
1920@emph{Warning:} While input and output redirection work, you cannot use
1921pipes to pass the output of the program you are debugging to another
1922program; if you attempt this, @value{GDBN} is likely to wind up debugging the
1923wrong program.
1924@end table
c906108c
SS
1925
1926When you issue the @code{run} command, your program begins to execute
79a6e687 1927immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion
c906108c
SS
1928of how to arrange for your program to stop. Once your program has
1929stopped, you may call functions in your program, using the @code{print}
1930or @code{call} commands. @xref{Data, ,Examining Data}.
1931
1932If the modification time of your symbol file has changed since the last
1933time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
1934table, and reads it again. When it does this, @value{GDBN} tries to retain
1935your current breakpoints.
1936
4e8b0763
JB
1937@table @code
1938@kindex start
1939@item start
1940@cindex run to main procedure
1941The name of the main procedure can vary from language to language.
1942With C or C@t{++}, the main procedure name is always @code{main}, but
1943other languages such as Ada do not require a specific name for their
1944main procedure. The debugger provides a convenient way to start the
1945execution of the program and to stop at the beginning of the main
1946procedure, depending on the language used.
1947
1948The @samp{start} command does the equivalent of setting a temporary
1949breakpoint at the beginning of the main procedure and then invoking
1950the @samp{run} command.
1951
f018e82f
EZ
1952@cindex elaboration phase
1953Some programs contain an @dfn{elaboration} phase where some startup code is
1954executed before the main procedure is called. This depends on the
1955languages used to write your program. In C@t{++}, for instance,
4e8b0763
JB
1956constructors for static and global objects are executed before
1957@code{main} is called. It is therefore possible that the debugger stops
1958before reaching the main procedure. However, the temporary breakpoint
1959will remain to halt execution.
1960
1961Specify the arguments to give to your program as arguments to the
1962@samp{start} command. These arguments will be given verbatim to the
1963underlying @samp{run} command. Note that the same arguments will be
1964reused if no argument is provided during subsequent calls to
1965@samp{start} or @samp{run}.
1966
1967It is sometimes necessary to debug the program during elaboration. In
1968these cases, using the @code{start} command would stop the execution of
1969your program too late, as the program would have already completed the
1970elaboration phase. Under these circumstances, insert breakpoints in your
1971elaboration code before running your program.
ccd213ac
DJ
1972
1973@kindex set exec-wrapper
1974@item set exec-wrapper @var{wrapper}
1975@itemx show exec-wrapper
1976@itemx unset exec-wrapper
1977When @samp{exec-wrapper} is set, the specified wrapper is used to
1978launch programs for debugging. @value{GDBN} starts your program
1979with a shell command of the form @kbd{exec @var{wrapper}
1980@var{program}}. Quoting is added to @var{program} and its
1981arguments, but not to @var{wrapper}, so you should add quotes if
1982appropriate for your shell. The wrapper runs until it executes
1983your program, and then @value{GDBN} takes control.
1984
1985You can use any program that eventually calls @code{execve} with
1986its arguments as a wrapper. Several standard Unix utilities do
1987this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
1988with @code{exec "$@@"} will also work.
1989
1990For example, you can use @code{env} to pass an environment variable to
1991the debugged program, without setting the variable in your shell's
1992environment:
1993
1994@smallexample
1995(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so'
1996(@value{GDBP}) run
1997@end smallexample
1998
1999This command is available when debugging locally on most targets, excluding
2000@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
2001
4e8b0763
JB
2002@end table
2003
6d2ebf8b 2004@node Arguments
79a6e687 2005@section Your Program's Arguments
c906108c
SS
2006
2007@cindex arguments (to your program)
2008The arguments to your program can be specified by the arguments of the
5d161b24 2009@code{run} command.
c906108c
SS
2010They are passed to a shell, which expands wildcard characters and
2011performs redirection of I/O, and thence to your program. Your
2012@code{SHELL} environment variable (if it exists) specifies what shell
2013@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
2014the default shell (@file{/bin/sh} on Unix).
2015
2016On non-Unix systems, the program is usually invoked directly by
2017@value{GDBN}, which emulates I/O redirection via the appropriate system
2018calls, and the wildcard characters are expanded by the startup code of
2019the program, not by the shell.
c906108c
SS
2020
2021@code{run} with no arguments uses the same arguments used by the previous
2022@code{run}, or those set by the @code{set args} command.
2023
c906108c 2024@table @code
41afff9a 2025@kindex set args
c906108c
SS
2026@item set args
2027Specify the arguments to be used the next time your program is run. If
2028@code{set args} has no arguments, @code{run} executes your program
2029with no arguments. Once you have run your program with arguments,
2030using @code{set args} before the next @code{run} is the only way to run
2031it again without arguments.
2032
2033@kindex show args
2034@item show args
2035Show the arguments to give your program when it is started.
2036@end table
2037
6d2ebf8b 2038@node Environment
79a6e687 2039@section Your Program's Environment
c906108c
SS
2040
2041@cindex environment (of your program)
2042The @dfn{environment} consists of a set of environment variables and
2043their values. Environment variables conventionally record such things as
2044your user name, your home directory, your terminal type, and your search
2045path for programs to run. Usually you set up environment variables with
2046the shell and they are inherited by all the other programs you run. When
2047debugging, it can be useful to try running your program with a modified
2048environment without having to start @value{GDBN} over again.
2049
2050@table @code
2051@kindex path
2052@item path @var{directory}
2053Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
2054(the search path for executables) that will be passed to your program.
2055The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
2056You may specify several directory names, separated by whitespace or by a
2057system-dependent separator character (@samp{:} on Unix, @samp{;} on
2058MS-DOS and MS-Windows). If @var{directory} is already in the path, it
2059is moved to the front, so it is searched sooner.
c906108c
SS
2060
2061You can use the string @samp{$cwd} to refer to whatever is the current
2062working directory at the time @value{GDBN} searches the path. If you
2063use @samp{.} instead, it refers to the directory where you executed the
2064@code{path} command. @value{GDBN} replaces @samp{.} in the
2065@var{directory} argument (with the current path) before adding
2066@var{directory} to the search path.
2067@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
2068@c document that, since repeating it would be a no-op.
2069
2070@kindex show paths
2071@item show paths
2072Display the list of search paths for executables (the @code{PATH}
2073environment variable).
2074
2075@kindex show environment
2076@item show environment @r{[}@var{varname}@r{]}
2077Print the value of environment variable @var{varname} to be given to
2078your program when it starts. If you do not supply @var{varname},
2079print the names and values of all environment variables to be given to
2080your program. You can abbreviate @code{environment} as @code{env}.
2081
2082@kindex set environment
53a5351d 2083@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
2084Set environment variable @var{varname} to @var{value}. The value
2085changes for your program only, not for @value{GDBN} itself. @var{value} may
2086be any string; the values of environment variables are just strings, and
2087any interpretation is supplied by your program itself. The @var{value}
2088parameter is optional; if it is eliminated, the variable is set to a
2089null value.
2090@c "any string" here does not include leading, trailing
2091@c blanks. Gnu asks: does anyone care?
2092
2093For example, this command:
2094
474c8240 2095@smallexample
c906108c 2096set env USER = foo
474c8240 2097@end smallexample
c906108c
SS
2098
2099@noindent
d4f3574e 2100tells the debugged program, when subsequently run, that its user is named
c906108c
SS
2101@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
2102are not actually required.)
2103
2104@kindex unset environment
2105@item unset environment @var{varname}
2106Remove variable @var{varname} from the environment to be passed to your
2107program. This is different from @samp{set env @var{varname} =};
2108@code{unset environment} removes the variable from the environment,
2109rather than assigning it an empty value.
2110@end table
2111
d4f3574e
SS
2112@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
2113the shell indicated
c906108c
SS
2114by your @code{SHELL} environment variable if it exists (or
2115@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
2116that runs an initialization file---such as @file{.cshrc} for C-shell, or
2117@file{.bashrc} for BASH---any variables you set in that file affect
2118your program. You may wish to move setting of environment variables to
2119files that are only run when you sign on, such as @file{.login} or
2120@file{.profile}.
2121
6d2ebf8b 2122@node Working Directory
79a6e687 2123@section Your Program's Working Directory
c906108c
SS
2124
2125@cindex working directory (of your program)
2126Each time you start your program with @code{run}, it inherits its
2127working directory from the current working directory of @value{GDBN}.
2128The @value{GDBN} working directory is initially whatever it inherited
2129from its parent process (typically the shell), but you can specify a new
2130working directory in @value{GDBN} with the @code{cd} command.
2131
2132The @value{GDBN} working directory also serves as a default for the commands
2133that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
79a6e687 2134Specify Files}.
c906108c
SS
2135
2136@table @code
2137@kindex cd
721c2651 2138@cindex change working directory
c906108c
SS
2139@item cd @var{directory}
2140Set the @value{GDBN} working directory to @var{directory}.
2141
2142@kindex pwd
2143@item pwd
2144Print the @value{GDBN} working directory.
2145@end table
2146
60bf7e09
EZ
2147It is generally impossible to find the current working directory of
2148the process being debugged (since a program can change its directory
2149during its run). If you work on a system where @value{GDBN} is
2150configured with the @file{/proc} support, you can use the @code{info
2151proc} command (@pxref{SVR4 Process Information}) to find out the
2152current working directory of the debuggee.
2153
6d2ebf8b 2154@node Input/Output
79a6e687 2155@section Your Program's Input and Output
c906108c
SS
2156
2157@cindex redirection
2158@cindex i/o
2159@cindex terminal
2160By default, the program you run under @value{GDBN} does input and output to
5d161b24 2161the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
2162to its own terminal modes to interact with you, but it records the terminal
2163modes your program was using and switches back to them when you continue
2164running your program.
2165
2166@table @code
2167@kindex info terminal
2168@item info terminal
2169Displays information recorded by @value{GDBN} about the terminal modes your
2170program is using.
2171@end table
2172
2173You can redirect your program's input and/or output using shell
2174redirection with the @code{run} command. For example,
2175
474c8240 2176@smallexample
c906108c 2177run > outfile
474c8240 2178@end smallexample
c906108c
SS
2179
2180@noindent
2181starts your program, diverting its output to the file @file{outfile}.
2182
2183@kindex tty
2184@cindex controlling terminal
2185Another way to specify where your program should do input and output is
2186with the @code{tty} command. This command accepts a file name as
2187argument, and causes this file to be the default for future @code{run}
2188commands. It also resets the controlling terminal for the child
2189process, for future @code{run} commands. For example,
2190
474c8240 2191@smallexample
c906108c 2192tty /dev/ttyb
474c8240 2193@end smallexample
c906108c
SS
2194
2195@noindent
2196directs that processes started with subsequent @code{run} commands
2197default to do input and output on the terminal @file{/dev/ttyb} and have
2198that as their controlling terminal.
2199
2200An explicit redirection in @code{run} overrides the @code{tty} command's
2201effect on the input/output device, but not its effect on the controlling
2202terminal.
2203
2204When you use the @code{tty} command or redirect input in the @code{run}
2205command, only the input @emph{for your program} is affected. The input
3cb3b8df
BR
2206for @value{GDBN} still comes from your terminal. @code{tty} is an alias
2207for @code{set inferior-tty}.
2208
2209@cindex inferior tty
2210@cindex set inferior controlling terminal
2211You can use the @code{show inferior-tty} command to tell @value{GDBN} to
2212display the name of the terminal that will be used for future runs of your
2213program.
2214
2215@table @code
2216@item set inferior-tty /dev/ttyb
2217@kindex set inferior-tty
2218Set the tty for the program being debugged to /dev/ttyb.
2219
2220@item show inferior-tty
2221@kindex show inferior-tty
2222Show the current tty for the program being debugged.
2223@end table
c906108c 2224
6d2ebf8b 2225@node Attach
79a6e687 2226@section Debugging an Already-running Process
c906108c
SS
2227@kindex attach
2228@cindex attach
2229
2230@table @code
2231@item attach @var{process-id}
2232This command attaches to a running process---one that was started
2233outside @value{GDBN}. (@code{info files} shows your active
2234targets.) The command takes as argument a process ID. The usual way to
09d4efe1 2235find out the @var{process-id} of a Unix process is with the @code{ps} utility,
c906108c
SS
2236or with the @samp{jobs -l} shell command.
2237
2238@code{attach} does not repeat if you press @key{RET} a second time after
2239executing the command.
2240@end table
2241
2242To use @code{attach}, your program must be running in an environment
2243which supports processes; for example, @code{attach} does not work for
2244programs on bare-board targets that lack an operating system. You must
2245also have permission to send the process a signal.
2246
2247When you use @code{attach}, the debugger finds the program running in
2248the process first by looking in the current working directory, then (if
2249the program is not found) by using the source file search path
79a6e687 2250(@pxref{Source Path, ,Specifying Source Directories}). You can also use
c906108c
SS
2251the @code{file} command to load the program. @xref{Files, ,Commands to
2252Specify Files}.
2253
2254The first thing @value{GDBN} does after arranging to debug the specified
2255process is to stop it. You can examine and modify an attached process
53a5351d
JM
2256with all the @value{GDBN} commands that are ordinarily available when
2257you start processes with @code{run}. You can insert breakpoints; you
2258can step and continue; you can modify storage. If you would rather the
2259process continue running, you may use the @code{continue} command after
c906108c
SS
2260attaching @value{GDBN} to the process.
2261
2262@table @code
2263@kindex detach
2264@item detach
2265When you have finished debugging the attached process, you can use the
2266@code{detach} command to release it from @value{GDBN} control. Detaching
2267the process continues its execution. After the @code{detach} command,
2268that process and @value{GDBN} become completely independent once more, and you
2269are ready to @code{attach} another process or start one with @code{run}.
2270@code{detach} does not repeat if you press @key{RET} again after
2271executing the command.
2272@end table
2273
159fcc13
JK
2274If you exit @value{GDBN} while you have an attached process, you detach
2275that process. If you use the @code{run} command, you kill that process.
2276By default, @value{GDBN} asks for confirmation if you try to do either of these
2277things; you can control whether or not you need to confirm by using the
2278@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and
79a6e687 2279Messages}).
c906108c 2280
6d2ebf8b 2281@node Kill Process
79a6e687 2282@section Killing the Child Process
c906108c
SS
2283
2284@table @code
2285@kindex kill
2286@item kill
2287Kill the child process in which your program is running under @value{GDBN}.
2288@end table
2289
2290This command is useful if you wish to debug a core dump instead of a
2291running process. @value{GDBN} ignores any core dump file while your program
2292is running.
2293
2294On some operating systems, a program cannot be executed outside @value{GDBN}
2295while you have breakpoints set on it inside @value{GDBN}. You can use the
2296@code{kill} command in this situation to permit running your program
2297outside the debugger.
2298
2299The @code{kill} command is also useful if you wish to recompile and
2300relink your program, since on many systems it is impossible to modify an
2301executable file while it is running in a process. In this case, when you
2302next type @code{run}, @value{GDBN} notices that the file has changed, and
2303reads the symbol table again (while trying to preserve your current
2304breakpoint settings).
2305
6d2ebf8b 2306@node Threads
79a6e687 2307@section Debugging Programs with Multiple Threads
c906108c
SS
2308
2309@cindex threads of execution
2310@cindex multiple threads
2311@cindex switching threads
2312In some operating systems, such as HP-UX and Solaris, a single program
2313may have more than one @dfn{thread} of execution. The precise semantics
2314of threads differ from one operating system to another, but in general
2315the threads of a single program are akin to multiple processes---except
2316that they share one address space (that is, they can all examine and
2317modify the same variables). On the other hand, each thread has its own
2318registers and execution stack, and perhaps private memory.
2319
2320@value{GDBN} provides these facilities for debugging multi-thread
2321programs:
2322
2323@itemize @bullet
2324@item automatic notification of new threads
2325@item @samp{thread @var{threadno}}, a command to switch among threads
2326@item @samp{info threads}, a command to inquire about existing threads
5d161b24 2327@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
2328a command to apply a command to a list of threads
2329@item thread-specific breakpoints
93815fbf
VP
2330@item @samp{set print thread-events}, which controls printing of
2331messages on thread start and exit.
c906108c
SS
2332@end itemize
2333
c906108c
SS
2334@quotation
2335@emph{Warning:} These facilities are not yet available on every
2336@value{GDBN} configuration where the operating system supports threads.
2337If your @value{GDBN} does not support threads, these commands have no
2338effect. For example, a system without thread support shows no output
2339from @samp{info threads}, and always rejects the @code{thread} command,
2340like this:
2341
2342@smallexample
2343(@value{GDBP}) info threads
2344(@value{GDBP}) thread 1
2345Thread ID 1 not known. Use the "info threads" command to
2346see the IDs of currently known threads.
2347@end smallexample
2348@c FIXME to implementors: how hard would it be to say "sorry, this GDB
2349@c doesn't support threads"?
2350@end quotation
c906108c
SS
2351
2352@cindex focus of debugging
2353@cindex current thread
2354The @value{GDBN} thread debugging facility allows you to observe all
2355threads while your program runs---but whenever @value{GDBN} takes
2356control, one thread in particular is always the focus of debugging.
2357This thread is called the @dfn{current thread}. Debugging commands show
2358program information from the perspective of the current thread.
2359
41afff9a 2360@cindex @code{New} @var{systag} message
c906108c
SS
2361@cindex thread identifier (system)
2362@c FIXME-implementors!! It would be more helpful if the [New...] message
2363@c included GDB's numeric thread handle, so you could just go to that
2364@c thread without first checking `info threads'.
2365Whenever @value{GDBN} detects a new thread in your program, it displays
2366the target system's identification for the thread with a message in the
2367form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2368whose form varies depending on the particular system. For example, on
8807d78b 2369@sc{gnu}/Linux, you might see
c906108c 2370
474c8240 2371@smallexample
8807d78b 2372[New Thread 46912507313328 (LWP 25582)]
474c8240 2373@end smallexample
c906108c
SS
2374
2375@noindent
2376when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2377the @var{systag} is simply something like @samp{process 368}, with no
2378further qualifier.
2379
2380@c FIXME!! (1) Does the [New...] message appear even for the very first
2381@c thread of a program, or does it only appear for the
6ca652b0 2382@c second---i.e.@: when it becomes obvious we have a multithread
c906108c
SS
2383@c program?
2384@c (2) *Is* there necessarily a first thread always? Or do some
2385@c multithread systems permit starting a program with multiple
5d161b24 2386@c threads ab initio?
c906108c
SS
2387
2388@cindex thread number
2389@cindex thread identifier (GDB)
2390For debugging purposes, @value{GDBN} associates its own thread
2391number---always a single integer---with each thread in your program.
2392
2393@table @code
2394@kindex info threads
2395@item info threads
2396Display a summary of all threads currently in your
2397program. @value{GDBN} displays for each thread (in this order):
2398
2399@enumerate
09d4efe1
EZ
2400@item
2401the thread number assigned by @value{GDBN}
c906108c 2402
09d4efe1
EZ
2403@item
2404the target system's thread identifier (@var{systag})
c906108c 2405
09d4efe1
EZ
2406@item
2407the current stack frame summary for that thread
c906108c
SS
2408@end enumerate
2409
2410@noindent
2411An asterisk @samp{*} to the left of the @value{GDBN} thread number
2412indicates the current thread.
2413
5d161b24 2414For example,
c906108c
SS
2415@end table
2416@c end table here to get a little more width for example
2417
2418@smallexample
2419(@value{GDBP}) info threads
2420 3 process 35 thread 27 0x34e5 in sigpause ()
2421 2 process 35 thread 23 0x34e5 in sigpause ()
2422* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
2423 at threadtest.c:68
2424@end smallexample
53a5351d
JM
2425
2426On HP-UX systems:
c906108c 2427
4644b6e3
EZ
2428@cindex debugging multithreaded programs (on HP-UX)
2429@cindex thread identifier (GDB), on HP-UX
c906108c
SS
2430For debugging purposes, @value{GDBN} associates its own thread
2431number---a small integer assigned in thread-creation order---with each
2432thread in your program.
2433
41afff9a
EZ
2434@cindex @code{New} @var{systag} message, on HP-UX
2435@cindex thread identifier (system), on HP-UX
c906108c
SS
2436@c FIXME-implementors!! It would be more helpful if the [New...] message
2437@c included GDB's numeric thread handle, so you could just go to that
2438@c thread without first checking `info threads'.
2439Whenever @value{GDBN} detects a new thread in your program, it displays
2440both @value{GDBN}'s thread number and the target system's identification for the thread with a message in the
2441form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2442whose form varies depending on the particular system. For example, on
2443HP-UX, you see
2444
474c8240 2445@smallexample
c906108c 2446[New thread 2 (system thread 26594)]
474c8240 2447@end smallexample
c906108c
SS
2448
2449@noindent
5d161b24 2450when @value{GDBN} notices a new thread.
c906108c
SS
2451
2452@table @code
4644b6e3 2453@kindex info threads (HP-UX)
c906108c
SS
2454@item info threads
2455Display a summary of all threads currently in your
2456program. @value{GDBN} displays for each thread (in this order):
2457
2458@enumerate
2459@item the thread number assigned by @value{GDBN}
2460
2461@item the target system's thread identifier (@var{systag})
2462
2463@item the current stack frame summary for that thread
2464@end enumerate
2465
2466@noindent
2467An asterisk @samp{*} to the left of the @value{GDBN} thread number
2468indicates the current thread.
2469
5d161b24 2470For example,
c906108c
SS
2471@end table
2472@c end table here to get a little more width for example
2473
474c8240 2474@smallexample
c906108c 2475(@value{GDBP}) info threads
6d2ebf8b
SS
2476 * 3 system thread 26607 worker (wptr=0x7b09c318 "@@") \@*
2477 at quicksort.c:137
2478 2 system thread 26606 0x7b0030d8 in __ksleep () \@*
2479 from /usr/lib/libc.2
2480 1 system thread 27905 0x7b003498 in _brk () \@*
2481 from /usr/lib/libc.2
474c8240 2482@end smallexample
c906108c 2483
c45da7e6
EZ
2484On Solaris, you can display more information about user threads with a
2485Solaris-specific command:
2486
2487@table @code
2488@item maint info sol-threads
2489@kindex maint info sol-threads
2490@cindex thread info (Solaris)
2491Display info on Solaris user threads.
2492@end table
2493
c906108c
SS
2494@table @code
2495@kindex thread @var{threadno}
2496@item thread @var{threadno}
2497Make thread number @var{threadno} the current thread. The command
2498argument @var{threadno} is the internal @value{GDBN} thread number, as
2499shown in the first field of the @samp{info threads} display.
2500@value{GDBN} responds by displaying the system identifier of the thread
2501you selected, and its current stack frame summary:
2502
2503@smallexample
2504@c FIXME!! This example made up; find a @value{GDBN} w/threads and get real one
2505(@value{GDBP}) thread 2
c906108c 2506[Switching to process 35 thread 23]
c906108c
SS
25070x34e5 in sigpause ()
2508@end smallexample
2509
2510@noindent
2511As with the @samp{[New @dots{}]} message, the form of the text after
2512@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2513threads.
c906108c 2514
9c16f35a 2515@kindex thread apply
638ac427 2516@cindex apply command to several threads
839c27b7
EZ
2517@item thread apply [@var{threadno}] [@var{all}] @var{command}
2518The @code{thread apply} command allows you to apply the named
2519@var{command} to one or more threads. Specify the numbers of the
2520threads that you want affected with the command argument
2521@var{threadno}. It can be a single thread number, one of the numbers
2522shown in the first field of the @samp{info threads} display; or it
2523could be a range of thread numbers, as in @code{2-4}. To apply a
2524command to all threads, type @kbd{thread apply all @var{command}}.
93815fbf
VP
2525
2526@kindex set print thread-events
2527@cindex print messages on thread start and exit
2528@item set print thread-events
2529@itemx set print thread-events on
2530@itemx set print thread-events off
2531The @code{set print thread-events} command allows you to enable or
2532disable printing of messages when @value{GDBN} notices that new threads have
2533started or that threads have exited. By default, these messages will
2534be printed if detection of these events is supported by the target.
2535Note that these messages cannot be disabled on all targets.
2536
2537@kindex show print thread-events
2538@item show print thread-events
2539Show whether messages will be printed when @value{GDBN} detects that threads
2540have started and exited.
c906108c
SS
2541@end table
2542
2543@cindex automatic thread selection
2544@cindex switching threads automatically
2545@cindex threads, automatic switching
2546Whenever @value{GDBN} stops your program, due to a breakpoint or a
2547signal, it automatically selects the thread where that breakpoint or
2548signal happened. @value{GDBN} alerts you to the context switch with a
2549message of the form @samp{[Switching to @var{systag}]} to identify the
2550thread.
2551
79a6e687 2552@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for
c906108c
SS
2553more information about how @value{GDBN} behaves when you stop and start
2554programs with multiple threads.
2555
79a6e687 2556@xref{Set Watchpoints,,Setting Watchpoints}, for information about
c906108c 2557watchpoints in programs with multiple threads.
c906108c 2558
6d2ebf8b 2559@node Processes
79a6e687 2560@section Debugging Programs with Multiple Processes
c906108c
SS
2561
2562@cindex fork, debugging programs which call
2563@cindex multiple processes
2564@cindex processes, multiple
53a5351d
JM
2565On most systems, @value{GDBN} has no special support for debugging
2566programs which create additional processes using the @code{fork}
2567function. When a program forks, @value{GDBN} will continue to debug the
2568parent process and the child process will run unimpeded. If you have
2569set a breakpoint in any code which the child then executes, the child
2570will get a @code{SIGTRAP} signal which (unless it catches the signal)
2571will cause it to terminate.
c906108c
SS
2572
2573However, if you want to debug the child process there is a workaround
2574which isn't too painful. Put a call to @code{sleep} in the code which
2575the child process executes after the fork. It may be useful to sleep
2576only if a certain environment variable is set, or a certain file exists,
2577so that the delay need not occur when you don't want to run @value{GDBN}
2578on the child. While the child is sleeping, use the @code{ps} program to
2579get its process ID. Then tell @value{GDBN} (a new invocation of
2580@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 2581the child process (@pxref{Attach}). From that point on you can debug
c906108c 2582the child process just like any other process which you attached to.
c906108c 2583
b51970ac
DJ
2584On some systems, @value{GDBN} provides support for debugging programs that
2585create additional processes using the @code{fork} or @code{vfork} functions.
2586Currently, the only platforms with this feature are HP-UX (11.x and later
a6b151f1 2587only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later).
c906108c
SS
2588
2589By default, when a program forks, @value{GDBN} will continue to debug
2590the parent process and the child process will run unimpeded.
2591
2592If you want to follow the child process instead of the parent process,
2593use the command @w{@code{set follow-fork-mode}}.
2594
2595@table @code
2596@kindex set follow-fork-mode
2597@item set follow-fork-mode @var{mode}
2598Set the debugger response to a program call of @code{fork} or
2599@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
9c16f35a 2600process. The @var{mode} argument can be:
c906108c
SS
2601
2602@table @code
2603@item parent
2604The original process is debugged after a fork. The child process runs
2df3850c 2605unimpeded. This is the default.
c906108c
SS
2606
2607@item child
2608The new process is debugged after a fork. The parent process runs
2609unimpeded.
2610
c906108c
SS
2611@end table
2612
9c16f35a 2613@kindex show follow-fork-mode
c906108c 2614@item show follow-fork-mode
2df3850c 2615Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
2616@end table
2617
5c95884b
MS
2618@cindex debugging multiple processes
2619On Linux, if you want to debug both the parent and child processes, use the
2620command @w{@code{set detach-on-fork}}.
2621
2622@table @code
2623@kindex set detach-on-fork
2624@item set detach-on-fork @var{mode}
2625Tells gdb whether to detach one of the processes after a fork, or
2626retain debugger control over them both.
2627
2628@table @code
2629@item on
2630The child process (or parent process, depending on the value of
2631@code{follow-fork-mode}) will be detached and allowed to run
2632independently. This is the default.
2633
2634@item off
2635Both processes will be held under the control of @value{GDBN}.
2636One process (child or parent, depending on the value of
2637@code{follow-fork-mode}) is debugged as usual, while the other
2638is held suspended.
2639
2640@end table
2641
11310833
NR
2642@kindex show detach-on-fork
2643@item show detach-on-fork
2644Show whether detach-on-fork mode is on/off.
5c95884b
MS
2645@end table
2646
11310833 2647If you choose to set @samp{detach-on-fork} mode off, then
5c95884b
MS
2648@value{GDBN} will retain control of all forked processes (including
2649nested forks). You can list the forked processes under the control of
2650@value{GDBN} by using the @w{@code{info forks}} command, and switch
2651from one fork to another by using the @w{@code{fork}} command.
2652
2653@table @code
2654@kindex info forks
2655@item info forks
2656Print a list of all forked processes under the control of @value{GDBN}.
2657The listing will include a fork id, a process id, and the current
2658position (program counter) of the process.
2659
5c95884b
MS
2660@kindex fork @var{fork-id}
2661@item fork @var{fork-id}
2662Make fork number @var{fork-id} the current process. The argument
2663@var{fork-id} is the internal fork number assigned by @value{GDBN},
2664as shown in the first field of the @samp{info forks} display.
2665
11310833
NR
2666@kindex process @var{process-id}
2667@item process @var{process-id}
2668Make process number @var{process-id} the current process. The
2669argument @var{process-id} must be one that is listed in the output of
2670@samp{info forks}.
2671
5c95884b
MS
2672@end table
2673
2674To quit debugging one of the forked processes, you can either detach
f73adfeb 2675from it by using the @w{@code{detach fork}} command (allowing it to
5c95884b 2676run independently), or delete (and kill) it using the
b8db102d 2677@w{@code{delete fork}} command.
5c95884b
MS
2678
2679@table @code
f73adfeb
AS
2680@kindex detach fork @var{fork-id}
2681@item detach fork @var{fork-id}
5c95884b
MS
2682Detach from the process identified by @value{GDBN} fork number
2683@var{fork-id}, and remove it from the fork list. The process will be
2684allowed to run independently.
2685
b8db102d
MS
2686@kindex delete fork @var{fork-id}
2687@item delete fork @var{fork-id}
5c95884b
MS
2688Kill the process identified by @value{GDBN} fork number @var{fork-id},
2689and remove it from the fork list.
2690
2691@end table
2692
c906108c
SS
2693If you ask to debug a child process and a @code{vfork} is followed by an
2694@code{exec}, @value{GDBN} executes the new target up to the first
2695breakpoint in the new target. If you have a breakpoint set on
2696@code{main} in your original program, the breakpoint will also be set on
2697the child process's @code{main}.
2698
2699When a child process is spawned by @code{vfork}, you cannot debug the
2700child or parent until an @code{exec} call completes.
2701
2702If you issue a @code{run} command to @value{GDBN} after an @code{exec}
2703call executes, the new target restarts. To restart the parent process,
2704use the @code{file} command with the parent executable name as its
2705argument.
2706
2707You can use the @code{catch} command to make @value{GDBN} stop whenever
2708a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
79a6e687 2709Catchpoints, ,Setting Catchpoints}.
c906108c 2710
5c95884b 2711@node Checkpoint/Restart
79a6e687 2712@section Setting a @emph{Bookmark} to Return to Later
5c95884b
MS
2713
2714@cindex checkpoint
2715@cindex restart
2716@cindex bookmark
2717@cindex snapshot of a process
2718@cindex rewind program state
2719
2720On certain operating systems@footnote{Currently, only
2721@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a
2722program's state, called a @dfn{checkpoint}, and come back to it
2723later.
2724
2725Returning to a checkpoint effectively undoes everything that has
2726happened in the program since the @code{checkpoint} was saved. This
2727includes changes in memory, registers, and even (within some limits)
2728system state. Effectively, it is like going back in time to the
2729moment when the checkpoint was saved.
2730
2731Thus, if you're stepping thru a program and you think you're
2732getting close to the point where things go wrong, you can save
2733a checkpoint. Then, if you accidentally go too far and miss
2734the critical statement, instead of having to restart your program
2735from the beginning, you can just go back to the checkpoint and
2736start again from there.
2737
2738This can be especially useful if it takes a lot of time or
2739steps to reach the point where you think the bug occurs.
2740
2741To use the @code{checkpoint}/@code{restart} method of debugging:
2742
2743@table @code
2744@kindex checkpoint
2745@item checkpoint
2746Save a snapshot of the debugged program's current execution state.
2747The @code{checkpoint} command takes no arguments, but each checkpoint
2748is assigned a small integer id, similar to a breakpoint id.
2749
2750@kindex info checkpoints
2751@item info checkpoints
2752List the checkpoints that have been saved in the current debugging
2753session. For each checkpoint, the following information will be
2754listed:
2755
2756@table @code
2757@item Checkpoint ID
2758@item Process ID
2759@item Code Address
2760@item Source line, or label
2761@end table
2762
2763@kindex restart @var{checkpoint-id}
2764@item restart @var{checkpoint-id}
2765Restore the program state that was saved as checkpoint number
2766@var{checkpoint-id}. All program variables, registers, stack frames
2767etc.@: will be returned to the values that they had when the checkpoint
2768was saved. In essence, gdb will ``wind back the clock'' to the point
2769in time when the checkpoint was saved.
2770
2771Note that breakpoints, @value{GDBN} variables, command history etc.
2772are not affected by restoring a checkpoint. In general, a checkpoint
2773only restores things that reside in the program being debugged, not in
2774the debugger.
2775
b8db102d
MS
2776@kindex delete checkpoint @var{checkpoint-id}
2777@item delete checkpoint @var{checkpoint-id}
5c95884b
MS
2778Delete the previously-saved checkpoint identified by @var{checkpoint-id}.
2779
2780@end table
2781
2782Returning to a previously saved checkpoint will restore the user state
2783of the program being debugged, plus a significant subset of the system
2784(OS) state, including file pointers. It won't ``un-write'' data from
2785a file, but it will rewind the file pointer to the previous location,
2786so that the previously written data can be overwritten. For files
2787opened in read mode, the pointer will also be restored so that the
2788previously read data can be read again.
2789
2790Of course, characters that have been sent to a printer (or other
2791external device) cannot be ``snatched back'', and characters received
2792from eg.@: a serial device can be removed from internal program buffers,
2793but they cannot be ``pushed back'' into the serial pipeline, ready to
2794be received again. Similarly, the actual contents of files that have
2795been changed cannot be restored (at this time).
2796
2797However, within those constraints, you actually can ``rewind'' your
2798program to a previously saved point in time, and begin debugging it
2799again --- and you can change the course of events so as to debug a
2800different execution path this time.
2801
2802@cindex checkpoints and process id
2803Finally, there is one bit of internal program state that will be
2804different when you return to a checkpoint --- the program's process
2805id. Each checkpoint will have a unique process id (or @var{pid}),
2806and each will be different from the program's original @var{pid}.
2807If your program has saved a local copy of its process id, this could
2808potentially pose a problem.
2809
79a6e687 2810@subsection A Non-obvious Benefit of Using Checkpoints
5c95884b
MS
2811
2812On some systems such as @sc{gnu}/Linux, address space randomization
2813is performed on new processes for security reasons. This makes it
2814difficult or impossible to set a breakpoint, or watchpoint, on an
2815absolute address if you have to restart the program, since the
2816absolute location of a symbol will change from one execution to the
2817next.
2818
2819A checkpoint, however, is an @emph{identical} copy of a process.
2820Therefore if you create a checkpoint at (eg.@:) the start of main,
2821and simply return to that checkpoint instead of restarting the
2822process, you can avoid the effects of address randomization and
2823your symbols will all stay in the same place.
2824
6d2ebf8b 2825@node Stopping
c906108c
SS
2826@chapter Stopping and Continuing
2827
2828The principal purposes of using a debugger are so that you can stop your
2829program before it terminates; or so that, if your program runs into
2830trouble, you can investigate and find out why.
2831
7a292a7a
SS
2832Inside @value{GDBN}, your program may stop for any of several reasons,
2833such as a signal, a breakpoint, or reaching a new line after a
2834@value{GDBN} command such as @code{step}. You may then examine and
2835change variables, set new breakpoints or remove old ones, and then
2836continue execution. Usually, the messages shown by @value{GDBN} provide
2837ample explanation of the status of your program---but you can also
2838explicitly request this information at any time.
c906108c
SS
2839
2840@table @code
2841@kindex info program
2842@item info program
2843Display information about the status of your program: whether it is
7a292a7a 2844running or not, what process it is, and why it stopped.
c906108c
SS
2845@end table
2846
2847@menu
2848* Breakpoints:: Breakpoints, watchpoints, and catchpoints
2849* Continuing and Stepping:: Resuming execution
c906108c 2850* Signals:: Signals
c906108c 2851* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
2852@end menu
2853
6d2ebf8b 2854@node Breakpoints
79a6e687 2855@section Breakpoints, Watchpoints, and Catchpoints
c906108c
SS
2856
2857@cindex breakpoints
2858A @dfn{breakpoint} makes your program stop whenever a certain point in
2859the program is reached. For each breakpoint, you can add conditions to
2860control in finer detail whether your program stops. You can set
2861breakpoints with the @code{break} command and its variants (@pxref{Set
79a6e687 2862Breaks, ,Setting Breakpoints}), to specify the place where your program
c906108c
SS
2863should stop by line number, function name or exact address in the
2864program.
2865
09d4efe1
EZ
2866On some systems, you can set breakpoints in shared libraries before
2867the executable is run. There is a minor limitation on HP-UX systems:
2868you must wait until the executable is run in order to set breakpoints
2869in shared library routines that are not called directly by the program
2870(for example, routines that are arguments in a @code{pthread_create}
2871call).
c906108c
SS
2872
2873@cindex watchpoints
fd60e0df 2874@cindex data breakpoints
c906108c
SS
2875@cindex memory tracing
2876@cindex breakpoint on memory address
2877@cindex breakpoint on variable modification
2878A @dfn{watchpoint} is a special breakpoint that stops your program
fd60e0df 2879when the value of an expression changes. The expression may be a value
0ced0c34 2880of a variable, or it could involve values of one or more variables
fd60e0df
EZ
2881combined by operators, such as @samp{a + b}. This is sometimes called
2882@dfn{data breakpoints}. You must use a different command to set
79a6e687 2883watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside
fd60e0df
EZ
2884from that, you can manage a watchpoint like any other breakpoint: you
2885enable, disable, and delete both breakpoints and watchpoints using the
2886same commands.
c906108c
SS
2887
2888You can arrange to have values from your program displayed automatically
2889whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
79a6e687 2890Automatic Display}.
c906108c
SS
2891
2892@cindex catchpoints
2893@cindex breakpoint on events
2894A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 2895when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
2896exception or the loading of a library. As with watchpoints, you use a
2897different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
79a6e687 2898Catchpoints}), but aside from that, you can manage a catchpoint like any
c906108c 2899other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 2900@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
2901
2902@cindex breakpoint numbers
2903@cindex numbers for breakpoints
2904@value{GDBN} assigns a number to each breakpoint, watchpoint, or
2905catchpoint when you create it; these numbers are successive integers
2906starting with one. In many of the commands for controlling various
2907features of breakpoints you use the breakpoint number to say which
2908breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
2909@dfn{disabled}; if disabled, it has no effect on your program until you
2910enable it again.
2911
c5394b80
JM
2912@cindex breakpoint ranges
2913@cindex ranges of breakpoints
2914Some @value{GDBN} commands accept a range of breakpoints on which to
2915operate. A breakpoint range is either a single breakpoint number, like
2916@samp{5}, or two such numbers, in increasing order, separated by a
2917hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
d52fb0e9 2918all breakpoints in that range are operated on.
c5394b80 2919
c906108c
SS
2920@menu
2921* Set Breaks:: Setting breakpoints
2922* Set Watchpoints:: Setting watchpoints
2923* Set Catchpoints:: Setting catchpoints
2924* Delete Breaks:: Deleting breakpoints
2925* Disabling:: Disabling breakpoints
2926* Conditions:: Break conditions
2927* Break Commands:: Breakpoint command lists
d4f3574e 2928* Error in Breakpoints:: ``Cannot insert breakpoints''
79a6e687 2929* Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
c906108c
SS
2930@end menu
2931
6d2ebf8b 2932@node Set Breaks
79a6e687 2933@subsection Setting Breakpoints
c906108c 2934
5d161b24 2935@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
2936@c consider in particular declaration with/without initialization.
2937@c
2938@c FIXME 2 is there stuff on this already? break at fun start, already init?
2939
2940@kindex break
41afff9a
EZ
2941@kindex b @r{(@code{break})}
2942@vindex $bpnum@r{, convenience variable}
c906108c
SS
2943@cindex latest breakpoint
2944Breakpoints are set with the @code{break} command (abbreviated
5d161b24 2945@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 2946number of the breakpoint you've set most recently; see @ref{Convenience
79a6e687 2947Vars,, Convenience Variables}, for a discussion of what you can do with
c906108c
SS
2948convenience variables.
2949
c906108c 2950@table @code
2a25a5ba
EZ
2951@item break @var{location}
2952Set a breakpoint at the given @var{location}, which can specify a
2953function name, a line number, or an address of an instruction.
2954(@xref{Specify Location}, for a list of all the possible ways to
2955specify a @var{location}.) The breakpoint will stop your program just
2956before it executes any of the code in the specified @var{location}.
2957
c906108c 2958When using source languages that permit overloading of symbols, such as
2a25a5ba 2959C@t{++}, a function name may refer to more than one possible place to break.
6ba66d6a
JB
2960@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of
2961that situation.
c906108c 2962
c906108c
SS
2963@item break
2964When called without any arguments, @code{break} sets a breakpoint at
2965the next instruction to be executed in the selected stack frame
2966(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
2967innermost, this makes your program stop as soon as control
2968returns to that frame. This is similar to the effect of a
2969@code{finish} command in the frame inside the selected frame---except
2970that @code{finish} does not leave an active breakpoint. If you use
2971@code{break} without an argument in the innermost frame, @value{GDBN} stops
2972the next time it reaches the current location; this may be useful
2973inside loops.
2974
2975@value{GDBN} normally ignores breakpoints when it resumes execution, until at
2976least one instruction has been executed. If it did not do this, you
2977would be unable to proceed past a breakpoint without first disabling the
2978breakpoint. This rule applies whether or not the breakpoint already
2979existed when your program stopped.
2980
2981@item break @dots{} if @var{cond}
2982Set a breakpoint with condition @var{cond}; evaluate the expression
2983@var{cond} each time the breakpoint is reached, and stop only if the
2984value is nonzero---that is, if @var{cond} evaluates as true.
2985@samp{@dots{}} stands for one of the possible arguments described
2986above (or no argument) specifying where to break. @xref{Conditions,
79a6e687 2987,Break Conditions}, for more information on breakpoint conditions.
c906108c
SS
2988
2989@kindex tbreak
2990@item tbreak @var{args}
2991Set a breakpoint enabled only for one stop. @var{args} are the
2992same as for the @code{break} command, and the breakpoint is set in the same
2993way, but the breakpoint is automatically deleted after the first time your
79a6e687 2994program stops there. @xref{Disabling, ,Disabling Breakpoints}.
c906108c 2995
c906108c 2996@kindex hbreak
ba04e063 2997@cindex hardware breakpoints
c906108c 2998@item hbreak @var{args}
d4f3574e
SS
2999Set a hardware-assisted breakpoint. @var{args} are the same as for the
3000@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
3001breakpoint requires hardware support and some target hardware may not
3002have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
3003debugging, so you can set a breakpoint at an instruction without
3004changing the instruction. This can be used with the new trap-generation
09d4efe1 3005provided by SPARClite DSU and most x86-based targets. These targets
d4f3574e
SS
3006will generate traps when a program accesses some data or instruction
3007address that is assigned to the debug registers. However the hardware
3008breakpoint registers can take a limited number of breakpoints. For
3009example, on the DSU, only two data breakpoints can be set at a time, and
3010@value{GDBN} will reject this command if more than two are used. Delete
3011or disable unused hardware breakpoints before setting new ones
79a6e687
BW
3012(@pxref{Disabling, ,Disabling Breakpoints}).
3013@xref{Conditions, ,Break Conditions}.
9c16f35a
EZ
3014For remote targets, you can restrict the number of hardware
3015breakpoints @value{GDBN} will use, see @ref{set remote
3016hardware-breakpoint-limit}.
501eef12 3017
c906108c
SS
3018@kindex thbreak
3019@item thbreak @var{args}
3020Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
3021are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 3022the same way. However, like the @code{tbreak} command,
c906108c
SS
3023the breakpoint is automatically deleted after the
3024first time your program stops there. Also, like the @code{hbreak}
5d161b24 3025command, the breakpoint requires hardware support and some target hardware
79a6e687
BW
3026may not have this support. @xref{Disabling, ,Disabling Breakpoints}.
3027See also @ref{Conditions, ,Break Conditions}.
c906108c
SS
3028
3029@kindex rbreak
3030@cindex regular expression
c45da7e6
EZ
3031@cindex breakpoints in functions matching a regexp
3032@cindex set breakpoints in many functions
c906108c 3033@item rbreak @var{regex}
c906108c 3034Set breakpoints on all functions matching the regular expression
11cf8741
JM
3035@var{regex}. This command sets an unconditional breakpoint on all
3036matches, printing a list of all breakpoints it set. Once these
3037breakpoints are set, they are treated just like the breakpoints set with
3038the @code{break} command. You can delete them, disable them, or make
3039them conditional the same way as any other breakpoint.
3040
3041The syntax of the regular expression is the standard one used with tools
3042like @file{grep}. Note that this is different from the syntax used by
3043shells, so for instance @code{foo*} matches all functions that include
3044an @code{fo} followed by zero or more @code{o}s. There is an implicit
3045@code{.*} leading and trailing the regular expression you supply, so to
3046match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 3047
f7dc1244 3048@cindex non-member C@t{++} functions, set breakpoint in
b37052ae 3049When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
3050breakpoints on overloaded functions that are not members of any special
3051classes.
c906108c 3052
f7dc1244
EZ
3053@cindex set breakpoints on all functions
3054The @code{rbreak} command can be used to set breakpoints in
3055@strong{all} the functions in a program, like this:
3056
3057@smallexample
3058(@value{GDBP}) rbreak .
3059@end smallexample
3060
c906108c
SS
3061@kindex info breakpoints
3062@cindex @code{$_} and @code{info breakpoints}
3063@item info breakpoints @r{[}@var{n}@r{]}
3064@itemx info break @r{[}@var{n}@r{]}
3065@itemx info watchpoints @r{[}@var{n}@r{]}
3066Print a table of all breakpoints, watchpoints, and catchpoints set and
45ac1734
EZ
3067not deleted. Optional argument @var{n} means print information only
3068about the specified breakpoint (or watchpoint or catchpoint). For
3069each breakpoint, following columns are printed:
c906108c
SS
3070
3071@table @emph
3072@item Breakpoint Numbers
3073@item Type
3074Breakpoint, watchpoint, or catchpoint.
3075@item Disposition
3076Whether the breakpoint is marked to be disabled or deleted when hit.
3077@item Enabled or Disabled
3078Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
b3db7447 3079that are not enabled.
c906108c 3080@item Address
fe6fbf8b 3081Where the breakpoint is in your program, as a memory address. For a
b3db7447
NR
3082pending breakpoint whose address is not yet known, this field will
3083contain @samp{<PENDING>}. Such breakpoint won't fire until a shared
3084library that has the symbol or line referred by breakpoint is loaded.
3085See below for details. A breakpoint with several locations will
3b784c4f 3086have @samp{<MULTIPLE>} in this field---see below for details.
c906108c
SS
3087@item What
3088Where the breakpoint is in the source for your program, as a file and
2650777c
JJ
3089line number. For a pending breakpoint, the original string passed to
3090the breakpoint command will be listed as it cannot be resolved until
3091the appropriate shared library is loaded in the future.
c906108c
SS
3092@end table
3093
3094@noindent
3095If a breakpoint is conditional, @code{info break} shows the condition on
3096the line following the affected breakpoint; breakpoint commands, if any,
2650777c
JJ
3097are listed after that. A pending breakpoint is allowed to have a condition
3098specified for it. The condition is not parsed for validity until a shared
3099library is loaded that allows the pending breakpoint to resolve to a
3100valid location.
c906108c
SS
3101
3102@noindent
3103@code{info break} with a breakpoint
3104number @var{n} as argument lists only that breakpoint. The
3105convenience variable @code{$_} and the default examining-address for
3106the @code{x} command are set to the address of the last breakpoint
79a6e687 3107listed (@pxref{Memory, ,Examining Memory}).
c906108c
SS
3108
3109@noindent
3110@code{info break} displays a count of the number of times the breakpoint
3111has been hit. This is especially useful in conjunction with the
3112@code{ignore} command. You can ignore a large number of breakpoint
3113hits, look at the breakpoint info to see how many times the breakpoint
3114was hit, and then run again, ignoring one less than that number. This
3115will get you quickly to the last hit of that breakpoint.
3116@end table
3117
3118@value{GDBN} allows you to set any number of breakpoints at the same place in
3119your program. There is nothing silly or meaningless about this. When
3120the breakpoints are conditional, this is even useful
79a6e687 3121(@pxref{Conditions, ,Break Conditions}).
c906108c 3122
2e9132cc
EZ
3123@cindex multiple locations, breakpoints
3124@cindex breakpoints, multiple locations
fcda367b 3125It is possible that a breakpoint corresponds to several locations
fe6fbf8b
VP
3126in your program. Examples of this situation are:
3127
3128@itemize @bullet
fe6fbf8b
VP
3129@item
3130For a C@t{++} constructor, the @value{NGCC} compiler generates several
3131instances of the function body, used in different cases.
3132
3133@item
3134For a C@t{++} template function, a given line in the function can
3135correspond to any number of instantiations.
3136
3137@item
3138For an inlined function, a given source line can correspond to
3139several places where that function is inlined.
fe6fbf8b
VP
3140@end itemize
3141
3142In all those cases, @value{GDBN} will insert a breakpoint at all
2e9132cc
EZ
3143the relevant locations@footnote{
3144As of this writing, multiple-location breakpoints work only if there's
3145line number information for all the locations. This means that they
3146will generally not work in system libraries, unless you have debug
3147info with line numbers for them.}.
fe6fbf8b 3148
3b784c4f
EZ
3149A breakpoint with multiple locations is displayed in the breakpoint
3150table using several rows---one header row, followed by one row for
3151each breakpoint location. The header row has @samp{<MULTIPLE>} in the
3152address column. The rows for individual locations contain the actual
3153addresses for locations, and show the functions to which those
3154locations belong. The number column for a location is of the form
fe6fbf8b
VP
3155@var{breakpoint-number}.@var{location-number}.
3156
3157For example:
3b784c4f 3158
fe6fbf8b
VP
3159@smallexample
3160Num Type Disp Enb Address What
31611 breakpoint keep y <MULTIPLE>
3162 stop only if i==1
3163 breakpoint already hit 1 time
31641.1 y 0x080486a2 in void foo<int>() at t.cc:8
31651.2 y 0x080486ca in void foo<double>() at t.cc:8
3166@end smallexample
3167
3168Each location can be individually enabled or disabled by passing
3169@var{breakpoint-number}.@var{location-number} as argument to the
3b784c4f
EZ
3170@code{enable} and @code{disable} commands. Note that you cannot
3171delete the individual locations from the list, you can only delete the
16bfc218 3172entire list of locations that belong to their parent breakpoint (with
3b784c4f
EZ
3173the @kbd{delete @var{num}} command, where @var{num} is the number of
3174the parent breakpoint, 1 in the above example). Disabling or enabling
3175the parent breakpoint (@pxref{Disabling}) affects all of the locations
3176that belong to that breakpoint.
fe6fbf8b 3177
2650777c 3178@cindex pending breakpoints
fe6fbf8b 3179It's quite common to have a breakpoint inside a shared library.
3b784c4f 3180Shared libraries can be loaded and unloaded explicitly,
fe6fbf8b
VP
3181and possibly repeatedly, as the program is executed. To support
3182this use case, @value{GDBN} updates breakpoint locations whenever
3183any shared library is loaded or unloaded. Typically, you would
fcda367b 3184set a breakpoint in a shared library at the beginning of your
fe6fbf8b
VP
3185debugging session, when the library is not loaded, and when the
3186symbols from the library are not available. When you try to set
3187breakpoint, @value{GDBN} will ask you if you want to set
3b784c4f 3188a so called @dfn{pending breakpoint}---breakpoint whose address
fe6fbf8b
VP
3189is not yet resolved.
3190
3191After the program is run, whenever a new shared library is loaded,
3192@value{GDBN} reevaluates all the breakpoints. When a newly loaded
3193shared library contains the symbol or line referred to by some
3194pending breakpoint, that breakpoint is resolved and becomes an
3195ordinary breakpoint. When a library is unloaded, all breakpoints
3196that refer to its symbols or source lines become pending again.
3197
3198This logic works for breakpoints with multiple locations, too. For
3199example, if you have a breakpoint in a C@t{++} template function, and
3200a newly loaded shared library has an instantiation of that template,
3201a new location is added to the list of locations for the breakpoint.
3202
3203Except for having unresolved address, pending breakpoints do not
3204differ from regular breakpoints. You can set conditions or commands,
3205enable and disable them and perform other breakpoint operations.
3206
3207@value{GDBN} provides some additional commands for controlling what
3208happens when the @samp{break} command cannot resolve breakpoint
3209address specification to an address:
dd79a6cf
JJ
3210
3211@kindex set breakpoint pending
3212@kindex show breakpoint pending
3213@table @code
3214@item set breakpoint pending auto
3215This is the default behavior. When @value{GDBN} cannot find the breakpoint
3216location, it queries you whether a pending breakpoint should be created.
3217
3218@item set breakpoint pending on
3219This indicates that an unrecognized breakpoint location should automatically
3220result in a pending breakpoint being created.
3221
3222@item set breakpoint pending off
3223This indicates that pending breakpoints are not to be created. Any
3224unrecognized breakpoint location results in an error. This setting does
3225not affect any pending breakpoints previously created.
3226
3227@item show breakpoint pending
3228Show the current behavior setting for creating pending breakpoints.
3229@end table
2650777c 3230
fe6fbf8b
VP
3231The settings above only affect the @code{break} command and its
3232variants. Once breakpoint is set, it will be automatically updated
3233as shared libraries are loaded and unloaded.
2650777c 3234
765dc015
VP
3235@cindex automatic hardware breakpoints
3236For some targets, @value{GDBN} can automatically decide if hardware or
3237software breakpoints should be used, depending on whether the
3238breakpoint address is read-only or read-write. This applies to
3239breakpoints set with the @code{break} command as well as to internal
3240breakpoints set by commands like @code{next} and @code{finish}. For
fcda367b 3241breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware
765dc015
VP
3242breakpoints.
3243
3244You can control this automatic behaviour with the following commands::
3245
3246@kindex set breakpoint auto-hw
3247@kindex show breakpoint auto-hw
3248@table @code
3249@item set breakpoint auto-hw on
3250This is the default behavior. When @value{GDBN} sets a breakpoint, it
3251will try to use the target memory map to decide if software or hardware
3252breakpoint must be used.
3253
3254@item set breakpoint auto-hw off
3255This indicates @value{GDBN} should not automatically select breakpoint
3256type. If the target provides a memory map, @value{GDBN} will warn when
3257trying to set software breakpoint at a read-only address.
3258@end table
3259
74960c60
VP
3260@value{GDBN} normally implements breakpoints by replacing the program code
3261at the breakpoint address with a special instruction, which, when
3262executed, given control to the debugger. By default, the program
3263code is so modified only when the program is resumed. As soon as
3264the program stops, @value{GDBN} restores the original instructions. This
3265behaviour guards against leaving breakpoints inserted in the
3266target should gdb abrubptly disconnect. However, with slow remote
3267targets, inserting and removing breakpoint can reduce the performance.
3268This behavior can be controlled with the following commands::
3269
3270@kindex set breakpoint always-inserted
3271@kindex show breakpoint always-inserted
3272@table @code
3273@item set breakpoint always-inserted off
3274This is the default behaviour. All breakpoints, including newly added
3275by the user, are inserted in the target only when the target is
3276resumed. All breakpoints are removed from the target when it stops.
3277
3278@item set breakpoint always-inserted on
3279Causes all breakpoints to be inserted in the target at all times. If
3280the user adds a new breakpoint, or changes an existing breakpoint, the
3281breakpoints in the target are updated immediately. A breakpoint is
3282removed from the target only when breakpoint itself is removed.
3283@end table
765dc015 3284
c906108c
SS
3285@cindex negative breakpoint numbers
3286@cindex internal @value{GDBN} breakpoints
eb12ee30
AC
3287@value{GDBN} itself sometimes sets breakpoints in your program for
3288special purposes, such as proper handling of @code{longjmp} (in C
3289programs). These internal breakpoints are assigned negative numbers,
3290starting with @code{-1}; @samp{info breakpoints} does not display them.
c906108c 3291You can see these breakpoints with the @value{GDBN} maintenance command
eb12ee30 3292@samp{maint info breakpoints} (@pxref{maint info breakpoints}).
c906108c
SS
3293
3294
6d2ebf8b 3295@node Set Watchpoints
79a6e687 3296@subsection Setting Watchpoints
c906108c
SS
3297
3298@cindex setting watchpoints
c906108c
SS
3299You can use a watchpoint to stop execution whenever the value of an
3300expression changes, without having to predict a particular place where
fd60e0df
EZ
3301this may happen. (This is sometimes called a @dfn{data breakpoint}.)
3302The expression may be as simple as the value of a single variable, or
3303as complex as many variables combined by operators. Examples include:
3304
3305@itemize @bullet
3306@item
3307A reference to the value of a single variable.
3308
3309@item
3310An address cast to an appropriate data type. For example,
3311@samp{*(int *)0x12345678} will watch a 4-byte region at the specified
3312address (assuming an @code{int} occupies 4 bytes).
3313
3314@item
3315An arbitrarily complex expression, such as @samp{a*b + c/d}. The
3316expression can use any operators valid in the program's native
3317language (@pxref{Languages}).
3318@end itemize
c906108c 3319
fa4727a6
DJ
3320You can set a watchpoint on an expression even if the expression can
3321not be evaluated yet. For instance, you can set a watchpoint on
3322@samp{*global_ptr} before @samp{global_ptr} is initialized.
3323@value{GDBN} will stop when your program sets @samp{global_ptr} and
3324the expression produces a valid value. If the expression becomes
3325valid in some other way than changing a variable (e.g.@: if the memory
3326pointed to by @samp{*global_ptr} becomes readable as the result of a
3327@code{malloc} call), @value{GDBN} may not stop until the next time
3328the expression changes.
3329
82f2d802
EZ
3330@cindex software watchpoints
3331@cindex hardware watchpoints
c906108c 3332Depending on your system, watchpoints may be implemented in software or
2df3850c 3333hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
3334program and testing the variable's value each time, which is hundreds of
3335times slower than normal execution. (But this may still be worth it, to
3336catch errors where you have no clue what part of your program is the
3337culprit.)
3338
37e4754d 3339On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other
82f2d802
EZ
3340x86-based targets, @value{GDBN} includes support for hardware
3341watchpoints, which do not slow down the running of your program.
c906108c
SS
3342
3343@table @code
3344@kindex watch
d8b2a693 3345@item watch @var{expr} @r{[}thread @var{threadnum}@r{]}
fd60e0df
EZ
3346Set a watchpoint for an expression. @value{GDBN} will break when the
3347expression @var{expr} is written into by the program and its value
3348changes. The simplest (and the most popular) use of this command is
3349to watch the value of a single variable:
3350
3351@smallexample
3352(@value{GDBP}) watch foo
3353@end smallexample
c906108c 3354
d8b2a693
JB
3355If the command includes a @code{@r{[}thread @var{threadnum}@r{]}}
3356clause, @value{GDBN} breaks only when the thread identified by
3357@var{threadnum} changes the value of @var{expr}. If any other threads
3358change the value of @var{expr}, @value{GDBN} will not break. Note
3359that watchpoints restricted to a single thread in this way only work
3360with Hardware Watchpoints.
3361
c906108c 3362@kindex rwatch
d8b2a693 3363@item rwatch @var{expr} @r{[}thread @var{threadnum}@r{]}
09d4efe1
EZ
3364Set a watchpoint that will break when the value of @var{expr} is read
3365by the program.
c906108c
SS
3366
3367@kindex awatch
d8b2a693 3368@item awatch @var{expr} @r{[}thread @var{threadnum}@r{]}
09d4efe1
EZ
3369Set a watchpoint that will break when @var{expr} is either read from
3370or written into by the program.
c906108c 3371
45ac1734 3372@kindex info watchpoints @r{[}@var{n}@r{]}
c906108c
SS
3373@item info watchpoints
3374This command prints a list of watchpoints, breakpoints, and catchpoints;
09d4efe1 3375it is the same as @code{info break} (@pxref{Set Breaks}).
c906108c
SS
3376@end table
3377
3378@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
3379watchpoints execute very quickly, and the debugger reports a change in
3380value at the exact instruction where the change occurs. If @value{GDBN}
3381cannot set a hardware watchpoint, it sets a software watchpoint, which
3382executes more slowly and reports the change in value at the next
82f2d802
EZ
3383@emph{statement}, not the instruction, after the change occurs.
3384
82f2d802
EZ
3385@cindex use only software watchpoints
3386You can force @value{GDBN} to use only software watchpoints with the
3387@kbd{set can-use-hw-watchpoints 0} command. With this variable set to
3388zero, @value{GDBN} will never try to use hardware watchpoints, even if
3389the underlying system supports them. (Note that hardware-assisted
3390watchpoints that were set @emph{before} setting
3391@code{can-use-hw-watchpoints} to zero will still use the hardware
d3e8051b 3392mechanism of watching expression values.)
c906108c 3393
9c16f35a
EZ
3394@table @code
3395@item set can-use-hw-watchpoints
3396@kindex set can-use-hw-watchpoints
3397Set whether or not to use hardware watchpoints.
3398
3399@item show can-use-hw-watchpoints
3400@kindex show can-use-hw-watchpoints
3401Show the current mode of using hardware watchpoints.
3402@end table
3403
3404For remote targets, you can restrict the number of hardware
3405watchpoints @value{GDBN} will use, see @ref{set remote
3406hardware-breakpoint-limit}.
3407
c906108c
SS
3408When you issue the @code{watch} command, @value{GDBN} reports
3409
474c8240 3410@smallexample
c906108c 3411Hardware watchpoint @var{num}: @var{expr}
474c8240 3412@end smallexample
c906108c
SS
3413
3414@noindent
3415if it was able to set a hardware watchpoint.
3416
7be570e7
JM
3417Currently, the @code{awatch} and @code{rwatch} commands can only set
3418hardware watchpoints, because accesses to data that don't change the
3419value of the watched expression cannot be detected without examining
3420every instruction as it is being executed, and @value{GDBN} does not do
3421that currently. If @value{GDBN} finds that it is unable to set a
3422hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
3423will print a message like this:
3424
3425@smallexample
3426Expression cannot be implemented with read/access watchpoint.
3427@end smallexample
3428
3429Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
3430data type of the watched expression is wider than what a hardware
3431watchpoint on the target machine can handle. For example, some systems
3432can only watch regions that are up to 4 bytes wide; on such systems you
3433cannot set hardware watchpoints for an expression that yields a
3434double-precision floating-point number (which is typically 8 bytes
3435wide). As a work-around, it might be possible to break the large region
3436into a series of smaller ones and watch them with separate watchpoints.
3437
3438If you set too many hardware watchpoints, @value{GDBN} might be unable
3439to insert all of them when you resume the execution of your program.
3440Since the precise number of active watchpoints is unknown until such
3441time as the program is about to be resumed, @value{GDBN} might not be
3442able to warn you about this when you set the watchpoints, and the
3443warning will be printed only when the program is resumed:
3444
3445@smallexample
3446Hardware watchpoint @var{num}: Could not insert watchpoint
3447@end smallexample
3448
3449@noindent
3450If this happens, delete or disable some of the watchpoints.
3451
fd60e0df
EZ
3452Watching complex expressions that reference many variables can also
3453exhaust the resources available for hardware-assisted watchpoints.
3454That's because @value{GDBN} needs to watch every variable in the
3455expression with separately allocated resources.
3456
c906108c 3457If you call a function interactively using @code{print} or @code{call},
2df3850c 3458any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
3459kind of breakpoint or the call completes.
3460
7be570e7
JM
3461@value{GDBN} automatically deletes watchpoints that watch local
3462(automatic) variables, or expressions that involve such variables, when
3463they go out of scope, that is, when the execution leaves the block in
3464which these variables were defined. In particular, when the program
3465being debugged terminates, @emph{all} local variables go out of scope,
3466and so only watchpoints that watch global variables remain set. If you
3467rerun the program, you will need to set all such watchpoints again. One
3468way of doing that would be to set a code breakpoint at the entry to the
3469@code{main} function and when it breaks, set all the watchpoints.
3470
c906108c
SS
3471@cindex watchpoints and threads
3472@cindex threads and watchpoints
d983da9c
DJ
3473In multi-threaded programs, watchpoints will detect changes to the
3474watched expression from every thread.
3475
3476@quotation
3477@emph{Warning:} In multi-threaded programs, software watchpoints
53a5351d
JM
3478have only limited usefulness. If @value{GDBN} creates a software
3479watchpoint, it can only watch the value of an expression @emph{in a
3480single thread}. If you are confident that the expression can only
3481change due to the current thread's activity (and if you are also
3482confident that no other thread can become current), then you can use
3483software watchpoints as usual. However, @value{GDBN} may not notice
3484when a non-current thread's activity changes the expression. (Hardware
3485watchpoints, in contrast, watch an expression in all threads.)
c906108c 3486@end quotation
c906108c 3487
501eef12
AC
3488@xref{set remote hardware-watchpoint-limit}.
3489
6d2ebf8b 3490@node Set Catchpoints
79a6e687 3491@subsection Setting Catchpoints
d4f3574e 3492@cindex catchpoints, setting
c906108c
SS
3493@cindex exception handlers
3494@cindex event handling
3495
3496You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 3497kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
3498shared library. Use the @code{catch} command to set a catchpoint.
3499
3500@table @code
3501@kindex catch
3502@item catch @var{event}
3503Stop when @var{event} occurs. @var{event} can be any of the following:
3504@table @code
3505@item throw
4644b6e3 3506@cindex stop on C@t{++} exceptions
b37052ae 3507The throwing of a C@t{++} exception.
c906108c
SS
3508
3509@item catch
b37052ae 3510The catching of a C@t{++} exception.
c906108c 3511
8936fcda
JB
3512@item exception
3513@cindex Ada exception catching
3514@cindex catch Ada exceptions
3515An Ada exception being raised. If an exception name is specified
3516at the end of the command (eg @code{catch exception Program_Error}),
3517the debugger will stop only when this specific exception is raised.
3518Otherwise, the debugger stops execution when any Ada exception is raised.
3519
3520@item exception unhandled
3521An exception that was raised but is not handled by the program.
3522
3523@item assert
3524A failed Ada assertion.
3525
c906108c 3526@item exec
4644b6e3 3527@cindex break on fork/exec
5ee187d7
DJ
3528A call to @code{exec}. This is currently only available for HP-UX
3529and @sc{gnu}/Linux.
c906108c
SS
3530
3531@item fork
5ee187d7
DJ
3532A call to @code{fork}. This is currently only available for HP-UX
3533and @sc{gnu}/Linux.
c906108c
SS
3534
3535@item vfork
5ee187d7
DJ
3536A call to @code{vfork}. This is currently only available for HP-UX
3537and @sc{gnu}/Linux.
c906108c
SS
3538
3539@item load
3540@itemx load @var{libname}
4644b6e3 3541@cindex break on load/unload of shared library
c906108c
SS
3542The dynamic loading of any shared library, or the loading of the library
3543@var{libname}. This is currently only available for HP-UX.
3544
3545@item unload
3546@itemx unload @var{libname}
c906108c
SS
3547The unloading of any dynamically loaded shared library, or the unloading
3548of the library @var{libname}. This is currently only available for HP-UX.
3549@end table
3550
3551@item tcatch @var{event}
3552Set a catchpoint that is enabled only for one stop. The catchpoint is
3553automatically deleted after the first time the event is caught.
3554
3555@end table
3556
3557Use the @code{info break} command to list the current catchpoints.
3558
b37052ae 3559There are currently some limitations to C@t{++} exception handling
c906108c
SS
3560(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
3561
3562@itemize @bullet
3563@item
3564If you call a function interactively, @value{GDBN} normally returns
3565control to you when the function has finished executing. If the call
3566raises an exception, however, the call may bypass the mechanism that
3567returns control to you and cause your program either to abort or to
3568simply continue running until it hits a breakpoint, catches a signal
3569that @value{GDBN} is listening for, or exits. This is the case even if
3570you set a catchpoint for the exception; catchpoints on exceptions are
3571disabled within interactive calls.
3572
3573@item
3574You cannot raise an exception interactively.
3575
3576@item
3577You cannot install an exception handler interactively.
3578@end itemize
3579
3580@cindex raise exceptions
3581Sometimes @code{catch} is not the best way to debug exception handling:
3582if you need to know exactly where an exception is raised, it is better to
3583stop @emph{before} the exception handler is called, since that way you
3584can see the stack before any unwinding takes place. If you set a
3585breakpoint in an exception handler instead, it may not be easy to find
3586out where the exception was raised.
3587
3588To stop just before an exception handler is called, you need some
b37052ae 3589knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
3590raised by calling a library function named @code{__raise_exception}
3591which has the following ANSI C interface:
3592
474c8240 3593@smallexample
c906108c 3594 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
3595 @var{id} is the exception identifier. */
3596 void __raise_exception (void **addr, void *id);
474c8240 3597@end smallexample
c906108c
SS
3598
3599@noindent
3600To make the debugger catch all exceptions before any stack
3601unwinding takes place, set a breakpoint on @code{__raise_exception}
79a6e687 3602(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Exceptions}).
c906108c 3603
79a6e687 3604With a conditional breakpoint (@pxref{Conditions, ,Break Conditions})
c906108c
SS
3605that depends on the value of @var{id}, you can stop your program when
3606a specific exception is raised. You can use multiple conditional
3607breakpoints to stop your program when any of a number of exceptions are
3608raised.
3609
3610
6d2ebf8b 3611@node Delete Breaks
79a6e687 3612@subsection Deleting Breakpoints
c906108c
SS
3613
3614@cindex clearing breakpoints, watchpoints, catchpoints
3615@cindex deleting breakpoints, watchpoints, catchpoints
3616It is often necessary to eliminate a breakpoint, watchpoint, or
3617catchpoint once it has done its job and you no longer want your program
3618to stop there. This is called @dfn{deleting} the breakpoint. A
3619breakpoint that has been deleted no longer exists; it is forgotten.
3620
3621With the @code{clear} command you can delete breakpoints according to
3622where they are in your program. With the @code{delete} command you can
3623delete individual breakpoints, watchpoints, or catchpoints by specifying
3624their breakpoint numbers.
3625
3626It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
3627automatically ignores breakpoints on the first instruction to be executed
3628when you continue execution without changing the execution address.
3629
3630@table @code
3631@kindex clear
3632@item clear
3633Delete any breakpoints at the next instruction to be executed in the
79a6e687 3634selected stack frame (@pxref{Selection, ,Selecting a Frame}). When
c906108c
SS
3635the innermost frame is selected, this is a good way to delete a
3636breakpoint where your program just stopped.
3637
2a25a5ba
EZ
3638@item clear @var{location}
3639Delete any breakpoints set at the specified @var{location}.
3640@xref{Specify Location}, for the various forms of @var{location}; the
3641most useful ones are listed below:
3642
3643@table @code
c906108c
SS
3644@item clear @var{function}
3645@itemx clear @var{filename}:@var{function}
09d4efe1 3646Delete any breakpoints set at entry to the named @var{function}.
c906108c
SS
3647
3648@item clear @var{linenum}
3649@itemx clear @var{filename}:@var{linenum}
09d4efe1
EZ
3650Delete any breakpoints set at or within the code of the specified
3651@var{linenum} of the specified @var{filename}.
2a25a5ba 3652@end table
c906108c
SS
3653
3654@cindex delete breakpoints
3655@kindex delete
41afff9a 3656@kindex d @r{(@code{delete})}
c5394b80
JM
3657@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
3658Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
3659ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
3660breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
3661confirm off}). You can abbreviate this command as @code{d}.
3662@end table
3663
6d2ebf8b 3664@node Disabling
79a6e687 3665@subsection Disabling Breakpoints
c906108c 3666
4644b6e3 3667@cindex enable/disable a breakpoint
c906108c
SS
3668Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
3669prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
3670it had been deleted, but remembers the information on the breakpoint so
3671that you can @dfn{enable} it again later.
3672
3673You disable and enable breakpoints, watchpoints, and catchpoints with
3674the @code{enable} and @code{disable} commands, optionally specifying one
3675or more breakpoint numbers as arguments. Use @code{info break} or
3676@code{info watch} to print a list of breakpoints, watchpoints, and
3677catchpoints if you do not know which numbers to use.
3678
3b784c4f
EZ
3679Disabling and enabling a breakpoint that has multiple locations
3680affects all of its locations.
3681
c906108c
SS
3682A breakpoint, watchpoint, or catchpoint can have any of four different
3683states of enablement:
3684
3685@itemize @bullet
3686@item
3687Enabled. The breakpoint stops your program. A breakpoint set
3688with the @code{break} command starts out in this state.
3689@item
3690Disabled. The breakpoint has no effect on your program.
3691@item
3692Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 3693disabled.
c906108c
SS
3694@item
3695Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
3696immediately after it does so it is deleted permanently. A breakpoint
3697set with the @code{tbreak} command starts out in this state.
c906108c
SS
3698@end itemize
3699
3700You can use the following commands to enable or disable breakpoints,
3701watchpoints, and catchpoints:
3702
3703@table @code
c906108c 3704@kindex disable
41afff9a 3705@kindex dis @r{(@code{disable})}
c5394b80 3706@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
3707Disable the specified breakpoints---or all breakpoints, if none are
3708listed. A disabled breakpoint has no effect but is not forgotten. All
3709options such as ignore-counts, conditions and commands are remembered in
3710case the breakpoint is enabled again later. You may abbreviate
3711@code{disable} as @code{dis}.
3712
c906108c 3713@kindex enable
c5394b80 3714@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
3715Enable the specified breakpoints (or all defined breakpoints). They
3716become effective once again in stopping your program.
3717
c5394b80 3718@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
3719Enable the specified breakpoints temporarily. @value{GDBN} disables any
3720of these breakpoints immediately after stopping your program.
3721
c5394b80 3722@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
3723Enable the specified breakpoints to work once, then die. @value{GDBN}
3724deletes any of these breakpoints as soon as your program stops there.
09d4efe1 3725Breakpoints set by the @code{tbreak} command start out in this state.
c906108c
SS
3726@end table
3727
d4f3574e
SS
3728@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
3729@c confusing: tbreak is also initially enabled.
c906108c 3730Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
79a6e687 3731,Setting Breakpoints}), breakpoints that you set are initially enabled;
c906108c
SS
3732subsequently, they become disabled or enabled only when you use one of
3733the commands above. (The command @code{until} can set and delete a
3734breakpoint of its own, but it does not change the state of your other
3735breakpoints; see @ref{Continuing and Stepping, ,Continuing and
79a6e687 3736Stepping}.)
c906108c 3737
6d2ebf8b 3738@node Conditions
79a6e687 3739@subsection Break Conditions
c906108c
SS
3740@cindex conditional breakpoints
3741@cindex breakpoint conditions
3742
3743@c FIXME what is scope of break condition expr? Context where wanted?
5d161b24 3744@c in particular for a watchpoint?
c906108c
SS
3745The simplest sort of breakpoint breaks every time your program reaches a
3746specified place. You can also specify a @dfn{condition} for a
3747breakpoint. A condition is just a Boolean expression in your
3748programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
3749a condition evaluates the expression each time your program reaches it,
3750and your program stops only if the condition is @emph{true}.
3751
3752This is the converse of using assertions for program validation; in that
3753situation, you want to stop when the assertion is violated---that is,
3754when the condition is false. In C, if you want to test an assertion expressed
3755by the condition @var{assert}, you should set the condition
3756@samp{! @var{assert}} on the appropriate breakpoint.
3757
3758Conditions are also accepted for watchpoints; you may not need them,
3759since a watchpoint is inspecting the value of an expression anyhow---but
3760it might be simpler, say, to just set a watchpoint on a variable name,
3761and specify a condition that tests whether the new value is an interesting
3762one.
3763
3764Break conditions can have side effects, and may even call functions in
3765your program. This can be useful, for example, to activate functions
3766that log program progress, or to use your own print functions to
3767format special data structures. The effects are completely predictable
3768unless there is another enabled breakpoint at the same address. (In
3769that case, @value{GDBN} might see the other breakpoint first and stop your
3770program without checking the condition of this one.) Note that
d4f3574e
SS
3771breakpoint commands are usually more convenient and flexible than break
3772conditions for the
c906108c 3773purpose of performing side effects when a breakpoint is reached
79a6e687 3774(@pxref{Break Commands, ,Breakpoint Command Lists}).
c906108c
SS
3775
3776Break conditions can be specified when a breakpoint is set, by using
3777@samp{if} in the arguments to the @code{break} command. @xref{Set
79a6e687 3778Breaks, ,Setting Breakpoints}. They can also be changed at any time
c906108c 3779with the @code{condition} command.
53a5351d 3780
c906108c
SS
3781You can also use the @code{if} keyword with the @code{watch} command.
3782The @code{catch} command does not recognize the @code{if} keyword;
3783@code{condition} is the only way to impose a further condition on a
3784catchpoint.
c906108c
SS
3785
3786@table @code
3787@kindex condition
3788@item condition @var{bnum} @var{expression}
3789Specify @var{expression} as the break condition for breakpoint,
3790watchpoint, or catchpoint number @var{bnum}. After you set a condition,
3791breakpoint @var{bnum} stops your program only if the value of
3792@var{expression} is true (nonzero, in C). When you use
3793@code{condition}, @value{GDBN} checks @var{expression} immediately for
3794syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
3795referents in the context of your breakpoint. If @var{expression} uses
3796symbols not referenced in the context of the breakpoint, @value{GDBN}
3797prints an error message:
3798
474c8240 3799@smallexample
d4f3574e 3800No symbol "foo" in current context.
474c8240 3801@end smallexample
d4f3574e
SS
3802
3803@noindent
c906108c
SS
3804@value{GDBN} does
3805not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
3806command (or a command that sets a breakpoint with a condition, like
3807@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
3808
3809@item condition @var{bnum}
3810Remove the condition from breakpoint number @var{bnum}. It becomes
3811an ordinary unconditional breakpoint.
3812@end table
3813
3814@cindex ignore count (of breakpoint)
3815A special case of a breakpoint condition is to stop only when the
3816breakpoint has been reached a certain number of times. This is so
3817useful that there is a special way to do it, using the @dfn{ignore
3818count} of the breakpoint. Every breakpoint has an ignore count, which
3819is an integer. Most of the time, the ignore count is zero, and
3820therefore has no effect. But if your program reaches a breakpoint whose
3821ignore count is positive, then instead of stopping, it just decrements
3822the ignore count by one and continues. As a result, if the ignore count
3823value is @var{n}, the breakpoint does not stop the next @var{n} times
3824your program reaches it.
3825
3826@table @code
3827@kindex ignore
3828@item ignore @var{bnum} @var{count}
3829Set the ignore count of breakpoint number @var{bnum} to @var{count}.
3830The next @var{count} times the breakpoint is reached, your program's
3831execution does not stop; other than to decrement the ignore count, @value{GDBN}
3832takes no action.
3833
3834To make the breakpoint stop the next time it is reached, specify
3835a count of zero.
3836
3837When you use @code{continue} to resume execution of your program from a
3838breakpoint, you can specify an ignore count directly as an argument to
3839@code{continue}, rather than using @code{ignore}. @xref{Continuing and
79a6e687 3840Stepping,,Continuing and Stepping}.
c906108c
SS
3841
3842If a breakpoint has a positive ignore count and a condition, the
3843condition is not checked. Once the ignore count reaches zero,
3844@value{GDBN} resumes checking the condition.
3845
3846You could achieve the effect of the ignore count with a condition such
3847as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
3848is decremented each time. @xref{Convenience Vars, ,Convenience
79a6e687 3849Variables}.
c906108c
SS
3850@end table
3851
3852Ignore counts apply to breakpoints, watchpoints, and catchpoints.
3853
3854
6d2ebf8b 3855@node Break Commands
79a6e687 3856@subsection Breakpoint Command Lists
c906108c
SS
3857
3858@cindex breakpoint commands
3859You can give any breakpoint (or watchpoint or catchpoint) a series of
3860commands to execute when your program stops due to that breakpoint. For
3861example, you might want to print the values of certain expressions, or
3862enable other breakpoints.
3863
3864@table @code
3865@kindex commands
ca91424e 3866@kindex end@r{ (breakpoint commands)}
c906108c
SS
3867@item commands @r{[}@var{bnum}@r{]}
3868@itemx @dots{} @var{command-list} @dots{}
3869@itemx end
3870Specify a list of commands for breakpoint number @var{bnum}. The commands
3871themselves appear on the following lines. Type a line containing just
3872@code{end} to terminate the commands.
3873
3874To remove all commands from a breakpoint, type @code{commands} and
3875follow it immediately with @code{end}; that is, give no commands.
3876
3877With no @var{bnum} argument, @code{commands} refers to the last
3878breakpoint, watchpoint, or catchpoint set (not to the breakpoint most
3879recently encountered).
3880@end table
3881
3882Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
3883disabled within a @var{command-list}.
3884
3885You can use breakpoint commands to start your program up again. Simply
3886use the @code{continue} command, or @code{step}, or any other command
3887that resumes execution.
3888
3889Any other commands in the command list, after a command that resumes
3890execution, are ignored. This is because any time you resume execution
3891(even with a simple @code{next} or @code{step}), you may encounter
3892another breakpoint---which could have its own command list, leading to
3893ambiguities about which list to execute.
3894
3895@kindex silent
3896If the first command you specify in a command list is @code{silent}, the
3897usual message about stopping at a breakpoint is not printed. This may
3898be desirable for breakpoints that are to print a specific message and
3899then continue. If none of the remaining commands print anything, you
3900see no sign that the breakpoint was reached. @code{silent} is
3901meaningful only at the beginning of a breakpoint command list.
3902
3903The commands @code{echo}, @code{output}, and @code{printf} allow you to
3904print precisely controlled output, and are often useful in silent
79a6e687 3905breakpoints. @xref{Output, ,Commands for Controlled Output}.
c906108c
SS
3906
3907For example, here is how you could use breakpoint commands to print the
3908value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
3909
474c8240 3910@smallexample
c906108c
SS
3911break foo if x>0
3912commands
3913silent
3914printf "x is %d\n",x
3915cont
3916end
474c8240 3917@end smallexample
c906108c
SS
3918
3919One application for breakpoint commands is to compensate for one bug so
3920you can test for another. Put a breakpoint just after the erroneous line
3921of code, give it a condition to detect the case in which something
3922erroneous has been done, and give it commands to assign correct values
3923to any variables that need them. End with the @code{continue} command
3924so that your program does not stop, and start with the @code{silent}
3925command so that no output is produced. Here is an example:
3926
474c8240 3927@smallexample
c906108c
SS
3928break 403
3929commands
3930silent
3931set x = y + 4
3932cont
3933end
474c8240 3934@end smallexample
c906108c 3935
c906108c 3936@c @ifclear BARETARGET
6d2ebf8b 3937@node Error in Breakpoints
d4f3574e 3938@subsection ``Cannot insert breakpoints''
c906108c
SS
3939@c
3940@c FIXME!! 14/6/95 Is there a real example of this? Let's use it.
3941@c
d4f3574e
SS
3942Under some operating systems, breakpoints cannot be used in a program if
3943any other process is running that program. In this situation,
5d161b24 3944attempting to run or continue a program with a breakpoint causes
d4f3574e
SS
3945@value{GDBN} to print an error message:
3946
474c8240 3947@smallexample
d4f3574e
SS
3948Cannot insert breakpoints.
3949The same program may be running in another process.
474c8240 3950@end smallexample
d4f3574e
SS
3951
3952When this happens, you have three ways to proceed:
3953
3954@enumerate
3955@item
3956Remove or disable the breakpoints, then continue.
3957
3958@item
5d161b24 3959Suspend @value{GDBN}, and copy the file containing your program to a new
d4f3574e 3960name. Resume @value{GDBN} and use the @code{exec-file} command to specify
5d161b24 3961that @value{GDBN} should run your program under that name.
d4f3574e
SS
3962Then start your program again.
3963
3964@item
3965Relink your program so that the text segment is nonsharable, using the
3966linker option @samp{-N}. The operating system limitation may not apply
3967to nonsharable executables.
3968@end enumerate
c906108c
SS
3969@c @end ifclear
3970
d4f3574e
SS
3971A similar message can be printed if you request too many active
3972hardware-assisted breakpoints and watchpoints:
3973
3974@c FIXME: the precise wording of this message may change; the relevant
3975@c source change is not committed yet (Sep 3, 1999).
3976@smallexample
3977Stopped; cannot insert breakpoints.
3978You may have requested too many hardware breakpoints and watchpoints.
3979@end smallexample
3980
3981@noindent
3982This message is printed when you attempt to resume the program, since
3983only then @value{GDBN} knows exactly how many hardware breakpoints and
3984watchpoints it needs to insert.
3985
3986When this message is printed, you need to disable or remove some of the
3987hardware-assisted breakpoints and watchpoints, and then continue.
3988
79a6e687 3989@node Breakpoint-related Warnings
1485d690
KB
3990@subsection ``Breakpoint address adjusted...''
3991@cindex breakpoint address adjusted
3992
3993Some processor architectures place constraints on the addresses at
3994which breakpoints may be placed. For architectures thus constrained,
3995@value{GDBN} will attempt to adjust the breakpoint's address to comply
3996with the constraints dictated by the architecture.
3997
3998One example of such an architecture is the Fujitsu FR-V. The FR-V is
3999a VLIW architecture in which a number of RISC-like instructions may be
4000bundled together for parallel execution. The FR-V architecture
4001constrains the location of a breakpoint instruction within such a
4002bundle to the instruction with the lowest address. @value{GDBN}
4003honors this constraint by adjusting a breakpoint's address to the
4004first in the bundle.
4005
4006It is not uncommon for optimized code to have bundles which contain
4007instructions from different source statements, thus it may happen that
4008a breakpoint's address will be adjusted from one source statement to
4009another. Since this adjustment may significantly alter @value{GDBN}'s
4010breakpoint related behavior from what the user expects, a warning is
4011printed when the breakpoint is first set and also when the breakpoint
4012is hit.
4013
4014A warning like the one below is printed when setting a breakpoint
4015that's been subject to address adjustment:
4016
4017@smallexample
4018warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
4019@end smallexample
4020
4021Such warnings are printed both for user settable and @value{GDBN}'s
4022internal breakpoints. If you see one of these warnings, you should
4023verify that a breakpoint set at the adjusted address will have the
4024desired affect. If not, the breakpoint in question may be removed and
b383017d 4025other breakpoints may be set which will have the desired behavior.
1485d690
KB
4026E.g., it may be sufficient to place the breakpoint at a later
4027instruction. A conditional breakpoint may also be useful in some
4028cases to prevent the breakpoint from triggering too often.
4029
4030@value{GDBN} will also issue a warning when stopping at one of these
4031adjusted breakpoints:
4032
4033@smallexample
4034warning: Breakpoint 1 address previously adjusted from 0x00010414
4035to 0x00010410.
4036@end smallexample
4037
4038When this warning is encountered, it may be too late to take remedial
4039action except in cases where the breakpoint is hit earlier or more
4040frequently than expected.
d4f3574e 4041
6d2ebf8b 4042@node Continuing and Stepping
79a6e687 4043@section Continuing and Stepping
c906108c
SS
4044
4045@cindex stepping
4046@cindex continuing
4047@cindex resuming execution
4048@dfn{Continuing} means resuming program execution until your program
4049completes normally. In contrast, @dfn{stepping} means executing just
4050one more ``step'' of your program, where ``step'' may mean either one
4051line of source code, or one machine instruction (depending on what
7a292a7a
SS
4052particular command you use). Either when continuing or when stepping,
4053your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
4054it stops due to a signal, you may want to use @code{handle}, or use
4055@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
4056
4057@table @code
4058@kindex continue
41afff9a
EZ
4059@kindex c @r{(@code{continue})}
4060@kindex fg @r{(resume foreground execution)}
c906108c
SS
4061@item continue @r{[}@var{ignore-count}@r{]}
4062@itemx c @r{[}@var{ignore-count}@r{]}
4063@itemx fg @r{[}@var{ignore-count}@r{]}
4064Resume program execution, at the address where your program last stopped;
4065any breakpoints set at that address are bypassed. The optional argument
4066@var{ignore-count} allows you to specify a further number of times to
4067ignore a breakpoint at this location; its effect is like that of
79a6e687 4068@code{ignore} (@pxref{Conditions, ,Break Conditions}).
c906108c
SS
4069
4070The argument @var{ignore-count} is meaningful only when your program
4071stopped due to a breakpoint. At other times, the argument to
4072@code{continue} is ignored.
4073
d4f3574e
SS
4074The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
4075debugged program is deemed to be the foreground program) are provided
4076purely for convenience, and have exactly the same behavior as
4077@code{continue}.
c906108c
SS
4078@end table
4079
4080To resume execution at a different place, you can use @code{return}
79a6e687 4081(@pxref{Returning, ,Returning from a Function}) to go back to the
c906108c 4082calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
79a6e687 4083Different Address}) to go to an arbitrary location in your program.
c906108c
SS
4084
4085A typical technique for using stepping is to set a breakpoint
79a6e687 4086(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the
c906108c
SS
4087beginning of the function or the section of your program where a problem
4088is believed to lie, run your program until it stops at that breakpoint,
4089and then step through the suspect area, examining the variables that are
4090interesting, until you see the problem happen.
4091
4092@table @code
4093@kindex step
41afff9a 4094@kindex s @r{(@code{step})}
c906108c
SS
4095@item step
4096Continue running your program until control reaches a different source
4097line, then stop it and return control to @value{GDBN}. This command is
4098abbreviated @code{s}.
4099
4100@quotation
4101@c "without debugging information" is imprecise; actually "without line
4102@c numbers in the debugging information". (gcc -g1 has debugging info but
4103@c not line numbers). But it seems complex to try to make that
4104@c distinction here.
4105@emph{Warning:} If you use the @code{step} command while control is
4106within a function that was compiled without debugging information,
4107execution proceeds until control reaches a function that does have
4108debugging information. Likewise, it will not step into a function which
4109is compiled without debugging information. To step through functions
4110without debugging information, use the @code{stepi} command, described
4111below.
4112@end quotation
4113
4a92d011
EZ
4114The @code{step} command only stops at the first instruction of a source
4115line. This prevents the multiple stops that could otherwise occur in
4116@code{switch} statements, @code{for} loops, etc. @code{step} continues
4117to stop if a function that has debugging information is called within
4118the line. In other words, @code{step} @emph{steps inside} any functions
4119called within the line.
c906108c 4120
d4f3574e
SS
4121Also, the @code{step} command only enters a function if there is line
4122number information for the function. Otherwise it acts like the
5d161b24 4123@code{next} command. This avoids problems when using @code{cc -gl}
c906108c 4124on MIPS machines. Previously, @code{step} entered subroutines if there
5d161b24 4125was any debugging information about the routine.
c906108c
SS
4126
4127@item step @var{count}
4128Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
4129breakpoint is reached, or a signal not related to stepping occurs before
4130@var{count} steps, stepping stops right away.
c906108c
SS
4131
4132@kindex next
41afff9a 4133@kindex n @r{(@code{next})}
c906108c
SS
4134@item next @r{[}@var{count}@r{]}
4135Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
4136This is similar to @code{step}, but function calls that appear within
4137the line of code are executed without stopping. Execution stops when
4138control reaches a different line of code at the original stack level
4139that was executing when you gave the @code{next} command. This command
4140is abbreviated @code{n}.
c906108c
SS
4141
4142An argument @var{count} is a repeat count, as for @code{step}.
4143
4144
4145@c FIX ME!! Do we delete this, or is there a way it fits in with
4146@c the following paragraph? --- Vctoria
4147@c
4148@c @code{next} within a function that lacks debugging information acts like
4149@c @code{step}, but any function calls appearing within the code of the
4150@c function are executed without stopping.
4151
d4f3574e
SS
4152The @code{next} command only stops at the first instruction of a
4153source line. This prevents multiple stops that could otherwise occur in
4a92d011 4154@code{switch} statements, @code{for} loops, etc.
c906108c 4155
b90a5f51
CF
4156@kindex set step-mode
4157@item set step-mode
4158@cindex functions without line info, and stepping
4159@cindex stepping into functions with no line info
4160@itemx set step-mode on
4a92d011 4161The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
4162stop at the first instruction of a function which contains no debug line
4163information rather than stepping over it.
4164
4a92d011
EZ
4165This is useful in cases where you may be interested in inspecting the
4166machine instructions of a function which has no symbolic info and do not
4167want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
4168
4169@item set step-mode off
4a92d011 4170Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
4171debug information. This is the default.
4172
9c16f35a
EZ
4173@item show step-mode
4174Show whether @value{GDBN} will stop in or step over functions without
4175source line debug information.
4176
c906108c 4177@kindex finish
8dfa32fc 4178@kindex fin @r{(@code{finish})}
c906108c
SS
4179@item finish
4180Continue running until just after function in the selected stack frame
8dfa32fc
JB
4181returns. Print the returned value (if any). This command can be
4182abbreviated as @code{fin}.
c906108c
SS
4183
4184Contrast this with the @code{return} command (@pxref{Returning,
79a6e687 4185,Returning from a Function}).
c906108c
SS
4186
4187@kindex until
41afff9a 4188@kindex u @r{(@code{until})}
09d4efe1 4189@cindex run until specified location
c906108c
SS
4190@item until
4191@itemx u
4192Continue running until a source line past the current line, in the
4193current stack frame, is reached. This command is used to avoid single
4194stepping through a loop more than once. It is like the @code{next}
4195command, except that when @code{until} encounters a jump, it
4196automatically continues execution until the program counter is greater
4197than the address of the jump.
4198
4199This means that when you reach the end of a loop after single stepping
4200though it, @code{until} makes your program continue execution until it
4201exits the loop. In contrast, a @code{next} command at the end of a loop
4202simply steps back to the beginning of the loop, which forces you to step
4203through the next iteration.
4204
4205@code{until} always stops your program if it attempts to exit the current
4206stack frame.
4207
4208@code{until} may produce somewhat counterintuitive results if the order
4209of machine code does not match the order of the source lines. For
4210example, in the following excerpt from a debugging session, the @code{f}
4211(@code{frame}) command shows that execution is stopped at line
4212@code{206}; yet when we use @code{until}, we get to line @code{195}:
4213
474c8240 4214@smallexample
c906108c
SS
4215(@value{GDBP}) f
4216#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
4217206 expand_input();
4218(@value{GDBP}) until
4219195 for ( ; argc > 0; NEXTARG) @{
474c8240 4220@end smallexample
c906108c
SS
4221
4222This happened because, for execution efficiency, the compiler had
4223generated code for the loop closure test at the end, rather than the
4224start, of the loop---even though the test in a C @code{for}-loop is
4225written before the body of the loop. The @code{until} command appeared
4226to step back to the beginning of the loop when it advanced to this
4227expression; however, it has not really gone to an earlier
4228statement---not in terms of the actual machine code.
4229
4230@code{until} with no argument works by means of single
4231instruction stepping, and hence is slower than @code{until} with an
4232argument.
4233
4234@item until @var{location}
4235@itemx u @var{location}
4236Continue running your program until either the specified location is
4237reached, or the current stack frame returns. @var{location} is any of
2a25a5ba
EZ
4238the forms described in @ref{Specify Location}.
4239This form of the command uses temporary breakpoints, and
c60eb6f1
EZ
4240hence is quicker than @code{until} without an argument. The specified
4241location is actually reached only if it is in the current frame. This
4242implies that @code{until} can be used to skip over recursive function
4243invocations. For instance in the code below, if the current location is
4244line @code{96}, issuing @code{until 99} will execute the program up to
db2e3e2e 4245line @code{99} in the same invocation of factorial, i.e., after the inner
c60eb6f1
EZ
4246invocations have returned.
4247
4248@smallexample
424994 int factorial (int value)
425095 @{
425196 if (value > 1) @{
425297 value *= factorial (value - 1);
425398 @}
425499 return (value);
4255100 @}
4256@end smallexample
4257
4258
4259@kindex advance @var{location}
4260@itemx advance @var{location}
09d4efe1 4261Continue running the program up to the given @var{location}. An argument is
2a25a5ba
EZ
4262required, which should be of one of the forms described in
4263@ref{Specify Location}.
4264Execution will also stop upon exit from the current stack
c60eb6f1
EZ
4265frame. This command is similar to @code{until}, but @code{advance} will
4266not skip over recursive function calls, and the target location doesn't
4267have to be in the same frame as the current one.
4268
c906108c
SS
4269
4270@kindex stepi
41afff9a 4271@kindex si @r{(@code{stepi})}
c906108c 4272@item stepi
96a2c332 4273@itemx stepi @var{arg}
c906108c
SS
4274@itemx si
4275Execute one machine instruction, then stop and return to the debugger.
4276
4277It is often useful to do @samp{display/i $pc} when stepping by machine
4278instructions. This makes @value{GDBN} automatically display the next
4279instruction to be executed, each time your program stops. @xref{Auto
79a6e687 4280Display,, Automatic Display}.
c906108c
SS
4281
4282An argument is a repeat count, as in @code{step}.
4283
4284@need 750
4285@kindex nexti
41afff9a 4286@kindex ni @r{(@code{nexti})}
c906108c 4287@item nexti
96a2c332 4288@itemx nexti @var{arg}
c906108c
SS
4289@itemx ni
4290Execute one machine instruction, but if it is a function call,
4291proceed until the function returns.
4292
4293An argument is a repeat count, as in @code{next}.
4294@end table
4295
6d2ebf8b 4296@node Signals
c906108c
SS
4297@section Signals
4298@cindex signals
4299
4300A signal is an asynchronous event that can happen in a program. The
4301operating system defines the possible kinds of signals, and gives each
4302kind a name and a number. For example, in Unix @code{SIGINT} is the
c8aa23ab 4303signal a program gets when you type an interrupt character (often @kbd{Ctrl-c});
c906108c
SS
4304@code{SIGSEGV} is the signal a program gets from referencing a place in
4305memory far away from all the areas in use; @code{SIGALRM} occurs when
4306the alarm clock timer goes off (which happens only if your program has
4307requested an alarm).
4308
4309@cindex fatal signals
4310Some signals, including @code{SIGALRM}, are a normal part of the
4311functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 4312errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
4313program has not specified in advance some other way to handle the signal.
4314@code{SIGINT} does not indicate an error in your program, but it is normally
4315fatal so it can carry out the purpose of the interrupt: to kill the program.
4316
4317@value{GDBN} has the ability to detect any occurrence of a signal in your
4318program. You can tell @value{GDBN} in advance what to do for each kind of
4319signal.
4320
4321@cindex handling signals
24f93129
EZ
4322Normally, @value{GDBN} is set up to let the non-erroneous signals like
4323@code{SIGALRM} be silently passed to your program
4324(so as not to interfere with their role in the program's functioning)
c906108c
SS
4325but to stop your program immediately whenever an error signal happens.
4326You can change these settings with the @code{handle} command.
4327
4328@table @code
4329@kindex info signals
09d4efe1 4330@kindex info handle
c906108c 4331@item info signals
96a2c332 4332@itemx info handle
c906108c
SS
4333Print a table of all the kinds of signals and how @value{GDBN} has been told to
4334handle each one. You can use this to see the signal numbers of all
4335the defined types of signals.
4336
45ac1734
EZ
4337@item info signals @var{sig}
4338Similar, but print information only about the specified signal number.
4339
d4f3574e 4340@code{info handle} is an alias for @code{info signals}.
c906108c
SS
4341
4342@kindex handle
45ac1734 4343@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]}
5ece1a18
EZ
4344Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
4345can be the number of a signal or its name (with or without the
24f93129 4346@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18 4347@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
45ac1734
EZ
4348known signals. Optional arguments @var{keywords}, described below,
4349say what change to make.
c906108c
SS
4350@end table
4351
4352@c @group
4353The keywords allowed by the @code{handle} command can be abbreviated.
4354Their full names are:
4355
4356@table @code
4357@item nostop
4358@value{GDBN} should not stop your program when this signal happens. It may
4359still print a message telling you that the signal has come in.
4360
4361@item stop
4362@value{GDBN} should stop your program when this signal happens. This implies
4363the @code{print} keyword as well.
4364
4365@item print
4366@value{GDBN} should print a message when this signal happens.
4367
4368@item noprint
4369@value{GDBN} should not mention the occurrence of the signal at all. This
4370implies the @code{nostop} keyword as well.
4371
4372@item pass
5ece1a18 4373@itemx noignore
c906108c
SS
4374@value{GDBN} should allow your program to see this signal; your program
4375can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 4376and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
4377
4378@item nopass
5ece1a18 4379@itemx ignore
c906108c 4380@value{GDBN} should not allow your program to see this signal.
5ece1a18 4381@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
4382@end table
4383@c @end group
4384
d4f3574e
SS
4385When a signal stops your program, the signal is not visible to the
4386program until you
c906108c
SS
4387continue. Your program sees the signal then, if @code{pass} is in
4388effect for the signal in question @emph{at that time}. In other words,
4389after @value{GDBN} reports a signal, you can use the @code{handle}
4390command with @code{pass} or @code{nopass} to control whether your
4391program sees that signal when you continue.
4392
24f93129
EZ
4393The default is set to @code{nostop}, @code{noprint}, @code{pass} for
4394non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
4395@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
4396erroneous signals.
4397
c906108c
SS
4398You can also use the @code{signal} command to prevent your program from
4399seeing a signal, or cause it to see a signal it normally would not see,
4400or to give it any signal at any time. For example, if your program stopped
4401due to some sort of memory reference error, you might store correct
4402values into the erroneous variables and continue, hoping to see more
4403execution; but your program would probably terminate immediately as
4404a result of the fatal signal once it saw the signal. To prevent this,
4405you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
79a6e687 4406Program a Signal}.
c906108c 4407
6d2ebf8b 4408@node Thread Stops
79a6e687 4409@section Stopping and Starting Multi-thread Programs
c906108c
SS
4410
4411When your program has multiple threads (@pxref{Threads,, Debugging
79a6e687 4412Programs with Multiple Threads}), you can choose whether to set
c906108c
SS
4413breakpoints on all threads, or on a particular thread.
4414
4415@table @code
4416@cindex breakpoints and threads
4417@cindex thread breakpoints
4418@kindex break @dots{} thread @var{threadno}
4419@item break @var{linespec} thread @var{threadno}
4420@itemx break @var{linespec} thread @var{threadno} if @dots{}
4421@var{linespec} specifies source lines; there are several ways of
2a25a5ba
EZ
4422writing them (@pxref{Specify Location}), but the effect is always to
4423specify some source line.
c906108c
SS
4424
4425Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
4426to specify that you only want @value{GDBN} to stop the program when a
4427particular thread reaches this breakpoint. @var{threadno} is one of the
4428numeric thread identifiers assigned by @value{GDBN}, shown in the first
4429column of the @samp{info threads} display.
4430
4431If you do not specify @samp{thread @var{threadno}} when you set a
4432breakpoint, the breakpoint applies to @emph{all} threads of your
4433program.
4434
4435You can use the @code{thread} qualifier on conditional breakpoints as
4436well; in this case, place @samp{thread @var{threadno}} before the
4437breakpoint condition, like this:
4438
4439@smallexample
2df3850c 4440(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
4441@end smallexample
4442
4443@end table
4444
4445@cindex stopped threads
4446@cindex threads, stopped
4447Whenever your program stops under @value{GDBN} for any reason,
4448@emph{all} threads of execution stop, not just the current thread. This
4449allows you to examine the overall state of the program, including
4450switching between threads, without worrying that things may change
4451underfoot.
4452
36d86913
MC
4453@cindex thread breakpoints and system calls
4454@cindex system calls and thread breakpoints
4455@cindex premature return from system calls
4456There is an unfortunate side effect. If one thread stops for a
4457breakpoint, or for some other reason, and another thread is blocked in a
4458system call, then the system call may return prematurely. This is a
4459consequence of the interaction between multiple threads and the signals
4460that @value{GDBN} uses to implement breakpoints and other events that
4461stop execution.
4462
4463To handle this problem, your program should check the return value of
4464each system call and react appropriately. This is good programming
4465style anyways.
4466
4467For example, do not write code like this:
4468
4469@smallexample
4470 sleep (10);
4471@end smallexample
4472
4473The call to @code{sleep} will return early if a different thread stops
4474at a breakpoint or for some other reason.
4475
4476Instead, write this:
4477
4478@smallexample
4479 int unslept = 10;
4480 while (unslept > 0)
4481 unslept = sleep (unslept);
4482@end smallexample
4483
4484A system call is allowed to return early, so the system is still
4485conforming to its specification. But @value{GDBN} does cause your
4486multi-threaded program to behave differently than it would without
4487@value{GDBN}.
4488
4489Also, @value{GDBN} uses internal breakpoints in the thread library to
4490monitor certain events such as thread creation and thread destruction.
4491When such an event happens, a system call in another thread may return
4492prematurely, even though your program does not appear to stop.
4493
c906108c
SS
4494@cindex continuing threads
4495@cindex threads, continuing
4496Conversely, whenever you restart the program, @emph{all} threads start
4497executing. @emph{This is true even when single-stepping} with commands
5d161b24 4498like @code{step} or @code{next}.
c906108c
SS
4499
4500In particular, @value{GDBN} cannot single-step all threads in lockstep.
4501Since thread scheduling is up to your debugging target's operating
4502system (not controlled by @value{GDBN}), other threads may
4503execute more than one statement while the current thread completes a
4504single step. Moreover, in general other threads stop in the middle of a
4505statement, rather than at a clean statement boundary, when the program
4506stops.
4507
4508You might even find your program stopped in another thread after
4509continuing or even single-stepping. This happens whenever some other
4510thread runs into a breakpoint, a signal, or an exception before the
4511first thread completes whatever you requested.
4512
4513On some OSes, you can lock the OS scheduler and thus allow only a single
4514thread to run.
4515
4516@table @code
4517@item set scheduler-locking @var{mode}
9c16f35a
EZ
4518@cindex scheduler locking mode
4519@cindex lock scheduler
c906108c
SS
4520Set the scheduler locking mode. If it is @code{off}, then there is no
4521locking and any thread may run at any time. If @code{on}, then only the
4522current thread may run when the inferior is resumed. The @code{step}
4523mode optimizes for single-stepping. It stops other threads from
4524``seizing the prompt'' by preempting the current thread while you are
4525stepping. Other threads will only rarely (or never) get a chance to run
d4f3574e 4526when you step. They are more likely to run when you @samp{next} over a
c906108c 4527function call, and they are completely free to run when you use commands
d4f3574e 4528like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
c906108c 4529thread hits a breakpoint during its timeslice, they will never steal the
2df3850c 4530@value{GDBN} prompt away from the thread that you are debugging.
c906108c
SS
4531
4532@item show scheduler-locking
4533Display the current scheduler locking mode.
4534@end table
4535
c906108c 4536
6d2ebf8b 4537@node Stack
c906108c
SS
4538@chapter Examining the Stack
4539
4540When your program has stopped, the first thing you need to know is where it
4541stopped and how it got there.
4542
4543@cindex call stack
5d161b24
DB
4544Each time your program performs a function call, information about the call
4545is generated.
4546That information includes the location of the call in your program,
4547the arguments of the call,
c906108c 4548and the local variables of the function being called.
5d161b24 4549The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
4550The stack frames are allocated in a region of memory called the @dfn{call
4551stack}.
4552
4553When your program stops, the @value{GDBN} commands for examining the
4554stack allow you to see all of this information.
4555
4556@cindex selected frame
4557One of the stack frames is @dfn{selected} by @value{GDBN} and many
4558@value{GDBN} commands refer implicitly to the selected frame. In
4559particular, whenever you ask @value{GDBN} for the value of a variable in
4560your program, the value is found in the selected frame. There are
4561special @value{GDBN} commands to select whichever frame you are
79a6e687 4562interested in. @xref{Selection, ,Selecting a Frame}.
c906108c
SS
4563
4564When your program stops, @value{GDBN} automatically selects the
5d161b24 4565currently executing frame and describes it briefly, similar to the
79a6e687 4566@code{frame} command (@pxref{Frame Info, ,Information about a Frame}).
c906108c
SS
4567
4568@menu
4569* Frames:: Stack frames
4570* Backtrace:: Backtraces
4571* Selection:: Selecting a frame
4572* Frame Info:: Information on a frame
c906108c
SS
4573
4574@end menu
4575
6d2ebf8b 4576@node Frames
79a6e687 4577@section Stack Frames
c906108c 4578
d4f3574e 4579@cindex frame, definition
c906108c
SS
4580@cindex stack frame
4581The call stack is divided up into contiguous pieces called @dfn{stack
4582frames}, or @dfn{frames} for short; each frame is the data associated
4583with one call to one function. The frame contains the arguments given
4584to the function, the function's local variables, and the address at
4585which the function is executing.
4586
4587@cindex initial frame
4588@cindex outermost frame
4589@cindex innermost frame
4590When your program is started, the stack has only one frame, that of the
4591function @code{main}. This is called the @dfn{initial} frame or the
4592@dfn{outermost} frame. Each time a function is called, a new frame is
4593made. Each time a function returns, the frame for that function invocation
4594is eliminated. If a function is recursive, there can be many frames for
4595the same function. The frame for the function in which execution is
4596actually occurring is called the @dfn{innermost} frame. This is the most
4597recently created of all the stack frames that still exist.
4598
4599@cindex frame pointer
4600Inside your program, stack frames are identified by their addresses. A
4601stack frame consists of many bytes, each of which has its own address; each
4602kind of computer has a convention for choosing one byte whose
4603address serves as the address of the frame. Usually this address is kept
e09f16f9
EZ
4604in a register called the @dfn{frame pointer register}
4605(@pxref{Registers, $fp}) while execution is going on in that frame.
c906108c
SS
4606
4607@cindex frame number
4608@value{GDBN} assigns numbers to all existing stack frames, starting with
4609zero for the innermost frame, one for the frame that called it,
4610and so on upward. These numbers do not really exist in your program;
4611they are assigned by @value{GDBN} to give you a way of designating stack
4612frames in @value{GDBN} commands.
4613
6d2ebf8b
SS
4614@c The -fomit-frame-pointer below perennially causes hbox overflow
4615@c underflow problems.
c906108c
SS
4616@cindex frameless execution
4617Some compilers provide a way to compile functions so that they operate
e22ea452 4618without stack frames. (For example, the @value{NGCC} option
474c8240 4619@smallexample
6d2ebf8b 4620@samp{-fomit-frame-pointer}
474c8240 4621@end smallexample
6d2ebf8b 4622generates functions without a frame.)
c906108c
SS
4623This is occasionally done with heavily used library functions to save
4624the frame setup time. @value{GDBN} has limited facilities for dealing
4625with these function invocations. If the innermost function invocation
4626has no stack frame, @value{GDBN} nevertheless regards it as though
4627it had a separate frame, which is numbered zero as usual, allowing
4628correct tracing of the function call chain. However, @value{GDBN} has
4629no provision for frameless functions elsewhere in the stack.
4630
4631@table @code
d4f3574e 4632@kindex frame@r{, command}
41afff9a 4633@cindex current stack frame
c906108c 4634@item frame @var{args}
5d161b24 4635The @code{frame} command allows you to move from one stack frame to another,
c906108c 4636and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
4637address of the frame or the stack frame number. Without an argument,
4638@code{frame} prints the current stack frame.
c906108c
SS
4639
4640@kindex select-frame
41afff9a 4641@cindex selecting frame silently
c906108c
SS
4642@item select-frame
4643The @code{select-frame} command allows you to move from one stack frame
4644to another without printing the frame. This is the silent version of
4645@code{frame}.
4646@end table
4647
6d2ebf8b 4648@node Backtrace
c906108c
SS
4649@section Backtraces
4650
09d4efe1
EZ
4651@cindex traceback
4652@cindex call stack traces
c906108c
SS
4653A backtrace is a summary of how your program got where it is. It shows one
4654line per frame, for many frames, starting with the currently executing
4655frame (frame zero), followed by its caller (frame one), and on up the
4656stack.
4657
4658@table @code
4659@kindex backtrace
41afff9a 4660@kindex bt @r{(@code{backtrace})}
c906108c
SS
4661@item backtrace
4662@itemx bt
4663Print a backtrace of the entire stack: one line per frame for all
4664frames in the stack.
4665
4666You can stop the backtrace at any time by typing the system interrupt
c8aa23ab 4667character, normally @kbd{Ctrl-c}.
c906108c
SS
4668
4669@item backtrace @var{n}
4670@itemx bt @var{n}
4671Similar, but print only the innermost @var{n} frames.
4672
4673@item backtrace -@var{n}
4674@itemx bt -@var{n}
4675Similar, but print only the outermost @var{n} frames.
0f061b69
NR
4676
4677@item backtrace full
0f061b69 4678@itemx bt full
dd74f6ae
NR
4679@itemx bt full @var{n}
4680@itemx bt full -@var{n}
e7109c7e 4681Print the values of the local variables also. @var{n} specifies the
286ba84d 4682number of frames to print, as described above.
c906108c
SS
4683@end table
4684
4685@kindex where
4686@kindex info stack
c906108c
SS
4687The names @code{where} and @code{info stack} (abbreviated @code{info s})
4688are additional aliases for @code{backtrace}.
4689
839c27b7
EZ
4690@cindex multiple threads, backtrace
4691In a multi-threaded program, @value{GDBN} by default shows the
4692backtrace only for the current thread. To display the backtrace for
4693several or all of the threads, use the command @code{thread apply}
4694(@pxref{Threads, thread apply}). For example, if you type @kbd{thread
4695apply all backtrace}, @value{GDBN} will display the backtrace for all
4696the threads; this is handy when you debug a core dump of a
4697multi-threaded program.
4698
c906108c
SS
4699Each line in the backtrace shows the frame number and the function name.
4700The program counter value is also shown---unless you use @code{set
4701print address off}. The backtrace also shows the source file name and
4702line number, as well as the arguments to the function. The program
4703counter value is omitted if it is at the beginning of the code for that
4704line number.
4705
4706Here is an example of a backtrace. It was made with the command
4707@samp{bt 3}, so it shows the innermost three frames.
4708
4709@smallexample
4710@group
5d161b24 4711#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c
SS
4712 at builtin.c:993
4713#1 0x6e38 in expand_macro (sym=0x2b600) at macro.c:242
4714#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
4715 at macro.c:71
4716(More stack frames follow...)
4717@end group
4718@end smallexample
4719
4720@noindent
4721The display for frame zero does not begin with a program counter
4722value, indicating that your program has stopped at the beginning of the
4723code for line @code{993} of @code{builtin.c}.
4724
18999be5
EZ
4725@cindex value optimized out, in backtrace
4726@cindex function call arguments, optimized out
4727If your program was compiled with optimizations, some compilers will
4728optimize away arguments passed to functions if those arguments are
4729never used after the call. Such optimizations generate code that
4730passes arguments through registers, but doesn't store those arguments
4731in the stack frame. @value{GDBN} has no way of displaying such
4732arguments in stack frames other than the innermost one. Here's what
4733such a backtrace might look like:
4734
4735@smallexample
4736@group
4737#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
4738 at builtin.c:993
4739#1 0x6e38 in expand_macro (sym=<value optimized out>) at macro.c:242
4740#2 0x6840 in expand_token (obs=0x0, t=<value optimized out>, td=0xf7fffb08)
4741 at macro.c:71
4742(More stack frames follow...)
4743@end group
4744@end smallexample
4745
4746@noindent
4747The values of arguments that were not saved in their stack frames are
4748shown as @samp{<value optimized out>}.
4749
4750If you need to display the values of such optimized-out arguments,
4751either deduce that from other variables whose values depend on the one
4752you are interested in, or recompile without optimizations.
4753
a8f24a35
EZ
4754@cindex backtrace beyond @code{main} function
4755@cindex program entry point
4756@cindex startup code, and backtrace
25d29d70
AC
4757Most programs have a standard user entry point---a place where system
4758libraries and startup code transition into user code. For C this is
d416eeec
EZ
4759@code{main}@footnote{
4760Note that embedded programs (the so-called ``free-standing''
4761environment) are not required to have a @code{main} function as the
4762entry point. They could even have multiple entry points.}.
4763When @value{GDBN} finds the entry function in a backtrace
25d29d70
AC
4764it will terminate the backtrace, to avoid tracing into highly
4765system-specific (and generally uninteresting) code.
4766
4767If you need to examine the startup code, or limit the number of levels
4768in a backtrace, you can change this behavior:
95f90d25
DJ
4769
4770@table @code
25d29d70
AC
4771@item set backtrace past-main
4772@itemx set backtrace past-main on
4644b6e3 4773@kindex set backtrace
25d29d70
AC
4774Backtraces will continue past the user entry point.
4775
4776@item set backtrace past-main off
95f90d25
DJ
4777Backtraces will stop when they encounter the user entry point. This is the
4778default.
4779
25d29d70 4780@item show backtrace past-main
4644b6e3 4781@kindex show backtrace
25d29d70
AC
4782Display the current user entry point backtrace policy.
4783
2315ffec
RC
4784@item set backtrace past-entry
4785@itemx set backtrace past-entry on
a8f24a35 4786Backtraces will continue past the internal entry point of an application.
2315ffec
RC
4787This entry point is encoded by the linker when the application is built,
4788and is likely before the user entry point @code{main} (or equivalent) is called.
4789
4790@item set backtrace past-entry off
d3e8051b 4791Backtraces will stop when they encounter the internal entry point of an
2315ffec
RC
4792application. This is the default.
4793
4794@item show backtrace past-entry
4795Display the current internal entry point backtrace policy.
4796
25d29d70
AC
4797@item set backtrace limit @var{n}
4798@itemx set backtrace limit 0
4799@cindex backtrace limit
4800Limit the backtrace to @var{n} levels. A value of zero means
4801unlimited.
95f90d25 4802
25d29d70
AC
4803@item show backtrace limit
4804Display the current limit on backtrace levels.
95f90d25
DJ
4805@end table
4806
6d2ebf8b 4807@node Selection
79a6e687 4808@section Selecting a Frame
c906108c
SS
4809
4810Most commands for examining the stack and other data in your program work on
4811whichever stack frame is selected at the moment. Here are the commands for
4812selecting a stack frame; all of them finish by printing a brief description
4813of the stack frame just selected.
4814
4815@table @code
d4f3574e 4816@kindex frame@r{, selecting}
41afff9a 4817@kindex f @r{(@code{frame})}
c906108c
SS
4818@item frame @var{n}
4819@itemx f @var{n}
4820Select frame number @var{n}. Recall that frame zero is the innermost
4821(currently executing) frame, frame one is the frame that called the
4822innermost one, and so on. The highest-numbered frame is the one for
4823@code{main}.
4824
4825@item frame @var{addr}
4826@itemx f @var{addr}
4827Select the frame at address @var{addr}. This is useful mainly if the
4828chaining of stack frames has been damaged by a bug, making it
4829impossible for @value{GDBN} to assign numbers properly to all frames. In
4830addition, this can be useful when your program has multiple stacks and
4831switches between them.
4832
c906108c
SS
4833On the SPARC architecture, @code{frame} needs two addresses to
4834select an arbitrary frame: a frame pointer and a stack pointer.
4835
4836On the MIPS and Alpha architecture, it needs two addresses: a stack
4837pointer and a program counter.
4838
4839On the 29k architecture, it needs three addresses: a register stack
4840pointer, a program counter, and a memory stack pointer.
c906108c
SS
4841
4842@kindex up
4843@item up @var{n}
4844Move @var{n} frames up the stack. For positive numbers @var{n}, this
4845advances toward the outermost frame, to higher frame numbers, to frames
4846that have existed longer. @var{n} defaults to one.
4847
4848@kindex down
41afff9a 4849@kindex do @r{(@code{down})}
c906108c
SS
4850@item down @var{n}
4851Move @var{n} frames down the stack. For positive numbers @var{n}, this
4852advances toward the innermost frame, to lower frame numbers, to frames
4853that were created more recently. @var{n} defaults to one. You may
4854abbreviate @code{down} as @code{do}.
4855@end table
4856
4857All of these commands end by printing two lines of output describing the
4858frame. The first line shows the frame number, the function name, the
4859arguments, and the source file and line number of execution in that
5d161b24 4860frame. The second line shows the text of that source line.
c906108c
SS
4861
4862@need 1000
4863For example:
4864
4865@smallexample
4866@group
4867(@value{GDBP}) up
4868#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
4869 at env.c:10
487010 read_input_file (argv[i]);
4871@end group
4872@end smallexample
4873
4874After such a printout, the @code{list} command with no arguments
4875prints ten lines centered on the point of execution in the frame.
87885426
FN
4876You can also edit the program at the point of execution with your favorite
4877editing program by typing @code{edit}.
79a6e687 4878@xref{List, ,Printing Source Lines},
87885426 4879for details.
c906108c
SS
4880
4881@table @code
4882@kindex down-silently
4883@kindex up-silently
4884@item up-silently @var{n}
4885@itemx down-silently @var{n}
4886These two commands are variants of @code{up} and @code{down},
4887respectively; they differ in that they do their work silently, without
4888causing display of the new frame. They are intended primarily for use
4889in @value{GDBN} command scripts, where the output might be unnecessary and
4890distracting.
4891@end table
4892
6d2ebf8b 4893@node Frame Info
79a6e687 4894@section Information About a Frame
c906108c
SS
4895
4896There are several other commands to print information about the selected
4897stack frame.
4898
4899@table @code
4900@item frame
4901@itemx f
4902When used without any argument, this command does not change which
4903frame is selected, but prints a brief description of the currently
4904selected stack frame. It can be abbreviated @code{f}. With an
4905argument, this command is used to select a stack frame.
79a6e687 4906@xref{Selection, ,Selecting a Frame}.
c906108c
SS
4907
4908@kindex info frame
41afff9a 4909@kindex info f @r{(@code{info frame})}
c906108c
SS
4910@item info frame
4911@itemx info f
4912This command prints a verbose description of the selected stack frame,
4913including:
4914
4915@itemize @bullet
5d161b24
DB
4916@item
4917the address of the frame
c906108c
SS
4918@item
4919the address of the next frame down (called by this frame)
4920@item
4921the address of the next frame up (caller of this frame)
4922@item
4923the language in which the source code corresponding to this frame is written
4924@item
4925the address of the frame's arguments
4926@item
d4f3574e
SS
4927the address of the frame's local variables
4928@item
c906108c
SS
4929the program counter saved in it (the address of execution in the caller frame)
4930@item
4931which registers were saved in the frame
4932@end itemize
4933
4934@noindent The verbose description is useful when
4935something has gone wrong that has made the stack format fail to fit
4936the usual conventions.
4937
4938@item info frame @var{addr}
4939@itemx info f @var{addr}
4940Print a verbose description of the frame at address @var{addr}, without
4941selecting that frame. The selected frame remains unchanged by this
4942command. This requires the same kind of address (more than one for some
4943architectures) that you specify in the @code{frame} command.
79a6e687 4944@xref{Selection, ,Selecting a Frame}.
c906108c
SS
4945
4946@kindex info args
4947@item info args
4948Print the arguments of the selected frame, each on a separate line.
4949
4950@item info locals
4951@kindex info locals
4952Print the local variables of the selected frame, each on a separate
4953line. These are all variables (declared either static or automatic)
4954accessible at the point of execution of the selected frame.
4955
c906108c 4956@kindex info catch
d4f3574e
SS
4957@cindex catch exceptions, list active handlers
4958@cindex exception handlers, how to list
c906108c
SS
4959@item info catch
4960Print a list of all the exception handlers that are active in the
4961current stack frame at the current point of execution. To see other
4962exception handlers, visit the associated frame (using the @code{up},
4963@code{down}, or @code{frame} commands); then type @code{info catch}.
79a6e687 4964@xref{Set Catchpoints, , Setting Catchpoints}.
53a5351d 4965
c906108c
SS
4966@end table
4967
c906108c 4968
6d2ebf8b 4969@node Source
c906108c
SS
4970@chapter Examining Source Files
4971
4972@value{GDBN} can print parts of your program's source, since the debugging
4973information recorded in the program tells @value{GDBN} what source files were
4974used to build it. When your program stops, @value{GDBN} spontaneously prints
4975the line where it stopped. Likewise, when you select a stack frame
79a6e687 4976(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where
c906108c
SS
4977execution in that frame has stopped. You can print other portions of
4978source files by explicit command.
4979
7a292a7a 4980If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 4981prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 4982@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
4983
4984@menu
4985* List:: Printing source lines
2a25a5ba 4986* Specify Location:: How to specify code locations
87885426 4987* Edit:: Editing source files
c906108c 4988* Search:: Searching source files
c906108c
SS
4989* Source Path:: Specifying source directories
4990* Machine Code:: Source and machine code
4991@end menu
4992
6d2ebf8b 4993@node List
79a6e687 4994@section Printing Source Lines
c906108c
SS
4995
4996@kindex list
41afff9a 4997@kindex l @r{(@code{list})}
c906108c 4998To print lines from a source file, use the @code{list} command
5d161b24 4999(abbreviated @code{l}). By default, ten lines are printed.
2a25a5ba
EZ
5000There are several ways to specify what part of the file you want to
5001print; see @ref{Specify Location}, for the full list.
c906108c
SS
5002
5003Here are the forms of the @code{list} command most commonly used:
5004
5005@table @code
5006@item list @var{linenum}
5007Print lines centered around line number @var{linenum} in the
5008current source file.
5009
5010@item list @var{function}
5011Print lines centered around the beginning of function
5012@var{function}.
5013
5014@item list
5015Print more lines. If the last lines printed were printed with a
5016@code{list} command, this prints lines following the last lines
5017printed; however, if the last line printed was a solitary line printed
5018as part of displaying a stack frame (@pxref{Stack, ,Examining the
5019Stack}), this prints lines centered around that line.
5020
5021@item list -
5022Print lines just before the lines last printed.
5023@end table
5024
9c16f35a 5025@cindex @code{list}, how many lines to display
c906108c
SS
5026By default, @value{GDBN} prints ten source lines with any of these forms of
5027the @code{list} command. You can change this using @code{set listsize}:
5028
5029@table @code
5030@kindex set listsize
5031@item set listsize @var{count}
5032Make the @code{list} command display @var{count} source lines (unless
5033the @code{list} argument explicitly specifies some other number).
5034
5035@kindex show listsize
5036@item show listsize
5037Display the number of lines that @code{list} prints.
5038@end table
5039
5040Repeating a @code{list} command with @key{RET} discards the argument,
5041so it is equivalent to typing just @code{list}. This is more useful
5042than listing the same lines again. An exception is made for an
5043argument of @samp{-}; that argument is preserved in repetition so that
5044each repetition moves up in the source file.
5045
c906108c
SS
5046In general, the @code{list} command expects you to supply zero, one or two
5047@dfn{linespecs}. Linespecs specify source lines; there are several ways
2a25a5ba
EZ
5048of writing them (@pxref{Specify Location}), but the effect is always
5049to specify some source line.
5050
c906108c
SS
5051Here is a complete description of the possible arguments for @code{list}:
5052
5053@table @code
5054@item list @var{linespec}
5055Print lines centered around the line specified by @var{linespec}.
5056
5057@item list @var{first},@var{last}
5058Print lines from @var{first} to @var{last}. Both arguments are
2a25a5ba
EZ
5059linespecs. When a @code{list} command has two linespecs, and the
5060source file of the second linespec is omitted, this refers to
5061the same source file as the first linespec.
c906108c
SS
5062
5063@item list ,@var{last}
5064Print lines ending with @var{last}.
5065
5066@item list @var{first},
5067Print lines starting with @var{first}.
5068
5069@item list +
5070Print lines just after the lines last printed.
5071
5072@item list -
5073Print lines just before the lines last printed.
5074
5075@item list
5076As described in the preceding table.
5077@end table
5078
2a25a5ba
EZ
5079@node Specify Location
5080@section Specifying a Location
5081@cindex specifying location
5082@cindex linespec
c906108c 5083
2a25a5ba
EZ
5084Several @value{GDBN} commands accept arguments that specify a location
5085of your program's code. Since @value{GDBN} is a source-level
5086debugger, a location usually specifies some line in the source code;
5087for that reason, locations are also known as @dfn{linespecs}.
c906108c 5088
2a25a5ba
EZ
5089Here are all the different ways of specifying a code location that
5090@value{GDBN} understands:
c906108c 5091
2a25a5ba
EZ
5092@table @code
5093@item @var{linenum}
5094Specifies the line number @var{linenum} of the current source file.
c906108c 5095
2a25a5ba
EZ
5096@item -@var{offset}
5097@itemx +@var{offset}
5098Specifies the line @var{offset} lines before or after the @dfn{current
5099line}. For the @code{list} command, the current line is the last one
5100printed; for the breakpoint commands, this is the line at which
5101execution stopped in the currently selected @dfn{stack frame}
5102(@pxref{Frames, ,Frames}, for a description of stack frames.) When
5103used as the second of the two linespecs in a @code{list} command,
5104this specifies the line @var{offset} lines up or down from the first
5105linespec.
5106
5107@item @var{filename}:@var{linenum}
5108Specifies the line @var{linenum} in the source file @var{filename}.
c906108c
SS
5109
5110@item @var{function}
5111Specifies the line that begins the body of the function @var{function}.
2a25a5ba 5112For example, in C, this is the line with the open brace.
c906108c
SS
5113
5114@item @var{filename}:@var{function}
2a25a5ba
EZ
5115Specifies the line that begins the body of the function @var{function}
5116in the file @var{filename}. You only need the file name with a
5117function name to avoid ambiguity when there are identically named
5118functions in different source files.
c906108c
SS
5119
5120@item *@var{address}
2a25a5ba
EZ
5121Specifies the program address @var{address}. For line-oriented
5122commands, such as @code{list} and @code{edit}, this specifies a source
5123line that contains @var{address}. For @code{break} and other
5124breakpoint oriented commands, this can be used to set breakpoints in
5125parts of your program which do not have debugging information or
5126source files.
5127
5128Here @var{address} may be any expression valid in the current working
5129language (@pxref{Languages, working language}) that specifies a code
5fa54e5d
EZ
5130address. In addition, as a convenience, @value{GDBN} extends the
5131semantics of expressions used in locations to cover the situations
5132that frequently happen during debugging. Here are the various forms
5133of @var{address}:
2a25a5ba
EZ
5134
5135@table @code
5136@item @var{expression}
5137Any expression valid in the current working language.
5138
5139@item @var{funcaddr}
5140An address of a function or procedure derived from its name. In C,
5141C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is
5142simply the function's name @var{function} (and actually a special case
5143of a valid expression). In Pascal and Modula-2, this is
5144@code{&@var{function}}. In Ada, this is @code{@var{function}'Address}
5145(although the Pascal form also works).
5146
5147This form specifies the address of the function's first instruction,
5148before the stack frame and arguments have been set up.
5149
5150@item '@var{filename}'::@var{funcaddr}
5151Like @var{funcaddr} above, but also specifies the name of the source
5152file explicitly. This is useful if the name of the function does not
5153specify the function unambiguously, e.g., if there are several
5154functions with identical names in different source files.
c906108c
SS
5155@end table
5156
2a25a5ba
EZ
5157@end table
5158
5159
87885426 5160@node Edit
79a6e687 5161@section Editing Source Files
87885426
FN
5162@cindex editing source files
5163
5164@kindex edit
5165@kindex e @r{(@code{edit})}
5166To edit the lines in a source file, use the @code{edit} command.
5167The editing program of your choice
5168is invoked with the current line set to
5169the active line in the program.
5170Alternatively, there are several ways to specify what part of the file you
2a25a5ba 5171want to print if you want to see other parts of the program:
87885426
FN
5172
5173@table @code
2a25a5ba
EZ
5174@item edit @var{location}
5175Edit the source file specified by @code{location}. Editing starts at
5176that @var{location}, e.g., at the specified source line of the
5177specified file. @xref{Specify Location}, for all the possible forms
5178of the @var{location} argument; here are the forms of the @code{edit}
5179command most commonly used:
87885426 5180
2a25a5ba 5181@table @code
87885426
FN
5182@item edit @var{number}
5183Edit the current source file with @var{number} as the active line number.
5184
5185@item edit @var{function}
5186Edit the file containing @var{function} at the beginning of its definition.
2a25a5ba 5187@end table
87885426 5188
87885426
FN
5189@end table
5190
79a6e687 5191@subsection Choosing your Editor
87885426
FN
5192You can customize @value{GDBN} to use any editor you want
5193@footnote{
5194The only restriction is that your editor (say @code{ex}), recognizes the
5195following command-line syntax:
10998722 5196@smallexample
87885426 5197ex +@var{number} file
10998722 5198@end smallexample
15387254
EZ
5199The optional numeric value +@var{number} specifies the number of the line in
5200the file where to start editing.}.
5201By default, it is @file{@value{EDITOR}}, but you can change this
10998722
AC
5202by setting the environment variable @code{EDITOR} before using
5203@value{GDBN}. For example, to configure @value{GDBN} to use the
5204@code{vi} editor, you could use these commands with the @code{sh} shell:
5205@smallexample
87885426
FN
5206EDITOR=/usr/bin/vi
5207export EDITOR
15387254 5208gdb @dots{}
10998722 5209@end smallexample
87885426 5210or in the @code{csh} shell,
10998722 5211@smallexample
87885426 5212setenv EDITOR /usr/bin/vi
15387254 5213gdb @dots{}
10998722 5214@end smallexample
87885426 5215
6d2ebf8b 5216@node Search
79a6e687 5217@section Searching Source Files
15387254 5218@cindex searching source files
c906108c
SS
5219
5220There are two commands for searching through the current source file for a
5221regular expression.
5222
5223@table @code
5224@kindex search
5225@kindex forward-search
5226@item forward-search @var{regexp}
5227@itemx search @var{regexp}
5228The command @samp{forward-search @var{regexp}} checks each line,
5229starting with the one following the last line listed, for a match for
5d161b24 5230@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
5231synonym @samp{search @var{regexp}} or abbreviate the command name as
5232@code{fo}.
5233
09d4efe1 5234@kindex reverse-search
c906108c
SS
5235@item reverse-search @var{regexp}
5236The command @samp{reverse-search @var{regexp}} checks each line, starting
5237with the one before the last line listed and going backward, for a match
5238for @var{regexp}. It lists the line that is found. You can abbreviate
5239this command as @code{rev}.
5240@end table
c906108c 5241
6d2ebf8b 5242@node Source Path
79a6e687 5243@section Specifying Source Directories
c906108c
SS
5244
5245@cindex source path
5246@cindex directories for source files
5247Executable programs sometimes do not record the directories of the source
5248files from which they were compiled, just the names. Even when they do,
5249the directories could be moved between the compilation and your debugging
5250session. @value{GDBN} has a list of directories to search for source files;
5251this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
5252it tries all the directories in the list, in the order they are present
0b66e38c
EZ
5253in the list, until it finds a file with the desired name.
5254
5255For example, suppose an executable references the file
5256@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
5257@file{/mnt/cross}. The file is first looked up literally; if this
5258fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
5259fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
5260message is printed. @value{GDBN} does not look up the parts of the
5261source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
5262Likewise, the subdirectories of the source path are not searched: if
5263the source path is @file{/mnt/cross}, and the binary refers to
5264@file{foo.c}, @value{GDBN} would not find it under
5265@file{/mnt/cross/usr/src/foo-1.0/lib}.
5266
5267Plain file names, relative file names with leading directories, file
5268names containing dots, etc.@: are all treated as described above; for
5269instance, if the source path is @file{/mnt/cross}, and the source file
5270is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
5271@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
5272that---@file{/mnt/cross/foo.c}.
5273
5274Note that the executable search path is @emph{not} used to locate the
cd852561 5275source files.
c906108c
SS
5276
5277Whenever you reset or rearrange the source path, @value{GDBN} clears out
5278any information it has cached about where source files are found and where
5279each line is in the file.
5280
5281@kindex directory
5282@kindex dir
d4f3574e
SS
5283When you start @value{GDBN}, its source path includes only @samp{cdir}
5284and @samp{cwd}, in that order.
c906108c
SS
5285To add other directories, use the @code{directory} command.
5286
4b505b12
AS
5287The search path is used to find both program source files and @value{GDBN}
5288script files (read using the @samp{-command} option and @samp{source} command).
5289
30daae6c
JB
5290In addition to the source path, @value{GDBN} provides a set of commands
5291that manage a list of source path substitution rules. A @dfn{substitution
5292rule} specifies how to rewrite source directories stored in the program's
5293debug information in case the sources were moved to a different
5294directory between compilation and debugging. A rule is made of
5295two strings, the first specifying what needs to be rewritten in
5296the path, and the second specifying how it should be rewritten.
5297In @ref{set substitute-path}, we name these two parts @var{from} and
5298@var{to} respectively. @value{GDBN} does a simple string replacement
5299of @var{from} with @var{to} at the start of the directory part of the
5300source file name, and uses that result instead of the original file
5301name to look up the sources.
5302
5303Using the previous example, suppose the @file{foo-1.0} tree has been
5304moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell
3f94c067 5305@value{GDBN} to replace @file{/usr/src} in all source path names with
30daae6c
JB
5306@file{/mnt/cross}. The first lookup will then be
5307@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location
5308of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path
5309substitution rule, use the @code{set substitute-path} command
5310(@pxref{set substitute-path}).
5311
5312To avoid unexpected substitution results, a rule is applied only if the
5313@var{from} part of the directory name ends at a directory separator.
5314For instance, a rule substituting @file{/usr/source} into
5315@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but
5316not to @file{/usr/sourceware/foo-2.0}. And because the substitution
d3e8051b 5317is applied only at the beginning of the directory name, this rule will
30daae6c
JB
5318not be applied to @file{/root/usr/source/baz.c} either.
5319
5320In many cases, you can achieve the same result using the @code{directory}
5321command. However, @code{set substitute-path} can be more efficient in
5322the case where the sources are organized in a complex tree with multiple
5323subdirectories. With the @code{directory} command, you need to add each
5324subdirectory of your project. If you moved the entire tree while
5325preserving its internal organization, then @code{set substitute-path}
5326allows you to direct the debugger to all the sources with one single
5327command.
5328
5329@code{set substitute-path} is also more than just a shortcut command.
5330The source path is only used if the file at the original location no
5331longer exists. On the other hand, @code{set substitute-path} modifies
5332the debugger behavior to look at the rewritten location instead. So, if
5333for any reason a source file that is not relevant to your executable is
5334located at the original location, a substitution rule is the only
3f94c067 5335method available to point @value{GDBN} at the new location.
30daae6c 5336
c906108c
SS
5337@table @code
5338@item directory @var{dirname} @dots{}
5339@item dir @var{dirname} @dots{}
5340Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
5341directory names may be given to this command, separated by @samp{:}
5342(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
5343part of absolute file names) or
c906108c
SS
5344whitespace. You may specify a directory that is already in the source
5345path; this moves it forward, so @value{GDBN} searches it sooner.
5346
5347@kindex cdir
5348@kindex cwd
41afff9a 5349@vindex $cdir@r{, convenience variable}
d3e8051b 5350@vindex $cwd@r{, convenience variable}
c906108c
SS
5351@cindex compilation directory
5352@cindex current directory
5353@cindex working directory
5354@cindex directory, current
5355@cindex directory, compilation
5356You can use the string @samp{$cdir} to refer to the compilation
5357directory (if one is recorded), and @samp{$cwd} to refer to the current
5358working directory. @samp{$cwd} is not the same as @samp{.}---the former
5359tracks the current working directory as it changes during your @value{GDBN}
5360session, while the latter is immediately expanded to the current
5361directory at the time you add an entry to the source path.
5362
5363@item directory
cd852561 5364Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation.
c906108c
SS
5365
5366@c RET-repeat for @code{directory} is explicitly disabled, but since
5367@c repeating it would be a no-op we do not say that. (thanks to RMS)
5368
5369@item show directories
5370@kindex show directories
5371Print the source path: show which directories it contains.
30daae6c
JB
5372
5373@anchor{set substitute-path}
5374@item set substitute-path @var{from} @var{to}
5375@kindex set substitute-path
5376Define a source path substitution rule, and add it at the end of the
5377current list of existing substitution rules. If a rule with the same
5378@var{from} was already defined, then the old rule is also deleted.
5379
5380For example, if the file @file{/foo/bar/baz.c} was moved to
5381@file{/mnt/cross/baz.c}, then the command
5382
5383@smallexample
5384(@value{GDBP}) set substitute-path /usr/src /mnt/cross
5385@end smallexample
5386
5387@noindent
5388will tell @value{GDBN} to replace @samp{/usr/src} with
5389@samp{/mnt/cross}, which will allow @value{GDBN} to find the file
5390@file{baz.c} even though it was moved.
5391
5392In the case when more than one substitution rule have been defined,
5393the rules are evaluated one by one in the order where they have been
5394defined. The first one matching, if any, is selected to perform
5395the substitution.
5396
5397For instance, if we had entered the following commands:
5398
5399@smallexample
5400(@value{GDBP}) set substitute-path /usr/src/include /mnt/include
5401(@value{GDBP}) set substitute-path /usr/src /mnt/src
5402@end smallexample
5403
5404@noindent
5405@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into
5406@file{/mnt/include/defs.h} by using the first rule. However, it would
5407use the second rule to rewrite @file{/usr/src/lib/foo.c} into
5408@file{/mnt/src/lib/foo.c}.
5409
5410
5411@item unset substitute-path [path]
5412@kindex unset substitute-path
5413If a path is specified, search the current list of substitution rules
5414for a rule that would rewrite that path. Delete that rule if found.
5415A warning is emitted by the debugger if no rule could be found.
5416
5417If no path is specified, then all substitution rules are deleted.
5418
5419@item show substitute-path [path]
5420@kindex show substitute-path
5421If a path is specified, then print the source path substitution rule
5422which would rewrite that path, if any.
5423
5424If no path is specified, then print all existing source path substitution
5425rules.
5426
c906108c
SS
5427@end table
5428
5429If your source path is cluttered with directories that are no longer of
5430interest, @value{GDBN} may sometimes cause confusion by finding the wrong
5431versions of source. You can correct the situation as follows:
5432
5433@enumerate
5434@item
cd852561 5435Use @code{directory} with no argument to reset the source path to its default value.
c906108c
SS
5436
5437@item
5438Use @code{directory} with suitable arguments to reinstall the
5439directories you want in the source path. You can add all the
5440directories in one command.
5441@end enumerate
5442
6d2ebf8b 5443@node Machine Code
79a6e687 5444@section Source and Machine Code
15387254 5445@cindex source line and its code address
c906108c
SS
5446
5447You can use the command @code{info line} to map source lines to program
5448addresses (and vice versa), and the command @code{disassemble} to display
5449a range of addresses as machine instructions. When run under @sc{gnu} Emacs
d4f3574e 5450mode, the @code{info line} command causes the arrow to point to the
5d161b24 5451line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
5452well as hex.
5453
5454@table @code
5455@kindex info line
5456@item info line @var{linespec}
5457Print the starting and ending addresses of the compiled code for
5458source line @var{linespec}. You can specify source lines in any of
2a25a5ba 5459the ways documented in @ref{Specify Location}.
c906108c
SS
5460@end table
5461
5462For example, we can use @code{info line} to discover the location of
5463the object code for the first line of function
5464@code{m4_changequote}:
5465
d4f3574e
SS
5466@c FIXME: I think this example should also show the addresses in
5467@c symbolic form, as they usually would be displayed.
c906108c 5468@smallexample
96a2c332 5469(@value{GDBP}) info line m4_changequote
c906108c
SS
5470Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
5471@end smallexample
5472
5473@noindent
15387254 5474@cindex code address and its source line
c906108c
SS
5475We can also inquire (using @code{*@var{addr}} as the form for
5476@var{linespec}) what source line covers a particular address:
5477@smallexample
5478(@value{GDBP}) info line *0x63ff
5479Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
5480@end smallexample
5481
5482@cindex @code{$_} and @code{info line}
15387254 5483@cindex @code{x} command, default address
41afff9a 5484@kindex x@r{(examine), and} info line
c906108c
SS
5485After @code{info line}, the default address for the @code{x} command
5486is changed to the starting address of the line, so that @samp{x/i} is
5487sufficient to begin examining the machine code (@pxref{Memory,
79a6e687 5488,Examining Memory}). Also, this address is saved as the value of the
c906108c 5489convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
79a6e687 5490Variables}).
c906108c
SS
5491
5492@table @code
5493@kindex disassemble
5494@cindex assembly instructions
5495@cindex instructions, assembly
5496@cindex machine instructions
5497@cindex listing machine instructions
5498@item disassemble
d14508fe 5499@itemx disassemble /m
c906108c 5500This specialized command dumps a range of memory as machine
d14508fe
DE
5501instructions. It can also print mixed source+disassembly by specifying
5502the @code{/m} modifier.
5503The default memory range is the function surrounding the
c906108c
SS
5504program counter of the selected frame. A single argument to this
5505command is a program counter value; @value{GDBN} dumps the function
5506surrounding this value. Two arguments specify a range of addresses
5507(first inclusive, second exclusive) to dump.
5508@end table
5509
c906108c
SS
5510The following example shows the disassembly of a range of addresses of
5511HP PA-RISC 2.0 code:
5512
5513@smallexample
5514(@value{GDBP}) disas 0x32c4 0x32e4
5515Dump of assembler code from 0x32c4 to 0x32e4:
55160x32c4 <main+204>: addil 0,dp
55170x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
55180x32cc <main+212>: ldil 0x3000,r31
55190x32d0 <main+216>: ble 0x3f8(sr4,r31)
55200x32d4 <main+220>: ldo 0(r31),rp
55210x32d8 <main+224>: addil -0x800,dp
55220x32dc <main+228>: ldo 0x588(r1),r26
55230x32e0 <main+232>: ldil 0x3000,r31
5524End of assembler dump.
5525@end smallexample
c906108c 5526
d14508fe
DE
5527Here is an example showing mixed source+assembly for Intel x86:
5528
5529@smallexample
5530(@value{GDBP}) disas /m main
5531Dump of assembler code for function main:
55325 @{
55330x08048330 <main+0>: push %ebp
55340x08048331 <main+1>: mov %esp,%ebp
55350x08048333 <main+3>: sub $0x8,%esp
55360x08048336 <main+6>: and $0xfffffff0,%esp
55370x08048339 <main+9>: sub $0x10,%esp
5538
55396 printf ("Hello.\n");
55400x0804833c <main+12>: movl $0x8048440,(%esp)
55410x08048343 <main+19>: call 0x8048284 <puts@@plt>
5542
55437 return 0;
55448 @}
55450x08048348 <main+24>: mov $0x0,%eax
55460x0804834d <main+29>: leave
55470x0804834e <main+30>: ret
5548
5549End of assembler dump.
5550@end smallexample
5551
c906108c
SS
5552Some architectures have more than one commonly-used set of instruction
5553mnemonics or other syntax.
5554
76d17f34
EZ
5555For programs that were dynamically linked and use shared libraries,
5556instructions that call functions or branch to locations in the shared
5557libraries might show a seemingly bogus location---it's actually a
5558location of the relocation table. On some architectures, @value{GDBN}
5559might be able to resolve these to actual function names.
5560
c906108c 5561@table @code
d4f3574e 5562@kindex set disassembly-flavor
d4f3574e
SS
5563@cindex Intel disassembly flavor
5564@cindex AT&T disassembly flavor
5565@item set disassembly-flavor @var{instruction-set}
c906108c
SS
5566Select the instruction set to use when disassembling the
5567program via the @code{disassemble} or @code{x/i} commands.
5568
5569Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
5570can set @var{instruction-set} to either @code{intel} or @code{att}.
5571The default is @code{att}, the AT&T flavor used by default by Unix
5572assemblers for x86-based targets.
9c16f35a
EZ
5573
5574@kindex show disassembly-flavor
5575@item show disassembly-flavor
5576Show the current setting of the disassembly flavor.
c906108c
SS
5577@end table
5578
5579
6d2ebf8b 5580@node Data
c906108c
SS
5581@chapter Examining Data
5582
5583@cindex printing data
5584@cindex examining data
5585@kindex print
5586@kindex inspect
5587@c "inspect" is not quite a synonym if you are using Epoch, which we do not
5588@c document because it is nonstandard... Under Epoch it displays in a
5589@c different window or something like that.
5590The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
5591command (abbreviated @code{p}), or its synonym @code{inspect}. It
5592evaluates and prints the value of an expression of the language your
5593program is written in (@pxref{Languages, ,Using @value{GDBN} with
5594Different Languages}).
c906108c
SS
5595
5596@table @code
d4f3574e
SS
5597@item print @var{expr}
5598@itemx print /@var{f} @var{expr}
5599@var{expr} is an expression (in the source language). By default the
5600value of @var{expr} is printed in a format appropriate to its data type;
c906108c 5601you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 5602@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
79a6e687 5603Formats}.
c906108c
SS
5604
5605@item print
5606@itemx print /@var{f}
15387254 5607@cindex reprint the last value
d4f3574e 5608If you omit @var{expr}, @value{GDBN} displays the last value again (from the
79a6e687 5609@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to
c906108c
SS
5610conveniently inspect the same value in an alternative format.
5611@end table
5612
5613A more low-level way of examining data is with the @code{x} command.
5614It examines data in memory at a specified address and prints it in a
79a6e687 5615specified format. @xref{Memory, ,Examining Memory}.
c906108c 5616
7a292a7a 5617If you are interested in information about types, or about how the
d4f3574e
SS
5618fields of a struct or a class are declared, use the @code{ptype @var{exp}}
5619command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 5620Table}.
c906108c
SS
5621
5622@menu
5623* Expressions:: Expressions
6ba66d6a 5624* Ambiguous Expressions:: Ambiguous Expressions
c906108c
SS
5625* Variables:: Program variables
5626* Arrays:: Artificial arrays
5627* Output Formats:: Output formats
5628* Memory:: Examining memory
5629* Auto Display:: Automatic display
5630* Print Settings:: Print settings
5631* Value History:: Value history
5632* Convenience Vars:: Convenience variables
5633* Registers:: Registers
c906108c 5634* Floating Point Hardware:: Floating point hardware
53c69bd7 5635* Vector Unit:: Vector Unit
721c2651 5636* OS Information:: Auxiliary data provided by operating system
29e57380 5637* Memory Region Attributes:: Memory region attributes
16d9dec6 5638* Dump/Restore Files:: Copy between memory and a file
384ee23f 5639* Core File Generation:: Cause a program dump its core
a0eb71c5
KB
5640* Character Sets:: Debugging programs that use a different
5641 character set than GDB does
09d4efe1 5642* Caching Remote Data:: Data caching for remote targets
08388c79 5643* Searching Memory:: Searching memory for a sequence of bytes
c906108c
SS
5644@end menu
5645
6d2ebf8b 5646@node Expressions
c906108c
SS
5647@section Expressions
5648
5649@cindex expressions
5650@code{print} and many other @value{GDBN} commands accept an expression and
5651compute its value. Any kind of constant, variable or operator defined
5652by the programming language you are using is valid in an expression in
e2e0bcd1
JB
5653@value{GDBN}. This includes conditional expressions, function calls,
5654casts, and string constants. It also includes preprocessor macros, if
5655you compiled your program to include this information; see
5656@ref{Compilation}.
c906108c 5657
15387254 5658@cindex arrays in expressions
d4f3574e
SS
5659@value{GDBN} supports array constants in expressions input by
5660the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
63092375
DJ
5661you can use the command @code{print @{1, 2, 3@}} to create an array
5662of three integers. If you pass an array to a function or assign it
5663to a program variable, @value{GDBN} copies the array to memory that
5664is @code{malloc}ed in the target program.
c906108c 5665
c906108c
SS
5666Because C is so widespread, most of the expressions shown in examples in
5667this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
5668Languages}, for information on how to use expressions in other
5669languages.
5670
5671In this section, we discuss operators that you can use in @value{GDBN}
5672expressions regardless of your programming language.
5673
15387254 5674@cindex casts, in expressions
c906108c
SS
5675Casts are supported in all languages, not just in C, because it is so
5676useful to cast a number into a pointer in order to examine a structure
5677at that address in memory.
5678@c FIXME: casts supported---Mod2 true?
c906108c
SS
5679
5680@value{GDBN} supports these operators, in addition to those common
5681to programming languages:
5682
5683@table @code
5684@item @@
5685@samp{@@} is a binary operator for treating parts of memory as arrays.
79a6e687 5686@xref{Arrays, ,Artificial Arrays}, for more information.
c906108c
SS
5687
5688@item ::
5689@samp{::} allows you to specify a variable in terms of the file or
79a6e687 5690function where it is defined. @xref{Variables, ,Program Variables}.
c906108c
SS
5691
5692@cindex @{@var{type}@}
5693@cindex type casting memory
5694@cindex memory, viewing as typed object
5695@cindex casts, to view memory
5696@item @{@var{type}@} @var{addr}
5697Refers to an object of type @var{type} stored at address @var{addr} in
5698memory. @var{addr} may be any expression whose value is an integer or
5699pointer (but parentheses are required around binary operators, just as in
5700a cast). This construct is allowed regardless of what kind of data is
5701normally supposed to reside at @var{addr}.
5702@end table
5703
6ba66d6a
JB
5704@node Ambiguous Expressions
5705@section Ambiguous Expressions
5706@cindex ambiguous expressions
5707
5708Expressions can sometimes contain some ambiguous elements. For instance,
5709some programming languages (notably Ada, C@t{++} and Objective-C) permit
5710a single function name to be defined several times, for application in
5711different contexts. This is called @dfn{overloading}. Another example
5712involving Ada is generics. A @dfn{generic package} is similar to C@t{++}
5713templates and is typically instantiated several times, resulting in
5714the same function name being defined in different contexts.
5715
5716In some cases and depending on the language, it is possible to adjust
5717the expression to remove the ambiguity. For instance in C@t{++}, you
5718can specify the signature of the function you want to break on, as in
5719@kbd{break @var{function}(@var{types})}. In Ada, using the fully
5720qualified name of your function often makes the expression unambiguous
5721as well.
5722
5723When an ambiguity that needs to be resolved is detected, the debugger
5724has the capability to display a menu of numbered choices for each
5725possibility, and then waits for the selection with the prompt @samp{>}.
5726The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}}
5727aborts the current command. If the command in which the expression was
5728used allows more than one choice to be selected, the next option in the
5729menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible
5730choices.
5731
5732For example, the following session excerpt shows an attempt to set a
5733breakpoint at the overloaded symbol @code{String::after}.
5734We choose three particular definitions of that function name:
5735
5736@c FIXME! This is likely to change to show arg type lists, at least
5737@smallexample
5738@group
5739(@value{GDBP}) b String::after
5740[0] cancel
5741[1] all
5742[2] file:String.cc; line number:867
5743[3] file:String.cc; line number:860
5744[4] file:String.cc; line number:875
5745[5] file:String.cc; line number:853
5746[6] file:String.cc; line number:846
5747[7] file:String.cc; line number:735
5748> 2 4 6
5749Breakpoint 1 at 0xb26c: file String.cc, line 867.
5750Breakpoint 2 at 0xb344: file String.cc, line 875.
5751Breakpoint 3 at 0xafcc: file String.cc, line 846.
5752Multiple breakpoints were set.
5753Use the "delete" command to delete unwanted
5754 breakpoints.
5755(@value{GDBP})
5756@end group
5757@end smallexample
5758
5759@table @code
5760@kindex set multiple-symbols
5761@item set multiple-symbols @var{mode}
5762@cindex multiple-symbols menu
5763
5764This option allows you to adjust the debugger behavior when an expression
5765is ambiguous.
5766
5767By default, @var{mode} is set to @code{all}. If the command with which
5768the expression is used allows more than one choice, then @value{GDBN}
5769automatically selects all possible choices. For instance, inserting
5770a breakpoint on a function using an ambiguous name results in a breakpoint
5771inserted on each possible match. However, if a unique choice must be made,
5772then @value{GDBN} uses the menu to help you disambiguate the expression.
5773For instance, printing the address of an overloaded function will result
5774in the use of the menu.
5775
5776When @var{mode} is set to @code{ask}, the debugger always uses the menu
5777when an ambiguity is detected.
5778
5779Finally, when @var{mode} is set to @code{cancel}, the debugger reports
5780an error due to the ambiguity and the command is aborted.
5781
5782@kindex show multiple-symbols
5783@item show multiple-symbols
5784Show the current value of the @code{multiple-symbols} setting.
5785@end table
5786
6d2ebf8b 5787@node Variables
79a6e687 5788@section Program Variables
c906108c
SS
5789
5790The most common kind of expression to use is the name of a variable
5791in your program.
5792
5793Variables in expressions are understood in the selected stack frame
79a6e687 5794(@pxref{Selection, ,Selecting a Frame}); they must be either:
c906108c
SS
5795
5796@itemize @bullet
5797@item
5798global (or file-static)
5799@end itemize
5800
5d161b24 5801@noindent or
c906108c
SS
5802
5803@itemize @bullet
5804@item
5805visible according to the scope rules of the
5806programming language from the point of execution in that frame
5d161b24 5807@end itemize
c906108c
SS
5808
5809@noindent This means that in the function
5810
474c8240 5811@smallexample
c906108c
SS
5812foo (a)
5813 int a;
5814@{
5815 bar (a);
5816 @{
5817 int b = test ();
5818 bar (b);
5819 @}
5820@}
474c8240 5821@end smallexample
c906108c
SS
5822
5823@noindent
5824you can examine and use the variable @code{a} whenever your program is
5825executing within the function @code{foo}, but you can only use or
5826examine the variable @code{b} while your program is executing inside
5827the block where @code{b} is declared.
5828
5829@cindex variable name conflict
5830There is an exception: you can refer to a variable or function whose
5831scope is a single source file even if the current execution point is not
5832in this file. But it is possible to have more than one such variable or
5833function with the same name (in different source files). If that
5834happens, referring to that name has unpredictable effects. If you wish,
5835you can specify a static variable in a particular function or file,
15387254 5836using the colon-colon (@code{::}) notation:
c906108c 5837
d4f3574e 5838@cindex colon-colon, context for variables/functions
12c27660 5839@ifnotinfo
c906108c 5840@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 5841@cindex @code{::}, context for variables/functions
12c27660 5842@end ifnotinfo
474c8240 5843@smallexample
c906108c
SS
5844@var{file}::@var{variable}
5845@var{function}::@var{variable}
474c8240 5846@end smallexample
c906108c
SS
5847
5848@noindent
5849Here @var{file} or @var{function} is the name of the context for the
5850static @var{variable}. In the case of file names, you can use quotes to
5851make sure @value{GDBN} parses the file name as a single word---for example,
5852to print a global value of @code{x} defined in @file{f2.c}:
5853
474c8240 5854@smallexample
c906108c 5855(@value{GDBP}) p 'f2.c'::x
474c8240 5856@end smallexample
c906108c 5857
b37052ae 5858@cindex C@t{++} scope resolution
c906108c 5859This use of @samp{::} is very rarely in conflict with the very similar
b37052ae 5860use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
5861scope resolution operator in @value{GDBN} expressions.
5862@c FIXME: Um, so what happens in one of those rare cases where it's in
5863@c conflict?? --mew
c906108c
SS
5864
5865@cindex wrong values
5866@cindex variable values, wrong
15387254
EZ
5867@cindex function entry/exit, wrong values of variables
5868@cindex optimized code, wrong values of variables
c906108c
SS
5869@quotation
5870@emph{Warning:} Occasionally, a local variable may appear to have the
5871wrong value at certain points in a function---just after entry to a new
5872scope, and just before exit.
5873@end quotation
5874You may see this problem when you are stepping by machine instructions.
5875This is because, on most machines, it takes more than one instruction to
5876set up a stack frame (including local variable definitions); if you are
5877stepping by machine instructions, variables may appear to have the wrong
5878values until the stack frame is completely built. On exit, it usually
5879also takes more than one machine instruction to destroy a stack frame;
5880after you begin stepping through that group of instructions, local
5881variable definitions may be gone.
5882
5883This may also happen when the compiler does significant optimizations.
5884To be sure of always seeing accurate values, turn off all optimization
5885when compiling.
5886
d4f3574e
SS
5887@cindex ``No symbol "foo" in current context''
5888Another possible effect of compiler optimizations is to optimize
5889unused variables out of existence, or assign variables to registers (as
5890opposed to memory addresses). Depending on the support for such cases
5891offered by the debug info format used by the compiler, @value{GDBN}
5892might not be able to display values for such local variables. If that
5893happens, @value{GDBN} will print a message like this:
5894
474c8240 5895@smallexample
d4f3574e 5896No symbol "foo" in current context.
474c8240 5897@end smallexample
d4f3574e
SS
5898
5899To solve such problems, either recompile without optimizations, or use a
5900different debug info format, if the compiler supports several such
15387254 5901formats. For example, @value{NGCC}, the @sc{gnu} C/C@t{++} compiler,
0179ffac
DC
5902usually supports the @option{-gstabs+} option. @option{-gstabs+}
5903produces debug info in a format that is superior to formats such as
5904COFF. You may be able to use DWARF 2 (@option{-gdwarf-2}), which is also
5905an effective form for debug info. @xref{Debugging Options,,Options
ce9341a1
BW
5906for Debugging Your Program or GCC, gcc.info, Using the @sc{gnu}
5907Compiler Collection (GCC)}.
79a6e687 5908@xref{C, ,C and C@t{++}}, for more information about debug info formats
15387254 5909that are best suited to C@t{++} programs.
d4f3574e 5910
ab1adacd
EZ
5911If you ask to print an object whose contents are unknown to
5912@value{GDBN}, e.g., because its data type is not completely specified
5913by the debug information, @value{GDBN} will say @samp{<incomplete
5914type>}. @xref{Symbols, incomplete type}, for more about this.
5915
3a60f64e
JK
5916Strings are identified as arrays of @code{char} values without specified
5917signedness. Arrays of either @code{signed char} or @code{unsigned char} get
5918printed as arrays of 1 byte sized integers. @code{-fsigned-char} or
5919@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN}
5920defines literal string type @code{"char"} as @code{char} without a sign.
5921For program code
5922
5923@smallexample
5924char var0[] = "A";
5925signed char var1[] = "A";
5926@end smallexample
5927
5928You get during debugging
5929@smallexample
5930(gdb) print var0
5931$1 = "A"
5932(gdb) print var1
5933$2 = @{65 'A', 0 '\0'@}
5934@end smallexample
5935
6d2ebf8b 5936@node Arrays
79a6e687 5937@section Artificial Arrays
c906108c
SS
5938
5939@cindex artificial array
15387254 5940@cindex arrays
41afff9a 5941@kindex @@@r{, referencing memory as an array}
c906108c
SS
5942It is often useful to print out several successive objects of the
5943same type in memory; a section of an array, or an array of
5944dynamically determined size for which only a pointer exists in the
5945program.
5946
5947You can do this by referring to a contiguous span of memory as an
5948@dfn{artificial array}, using the binary operator @samp{@@}. The left
5949operand of @samp{@@} should be the first element of the desired array
5950and be an individual object. The right operand should be the desired length
5951of the array. The result is an array value whose elements are all of
5952the type of the left argument. The first element is actually the left
5953argument; the second element comes from bytes of memory immediately
5954following those that hold the first element, and so on. Here is an
5955example. If a program says
5956
474c8240 5957@smallexample
c906108c 5958int *array = (int *) malloc (len * sizeof (int));
474c8240 5959@end smallexample
c906108c
SS
5960
5961@noindent
5962you can print the contents of @code{array} with
5963
474c8240 5964@smallexample
c906108c 5965p *array@@len
474c8240 5966@end smallexample
c906108c
SS
5967
5968The left operand of @samp{@@} must reside in memory. Array values made
5969with @samp{@@} in this way behave just like other arrays in terms of
5970subscripting, and are coerced to pointers when used in expressions.
5971Artificial arrays most often appear in expressions via the value history
79a6e687 5972(@pxref{Value History, ,Value History}), after printing one out.
c906108c
SS
5973
5974Another way to create an artificial array is to use a cast.
5975This re-interprets a value as if it were an array.
5976The value need not be in memory:
474c8240 5977@smallexample
c906108c
SS
5978(@value{GDBP}) p/x (short[2])0x12345678
5979$1 = @{0x1234, 0x5678@}
474c8240 5980@end smallexample
c906108c
SS
5981
5982As a convenience, if you leave the array length out (as in
c3f6f71d 5983@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c 5984the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
474c8240 5985@smallexample
c906108c
SS
5986(@value{GDBP}) p/x (short[])0x12345678
5987$2 = @{0x1234, 0x5678@}
474c8240 5988@end smallexample
c906108c
SS
5989
5990Sometimes the artificial array mechanism is not quite enough; in
5991moderately complex data structures, the elements of interest may not
5992actually be adjacent---for example, if you are interested in the values
5993of pointers in an array. One useful work-around in this situation is
5994to use a convenience variable (@pxref{Convenience Vars, ,Convenience
79a6e687 5995Variables}) as a counter in an expression that prints the first
c906108c
SS
5996interesting value, and then repeat that expression via @key{RET}. For
5997instance, suppose you have an array @code{dtab} of pointers to
5998structures, and you are interested in the values of a field @code{fv}
5999in each structure. Here is an example of what you might type:
6000
474c8240 6001@smallexample
c906108c
SS
6002set $i = 0
6003p dtab[$i++]->fv
6004@key{RET}
6005@key{RET}
6006@dots{}
474c8240 6007@end smallexample
c906108c 6008
6d2ebf8b 6009@node Output Formats
79a6e687 6010@section Output Formats
c906108c
SS
6011
6012@cindex formatted output
6013@cindex output formats
6014By default, @value{GDBN} prints a value according to its data type. Sometimes
6015this is not what you want. For example, you might want to print a number
6016in hex, or a pointer in decimal. Or you might want to view data in memory
6017at a certain address as a character string or as an instruction. To do
6018these things, specify an @dfn{output format} when you print a value.
6019
6020The simplest use of output formats is to say how to print a value
6021already computed. This is done by starting the arguments of the
6022@code{print} command with a slash and a format letter. The format
6023letters supported are:
6024
6025@table @code
6026@item x
6027Regard the bits of the value as an integer, and print the integer in
6028hexadecimal.
6029
6030@item d
6031Print as integer in signed decimal.
6032
6033@item u
6034Print as integer in unsigned decimal.
6035
6036@item o
6037Print as integer in octal.
6038
6039@item t
6040Print as integer in binary. The letter @samp{t} stands for ``two''.
6041@footnote{@samp{b} cannot be used because these format letters are also
6042used with the @code{x} command, where @samp{b} stands for ``byte'';
79a6e687 6043see @ref{Memory,,Examining Memory}.}
c906108c
SS
6044
6045@item a
6046@cindex unknown address, locating
3d67e040 6047@cindex locate address
c906108c
SS
6048Print as an address, both absolute in hexadecimal and as an offset from
6049the nearest preceding symbol. You can use this format used to discover
6050where (in what function) an unknown address is located:
6051
474c8240 6052@smallexample
c906108c
SS
6053(@value{GDBP}) p/a 0x54320
6054$3 = 0x54320 <_initialize_vx+396>
474c8240 6055@end smallexample
c906108c 6056
3d67e040
EZ
6057@noindent
6058The command @code{info symbol 0x54320} yields similar results.
6059@xref{Symbols, info symbol}.
6060
c906108c 6061@item c
51274035
EZ
6062Regard as an integer and print it as a character constant. This
6063prints both the numerical value and its character representation. The
6064character representation is replaced with the octal escape @samp{\nnn}
6065for characters outside the 7-bit @sc{ascii} range.
c906108c 6066
ea37ba09
DJ
6067Without this format, @value{GDBN} displays @code{char},
6068@w{@code{unsigned char}}, and @w{@code{signed char}} data as character
6069constants. Single-byte members of vectors are displayed as integer
6070data.
6071
c906108c
SS
6072@item f
6073Regard the bits of the value as a floating point number and print
6074using typical floating point syntax.
ea37ba09
DJ
6075
6076@item s
6077@cindex printing strings
6078@cindex printing byte arrays
6079Regard as a string, if possible. With this format, pointers to single-byte
6080data are displayed as null-terminated strings and arrays of single-byte data
6081are displayed as fixed-length strings. Other values are displayed in their
6082natural types.
6083
6084Without this format, @value{GDBN} displays pointers to and arrays of
6085@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
6086strings. Single-byte members of a vector are displayed as an integer
6087array.
c906108c
SS
6088@end table
6089
6090For example, to print the program counter in hex (@pxref{Registers}), type
6091
474c8240 6092@smallexample
c906108c 6093p/x $pc
474c8240 6094@end smallexample
c906108c
SS
6095
6096@noindent
6097Note that no space is required before the slash; this is because command
6098names in @value{GDBN} cannot contain a slash.
6099
6100To reprint the last value in the value history with a different format,
6101you can use the @code{print} command with just a format and no
6102expression. For example, @samp{p/x} reprints the last value in hex.
6103
6d2ebf8b 6104@node Memory
79a6e687 6105@section Examining Memory
c906108c
SS
6106
6107You can use the command @code{x} (for ``examine'') to examine memory in
6108any of several formats, independently of your program's data types.
6109
6110@cindex examining memory
6111@table @code
41afff9a 6112@kindex x @r{(examine memory)}
c906108c
SS
6113@item x/@var{nfu} @var{addr}
6114@itemx x @var{addr}
6115@itemx x
6116Use the @code{x} command to examine memory.
6117@end table
6118
6119@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
6120much memory to display and how to format it; @var{addr} is an
6121expression giving the address where you want to start displaying memory.
6122If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
6123Several commands set convenient defaults for @var{addr}.
6124
6125@table @r
6126@item @var{n}, the repeat count
6127The repeat count is a decimal integer; the default is 1. It specifies
6128how much memory (counting by units @var{u}) to display.
6129@c This really is **decimal**; unaffected by 'set radix' as of GDB
6130@c 4.1.2.
6131
6132@item @var{f}, the display format
51274035
EZ
6133The display format is one of the formats used by @code{print}
6134(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c},
ea37ba09
DJ
6135@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions).
6136The default is @samp{x} (hexadecimal) initially. The default changes
6137each time you use either @code{x} or @code{print}.
c906108c
SS
6138
6139@item @var{u}, the unit size
6140The unit size is any of
6141
6142@table @code
6143@item b
6144Bytes.
6145@item h
6146Halfwords (two bytes).
6147@item w
6148Words (four bytes). This is the initial default.
6149@item g
6150Giant words (eight bytes).
6151@end table
6152
6153Each time you specify a unit size with @code{x}, that size becomes the
6154default unit the next time you use @code{x}. (For the @samp{s} and
6155@samp{i} formats, the unit size is ignored and is normally not written.)
6156
6157@item @var{addr}, starting display address
6158@var{addr} is the address where you want @value{GDBN} to begin displaying
6159memory. The expression need not have a pointer value (though it may);
6160it is always interpreted as an integer address of a byte of memory.
6161@xref{Expressions, ,Expressions}, for more information on expressions. The default for
6162@var{addr} is usually just after the last address examined---but several
6163other commands also set the default address: @code{info breakpoints} (to
6164the address of the last breakpoint listed), @code{info line} (to the
6165starting address of a line), and @code{print} (if you use it to display
6166a value from memory).
6167@end table
6168
6169For example, @samp{x/3uh 0x54320} is a request to display three halfwords
6170(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
6171starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
6172words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 6173@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
6174
6175Since the letters indicating unit sizes are all distinct from the
6176letters specifying output formats, you do not have to remember whether
6177unit size or format comes first; either order works. The output
6178specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
6179(However, the count @var{n} must come first; @samp{wx4} does not work.)
6180
6181Even though the unit size @var{u} is ignored for the formats @samp{s}
6182and @samp{i}, you might still want to use a count @var{n}; for example,
6183@samp{3i} specifies that you want to see three machine instructions,
a4642986
MR
6184including any operands. For convenience, especially when used with
6185the @code{display} command, the @samp{i} format also prints branch delay
6186slot instructions, if any, beyond the count specified, which immediately
6187follow the last instruction that is within the count. The command
6188@code{disassemble} gives an alternative way of inspecting machine
6189instructions; see @ref{Machine Code,,Source and Machine Code}.
c906108c
SS
6190
6191All the defaults for the arguments to @code{x} are designed to make it
6192easy to continue scanning memory with minimal specifications each time
6193you use @code{x}. For example, after you have inspected three machine
6194instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
6195with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
6196the repeat count @var{n} is used again; the other arguments default as
6197for successive uses of @code{x}.
6198
6199@cindex @code{$_}, @code{$__}, and value history
6200The addresses and contents printed by the @code{x} command are not saved
6201in the value history because there is often too much of them and they
6202would get in the way. Instead, @value{GDBN} makes these values available for
6203subsequent use in expressions as values of the convenience variables
6204@code{$_} and @code{$__}. After an @code{x} command, the last address
6205examined is available for use in expressions in the convenience variable
6206@code{$_}. The contents of that address, as examined, are available in
6207the convenience variable @code{$__}.
6208
6209If the @code{x} command has a repeat count, the address and contents saved
6210are from the last memory unit printed; this is not the same as the last
6211address printed if several units were printed on the last line of output.
6212
09d4efe1
EZ
6213@cindex remote memory comparison
6214@cindex verify remote memory image
6215When you are debugging a program running on a remote target machine
ea35711c 6216(@pxref{Remote Debugging}), you may wish to verify the program's image in the
09d4efe1
EZ
6217remote machine's memory against the executable file you downloaded to
6218the target. The @code{compare-sections} command is provided for such
6219situations.
6220
6221@table @code
6222@kindex compare-sections
6223@item compare-sections @r{[}@var{section-name}@r{]}
6224Compare the data of a loadable section @var{section-name} in the
6225executable file of the program being debugged with the same section in
6226the remote machine's memory, and report any mismatches. With no
6227arguments, compares all loadable sections. This command's
6228availability depends on the target's support for the @code{"qCRC"}
6229remote request.
6230@end table
6231
6d2ebf8b 6232@node Auto Display
79a6e687 6233@section Automatic Display
c906108c
SS
6234@cindex automatic display
6235@cindex display of expressions
6236
6237If you find that you want to print the value of an expression frequently
6238(to see how it changes), you might want to add it to the @dfn{automatic
6239display list} so that @value{GDBN} prints its value each time your program stops.
6240Each expression added to the list is given a number to identify it;
6241to remove an expression from the list, you specify that number.
6242The automatic display looks like this:
6243
474c8240 6244@smallexample
c906108c
SS
62452: foo = 38
62463: bar[5] = (struct hack *) 0x3804
474c8240 6247@end smallexample
c906108c
SS
6248
6249@noindent
6250This display shows item numbers, expressions and their current values. As with
6251displays you request manually using @code{x} or @code{print}, you can
6252specify the output format you prefer; in fact, @code{display} decides
ea37ba09
DJ
6253whether to use @code{print} or @code{x} depending your format
6254specification---it uses @code{x} if you specify either the @samp{i}
6255or @samp{s} format, or a unit size; otherwise it uses @code{print}.
c906108c
SS
6256
6257@table @code
6258@kindex display
d4f3574e
SS
6259@item display @var{expr}
6260Add the expression @var{expr} to the list of expressions to display
c906108c
SS
6261each time your program stops. @xref{Expressions, ,Expressions}.
6262
6263@code{display} does not repeat if you press @key{RET} again after using it.
6264
d4f3574e 6265@item display/@var{fmt} @var{expr}
c906108c 6266For @var{fmt} specifying only a display format and not a size or
d4f3574e 6267count, add the expression @var{expr} to the auto-display list but
c906108c 6268arrange to display it each time in the specified format @var{fmt}.
79a6e687 6269@xref{Output Formats,,Output Formats}.
c906108c
SS
6270
6271@item display/@var{fmt} @var{addr}
6272For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
6273number of units, add the expression @var{addr} as a memory address to
6274be examined each time your program stops. Examining means in effect
79a6e687 6275doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}.
c906108c
SS
6276@end table
6277
6278For example, @samp{display/i $pc} can be helpful, to see the machine
6279instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 6280is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
6281
6282@table @code
6283@kindex delete display
6284@kindex undisplay
6285@item undisplay @var{dnums}@dots{}
6286@itemx delete display @var{dnums}@dots{}
6287Remove item numbers @var{dnums} from the list of expressions to display.
6288
6289@code{undisplay} does not repeat if you press @key{RET} after using it.
6290(Otherwise you would just get the error @samp{No display number @dots{}}.)
6291
6292@kindex disable display
6293@item disable display @var{dnums}@dots{}
6294Disable the display of item numbers @var{dnums}. A disabled display
6295item is not printed automatically, but is not forgotten. It may be
6296enabled again later.
6297
6298@kindex enable display
6299@item enable display @var{dnums}@dots{}
6300Enable display of item numbers @var{dnums}. It becomes effective once
6301again in auto display of its expression, until you specify otherwise.
6302
6303@item display
6304Display the current values of the expressions on the list, just as is
6305done when your program stops.
6306
6307@kindex info display
6308@item info display
6309Print the list of expressions previously set up to display
6310automatically, each one with its item number, but without showing the
6311values. This includes disabled expressions, which are marked as such.
6312It also includes expressions which would not be displayed right now
6313because they refer to automatic variables not currently available.
6314@end table
6315
15387254 6316@cindex display disabled out of scope
c906108c
SS
6317If a display expression refers to local variables, then it does not make
6318sense outside the lexical context for which it was set up. Such an
6319expression is disabled when execution enters a context where one of its
6320variables is not defined. For example, if you give the command
6321@code{display last_char} while inside a function with an argument
6322@code{last_char}, @value{GDBN} displays this argument while your program
6323continues to stop inside that function. When it stops elsewhere---where
6324there is no variable @code{last_char}---the display is disabled
6325automatically. The next time your program stops where @code{last_char}
6326is meaningful, you can enable the display expression once again.
6327
6d2ebf8b 6328@node Print Settings
79a6e687 6329@section Print Settings
c906108c
SS
6330
6331@cindex format options
6332@cindex print settings
6333@value{GDBN} provides the following ways to control how arrays, structures,
6334and symbols are printed.
6335
6336@noindent
6337These settings are useful for debugging programs in any language:
6338
6339@table @code
4644b6e3 6340@kindex set print
c906108c
SS
6341@item set print address
6342@itemx set print address on
4644b6e3 6343@cindex print/don't print memory addresses
c906108c
SS
6344@value{GDBN} prints memory addresses showing the location of stack
6345traces, structure values, pointer values, breakpoints, and so forth,
6346even when it also displays the contents of those addresses. The default
6347is @code{on}. For example, this is what a stack frame display looks like with
6348@code{set print address on}:
6349
6350@smallexample
6351@group
6352(@value{GDBP}) f
6353#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
6354 at input.c:530
6355530 if (lquote != def_lquote)
6356@end group
6357@end smallexample
6358
6359@item set print address off
6360Do not print addresses when displaying their contents. For example,
6361this is the same stack frame displayed with @code{set print address off}:
6362
6363@smallexample
6364@group
6365(@value{GDBP}) set print addr off
6366(@value{GDBP}) f
6367#0 set_quotes (lq="<<", rq=">>") at input.c:530
6368530 if (lquote != def_lquote)
6369@end group
6370@end smallexample
6371
6372You can use @samp{set print address off} to eliminate all machine
6373dependent displays from the @value{GDBN} interface. For example, with
6374@code{print address off}, you should get the same text for backtraces on
6375all machines---whether or not they involve pointer arguments.
6376
4644b6e3 6377@kindex show print
c906108c
SS
6378@item show print address
6379Show whether or not addresses are to be printed.
6380@end table
6381
6382When @value{GDBN} prints a symbolic address, it normally prints the
6383closest earlier symbol plus an offset. If that symbol does not uniquely
6384identify the address (for example, it is a name whose scope is a single
6385source file), you may need to clarify. One way to do this is with
6386@code{info line}, for example @samp{info line *0x4537}. Alternately,
6387you can set @value{GDBN} to print the source file and line number when
6388it prints a symbolic address:
6389
6390@table @code
c906108c 6391@item set print symbol-filename on
9c16f35a
EZ
6392@cindex source file and line of a symbol
6393@cindex symbol, source file and line
c906108c
SS
6394Tell @value{GDBN} to print the source file name and line number of a
6395symbol in the symbolic form of an address.
6396
6397@item set print symbol-filename off
6398Do not print source file name and line number of a symbol. This is the
6399default.
6400
c906108c
SS
6401@item show print symbol-filename
6402Show whether or not @value{GDBN} will print the source file name and
6403line number of a symbol in the symbolic form of an address.
6404@end table
6405
6406Another situation where it is helpful to show symbol filenames and line
6407numbers is when disassembling code; @value{GDBN} shows you the line
6408number and source file that corresponds to each instruction.
6409
6410Also, you may wish to see the symbolic form only if the address being
6411printed is reasonably close to the closest earlier symbol:
6412
6413@table @code
c906108c 6414@item set print max-symbolic-offset @var{max-offset}
4644b6e3 6415@cindex maximum value for offset of closest symbol
c906108c
SS
6416Tell @value{GDBN} to only display the symbolic form of an address if the
6417offset between the closest earlier symbol and the address is less than
5d161b24 6418@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
6419to always print the symbolic form of an address if any symbol precedes it.
6420
c906108c
SS
6421@item show print max-symbolic-offset
6422Ask how large the maximum offset is that @value{GDBN} prints in a
6423symbolic address.
6424@end table
6425
6426@cindex wild pointer, interpreting
6427@cindex pointer, finding referent
6428If you have a pointer and you are not sure where it points, try
6429@samp{set print symbol-filename on}. Then you can determine the name
6430and source file location of the variable where it points, using
6431@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
6432For example, here @value{GDBN} shows that a variable @code{ptt} points
6433at another variable @code{t}, defined in @file{hi2.c}:
6434
474c8240 6435@smallexample
c906108c
SS
6436(@value{GDBP}) set print symbol-filename on
6437(@value{GDBP}) p/a ptt
6438$4 = 0xe008 <t in hi2.c>
474c8240 6439@end smallexample
c906108c
SS
6440
6441@quotation
6442@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
6443does not show the symbol name and filename of the referent, even with
6444the appropriate @code{set print} options turned on.
6445@end quotation
6446
6447Other settings control how different kinds of objects are printed:
6448
6449@table @code
c906108c
SS
6450@item set print array
6451@itemx set print array on
4644b6e3 6452@cindex pretty print arrays
c906108c
SS
6453Pretty print arrays. This format is more convenient to read,
6454but uses more space. The default is off.
6455
6456@item set print array off
6457Return to compressed format for arrays.
6458
c906108c
SS
6459@item show print array
6460Show whether compressed or pretty format is selected for displaying
6461arrays.
6462
3c9c013a
JB
6463@cindex print array indexes
6464@item set print array-indexes
6465@itemx set print array-indexes on
6466Print the index of each element when displaying arrays. May be more
6467convenient to locate a given element in the array or quickly find the
6468index of a given element in that printed array. The default is off.
6469
6470@item set print array-indexes off
6471Stop printing element indexes when displaying arrays.
6472
6473@item show print array-indexes
6474Show whether the index of each element is printed when displaying
6475arrays.
6476
c906108c 6477@item set print elements @var{number-of-elements}
4644b6e3 6478@cindex number of array elements to print
9c16f35a 6479@cindex limit on number of printed array elements
c906108c
SS
6480Set a limit on how many elements of an array @value{GDBN} will print.
6481If @value{GDBN} is printing a large array, it stops printing after it has
6482printed the number of elements set by the @code{set print elements} command.
6483This limit also applies to the display of strings.
d4f3574e 6484When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
6485Setting @var{number-of-elements} to zero means that the printing is unlimited.
6486
c906108c
SS
6487@item show print elements
6488Display the number of elements of a large array that @value{GDBN} will print.
6489If the number is 0, then the printing is unlimited.
6490
b4740add
JB
6491@item set print frame-arguments @var{value}
6492@cindex printing frame argument values
6493@cindex print all frame argument values
6494@cindex print frame argument values for scalars only
6495@cindex do not print frame argument values
6496This command allows to control how the values of arguments are printed
6497when the debugger prints a frame (@pxref{Frames}). The possible
6498values are:
6499
6500@table @code
6501@item all
6502The values of all arguments are printed. This is the default.
6503
6504@item scalars
6505Print the value of an argument only if it is a scalar. The value of more
6506complex arguments such as arrays, structures, unions, etc, is replaced
6507by @code{@dots{}}. Here is an example where only scalar arguments are shown:
6508
6509@smallexample
6510#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green)
6511 at frame-args.c:23
6512@end smallexample
6513
6514@item none
6515None of the argument values are printed. Instead, the value of each argument
6516is replaced by @code{@dots{}}. In this case, the example above now becomes:
6517
6518@smallexample
6519#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
6520 at frame-args.c:23
6521@end smallexample
6522@end table
6523
6524By default, all argument values are always printed. But this command
6525can be useful in several cases. For instance, it can be used to reduce
6526the amount of information printed in each frame, making the backtrace
6527more readable. Also, this command can be used to improve performance
6528when displaying Ada frames, because the computation of large arguments
6529can sometimes be CPU-intensive, especiallly in large applications.
6530Setting @code{print frame-arguments} to @code{scalars} or @code{none}
6531avoids this computation, thus speeding up the display of each Ada frame.
6532
6533@item show print frame-arguments
6534Show how the value of arguments should be displayed when printing a frame.
6535
9c16f35a
EZ
6536@item set print repeats
6537@cindex repeated array elements
6538Set the threshold for suppressing display of repeated array
d3e8051b 6539elements. When the number of consecutive identical elements of an
9c16f35a
EZ
6540array exceeds the threshold, @value{GDBN} prints the string
6541@code{"<repeats @var{n} times>"}, where @var{n} is the number of
6542identical repetitions, instead of displaying the identical elements
6543themselves. Setting the threshold to zero will cause all elements to
6544be individually printed. The default threshold is 10.
6545
6546@item show print repeats
6547Display the current threshold for printing repeated identical
6548elements.
6549
c906108c 6550@item set print null-stop
4644b6e3 6551@cindex @sc{null} elements in arrays
c906108c 6552Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 6553@sc{null} is encountered. This is useful when large arrays actually
c906108c 6554contain only short strings.
d4f3574e 6555The default is off.
c906108c 6556
9c16f35a
EZ
6557@item show print null-stop
6558Show whether @value{GDBN} stops printing an array on the first
6559@sc{null} character.
6560
c906108c 6561@item set print pretty on
9c16f35a
EZ
6562@cindex print structures in indented form
6563@cindex indentation in structure display
5d161b24 6564Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
6565per line, like this:
6566
6567@smallexample
6568@group
6569$1 = @{
6570 next = 0x0,
6571 flags = @{
6572 sweet = 1,
6573 sour = 1
6574 @},
6575 meat = 0x54 "Pork"
6576@}
6577@end group
6578@end smallexample
6579
6580@item set print pretty off
6581Cause @value{GDBN} to print structures in a compact format, like this:
6582
6583@smallexample
6584@group
6585$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
6586meat = 0x54 "Pork"@}
6587@end group
6588@end smallexample
6589
6590@noindent
6591This is the default format.
6592
c906108c
SS
6593@item show print pretty
6594Show which format @value{GDBN} is using to print structures.
6595
c906108c 6596@item set print sevenbit-strings on
4644b6e3
EZ
6597@cindex eight-bit characters in strings
6598@cindex octal escapes in strings
c906108c
SS
6599Print using only seven-bit characters; if this option is set,
6600@value{GDBN} displays any eight-bit characters (in strings or
6601character values) using the notation @code{\}@var{nnn}. This setting is
6602best if you are working in English (@sc{ascii}) and you use the
6603high-order bit of characters as a marker or ``meta'' bit.
6604
6605@item set print sevenbit-strings off
6606Print full eight-bit characters. This allows the use of more
6607international character sets, and is the default.
6608
c906108c
SS
6609@item show print sevenbit-strings
6610Show whether or not @value{GDBN} is printing only seven-bit characters.
6611
c906108c 6612@item set print union on
4644b6e3 6613@cindex unions in structures, printing
9c16f35a
EZ
6614Tell @value{GDBN} to print unions which are contained in structures
6615and other unions. This is the default setting.
c906108c
SS
6616
6617@item set print union off
9c16f35a
EZ
6618Tell @value{GDBN} not to print unions which are contained in
6619structures and other unions. @value{GDBN} will print @code{"@{...@}"}
6620instead.
c906108c 6621
c906108c
SS
6622@item show print union
6623Ask @value{GDBN} whether or not it will print unions which are contained in
9c16f35a 6624structures and other unions.
c906108c
SS
6625
6626For example, given the declarations
6627
6628@smallexample
6629typedef enum @{Tree, Bug@} Species;
6630typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 6631typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
6632 Bug_forms;
6633
6634struct thing @{
6635 Species it;
6636 union @{
6637 Tree_forms tree;
6638 Bug_forms bug;
6639 @} form;
6640@};
6641
6642struct thing foo = @{Tree, @{Acorn@}@};
6643@end smallexample
6644
6645@noindent
6646with @code{set print union on} in effect @samp{p foo} would print
6647
6648@smallexample
6649$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
6650@end smallexample
6651
6652@noindent
6653and with @code{set print union off} in effect it would print
6654
6655@smallexample
6656$1 = @{it = Tree, form = @{...@}@}
6657@end smallexample
9c16f35a
EZ
6658
6659@noindent
6660@code{set print union} affects programs written in C-like languages
6661and in Pascal.
c906108c
SS
6662@end table
6663
c906108c
SS
6664@need 1000
6665@noindent
b37052ae 6666These settings are of interest when debugging C@t{++} programs:
c906108c
SS
6667
6668@table @code
4644b6e3 6669@cindex demangling C@t{++} names
c906108c
SS
6670@item set print demangle
6671@itemx set print demangle on
b37052ae 6672Print C@t{++} names in their source form rather than in the encoded
c906108c 6673(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 6674linkage. The default is on.
c906108c 6675
c906108c 6676@item show print demangle
b37052ae 6677Show whether C@t{++} names are printed in mangled or demangled form.
c906108c 6678
c906108c
SS
6679@item set print asm-demangle
6680@itemx set print asm-demangle on
b37052ae 6681Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
6682in assembler code printouts such as instruction disassemblies.
6683The default is off.
6684
c906108c 6685@item show print asm-demangle
b37052ae 6686Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
6687or demangled form.
6688
b37052ae
EZ
6689@cindex C@t{++} symbol decoding style
6690@cindex symbol decoding style, C@t{++}
a8f24a35 6691@kindex set demangle-style
c906108c
SS
6692@item set demangle-style @var{style}
6693Choose among several encoding schemes used by different compilers to
b37052ae 6694represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
6695
6696@table @code
6697@item auto
6698Allow @value{GDBN} to choose a decoding style by inspecting your program.
6699
6700@item gnu
b37052ae 6701Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c 6702This is the default.
c906108c
SS
6703
6704@item hp
b37052ae 6705Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
6706
6707@item lucid
b37052ae 6708Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
6709
6710@item arm
b37052ae 6711Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
6712@strong{Warning:} this setting alone is not sufficient to allow
6713debugging @code{cfront}-generated executables. @value{GDBN} would
6714require further enhancement to permit that.
6715
6716@end table
6717If you omit @var{style}, you will see a list of possible formats.
6718
c906108c 6719@item show demangle-style
b37052ae 6720Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c 6721
c906108c
SS
6722@item set print object
6723@itemx set print object on
4644b6e3 6724@cindex derived type of an object, printing
9c16f35a 6725@cindex display derived types
c906108c
SS
6726When displaying a pointer to an object, identify the @emph{actual}
6727(derived) type of the object rather than the @emph{declared} type, using
6728the virtual function table.
6729
6730@item set print object off
6731Display only the declared type of objects, without reference to the
6732virtual function table. This is the default setting.
6733
c906108c
SS
6734@item show print object
6735Show whether actual, or declared, object types are displayed.
6736
c906108c
SS
6737@item set print static-members
6738@itemx set print static-members on
4644b6e3 6739@cindex static members of C@t{++} objects
b37052ae 6740Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
6741
6742@item set print static-members off
b37052ae 6743Do not print static members when displaying a C@t{++} object.
c906108c 6744
c906108c 6745@item show print static-members
9c16f35a
EZ
6746Show whether C@t{++} static members are printed or not.
6747
6748@item set print pascal_static-members
6749@itemx set print pascal_static-members on
d3e8051b
EZ
6750@cindex static members of Pascal objects
6751@cindex Pascal objects, static members display
9c16f35a
EZ
6752Print static members when displaying a Pascal object. The default is on.
6753
6754@item set print pascal_static-members off
6755Do not print static members when displaying a Pascal object.
6756
6757@item show print pascal_static-members
6758Show whether Pascal static members are printed or not.
c906108c
SS
6759
6760@c These don't work with HP ANSI C++ yet.
c906108c
SS
6761@item set print vtbl
6762@itemx set print vtbl on
4644b6e3 6763@cindex pretty print C@t{++} virtual function tables
9c16f35a
EZ
6764@cindex virtual functions (C@t{++}) display
6765@cindex VTBL display
b37052ae 6766Pretty print C@t{++} virtual function tables. The default is off.
c906108c 6767(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 6768ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
6769
6770@item set print vtbl off
b37052ae 6771Do not pretty print C@t{++} virtual function tables.
c906108c 6772
c906108c 6773@item show print vtbl
b37052ae 6774Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 6775@end table
c906108c 6776
6d2ebf8b 6777@node Value History
79a6e687 6778@section Value History
c906108c
SS
6779
6780@cindex value history
9c16f35a 6781@cindex history of values printed by @value{GDBN}
5d161b24
DB
6782Values printed by the @code{print} command are saved in the @value{GDBN}
6783@dfn{value history}. This allows you to refer to them in other expressions.
6784Values are kept until the symbol table is re-read or discarded
6785(for example with the @code{file} or @code{symbol-file} commands).
6786When the symbol table changes, the value history is discarded,
6787since the values may contain pointers back to the types defined in the
c906108c
SS
6788symbol table.
6789
6790@cindex @code{$}
6791@cindex @code{$$}
6792@cindex history number
6793The values printed are given @dfn{history numbers} by which you can
6794refer to them. These are successive integers starting with one.
6795@code{print} shows you the history number assigned to a value by
6796printing @samp{$@var{num} = } before the value; here @var{num} is the
6797history number.
6798
6799To refer to any previous value, use @samp{$} followed by the value's
6800history number. The way @code{print} labels its output is designed to
6801remind you of this. Just @code{$} refers to the most recent value in
6802the history, and @code{$$} refers to the value before that.
6803@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
6804is the value just prior to @code{$$}, @code{$$1} is equivalent to
6805@code{$$}, and @code{$$0} is equivalent to @code{$}.
6806
6807For example, suppose you have just printed a pointer to a structure and
6808want to see the contents of the structure. It suffices to type
6809
474c8240 6810@smallexample
c906108c 6811p *$
474c8240 6812@end smallexample
c906108c
SS
6813
6814If you have a chain of structures where the component @code{next} points
6815to the next one, you can print the contents of the next one with this:
6816
474c8240 6817@smallexample
c906108c 6818p *$.next
474c8240 6819@end smallexample
c906108c
SS
6820
6821@noindent
6822You can print successive links in the chain by repeating this
6823command---which you can do by just typing @key{RET}.
6824
6825Note that the history records values, not expressions. If the value of
6826@code{x} is 4 and you type these commands:
6827
474c8240 6828@smallexample
c906108c
SS
6829print x
6830set x=5
474c8240 6831@end smallexample
c906108c
SS
6832
6833@noindent
6834then the value recorded in the value history by the @code{print} command
6835remains 4 even though the value of @code{x} has changed.
6836
6837@table @code
6838@kindex show values
6839@item show values
6840Print the last ten values in the value history, with their item numbers.
6841This is like @samp{p@ $$9} repeated ten times, except that @code{show
6842values} does not change the history.
6843
6844@item show values @var{n}
6845Print ten history values centered on history item number @var{n}.
6846
6847@item show values +
6848Print ten history values just after the values last printed. If no more
6849values are available, @code{show values +} produces no display.
6850@end table
6851
6852Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
6853same effect as @samp{show values +}.
6854
6d2ebf8b 6855@node Convenience Vars
79a6e687 6856@section Convenience Variables
c906108c
SS
6857
6858@cindex convenience variables
9c16f35a 6859@cindex user-defined variables
c906108c
SS
6860@value{GDBN} provides @dfn{convenience variables} that you can use within
6861@value{GDBN} to hold on to a value and refer to it later. These variables
6862exist entirely within @value{GDBN}; they are not part of your program, and
6863setting a convenience variable has no direct effect on further execution
6864of your program. That is why you can use them freely.
6865
6866Convenience variables are prefixed with @samp{$}. Any name preceded by
6867@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 6868the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c 6869(Value history references, in contrast, are @emph{numbers} preceded
79a6e687 6870by @samp{$}. @xref{Value History, ,Value History}.)
c906108c
SS
6871
6872You can save a value in a convenience variable with an assignment
6873expression, just as you would set a variable in your program.
6874For example:
6875
474c8240 6876@smallexample
c906108c 6877set $foo = *object_ptr
474c8240 6878@end smallexample
c906108c
SS
6879
6880@noindent
6881would save in @code{$foo} the value contained in the object pointed to by
6882@code{object_ptr}.
6883
6884Using a convenience variable for the first time creates it, but its
6885value is @code{void} until you assign a new value. You can alter the
6886value with another assignment at any time.
6887
6888Convenience variables have no fixed types. You can assign a convenience
6889variable any type of value, including structures and arrays, even if
6890that variable already has a value of a different type. The convenience
6891variable, when used as an expression, has the type of its current value.
6892
6893@table @code
6894@kindex show convenience
9c16f35a 6895@cindex show all user variables
c906108c
SS
6896@item show convenience
6897Print a list of convenience variables used so far, and their values.
d4f3574e 6898Abbreviated @code{show conv}.
53e5f3cf
AS
6899
6900@kindex init-if-undefined
6901@cindex convenience variables, initializing
6902@item init-if-undefined $@var{variable} = @var{expression}
6903Set a convenience variable if it has not already been set. This is useful
6904for user-defined commands that keep some state. It is similar, in concept,
6905to using local static variables with initializers in C (except that
6906convenience variables are global). It can also be used to allow users to
6907override default values used in a command script.
6908
6909If the variable is already defined then the expression is not evaluated so
6910any side-effects do not occur.
c906108c
SS
6911@end table
6912
6913One of the ways to use a convenience variable is as a counter to be
6914incremented or a pointer to be advanced. For example, to print
6915a field from successive elements of an array of structures:
6916
474c8240 6917@smallexample
c906108c
SS
6918set $i = 0
6919print bar[$i++]->contents
474c8240 6920@end smallexample
c906108c 6921
d4f3574e
SS
6922@noindent
6923Repeat that command by typing @key{RET}.
c906108c
SS
6924
6925Some convenience variables are created automatically by @value{GDBN} and given
6926values likely to be useful.
6927
6928@table @code
41afff9a 6929@vindex $_@r{, convenience variable}
c906108c
SS
6930@item $_
6931The variable @code{$_} is automatically set by the @code{x} command to
79a6e687 6932the last address examined (@pxref{Memory, ,Examining Memory}). Other
c906108c
SS
6933commands which provide a default address for @code{x} to examine also
6934set @code{$_} to that address; these commands include @code{info line}
6935and @code{info breakpoint}. The type of @code{$_} is @code{void *}
6936except when set by the @code{x} command, in which case it is a pointer
6937to the type of @code{$__}.
6938
41afff9a 6939@vindex $__@r{, convenience variable}
c906108c
SS
6940@item $__
6941The variable @code{$__} is automatically set by the @code{x} command
6942to the value found in the last address examined. Its type is chosen
6943to match the format in which the data was printed.
6944
6945@item $_exitcode
41afff9a 6946@vindex $_exitcode@r{, convenience variable}
c906108c
SS
6947The variable @code{$_exitcode} is automatically set to the exit code when
6948the program being debugged terminates.
6949@end table
6950
53a5351d
JM
6951On HP-UX systems, if you refer to a function or variable name that
6952begins with a dollar sign, @value{GDBN} searches for a user or system
6953name first, before it searches for a convenience variable.
c906108c 6954
6d2ebf8b 6955@node Registers
c906108c
SS
6956@section Registers
6957
6958@cindex registers
6959You can refer to machine register contents, in expressions, as variables
6960with names starting with @samp{$}. The names of registers are different
6961for each machine; use @code{info registers} to see the names used on
6962your machine.
6963
6964@table @code
6965@kindex info registers
6966@item info registers
6967Print the names and values of all registers except floating-point
c85508ee 6968and vector registers (in the selected stack frame).
c906108c
SS
6969
6970@kindex info all-registers
6971@cindex floating point registers
6972@item info all-registers
6973Print the names and values of all registers, including floating-point
c85508ee 6974and vector registers (in the selected stack frame).
c906108c
SS
6975
6976@item info registers @var{regname} @dots{}
6977Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
6978As discussed in detail below, register values are normally relative to
6979the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
6980the machine you are using, with or without the initial @samp{$}.
6981@end table
6982
e09f16f9
EZ
6983@cindex stack pointer register
6984@cindex program counter register
6985@cindex process status register
6986@cindex frame pointer register
6987@cindex standard registers
c906108c
SS
6988@value{GDBN} has four ``standard'' register names that are available (in
6989expressions) on most machines---whenever they do not conflict with an
6990architecture's canonical mnemonics for registers. The register names
6991@code{$pc} and @code{$sp} are used for the program counter register and
6992the stack pointer. @code{$fp} is used for a register that contains a
6993pointer to the current stack frame, and @code{$ps} is used for a
6994register that contains the processor status. For example,
6995you could print the program counter in hex with
6996
474c8240 6997@smallexample
c906108c 6998p/x $pc
474c8240 6999@end smallexample
c906108c
SS
7000
7001@noindent
7002or print the instruction to be executed next with
7003
474c8240 7004@smallexample
c906108c 7005x/i $pc
474c8240 7006@end smallexample
c906108c
SS
7007
7008@noindent
7009or add four to the stack pointer@footnote{This is a way of removing
7010one word from the stack, on machines where stacks grow downward in
7011memory (most machines, nowadays). This assumes that the innermost
7012stack frame is selected; setting @code{$sp} is not allowed when other
7013stack frames are selected. To pop entire frames off the stack,
7014regardless of machine architecture, use @code{return};
79a6e687 7015see @ref{Returning, ,Returning from a Function}.} with
c906108c 7016
474c8240 7017@smallexample
c906108c 7018set $sp += 4
474c8240 7019@end smallexample
c906108c
SS
7020
7021Whenever possible, these four standard register names are available on
7022your machine even though the machine has different canonical mnemonics,
7023so long as there is no conflict. The @code{info registers} command
7024shows the canonical names. For example, on the SPARC, @code{info
7025registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
7026can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
7027is an alias for the @sc{eflags} register.
c906108c
SS
7028
7029@value{GDBN} always considers the contents of an ordinary register as an
7030integer when the register is examined in this way. Some machines have
7031special registers which can hold nothing but floating point; these
7032registers are considered to have floating point values. There is no way
7033to refer to the contents of an ordinary register as floating point value
7034(although you can @emph{print} it as a floating point value with
7035@samp{print/f $@var{regname}}).
7036
7037Some registers have distinct ``raw'' and ``virtual'' data formats. This
7038means that the data format in which the register contents are saved by
7039the operating system is not the same one that your program normally
7040sees. For example, the registers of the 68881 floating point
7041coprocessor are always saved in ``extended'' (raw) format, but all C
7042programs expect to work with ``double'' (virtual) format. In such
5d161b24 7043cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
7044that makes sense for your program), but the @code{info registers} command
7045prints the data in both formats.
7046
36b80e65
EZ
7047@cindex SSE registers (x86)
7048@cindex MMX registers (x86)
7049Some machines have special registers whose contents can be interpreted
7050in several different ways. For example, modern x86-based machines
7051have SSE and MMX registers that can hold several values packed
7052together in several different formats. @value{GDBN} refers to such
7053registers in @code{struct} notation:
7054
7055@smallexample
7056(@value{GDBP}) print $xmm1
7057$1 = @{
7058 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@},
7059 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@},
7060 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
7061 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@},
7062 v4_int32 = @{0, 20657912, 11, 13@},
7063 v2_int64 = @{88725056443645952, 55834574859@},
7064 uint128 = 0x0000000d0000000b013b36f800000000
7065@}
7066@end smallexample
7067
7068@noindent
7069To set values of such registers, you need to tell @value{GDBN} which
7070view of the register you wish to change, as if you were assigning
7071value to a @code{struct} member:
7072
7073@smallexample
7074 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
7075@end smallexample
7076
c906108c 7077Normally, register values are relative to the selected stack frame
79a6e687 7078(@pxref{Selection, ,Selecting a Frame}). This means that you get the
c906108c
SS
7079value that the register would contain if all stack frames farther in
7080were exited and their saved registers restored. In order to see the
7081true contents of hardware registers, you must select the innermost
7082frame (with @samp{frame 0}).
7083
7084However, @value{GDBN} must deduce where registers are saved, from the machine
7085code generated by your compiler. If some registers are not saved, or if
7086@value{GDBN} is unable to locate the saved registers, the selected stack
7087frame makes no difference.
7088
6d2ebf8b 7089@node Floating Point Hardware
79a6e687 7090@section Floating Point Hardware
c906108c
SS
7091@cindex floating point
7092
7093Depending on the configuration, @value{GDBN} may be able to give
7094you more information about the status of the floating point hardware.
7095
7096@table @code
7097@kindex info float
7098@item info float
7099Display hardware-dependent information about the floating
7100point unit. The exact contents and layout vary depending on the
7101floating point chip. Currently, @samp{info float} is supported on
7102the ARM and x86 machines.
7103@end table
c906108c 7104
e76f1f2e
AC
7105@node Vector Unit
7106@section Vector Unit
7107@cindex vector unit
7108
7109Depending on the configuration, @value{GDBN} may be able to give you
7110more information about the status of the vector unit.
7111
7112@table @code
7113@kindex info vector
7114@item info vector
7115Display information about the vector unit. The exact contents and
7116layout vary depending on the hardware.
7117@end table
7118
721c2651 7119@node OS Information
79a6e687 7120@section Operating System Auxiliary Information
721c2651
EZ
7121@cindex OS information
7122
7123@value{GDBN} provides interfaces to useful OS facilities that can help
7124you debug your program.
7125
7126@cindex @code{ptrace} system call
7127@cindex @code{struct user} contents
7128When @value{GDBN} runs on a @dfn{Posix system} (such as GNU or Unix
7129machines), it interfaces with the inferior via the @code{ptrace}
7130system call. The operating system creates a special sata structure,
7131called @code{struct user}, for this interface. You can use the
7132command @code{info udot} to display the contents of this data
7133structure.
7134
7135@table @code
7136@item info udot
7137@kindex info udot
7138Display the contents of the @code{struct user} maintained by the OS
7139kernel for the program being debugged. @value{GDBN} displays the
7140contents of @code{struct user} as a list of hex numbers, similar to
7141the @code{examine} command.
7142@end table
7143
b383017d
RM
7144@cindex auxiliary vector
7145@cindex vector, auxiliary
b383017d
RM
7146Some operating systems supply an @dfn{auxiliary vector} to programs at
7147startup. This is akin to the arguments and environment that you
7148specify for a program, but contains a system-dependent variety of
7149binary values that tell system libraries important details about the
7150hardware, operating system, and process. Each value's purpose is
7151identified by an integer tag; the meanings are well-known but system-specific.
7152Depending on the configuration and operating system facilities,
9c16f35a
EZ
7153@value{GDBN} may be able to show you this information. For remote
7154targets, this functionality may further depend on the remote stub's
427c3a89
DJ
7155support of the @samp{qXfer:auxv:read} packet, see
7156@ref{qXfer auxiliary vector read}.
b383017d
RM
7157
7158@table @code
7159@kindex info auxv
7160@item info auxv
7161Display the auxiliary vector of the inferior, which can be either a
e4937fc1 7162live process or a core dump file. @value{GDBN} prints each tag value
b383017d
RM
7163numerically, and also shows names and text descriptions for recognized
7164tags. Some values in the vector are numbers, some bit masks, and some
e4937fc1 7165pointers to strings or other data. @value{GDBN} displays each value in the
b383017d
RM
7166most appropriate form for a recognized tag, and in hexadecimal for
7167an unrecognized tag.
7168@end table
7169
721c2651 7170
29e57380 7171@node Memory Region Attributes
79a6e687 7172@section Memory Region Attributes
29e57380
C
7173@cindex memory region attributes
7174
b383017d 7175@dfn{Memory region attributes} allow you to describe special handling
fd79ecee
DJ
7176required by regions of your target's memory. @value{GDBN} uses
7177attributes to determine whether to allow certain types of memory
7178accesses; whether to use specific width accesses; and whether to cache
7179target memory. By default the description of memory regions is
7180fetched from the target (if the current target supports this), but the
7181user can override the fetched regions.
29e57380
C
7182
7183Defined memory regions can be individually enabled and disabled. When a
7184memory region is disabled, @value{GDBN} uses the default attributes when
7185accessing memory in that region. Similarly, if no memory regions have
7186been defined, @value{GDBN} uses the default attributes when accessing
7187all memory.
7188
b383017d 7189When a memory region is defined, it is given a number to identify it;
29e57380
C
7190to enable, disable, or remove a memory region, you specify that number.
7191
7192@table @code
7193@kindex mem
bfac230e 7194@item mem @var{lower} @var{upper} @var{attributes}@dots{}
09d4efe1
EZ
7195Define a memory region bounded by @var{lower} and @var{upper} with
7196attributes @var{attributes}@dots{}, and add it to the list of regions
7197monitored by @value{GDBN}. Note that @var{upper} == 0 is a special
d3e8051b 7198case: it is treated as the target's maximum memory address.
bfac230e 7199(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
29e57380 7200
fd79ecee
DJ
7201@item mem auto
7202Discard any user changes to the memory regions and use target-supplied
7203regions, if available, or no regions if the target does not support.
7204
29e57380
C
7205@kindex delete mem
7206@item delete mem @var{nums}@dots{}
09d4efe1
EZ
7207Remove memory regions @var{nums}@dots{} from the list of regions
7208monitored by @value{GDBN}.
29e57380
C
7209
7210@kindex disable mem
7211@item disable mem @var{nums}@dots{}
09d4efe1 7212Disable monitoring of memory regions @var{nums}@dots{}.
b383017d 7213A disabled memory region is not forgotten.
29e57380
C
7214It may be enabled again later.
7215
7216@kindex enable mem
7217@item enable mem @var{nums}@dots{}
09d4efe1 7218Enable monitoring of memory regions @var{nums}@dots{}.
29e57380
C
7219
7220@kindex info mem
7221@item info mem
7222Print a table of all defined memory regions, with the following columns
09d4efe1 7223for each region:
29e57380
C
7224
7225@table @emph
7226@item Memory Region Number
7227@item Enabled or Disabled.
b383017d 7228Enabled memory regions are marked with @samp{y}.
29e57380
C
7229Disabled memory regions are marked with @samp{n}.
7230
7231@item Lo Address
7232The address defining the inclusive lower bound of the memory region.
7233
7234@item Hi Address
7235The address defining the exclusive upper bound of the memory region.
7236
7237@item Attributes
7238The list of attributes set for this memory region.
7239@end table
7240@end table
7241
7242
7243@subsection Attributes
7244
b383017d 7245@subsubsection Memory Access Mode
29e57380
C
7246The access mode attributes set whether @value{GDBN} may make read or
7247write accesses to a memory region.
7248
7249While these attributes prevent @value{GDBN} from performing invalid
7250memory accesses, they do nothing to prevent the target system, I/O DMA,
359df76b 7251etc.@: from accessing memory.
29e57380
C
7252
7253@table @code
7254@item ro
7255Memory is read only.
7256@item wo
7257Memory is write only.
7258@item rw
6ca652b0 7259Memory is read/write. This is the default.
29e57380
C
7260@end table
7261
7262@subsubsection Memory Access Size
d3e8051b 7263The access size attribute tells @value{GDBN} to use specific sized
29e57380
C
7264accesses in the memory region. Often memory mapped device registers
7265require specific sized accesses. If no access size attribute is
7266specified, @value{GDBN} may use accesses of any size.
7267
7268@table @code
7269@item 8
7270Use 8 bit memory accesses.
7271@item 16
7272Use 16 bit memory accesses.
7273@item 32
7274Use 32 bit memory accesses.
7275@item 64
7276Use 64 bit memory accesses.
7277@end table
7278
7279@c @subsubsection Hardware/Software Breakpoints
7280@c The hardware/software breakpoint attributes set whether @value{GDBN}
7281@c will use hardware or software breakpoints for the internal breakpoints
7282@c used by the step, next, finish, until, etc. commands.
7283@c
7284@c @table @code
7285@c @item hwbreak
b383017d 7286@c Always use hardware breakpoints
29e57380
C
7287@c @item swbreak (default)
7288@c @end table
7289
7290@subsubsection Data Cache
7291The data cache attributes set whether @value{GDBN} will cache target
7292memory. While this generally improves performance by reducing debug
7293protocol overhead, it can lead to incorrect results because @value{GDBN}
7294does not know about volatile variables or memory mapped device
7295registers.
7296
7297@table @code
7298@item cache
b383017d 7299Enable @value{GDBN} to cache target memory.
6ca652b0
EZ
7300@item nocache
7301Disable @value{GDBN} from caching target memory. This is the default.
29e57380
C
7302@end table
7303
4b5752d0
VP
7304@subsection Memory Access Checking
7305@value{GDBN} can be instructed to refuse accesses to memory that is
7306not explicitly described. This can be useful if accessing such
7307regions has undesired effects for a specific target, or to provide
7308better error checking. The following commands control this behaviour.
7309
7310@table @code
7311@kindex set mem inaccessible-by-default
7312@item set mem inaccessible-by-default [on|off]
7313If @code{on} is specified, make @value{GDBN} treat memory not
7314explicitly described by the memory ranges as non-existent and refuse accesses
7315to such memory. The checks are only performed if there's at least one
7316memory range defined. If @code{off} is specified, make @value{GDBN}
7317treat the memory not explicitly described by the memory ranges as RAM.
56cf5405 7318The default value is @code{on}.
4b5752d0
VP
7319@kindex show mem inaccessible-by-default
7320@item show mem inaccessible-by-default
7321Show the current handling of accesses to unknown memory.
7322@end table
7323
7324
29e57380 7325@c @subsubsection Memory Write Verification
b383017d 7326@c The memory write verification attributes set whether @value{GDBN}
29e57380
C
7327@c will re-reads data after each write to verify the write was successful.
7328@c
7329@c @table @code
7330@c @item verify
7331@c @item noverify (default)
7332@c @end table
7333
16d9dec6 7334@node Dump/Restore Files
79a6e687 7335@section Copy Between Memory and a File
16d9dec6
MS
7336@cindex dump/restore files
7337@cindex append data to a file
7338@cindex dump data to a file
7339@cindex restore data from a file
16d9dec6 7340
df5215a6
JB
7341You can use the commands @code{dump}, @code{append}, and
7342@code{restore} to copy data between target memory and a file. The
7343@code{dump} and @code{append} commands write data to a file, and the
7344@code{restore} command reads data from a file back into the inferior's
7345memory. Files may be in binary, Motorola S-record, Intel hex, or
7346Tektronix Hex format; however, @value{GDBN} can only append to binary
7347files.
7348
7349@table @code
7350
7351@kindex dump
7352@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
7353@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
7354Dump the contents of memory from @var{start_addr} to @var{end_addr},
7355or the value of @var{expr}, to @var{filename} in the given format.
16d9dec6 7356
df5215a6 7357The @var{format} parameter may be any one of:
16d9dec6 7358@table @code
df5215a6
JB
7359@item binary
7360Raw binary form.
7361@item ihex
7362Intel hex format.
7363@item srec
7364Motorola S-record format.
7365@item tekhex
7366Tektronix Hex format.
7367@end table
7368
7369@value{GDBN} uses the same definitions of these formats as the
7370@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
7371@var{format} is omitted, @value{GDBN} dumps the data in raw binary
7372form.
7373
7374@kindex append
7375@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
7376@itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
7377Append the contents of memory from @var{start_addr} to @var{end_addr},
09d4efe1 7378or the value of @var{expr}, to the file @var{filename}, in raw binary form.
df5215a6
JB
7379(@value{GDBN} can only append data to files in raw binary form.)
7380
7381@kindex restore
7382@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
7383Restore the contents of file @var{filename} into memory. The
7384@code{restore} command can automatically recognize any known @sc{bfd}
7385file format, except for raw binary. To restore a raw binary file you
7386must specify the optional keyword @code{binary} after the filename.
16d9dec6 7387
b383017d 7388If @var{bias} is non-zero, its value will be added to the addresses
16d9dec6
MS
7389contained in the file. Binary files always start at address zero, so
7390they will be restored at address @var{bias}. Other bfd files have
7391a built-in location; they will be restored at offset @var{bias}
7392from that location.
7393
7394If @var{start} and/or @var{end} are non-zero, then only data between
7395file offset @var{start} and file offset @var{end} will be restored.
b383017d 7396These offsets are relative to the addresses in the file, before
16d9dec6
MS
7397the @var{bias} argument is applied.
7398
7399@end table
7400
384ee23f
EZ
7401@node Core File Generation
7402@section How to Produce a Core File from Your Program
7403@cindex dump core from inferior
7404
7405A @dfn{core file} or @dfn{core dump} is a file that records the memory
7406image of a running process and its process status (register values
7407etc.). Its primary use is post-mortem debugging of a program that
7408crashed while it ran outside a debugger. A program that crashes
7409automatically produces a core file, unless this feature is disabled by
7410the user. @xref{Files}, for information on invoking @value{GDBN} in
7411the post-mortem debugging mode.
7412
7413Occasionally, you may wish to produce a core file of the program you
7414are debugging in order to preserve a snapshot of its state.
7415@value{GDBN} has a special command for that.
7416
7417@table @code
7418@kindex gcore
7419@kindex generate-core-file
7420@item generate-core-file [@var{file}]
7421@itemx gcore [@var{file}]
7422Produce a core dump of the inferior process. The optional argument
7423@var{file} specifies the file name where to put the core dump. If not
7424specified, the file name defaults to @file{core.@var{pid}}, where
7425@var{pid} is the inferior process ID.
7426
7427Note that this command is implemented only for some systems (as of
7428this writing, @sc{gnu}/Linux, FreeBSD, Solaris, Unixware, and S390).
7429@end table
7430
a0eb71c5
KB
7431@node Character Sets
7432@section Character Sets
7433@cindex character sets
7434@cindex charset
7435@cindex translating between character sets
7436@cindex host character set
7437@cindex target character set
7438
7439If the program you are debugging uses a different character set to
7440represent characters and strings than the one @value{GDBN} uses itself,
7441@value{GDBN} can automatically translate between the character sets for
7442you. The character set @value{GDBN} uses we call the @dfn{host
7443character set}; the one the inferior program uses we call the
7444@dfn{target character set}.
7445
7446For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
7447uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
ea35711c 7448remote protocol (@pxref{Remote Debugging}) to debug a program
a0eb71c5
KB
7449running on an IBM mainframe, which uses the @sc{ebcdic} character set,
7450then the host character set is Latin-1, and the target character set is
7451@sc{ebcdic}. If you give @value{GDBN} the command @code{set
e33d66ec 7452target-charset EBCDIC-US}, then @value{GDBN} translates between
a0eb71c5
KB
7453@sc{ebcdic} and Latin 1 as you print character or string values, or use
7454character and string literals in expressions.
7455
7456@value{GDBN} has no way to automatically recognize which character set
7457the inferior program uses; you must tell it, using the @code{set
7458target-charset} command, described below.
7459
7460Here are the commands for controlling @value{GDBN}'s character set
7461support:
7462
7463@table @code
7464@item set target-charset @var{charset}
7465@kindex set target-charset
7466Set the current target character set to @var{charset}. We list the
e33d66ec
EZ
7467character set names @value{GDBN} recognizes below, but if you type
7468@code{set target-charset} followed by @key{TAB}@key{TAB}, @value{GDBN} will
7469list the target character sets it supports.
a0eb71c5
KB
7470@end table
7471
7472@table @code
7473@item set host-charset @var{charset}
7474@kindex set host-charset
7475Set the current host character set to @var{charset}.
7476
7477By default, @value{GDBN} uses a host character set appropriate to the
7478system it is running on; you can override that default using the
7479@code{set host-charset} command.
7480
7481@value{GDBN} can only use certain character sets as its host character
7482set. We list the character set names @value{GDBN} recognizes below, and
e33d66ec
EZ
7483indicate which can be host character sets, but if you type
7484@code{set target-charset} followed by @key{TAB}@key{TAB}, @value{GDBN} will
7485list the host character sets it supports.
a0eb71c5
KB
7486
7487@item set charset @var{charset}
7488@kindex set charset
e33d66ec
EZ
7489Set the current host and target character sets to @var{charset}. As
7490above, if you type @code{set charset} followed by @key{TAB}@key{TAB},
7491@value{GDBN} will list the name of the character sets that can be used
7492for both host and target.
7493
a0eb71c5
KB
7494
7495@item show charset
a0eb71c5 7496@kindex show charset
b383017d 7497Show the names of the current host and target charsets.
e33d66ec
EZ
7498
7499@itemx show host-charset
a0eb71c5 7500@kindex show host-charset
b383017d 7501Show the name of the current host charset.
e33d66ec
EZ
7502
7503@itemx show target-charset
a0eb71c5 7504@kindex show target-charset
b383017d 7505Show the name of the current target charset.
a0eb71c5
KB
7506
7507@end table
7508
7509@value{GDBN} currently includes support for the following character
7510sets:
7511
7512@table @code
7513
7514@item ASCII
7515@cindex ASCII character set
7516Seven-bit U.S. @sc{ascii}. @value{GDBN} can use this as its host
7517character set.
7518
7519@item ISO-8859-1
7520@cindex ISO 8859-1 character set
7521@cindex ISO Latin 1 character set
e33d66ec 7522The ISO Latin 1 character set. This extends @sc{ascii} with accented
a0eb71c5
KB
7523characters needed for French, German, and Spanish. @value{GDBN} can use
7524this as its host character set.
7525
7526@item EBCDIC-US
7527@itemx IBM1047
7528@cindex EBCDIC character set
7529@cindex IBM1047 character set
7530Variants of the @sc{ebcdic} character set, used on some of IBM's
7531mainframe operating systems. (@sc{gnu}/Linux on the S/390 uses U.S. @sc{ascii}.)
7532@value{GDBN} cannot use these as its host character set.
7533
7534@end table
7535
7536Note that these are all single-byte character sets. More work inside
3f94c067 7537@value{GDBN} is needed to support multi-byte or variable-width character
a0eb71c5
KB
7538encodings, like the UTF-8 and UCS-2 encodings of Unicode.
7539
7540Here is an example of @value{GDBN}'s character set support in action.
7541Assume that the following source code has been placed in the file
7542@file{charset-test.c}:
7543
7544@smallexample
7545#include <stdio.h>
7546
7547char ascii_hello[]
7548 = @{72, 101, 108, 108, 111, 44, 32, 119,
7549 111, 114, 108, 100, 33, 10, 0@};
7550char ibm1047_hello[]
7551 = @{200, 133, 147, 147, 150, 107, 64, 166,
7552 150, 153, 147, 132, 90, 37, 0@};
7553
7554main ()
7555@{
7556 printf ("Hello, world!\n");
7557@}
10998722 7558@end smallexample
a0eb71c5
KB
7559
7560In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
7561containing the string @samp{Hello, world!} followed by a newline,
7562encoded in the @sc{ascii} and @sc{ibm1047} character sets.
7563
7564We compile the program, and invoke the debugger on it:
7565
7566@smallexample
7567$ gcc -g charset-test.c -o charset-test
7568$ gdb -nw charset-test
7569GNU gdb 2001-12-19-cvs
7570Copyright 2001 Free Software Foundation, Inc.
7571@dots{}
f7dc1244 7572(@value{GDBP})
10998722 7573@end smallexample
a0eb71c5
KB
7574
7575We can use the @code{show charset} command to see what character sets
7576@value{GDBN} is currently using to interpret and display characters and
7577strings:
7578
7579@smallexample
f7dc1244 7580(@value{GDBP}) show charset
e33d66ec 7581The current host and target character set is `ISO-8859-1'.
f7dc1244 7582(@value{GDBP})
10998722 7583@end smallexample
a0eb71c5
KB
7584
7585For the sake of printing this manual, let's use @sc{ascii} as our
7586initial character set:
7587@smallexample
f7dc1244
EZ
7588(@value{GDBP}) set charset ASCII
7589(@value{GDBP}) show charset
e33d66ec 7590The current host and target character set is `ASCII'.
f7dc1244 7591(@value{GDBP})
10998722 7592@end smallexample
a0eb71c5
KB
7593
7594Let's assume that @sc{ascii} is indeed the correct character set for our
7595host system --- in other words, let's assume that if @value{GDBN} prints
7596characters using the @sc{ascii} character set, our terminal will display
7597them properly. Since our current target character set is also
7598@sc{ascii}, the contents of @code{ascii_hello} print legibly:
7599
7600@smallexample
f7dc1244 7601(@value{GDBP}) print ascii_hello
a0eb71c5 7602$1 = 0x401698 "Hello, world!\n"
f7dc1244 7603(@value{GDBP}) print ascii_hello[0]
a0eb71c5 7604$2 = 72 'H'
f7dc1244 7605(@value{GDBP})
10998722 7606@end smallexample
a0eb71c5
KB
7607
7608@value{GDBN} uses the target character set for character and string
7609literals you use in expressions:
7610
7611@smallexample
f7dc1244 7612(@value{GDBP}) print '+'
a0eb71c5 7613$3 = 43 '+'
f7dc1244 7614(@value{GDBP})
10998722 7615@end smallexample
a0eb71c5
KB
7616
7617The @sc{ascii} character set uses the number 43 to encode the @samp{+}
7618character.
7619
7620@value{GDBN} relies on the user to tell it which character set the
7621target program uses. If we print @code{ibm1047_hello} while our target
7622character set is still @sc{ascii}, we get jibberish:
7623
7624@smallexample
f7dc1244 7625(@value{GDBP}) print ibm1047_hello
a0eb71c5 7626$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
f7dc1244 7627(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 7628$5 = 200 '\310'
f7dc1244 7629(@value{GDBP})
10998722 7630@end smallexample
a0eb71c5 7631
e33d66ec 7632If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
a0eb71c5
KB
7633@value{GDBN} tells us the character sets it supports:
7634
7635@smallexample
f7dc1244 7636(@value{GDBP}) set target-charset
b383017d 7637ASCII EBCDIC-US IBM1047 ISO-8859-1
f7dc1244 7638(@value{GDBP}) set target-charset
10998722 7639@end smallexample
a0eb71c5
KB
7640
7641We can select @sc{ibm1047} as our target character set, and examine the
7642program's strings again. Now the @sc{ascii} string is wrong, but
7643@value{GDBN} translates the contents of @code{ibm1047_hello} from the
7644target character set, @sc{ibm1047}, to the host character set,
7645@sc{ascii}, and they display correctly:
7646
7647@smallexample
f7dc1244
EZ
7648(@value{GDBP}) set target-charset IBM1047
7649(@value{GDBP}) show charset
e33d66ec
EZ
7650The current host character set is `ASCII'.
7651The current target character set is `IBM1047'.
f7dc1244 7652(@value{GDBP}) print ascii_hello
a0eb71c5 7653$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
f7dc1244 7654(@value{GDBP}) print ascii_hello[0]
a0eb71c5 7655$7 = 72 '\110'
f7dc1244 7656(@value{GDBP}) print ibm1047_hello
a0eb71c5 7657$8 = 0x4016a8 "Hello, world!\n"
f7dc1244 7658(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 7659$9 = 200 'H'
f7dc1244 7660(@value{GDBP})
10998722 7661@end smallexample
a0eb71c5
KB
7662
7663As above, @value{GDBN} uses the target character set for character and
7664string literals you use in expressions:
7665
7666@smallexample
f7dc1244 7667(@value{GDBP}) print '+'
a0eb71c5 7668$10 = 78 '+'
f7dc1244 7669(@value{GDBP})
10998722 7670@end smallexample
a0eb71c5 7671
e33d66ec 7672The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
a0eb71c5
KB
7673character.
7674
09d4efe1
EZ
7675@node Caching Remote Data
7676@section Caching Data of Remote Targets
7677@cindex caching data of remote targets
7678
7679@value{GDBN} can cache data exchanged between the debugger and a
ea35711c 7680remote target (@pxref{Remote Debugging}). Such caching generally improves
09d4efe1
EZ
7681performance, because it reduces the overhead of the remote protocol by
7682bundling memory reads and writes into large chunks. Unfortunately,
7683@value{GDBN} does not currently know anything about volatile
7684registers, and thus data caching will produce incorrect results when
7685volatile registers are in use.
7686
7687@table @code
7688@kindex set remotecache
7689@item set remotecache on
7690@itemx set remotecache off
7691Set caching state for remote targets. When @code{ON}, use data
7692caching. By default, this option is @code{OFF}.
7693
7694@kindex show remotecache
7695@item show remotecache
7696Show the current state of data caching for remote targets.
7697
7698@kindex info dcache
7699@item info dcache
7700Print the information about the data cache performance. The
7701information displayed includes: the dcache width and depth; and for
7702each cache line, how many times it was referenced, and its data and
7703state (dirty, bad, ok, etc.). This command is useful for debugging
7704the data cache operation.
7705@end table
7706
08388c79
DE
7707@node Searching Memory
7708@section Search Memory
7709@cindex searching memory
7710
7711Memory can be searched for a particular sequence of bytes with the
7712@code{find} command.
7713
7714@table @code
7715@kindex find
7716@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
7717@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
7718Search memory for the sequence of bytes specified by @var{val1}, @var{val2},
7719etc. The search begins at address @var{start_addr} and continues for either
7720@var{len} bytes or through to @var{end_addr} inclusive.
7721@end table
7722
7723@var{s} and @var{n} are optional parameters.
7724They may be specified in either order, apart or together.
7725
7726@table @r
7727@item @var{s}, search query size
7728The size of each search query value.
7729
7730@table @code
7731@item b
7732bytes
7733@item h
7734halfwords (two bytes)
7735@item w
7736words (four bytes)
7737@item g
7738giant words (eight bytes)
7739@end table
7740
7741All values are interpreted in the current language.
7742This means, for example, that if the current source language is C/C@t{++}
7743then searching for the string ``hello'' includes the trailing '\0'.
7744
7745If the value size is not specified, it is taken from the
7746value's type in the current language.
7747This is useful when one wants to specify the search
7748pattern as a mixture of types.
7749Note that this means, for example, that in the case of C-like languages
7750a search for an untyped 0x42 will search for @samp{(int) 0x42}
7751which is typically four bytes.
7752
7753@item @var{n}, maximum number of finds
7754The maximum number of matches to print. The default is to print all finds.
7755@end table
7756
7757You can use strings as search values. Quote them with double-quotes
7758 (@code{"}).
7759The string value is copied into the search pattern byte by byte,
7760regardless of the endianness of the target and the size specification.
7761
7762The address of each match found is printed as well as a count of the
7763number of matches found.
7764
7765The address of the last value found is stored in convenience variable
7766@samp{$_}.
7767A count of the number of matches is stored in @samp{$numfound}.
7768
7769For example, if stopped at the @code{printf} in this function:
7770
7771@smallexample
7772void
7773hello ()
7774@{
7775 static char hello[] = "hello-hello";
7776 static struct @{ char c; short s; int i; @}
7777 __attribute__ ((packed)) mixed
7778 = @{ 'c', 0x1234, 0x87654321 @};
7779 printf ("%s\n", hello);
7780@}
7781@end smallexample
7782
7783@noindent
7784you get during debugging:
7785
7786@smallexample
7787(gdb) find &hello[0], +sizeof(hello), "hello"
77880x804956d <hello.1620+6>
77891 pattern found
7790(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o'
77910x8049567 <hello.1620>
77920x804956d <hello.1620+6>
77932 patterns found
7794(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l'
77950x8049567 <hello.1620>
77961 pattern found
7797(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
77980x8049560 <mixed.1625>
77991 pattern found
7800(gdb) print $numfound
7801$1 = 1
7802(gdb) print $_
7803$2 = (void *) 0x8049560
7804@end smallexample
a0eb71c5 7805
e2e0bcd1
JB
7806@node Macros
7807@chapter C Preprocessor Macros
7808
49efadf5 7809Some languages, such as C and C@t{++}, provide a way to define and invoke
e2e0bcd1
JB
7810``preprocessor macros'' which expand into strings of tokens.
7811@value{GDBN} can evaluate expressions containing macro invocations, show
7812the result of macro expansion, and show a macro's definition, including
7813where it was defined.
7814
7815You may need to compile your program specially to provide @value{GDBN}
7816with information about preprocessor macros. Most compilers do not
7817include macros in their debugging information, even when you compile
7818with the @option{-g} flag. @xref{Compilation}.
7819
7820A program may define a macro at one point, remove that definition later,
7821and then provide a different definition after that. Thus, at different
7822points in the program, a macro may have different definitions, or have
7823no definition at all. If there is a current stack frame, @value{GDBN}
7824uses the macros in scope at that frame's source code line. Otherwise,
7825@value{GDBN} uses the macros in scope at the current listing location;
7826see @ref{List}.
7827
7828At the moment, @value{GDBN} does not support the @code{##}
7829token-splicing operator, the @code{#} stringification operator, or
7830variable-arity macros.
7831
7832Whenever @value{GDBN} evaluates an expression, it always expands any
7833macro invocations present in the expression. @value{GDBN} also provides
7834the following commands for working with macros explicitly.
7835
7836@table @code
7837
7838@kindex macro expand
7839@cindex macro expansion, showing the results of preprocessor
7840@cindex preprocessor macro expansion, showing the results of
7841@cindex expanding preprocessor macros
7842@item macro expand @var{expression}
7843@itemx macro exp @var{expression}
7844Show the results of expanding all preprocessor macro invocations in
7845@var{expression}. Since @value{GDBN} simply expands macros, but does
7846not parse the result, @var{expression} need not be a valid expression;
7847it can be any string of tokens.
7848
09d4efe1 7849@kindex macro exp1
e2e0bcd1
JB
7850@item macro expand-once @var{expression}
7851@itemx macro exp1 @var{expression}
4644b6e3 7852@cindex expand macro once
e2e0bcd1
JB
7853@i{(This command is not yet implemented.)} Show the results of
7854expanding those preprocessor macro invocations that appear explicitly in
7855@var{expression}. Macro invocations appearing in that expansion are
7856left unchanged. This command allows you to see the effect of a
7857particular macro more clearly, without being confused by further
7858expansions. Since @value{GDBN} simply expands macros, but does not
7859parse the result, @var{expression} need not be a valid expression; it
7860can be any string of tokens.
7861
475b0867 7862@kindex info macro
e2e0bcd1
JB
7863@cindex macro definition, showing
7864@cindex definition, showing a macro's
475b0867 7865@item info macro @var{macro}
e2e0bcd1
JB
7866Show the definition of the macro named @var{macro}, and describe the
7867source location where that definition was established.
7868
7869@kindex macro define
7870@cindex user-defined macros
7871@cindex defining macros interactively
7872@cindex macros, user-defined
7873@item macro define @var{macro} @var{replacement-list}
7874@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
7875@i{(This command is not yet implemented.)} Introduce a definition for a
7876preprocessor macro named @var{macro}, invocations of which are replaced
7877by the tokens given in @var{replacement-list}. The first form of this
7878command defines an ``object-like'' macro, which takes no arguments; the
7879second form defines a ``function-like'' macro, which takes the arguments
7880given in @var{arglist}.
7881
7882A definition introduced by this command is in scope in every expression
7883evaluated in @value{GDBN}, until it is removed with the @command{macro
7884undef} command, described below. The definition overrides all
7885definitions for @var{macro} present in the program being debugged, as
7886well as any previous user-supplied definition.
7887
7888@kindex macro undef
7889@item macro undef @var{macro}
7890@i{(This command is not yet implemented.)} Remove any user-supplied
7891definition for the macro named @var{macro}. This command only affects
7892definitions provided with the @command{macro define} command, described
7893above; it cannot remove definitions present in the program being
7894debugged.
7895
09d4efe1
EZ
7896@kindex macro list
7897@item macro list
7898@i{(This command is not yet implemented.)} List all the macros
7899defined using the @code{macro define} command.
e2e0bcd1
JB
7900@end table
7901
7902@cindex macros, example of debugging with
7903Here is a transcript showing the above commands in action. First, we
7904show our source files:
7905
7906@smallexample
7907$ cat sample.c
7908#include <stdio.h>
7909#include "sample.h"
7910
7911#define M 42
7912#define ADD(x) (M + x)
7913
7914main ()
7915@{
7916#define N 28
7917 printf ("Hello, world!\n");
7918#undef N
7919 printf ("We're so creative.\n");
7920#define N 1729
7921 printf ("Goodbye, world!\n");
7922@}
7923$ cat sample.h
7924#define Q <
7925$
7926@end smallexample
7927
7928Now, we compile the program using the @sc{gnu} C compiler, @value{NGCC}.
7929We pass the @option{-gdwarf-2} and @option{-g3} flags to ensure the
7930compiler includes information about preprocessor macros in the debugging
7931information.
7932
7933@smallexample
7934$ gcc -gdwarf-2 -g3 sample.c -o sample
7935$
7936@end smallexample
7937
7938Now, we start @value{GDBN} on our sample program:
7939
7940@smallexample
7941$ gdb -nw sample
7942GNU gdb 2002-05-06-cvs
7943Copyright 2002 Free Software Foundation, Inc.
7944GDB is free software, @dots{}
f7dc1244 7945(@value{GDBP})
e2e0bcd1
JB
7946@end smallexample
7947
7948We can expand macros and examine their definitions, even when the
7949program is not running. @value{GDBN} uses the current listing position
7950to decide which macro definitions are in scope:
7951
7952@smallexample
f7dc1244 7953(@value{GDBP}) list main
e2e0bcd1
JB
79543
79554 #define M 42
79565 #define ADD(x) (M + x)
79576
79587 main ()
79598 @{
79609 #define N 28
796110 printf ("Hello, world!\n");
796211 #undef N
796312 printf ("We're so creative.\n");
f7dc1244 7964(@value{GDBP}) info macro ADD
e2e0bcd1
JB
7965Defined at /home/jimb/gdb/macros/play/sample.c:5
7966#define ADD(x) (M + x)
f7dc1244 7967(@value{GDBP}) info macro Q
e2e0bcd1
JB
7968Defined at /home/jimb/gdb/macros/play/sample.h:1
7969 included at /home/jimb/gdb/macros/play/sample.c:2
7970#define Q <
f7dc1244 7971(@value{GDBP}) macro expand ADD(1)
e2e0bcd1 7972expands to: (42 + 1)
f7dc1244 7973(@value{GDBP}) macro expand-once ADD(1)
e2e0bcd1 7974expands to: once (M + 1)
f7dc1244 7975(@value{GDBP})
e2e0bcd1
JB
7976@end smallexample
7977
7978In the example above, note that @command{macro expand-once} expands only
7979the macro invocation explicit in the original text --- the invocation of
7980@code{ADD} --- but does not expand the invocation of the macro @code{M},
7981which was introduced by @code{ADD}.
7982
3f94c067
BW
7983Once the program is running, @value{GDBN} uses the macro definitions in
7984force at the source line of the current stack frame:
e2e0bcd1
JB
7985
7986@smallexample
f7dc1244 7987(@value{GDBP}) break main
e2e0bcd1 7988Breakpoint 1 at 0x8048370: file sample.c, line 10.
f7dc1244 7989(@value{GDBP}) run
b383017d 7990Starting program: /home/jimb/gdb/macros/play/sample
e2e0bcd1
JB
7991
7992Breakpoint 1, main () at sample.c:10
799310 printf ("Hello, world!\n");
f7dc1244 7994(@value{GDBP})
e2e0bcd1
JB
7995@end smallexample
7996
7997At line 10, the definition of the macro @code{N} at line 9 is in force:
7998
7999@smallexample
f7dc1244 8000(@value{GDBP}) info macro N
e2e0bcd1
JB
8001Defined at /home/jimb/gdb/macros/play/sample.c:9
8002#define N 28
f7dc1244 8003(@value{GDBP}) macro expand N Q M
e2e0bcd1 8004expands to: 28 < 42
f7dc1244 8005(@value{GDBP}) print N Q M
e2e0bcd1 8006$1 = 1
f7dc1244 8007(@value{GDBP})
e2e0bcd1
JB
8008@end smallexample
8009
8010As we step over directives that remove @code{N}'s definition, and then
8011give it a new definition, @value{GDBN} finds the definition (or lack
8012thereof) in force at each point:
8013
8014@smallexample
f7dc1244 8015(@value{GDBP}) next
e2e0bcd1
JB
8016Hello, world!
801712 printf ("We're so creative.\n");
f7dc1244 8018(@value{GDBP}) info macro N
e2e0bcd1
JB
8019The symbol `N' has no definition as a C/C++ preprocessor macro
8020at /home/jimb/gdb/macros/play/sample.c:12
f7dc1244 8021(@value{GDBP}) next
e2e0bcd1
JB
8022We're so creative.
802314 printf ("Goodbye, world!\n");
f7dc1244 8024(@value{GDBP}) info macro N
e2e0bcd1
JB
8025Defined at /home/jimb/gdb/macros/play/sample.c:13
8026#define N 1729
f7dc1244 8027(@value{GDBP}) macro expand N Q M
e2e0bcd1 8028expands to: 1729 < 42
f7dc1244 8029(@value{GDBP}) print N Q M
e2e0bcd1 8030$2 = 0
f7dc1244 8031(@value{GDBP})
e2e0bcd1
JB
8032@end smallexample
8033
8034
b37052ae
EZ
8035@node Tracepoints
8036@chapter Tracepoints
8037@c This chapter is based on the documentation written by Michael
8038@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
8039
8040@cindex tracepoints
8041In some applications, it is not feasible for the debugger to interrupt
8042the program's execution long enough for the developer to learn
8043anything helpful about its behavior. If the program's correctness
8044depends on its real-time behavior, delays introduced by a debugger
8045might cause the program to change its behavior drastically, or perhaps
8046fail, even when the code itself is correct. It is useful to be able
8047to observe the program's behavior without interrupting it.
8048
8049Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
8050specify locations in the program, called @dfn{tracepoints}, and
8051arbitrary expressions to evaluate when those tracepoints are reached.
8052Later, using the @code{tfind} command, you can examine the values
8053those expressions had when the program hit the tracepoints. The
8054expressions may also denote objects in memory---structures or arrays,
8055for example---whose values @value{GDBN} should record; while visiting
8056a particular tracepoint, you may inspect those objects as if they were
8057in memory at that moment. However, because @value{GDBN} records these
8058values without interacting with you, it can do so quickly and
8059unobtrusively, hopefully not disturbing the program's behavior.
8060
8061The tracepoint facility is currently available only for remote
9d29849a
JB
8062targets. @xref{Targets}. In addition, your remote target must know
8063how to collect trace data. This functionality is implemented in the
8064remote stub; however, none of the stubs distributed with @value{GDBN}
8065support tracepoints as of this writing. The format of the remote
8066packets used to implement tracepoints are described in @ref{Tracepoint
8067Packets}.
b37052ae
EZ
8068
8069This chapter describes the tracepoint commands and features.
8070
8071@menu
b383017d
RM
8072* Set Tracepoints::
8073* Analyze Collected Data::
8074* Tracepoint Variables::
b37052ae
EZ
8075@end menu
8076
8077@node Set Tracepoints
8078@section Commands to Set Tracepoints
8079
8080Before running such a @dfn{trace experiment}, an arbitrary number of
8081tracepoints can be set. Like a breakpoint (@pxref{Set Breaks}), a
8082tracepoint has a number assigned to it by @value{GDBN}. Like with
8083breakpoints, tracepoint numbers are successive integers starting from
8084one. Many of the commands associated with tracepoints take the
8085tracepoint number as their argument, to identify which tracepoint to
8086work on.
8087
8088For each tracepoint, you can specify, in advance, some arbitrary set
8089of data that you want the target to collect in the trace buffer when
8090it hits that tracepoint. The collected data can include registers,
8091local variables, or global data. Later, you can use @value{GDBN}
8092commands to examine the values these data had at the time the
8093tracepoint was hit.
8094
8095This section describes commands to set tracepoints and associated
8096conditions and actions.
8097
8098@menu
b383017d
RM
8099* Create and Delete Tracepoints::
8100* Enable and Disable Tracepoints::
8101* Tracepoint Passcounts::
8102* Tracepoint Actions::
8103* Listing Tracepoints::
79a6e687 8104* Starting and Stopping Trace Experiments::
b37052ae
EZ
8105@end menu
8106
8107@node Create and Delete Tracepoints
8108@subsection Create and Delete Tracepoints
8109
8110@table @code
8111@cindex set tracepoint
8112@kindex trace
8113@item trace
8114The @code{trace} command is very similar to the @code{break} command.
8115Its argument can be a source line, a function name, or an address in
8116the target program. @xref{Set Breaks}. The @code{trace} command
8117defines a tracepoint, which is a point in the target program where the
8118debugger will briefly stop, collect some data, and then allow the
8119program to continue. Setting a tracepoint or changing its commands
8120doesn't take effect until the next @code{tstart} command; thus, you
8121cannot change the tracepoint attributes once a trace experiment is
8122running.
8123
8124Here are some examples of using the @code{trace} command:
8125
8126@smallexample
8127(@value{GDBP}) @b{trace foo.c:121} // a source file and line number
8128
8129(@value{GDBP}) @b{trace +2} // 2 lines forward
8130
8131(@value{GDBP}) @b{trace my_function} // first source line of function
8132
8133(@value{GDBP}) @b{trace *my_function} // EXACT start address of function
8134
8135(@value{GDBP}) @b{trace *0x2117c4} // an address
8136@end smallexample
8137
8138@noindent
8139You can abbreviate @code{trace} as @code{tr}.
8140
8141@vindex $tpnum
8142@cindex last tracepoint number
8143@cindex recent tracepoint number
8144@cindex tracepoint number
8145The convenience variable @code{$tpnum} records the tracepoint number
8146of the most recently set tracepoint.
8147
8148@kindex delete tracepoint
8149@cindex tracepoint deletion
8150@item delete tracepoint @r{[}@var{num}@r{]}
8151Permanently delete one or more tracepoints. With no argument, the
8152default is to delete all tracepoints.
8153
8154Examples:
8155
8156@smallexample
8157(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
8158
8159(@value{GDBP}) @b{delete trace} // remove all tracepoints
8160@end smallexample
8161
8162@noindent
8163You can abbreviate this command as @code{del tr}.
8164@end table
8165
8166@node Enable and Disable Tracepoints
8167@subsection Enable and Disable Tracepoints
8168
8169@table @code
8170@kindex disable tracepoint
8171@item disable tracepoint @r{[}@var{num}@r{]}
8172Disable tracepoint @var{num}, or all tracepoints if no argument
8173@var{num} is given. A disabled tracepoint will have no effect during
8174the next trace experiment, but it is not forgotten. You can re-enable
8175a disabled tracepoint using the @code{enable tracepoint} command.
8176
8177@kindex enable tracepoint
8178@item enable tracepoint @r{[}@var{num}@r{]}
8179Enable tracepoint @var{num}, or all tracepoints. The enabled
8180tracepoints will become effective the next time a trace experiment is
8181run.
8182@end table
8183
8184@node Tracepoint Passcounts
8185@subsection Tracepoint Passcounts
8186
8187@table @code
8188@kindex passcount
8189@cindex tracepoint pass count
8190@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
8191Set the @dfn{passcount} of a tracepoint. The passcount is a way to
8192automatically stop a trace experiment. If a tracepoint's passcount is
8193@var{n}, then the trace experiment will be automatically stopped on
8194the @var{n}'th time that tracepoint is hit. If the tracepoint number
8195@var{num} is not specified, the @code{passcount} command sets the
8196passcount of the most recently defined tracepoint. If no passcount is
8197given, the trace experiment will run until stopped explicitly by the
8198user.
8199
8200Examples:
8201
8202@smallexample
b383017d 8203(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
6826cf00 8204@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
b37052ae
EZ
8205
8206(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
6826cf00 8207@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
b37052ae
EZ
8208(@value{GDBP}) @b{trace foo}
8209(@value{GDBP}) @b{pass 3}
8210(@value{GDBP}) @b{trace bar}
8211(@value{GDBP}) @b{pass 2}
8212(@value{GDBP}) @b{trace baz}
8213(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
6826cf00
EZ
8214@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
8215@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
8216@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
b37052ae
EZ
8217@end smallexample
8218@end table
8219
8220@node Tracepoint Actions
8221@subsection Tracepoint Action Lists
8222
8223@table @code
8224@kindex actions
8225@cindex tracepoint actions
8226@item actions @r{[}@var{num}@r{]}
8227This command will prompt for a list of actions to be taken when the
8228tracepoint is hit. If the tracepoint number @var{num} is not
8229specified, this command sets the actions for the one that was most
8230recently defined (so that you can define a tracepoint and then say
8231@code{actions} without bothering about its number). You specify the
8232actions themselves on the following lines, one action at a time, and
8233terminate the actions list with a line containing just @code{end}. So
8234far, the only defined actions are @code{collect} and
8235@code{while-stepping}.
8236
8237@cindex remove actions from a tracepoint
8238To remove all actions from a tracepoint, type @samp{actions @var{num}}
8239and follow it immediately with @samp{end}.
8240
8241@smallexample
8242(@value{GDBP}) @b{collect @var{data}} // collect some data
8243
6826cf00 8244(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
b37052ae 8245
6826cf00 8246(@value{GDBP}) @b{end} // signals the end of actions.
b37052ae
EZ
8247@end smallexample
8248
8249In the following example, the action list begins with @code{collect}
8250commands indicating the things to be collected when the tracepoint is
8251hit. Then, in order to single-step and collect additional data
8252following the tracepoint, a @code{while-stepping} command is used,
8253followed by the list of things to be collected while stepping. The
8254@code{while-stepping} command is terminated by its own separate
8255@code{end} command. Lastly, the action list is terminated by an
8256@code{end} command.
8257
8258@smallexample
8259(@value{GDBP}) @b{trace foo}
8260(@value{GDBP}) @b{actions}
8261Enter actions for tracepoint 1, one per line:
8262> collect bar,baz
8263> collect $regs
8264> while-stepping 12
8265 > collect $fp, $sp
8266 > end
8267end
8268@end smallexample
8269
8270@kindex collect @r{(tracepoints)}
8271@item collect @var{expr1}, @var{expr2}, @dots{}
8272Collect values of the given expressions when the tracepoint is hit.
8273This command accepts a comma-separated list of any valid expressions.
8274In addition to global, static, or local variables, the following
8275special arguments are supported:
8276
8277@table @code
8278@item $regs
8279collect all registers
8280
8281@item $args
8282collect all function arguments
8283
8284@item $locals
8285collect all local variables.
8286@end table
8287
8288You can give several consecutive @code{collect} commands, each one
8289with a single argument, or one @code{collect} command with several
8290arguments separated by commas: the effect is the same.
8291
f5c37c66
EZ
8292The command @code{info scope} (@pxref{Symbols, info scope}) is
8293particularly useful for figuring out what data to collect.
8294
b37052ae
EZ
8295@kindex while-stepping @r{(tracepoints)}
8296@item while-stepping @var{n}
8297Perform @var{n} single-step traces after the tracepoint, collecting
8298new data at each step. The @code{while-stepping} command is
8299followed by the list of what to collect while stepping (followed by
8300its own @code{end} command):
8301
8302@smallexample
8303> while-stepping 12
8304 > collect $regs, myglobal
8305 > end
8306>
8307@end smallexample
8308
8309@noindent
8310You may abbreviate @code{while-stepping} as @code{ws} or
8311@code{stepping}.
8312@end table
8313
8314@node Listing Tracepoints
8315@subsection Listing Tracepoints
8316
8317@table @code
8318@kindex info tracepoints
09d4efe1 8319@kindex info tp
b37052ae
EZ
8320@cindex information about tracepoints
8321@item info tracepoints @r{[}@var{num}@r{]}
8a037dd7 8322Display information about the tracepoint @var{num}. If you don't specify
798c8bc6 8323a tracepoint number, displays information about all the tracepoints
b37052ae
EZ
8324defined so far. For each tracepoint, the following information is
8325shown:
8326
8327@itemize @bullet
8328@item
8329its number
8330@item
8331whether it is enabled or disabled
8332@item
8333its address
8334@item
8335its passcount as given by the @code{passcount @var{n}} command
8336@item
8337its step count as given by the @code{while-stepping @var{n}} command
8338@item
8339where in the source files is the tracepoint set
8340@item
8341its action list as given by the @code{actions} command
8342@end itemize
8343
8344@smallexample
8345(@value{GDBP}) @b{info trace}
8346Num Enb Address PassC StepC What
83471 y 0x002117c4 0 0 <gdb_asm>
6826cf00
EZ
83482 y 0x0020dc64 0 0 in g_test at g_test.c:1375
83493 y 0x0020b1f4 0 0 in get_data at ../foo.c:41
b37052ae
EZ
8350(@value{GDBP})
8351@end smallexample
8352
8353@noindent
8354This command can be abbreviated @code{info tp}.
8355@end table
8356
79a6e687
BW
8357@node Starting and Stopping Trace Experiments
8358@subsection Starting and Stopping Trace Experiments
b37052ae
EZ
8359
8360@table @code
8361@kindex tstart
8362@cindex start a new trace experiment
8363@cindex collected data discarded
8364@item tstart
8365This command takes no arguments. It starts the trace experiment, and
8366begins collecting data. This has the side effect of discarding all
8367the data collected in the trace buffer during the previous trace
8368experiment.
8369
8370@kindex tstop
8371@cindex stop a running trace experiment
8372@item tstop
8373This command takes no arguments. It ends the trace experiment, and
8374stops collecting data.
8375
68c71a2e 8376@strong{Note}: a trace experiment and data collection may stop
b37052ae
EZ
8377automatically if any tracepoint's passcount is reached
8378(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
8379
8380@kindex tstatus
8381@cindex status of trace data collection
8382@cindex trace experiment, status of
8383@item tstatus
8384This command displays the status of the current trace data
8385collection.
8386@end table
8387
8388Here is an example of the commands we described so far:
8389
8390@smallexample
8391(@value{GDBP}) @b{trace gdb_c_test}
8392(@value{GDBP}) @b{actions}
8393Enter actions for tracepoint #1, one per line.
8394> collect $regs,$locals,$args
8395> while-stepping 11
8396 > collect $regs
8397 > end
8398> end
8399(@value{GDBP}) @b{tstart}
8400 [time passes @dots{}]
8401(@value{GDBP}) @b{tstop}
8402@end smallexample
8403
8404
8405@node Analyze Collected Data
79a6e687 8406@section Using the Collected Data
b37052ae
EZ
8407
8408After the tracepoint experiment ends, you use @value{GDBN} commands
8409for examining the trace data. The basic idea is that each tracepoint
8410collects a trace @dfn{snapshot} every time it is hit and another
8411snapshot every time it single-steps. All these snapshots are
8412consecutively numbered from zero and go into a buffer, and you can
8413examine them later. The way you examine them is to @dfn{focus} on a
8414specific trace snapshot. When the remote stub is focused on a trace
8415snapshot, it will respond to all @value{GDBN} requests for memory and
8416registers by reading from the buffer which belongs to that snapshot,
8417rather than from @emph{real} memory or registers of the program being
8418debugged. This means that @strong{all} @value{GDBN} commands
8419(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
8420behave as if we were currently debugging the program state as it was
8421when the tracepoint occurred. Any requests for data that are not in
8422the buffer will fail.
8423
8424@menu
8425* tfind:: How to select a trace snapshot
8426* tdump:: How to display all data for a snapshot
8427* save-tracepoints:: How to save tracepoints for a future run
8428@end menu
8429
8430@node tfind
8431@subsection @code{tfind @var{n}}
8432
8433@kindex tfind
8434@cindex select trace snapshot
8435@cindex find trace snapshot
8436The basic command for selecting a trace snapshot from the buffer is
8437@code{tfind @var{n}}, which finds trace snapshot number @var{n},
8438counting from zero. If no argument @var{n} is given, the next
8439snapshot is selected.
8440
8441Here are the various forms of using the @code{tfind} command.
8442
8443@table @code
8444@item tfind start
8445Find the first snapshot in the buffer. This is a synonym for
8446@code{tfind 0} (since 0 is the number of the first snapshot).
8447
8448@item tfind none
8449Stop debugging trace snapshots, resume @emph{live} debugging.
8450
8451@item tfind end
8452Same as @samp{tfind none}.
8453
8454@item tfind
8455No argument means find the next trace snapshot.
8456
8457@item tfind -
8458Find the previous trace snapshot before the current one. This permits
8459retracing earlier steps.
8460
8461@item tfind tracepoint @var{num}
8462Find the next snapshot associated with tracepoint @var{num}. Search
8463proceeds forward from the last examined trace snapshot. If no
8464argument @var{num} is given, it means find the next snapshot collected
8465for the same tracepoint as the current snapshot.
8466
8467@item tfind pc @var{addr}
8468Find the next snapshot associated with the value @var{addr} of the
8469program counter. Search proceeds forward from the last examined trace
8470snapshot. If no argument @var{addr} is given, it means find the next
8471snapshot with the same value of PC as the current snapshot.
8472
8473@item tfind outside @var{addr1}, @var{addr2}
8474Find the next snapshot whose PC is outside the given range of
8475addresses.
8476
8477@item tfind range @var{addr1}, @var{addr2}
8478Find the next snapshot whose PC is between @var{addr1} and
8479@var{addr2}. @c FIXME: Is the range inclusive or exclusive?
8480
8481@item tfind line @r{[}@var{file}:@r{]}@var{n}
8482Find the next snapshot associated with the source line @var{n}. If
8483the optional argument @var{file} is given, refer to line @var{n} in
8484that source file. Search proceeds forward from the last examined
8485trace snapshot. If no argument @var{n} is given, it means find the
8486next line other than the one currently being examined; thus saying
8487@code{tfind line} repeatedly can appear to have the same effect as
8488stepping from line to line in a @emph{live} debugging session.
8489@end table
8490
8491The default arguments for the @code{tfind} commands are specifically
8492designed to make it easy to scan through the trace buffer. For
8493instance, @code{tfind} with no argument selects the next trace
8494snapshot, and @code{tfind -} with no argument selects the previous
8495trace snapshot. So, by giving one @code{tfind} command, and then
8496simply hitting @key{RET} repeatedly you can examine all the trace
8497snapshots in order. Or, by saying @code{tfind -} and then hitting
8498@key{RET} repeatedly you can examine the snapshots in reverse order.
8499The @code{tfind line} command with no argument selects the snapshot
8500for the next source line executed. The @code{tfind pc} command with
8501no argument selects the next snapshot with the same program counter
8502(PC) as the current frame. The @code{tfind tracepoint} command with
8503no argument selects the next trace snapshot collected by the same
8504tracepoint as the current one.
8505
8506In addition to letting you scan through the trace buffer manually,
8507these commands make it easy to construct @value{GDBN} scripts that
8508scan through the trace buffer and print out whatever collected data
8509you are interested in. Thus, if we want to examine the PC, FP, and SP
8510registers from each trace frame in the buffer, we can say this:
8511
8512@smallexample
8513(@value{GDBP}) @b{tfind start}
8514(@value{GDBP}) @b{while ($trace_frame != -1)}
8515> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
8516 $trace_frame, $pc, $sp, $fp
8517> tfind
8518> end
8519
8520Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
8521Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
8522Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
8523Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
8524Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
8525Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
8526Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
8527Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
8528Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
8529Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
8530Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
8531@end smallexample
8532
8533Or, if we want to examine the variable @code{X} at each source line in
8534the buffer:
8535
8536@smallexample
8537(@value{GDBP}) @b{tfind start}
8538(@value{GDBP}) @b{while ($trace_frame != -1)}
8539> printf "Frame %d, X == %d\n", $trace_frame, X
8540> tfind line
8541> end
8542
8543Frame 0, X = 1
8544Frame 7, X = 2
8545Frame 13, X = 255
8546@end smallexample
8547
8548@node tdump
8549@subsection @code{tdump}
8550@kindex tdump
8551@cindex dump all data collected at tracepoint
8552@cindex tracepoint data, display
8553
8554This command takes no arguments. It prints all the data collected at
8555the current trace snapshot.
8556
8557@smallexample
8558(@value{GDBP}) @b{trace 444}
8559(@value{GDBP}) @b{actions}
8560Enter actions for tracepoint #2, one per line:
8561> collect $regs, $locals, $args, gdb_long_test
8562> end
8563
8564(@value{GDBP}) @b{tstart}
8565
8566(@value{GDBP}) @b{tfind line 444}
8567#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
8568at gdb_test.c:444
8569444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
8570
8571(@value{GDBP}) @b{tdump}
8572Data collected at tracepoint 2, trace frame 1:
8573d0 0xc4aa0085 -995491707
8574d1 0x18 24
8575d2 0x80 128
8576d3 0x33 51
8577d4 0x71aea3d 119204413
8578d5 0x22 34
8579d6 0xe0 224
8580d7 0x380035 3670069
8581a0 0x19e24a 1696330
8582a1 0x3000668 50333288
8583a2 0x100 256
8584a3 0x322000 3284992
8585a4 0x3000698 50333336
8586a5 0x1ad3cc 1758156
8587fp 0x30bf3c 0x30bf3c
8588sp 0x30bf34 0x30bf34
8589ps 0x0 0
8590pc 0x20b2c8 0x20b2c8
8591fpcontrol 0x0 0
8592fpstatus 0x0 0
8593fpiaddr 0x0 0
8594p = 0x20e5b4 "gdb-test"
8595p1 = (void *) 0x11
8596p2 = (void *) 0x22
8597p3 = (void *) 0x33
8598p4 = (void *) 0x44
8599p5 = (void *) 0x55
8600p6 = (void *) 0x66
8601gdb_long_test = 17 '\021'
8602
8603(@value{GDBP})
8604@end smallexample
8605
8606@node save-tracepoints
8607@subsection @code{save-tracepoints @var{filename}}
8608@kindex save-tracepoints
8609@cindex save tracepoints for future sessions
8610
8611This command saves all current tracepoint definitions together with
8612their actions and passcounts, into a file @file{@var{filename}}
8613suitable for use in a later debugging session. To read the saved
8614tracepoint definitions, use the @code{source} command (@pxref{Command
8615Files}).
8616
8617@node Tracepoint Variables
8618@section Convenience Variables for Tracepoints
8619@cindex tracepoint variables
8620@cindex convenience variables for tracepoints
8621
8622@table @code
8623@vindex $trace_frame
8624@item (int) $trace_frame
8625The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
8626snapshot is selected.
8627
8628@vindex $tracepoint
8629@item (int) $tracepoint
8630The tracepoint for the current trace snapshot.
8631
8632@vindex $trace_line
8633@item (int) $trace_line
8634The line number for the current trace snapshot.
8635
8636@vindex $trace_file
8637@item (char []) $trace_file
8638The source file for the current trace snapshot.
8639
8640@vindex $trace_func
8641@item (char []) $trace_func
8642The name of the function containing @code{$tracepoint}.
8643@end table
8644
8645Note: @code{$trace_file} is not suitable for use in @code{printf},
8646use @code{output} instead.
8647
8648Here's a simple example of using these convenience variables for
8649stepping through all the trace snapshots and printing some of their
8650data.
8651
8652@smallexample
8653(@value{GDBP}) @b{tfind start}
8654
8655(@value{GDBP}) @b{while $trace_frame != -1}
8656> output $trace_file
8657> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
8658> tfind
8659> end
8660@end smallexample
8661
df0cd8c5
JB
8662@node Overlays
8663@chapter Debugging Programs That Use Overlays
8664@cindex overlays
8665
8666If your program is too large to fit completely in your target system's
8667memory, you can sometimes use @dfn{overlays} to work around this
8668problem. @value{GDBN} provides some support for debugging programs that
8669use overlays.
8670
8671@menu
8672* How Overlays Work:: A general explanation of overlays.
8673* Overlay Commands:: Managing overlays in @value{GDBN}.
8674* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
8675 mapped by asking the inferior.
8676* Overlay Sample Program:: A sample program using overlays.
8677@end menu
8678
8679@node How Overlays Work
8680@section How Overlays Work
8681@cindex mapped overlays
8682@cindex unmapped overlays
8683@cindex load address, overlay's
8684@cindex mapped address
8685@cindex overlay area
8686
8687Suppose you have a computer whose instruction address space is only 64
8688kilobytes long, but which has much more memory which can be accessed by
8689other means: special instructions, segment registers, or memory
8690management hardware, for example. Suppose further that you want to
8691adapt a program which is larger than 64 kilobytes to run on this system.
8692
8693One solution is to identify modules of your program which are relatively
8694independent, and need not call each other directly; call these modules
8695@dfn{overlays}. Separate the overlays from the main program, and place
8696their machine code in the larger memory. Place your main program in
8697instruction memory, but leave at least enough space there to hold the
8698largest overlay as well.
8699
8700Now, to call a function located in an overlay, you must first copy that
8701overlay's machine code from the large memory into the space set aside
8702for it in the instruction memory, and then jump to its entry point
8703there.
8704
c928edc0
AC
8705@c NB: In the below the mapped area's size is greater or equal to the
8706@c size of all overlays. This is intentional to remind the developer
8707@c that overlays don't necessarily need to be the same size.
8708
474c8240 8709@smallexample
df0cd8c5 8710@group
c928edc0
AC
8711 Data Instruction Larger
8712Address Space Address Space Address Space
8713+-----------+ +-----------+ +-----------+
8714| | | | | |
8715+-----------+ +-----------+ +-----------+<-- overlay 1
8716| program | | main | .----| overlay 1 | load address
8717| variables | | program | | +-----------+
8718| and heap | | | | | |
8719+-----------+ | | | +-----------+<-- overlay 2
8720| | +-----------+ | | | load address
8721+-----------+ | | | .-| overlay 2 |
8722 | | | | | |
8723 mapped --->+-----------+ | | +-----------+
8724 address | | | | | |
8725 | overlay | <-' | | |
8726 | area | <---' +-----------+<-- overlay 3
8727 | | <---. | | load address
8728 +-----------+ `--| overlay 3 |
8729 | | | |
8730 +-----------+ | |
8731 +-----------+
8732 | |
8733 +-----------+
8734
8735 @anchor{A code overlay}A code overlay
df0cd8c5 8736@end group
474c8240 8737@end smallexample
df0cd8c5 8738
c928edc0
AC
8739The diagram (@pxref{A code overlay}) shows a system with separate data
8740and instruction address spaces. To map an overlay, the program copies
8741its code from the larger address space to the instruction address space.
8742Since the overlays shown here all use the same mapped address, only one
8743may be mapped at a time. For a system with a single address space for
8744data and instructions, the diagram would be similar, except that the
8745program variables and heap would share an address space with the main
8746program and the overlay area.
df0cd8c5
JB
8747
8748An overlay loaded into instruction memory and ready for use is called a
8749@dfn{mapped} overlay; its @dfn{mapped address} is its address in the
8750instruction memory. An overlay not present (or only partially present)
8751in instruction memory is called @dfn{unmapped}; its @dfn{load address}
8752is its address in the larger memory. The mapped address is also called
8753the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
8754called the @dfn{load memory address}, or @dfn{LMA}.
8755
8756Unfortunately, overlays are not a completely transparent way to adapt a
8757program to limited instruction memory. They introduce a new set of
8758global constraints you must keep in mind as you design your program:
8759
8760@itemize @bullet
8761
8762@item
8763Before calling or returning to a function in an overlay, your program
8764must make sure that overlay is actually mapped. Otherwise, the call or
8765return will transfer control to the right address, but in the wrong
8766overlay, and your program will probably crash.
8767
8768@item
8769If the process of mapping an overlay is expensive on your system, you
8770will need to choose your overlays carefully to minimize their effect on
8771your program's performance.
8772
8773@item
8774The executable file you load onto your system must contain each
8775overlay's instructions, appearing at the overlay's load address, not its
8776mapped address. However, each overlay's instructions must be relocated
8777and its symbols defined as if the overlay were at its mapped address.
8778You can use GNU linker scripts to specify different load and relocation
8779addresses for pieces of your program; see @ref{Overlay Description,,,
8780ld.info, Using ld: the GNU linker}.
8781
8782@item
8783The procedure for loading executable files onto your system must be able
8784to load their contents into the larger address space as well as the
8785instruction and data spaces.
8786
8787@end itemize
8788
8789The overlay system described above is rather simple, and could be
8790improved in many ways:
8791
8792@itemize @bullet
8793
8794@item
8795If your system has suitable bank switch registers or memory management
8796hardware, you could use those facilities to make an overlay's load area
8797contents simply appear at their mapped address in instruction space.
8798This would probably be faster than copying the overlay to its mapped
8799area in the usual way.
8800
8801@item
8802If your overlays are small enough, you could set aside more than one
8803overlay area, and have more than one overlay mapped at a time.
8804
8805@item
8806You can use overlays to manage data, as well as instructions. In
8807general, data overlays are even less transparent to your design than
8808code overlays: whereas code overlays only require care when you call or
8809return to functions, data overlays require care every time you access
8810the data. Also, if you change the contents of a data overlay, you
8811must copy its contents back out to its load address before you can copy a
8812different data overlay into the same mapped area.
8813
8814@end itemize
8815
8816
8817@node Overlay Commands
8818@section Overlay Commands
8819
8820To use @value{GDBN}'s overlay support, each overlay in your program must
8821correspond to a separate section of the executable file. The section's
8822virtual memory address and load memory address must be the overlay's
8823mapped and load addresses. Identifying overlays with sections allows
8824@value{GDBN} to determine the appropriate address of a function or
8825variable, depending on whether the overlay is mapped or not.
8826
8827@value{GDBN}'s overlay commands all start with the word @code{overlay};
8828you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
8829
8830@table @code
8831@item overlay off
4644b6e3 8832@kindex overlay
df0cd8c5
JB
8833Disable @value{GDBN}'s overlay support. When overlay support is
8834disabled, @value{GDBN} assumes that all functions and variables are
8835always present at their mapped addresses. By default, @value{GDBN}'s
8836overlay support is disabled.
8837
8838@item overlay manual
df0cd8c5
JB
8839@cindex manual overlay debugging
8840Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
8841relies on you to tell it which overlays are mapped, and which are not,
8842using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
8843commands described below.
8844
8845@item overlay map-overlay @var{overlay}
8846@itemx overlay map @var{overlay}
df0cd8c5
JB
8847@cindex map an overlay
8848Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
8849be the name of the object file section containing the overlay. When an
8850overlay is mapped, @value{GDBN} assumes it can find the overlay's
8851functions and variables at their mapped addresses. @value{GDBN} assumes
8852that any other overlays whose mapped ranges overlap that of
8853@var{overlay} are now unmapped.
8854
8855@item overlay unmap-overlay @var{overlay}
8856@itemx overlay unmap @var{overlay}
df0cd8c5
JB
8857@cindex unmap an overlay
8858Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
8859must be the name of the object file section containing the overlay.
8860When an overlay is unmapped, @value{GDBN} assumes it can find the
8861overlay's functions and variables at their load addresses.
8862
8863@item overlay auto
df0cd8c5
JB
8864Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
8865consults a data structure the overlay manager maintains in the inferior
8866to see which overlays are mapped. For details, see @ref{Automatic
8867Overlay Debugging}.
8868
8869@item overlay load-target
8870@itemx overlay load
df0cd8c5
JB
8871@cindex reloading the overlay table
8872Re-read the overlay table from the inferior. Normally, @value{GDBN}
8873re-reads the table @value{GDBN} automatically each time the inferior
8874stops, so this command should only be necessary if you have changed the
8875overlay mapping yourself using @value{GDBN}. This command is only
8876useful when using automatic overlay debugging.
8877
8878@item overlay list-overlays
8879@itemx overlay list
8880@cindex listing mapped overlays
8881Display a list of the overlays currently mapped, along with their mapped
8882addresses, load addresses, and sizes.
8883
8884@end table
8885
8886Normally, when @value{GDBN} prints a code address, it includes the name
8887of the function the address falls in:
8888
474c8240 8889@smallexample
f7dc1244 8890(@value{GDBP}) print main
df0cd8c5 8891$3 = @{int ()@} 0x11a0 <main>
474c8240 8892@end smallexample
df0cd8c5
JB
8893@noindent
8894When overlay debugging is enabled, @value{GDBN} recognizes code in
8895unmapped overlays, and prints the names of unmapped functions with
8896asterisks around them. For example, if @code{foo} is a function in an
8897unmapped overlay, @value{GDBN} prints it this way:
8898
474c8240 8899@smallexample
f7dc1244 8900(@value{GDBP}) overlay list
df0cd8c5 8901No sections are mapped.
f7dc1244 8902(@value{GDBP}) print foo
df0cd8c5 8903$5 = @{int (int)@} 0x100000 <*foo*>
474c8240 8904@end smallexample
df0cd8c5
JB
8905@noindent
8906When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
8907name normally:
8908
474c8240 8909@smallexample
f7dc1244 8910(@value{GDBP}) overlay list
b383017d 8911Section .ov.foo.text, loaded at 0x100000 - 0x100034,
df0cd8c5 8912 mapped at 0x1016 - 0x104a
f7dc1244 8913(@value{GDBP}) print foo
df0cd8c5 8914$6 = @{int (int)@} 0x1016 <foo>
474c8240 8915@end smallexample
df0cd8c5
JB
8916
8917When overlay debugging is enabled, @value{GDBN} can find the correct
8918address for functions and variables in an overlay, whether or not the
8919overlay is mapped. This allows most @value{GDBN} commands, like
8920@code{break} and @code{disassemble}, to work normally, even on unmapped
8921code. However, @value{GDBN}'s breakpoint support has some limitations:
8922
8923@itemize @bullet
8924@item
8925@cindex breakpoints in overlays
8926@cindex overlays, setting breakpoints in
8927You can set breakpoints in functions in unmapped overlays, as long as
8928@value{GDBN} can write to the overlay at its load address.
8929@item
8930@value{GDBN} can not set hardware or simulator-based breakpoints in
8931unmapped overlays. However, if you set a breakpoint at the end of your
8932overlay manager (and tell @value{GDBN} which overlays are now mapped, if
8933you are using manual overlay management), @value{GDBN} will re-set its
8934breakpoints properly.
8935@end itemize
8936
8937
8938@node Automatic Overlay Debugging
8939@section Automatic Overlay Debugging
8940@cindex automatic overlay debugging
8941
8942@value{GDBN} can automatically track which overlays are mapped and which
8943are not, given some simple co-operation from the overlay manager in the
8944inferior. If you enable automatic overlay debugging with the
8945@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
8946looks in the inferior's memory for certain variables describing the
8947current state of the overlays.
8948
8949Here are the variables your overlay manager must define to support
8950@value{GDBN}'s automatic overlay debugging:
8951
8952@table @asis
8953
8954@item @code{_ovly_table}:
8955This variable must be an array of the following structures:
8956
474c8240 8957@smallexample
df0cd8c5
JB
8958struct
8959@{
8960 /* The overlay's mapped address. */
8961 unsigned long vma;
8962
8963 /* The size of the overlay, in bytes. */
8964 unsigned long size;
8965
8966 /* The overlay's load address. */
8967 unsigned long lma;
8968
8969 /* Non-zero if the overlay is currently mapped;
8970 zero otherwise. */
8971 unsigned long mapped;
8972@}
474c8240 8973@end smallexample
df0cd8c5
JB
8974
8975@item @code{_novlys}:
8976This variable must be a four-byte signed integer, holding the total
8977number of elements in @code{_ovly_table}.
8978
8979@end table
8980
8981To decide whether a particular overlay is mapped or not, @value{GDBN}
8982looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
8983@code{lma} members equal the VMA and LMA of the overlay's section in the
8984executable file. When @value{GDBN} finds a matching entry, it consults
8985the entry's @code{mapped} member to determine whether the overlay is
8986currently mapped.
8987
81d46470 8988In addition, your overlay manager may define a function called
def71bfa 8989@code{_ovly_debug_event}. If this function is defined, @value{GDBN}
81d46470
MS
8990will silently set a breakpoint there. If the overlay manager then
8991calls this function whenever it has changed the overlay table, this
8992will enable @value{GDBN} to accurately keep track of which overlays
8993are in program memory, and update any breakpoints that may be set
b383017d 8994in overlays. This will allow breakpoints to work even if the
81d46470
MS
8995overlays are kept in ROM or other non-writable memory while they
8996are not being executed.
df0cd8c5
JB
8997
8998@node Overlay Sample Program
8999@section Overlay Sample Program
9000@cindex overlay example program
9001
9002When linking a program which uses overlays, you must place the overlays
9003at their load addresses, while relocating them to run at their mapped
9004addresses. To do this, you must write a linker script (@pxref{Overlay
9005Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
9006since linker scripts are specific to a particular host system, target
9007architecture, and target memory layout, this manual cannot provide
9008portable sample code demonstrating @value{GDBN}'s overlay support.
9009
9010However, the @value{GDBN} source distribution does contain an overlaid
9011program, with linker scripts for a few systems, as part of its test
9012suite. The program consists of the following files from
9013@file{gdb/testsuite/gdb.base}:
9014
9015@table @file
9016@item overlays.c
9017The main program file.
9018@item ovlymgr.c
9019A simple overlay manager, used by @file{overlays.c}.
9020@item foo.c
9021@itemx bar.c
9022@itemx baz.c
9023@itemx grbx.c
9024Overlay modules, loaded and used by @file{overlays.c}.
9025@item d10v.ld
9026@itemx m32r.ld
9027Linker scripts for linking the test program on the @code{d10v-elf}
9028and @code{m32r-elf} targets.
9029@end table
9030
9031You can build the test program using the @code{d10v-elf} GCC
9032cross-compiler like this:
9033
474c8240 9034@smallexample
df0cd8c5
JB
9035$ d10v-elf-gcc -g -c overlays.c
9036$ d10v-elf-gcc -g -c ovlymgr.c
9037$ d10v-elf-gcc -g -c foo.c
9038$ d10v-elf-gcc -g -c bar.c
9039$ d10v-elf-gcc -g -c baz.c
9040$ d10v-elf-gcc -g -c grbx.c
9041$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
9042 baz.o grbx.o -Wl,-Td10v.ld -o overlays
474c8240 9043@end smallexample
df0cd8c5
JB
9044
9045The build process is identical for any other architecture, except that
9046you must substitute the appropriate compiler and linker script for the
9047target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
9048
9049
6d2ebf8b 9050@node Languages
c906108c
SS
9051@chapter Using @value{GDBN} with Different Languages
9052@cindex languages
9053
c906108c
SS
9054Although programming languages generally have common aspects, they are
9055rarely expressed in the same manner. For instance, in ANSI C,
9056dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
9057Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 9058represented (and displayed) differently. Hex numbers in C appear as
c906108c 9059@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
9060
9061@cindex working language
9062Language-specific information is built into @value{GDBN} for some languages,
9063allowing you to express operations like the above in your program's
9064native language, and allowing @value{GDBN} to output values in a manner
9065consistent with the syntax of your program's native language. The
9066language you use to build expressions is called the @dfn{working
9067language}.
9068
9069@menu
9070* Setting:: Switching between source languages
9071* Show:: Displaying the language
c906108c 9072* Checks:: Type and range checks
79a6e687
BW
9073* Supported Languages:: Supported languages
9074* Unsupported Languages:: Unsupported languages
c906108c
SS
9075@end menu
9076
6d2ebf8b 9077@node Setting
79a6e687 9078@section Switching Between Source Languages
c906108c
SS
9079
9080There are two ways to control the working language---either have @value{GDBN}
9081set it automatically, or select it manually yourself. You can use the
9082@code{set language} command for either purpose. On startup, @value{GDBN}
9083defaults to setting the language automatically. The working language is
9084used to determine how expressions you type are interpreted, how values
9085are printed, etc.
9086
9087In addition to the working language, every source file that
9088@value{GDBN} knows about has its own working language. For some object
9089file formats, the compiler might indicate which language a particular
9090source file is in. However, most of the time @value{GDBN} infers the
9091language from the name of the file. The language of a source file
b37052ae 9092controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 9093show each frame appropriately for its own language. There is no way to
d4f3574e
SS
9094set the language of a source file from within @value{GDBN}, but you can
9095set the language associated with a filename extension. @xref{Show, ,
79a6e687 9096Displaying the Language}.
c906108c
SS
9097
9098This is most commonly a problem when you use a program, such
5d161b24 9099as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
9100another language. In that case, make the
9101program use @code{#line} directives in its C output; that way
9102@value{GDBN} will know the correct language of the source code of the original
9103program, and will display that source code, not the generated C code.
9104
9105@menu
9106* Filenames:: Filename extensions and languages.
9107* Manually:: Setting the working language manually
9108* Automatically:: Having @value{GDBN} infer the source language
9109@end menu
9110
6d2ebf8b 9111@node Filenames
79a6e687 9112@subsection List of Filename Extensions and Languages
c906108c
SS
9113
9114If a source file name ends in one of the following extensions, then
9115@value{GDBN} infers that its language is the one indicated.
9116
9117@table @file
e07c999f
PH
9118@item .ada
9119@itemx .ads
9120@itemx .adb
9121@itemx .a
9122Ada source file.
c906108c
SS
9123
9124@item .c
9125C source file
9126
9127@item .C
9128@itemx .cc
9129@itemx .cp
9130@itemx .cpp
9131@itemx .cxx
9132@itemx .c++
b37052ae 9133C@t{++} source file
c906108c 9134
b37303ee
AF
9135@item .m
9136Objective-C source file
9137
c906108c
SS
9138@item .f
9139@itemx .F
9140Fortran source file
9141
c906108c
SS
9142@item .mod
9143Modula-2 source file
c906108c
SS
9144
9145@item .s
9146@itemx .S
9147Assembler source file. This actually behaves almost like C, but
9148@value{GDBN} does not skip over function prologues when stepping.
9149@end table
9150
9151In addition, you may set the language associated with a filename
79a6e687 9152extension. @xref{Show, , Displaying the Language}.
c906108c 9153
6d2ebf8b 9154@node Manually
79a6e687 9155@subsection Setting the Working Language
c906108c
SS
9156
9157If you allow @value{GDBN} to set the language automatically,
9158expressions are interpreted the same way in your debugging session and
9159your program.
9160
9161@kindex set language
9162If you wish, you may set the language manually. To do this, issue the
9163command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 9164a language, such as
c906108c 9165@code{c} or @code{modula-2}.
c906108c
SS
9166For a list of the supported languages, type @samp{set language}.
9167
c906108c
SS
9168Setting the language manually prevents @value{GDBN} from updating the working
9169language automatically. This can lead to confusion if you try
9170to debug a program when the working language is not the same as the
9171source language, when an expression is acceptable to both
9172languages---but means different things. For instance, if the current
9173source file were written in C, and @value{GDBN} was parsing Modula-2, a
9174command such as:
9175
474c8240 9176@smallexample
c906108c 9177print a = b + c
474c8240 9178@end smallexample
c906108c
SS
9179
9180@noindent
9181might not have the effect you intended. In C, this means to add
9182@code{b} and @code{c} and place the result in @code{a}. The result
9183printed would be the value of @code{a}. In Modula-2, this means to compare
9184@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 9185
6d2ebf8b 9186@node Automatically
79a6e687 9187@subsection Having @value{GDBN} Infer the Source Language
c906108c
SS
9188
9189To have @value{GDBN} set the working language automatically, use
9190@samp{set language local} or @samp{set language auto}. @value{GDBN}
9191then infers the working language. That is, when your program stops in a
9192frame (usually by encountering a breakpoint), @value{GDBN} sets the
9193working language to the language recorded for the function in that
9194frame. If the language for a frame is unknown (that is, if the function
9195or block corresponding to the frame was defined in a source file that
9196does not have a recognized extension), the current working language is
9197not changed, and @value{GDBN} issues a warning.
9198
9199This may not seem necessary for most programs, which are written
9200entirely in one source language. However, program modules and libraries
9201written in one source language can be used by a main program written in
9202a different source language. Using @samp{set language auto} in this
9203case frees you from having to set the working language manually.
9204
6d2ebf8b 9205@node Show
79a6e687 9206@section Displaying the Language
c906108c
SS
9207
9208The following commands help you find out which language is the
9209working language, and also what language source files were written in.
9210
c906108c
SS
9211@table @code
9212@item show language
9c16f35a 9213@kindex show language
c906108c
SS
9214Display the current working language. This is the
9215language you can use with commands such as @code{print} to
9216build and compute expressions that may involve variables in your program.
9217
9218@item info frame
4644b6e3 9219@kindex info frame@r{, show the source language}
5d161b24 9220Display the source language for this frame. This language becomes the
c906108c 9221working language if you use an identifier from this frame.
79a6e687 9222@xref{Frame Info, ,Information about a Frame}, to identify the other
c906108c
SS
9223information listed here.
9224
9225@item info source
4644b6e3 9226@kindex info source@r{, show the source language}
c906108c 9227Display the source language of this source file.
5d161b24 9228@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
9229information listed here.
9230@end table
9231
9232In unusual circumstances, you may have source files with extensions
9233not in the standard list. You can then set the extension associated
9234with a language explicitly:
9235
c906108c 9236@table @code
09d4efe1 9237@item set extension-language @var{ext} @var{language}
9c16f35a 9238@kindex set extension-language
09d4efe1
EZ
9239Tell @value{GDBN} that source files with extension @var{ext} are to be
9240assumed as written in the source language @var{language}.
c906108c
SS
9241
9242@item info extensions
9c16f35a 9243@kindex info extensions
c906108c
SS
9244List all the filename extensions and the associated languages.
9245@end table
9246
6d2ebf8b 9247@node Checks
79a6e687 9248@section Type and Range Checking
c906108c
SS
9249
9250@quotation
9251@emph{Warning:} In this release, the @value{GDBN} commands for type and range
9252checking are included, but they do not yet have any effect. This
9253section documents the intended facilities.
9254@end quotation
9255@c FIXME remove warning when type/range code added
9256
9257Some languages are designed to guard you against making seemingly common
9258errors through a series of compile- and run-time checks. These include
9259checking the type of arguments to functions and operators, and making
9260sure mathematical overflows are caught at run time. Checks such as
9261these help to ensure a program's correctness once it has been compiled
9262by eliminating type mismatches, and providing active checks for range
9263errors when your program is running.
9264
9265@value{GDBN} can check for conditions like the above if you wish.
9c16f35a
EZ
9266Although @value{GDBN} does not check the statements in your program,
9267it can check expressions entered directly into @value{GDBN} for
9268evaluation via the @code{print} command, for example. As with the
9269working language, @value{GDBN} can also decide whether or not to check
9270automatically based on your program's source language.
79a6e687 9271@xref{Supported Languages, ,Supported Languages}, for the default
9c16f35a 9272settings of supported languages.
c906108c
SS
9273
9274@menu
9275* Type Checking:: An overview of type checking
9276* Range Checking:: An overview of range checking
9277@end menu
9278
9279@cindex type checking
9280@cindex checks, type
6d2ebf8b 9281@node Type Checking
79a6e687 9282@subsection An Overview of Type Checking
c906108c
SS
9283
9284Some languages, such as Modula-2, are strongly typed, meaning that the
9285arguments to operators and functions have to be of the correct type,
9286otherwise an error occurs. These checks prevent type mismatch
9287errors from ever causing any run-time problems. For example,
9288
9289@smallexample
92901 + 2 @result{} 3
9291@exdent but
9292@error{} 1 + 2.3
9293@end smallexample
9294
9295The second example fails because the @code{CARDINAL} 1 is not
9296type-compatible with the @code{REAL} 2.3.
9297
5d161b24
DB
9298For the expressions you use in @value{GDBN} commands, you can tell the
9299@value{GDBN} type checker to skip checking;
9300to treat any mismatches as errors and abandon the expression;
9301or to only issue warnings when type mismatches occur,
c906108c
SS
9302but evaluate the expression anyway. When you choose the last of
9303these, @value{GDBN} evaluates expressions like the second example above, but
9304also issues a warning.
9305
5d161b24
DB
9306Even if you turn type checking off, there may be other reasons
9307related to type that prevent @value{GDBN} from evaluating an expression.
9308For instance, @value{GDBN} does not know how to add an @code{int} and
9309a @code{struct foo}. These particular type errors have nothing to do
9310with the language in use, and usually arise from expressions, such as
c906108c
SS
9311the one described above, which make little sense to evaluate anyway.
9312
9313Each language defines to what degree it is strict about type. For
9314instance, both Modula-2 and C require the arguments to arithmetical
9315operators to be numbers. In C, enumerated types and pointers can be
9316represented as numbers, so that they are valid arguments to mathematical
79a6e687 9317operators. @xref{Supported Languages, ,Supported Languages}, for further
c906108c
SS
9318details on specific languages.
9319
9320@value{GDBN} provides some additional commands for controlling the type checker:
9321
c906108c
SS
9322@kindex set check type
9323@kindex show check type
9324@table @code
9325@item set check type auto
9326Set type checking on or off based on the current working language.
79a6e687 9327@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
9328each language.
9329
9330@item set check type on
9331@itemx set check type off
9332Set type checking on or off, overriding the default setting for the
9333current working language. Issue a warning if the setting does not
9334match the language default. If any type mismatches occur in
d4f3574e 9335evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
9336message and aborts evaluation of the expression.
9337
9338@item set check type warn
9339Cause the type checker to issue warnings, but to always attempt to
9340evaluate the expression. Evaluating the expression may still
9341be impossible for other reasons. For example, @value{GDBN} cannot add
9342numbers and structures.
9343
9344@item show type
5d161b24 9345Show the current setting of the type checker, and whether or not @value{GDBN}
c906108c
SS
9346is setting it automatically.
9347@end table
9348
9349@cindex range checking
9350@cindex checks, range
6d2ebf8b 9351@node Range Checking
79a6e687 9352@subsection An Overview of Range Checking
c906108c
SS
9353
9354In some languages (such as Modula-2), it is an error to exceed the
9355bounds of a type; this is enforced with run-time checks. Such range
9356checking is meant to ensure program correctness by making sure
9357computations do not overflow, or indices on an array element access do
9358not exceed the bounds of the array.
9359
9360For expressions you use in @value{GDBN} commands, you can tell
9361@value{GDBN} to treat range errors in one of three ways: ignore them,
9362always treat them as errors and abandon the expression, or issue
9363warnings but evaluate the expression anyway.
9364
9365A range error can result from numerical overflow, from exceeding an
9366array index bound, or when you type a constant that is not a member
9367of any type. Some languages, however, do not treat overflows as an
9368error. In many implementations of C, mathematical overflow causes the
9369result to ``wrap around'' to lower values---for example, if @var{m} is
9370the largest integer value, and @var{s} is the smallest, then
9371
474c8240 9372@smallexample
c906108c 9373@var{m} + 1 @result{} @var{s}
474c8240 9374@end smallexample
c906108c
SS
9375
9376This, too, is specific to individual languages, and in some cases
79a6e687
BW
9377specific to individual compilers or machines. @xref{Supported Languages, ,
9378Supported Languages}, for further details on specific languages.
c906108c
SS
9379
9380@value{GDBN} provides some additional commands for controlling the range checker:
9381
c906108c
SS
9382@kindex set check range
9383@kindex show check range
9384@table @code
9385@item set check range auto
9386Set range checking on or off based on the current working language.
79a6e687 9387@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
9388each language.
9389
9390@item set check range on
9391@itemx set check range off
9392Set range checking on or off, overriding the default setting for the
9393current working language. A warning is issued if the setting does not
c3f6f71d
JM
9394match the language default. If a range error occurs and range checking is on,
9395then a message is printed and evaluation of the expression is aborted.
c906108c
SS
9396
9397@item set check range warn
9398Output messages when the @value{GDBN} range checker detects a range error,
9399but attempt to evaluate the expression anyway. Evaluating the
9400expression may still be impossible for other reasons, such as accessing
9401memory that the process does not own (a typical example from many Unix
9402systems).
9403
9404@item show range
9405Show the current setting of the range checker, and whether or not it is
9406being set automatically by @value{GDBN}.
9407@end table
c906108c 9408
79a6e687
BW
9409@node Supported Languages
9410@section Supported Languages
c906108c 9411
9c16f35a
EZ
9412@value{GDBN} supports C, C@t{++}, Objective-C, Fortran, Java, Pascal,
9413assembly, Modula-2, and Ada.
cce74817 9414@c This is false ...
c906108c
SS
9415Some @value{GDBN} features may be used in expressions regardless of the
9416language you use: the @value{GDBN} @code{@@} and @code{::} operators,
9417and the @samp{@{type@}addr} construct (@pxref{Expressions,
9418,Expressions}) can be used with the constructs of any supported
9419language.
9420
9421The following sections detail to what degree each source language is
9422supported by @value{GDBN}. These sections are not meant to be language
9423tutorials or references, but serve only as a reference guide to what the
9424@value{GDBN} expression parser accepts, and what input and output
9425formats should look like for different languages. There are many good
9426books written on each of these languages; please look to these for a
9427language reference or tutorial.
9428
c906108c 9429@menu
b37303ee 9430* C:: C and C@t{++}
b383017d 9431* Objective-C:: Objective-C
09d4efe1 9432* Fortran:: Fortran
9c16f35a 9433* Pascal:: Pascal
b37303ee 9434* Modula-2:: Modula-2
e07c999f 9435* Ada:: Ada
c906108c
SS
9436@end menu
9437
6d2ebf8b 9438@node C
b37052ae 9439@subsection C and C@t{++}
7a292a7a 9440
b37052ae
EZ
9441@cindex C and C@t{++}
9442@cindex expressions in C or C@t{++}
c906108c 9443
b37052ae 9444Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
9445to both languages. Whenever this is the case, we discuss those languages
9446together.
9447
41afff9a
EZ
9448@cindex C@t{++}
9449@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
9450@cindex @sc{gnu} C@t{++}
9451The C@t{++} debugging facilities are jointly implemented by the C@t{++}
9452compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
9453effectively, you must compile your C@t{++} programs with a supported
9454C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
9455compiler (@code{aCC}).
9456
0179ffac
DC
9457For best results when using @sc{gnu} C@t{++}, use the DWARF 2 debugging
9458format; if it doesn't work on your system, try the stabs+ debugging
9459format. You can select those formats explicitly with the @code{g++}
9460command-line options @option{-gdwarf-2} and @option{-gstabs+}.
ce9341a1
BW
9461@xref{Debugging Options,,Options for Debugging Your Program or GCC,
9462gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}.
c906108c 9463
c906108c 9464@menu
b37052ae
EZ
9465* C Operators:: C and C@t{++} operators
9466* C Constants:: C and C@t{++} constants
79a6e687 9467* C Plus Plus Expressions:: C@t{++} expressions
b37052ae
EZ
9468* C Defaults:: Default settings for C and C@t{++}
9469* C Checks:: C and C@t{++} type and range checks
c906108c 9470* Debugging C:: @value{GDBN} and C
79a6e687 9471* Debugging C Plus Plus:: @value{GDBN} features for C@t{++}
febe4383 9472* Decimal Floating Point:: Numbers in Decimal Floating Point format
c906108c 9473@end menu
c906108c 9474
6d2ebf8b 9475@node C Operators
79a6e687 9476@subsubsection C and C@t{++} Operators
7a292a7a 9477
b37052ae 9478@cindex C and C@t{++} operators
c906108c
SS
9479
9480Operators must be defined on values of specific types. For instance,
9481@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 9482often defined on groups of types.
c906108c 9483
b37052ae 9484For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
9485
9486@itemize @bullet
53a5351d 9487
c906108c 9488@item
c906108c 9489@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 9490specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
9491
9492@item
d4f3574e
SS
9493@emph{Floating-point types} include @code{float}, @code{double}, and
9494@code{long double} (if supported by the target platform).
c906108c
SS
9495
9496@item
53a5351d 9497@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
9498
9499@item
9500@emph{Scalar types} include all of the above.
53a5351d 9501
c906108c
SS
9502@end itemize
9503
9504@noindent
9505The following operators are supported. They are listed here
9506in order of increasing precedence:
9507
9508@table @code
9509@item ,
9510The comma or sequencing operator. Expressions in a comma-separated list
9511are evaluated from left to right, with the result of the entire
9512expression being the last expression evaluated.
9513
9514@item =
9515Assignment. The value of an assignment expression is the value
9516assigned. Defined on scalar types.
9517
9518@item @var{op}=
9519Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
9520and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 9521@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
9522@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
9523@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
9524
9525@item ?:
9526The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
9527of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
9528integral type.
9529
9530@item ||
9531Logical @sc{or}. Defined on integral types.
9532
9533@item &&
9534Logical @sc{and}. Defined on integral types.
9535
9536@item |
9537Bitwise @sc{or}. Defined on integral types.
9538
9539@item ^
9540Bitwise exclusive-@sc{or}. Defined on integral types.
9541
9542@item &
9543Bitwise @sc{and}. Defined on integral types.
9544
9545@item ==@r{, }!=
9546Equality and inequality. Defined on scalar types. The value of these
9547expressions is 0 for false and non-zero for true.
9548
9549@item <@r{, }>@r{, }<=@r{, }>=
9550Less than, greater than, less than or equal, greater than or equal.
9551Defined on scalar types. The value of these expressions is 0 for false
9552and non-zero for true.
9553
9554@item <<@r{, }>>
9555left shift, and right shift. Defined on integral types.
9556
9557@item @@
9558The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
9559
9560@item +@r{, }-
9561Addition and subtraction. Defined on integral types, floating-point types and
9562pointer types.
9563
9564@item *@r{, }/@r{, }%
9565Multiplication, division, and modulus. Multiplication and division are
9566defined on integral and floating-point types. Modulus is defined on
9567integral types.
9568
9569@item ++@r{, }--
9570Increment and decrement. When appearing before a variable, the
9571operation is performed before the variable is used in an expression;
9572when appearing after it, the variable's value is used before the
9573operation takes place.
9574
9575@item *
9576Pointer dereferencing. Defined on pointer types. Same precedence as
9577@code{++}.
9578
9579@item &
9580Address operator. Defined on variables. Same precedence as @code{++}.
9581
b37052ae
EZ
9582For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
9583allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
b17828ca 9584to examine the address
b37052ae 9585where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 9586stored.
c906108c
SS
9587
9588@item -
9589Negative. Defined on integral and floating-point types. Same
9590precedence as @code{++}.
9591
9592@item !
9593Logical negation. Defined on integral types. Same precedence as
9594@code{++}.
9595
9596@item ~
9597Bitwise complement operator. Defined on integral types. Same precedence as
9598@code{++}.
9599
9600
9601@item .@r{, }->
9602Structure member, and pointer-to-structure member. For convenience,
9603@value{GDBN} regards the two as equivalent, choosing whether to dereference a
9604pointer based on the stored type information.
9605Defined on @code{struct} and @code{union} data.
9606
c906108c
SS
9607@item .*@r{, }->*
9608Dereferences of pointers to members.
c906108c
SS
9609
9610@item []
9611Array indexing. @code{@var{a}[@var{i}]} is defined as
9612@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
9613
9614@item ()
9615Function parameter list. Same precedence as @code{->}.
9616
c906108c 9617@item ::
b37052ae 9618C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 9619and @code{class} types.
c906108c
SS
9620
9621@item ::
7a292a7a
SS
9622Doubled colons also represent the @value{GDBN} scope operator
9623(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
9624above.
c906108c
SS
9625@end table
9626
c906108c
SS
9627If an operator is redefined in the user code, @value{GDBN} usually
9628attempts to invoke the redefined version instead of using the operator's
9629predefined meaning.
c906108c 9630
6d2ebf8b 9631@node C Constants
79a6e687 9632@subsubsection C and C@t{++} Constants
c906108c 9633
b37052ae 9634@cindex C and C@t{++} constants
c906108c 9635
b37052ae 9636@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 9637following ways:
c906108c
SS
9638
9639@itemize @bullet
9640@item
9641Integer constants are a sequence of digits. Octal constants are
6ca652b0
EZ
9642specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
9643by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
c906108c
SS
9644@samp{l}, specifying that the constant should be treated as a
9645@code{long} value.
9646
9647@item
9648Floating point constants are a sequence of digits, followed by a decimal
9649point, followed by a sequence of digits, and optionally followed by an
9650exponent. An exponent is of the form:
9651@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
9652sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
9653A floating-point constant may also end with a letter @samp{f} or
9654@samp{F}, specifying that the constant should be treated as being of
9655the @code{float} (as opposed to the default @code{double}) type; or with
9656a letter @samp{l} or @samp{L}, which specifies a @code{long double}
9657constant.
c906108c
SS
9658
9659@item
9660Enumerated constants consist of enumerated identifiers, or their
9661integral equivalents.
9662
9663@item
9664Character constants are a single character surrounded by single quotes
9665(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 9666(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
9667be represented by a letter or by @dfn{escape sequences}, which are of
9668the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
9669of the character's ordinal value; or of the form @samp{\@var{x}}, where
9670@samp{@var{x}} is a predefined special character---for example,
9671@samp{\n} for newline.
9672
9673@item
96a2c332
SS
9674String constants are a sequence of character constants surrounded by
9675double quotes (@code{"}). Any valid character constant (as described
9676above) may appear. Double quotes within the string must be preceded by
9677a backslash, so for instance @samp{"a\"b'c"} is a string of five
9678characters.
c906108c
SS
9679
9680@item
9681Pointer constants are an integral value. You can also write pointers
9682to constants using the C operator @samp{&}.
9683
9684@item
9685Array constants are comma-separated lists surrounded by braces @samp{@{}
9686and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
9687integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
9688and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
9689@end itemize
9690
79a6e687
BW
9691@node C Plus Plus Expressions
9692@subsubsection C@t{++} Expressions
b37052ae
EZ
9693
9694@cindex expressions in C@t{++}
9695@value{GDBN} expression handling can interpret most C@t{++} expressions.
9696
0179ffac
DC
9697@cindex debugging C@t{++} programs
9698@cindex C@t{++} compilers
9699@cindex debug formats and C@t{++}
9700@cindex @value{NGCC} and C@t{++}
c906108c 9701@quotation
b37052ae 9702@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use the
0179ffac
DC
9703proper compiler and the proper debug format. Currently, @value{GDBN}
9704works best when debugging C@t{++} code that is compiled with
9705@value{NGCC} 2.95.3 or with @value{NGCC} 3.1 or newer, using the options
9706@option{-gdwarf-2} or @option{-gstabs+}. DWARF 2 is preferred over
9707stabs+. Most configurations of @value{NGCC} emit either DWARF 2 or
9708stabs+ as their default debug format, so you usually don't need to
9709specify a debug format explicitly. Other compilers and/or debug formats
9710are likely to work badly or not at all when using @value{GDBN} to debug
9711C@t{++} code.
c906108c 9712@end quotation
c906108c
SS
9713
9714@enumerate
9715
9716@cindex member functions
9717@item
9718Member function calls are allowed; you can use expressions like
9719
474c8240 9720@smallexample
c906108c 9721count = aml->GetOriginal(x, y)
474c8240 9722@end smallexample
c906108c 9723
41afff9a 9724@vindex this@r{, inside C@t{++} member functions}
b37052ae 9725@cindex namespace in C@t{++}
c906108c
SS
9726@item
9727While a member function is active (in the selected stack frame), your
9728expressions have the same namespace available as the member function;
9729that is, @value{GDBN} allows implicit references to the class instance
b37052ae 9730pointer @code{this} following the same rules as C@t{++}.
c906108c 9731
c906108c 9732@cindex call overloaded functions
d4f3574e 9733@cindex overloaded functions, calling
b37052ae 9734@cindex type conversions in C@t{++}
c906108c
SS
9735@item
9736You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 9737call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
9738perform overload resolution involving user-defined type conversions,
9739calls to constructors, or instantiations of templates that do not exist
9740in the program. It also cannot handle ellipsis argument lists or
9741default arguments.
9742
9743It does perform integral conversions and promotions, floating-point
9744promotions, arithmetic conversions, pointer conversions, conversions of
9745class objects to base classes, and standard conversions such as those of
9746functions or arrays to pointers; it requires an exact match on the
9747number of function arguments.
9748
9749Overload resolution is always performed, unless you have specified
79a6e687
BW
9750@code{set overload-resolution off}. @xref{Debugging C Plus Plus,
9751,@value{GDBN} Features for C@t{++}}.
c906108c 9752
d4f3574e 9753You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
9754explicit function signature to call an overloaded function, as in
9755@smallexample
9756p 'foo(char,int)'('x', 13)
9757@end smallexample
d4f3574e 9758
c906108c 9759The @value{GDBN} command-completion facility can simplify this;
79a6e687 9760see @ref{Completion, ,Command Completion}.
c906108c 9761
c906108c
SS
9762@cindex reference declarations
9763@item
b37052ae
EZ
9764@value{GDBN} understands variables declared as C@t{++} references; you can use
9765them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
9766dereferenced.
9767
9768In the parameter list shown when @value{GDBN} displays a frame, the values of
9769reference variables are not displayed (unlike other variables); this
9770avoids clutter, since references are often used for large structures.
9771The @emph{address} of a reference variable is always shown, unless
9772you have specified @samp{set print address off}.
9773
9774@item
b37052ae 9775@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
9776expressions can use it just as expressions in your program do. Since
9777one scope may be defined in another, you can use @code{::} repeatedly if
9778necessary, for example in an expression like
9779@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 9780resolving name scope by reference to source files, in both C and C@t{++}
79a6e687 9781debugging (@pxref{Variables, ,Program Variables}).
c906108c
SS
9782@end enumerate
9783
b37052ae 9784In addition, when used with HP's C@t{++} compiler, @value{GDBN} supports
53a5351d
JM
9785calling virtual functions correctly, printing out virtual bases of
9786objects, calling functions in a base subobject, casting objects, and
9787invoking user-defined operators.
c906108c 9788
6d2ebf8b 9789@node C Defaults
79a6e687 9790@subsubsection C and C@t{++} Defaults
7a292a7a 9791
b37052ae 9792@cindex C and C@t{++} defaults
c906108c 9793
c906108c
SS
9794If you allow @value{GDBN} to set type and range checking automatically, they
9795both default to @code{off} whenever the working language changes to
b37052ae 9796C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 9797selects the working language.
c906108c
SS
9798
9799If you allow @value{GDBN} to set the language automatically, it
9800recognizes source files whose names end with @file{.c}, @file{.C}, or
9801@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
b37052ae 9802these files, it sets the working language to C or C@t{++}.
79a6e687 9803@xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
c906108c
SS
9804for further details.
9805
c906108c
SS
9806@c Type checking is (a) primarily motivated by Modula-2, and (b)
9807@c unimplemented. If (b) changes, it might make sense to let this node
9808@c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7a292a7a 9809
6d2ebf8b 9810@node C Checks
79a6e687 9811@subsubsection C and C@t{++} Type and Range Checks
7a292a7a 9812
b37052ae 9813@cindex C and C@t{++} checks
c906108c 9814
b37052ae 9815By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
c906108c
SS
9816is not used. However, if you turn type checking on, @value{GDBN}
9817considers two variables type equivalent if:
9818
9819@itemize @bullet
9820@item
9821The two variables are structured and have the same structure, union, or
9822enumerated tag.
9823
9824@item
9825The two variables have the same type name, or types that have been
9826declared equivalent through @code{typedef}.
9827
9828@ignore
9829@c leaving this out because neither J Gilmore nor R Pesch understand it.
9830@c FIXME--beers?
9831@item
9832The two @code{struct}, @code{union}, or @code{enum} variables are
9833declared in the same declaration. (Note: this may not be true for all C
9834compilers.)
9835@end ignore
9836@end itemize
9837
9838Range checking, if turned on, is done on mathematical operations. Array
9839indices are not checked, since they are often used to index a pointer
9840that is not itself an array.
c906108c 9841
6d2ebf8b 9842@node Debugging C
c906108c 9843@subsubsection @value{GDBN} and C
c906108c
SS
9844
9845The @code{set print union} and @code{show print union} commands apply to
9846the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
9847inside a @code{struct} or @code{class} is also printed. Otherwise, it
9848appears as @samp{@{...@}}.
c906108c
SS
9849
9850The @code{@@} operator aids in the debugging of dynamic arrays, formed
9851with pointers and a memory allocation function. @xref{Expressions,
9852,Expressions}.
9853
79a6e687
BW
9854@node Debugging C Plus Plus
9855@subsubsection @value{GDBN} Features for C@t{++}
c906108c 9856
b37052ae 9857@cindex commands for C@t{++}
7a292a7a 9858
b37052ae
EZ
9859Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
9860designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
9861
9862@table @code
9863@cindex break in overloaded functions
9864@item @r{breakpoint menus}
9865When you want a breakpoint in a function whose name is overloaded,
6ba66d6a
JB
9866@value{GDBN} has the capability to display a menu of possible breakpoint
9867locations to help you specify which function definition you want.
9868@xref{Ambiguous Expressions,,Ambiguous Expressions}.
c906108c 9869
b37052ae 9870@cindex overloading in C@t{++}
c906108c
SS
9871@item rbreak @var{regex}
9872Setting breakpoints using regular expressions is helpful for setting
9873breakpoints on overloaded functions that are not members of any special
9874classes.
79a6e687 9875@xref{Set Breaks, ,Setting Breakpoints}.
c906108c 9876
b37052ae 9877@cindex C@t{++} exception handling
c906108c
SS
9878@item catch throw
9879@itemx catch catch
b37052ae 9880Debug C@t{++} exception handling using these commands. @xref{Set
79a6e687 9881Catchpoints, , Setting Catchpoints}.
c906108c
SS
9882
9883@cindex inheritance
9884@item ptype @var{typename}
9885Print inheritance relationships as well as other information for type
9886@var{typename}.
9887@xref{Symbols, ,Examining the Symbol Table}.
9888
b37052ae 9889@cindex C@t{++} symbol display
c906108c
SS
9890@item set print demangle
9891@itemx show print demangle
9892@itemx set print asm-demangle
9893@itemx show print asm-demangle
b37052ae
EZ
9894Control whether C@t{++} symbols display in their source form, both when
9895displaying code as C@t{++} source and when displaying disassemblies.
79a6e687 9896@xref{Print Settings, ,Print Settings}.
c906108c
SS
9897
9898@item set print object
9899@itemx show print object
9900Choose whether to print derived (actual) or declared types of objects.
79a6e687 9901@xref{Print Settings, ,Print Settings}.
c906108c
SS
9902
9903@item set print vtbl
9904@itemx show print vtbl
9905Control the format for printing virtual function tables.
79a6e687 9906@xref{Print Settings, ,Print Settings}.
c906108c 9907(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 9908ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
9909
9910@kindex set overload-resolution
d4f3574e 9911@cindex overloaded functions, overload resolution
c906108c 9912@item set overload-resolution on
b37052ae 9913Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
9914is on. For overloaded functions, @value{GDBN} evaluates the arguments
9915and searches for a function whose signature matches the argument types,
79a6e687
BW
9916using the standard C@t{++} conversion rules (see @ref{C Plus Plus
9917Expressions, ,C@t{++} Expressions}, for details).
9918If it cannot find a match, it emits a message.
c906108c
SS
9919
9920@item set overload-resolution off
b37052ae 9921Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
9922overloaded functions that are not class member functions, @value{GDBN}
9923chooses the first function of the specified name that it finds in the
9924symbol table, whether or not its arguments are of the correct type. For
9925overloaded functions that are class member functions, @value{GDBN}
9926searches for a function whose signature @emph{exactly} matches the
9927argument types.
c906108c 9928
9c16f35a
EZ
9929@kindex show overload-resolution
9930@item show overload-resolution
9931Show the current setting of overload resolution.
9932
c906108c
SS
9933@item @r{Overloaded symbol names}
9934You can specify a particular definition of an overloaded symbol, using
b37052ae 9935the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
9936@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
9937also use the @value{GDBN} command-line word completion facilities to list the
9938available choices, or to finish the type list for you.
79a6e687 9939@xref{Completion,, Command Completion}, for details on how to do this.
c906108c 9940@end table
c906108c 9941
febe4383
TJB
9942@node Decimal Floating Point
9943@subsubsection Decimal Floating Point format
9944@cindex decimal floating point format
9945
9946@value{GDBN} can examine, set and perform computations with numbers in
9947decimal floating point format, which in the C language correspond to the
9948@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as
9949specified by the extension to support decimal floating-point arithmetic.
9950
9951There are two encodings in use, depending on the architecture: BID (Binary
9952Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for
9953PowerPC. @value{GDBN} will use the appropriate encoding for the configured
9954target.
9955
9956Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN}
9957to manipulate decimal floating point numbers, it is not possible to convert
9958(using a cast, for example) integers wider than 32-bit to decimal float.
9959
9960In addition, in order to imitate @value{GDBN}'s behaviour with binary floating
9961point computations, error checking in decimal float operations ignores
9962underflow, overflow and divide by zero exceptions.
9963
4acd40f3
TJB
9964In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers
9965to inspect @code{_Decimal128} values stored in floating point registers. See
9966@ref{PowerPC,,PowerPC} for more details.
9967
b37303ee
AF
9968@node Objective-C
9969@subsection Objective-C
9970
9971@cindex Objective-C
9972This section provides information about some commands and command
721c2651
EZ
9973options that are useful for debugging Objective-C code. See also
9974@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a
9975few more commands specific to Objective-C support.
b37303ee
AF
9976
9977@menu
b383017d
RM
9978* Method Names in Commands::
9979* The Print Command with Objective-C::
b37303ee
AF
9980@end menu
9981
c8f4133a 9982@node Method Names in Commands
b37303ee
AF
9983@subsubsection Method Names in Commands
9984
9985The following commands have been extended to accept Objective-C method
9986names as line specifications:
9987
9988@kindex clear@r{, and Objective-C}
9989@kindex break@r{, and Objective-C}
9990@kindex info line@r{, and Objective-C}
9991@kindex jump@r{, and Objective-C}
9992@kindex list@r{, and Objective-C}
9993@itemize
9994@item @code{clear}
9995@item @code{break}
9996@item @code{info line}
9997@item @code{jump}
9998@item @code{list}
9999@end itemize
10000
10001A fully qualified Objective-C method name is specified as
10002
10003@smallexample
10004-[@var{Class} @var{methodName}]
10005@end smallexample
10006
c552b3bb
JM
10007where the minus sign is used to indicate an instance method and a
10008plus sign (not shown) is used to indicate a class method. The class
10009name @var{Class} and method name @var{methodName} are enclosed in
10010brackets, similar to the way messages are specified in Objective-C
10011source code. For example, to set a breakpoint at the @code{create}
10012instance method of class @code{Fruit} in the program currently being
10013debugged, enter:
b37303ee
AF
10014
10015@smallexample
10016break -[Fruit create]
10017@end smallexample
10018
10019To list ten program lines around the @code{initialize} class method,
10020enter:
10021
10022@smallexample
10023list +[NSText initialize]
10024@end smallexample
10025
c552b3bb
JM
10026In the current version of @value{GDBN}, the plus or minus sign is
10027required. In future versions of @value{GDBN}, the plus or minus
10028sign will be optional, but you can use it to narrow the search. It
10029is also possible to specify just a method name:
b37303ee
AF
10030
10031@smallexample
10032break create
10033@end smallexample
10034
10035You must specify the complete method name, including any colons. If
10036your program's source files contain more than one @code{create} method,
10037you'll be presented with a numbered list of classes that implement that
10038method. Indicate your choice by number, or type @samp{0} to exit if
10039none apply.
10040
10041As another example, to clear a breakpoint established at the
10042@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
10043
10044@smallexample
10045clear -[NSWindow makeKeyAndOrderFront:]
10046@end smallexample
10047
10048@node The Print Command with Objective-C
10049@subsubsection The Print Command With Objective-C
721c2651 10050@cindex Objective-C, print objects
c552b3bb
JM
10051@kindex print-object
10052@kindex po @r{(@code{print-object})}
b37303ee 10053
c552b3bb 10054The print command has also been extended to accept methods. For example:
b37303ee
AF
10055
10056@smallexample
c552b3bb 10057print -[@var{object} hash]
b37303ee
AF
10058@end smallexample
10059
10060@cindex print an Objective-C object description
c552b3bb
JM
10061@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
10062@noindent
10063will tell @value{GDBN} to send the @code{hash} message to @var{object}
10064and print the result. Also, an additional command has been added,
10065@code{print-object} or @code{po} for short, which is meant to print
10066the description of an object. However, this command may only work
10067with certain Objective-C libraries that have a particular hook
10068function, @code{_NSPrintForDebugger}, defined.
b37303ee 10069
09d4efe1
EZ
10070@node Fortran
10071@subsection Fortran
10072@cindex Fortran-specific support in @value{GDBN}
10073
814e32d7
WZ
10074@value{GDBN} can be used to debug programs written in Fortran, but it
10075currently supports only the features of Fortran 77 language.
10076
10077@cindex trailing underscore, in Fortran symbols
10078Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
10079among them) append an underscore to the names of variables and
10080functions. When you debug programs compiled by those compilers, you
10081will need to refer to variables and functions with a trailing
10082underscore.
10083
10084@menu
10085* Fortran Operators:: Fortran operators and expressions
10086* Fortran Defaults:: Default settings for Fortran
79a6e687 10087* Special Fortran Commands:: Special @value{GDBN} commands for Fortran
814e32d7
WZ
10088@end menu
10089
10090@node Fortran Operators
79a6e687 10091@subsubsection Fortran Operators and Expressions
814e32d7
WZ
10092
10093@cindex Fortran operators and expressions
10094
10095Operators must be defined on values of specific types. For instance,
10096@code{+} is defined on numbers, but not on characters or other non-
ff2587ec 10097arithmetic types. Operators are often defined on groups of types.
814e32d7
WZ
10098
10099@table @code
10100@item **
10101The exponentiation operator. It raises the first operand to the power
10102of the second one.
10103
10104@item :
10105The range operator. Normally used in the form of array(low:high) to
10106represent a section of array.
68837c9d
MD
10107
10108@item %
10109The access component operator. Normally used to access elements in derived
10110types. Also suitable for unions. As unions aren't part of regular Fortran,
10111this can only happen when accessing a register that uses a gdbarch-defined
10112union type.
814e32d7
WZ
10113@end table
10114
10115@node Fortran Defaults
10116@subsubsection Fortran Defaults
10117
10118@cindex Fortran Defaults
10119
10120Fortran symbols are usually case-insensitive, so @value{GDBN} by
10121default uses case-insensitive matches for Fortran symbols. You can
10122change that with the @samp{set case-insensitive} command, see
10123@ref{Symbols}, for the details.
10124
79a6e687
BW
10125@node Special Fortran Commands
10126@subsubsection Special Fortran Commands
814e32d7
WZ
10127
10128@cindex Special Fortran commands
10129
db2e3e2e
BW
10130@value{GDBN} has some commands to support Fortran-specific features,
10131such as displaying common blocks.
814e32d7 10132
09d4efe1
EZ
10133@table @code
10134@cindex @code{COMMON} blocks, Fortran
10135@kindex info common
10136@item info common @r{[}@var{common-name}@r{]}
10137This command prints the values contained in the Fortran @code{COMMON}
10138block whose name is @var{common-name}. With no argument, the names of
d52fb0e9 10139all @code{COMMON} blocks visible at the current program location are
09d4efe1
EZ
10140printed.
10141@end table
10142
9c16f35a
EZ
10143@node Pascal
10144@subsection Pascal
10145
10146@cindex Pascal support in @value{GDBN}, limitations
10147Debugging Pascal programs which use sets, subranges, file variables, or
10148nested functions does not currently work. @value{GDBN} does not support
10149entering expressions, printing values, or similar features using Pascal
10150syntax.
10151
10152The Pascal-specific command @code{set print pascal_static-members}
10153controls whether static members of Pascal objects are displayed.
10154@xref{Print Settings, pascal_static-members}.
10155
09d4efe1 10156@node Modula-2
c906108c 10157@subsection Modula-2
7a292a7a 10158
d4f3574e 10159@cindex Modula-2, @value{GDBN} support
c906108c
SS
10160
10161The extensions made to @value{GDBN} to support Modula-2 only support
10162output from the @sc{gnu} Modula-2 compiler (which is currently being
10163developed). Other Modula-2 compilers are not currently supported, and
10164attempting to debug executables produced by them is most likely
10165to give an error as @value{GDBN} reads in the executable's symbol
10166table.
10167
10168@cindex expressions in Modula-2
10169@menu
10170* M2 Operators:: Built-in operators
10171* Built-In Func/Proc:: Built-in functions and procedures
10172* M2 Constants:: Modula-2 constants
72019c9c 10173* M2 Types:: Modula-2 types
c906108c
SS
10174* M2 Defaults:: Default settings for Modula-2
10175* Deviations:: Deviations from standard Modula-2
10176* M2 Checks:: Modula-2 type and range checks
10177* M2 Scope:: The scope operators @code{::} and @code{.}
10178* GDB/M2:: @value{GDBN} and Modula-2
10179@end menu
10180
6d2ebf8b 10181@node M2 Operators
c906108c
SS
10182@subsubsection Operators
10183@cindex Modula-2 operators
10184
10185Operators must be defined on values of specific types. For instance,
10186@code{+} is defined on numbers, but not on structures. Operators are
10187often defined on groups of types. For the purposes of Modula-2, the
10188following definitions hold:
10189
10190@itemize @bullet
10191
10192@item
10193@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
10194their subranges.
10195
10196@item
10197@emph{Character types} consist of @code{CHAR} and its subranges.
10198
10199@item
10200@emph{Floating-point types} consist of @code{REAL}.
10201
10202@item
10203@emph{Pointer types} consist of anything declared as @code{POINTER TO
10204@var{type}}.
10205
10206@item
10207@emph{Scalar types} consist of all of the above.
10208
10209@item
10210@emph{Set types} consist of @code{SET} and @code{BITSET} types.
10211
10212@item
10213@emph{Boolean types} consist of @code{BOOLEAN}.
10214@end itemize
10215
10216@noindent
10217The following operators are supported, and appear in order of
10218increasing precedence:
10219
10220@table @code
10221@item ,
10222Function argument or array index separator.
10223
10224@item :=
10225Assignment. The value of @var{var} @code{:=} @var{value} is
10226@var{value}.
10227
10228@item <@r{, }>
10229Less than, greater than on integral, floating-point, or enumerated
10230types.
10231
10232@item <=@r{, }>=
96a2c332 10233Less than or equal to, greater than or equal to
c906108c
SS
10234on integral, floating-point and enumerated types, or set inclusion on
10235set types. Same precedence as @code{<}.
10236
10237@item =@r{, }<>@r{, }#
10238Equality and two ways of expressing inequality, valid on scalar types.
10239Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
10240available for inequality, since @code{#} conflicts with the script
10241comment character.
10242
10243@item IN
10244Set membership. Defined on set types and the types of their members.
10245Same precedence as @code{<}.
10246
10247@item OR
10248Boolean disjunction. Defined on boolean types.
10249
10250@item AND@r{, }&
d4f3574e 10251Boolean conjunction. Defined on boolean types.
c906108c
SS
10252
10253@item @@
10254The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
10255
10256@item +@r{, }-
10257Addition and subtraction on integral and floating-point types, or union
10258and difference on set types.
10259
10260@item *
10261Multiplication on integral and floating-point types, or set intersection
10262on set types.
10263
10264@item /
10265Division on floating-point types, or symmetric set difference on set
10266types. Same precedence as @code{*}.
10267
10268@item DIV@r{, }MOD
10269Integer division and remainder. Defined on integral types. Same
10270precedence as @code{*}.
10271
10272@item -
10273Negative. Defined on @code{INTEGER} and @code{REAL} data.
10274
10275@item ^
10276Pointer dereferencing. Defined on pointer types.
10277
10278@item NOT
10279Boolean negation. Defined on boolean types. Same precedence as
10280@code{^}.
10281
10282@item .
10283@code{RECORD} field selector. Defined on @code{RECORD} data. Same
10284precedence as @code{^}.
10285
10286@item []
10287Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
10288
10289@item ()
10290Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
10291as @code{^}.
10292
10293@item ::@r{, }.
10294@value{GDBN} and Modula-2 scope operators.
10295@end table
10296
10297@quotation
72019c9c 10298@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN}
c906108c
SS
10299treats the use of the operator @code{IN}, or the use of operators
10300@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
10301@code{<=}, and @code{>=} on sets as an error.
10302@end quotation
10303
cb51c4e0 10304
6d2ebf8b 10305@node Built-In Func/Proc
79a6e687 10306@subsubsection Built-in Functions and Procedures
cb51c4e0 10307@cindex Modula-2 built-ins
c906108c
SS
10308
10309Modula-2 also makes available several built-in procedures and functions.
10310In describing these, the following metavariables are used:
10311
10312@table @var
10313
10314@item a
10315represents an @code{ARRAY} variable.
10316
10317@item c
10318represents a @code{CHAR} constant or variable.
10319
10320@item i
10321represents a variable or constant of integral type.
10322
10323@item m
10324represents an identifier that belongs to a set. Generally used in the
10325same function with the metavariable @var{s}. The type of @var{s} should
10326be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
10327
10328@item n
10329represents a variable or constant of integral or floating-point type.
10330
10331@item r
10332represents a variable or constant of floating-point type.
10333
10334@item t
10335represents a type.
10336
10337@item v
10338represents a variable.
10339
10340@item x
10341represents a variable or constant of one of many types. See the
10342explanation of the function for details.
10343@end table
10344
10345All Modula-2 built-in procedures also return a result, described below.
10346
10347@table @code
10348@item ABS(@var{n})
10349Returns the absolute value of @var{n}.
10350
10351@item CAP(@var{c})
10352If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 10353equivalent, otherwise it returns its argument.
c906108c
SS
10354
10355@item CHR(@var{i})
10356Returns the character whose ordinal value is @var{i}.
10357
10358@item DEC(@var{v})
c3f6f71d 10359Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
10360
10361@item DEC(@var{v},@var{i})
10362Decrements the value in the variable @var{v} by @var{i}. Returns the
10363new value.
10364
10365@item EXCL(@var{m},@var{s})
10366Removes the element @var{m} from the set @var{s}. Returns the new
10367set.
10368
10369@item FLOAT(@var{i})
10370Returns the floating point equivalent of the integer @var{i}.
10371
10372@item HIGH(@var{a})
10373Returns the index of the last member of @var{a}.
10374
10375@item INC(@var{v})
c3f6f71d 10376Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
10377
10378@item INC(@var{v},@var{i})
10379Increments the value in the variable @var{v} by @var{i}. Returns the
10380new value.
10381
10382@item INCL(@var{m},@var{s})
10383Adds the element @var{m} to the set @var{s} if it is not already
10384there. Returns the new set.
10385
10386@item MAX(@var{t})
10387Returns the maximum value of the type @var{t}.
10388
10389@item MIN(@var{t})
10390Returns the minimum value of the type @var{t}.
10391
10392@item ODD(@var{i})
10393Returns boolean TRUE if @var{i} is an odd number.
10394
10395@item ORD(@var{x})
10396Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
10397value of a character is its @sc{ascii} value (on machines supporting the
10398@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
10399integral, character and enumerated types.
10400
10401@item SIZE(@var{x})
10402Returns the size of its argument. @var{x} can be a variable or a type.
10403
10404@item TRUNC(@var{r})
10405Returns the integral part of @var{r}.
10406
844781a1
GM
10407@item TSIZE(@var{x})
10408Returns the size of its argument. @var{x} can be a variable or a type.
10409
c906108c
SS
10410@item VAL(@var{t},@var{i})
10411Returns the member of the type @var{t} whose ordinal value is @var{i}.
10412@end table
10413
10414@quotation
10415@emph{Warning:} Sets and their operations are not yet supported, so
10416@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
10417an error.
10418@end quotation
10419
10420@cindex Modula-2 constants
6d2ebf8b 10421@node M2 Constants
c906108c
SS
10422@subsubsection Constants
10423
10424@value{GDBN} allows you to express the constants of Modula-2 in the following
10425ways:
10426
10427@itemize @bullet
10428
10429@item
10430Integer constants are simply a sequence of digits. When used in an
10431expression, a constant is interpreted to be type-compatible with the
10432rest of the expression. Hexadecimal integers are specified by a
10433trailing @samp{H}, and octal integers by a trailing @samp{B}.
10434
10435@item
10436Floating point constants appear as a sequence of digits, followed by a
10437decimal point and another sequence of digits. An optional exponent can
10438then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
10439@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
10440digits of the floating point constant must be valid decimal (base 10)
10441digits.
10442
10443@item
10444Character constants consist of a single character enclosed by a pair of
10445like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 10446also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
10447followed by a @samp{C}.
10448
10449@item
10450String constants consist of a sequence of characters enclosed by a
10451pair of like quotes, either single (@code{'}) or double (@code{"}).
10452Escape sequences in the style of C are also allowed. @xref{C
79a6e687 10453Constants, ,C and C@t{++} Constants}, for a brief explanation of escape
c906108c
SS
10454sequences.
10455
10456@item
10457Enumerated constants consist of an enumerated identifier.
10458
10459@item
10460Boolean constants consist of the identifiers @code{TRUE} and
10461@code{FALSE}.
10462
10463@item
10464Pointer constants consist of integral values only.
10465
10466@item
10467Set constants are not yet supported.
10468@end itemize
10469
72019c9c
GM
10470@node M2 Types
10471@subsubsection Modula-2 Types
10472@cindex Modula-2 types
10473
10474Currently @value{GDBN} can print the following data types in Modula-2
10475syntax: array types, record types, set types, pointer types, procedure
10476types, enumerated types, subrange types and base types. You can also
10477print the contents of variables declared using these type.
10478This section gives a number of simple source code examples together with
10479sample @value{GDBN} sessions.
10480
10481The first example contains the following section of code:
10482
10483@smallexample
10484VAR
10485 s: SET OF CHAR ;
10486 r: [20..40] ;
10487@end smallexample
10488
10489@noindent
10490and you can request @value{GDBN} to interrogate the type and value of
10491@code{r} and @code{s}.
10492
10493@smallexample
10494(@value{GDBP}) print s
10495@{'A'..'C', 'Z'@}
10496(@value{GDBP}) ptype s
10497SET OF CHAR
10498(@value{GDBP}) print r
1049921
10500(@value{GDBP}) ptype r
10501[20..40]
10502@end smallexample
10503
10504@noindent
10505Likewise if your source code declares @code{s} as:
10506
10507@smallexample
10508VAR
10509 s: SET ['A'..'Z'] ;
10510@end smallexample
10511
10512@noindent
10513then you may query the type of @code{s} by:
10514
10515@smallexample
10516(@value{GDBP}) ptype s
10517type = SET ['A'..'Z']
10518@end smallexample
10519
10520@noindent
10521Note that at present you cannot interactively manipulate set
10522expressions using the debugger.
10523
10524The following example shows how you might declare an array in Modula-2
10525and how you can interact with @value{GDBN} to print its type and contents:
10526
10527@smallexample
10528VAR
10529 s: ARRAY [-10..10] OF CHAR ;
10530@end smallexample
10531
10532@smallexample
10533(@value{GDBP}) ptype s
10534ARRAY [-10..10] OF CHAR
10535@end smallexample
10536
10537Note that the array handling is not yet complete and although the type
10538is printed correctly, expression handling still assumes that all
10539arrays have a lower bound of zero and not @code{-10} as in the example
844781a1 10540above.
72019c9c
GM
10541
10542Here are some more type related Modula-2 examples:
10543
10544@smallexample
10545TYPE
10546 colour = (blue, red, yellow, green) ;
10547 t = [blue..yellow] ;
10548VAR
10549 s: t ;
10550BEGIN
10551 s := blue ;
10552@end smallexample
10553
10554@noindent
10555The @value{GDBN} interaction shows how you can query the data type
10556and value of a variable.
10557
10558@smallexample
10559(@value{GDBP}) print s
10560$1 = blue
10561(@value{GDBP}) ptype t
10562type = [blue..yellow]
10563@end smallexample
10564
10565@noindent
10566In this example a Modula-2 array is declared and its contents
10567displayed. Observe that the contents are written in the same way as
10568their @code{C} counterparts.
10569
10570@smallexample
10571VAR
10572 s: ARRAY [1..5] OF CARDINAL ;
10573BEGIN
10574 s[1] := 1 ;
10575@end smallexample
10576
10577@smallexample
10578(@value{GDBP}) print s
10579$1 = @{1, 0, 0, 0, 0@}
10580(@value{GDBP}) ptype s
10581type = ARRAY [1..5] OF CARDINAL
10582@end smallexample
10583
10584The Modula-2 language interface to @value{GDBN} also understands
10585pointer types as shown in this example:
10586
10587@smallexample
10588VAR
10589 s: POINTER TO ARRAY [1..5] OF CARDINAL ;
10590BEGIN
10591 NEW(s) ;
10592 s^[1] := 1 ;
10593@end smallexample
10594
10595@noindent
10596and you can request that @value{GDBN} describes the type of @code{s}.
10597
10598@smallexample
10599(@value{GDBP}) ptype s
10600type = POINTER TO ARRAY [1..5] OF CARDINAL
10601@end smallexample
10602
10603@value{GDBN} handles compound types as we can see in this example.
10604Here we combine array types, record types, pointer types and subrange
10605types:
10606
10607@smallexample
10608TYPE
10609 foo = RECORD
10610 f1: CARDINAL ;
10611 f2: CHAR ;
10612 f3: myarray ;
10613 END ;
10614
10615 myarray = ARRAY myrange OF CARDINAL ;
10616 myrange = [-2..2] ;
10617VAR
10618 s: POINTER TO ARRAY myrange OF foo ;
10619@end smallexample
10620
10621@noindent
10622and you can ask @value{GDBN} to describe the type of @code{s} as shown
10623below.
10624
10625@smallexample
10626(@value{GDBP}) ptype s
10627type = POINTER TO ARRAY [-2..2] OF foo = RECORD
10628 f1 : CARDINAL;
10629 f2 : CHAR;
10630 f3 : ARRAY [-2..2] OF CARDINAL;
10631END
10632@end smallexample
10633
6d2ebf8b 10634@node M2 Defaults
79a6e687 10635@subsubsection Modula-2 Defaults
c906108c
SS
10636@cindex Modula-2 defaults
10637
10638If type and range checking are set automatically by @value{GDBN}, they
10639both default to @code{on} whenever the working language changes to
d4f3574e 10640Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
10641selected the working language.
10642
10643If you allow @value{GDBN} to set the language automatically, then entering
10644code compiled from a file whose name ends with @file{.mod} sets the
79a6e687
BW
10645working language to Modula-2. @xref{Automatically, ,Having @value{GDBN}
10646Infer the Source Language}, for further details.
c906108c 10647
6d2ebf8b 10648@node Deviations
79a6e687 10649@subsubsection Deviations from Standard Modula-2
c906108c
SS
10650@cindex Modula-2, deviations from
10651
10652A few changes have been made to make Modula-2 programs easier to debug.
10653This is done primarily via loosening its type strictness:
10654
10655@itemize @bullet
10656@item
10657Unlike in standard Modula-2, pointer constants can be formed by
10658integers. This allows you to modify pointer variables during
10659debugging. (In standard Modula-2, the actual address contained in a
10660pointer variable is hidden from you; it can only be modified
10661through direct assignment to another pointer variable or expression that
10662returned a pointer.)
10663
10664@item
10665C escape sequences can be used in strings and characters to represent
10666non-printable characters. @value{GDBN} prints out strings with these
10667escape sequences embedded. Single non-printable characters are
10668printed using the @samp{CHR(@var{nnn})} format.
10669
10670@item
10671The assignment operator (@code{:=}) returns the value of its right-hand
10672argument.
10673
10674@item
10675All built-in procedures both modify @emph{and} return their argument.
10676@end itemize
10677
6d2ebf8b 10678@node M2 Checks
79a6e687 10679@subsubsection Modula-2 Type and Range Checks
c906108c
SS
10680@cindex Modula-2 checks
10681
10682@quotation
10683@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
10684range checking.
10685@end quotation
10686@c FIXME remove warning when type/range checks added
10687
10688@value{GDBN} considers two Modula-2 variables type equivalent if:
10689
10690@itemize @bullet
10691@item
10692They are of types that have been declared equivalent via a @code{TYPE
10693@var{t1} = @var{t2}} statement
10694
10695@item
10696They have been declared on the same line. (Note: This is true of the
10697@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
10698@end itemize
10699
10700As long as type checking is enabled, any attempt to combine variables
10701whose types are not equivalent is an error.
10702
10703Range checking is done on all mathematical operations, assignment, array
10704index bounds, and all built-in functions and procedures.
10705
6d2ebf8b 10706@node M2 Scope
79a6e687 10707@subsubsection The Scope Operators @code{::} and @code{.}
c906108c 10708@cindex scope
41afff9a 10709@cindex @code{.}, Modula-2 scope operator
c906108c
SS
10710@cindex colon, doubled as scope operator
10711@ifinfo
41afff9a 10712@vindex colon-colon@r{, in Modula-2}
c906108c
SS
10713@c Info cannot handle :: but TeX can.
10714@end ifinfo
10715@iftex
41afff9a 10716@vindex ::@r{, in Modula-2}
c906108c
SS
10717@end iftex
10718
10719There are a few subtle differences between the Modula-2 scope operator
10720(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
10721similar syntax:
10722
474c8240 10723@smallexample
c906108c
SS
10724
10725@var{module} . @var{id}
10726@var{scope} :: @var{id}
474c8240 10727@end smallexample
c906108c
SS
10728
10729@noindent
10730where @var{scope} is the name of a module or a procedure,
10731@var{module} the name of a module, and @var{id} is any declared
10732identifier within your program, except another module.
10733
10734Using the @code{::} operator makes @value{GDBN} search the scope
10735specified by @var{scope} for the identifier @var{id}. If it is not
10736found in the specified scope, then @value{GDBN} searches all scopes
10737enclosing the one specified by @var{scope}.
10738
10739Using the @code{.} operator makes @value{GDBN} search the current scope for
10740the identifier specified by @var{id} that was imported from the
10741definition module specified by @var{module}. With this operator, it is
10742an error if the identifier @var{id} was not imported from definition
10743module @var{module}, or if @var{id} is not an identifier in
10744@var{module}.
10745
6d2ebf8b 10746@node GDB/M2
c906108c
SS
10747@subsubsection @value{GDBN} and Modula-2
10748
10749Some @value{GDBN} commands have little use when debugging Modula-2 programs.
10750Five subcommands of @code{set print} and @code{show print} apply
b37052ae 10751specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 10752@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 10753apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
10754analogue in Modula-2.
10755
10756The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 10757with any language, is not useful with Modula-2. Its
c906108c 10758intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 10759created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 10760address can be specified by an integral constant, the construct
d4f3574e 10761@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
10762
10763@cindex @code{#} in Modula-2
10764In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
10765interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 10766
e07c999f
PH
10767@node Ada
10768@subsection Ada
10769@cindex Ada
10770
10771The extensions made to @value{GDBN} for Ada only support
10772output from the @sc{gnu} Ada (GNAT) compiler.
10773Other Ada compilers are not currently supported, and
10774attempting to debug executables produced by them is most likely
10775to be difficult.
10776
10777
10778@cindex expressions in Ada
10779@menu
10780* Ada Mode Intro:: General remarks on the Ada syntax
10781 and semantics supported by Ada mode
10782 in @value{GDBN}.
10783* Omissions from Ada:: Restrictions on the Ada expression syntax.
10784* Additions to Ada:: Extensions of the Ada expression syntax.
10785* Stopping Before Main Program:: Debugging the program during elaboration.
10786* Ada Glitches:: Known peculiarities of Ada mode.
10787@end menu
10788
10789@node Ada Mode Intro
10790@subsubsection Introduction
10791@cindex Ada mode, general
10792
10793The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression
10794syntax, with some extensions.
10795The philosophy behind the design of this subset is
10796
10797@itemize @bullet
10798@item
10799That @value{GDBN} should provide basic literals and access to operations for
10800arithmetic, dereferencing, field selection, indexing, and subprogram calls,
10801leaving more sophisticated computations to subprograms written into the
10802program (which therefore may be called from @value{GDBN}).
10803
10804@item
10805That type safety and strict adherence to Ada language restrictions
10806are not particularly important to the @value{GDBN} user.
10807
10808@item
10809That brevity is important to the @value{GDBN} user.
10810@end itemize
10811
10812Thus, for brevity, the debugger acts as if there were
10813implicit @code{with} and @code{use} clauses in effect for all user-written
10814packages, making it unnecessary to fully qualify most names with
10815their packages, regardless of context. Where this causes ambiguity,
10816@value{GDBN} asks the user's intent.
10817
10818The debugger will start in Ada mode if it detects an Ada main program.
10819As for other languages, it will enter Ada mode when stopped in a program that
10820was translated from an Ada source file.
10821
10822While in Ada mode, you may use `@t{--}' for comments. This is useful
10823mostly for documenting command files. The standard @value{GDBN} comment
10824(@samp{#}) still works at the beginning of a line in Ada mode, but not in the
10825middle (to allow based literals).
10826
10827The debugger supports limited overloading. Given a subprogram call in which
10828the function symbol has multiple definitions, it will use the number of
10829actual parameters and some information about their types to attempt to narrow
10830the set of definitions. It also makes very limited use of context, preferring
10831procedures to functions in the context of the @code{call} command, and
10832functions to procedures elsewhere.
10833
10834@node Omissions from Ada
10835@subsubsection Omissions from Ada
10836@cindex Ada, omissions from
10837
10838Here are the notable omissions from the subset:
10839
10840@itemize @bullet
10841@item
10842Only a subset of the attributes are supported:
10843
10844@itemize @minus
10845@item
10846@t{'First}, @t{'Last}, and @t{'Length}
10847 on array objects (not on types and subtypes).
10848
10849@item
10850@t{'Min} and @t{'Max}.
10851
10852@item
10853@t{'Pos} and @t{'Val}.
10854
10855@item
10856@t{'Tag}.
10857
10858@item
10859@t{'Range} on array objects (not subtypes), but only as the right
10860operand of the membership (@code{in}) operator.
10861
10862@item
10863@t{'Access}, @t{'Unchecked_Access}, and
10864@t{'Unrestricted_Access} (a GNAT extension).
10865
10866@item
10867@t{'Address}.
10868@end itemize
10869
10870@item
10871The names in
10872@code{Characters.Latin_1} are not available and
10873concatenation is not implemented. Thus, escape characters in strings are
10874not currently available.
10875
10876@item
10877Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise
10878equality of representations. They will generally work correctly
10879for strings and arrays whose elements have integer or enumeration types.
10880They may not work correctly for arrays whose element
10881types have user-defined equality, for arrays of real values
10882(in particular, IEEE-conformant floating point, because of negative
10883zeroes and NaNs), and for arrays whose elements contain unused bits with
10884indeterminate values.
10885
10886@item
10887The other component-by-component array operations (@code{and}, @code{or},
10888@code{xor}, @code{not}, and relational tests other than equality)
10889are not implemented.
10890
10891@item
860701dc
PH
10892@cindex array aggregates (Ada)
10893@cindex record aggregates (Ada)
10894@cindex aggregates (Ada)
10895There is limited support for array and record aggregates. They are
10896permitted only on the right sides of assignments, as in these examples:
10897
10898@smallexample
10899set An_Array := (1, 2, 3, 4, 5, 6)
10900set An_Array := (1, others => 0)
10901set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
10902set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
10903set A_Record := (1, "Peter", True);
10904set A_Record := (Name => "Peter", Id => 1, Alive => True)
10905@end smallexample
10906
10907Changing a
10908discriminant's value by assigning an aggregate has an
10909undefined effect if that discriminant is used within the record.
10910However, you can first modify discriminants by directly assigning to
10911them (which normally would not be allowed in Ada), and then performing an
10912aggregate assignment. For example, given a variable @code{A_Rec}
10913declared to have a type such as:
10914
10915@smallexample
10916type Rec (Len : Small_Integer := 0) is record
10917 Id : Integer;
10918 Vals : IntArray (1 .. Len);
10919end record;
10920@end smallexample
10921
10922you can assign a value with a different size of @code{Vals} with two
10923assignments:
10924
10925@smallexample
10926set A_Rec.Len := 4
10927set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
10928@end smallexample
10929
10930As this example also illustrates, @value{GDBN} is very loose about the usual
10931rules concerning aggregates. You may leave out some of the
10932components of an array or record aggregate (such as the @code{Len}
10933component in the assignment to @code{A_Rec} above); they will retain their
10934original values upon assignment. You may freely use dynamic values as
10935indices in component associations. You may even use overlapping or
10936redundant component associations, although which component values are
10937assigned in such cases is not defined.
e07c999f
PH
10938
10939@item
10940Calls to dispatching subprograms are not implemented.
10941
10942@item
10943The overloading algorithm is much more limited (i.e., less selective)
ae21e955
BW
10944than that of real Ada. It makes only limited use of the context in
10945which a subexpression appears to resolve its meaning, and it is much
10946looser in its rules for allowing type matches. As a result, some
10947function calls will be ambiguous, and the user will be asked to choose
10948the proper resolution.
e07c999f
PH
10949
10950@item
10951The @code{new} operator is not implemented.
10952
10953@item
10954Entry calls are not implemented.
10955
10956@item
10957Aside from printing, arithmetic operations on the native VAX floating-point
10958formats are not supported.
10959
10960@item
10961It is not possible to slice a packed array.
10962@end itemize
10963
10964@node Additions to Ada
10965@subsubsection Additions to Ada
10966@cindex Ada, deviations from
10967
10968As it does for other languages, @value{GDBN} makes certain generic
10969extensions to Ada (@pxref{Expressions}):
10970
10971@itemize @bullet
10972@item
ae21e955
BW
10973If the expression @var{E} is a variable residing in memory (typically
10974a local variable or array element) and @var{N} is a positive integer,
10975then @code{@var{E}@@@var{N}} displays the values of @var{E} and the
10976@var{N}-1 adjacent variables following it in memory as an array. In
10977Ada, this operator is generally not necessary, since its prime use is
10978in displaying parts of an array, and slicing will usually do this in
10979Ada. However, there are occasional uses when debugging programs in
10980which certain debugging information has been optimized away.
e07c999f
PH
10981
10982@item
ae21e955
BW
10983@code{@var{B}::@var{var}} means ``the variable named @var{var} that
10984appears in function or file @var{B}.'' When @var{B} is a file name,
10985you must typically surround it in single quotes.
e07c999f
PH
10986
10987@item
10988The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type
10989@var{type} that appears at address @var{addr}.''
10990
10991@item
10992A name starting with @samp{$} is a convenience variable
10993(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}).
10994@end itemize
10995
ae21e955
BW
10996In addition, @value{GDBN} provides a few other shortcuts and outright
10997additions specific to Ada:
e07c999f
PH
10998
10999@itemize @bullet
11000@item
11001The assignment statement is allowed as an expression, returning
11002its right-hand operand as its value. Thus, you may enter
11003
11004@smallexample
11005set x := y + 3
11006print A(tmp := y + 1)
11007@end smallexample
11008
11009@item
11010The semicolon is allowed as an ``operator,'' returning as its value
11011the value of its right-hand operand.
11012This allows, for example,
11013complex conditional breaks:
11014
11015@smallexample
11016break f
11017condition 1 (report(i); k += 1; A(k) > 100)
11018@end smallexample
11019
11020@item
11021Rather than use catenation and symbolic character names to introduce special
11022characters into strings, one may instead use a special bracket notation,
11023which is also used to print strings. A sequence of characters of the form
11024@samp{["@var{XX}"]} within a string or character literal denotes the
11025(single) character whose numeric encoding is @var{XX} in hexadecimal. The
11026sequence of characters @samp{["""]} also denotes a single quotation mark
11027in strings. For example,
11028@smallexample
11029 "One line.["0a"]Next line.["0a"]"
11030@end smallexample
11031@noindent
ae21e955
BW
11032contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF})
11033after each period.
e07c999f
PH
11034
11035@item
11036The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and
11037@t{'Max} is optional (and is ignored in any case). For example, it is valid
11038to write
11039
11040@smallexample
11041print 'max(x, y)
11042@end smallexample
11043
11044@item
11045When printing arrays, @value{GDBN} uses positional notation when the
11046array has a lower bound of 1, and uses a modified named notation otherwise.
ae21e955
BW
11047For example, a one-dimensional array of three integers with a lower bound
11048of 3 might print as
e07c999f
PH
11049
11050@smallexample
11051(3 => 10, 17, 1)
11052@end smallexample
11053
11054@noindent
11055That is, in contrast to valid Ada, only the first component has a @code{=>}
11056clause.
11057
11058@item
11059You may abbreviate attributes in expressions with any unique,
11060multi-character subsequence of
11061their names (an exact match gets preference).
11062For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh}
11063in place of @t{a'length}.
11064
11065@item
11066@cindex quoting Ada internal identifiers
11067Since Ada is case-insensitive, the debugger normally maps identifiers you type
11068to lower case. The GNAT compiler uses upper-case characters for
11069some of its internal identifiers, which are normally of no interest to users.
11070For the rare occasions when you actually have to look at them,
11071enclose them in angle brackets to avoid the lower-case mapping.
11072For example,
11073@smallexample
11074@value{GDBP} print <JMPBUF_SAVE>[0]
11075@end smallexample
11076
11077@item
11078Printing an object of class-wide type or dereferencing an
11079access-to-class-wide value will display all the components of the object's
11080specific type (as indicated by its run-time tag). Likewise, component
11081selection on such a value will operate on the specific type of the
11082object.
11083
11084@end itemize
11085
11086@node Stopping Before Main Program
11087@subsubsection Stopping at the Very Beginning
11088
11089@cindex breakpointing Ada elaboration code
11090It is sometimes necessary to debug the program during elaboration, and
11091before reaching the main procedure.
11092As defined in the Ada Reference
11093Manual, the elaboration code is invoked from a procedure called
11094@code{adainit}. To run your program up to the beginning of
11095elaboration, simply use the following two commands:
11096@code{tbreak adainit} and @code{run}.
11097
11098@node Ada Glitches
11099@subsubsection Known Peculiarities of Ada Mode
11100@cindex Ada, problems
11101
11102Besides the omissions listed previously (@pxref{Omissions from Ada}),
11103we know of several problems with and limitations of Ada mode in
11104@value{GDBN},
11105some of which will be fixed with planned future releases of the debugger
11106and the GNU Ada compiler.
11107
11108@itemize @bullet
11109@item
11110Currently, the debugger
11111has insufficient information to determine whether certain pointers represent
11112pointers to objects or the objects themselves.
11113Thus, the user may have to tack an extra @code{.all} after an expression
11114to get it printed properly.
11115
11116@item
11117Static constants that the compiler chooses not to materialize as objects in
11118storage are invisible to the debugger.
11119
11120@item
11121Named parameter associations in function argument lists are ignored (the
11122argument lists are treated as positional).
11123
11124@item
11125Many useful library packages are currently invisible to the debugger.
11126
11127@item
11128Fixed-point arithmetic, conversions, input, and output is carried out using
11129floating-point arithmetic, and may give results that only approximate those on
11130the host machine.
11131
11132@item
11133The type of the @t{'Address} attribute may not be @code{System.Address}.
11134
11135@item
11136The GNAT compiler never generates the prefix @code{Standard} for any of
11137the standard symbols defined by the Ada language. @value{GDBN} knows about
11138this: it will strip the prefix from names when you use it, and will never
11139look for a name you have so qualified among local symbols, nor match against
11140symbols in other packages or subprograms. If you have
11141defined entities anywhere in your program other than parameters and
11142local variables whose simple names match names in @code{Standard},
11143GNAT's lack of qualification here can cause confusion. When this happens,
11144you can usually resolve the confusion
11145by qualifying the problematic names with package
11146@code{Standard} explicitly.
11147@end itemize
11148
79a6e687
BW
11149@node Unsupported Languages
11150@section Unsupported Languages
4e562065
JB
11151
11152@cindex unsupported languages
11153@cindex minimal language
11154In addition to the other fully-supported programming languages,
11155@value{GDBN} also provides a pseudo-language, called @code{minimal}.
11156It does not represent a real programming language, but provides a set
11157of capabilities close to what the C or assembly languages provide.
11158This should allow most simple operations to be performed while debugging
11159an application that uses a language currently not supported by @value{GDBN}.
11160
11161If the language is set to @code{auto}, @value{GDBN} will automatically
11162select this language if the current frame corresponds to an unsupported
11163language.
11164
6d2ebf8b 11165@node Symbols
c906108c
SS
11166@chapter Examining the Symbol Table
11167
d4f3574e 11168The commands described in this chapter allow you to inquire about the
c906108c
SS
11169symbols (names of variables, functions and types) defined in your
11170program. This information is inherent in the text of your program and
11171does not change as your program executes. @value{GDBN} finds it in your
11172program's symbol table, in the file indicated when you started @value{GDBN}
79a6e687
BW
11173(@pxref{File Options, ,Choosing Files}), or by one of the
11174file-management commands (@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
11175
11176@cindex symbol names
11177@cindex names of symbols
11178@cindex quoting names
11179Occasionally, you may need to refer to symbols that contain unusual
11180characters, which @value{GDBN} ordinarily treats as word delimiters. The
11181most frequent case is in referring to static variables in other
79a6e687 11182source files (@pxref{Variables,,Program Variables}). File names
c906108c
SS
11183are recorded in object files as debugging symbols, but @value{GDBN} would
11184ordinarily parse a typical file name, like @file{foo.c}, as the three words
11185@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
11186@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
11187
474c8240 11188@smallexample
c906108c 11189p 'foo.c'::x
474c8240 11190@end smallexample
c906108c
SS
11191
11192@noindent
11193looks up the value of @code{x} in the scope of the file @file{foo.c}.
11194
11195@table @code
a8f24a35
EZ
11196@cindex case-insensitive symbol names
11197@cindex case sensitivity in symbol names
11198@kindex set case-sensitive
11199@item set case-sensitive on
11200@itemx set case-sensitive off
11201@itemx set case-sensitive auto
11202Normally, when @value{GDBN} looks up symbols, it matches their names
11203with case sensitivity determined by the current source language.
11204Occasionally, you may wish to control that. The command @code{set
11205case-sensitive} lets you do that by specifying @code{on} for
11206case-sensitive matches or @code{off} for case-insensitive ones. If
11207you specify @code{auto}, case sensitivity is reset to the default
11208suitable for the source language. The default is case-sensitive
11209matches for all languages except for Fortran, for which the default is
11210case-insensitive matches.
11211
9c16f35a
EZ
11212@kindex show case-sensitive
11213@item show case-sensitive
a8f24a35
EZ
11214This command shows the current setting of case sensitivity for symbols
11215lookups.
11216
c906108c 11217@kindex info address
b37052ae 11218@cindex address of a symbol
c906108c
SS
11219@item info address @var{symbol}
11220Describe where the data for @var{symbol} is stored. For a register
11221variable, this says which register it is kept in. For a non-register
11222local variable, this prints the stack-frame offset at which the variable
11223is always stored.
11224
11225Note the contrast with @samp{print &@var{symbol}}, which does not work
11226at all for a register variable, and for a stack local variable prints
11227the exact address of the current instantiation of the variable.
11228
3d67e040 11229@kindex info symbol
b37052ae 11230@cindex symbol from address
9c16f35a 11231@cindex closest symbol and offset for an address
3d67e040
EZ
11232@item info symbol @var{addr}
11233Print the name of a symbol which is stored at the address @var{addr}.
11234If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
11235nearest symbol and an offset from it:
11236
474c8240 11237@smallexample
3d67e040
EZ
11238(@value{GDBP}) info symbol 0x54320
11239_initialize_vx + 396 in section .text
474c8240 11240@end smallexample
3d67e040
EZ
11241
11242@noindent
11243This is the opposite of the @code{info address} command. You can use
11244it to find out the name of a variable or a function given its address.
11245
c906108c 11246@kindex whatis
62f3a2ba
FF
11247@item whatis [@var{arg}]
11248Print the data type of @var{arg}, which can be either an expression or
11249a data type. With no argument, print the data type of @code{$}, the
11250last value in the value history. If @var{arg} is an expression, it is
11251not actually evaluated, and any side-effecting operations (such as
11252assignments or function calls) inside it do not take place. If
11253@var{arg} is a type name, it may be the name of a type or typedef, or
11254for C code it may have the form @samp{class @var{class-name}},
11255@samp{struct @var{struct-tag}}, @samp{union @var{union-tag}} or
11256@samp{enum @var{enum-tag}}.
c906108c
SS
11257@xref{Expressions, ,Expressions}.
11258
c906108c 11259@kindex ptype
62f3a2ba
FF
11260@item ptype [@var{arg}]
11261@code{ptype} accepts the same arguments as @code{whatis}, but prints a
11262detailed description of the type, instead of just the name of the type.
11263@xref{Expressions, ,Expressions}.
c906108c
SS
11264
11265For example, for this variable declaration:
11266
474c8240 11267@smallexample
c906108c 11268struct complex @{double real; double imag;@} v;
474c8240 11269@end smallexample
c906108c
SS
11270
11271@noindent
11272the two commands give this output:
11273
474c8240 11274@smallexample
c906108c
SS
11275@group
11276(@value{GDBP}) whatis v
11277type = struct complex
11278(@value{GDBP}) ptype v
11279type = struct complex @{
11280 double real;
11281 double imag;
11282@}
11283@end group
474c8240 11284@end smallexample
c906108c
SS
11285
11286@noindent
11287As with @code{whatis}, using @code{ptype} without an argument refers to
11288the type of @code{$}, the last value in the value history.
11289
ab1adacd
EZ
11290@cindex incomplete type
11291Sometimes, programs use opaque data types or incomplete specifications
11292of complex data structure. If the debug information included in the
11293program does not allow @value{GDBN} to display a full declaration of
11294the data type, it will say @samp{<incomplete type>}. For example,
11295given these declarations:
11296
11297@smallexample
11298 struct foo;
11299 struct foo *fooptr;
11300@end smallexample
11301
11302@noindent
11303but no definition for @code{struct foo} itself, @value{GDBN} will say:
11304
11305@smallexample
ddb50cd7 11306 (@value{GDBP}) ptype foo
ab1adacd
EZ
11307 $1 = <incomplete type>
11308@end smallexample
11309
11310@noindent
11311``Incomplete type'' is C terminology for data types that are not
11312completely specified.
11313
c906108c
SS
11314@kindex info types
11315@item info types @var{regexp}
11316@itemx info types
09d4efe1
EZ
11317Print a brief description of all types whose names match the regular
11318expression @var{regexp} (or all types in your program, if you supply
11319no argument). Each complete typename is matched as though it were a
11320complete line; thus, @samp{i type value} gives information on all
11321types in your program whose names include the string @code{value}, but
11322@samp{i type ^value$} gives information only on types whose complete
11323name is @code{value}.
c906108c
SS
11324
11325This command differs from @code{ptype} in two ways: first, like
11326@code{whatis}, it does not print a detailed description; second, it
11327lists all source files where a type is defined.
11328
b37052ae
EZ
11329@kindex info scope
11330@cindex local variables
09d4efe1 11331@item info scope @var{location}
b37052ae 11332List all the variables local to a particular scope. This command
09d4efe1
EZ
11333accepts a @var{location} argument---a function name, a source line, or
11334an address preceded by a @samp{*}, and prints all the variables local
2a25a5ba
EZ
11335to the scope defined by that location. (@xref{Specify Location}, for
11336details about supported forms of @var{location}.) For example:
b37052ae
EZ
11337
11338@smallexample
11339(@value{GDBP}) @b{info scope command_line_handler}
11340Scope for command_line_handler:
11341Symbol rl is an argument at stack/frame offset 8, length 4.
11342Symbol linebuffer is in static storage at address 0x150a18, length 4.
11343Symbol linelength is in static storage at address 0x150a1c, length 4.
11344Symbol p is a local variable in register $esi, length 4.
11345Symbol p1 is a local variable in register $ebx, length 4.
11346Symbol nline is a local variable in register $edx, length 4.
11347Symbol repeat is a local variable at frame offset -8, length 4.
11348@end smallexample
11349
f5c37c66
EZ
11350@noindent
11351This command is especially useful for determining what data to collect
11352during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
11353collect}.
11354
c906108c
SS
11355@kindex info source
11356@item info source
919d772c
JB
11357Show information about the current source file---that is, the source file for
11358the function containing the current point of execution:
11359@itemize @bullet
11360@item
11361the name of the source file, and the directory containing it,
11362@item
11363the directory it was compiled in,
11364@item
11365its length, in lines,
11366@item
11367which programming language it is written in,
11368@item
11369whether the executable includes debugging information for that file, and
11370if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
11371@item
11372whether the debugging information includes information about
11373preprocessor macros.
11374@end itemize
11375
c906108c
SS
11376
11377@kindex info sources
11378@item info sources
11379Print the names of all source files in your program for which there is
11380debugging information, organized into two lists: files whose symbols
11381have already been read, and files whose symbols will be read when needed.
11382
11383@kindex info functions
11384@item info functions
11385Print the names and data types of all defined functions.
11386
11387@item info functions @var{regexp}
11388Print the names and data types of all defined functions
11389whose names contain a match for regular expression @var{regexp}.
11390Thus, @samp{info fun step} finds all functions whose names
11391include @code{step}; @samp{info fun ^step} finds those whose names
b383017d 11392start with @code{step}. If a function name contains characters
c1468174 11393that conflict with the regular expression language (e.g.@:
1c5dfdad 11394@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
11395
11396@kindex info variables
11397@item info variables
11398Print the names and data types of all variables that are declared
6ca652b0 11399outside of functions (i.e.@: excluding local variables).
c906108c
SS
11400
11401@item info variables @var{regexp}
11402Print the names and data types of all variables (except for local
11403variables) whose names contain a match for regular expression
11404@var{regexp}.
11405
b37303ee 11406@kindex info classes
721c2651 11407@cindex Objective-C, classes and selectors
b37303ee
AF
11408@item info classes
11409@itemx info classes @var{regexp}
11410Display all Objective-C classes in your program, or
11411(with the @var{regexp} argument) all those matching a particular regular
11412expression.
11413
11414@kindex info selectors
11415@item info selectors
11416@itemx info selectors @var{regexp}
11417Display all Objective-C selectors in your program, or
11418(with the @var{regexp} argument) all those matching a particular regular
11419expression.
11420
c906108c
SS
11421@ignore
11422This was never implemented.
11423@kindex info methods
11424@item info methods
11425@itemx info methods @var{regexp}
11426The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
11427methods within C@t{++} program, or (with the @var{regexp} argument) a
11428specific set of methods found in the various C@t{++} classes. Many
11429C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
11430from the @code{ptype} command can be overwhelming and hard to use. The
11431@code{info-methods} command filters the methods, printing only those
11432which match the regular-expression @var{regexp}.
11433@end ignore
11434
c906108c
SS
11435@cindex reloading symbols
11436Some systems allow individual object files that make up your program to
7a292a7a
SS
11437be replaced without stopping and restarting your program. For example,
11438in VxWorks you can simply recompile a defective object file and keep on
11439running. If you are running on one of these systems, you can allow
11440@value{GDBN} to reload the symbols for automatically relinked modules:
c906108c
SS
11441
11442@table @code
11443@kindex set symbol-reloading
11444@item set symbol-reloading on
11445Replace symbol definitions for the corresponding source file when an
11446object file with a particular name is seen again.
11447
11448@item set symbol-reloading off
6d2ebf8b
SS
11449Do not replace symbol definitions when encountering object files of the
11450same name more than once. This is the default state; if you are not
11451running on a system that permits automatic relinking of modules, you
11452should leave @code{symbol-reloading} off, since otherwise @value{GDBN}
11453may discard symbols when linking large programs, that may contain
11454several modules (from different directories or libraries) with the same
11455name.
c906108c
SS
11456
11457@kindex show symbol-reloading
11458@item show symbol-reloading
11459Show the current @code{on} or @code{off} setting.
11460@end table
c906108c 11461
9c16f35a 11462@cindex opaque data types
c906108c
SS
11463@kindex set opaque-type-resolution
11464@item set opaque-type-resolution on
11465Tell @value{GDBN} to resolve opaque types. An opaque type is a type
11466declared as a pointer to a @code{struct}, @code{class}, or
11467@code{union}---for example, @code{struct MyType *}---that is used in one
11468source file although the full declaration of @code{struct MyType} is in
11469another source file. The default is on.
11470
11471A change in the setting of this subcommand will not take effect until
11472the next time symbols for a file are loaded.
11473
11474@item set opaque-type-resolution off
11475Tell @value{GDBN} not to resolve opaque types. In this case, the type
11476is printed as follows:
11477@smallexample
11478@{<no data fields>@}
11479@end smallexample
11480
11481@kindex show opaque-type-resolution
11482@item show opaque-type-resolution
11483Show whether opaque types are resolved or not.
c906108c
SS
11484
11485@kindex maint print symbols
11486@cindex symbol dump
11487@kindex maint print psymbols
11488@cindex partial symbol dump
11489@item maint print symbols @var{filename}
11490@itemx maint print psymbols @var{filename}
11491@itemx maint print msymbols @var{filename}
11492Write a dump of debugging symbol data into the file @var{filename}.
11493These commands are used to debug the @value{GDBN} symbol-reading code. Only
11494symbols with debugging data are included. If you use @samp{maint print
11495symbols}, @value{GDBN} includes all the symbols for which it has already
11496collected full details: that is, @var{filename} reflects symbols for
11497only those files whose symbols @value{GDBN} has read. You can use the
11498command @code{info sources} to find out which files these are. If you
11499use @samp{maint print psymbols} instead, the dump shows information about
11500symbols that @value{GDBN} only knows partially---that is, symbols defined in
11501files that @value{GDBN} has skimmed, but not yet read completely. Finally,
11502@samp{maint print msymbols} dumps just the minimal symbol information
11503required for each object file from which @value{GDBN} has read some symbols.
79a6e687 11504@xref{Files, ,Commands to Specify Files}, for a discussion of how
c906108c 11505@value{GDBN} reads symbols (in the description of @code{symbol-file}).
44ea7b70 11506
5e7b2f39
JB
11507@kindex maint info symtabs
11508@kindex maint info psymtabs
44ea7b70
JB
11509@cindex listing @value{GDBN}'s internal symbol tables
11510@cindex symbol tables, listing @value{GDBN}'s internal
11511@cindex full symbol tables, listing @value{GDBN}'s internal
11512@cindex partial symbol tables, listing @value{GDBN}'s internal
5e7b2f39
JB
11513@item maint info symtabs @r{[} @var{regexp} @r{]}
11514@itemx maint info psymtabs @r{[} @var{regexp} @r{]}
44ea7b70
JB
11515
11516List the @code{struct symtab} or @code{struct partial_symtab}
11517structures whose names match @var{regexp}. If @var{regexp} is not
11518given, list them all. The output includes expressions which you can
11519copy into a @value{GDBN} debugging this one to examine a particular
11520structure in more detail. For example:
11521
11522@smallexample
5e7b2f39 11523(@value{GDBP}) maint info psymtabs dwarf2read
44ea7b70
JB
11524@{ objfile /home/gnu/build/gdb/gdb
11525 ((struct objfile *) 0x82e69d0)
b383017d 11526 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
11527 ((struct partial_symtab *) 0x8474b10)
11528 readin no
11529 fullname (null)
11530 text addresses 0x814d3c8 -- 0x8158074
11531 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
11532 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
11533 dependencies (none)
11534 @}
11535@}
5e7b2f39 11536(@value{GDBP}) maint info symtabs
44ea7b70
JB
11537(@value{GDBP})
11538@end smallexample
11539@noindent
11540We see that there is one partial symbol table whose filename contains
11541the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
11542and we see that @value{GDBN} has not read in any symtabs yet at all.
11543If we set a breakpoint on a function, that will cause @value{GDBN} to
11544read the symtab for the compilation unit containing that function:
11545
11546@smallexample
11547(@value{GDBP}) break dwarf2_psymtab_to_symtab
11548Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
11549line 1574.
5e7b2f39 11550(@value{GDBP}) maint info symtabs
b383017d 11551@{ objfile /home/gnu/build/gdb/gdb
44ea7b70 11552 ((struct objfile *) 0x82e69d0)
b383017d 11553 @{ symtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
11554 ((struct symtab *) 0x86c1f38)
11555 dirname (null)
11556 fullname (null)
11557 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
1b39d5c0 11558 linetable ((struct linetable *) 0x8370fa0)
44ea7b70
JB
11559 debugformat DWARF 2
11560 @}
11561@}
b383017d 11562(@value{GDBP})
44ea7b70 11563@end smallexample
c906108c
SS
11564@end table
11565
44ea7b70 11566
6d2ebf8b 11567@node Altering
c906108c
SS
11568@chapter Altering Execution
11569
11570Once you think you have found an error in your program, you might want to
11571find out for certain whether correcting the apparent error would lead to
11572correct results in the rest of the run. You can find the answer by
11573experiment, using the @value{GDBN} features for altering execution of the
11574program.
11575
11576For example, you can store new values into variables or memory
7a292a7a
SS
11577locations, give your program a signal, restart it at a different
11578address, or even return prematurely from a function.
c906108c
SS
11579
11580@menu
11581* Assignment:: Assignment to variables
11582* Jumping:: Continuing at a different address
c906108c 11583* Signaling:: Giving your program a signal
c906108c
SS
11584* Returning:: Returning from a function
11585* Calling:: Calling your program's functions
11586* Patching:: Patching your program
11587@end menu
11588
6d2ebf8b 11589@node Assignment
79a6e687 11590@section Assignment to Variables
c906108c
SS
11591
11592@cindex assignment
11593@cindex setting variables
11594To alter the value of a variable, evaluate an assignment expression.
11595@xref{Expressions, ,Expressions}. For example,
11596
474c8240 11597@smallexample
c906108c 11598print x=4
474c8240 11599@end smallexample
c906108c
SS
11600
11601@noindent
11602stores the value 4 into the variable @code{x}, and then prints the
5d161b24 11603value of the assignment expression (which is 4).
c906108c
SS
11604@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
11605information on operators in supported languages.
c906108c
SS
11606
11607@kindex set variable
11608@cindex variables, setting
11609If you are not interested in seeing the value of the assignment, use the
11610@code{set} command instead of the @code{print} command. @code{set} is
11611really the same as @code{print} except that the expression's value is
11612not printed and is not put in the value history (@pxref{Value History,
79a6e687 11613,Value History}). The expression is evaluated only for its effects.
c906108c 11614
c906108c
SS
11615If the beginning of the argument string of the @code{set} command
11616appears identical to a @code{set} subcommand, use the @code{set
11617variable} command instead of just @code{set}. This command is identical
11618to @code{set} except for its lack of subcommands. For example, if your
11619program has a variable @code{width}, you get an error if you try to set
11620a new value with just @samp{set width=13}, because @value{GDBN} has the
11621command @code{set width}:
11622
474c8240 11623@smallexample
c906108c
SS
11624(@value{GDBP}) whatis width
11625type = double
11626(@value{GDBP}) p width
11627$4 = 13
11628(@value{GDBP}) set width=47
11629Invalid syntax in expression.
474c8240 11630@end smallexample
c906108c
SS
11631
11632@noindent
11633The invalid expression, of course, is @samp{=47}. In
11634order to actually set the program's variable @code{width}, use
11635
474c8240 11636@smallexample
c906108c 11637(@value{GDBP}) set var width=47
474c8240 11638@end smallexample
53a5351d 11639
c906108c
SS
11640Because the @code{set} command has many subcommands that can conflict
11641with the names of program variables, it is a good idea to use the
11642@code{set variable} command instead of just @code{set}. For example, if
11643your program has a variable @code{g}, you run into problems if you try
11644to set a new value with just @samp{set g=4}, because @value{GDBN} has
11645the command @code{set gnutarget}, abbreviated @code{set g}:
11646
474c8240 11647@smallexample
c906108c
SS
11648@group
11649(@value{GDBP}) whatis g
11650type = double
11651(@value{GDBP}) p g
11652$1 = 1
11653(@value{GDBP}) set g=4
2df3850c 11654(@value{GDBP}) p g
c906108c
SS
11655$2 = 1
11656(@value{GDBP}) r
11657The program being debugged has been started already.
11658Start it from the beginning? (y or n) y
11659Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
11660"/home/smith/cc_progs/a.out": can't open to read symbols:
11661 Invalid bfd target.
c906108c
SS
11662(@value{GDBP}) show g
11663The current BFD target is "=4".
11664@end group
474c8240 11665@end smallexample
c906108c
SS
11666
11667@noindent
11668The program variable @code{g} did not change, and you silently set the
11669@code{gnutarget} to an invalid value. In order to set the variable
11670@code{g}, use
11671
474c8240 11672@smallexample
c906108c 11673(@value{GDBP}) set var g=4
474c8240 11674@end smallexample
c906108c
SS
11675
11676@value{GDBN} allows more implicit conversions in assignments than C; you can
11677freely store an integer value into a pointer variable or vice versa,
11678and you can convert any structure to any other structure that is the
11679same length or shorter.
11680@comment FIXME: how do structs align/pad in these conversions?
11681@comment /doc@cygnus.com 18dec1990
11682
11683To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
11684construct to generate a value of specified type at a specified address
11685(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
11686to memory location @code{0x83040} as an integer (which implies a certain size
11687and representation in memory), and
11688
474c8240 11689@smallexample
c906108c 11690set @{int@}0x83040 = 4
474c8240 11691@end smallexample
c906108c
SS
11692
11693@noindent
11694stores the value 4 into that memory location.
11695
6d2ebf8b 11696@node Jumping
79a6e687 11697@section Continuing at a Different Address
c906108c
SS
11698
11699Ordinarily, when you continue your program, you do so at the place where
11700it stopped, with the @code{continue} command. You can instead continue at
11701an address of your own choosing, with the following commands:
11702
11703@table @code
11704@kindex jump
11705@item jump @var{linespec}
2a25a5ba
EZ
11706@itemx jump @var{location}
11707Resume execution at line @var{linespec} or at address given by
11708@var{location}. Execution stops again immediately if there is a
11709breakpoint there. @xref{Specify Location}, for a description of the
11710different forms of @var{linespec} and @var{location}. It is common
11711practice to use the @code{tbreak} command in conjunction with
11712@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}.
c906108c
SS
11713
11714The @code{jump} command does not change the current stack frame, or
11715the stack pointer, or the contents of any memory location or any
11716register other than the program counter. If line @var{linespec} is in
11717a different function from the one currently executing, the results may
11718be bizarre if the two functions expect different patterns of arguments or
11719of local variables. For this reason, the @code{jump} command requests
11720confirmation if the specified line is not in the function currently
11721executing. However, even bizarre results are predictable if you are
11722well acquainted with the machine-language code of your program.
c906108c
SS
11723@end table
11724
c906108c 11725@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
11726On many systems, you can get much the same effect as the @code{jump}
11727command by storing a new value into the register @code{$pc}. The
11728difference is that this does not start your program running; it only
11729changes the address of where it @emph{will} run when you continue. For
11730example,
c906108c 11731
474c8240 11732@smallexample
c906108c 11733set $pc = 0x485
474c8240 11734@end smallexample
c906108c
SS
11735
11736@noindent
11737makes the next @code{continue} command or stepping command execute at
11738address @code{0x485}, rather than at the address where your program stopped.
79a6e687 11739@xref{Continuing and Stepping, ,Continuing and Stepping}.
c906108c
SS
11740
11741The most common occasion to use the @code{jump} command is to back
11742up---perhaps with more breakpoints set---over a portion of a program
11743that has already executed, in order to examine its execution in more
11744detail.
11745
c906108c 11746@c @group
6d2ebf8b 11747@node Signaling
79a6e687 11748@section Giving your Program a Signal
9c16f35a 11749@cindex deliver a signal to a program
c906108c
SS
11750
11751@table @code
11752@kindex signal
11753@item signal @var{signal}
11754Resume execution where your program stopped, but immediately give it the
11755signal @var{signal}. @var{signal} can be the name or the number of a
11756signal. For example, on many systems @code{signal 2} and @code{signal
11757SIGINT} are both ways of sending an interrupt signal.
11758
11759Alternatively, if @var{signal} is zero, continue execution without
11760giving a signal. This is useful when your program stopped on account of
11761a signal and would ordinary see the signal when resumed with the
11762@code{continue} command; @samp{signal 0} causes it to resume without a
11763signal.
11764
11765@code{signal} does not repeat when you press @key{RET} a second time
11766after executing the command.
11767@end table
11768@c @end group
11769
11770Invoking the @code{signal} command is not the same as invoking the
11771@code{kill} utility from the shell. Sending a signal with @code{kill}
11772causes @value{GDBN} to decide what to do with the signal depending on
11773the signal handling tables (@pxref{Signals}). The @code{signal} command
11774passes the signal directly to your program.
11775
c906108c 11776
6d2ebf8b 11777@node Returning
79a6e687 11778@section Returning from a Function
c906108c
SS
11779
11780@table @code
11781@cindex returning from a function
11782@kindex return
11783@item return
11784@itemx return @var{expression}
11785You can cancel execution of a function call with the @code{return}
11786command. If you give an
11787@var{expression} argument, its value is used as the function's return
11788value.
11789@end table
11790
11791When you use @code{return}, @value{GDBN} discards the selected stack frame
11792(and all frames within it). You can think of this as making the
11793discarded frame return prematurely. If you wish to specify a value to
11794be returned, give that value as the argument to @code{return}.
11795
11796This pops the selected stack frame (@pxref{Selection, ,Selecting a
79a6e687 11797Frame}), and any other frames inside of it, leaving its caller as the
c906108c
SS
11798innermost remaining frame. That frame becomes selected. The
11799specified value is stored in the registers used for returning values
11800of functions.
11801
11802The @code{return} command does not resume execution; it leaves the
11803program stopped in the state that would exist if the function had just
11804returned. In contrast, the @code{finish} command (@pxref{Continuing
79a6e687 11805and Stepping, ,Continuing and Stepping}) resumes execution until the
c906108c
SS
11806selected stack frame returns naturally.
11807
6d2ebf8b 11808@node Calling
79a6e687 11809@section Calling Program Functions
c906108c 11810
f8568604 11811@table @code
c906108c 11812@cindex calling functions
f8568604
EZ
11813@cindex inferior functions, calling
11814@item print @var{expr}
d3e8051b 11815Evaluate the expression @var{expr} and display the resulting value.
f8568604
EZ
11816@var{expr} may include calls to functions in the program being
11817debugged.
11818
c906108c 11819@kindex call
c906108c
SS
11820@item call @var{expr}
11821Evaluate the expression @var{expr} without displaying @code{void}
11822returned values.
c906108c
SS
11823
11824You can use this variant of the @code{print} command if you want to
f8568604
EZ
11825execute a function from your program that does not return anything
11826(a.k.a.@: @dfn{a void function}), but without cluttering the output
11827with @code{void} returned values that @value{GDBN} will otherwise
11828print. If the result is not void, it is printed and saved in the
11829value history.
11830@end table
11831
9c16f35a
EZ
11832It is possible for the function you call via the @code{print} or
11833@code{call} command to generate a signal (e.g., if there's a bug in
11834the function, or if you passed it incorrect arguments). What happens
11835in that case is controlled by the @code{set unwindonsignal} command.
11836
11837@table @code
11838@item set unwindonsignal
11839@kindex set unwindonsignal
11840@cindex unwind stack in called functions
11841@cindex call dummy stack unwinding
11842Set unwinding of the stack if a signal is received while in a function
11843that @value{GDBN} called in the program being debugged. If set to on,
11844@value{GDBN} unwinds the stack it created for the call and restores
11845the context to what it was before the call. If set to off (the
11846default), @value{GDBN} stops in the frame where the signal was
11847received.
11848
11849@item show unwindonsignal
11850@kindex show unwindonsignal
11851Show the current setting of stack unwinding in the functions called by
11852@value{GDBN}.
11853@end table
11854
f8568604
EZ
11855@cindex weak alias functions
11856Sometimes, a function you wish to call is actually a @dfn{weak alias}
11857for another function. In such case, @value{GDBN} might not pick up
11858the type information, including the types of the function arguments,
11859which causes @value{GDBN} to call the inferior function incorrectly.
11860As a result, the called function will function erroneously and may
11861even crash. A solution to that is to use the name of the aliased
11862function instead.
c906108c 11863
6d2ebf8b 11864@node Patching
79a6e687 11865@section Patching Programs
7a292a7a 11866
c906108c
SS
11867@cindex patching binaries
11868@cindex writing into executables
c906108c 11869@cindex writing into corefiles
c906108c 11870
7a292a7a
SS
11871By default, @value{GDBN} opens the file containing your program's
11872executable code (or the corefile) read-only. This prevents accidental
11873alterations to machine code; but it also prevents you from intentionally
11874patching your program's binary.
c906108c
SS
11875
11876If you'd like to be able to patch the binary, you can specify that
11877explicitly with the @code{set write} command. For example, you might
11878want to turn on internal debugging flags, or even to make emergency
11879repairs.
11880
11881@table @code
11882@kindex set write
11883@item set write on
11884@itemx set write off
7a292a7a
SS
11885If you specify @samp{set write on}, @value{GDBN} opens executable and
11886core files for both reading and writing; if you specify @samp{set write
c906108c
SS
11887off} (the default), @value{GDBN} opens them read-only.
11888
11889If you have already loaded a file, you must load it again (using the
7a292a7a
SS
11890@code{exec-file} or @code{core-file} command) after changing @code{set
11891write}, for your new setting to take effect.
c906108c
SS
11892
11893@item show write
11894@kindex show write
7a292a7a
SS
11895Display whether executable files and core files are opened for writing
11896as well as reading.
c906108c
SS
11897@end table
11898
6d2ebf8b 11899@node GDB Files
c906108c
SS
11900@chapter @value{GDBN} Files
11901
7a292a7a
SS
11902@value{GDBN} needs to know the file name of the program to be debugged,
11903both in order to read its symbol table and in order to start your
11904program. To debug a core dump of a previous run, you must also tell
11905@value{GDBN} the name of the core dump file.
c906108c
SS
11906
11907@menu
11908* Files:: Commands to specify files
5b5d99cf 11909* Separate Debug Files:: Debugging information in separate files
c906108c
SS
11910* Symbol Errors:: Errors reading symbol files
11911@end menu
11912
6d2ebf8b 11913@node Files
79a6e687 11914@section Commands to Specify Files
c906108c 11915
7a292a7a 11916@cindex symbol table
c906108c 11917@cindex core dump file
7a292a7a
SS
11918
11919You may want to specify executable and core dump file names. The usual
11920way to do this is at start-up time, using the arguments to
11921@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
11922Out of @value{GDBN}}).
c906108c
SS
11923
11924Occasionally it is necessary to change to a different file during a
397ca115
EZ
11925@value{GDBN} session. Or you may run @value{GDBN} and forget to
11926specify a file you want to use. Or you are debugging a remote target
79a6e687
BW
11927via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver}
11928Program}). In these situations the @value{GDBN} commands to specify
0869d01b 11929new files are useful.
c906108c
SS
11930
11931@table @code
11932@cindex executable file
11933@kindex file
11934@item file @var{filename}
11935Use @var{filename} as the program to be debugged. It is read for its
11936symbols and for the contents of pure memory. It is also the program
11937executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
11938directory and the file is not found in the @value{GDBN} working directory,
11939@value{GDBN} uses the environment variable @code{PATH} as a list of
11940directories to search, just as the shell does when looking for a program
11941to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
11942and your program, using the @code{path} command.
11943
fc8be69e
EZ
11944@cindex unlinked object files
11945@cindex patching object files
11946You can load unlinked object @file{.o} files into @value{GDBN} using
11947the @code{file} command. You will not be able to ``run'' an object
11948file, but you can disassemble functions and inspect variables. Also,
11949if the underlying BFD functionality supports it, you could use
11950@kbd{gdb -write} to patch object files using this technique. Note
11951that @value{GDBN} can neither interpret nor modify relocations in this
11952case, so branches and some initialized variables will appear to go to
11953the wrong place. But this feature is still handy from time to time.
11954
c906108c
SS
11955@item file
11956@code{file} with no argument makes @value{GDBN} discard any information it
11957has on both executable file and the symbol table.
11958
11959@kindex exec-file
11960@item exec-file @r{[} @var{filename} @r{]}
11961Specify that the program to be run (but not the symbol table) is found
11962in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
11963if necessary to locate your program. Omitting @var{filename} means to
11964discard information on the executable file.
11965
11966@kindex symbol-file
11967@item symbol-file @r{[} @var{filename} @r{]}
11968Read symbol table information from file @var{filename}. @code{PATH} is
11969searched when necessary. Use the @code{file} command to get both symbol
11970table and program to run from the same file.
11971
11972@code{symbol-file} with no argument clears out @value{GDBN} information on your
11973program's symbol table.
11974
ae5a43e0
DJ
11975The @code{symbol-file} command causes @value{GDBN} to forget the contents of
11976some breakpoints and auto-display expressions. This is because they may
11977contain pointers to the internal data recording symbols and data types,
11978which are part of the old symbol table data being discarded inside
11979@value{GDBN}.
c906108c
SS
11980
11981@code{symbol-file} does not repeat if you press @key{RET} again after
11982executing it once.
11983
11984When @value{GDBN} is configured for a particular environment, it
11985understands debugging information in whatever format is the standard
11986generated for that environment; you may use either a @sc{gnu} compiler, or
11987other compilers that adhere to the local conventions.
c906108c 11988Best results are usually obtained from @sc{gnu} compilers; for example,
e22ea452 11989using @code{@value{NGCC}} you can generate debugging information for
c906108c 11990optimized code.
c906108c
SS
11991
11992For most kinds of object files, with the exception of old SVR3 systems
11993using COFF, the @code{symbol-file} command does not normally read the
11994symbol table in full right away. Instead, it scans the symbol table
11995quickly to find which source files and which symbols are present. The
11996details are read later, one source file at a time, as they are needed.
11997
11998The purpose of this two-stage reading strategy is to make @value{GDBN}
11999start up faster. For the most part, it is invisible except for
12000occasional pauses while the symbol table details for a particular source
12001file are being read. (The @code{set verbose} command can turn these
12002pauses into messages if desired. @xref{Messages/Warnings, ,Optional
79a6e687 12003Warnings and Messages}.)
c906108c 12004
c906108c
SS
12005We have not implemented the two-stage strategy for COFF yet. When the
12006symbol table is stored in COFF format, @code{symbol-file} reads the
12007symbol table data in full right away. Note that ``stabs-in-COFF''
12008still does the two-stage strategy, since the debug info is actually
12009in stabs format.
12010
12011@kindex readnow
12012@cindex reading symbols immediately
12013@cindex symbols, reading immediately
a94ab193
EZ
12014@item symbol-file @var{filename} @r{[} -readnow @r{]}
12015@itemx file @var{filename} @r{[} -readnow @r{]}
c906108c
SS
12016You can override the @value{GDBN} two-stage strategy for reading symbol
12017tables by using the @samp{-readnow} option with any of the commands that
12018load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 12019entire symbol table available.
c906108c 12020
c906108c
SS
12021@c FIXME: for now no mention of directories, since this seems to be in
12022@c flux. 13mar1992 status is that in theory GDB would look either in
12023@c current dir or in same dir as myprog; but issues like competing
12024@c GDB's, or clutter in system dirs, mean that in practice right now
12025@c only current dir is used. FFish says maybe a special GDB hierarchy
12026@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
12027@c files.
12028
c906108c 12029@kindex core-file
09d4efe1 12030@item core-file @r{[}@var{filename}@r{]}
4644b6e3 12031@itemx core
c906108c
SS
12032Specify the whereabouts of a core dump file to be used as the ``contents
12033of memory''. Traditionally, core files contain only some parts of the
12034address space of the process that generated them; @value{GDBN} can access the
12035executable file itself for other parts.
12036
12037@code{core-file} with no argument specifies that no core file is
12038to be used.
12039
12040Note that the core file is ignored when your program is actually running
7a292a7a
SS
12041under @value{GDBN}. So, if you have been running your program and you
12042wish to debug a core file instead, you must kill the subprocess in which
12043the program is running. To do this, use the @code{kill} command
79a6e687 12044(@pxref{Kill Process, ,Killing the Child Process}).
c906108c 12045
c906108c
SS
12046@kindex add-symbol-file
12047@cindex dynamic linking
12048@item add-symbol-file @var{filename} @var{address}
a94ab193 12049@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]}
17d9d558 12050@itemx add-symbol-file @var{filename} @r{-s}@var{section} @var{address} @dots{}
96a2c332
SS
12051The @code{add-symbol-file} command reads additional symbol table
12052information from the file @var{filename}. You would use this command
12053when @var{filename} has been dynamically loaded (by some other means)
12054into the program that is running. @var{address} should be the memory
12055address at which the file has been loaded; @value{GDBN} cannot figure
d167840f
EZ
12056this out for itself. You can additionally specify an arbitrary number
12057of @samp{@r{-s}@var{section} @var{address}} pairs, to give an explicit
12058section name and base address for that section. You can specify any
12059@var{address} as an expression.
c906108c
SS
12060
12061The symbol table of the file @var{filename} is added to the symbol table
12062originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
12063@code{add-symbol-file} command any number of times; the new symbol data
12064thus read keeps adding to the old. To discard all old symbol data
12065instead, use the @code{symbol-file} command without any arguments.
c906108c 12066
17d9d558
JB
12067@cindex relocatable object files, reading symbols from
12068@cindex object files, relocatable, reading symbols from
12069@cindex reading symbols from relocatable object files
12070@cindex symbols, reading from relocatable object files
12071@cindex @file{.o} files, reading symbols from
12072Although @var{filename} is typically a shared library file, an
12073executable file, or some other object file which has been fully
12074relocated for loading into a process, you can also load symbolic
12075information from relocatable @file{.o} files, as long as:
12076
12077@itemize @bullet
12078@item
12079the file's symbolic information refers only to linker symbols defined in
12080that file, not to symbols defined by other object files,
12081@item
12082every section the file's symbolic information refers to has actually
12083been loaded into the inferior, as it appears in the file, and
12084@item
12085you can determine the address at which every section was loaded, and
12086provide these to the @code{add-symbol-file} command.
12087@end itemize
12088
12089@noindent
12090Some embedded operating systems, like Sun Chorus and VxWorks, can load
12091relocatable files into an already running program; such systems
12092typically make the requirements above easy to meet. However, it's
12093important to recognize that many native systems use complex link
49efadf5 12094procedures (@code{.linkonce} section factoring and C@t{++} constructor table
17d9d558
JB
12095assembly, for example) that make the requirements difficult to meet. In
12096general, one cannot assume that using @code{add-symbol-file} to read a
12097relocatable object file's symbolic information will have the same effect
12098as linking the relocatable object file into the program in the normal
12099way.
12100
c906108c
SS
12101@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
12102
c45da7e6
EZ
12103@kindex add-symbol-file-from-memory
12104@cindex @code{syscall DSO}
12105@cindex load symbols from memory
12106@item add-symbol-file-from-memory @var{address}
12107Load symbols from the given @var{address} in a dynamically loaded
12108object file whose image is mapped directly into the inferior's memory.
12109For example, the Linux kernel maps a @code{syscall DSO} into each
12110process's address space; this DSO provides kernel-specific code for
12111some system calls. The argument can be any expression whose
12112evaluation yields the address of the file's shared object file header.
12113For this command to work, you must have used @code{symbol-file} or
12114@code{exec-file} commands in advance.
12115
09d4efe1
EZ
12116@kindex add-shared-symbol-files
12117@kindex assf
12118@item add-shared-symbol-files @var{library-file}
12119@itemx assf @var{library-file}
12120The @code{add-shared-symbol-files} command can currently be used only
12121in the Cygwin build of @value{GDBN} on MS-Windows OS, where it is an
12122alias for the @code{dll-symbols} command (@pxref{Cygwin Native}).
12123@value{GDBN} automatically looks for shared libraries, however if
12124@value{GDBN} does not find yours, you can invoke
12125@code{add-shared-symbol-files}. It takes one argument: the shared
12126library's file name. @code{assf} is a shorthand alias for
12127@code{add-shared-symbol-files}.
c906108c 12128
c906108c 12129@kindex section
09d4efe1
EZ
12130@item section @var{section} @var{addr}
12131The @code{section} command changes the base address of the named
12132@var{section} of the exec file to @var{addr}. This can be used if the
12133exec file does not contain section addresses, (such as in the
12134@code{a.out} format), or when the addresses specified in the file
12135itself are wrong. Each section must be changed separately. The
12136@code{info files} command, described below, lists all the sections and
12137their addresses.
c906108c
SS
12138
12139@kindex info files
12140@kindex info target
12141@item info files
12142@itemx info target
7a292a7a
SS
12143@code{info files} and @code{info target} are synonymous; both print the
12144current target (@pxref{Targets, ,Specifying a Debugging Target}),
12145including the names of the executable and core dump files currently in
12146use by @value{GDBN}, and the files from which symbols were loaded. The
12147command @code{help target} lists all possible targets rather than
12148current ones.
12149
fe95c787
MS
12150@kindex maint info sections
12151@item maint info sections
12152Another command that can give you extra information about program sections
12153is @code{maint info sections}. In addition to the section information
12154displayed by @code{info files}, this command displays the flags and file
12155offset of each section in the executable and core dump files. In addition,
12156@code{maint info sections} provides the following command options (which
12157may be arbitrarily combined):
12158
12159@table @code
12160@item ALLOBJ
12161Display sections for all loaded object files, including shared libraries.
12162@item @var{sections}
6600abed 12163Display info only for named @var{sections}.
fe95c787
MS
12164@item @var{section-flags}
12165Display info only for sections for which @var{section-flags} are true.
12166The section flags that @value{GDBN} currently knows about are:
12167@table @code
12168@item ALLOC
12169Section will have space allocated in the process when loaded.
12170Set for all sections except those containing debug information.
12171@item LOAD
12172Section will be loaded from the file into the child process memory.
12173Set for pre-initialized code and data, clear for @code{.bss} sections.
12174@item RELOC
12175Section needs to be relocated before loading.
12176@item READONLY
12177Section cannot be modified by the child process.
12178@item CODE
12179Section contains executable code only.
6600abed 12180@item DATA
fe95c787
MS
12181Section contains data only (no executable code).
12182@item ROM
12183Section will reside in ROM.
12184@item CONSTRUCTOR
12185Section contains data for constructor/destructor lists.
12186@item HAS_CONTENTS
12187Section is not empty.
12188@item NEVER_LOAD
12189An instruction to the linker to not output the section.
12190@item COFF_SHARED_LIBRARY
12191A notification to the linker that the section contains
12192COFF shared library information.
12193@item IS_COMMON
12194Section contains common symbols.
12195@end table
12196@end table
6763aef9 12197@kindex set trust-readonly-sections
9c16f35a 12198@cindex read-only sections
6763aef9
MS
12199@item set trust-readonly-sections on
12200Tell @value{GDBN} that readonly sections in your object file
6ca652b0 12201really are read-only (i.e.@: that their contents will not change).
6763aef9
MS
12202In that case, @value{GDBN} can fetch values from these sections
12203out of the object file, rather than from the target program.
12204For some targets (notably embedded ones), this can be a significant
12205enhancement to debugging performance.
12206
12207The default is off.
12208
12209@item set trust-readonly-sections off
15110bc3 12210Tell @value{GDBN} not to trust readonly sections. This means that
6763aef9
MS
12211the contents of the section might change while the program is running,
12212and must therefore be fetched from the target when needed.
9c16f35a
EZ
12213
12214@item show trust-readonly-sections
12215Show the current setting of trusting readonly sections.
c906108c
SS
12216@end table
12217
12218All file-specifying commands allow both absolute and relative file names
12219as arguments. @value{GDBN} always converts the file name to an absolute file
12220name and remembers it that way.
12221
c906108c 12222@cindex shared libraries
9cceb671
DJ
12223@anchor{Shared Libraries}
12224@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix,
9c16f35a 12225and IBM RS/6000 AIX shared libraries.
53a5351d 12226
9cceb671
DJ
12227On MS-Windows @value{GDBN} must be linked with the Expat library to support
12228shared libraries. @xref{Expat}.
12229
c906108c
SS
12230@value{GDBN} automatically loads symbol definitions from shared libraries
12231when you use the @code{run} command, or when you examine a core file.
12232(Before you issue the @code{run} command, @value{GDBN} does not understand
12233references to a function in a shared library, however---unless you are
12234debugging a core file).
53a5351d
JM
12235
12236On HP-UX, if the program loads a library explicitly, @value{GDBN}
12237automatically loads the symbols at the time of the @code{shl_load} call.
12238
c906108c
SS
12239@c FIXME: some @value{GDBN} release may permit some refs to undef
12240@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
12241@c FIXME...lib; check this from time to time when updating manual
12242
b7209cb4
FF
12243There are times, however, when you may wish to not automatically load
12244symbol definitions from shared libraries, such as when they are
12245particularly large or there are many of them.
12246
12247To control the automatic loading of shared library symbols, use the
12248commands:
12249
12250@table @code
12251@kindex set auto-solib-add
12252@item set auto-solib-add @var{mode}
12253If @var{mode} is @code{on}, symbols from all shared object libraries
12254will be loaded automatically when the inferior begins execution, you
12255attach to an independently started inferior, or when the dynamic linker
12256informs @value{GDBN} that a new library has been loaded. If @var{mode}
12257is @code{off}, symbols must be loaded manually, using the
12258@code{sharedlibrary} command. The default value is @code{on}.
12259
dcaf7c2c
EZ
12260@cindex memory used for symbol tables
12261If your program uses lots of shared libraries with debug info that
12262takes large amounts of memory, you can decrease the @value{GDBN}
12263memory footprint by preventing it from automatically loading the
12264symbols from shared libraries. To that end, type @kbd{set
12265auto-solib-add off} before running the inferior, then load each
12266library whose debug symbols you do need with @kbd{sharedlibrary
d3e8051b 12267@var{regexp}}, where @var{regexp} is a regular expression that matches
dcaf7c2c
EZ
12268the libraries whose symbols you want to be loaded.
12269
b7209cb4
FF
12270@kindex show auto-solib-add
12271@item show auto-solib-add
12272Display the current autoloading mode.
12273@end table
12274
c45da7e6 12275@cindex load shared library
b7209cb4
FF
12276To explicitly load shared library symbols, use the @code{sharedlibrary}
12277command:
12278
c906108c
SS
12279@table @code
12280@kindex info sharedlibrary
12281@kindex info share
12282@item info share
12283@itemx info sharedlibrary
12284Print the names of the shared libraries which are currently loaded.
12285
12286@kindex sharedlibrary
12287@kindex share
12288@item sharedlibrary @var{regex}
12289@itemx share @var{regex}
c906108c
SS
12290Load shared object library symbols for files matching a
12291Unix regular expression.
12292As with files loaded automatically, it only loads shared libraries
12293required by your program for a core file or after typing @code{run}. If
12294@var{regex} is omitted all shared libraries required by your program are
12295loaded.
c45da7e6
EZ
12296
12297@item nosharedlibrary
12298@kindex nosharedlibrary
12299@cindex unload symbols from shared libraries
12300Unload all shared object library symbols. This discards all symbols
12301that have been loaded from all shared libraries. Symbols from shared
12302libraries that were loaded by explicit user requests are not
12303discarded.
c906108c
SS
12304@end table
12305
721c2651
EZ
12306Sometimes you may wish that @value{GDBN} stops and gives you control
12307when any of shared library events happen. Use the @code{set
12308stop-on-solib-events} command for this:
12309
12310@table @code
12311@item set stop-on-solib-events
12312@kindex set stop-on-solib-events
12313This command controls whether @value{GDBN} should give you control
12314when the dynamic linker notifies it about some shared library event.
12315The most common event of interest is loading or unloading of a new
12316shared library.
12317
12318@item show stop-on-solib-events
12319@kindex show stop-on-solib-events
12320Show whether @value{GDBN} stops and gives you control when shared
12321library events happen.
12322@end table
12323
f5ebfba0
DJ
12324Shared libraries are also supported in many cross or remote debugging
12325configurations. A copy of the target's libraries need to be present on the
12326host system; they need to be the same as the target libraries, although the
12327copies on the target can be stripped as long as the copies on the host are
12328not.
12329
59b7b46f
EZ
12330@cindex where to look for shared libraries
12331For remote debugging, you need to tell @value{GDBN} where the target
12332libraries are, so that it can load the correct copies---otherwise, it
12333may try to load the host's libraries. @value{GDBN} has two variables
12334to specify the search directories for target libraries.
f5ebfba0
DJ
12335
12336@table @code
59b7b46f 12337@cindex prefix for shared library file names
f822c95b 12338@cindex system root, alternate
f5ebfba0 12339@kindex set solib-absolute-prefix
f822c95b
DJ
12340@kindex set sysroot
12341@item set sysroot @var{path}
12342Use @var{path} as the system root for the program being debugged. Any
12343absolute shared library paths will be prefixed with @var{path}; many
12344runtime loaders store the absolute paths to the shared library in the
12345target program's memory. If you use @code{set sysroot} to find shared
12346libraries, they need to be laid out in the same way that they are on
12347the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy
12348under @var{path}.
12349
12350The @code{set solib-absolute-prefix} command is an alias for @code{set
12351sysroot}.
12352
12353@cindex default system root
59b7b46f 12354@cindex @samp{--with-sysroot}
f822c95b
DJ
12355You can set the default system root by using the configure-time
12356@samp{--with-sysroot} option. If the system root is inside
12357@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
12358@samp{--exec-prefix}), then the default system root will be updated
12359automatically if the installed @value{GDBN} is moved to a new
12360location.
12361
12362@kindex show sysroot
12363@item show sysroot
f5ebfba0
DJ
12364Display the current shared library prefix.
12365
12366@kindex set solib-search-path
12367@item set solib-search-path @var{path}
f822c95b
DJ
12368If this variable is set, @var{path} is a colon-separated list of
12369directories to search for shared libraries. @samp{solib-search-path}
12370is used after @samp{sysroot} fails to locate the library, or if the
12371path to the library is relative instead of absolute. If you want to
12372use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set
d3e8051b 12373@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from
f822c95b 12374finding your host's libraries. @samp{sysroot} is preferred; setting
d3e8051b 12375it to a nonexistent directory may interfere with automatic loading
f822c95b 12376of shared library symbols.
f5ebfba0
DJ
12377
12378@kindex show solib-search-path
12379@item show solib-search-path
12380Display the current shared library search path.
12381@end table
12382
5b5d99cf
JB
12383
12384@node Separate Debug Files
12385@section Debugging Information in Separate Files
12386@cindex separate debugging information files
12387@cindex debugging information in separate files
12388@cindex @file{.debug} subdirectories
12389@cindex debugging information directory, global
12390@cindex global debugging information directory
c7e83d54
EZ
12391@cindex build ID, and separate debugging files
12392@cindex @file{.build-id} directory
5b5d99cf
JB
12393
12394@value{GDBN} allows you to put a program's debugging information in a
12395file separate from the executable itself, in a way that allows
12396@value{GDBN} to find and load the debugging information automatically.
c7e83d54
EZ
12397Since debugging information can be very large---sometimes larger
12398than the executable code itself---some systems distribute debugging
5b5d99cf
JB
12399information for their executables in separate files, which users can
12400install only when they need to debug a problem.
12401
c7e83d54
EZ
12402@value{GDBN} supports two ways of specifying the separate debug info
12403file:
5b5d99cf
JB
12404
12405@itemize @bullet
12406@item
c7e83d54
EZ
12407The executable contains a @dfn{debug link} that specifies the name of
12408the separate debug info file. The separate debug file's name is
12409usually @file{@var{executable}.debug}, where @var{executable} is the
12410name of the corresponding executable file without leading directories
12411(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the
12412debug link specifies a CRC32 checksum for the debug file, which
12413@value{GDBN} uses to validate that the executable and the debug file
12414came from the same build.
12415
12416@item
7e27a47a 12417The executable contains a @dfn{build ID}, a unique bit string that is
c7e83d54 12418also present in the corresponding debug info file. (This is supported
7e27a47a
EZ
12419only on some operating systems, notably those which use the ELF format
12420for binary files and the @sc{gnu} Binutils.) For more details about
12421this feature, see the description of the @option{--build-id}
12422command-line option in @ref{Options, , Command Line Options, ld.info,
12423The GNU Linker}. The debug info file's name is not specified
12424explicitly by the build ID, but can be computed from the build ID, see
12425below.
d3750b24
JK
12426@end itemize
12427
c7e83d54
EZ
12428Depending on the way the debug info file is specified, @value{GDBN}
12429uses two different methods of looking for the debug file:
d3750b24
JK
12430
12431@itemize @bullet
12432@item
c7e83d54
EZ
12433For the ``debug link'' method, @value{GDBN} looks up the named file in
12434the directory of the executable file, then in a subdirectory of that
12435directory named @file{.debug}, and finally under the global debug
12436directory, in a subdirectory whose name is identical to the leading
12437directories of the executable's absolute file name.
12438
12439@item
83f83d7f 12440For the ``build ID'' method, @value{GDBN} looks in the
c7e83d54
EZ
12441@file{.build-id} subdirectory of the global debug directory for a file
12442named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the
7e27a47a
EZ
12443first 2 hex characters of the build ID bit string, and @var{nnnnnnnn}
12444are the rest of the bit string. (Real build ID strings are 32 or more
12445hex characters, not 10.)
c7e83d54
EZ
12446@end itemize
12447
12448So, for example, suppose you ask @value{GDBN} to debug
7e27a47a
EZ
12449@file{/usr/bin/ls}, which has a debug link that specifies the
12450file @file{ls.debug}, and a build ID whose value in hex is
c7e83d54
EZ
12451@code{abcdef1234}. If the global debug directory is
12452@file{/usr/lib/debug}, then @value{GDBN} will look for the following
12453debug information files, in the indicated order:
12454
12455@itemize @minus
12456@item
12457@file{/usr/lib/debug/.build-id/ab/cdef1234.debug}
d3750b24 12458@item
c7e83d54 12459@file{/usr/bin/ls.debug}
5b5d99cf 12460@item
c7e83d54 12461@file{/usr/bin/.debug/ls.debug}
5b5d99cf 12462@item
c7e83d54 12463@file{/usr/lib/debug/usr/bin/ls.debug}.
5b5d99cf 12464@end itemize
5b5d99cf
JB
12465
12466You can set the global debugging info directory's name, and view the
12467name @value{GDBN} is currently using.
12468
12469@table @code
12470
12471@kindex set debug-file-directory
12472@item set debug-file-directory @var{directory}
12473Set the directory which @value{GDBN} searches for separate debugging
12474information files to @var{directory}.
12475
12476@kindex show debug-file-directory
12477@item show debug-file-directory
12478Show the directory @value{GDBN} searches for separate debugging
12479information files.
12480
12481@end table
12482
12483@cindex @code{.gnu_debuglink} sections
c7e83d54 12484@cindex debug link sections
5b5d99cf
JB
12485A debug link is a special section of the executable file named
12486@code{.gnu_debuglink}. The section must contain:
12487
12488@itemize
12489@item
12490A filename, with any leading directory components removed, followed by
12491a zero byte,
12492@item
12493zero to three bytes of padding, as needed to reach the next four-byte
12494boundary within the section, and
12495@item
12496a four-byte CRC checksum, stored in the same endianness used for the
12497executable file itself. The checksum is computed on the debugging
12498information file's full contents by the function given below, passing
12499zero as the @var{crc} argument.
12500@end itemize
12501
12502Any executable file format can carry a debug link, as long as it can
12503contain a section named @code{.gnu_debuglink} with the contents
12504described above.
12505
d3750b24 12506@cindex @code{.note.gnu.build-id} sections
c7e83d54 12507@cindex build ID sections
7e27a47a
EZ
12508The build ID is a special section in the executable file (and in other
12509ELF binary files that @value{GDBN} may consider). This section is
12510often named @code{.note.gnu.build-id}, but that name is not mandatory.
12511It contains unique identification for the built files---the ID remains
12512the same across multiple builds of the same build tree. The default
12513algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
12514content for the build ID string. The same section with an identical
12515value is present in the original built binary with symbols, in its
12516stripped variant, and in the separate debugging information file.
d3750b24 12517
5b5d99cf
JB
12518The debugging information file itself should be an ordinary
12519executable, containing a full set of linker symbols, sections, and
12520debugging information. The sections of the debugging information file
c7e83d54
EZ
12521should have the same names, addresses, and sizes as the original file,
12522but they need not contain any data---much like a @code{.bss} section
5b5d99cf
JB
12523in an ordinary executable.
12524
7e27a47a 12525The @sc{gnu} binary utilities (Binutils) package includes the
c7e83d54
EZ
12526@samp{objcopy} utility that can produce
12527the separated executable / debugging information file pairs using the
12528following commands:
12529
12530@smallexample
12531@kbd{objcopy --only-keep-debug foo foo.debug}
12532@kbd{strip -g foo}
c7e83d54
EZ
12533@end smallexample
12534
12535@noindent
12536These commands remove the debugging
83f83d7f
JK
12537information from the executable file @file{foo} and place it in the file
12538@file{foo.debug}. You can use the first, second or both methods to link the
12539two files:
12540
12541@itemize @bullet
12542@item
12543The debug link method needs the following additional command to also leave
12544behind a debug link in @file{foo}:
12545
12546@smallexample
12547@kbd{objcopy --add-gnu-debuglink=foo.debug foo}
12548@end smallexample
12549
12550Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains
d3750b24 12551a version of the @code{strip} command such that the command @kbd{strip foo -f
83f83d7f
JK
12552foo.debug} has the same functionality as the two @code{objcopy} commands and
12553the @code{ln -s} command above, together.
12554
12555@item
12556Build ID gets embedded into the main executable using @code{ld --build-id} or
12557the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus
12558compatibility fixes for debug files separation are present in @sc{gnu} binary
7e27a47a 12559utilities (Binutils) package since version 2.18.
83f83d7f
JK
12560@end itemize
12561
12562@noindent
d3750b24 12563
c7e83d54
EZ
12564Since there are many different ways to compute CRC's for the debug
12565link (different polynomials, reversals, byte ordering, etc.), the
12566simplest way to describe the CRC used in @code{.gnu_debuglink}
12567sections is to give the complete code for a function that computes it:
5b5d99cf 12568
4644b6e3 12569@kindex gnu_debuglink_crc32
5b5d99cf
JB
12570@smallexample
12571unsigned long
12572gnu_debuglink_crc32 (unsigned long crc,
12573 unsigned char *buf, size_t len)
12574@{
12575 static const unsigned long crc32_table[256] =
12576 @{
12577 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
12578 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
12579 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
12580 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
12581 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
12582 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
12583 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
12584 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
12585 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
12586 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
12587 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
12588 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
12589 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
12590 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
12591 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
12592 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
12593 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
12594 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
12595 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
12596 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
12597 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
12598 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
12599 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
12600 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
12601 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
12602 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
12603 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
12604 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
12605 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
12606 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
12607 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
12608 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
12609 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
12610 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
12611 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
12612 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
12613 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
12614 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
12615 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
12616 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
12617 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
12618 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
12619 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
12620 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
12621 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
12622 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
12623 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
12624 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
12625 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
12626 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
12627 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
12628 0x2d02ef8d
12629 @};
12630 unsigned char *end;
12631
12632 crc = ~crc & 0xffffffff;
12633 for (end = buf + len; buf < end; ++buf)
12634 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
e7a3abfc 12635 return ~crc & 0xffffffff;
5b5d99cf
JB
12636@}
12637@end smallexample
12638
c7e83d54
EZ
12639@noindent
12640This computation does not apply to the ``build ID'' method.
12641
5b5d99cf 12642
6d2ebf8b 12643@node Symbol Errors
79a6e687 12644@section Errors Reading Symbol Files
c906108c
SS
12645
12646While reading a symbol file, @value{GDBN} occasionally encounters problems,
12647such as symbol types it does not recognize, or known bugs in compiler
12648output. By default, @value{GDBN} does not notify you of such problems, since
12649they are relatively common and primarily of interest to people
12650debugging compilers. If you are interested in seeing information
12651about ill-constructed symbol tables, you can either ask @value{GDBN} to print
12652only one message about each such type of problem, no matter how many
12653times the problem occurs; or you can ask @value{GDBN} to print more messages,
12654to see how many times the problems occur, with the @code{set
79a6e687
BW
12655complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and
12656Messages}).
c906108c
SS
12657
12658The messages currently printed, and their meanings, include:
12659
12660@table @code
12661@item inner block not inside outer block in @var{symbol}
12662
12663The symbol information shows where symbol scopes begin and end
12664(such as at the start of a function or a block of statements). This
12665error indicates that an inner scope block is not fully contained
12666in its outer scope blocks.
12667
12668@value{GDBN} circumvents the problem by treating the inner block as if it had
12669the same scope as the outer block. In the error message, @var{symbol}
12670may be shown as ``@code{(don't know)}'' if the outer block is not a
12671function.
12672
12673@item block at @var{address} out of order
12674
12675The symbol information for symbol scope blocks should occur in
12676order of increasing addresses. This error indicates that it does not
12677do so.
12678
12679@value{GDBN} does not circumvent this problem, and has trouble
12680locating symbols in the source file whose symbols it is reading. (You
12681can often determine what source file is affected by specifying
79a6e687
BW
12682@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and
12683Messages}.)
c906108c
SS
12684
12685@item bad block start address patched
12686
12687The symbol information for a symbol scope block has a start address
12688smaller than the address of the preceding source line. This is known
12689to occur in the SunOS 4.1.1 (and earlier) C compiler.
12690
12691@value{GDBN} circumvents the problem by treating the symbol scope block as
12692starting on the previous source line.
12693
12694@item bad string table offset in symbol @var{n}
12695
12696@cindex foo
12697Symbol number @var{n} contains a pointer into the string table which is
12698larger than the size of the string table.
12699
12700@value{GDBN} circumvents the problem by considering the symbol to have the
12701name @code{foo}, which may cause other problems if many symbols end up
12702with this name.
12703
12704@item unknown symbol type @code{0x@var{nn}}
12705
7a292a7a
SS
12706The symbol information contains new data types that @value{GDBN} does
12707not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 12708uncomprehended information, in hexadecimal.
c906108c 12709
7a292a7a
SS
12710@value{GDBN} circumvents the error by ignoring this symbol information.
12711This usually allows you to debug your program, though certain symbols
c906108c 12712are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
12713debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
12714on @code{complain}, then go up to the function @code{read_dbx_symtab}
12715and examine @code{*bufp} to see the symbol.
c906108c
SS
12716
12717@item stub type has NULL name
c906108c 12718
7a292a7a 12719@value{GDBN} could not find the full definition for a struct or class.
c906108c 12720
7a292a7a 12721@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 12722The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
12723information that recent versions of the compiler should have output for
12724it.
c906108c
SS
12725
12726@item info mismatch between compiler and debugger
12727
12728@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 12729
c906108c
SS
12730@end table
12731
6d2ebf8b 12732@node Targets
c906108c 12733@chapter Specifying a Debugging Target
7a292a7a 12734
c906108c 12735@cindex debugging target
c906108c 12736A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
12737
12738Often, @value{GDBN} runs in the same host environment as your program;
12739in that case, the debugging target is specified as a side effect when
12740you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
12741flexibility---for example, running @value{GDBN} on a physically separate
12742host, or controlling a standalone system over a serial port or a
53a5351d
JM
12743realtime system over a TCP/IP connection---you can use the @code{target}
12744command to specify one of the target types configured for @value{GDBN}
79a6e687 12745(@pxref{Target Commands, ,Commands for Managing Targets}).
c906108c 12746
a8f24a35
EZ
12747@cindex target architecture
12748It is possible to build @value{GDBN} for several different @dfn{target
12749architectures}. When @value{GDBN} is built like that, you can choose
12750one of the available architectures with the @kbd{set architecture}
12751command.
12752
12753@table @code
12754@kindex set architecture
12755@kindex show architecture
12756@item set architecture @var{arch}
12757This command sets the current target architecture to @var{arch}. The
12758value of @var{arch} can be @code{"auto"}, in addition to one of the
12759supported architectures.
12760
12761@item show architecture
12762Show the current target architecture.
9c16f35a
EZ
12763
12764@item set processor
12765@itemx processor
12766@kindex set processor
12767@kindex show processor
12768These are alias commands for, respectively, @code{set architecture}
12769and @code{show architecture}.
a8f24a35
EZ
12770@end table
12771
c906108c
SS
12772@menu
12773* Active Targets:: Active targets
12774* Target Commands:: Commands for managing targets
c906108c 12775* Byte Order:: Choosing target byte order
c906108c
SS
12776@end menu
12777
6d2ebf8b 12778@node Active Targets
79a6e687 12779@section Active Targets
7a292a7a 12780
c906108c
SS
12781@cindex stacking targets
12782@cindex active targets
12783@cindex multiple targets
12784
c906108c 12785There are three classes of targets: processes, core files, and
7a292a7a
SS
12786executable files. @value{GDBN} can work concurrently on up to three
12787active targets, one in each class. This allows you to (for example)
12788start a process and inspect its activity without abandoning your work on
12789a core file.
c906108c
SS
12790
12791For example, if you execute @samp{gdb a.out}, then the executable file
12792@code{a.out} is the only active target. If you designate a core file as
12793well---presumably from a prior run that crashed and coredumped---then
12794@value{GDBN} has two active targets and uses them in tandem, looking
12795first in the corefile target, then in the executable file, to satisfy
12796requests for memory addresses. (Typically, these two classes of target
12797are complementary, since core files contain only a program's
12798read-write memory---variables and so on---plus machine status, while
12799executable files contain only the program text and initialized data.)
c906108c
SS
12800
12801When you type @code{run}, your executable file becomes an active process
7a292a7a
SS
12802target as well. When a process target is active, all @value{GDBN}
12803commands requesting memory addresses refer to that target; addresses in
12804an active core file or executable file target are obscured while the
12805process target is active.
c906108c 12806
7a292a7a 12807Use the @code{core-file} and @code{exec-file} commands to select a new
79a6e687
BW
12808core file or executable target (@pxref{Files, ,Commands to Specify
12809Files}). To specify as a target a process that is already running, use
12810the @code{attach} command (@pxref{Attach, ,Debugging an Already-running
12811Process}).
c906108c 12812
6d2ebf8b 12813@node Target Commands
79a6e687 12814@section Commands for Managing Targets
c906108c
SS
12815
12816@table @code
12817@item target @var{type} @var{parameters}
7a292a7a
SS
12818Connects the @value{GDBN} host environment to a target machine or
12819process. A target is typically a protocol for talking to debugging
12820facilities. You use the argument @var{type} to specify the type or
12821protocol of the target machine.
c906108c
SS
12822
12823Further @var{parameters} are interpreted by the target protocol, but
12824typically include things like device names or host names to connect
12825with, process numbers, and baud rates.
c906108c
SS
12826
12827The @code{target} command does not repeat if you press @key{RET} again
12828after executing the command.
12829
12830@kindex help target
12831@item help target
12832Displays the names of all targets available. To display targets
12833currently selected, use either @code{info target} or @code{info files}
79a6e687 12834(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
12835
12836@item help target @var{name}
12837Describe a particular target, including any parameters necessary to
12838select it.
12839
12840@kindex set gnutarget
12841@item set gnutarget @var{args}
5d161b24 12842@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 12843knows whether it is reading an @dfn{executable},
5d161b24
DB
12844a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
12845with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
12846with @code{gnutarget} the @code{target} refers to a program, not a machine.
12847
d4f3574e 12848@quotation
c906108c
SS
12849@emph{Warning:} To specify a file format with @code{set gnutarget},
12850you must know the actual BFD name.
d4f3574e 12851@end quotation
c906108c 12852
d4f3574e 12853@noindent
79a6e687 12854@xref{Files, , Commands to Specify Files}.
c906108c 12855
5d161b24 12856@kindex show gnutarget
c906108c
SS
12857@item show gnutarget
12858Use the @code{show gnutarget} command to display what file format
12859@code{gnutarget} is set to read. If you have not set @code{gnutarget},
12860@value{GDBN} will determine the file format for each file automatically,
12861and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
12862@end table
12863
4644b6e3 12864@cindex common targets
c906108c
SS
12865Here are some common targets (available, or not, depending on the GDB
12866configuration):
c906108c
SS
12867
12868@table @code
4644b6e3 12869@kindex target
c906108c 12870@item target exec @var{program}
4644b6e3 12871@cindex executable file target
c906108c
SS
12872An executable file. @samp{target exec @var{program}} is the same as
12873@samp{exec-file @var{program}}.
12874
c906108c 12875@item target core @var{filename}
4644b6e3 12876@cindex core dump file target
c906108c
SS
12877A core dump file. @samp{target core @var{filename}} is the same as
12878@samp{core-file @var{filename}}.
c906108c 12879
1a10341b 12880@item target remote @var{medium}
4644b6e3 12881@cindex remote target
1a10341b
JB
12882A remote system connected to @value{GDBN} via a serial line or network
12883connection. This command tells @value{GDBN} to use its own remote
12884protocol over @var{medium} for debugging. @xref{Remote Debugging}.
12885
12886For example, if you have a board connected to @file{/dev/ttya} on the
12887machine running @value{GDBN}, you could say:
12888
12889@smallexample
12890target remote /dev/ttya
12891@end smallexample
12892
12893@code{target remote} supports the @code{load} command. This is only
12894useful if you have some other way of getting the stub to the target
12895system, and you can put it somewhere in memory where it won't get
12896clobbered by the download.
c906108c 12897
c906108c 12898@item target sim
4644b6e3 12899@cindex built-in simulator target
2df3850c 12900Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213 12901In general,
474c8240 12902@smallexample
104c1213
JM
12903 target sim
12904 load
12905 run
474c8240 12906@end smallexample
d4f3574e 12907@noindent
104c1213 12908works; however, you cannot assume that a specific memory map, device
d4f3574e 12909drivers, or even basic I/O is available, although some simulators do
104c1213
JM
12910provide these. For info about any processor-specific simulator details,
12911see the appropriate section in @ref{Embedded Processors, ,Embedded
12912Processors}.
12913
c906108c
SS
12914@end table
12915
104c1213 12916Some configurations may include these targets as well:
c906108c
SS
12917
12918@table @code
12919
c906108c 12920@item target nrom @var{dev}
4644b6e3 12921@cindex NetROM ROM emulator target
c906108c
SS
12922NetROM ROM emulator. This target only supports downloading.
12923
c906108c
SS
12924@end table
12925
5d161b24 12926Different targets are available on different configurations of @value{GDBN};
c906108c 12927your configuration may have more or fewer targets.
c906108c 12928
721c2651
EZ
12929Many remote targets require you to download the executable's code once
12930you've successfully established a connection. You may wish to control
3d00d119
DJ
12931various aspects of this process.
12932
12933@table @code
721c2651
EZ
12934
12935@item set hash
12936@kindex set hash@r{, for remote monitors}
12937@cindex hash mark while downloading
12938This command controls whether a hash mark @samp{#} is displayed while
12939downloading a file to the remote monitor. If on, a hash mark is
12940displayed after each S-record is successfully downloaded to the
12941monitor.
12942
12943@item show hash
12944@kindex show hash@r{, for remote monitors}
12945Show the current status of displaying the hash mark.
12946
12947@item set debug monitor
12948@kindex set debug monitor
12949@cindex display remote monitor communications
12950Enable or disable display of communications messages between
12951@value{GDBN} and the remote monitor.
12952
12953@item show debug monitor
12954@kindex show debug monitor
12955Show the current status of displaying communications between
12956@value{GDBN} and the remote monitor.
a8f24a35 12957@end table
c906108c
SS
12958
12959@table @code
12960
12961@kindex load @var{filename}
12962@item load @var{filename}
8edfe269 12963@anchor{load}
c906108c
SS
12964Depending on what remote debugging facilities are configured into
12965@value{GDBN}, the @code{load} command may be available. Where it exists, it
12966is meant to make @var{filename} (an executable) available for debugging
12967on the remote system---by downloading, or dynamic linking, for example.
12968@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
12969the @code{add-symbol-file} command.
12970
12971If your @value{GDBN} does not have a @code{load} command, attempting to
12972execute it gets the error message ``@code{You can't do that when your
12973target is @dots{}}''
c906108c
SS
12974
12975The file is loaded at whatever address is specified in the executable.
12976For some object file formats, you can specify the load address when you
12977link the program; for other formats, like a.out, the object file format
12978specifies a fixed address.
12979@c FIXME! This would be a good place for an xref to the GNU linker doc.
12980
68437a39
DJ
12981Depending on the remote side capabilities, @value{GDBN} may be able to
12982load programs into flash memory.
12983
c906108c
SS
12984@code{load} does not repeat if you press @key{RET} again after using it.
12985@end table
12986
6d2ebf8b 12987@node Byte Order
79a6e687 12988@section Choosing Target Byte Order
7a292a7a 12989
c906108c
SS
12990@cindex choosing target byte order
12991@cindex target byte order
c906108c 12992
172c2a43 12993Some types of processors, such as the MIPS, PowerPC, and Renesas SH,
c906108c
SS
12994offer the ability to run either big-endian or little-endian byte
12995orders. Usually the executable or symbol will include a bit to
12996designate the endian-ness, and you will not need to worry about
12997which to use. However, you may still find it useful to adjust
d4f3574e 12998@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
12999
13000@table @code
4644b6e3 13001@kindex set endian
c906108c
SS
13002@item set endian big
13003Instruct @value{GDBN} to assume the target is big-endian.
13004
c906108c
SS
13005@item set endian little
13006Instruct @value{GDBN} to assume the target is little-endian.
13007
c906108c
SS
13008@item set endian auto
13009Instruct @value{GDBN} to use the byte order associated with the
13010executable.
13011
13012@item show endian
13013Display @value{GDBN}'s current idea of the target byte order.
13014
13015@end table
13016
13017Note that these commands merely adjust interpretation of symbolic
13018data on the host, and that they have absolutely no effect on the
13019target system.
13020
ea35711c
DJ
13021
13022@node Remote Debugging
13023@chapter Debugging Remote Programs
c906108c
SS
13024@cindex remote debugging
13025
13026If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
13027@value{GDBN} in the usual way, it is often useful to use remote debugging.
13028For example, you might use remote debugging on an operating system kernel,
c906108c
SS
13029or on a small system which does not have a general purpose operating system
13030powerful enough to run a full-featured debugger.
13031
13032Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
13033to make this work with particular debugging targets. In addition,
5d161b24 13034@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
13035but not specific to any particular target system) which you can use if you
13036write the remote stubs---the code that runs on the remote system to
13037communicate with @value{GDBN}.
13038
13039Other remote targets may be available in your
13040configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 13041
6b2f586d 13042@menu
07f31aa6 13043* Connecting:: Connecting to a remote target
a6b151f1 13044* File Transfer:: Sending files to a remote system
6b2f586d 13045* Server:: Using the gdbserver program
79a6e687
BW
13046* Remote Configuration:: Remote configuration
13047* Remote Stub:: Implementing a remote stub
6b2f586d
AC
13048@end menu
13049
07f31aa6 13050@node Connecting
79a6e687 13051@section Connecting to a Remote Target
07f31aa6
DJ
13052
13053On the @value{GDBN} host machine, you will need an unstripped copy of
d3e8051b 13054your program, since @value{GDBN} needs symbol and debugging information.
07f31aa6
DJ
13055Start up @value{GDBN} as usual, using the name of the local copy of your
13056program as the first argument.
13057
86941c27
JB
13058@cindex @code{target remote}
13059@value{GDBN} can communicate with the target over a serial line, or
13060over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In
13061each case, @value{GDBN} uses the same protocol for debugging your
13062program; only the medium carrying the debugging packets varies. The
13063@code{target remote} command establishes a connection to the target.
13064Its arguments indicate which medium to use:
13065
13066@table @code
13067
13068@item target remote @var{serial-device}
07f31aa6 13069@cindex serial line, @code{target remote}
86941c27
JB
13070Use @var{serial-device} to communicate with the target. For example,
13071to use a serial line connected to the device named @file{/dev/ttyb}:
13072
13073@smallexample
13074target remote /dev/ttyb
13075@end smallexample
13076
07f31aa6
DJ
13077If you're using a serial line, you may want to give @value{GDBN} the
13078@w{@samp{--baud}} option, or use the @code{set remotebaud} command
79a6e687 13079(@pxref{Remote Configuration, set remotebaud}) before the
9c16f35a 13080@code{target} command.
07f31aa6 13081
86941c27
JB
13082@item target remote @code{@var{host}:@var{port}}
13083@itemx target remote @code{tcp:@var{host}:@var{port}}
13084@cindex @acronym{TCP} port, @code{target remote}
13085Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
13086The @var{host} may be either a host name or a numeric @acronym{IP}
13087address; @var{port} must be a decimal number. The @var{host} could be
13088the target machine itself, if it is directly connected to the net, or
13089it might be a terminal server which in turn has a serial line to the
13090target.
07f31aa6 13091
86941c27
JB
13092For example, to connect to port 2828 on a terminal server named
13093@code{manyfarms}:
07f31aa6
DJ
13094
13095@smallexample
13096target remote manyfarms:2828
13097@end smallexample
13098
86941c27
JB
13099If your remote target is actually running on the same machine as your
13100debugger session (e.g.@: a simulator for your target running on the
13101same host), you can omit the hostname. For example, to connect to
13102port 1234 on your local machine:
07f31aa6
DJ
13103
13104@smallexample
13105target remote :1234
13106@end smallexample
13107@noindent
13108
13109Note that the colon is still required here.
13110
86941c27
JB
13111@item target remote @code{udp:@var{host}:@var{port}}
13112@cindex @acronym{UDP} port, @code{target remote}
13113Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to
13114connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
07f31aa6
DJ
13115
13116@smallexample
13117target remote udp:manyfarms:2828
13118@end smallexample
13119
86941c27
JB
13120When using a @acronym{UDP} connection for remote debugging, you should
13121keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP}
13122can silently drop packets on busy or unreliable networks, which will
13123cause havoc with your debugging session.
13124
66b8c7f6
JB
13125@item target remote | @var{command}
13126@cindex pipe, @code{target remote} to
13127Run @var{command} in the background and communicate with it using a
13128pipe. The @var{command} is a shell command, to be parsed and expanded
13129by the system's command shell, @code{/bin/sh}; it should expect remote
13130protocol packets on its standard input, and send replies on its
13131standard output. You could use this to run a stand-alone simulator
13132that speaks the remote debugging protocol, to make net connections
13133using programs like @code{ssh}, or for other similar tricks.
13134
13135If @var{command} closes its standard output (perhaps by exiting),
13136@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the
13137program has already exited, this will have no effect.)
13138
86941c27 13139@end table
07f31aa6 13140
86941c27 13141Once the connection has been established, you can use all the usual
8edfe269
DJ
13142commands to examine and change data. The remote program is already
13143running; you can use @kbd{step} and @kbd{continue}, and you do not
13144need to use @kbd{run}.
07f31aa6
DJ
13145
13146@cindex interrupting remote programs
13147@cindex remote programs, interrupting
13148Whenever @value{GDBN} is waiting for the remote program, if you type the
c8aa23ab 13149interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the
07f31aa6
DJ
13150program. This may or may not succeed, depending in part on the hardware
13151and the serial drivers the remote system uses. If you type the
13152interrupt character once again, @value{GDBN} displays this prompt:
13153
13154@smallexample
13155Interrupted while waiting for the program.
13156Give up (and stop debugging it)? (y or n)
13157@end smallexample
13158
13159If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
13160(If you decide you want to try again later, you can use @samp{target
13161remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
13162goes back to waiting.
13163
13164@table @code
13165@kindex detach (remote)
13166@item detach
13167When you have finished debugging the remote program, you can use the
13168@code{detach} command to release it from @value{GDBN} control.
13169Detaching from the target normally resumes its execution, but the results
13170will depend on your particular remote stub. After the @code{detach}
13171command, @value{GDBN} is free to connect to another target.
13172
13173@kindex disconnect
13174@item disconnect
13175The @code{disconnect} command behaves like @code{detach}, except that
13176the target is generally not resumed. It will wait for @value{GDBN}
13177(this instance or another one) to connect and continue debugging. After
13178the @code{disconnect} command, @value{GDBN} is again free to connect to
13179another target.
09d4efe1
EZ
13180
13181@cindex send command to remote monitor
fad38dfa
EZ
13182@cindex extend @value{GDBN} for remote targets
13183@cindex add new commands for external monitor
09d4efe1
EZ
13184@kindex monitor
13185@item monitor @var{cmd}
fad38dfa
EZ
13186This command allows you to send arbitrary commands directly to the
13187remote monitor. Since @value{GDBN} doesn't care about the commands it
13188sends like this, this command is the way to extend @value{GDBN}---you
13189can add new commands that only the external monitor will understand
13190and implement.
07f31aa6
DJ
13191@end table
13192
a6b151f1
DJ
13193@node File Transfer
13194@section Sending files to a remote system
13195@cindex remote target, file transfer
13196@cindex file transfer
13197@cindex sending files to remote systems
13198
13199Some remote targets offer the ability to transfer files over the same
13200connection used to communicate with @value{GDBN}. This is convenient
13201for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems
13202running @code{gdbserver} over a network interface. For other targets,
13203e.g.@: embedded devices with only a single serial port, this may be
13204the only way to upload or download files.
13205
13206Not all remote targets support these commands.
13207
13208@table @code
13209@kindex remote put
13210@item remote put @var{hostfile} @var{targetfile}
13211Copy file @var{hostfile} from the host system (the machine running
13212@value{GDBN}) to @var{targetfile} on the target system.
13213
13214@kindex remote get
13215@item remote get @var{targetfile} @var{hostfile}
13216Copy file @var{targetfile} from the target system to @var{hostfile}
13217on the host system.
13218
13219@kindex remote delete
13220@item remote delete @var{targetfile}
13221Delete @var{targetfile} from the target system.
13222
13223@end table
13224
6f05cf9f 13225@node Server
79a6e687 13226@section Using the @code{gdbserver} Program
6f05cf9f
AC
13227
13228@kindex gdbserver
13229@cindex remote connection without stubs
13230@code{gdbserver} is a control program for Unix-like systems, which
13231allows you to connect your program with a remote @value{GDBN} via
13232@code{target remote}---but without linking in the usual debugging stub.
13233
13234@code{gdbserver} is not a complete replacement for the debugging stubs,
13235because it requires essentially the same operating-system facilities
13236that @value{GDBN} itself does. In fact, a system that can run
13237@code{gdbserver} to connect to a remote @value{GDBN} could also run
13238@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
13239because it is a much smaller program than @value{GDBN} itself. It is
13240also easier to port than all of @value{GDBN}, so you may be able to get
13241started more quickly on a new system by using @code{gdbserver}.
13242Finally, if you develop code for real-time systems, you may find that
13243the tradeoffs involved in real-time operation make it more convenient to
13244do as much development work as possible on another system, for example
13245by cross-compiling. You can use @code{gdbserver} to make a similar
13246choice for debugging.
13247
13248@value{GDBN} and @code{gdbserver} communicate via either a serial line
13249or a TCP connection, using the standard @value{GDBN} remote serial
13250protocol.
13251
2d717e4f
DJ
13252@quotation
13253@emph{Warning:} @code{gdbserver} does not have any built-in security.
13254Do not run @code{gdbserver} connected to any public network; a
13255@value{GDBN} connection to @code{gdbserver} provides access to the
13256target system with the same privileges as the user running
13257@code{gdbserver}.
13258@end quotation
13259
13260@subsection Running @code{gdbserver}
13261@cindex arguments, to @code{gdbserver}
13262
13263Run @code{gdbserver} on the target system. You need a copy of the
13264program you want to debug, including any libraries it requires.
6f05cf9f
AC
13265@code{gdbserver} does not need your program's symbol table, so you can
13266strip the program if necessary to save space. @value{GDBN} on the host
13267system does all the symbol handling.
13268
13269To use the server, you must tell it how to communicate with @value{GDBN};
56460a61 13270the name of your program; and the arguments for your program. The usual
6f05cf9f
AC
13271syntax is:
13272
13273@smallexample
13274target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
13275@end smallexample
13276
13277@var{comm} is either a device name (to use a serial line) or a TCP
13278hostname and portnumber. For example, to debug Emacs with the argument
13279@samp{foo.txt} and communicate with @value{GDBN} over the serial port
13280@file{/dev/com1}:
13281
13282@smallexample
13283target> gdbserver /dev/com1 emacs foo.txt
13284@end smallexample
13285
13286@code{gdbserver} waits passively for the host @value{GDBN} to communicate
13287with it.
13288
13289To use a TCP connection instead of a serial line:
13290
13291@smallexample
13292target> gdbserver host:2345 emacs foo.txt
13293@end smallexample
13294
13295The only difference from the previous example is the first argument,
13296specifying that you are communicating with the host @value{GDBN} via
13297TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
13298expect a TCP connection from machine @samp{host} to local TCP port 2345.
13299(Currently, the @samp{host} part is ignored.) You can choose any number
13300you want for the port number as long as it does not conflict with any
13301TCP ports already in use on the target system (for example, @code{23} is
13302reserved for @code{telnet}).@footnote{If you choose a port number that
13303conflicts with another service, @code{gdbserver} prints an error message
13304and exits.} You must use the same port number with the host @value{GDBN}
13305@code{target remote} command.
13306
2d717e4f
DJ
13307@subsubsection Attaching to a Running Program
13308
56460a61
DJ
13309On some targets, @code{gdbserver} can also attach to running programs.
13310This is accomplished via the @code{--attach} argument. The syntax is:
13311
13312@smallexample
2d717e4f 13313target> gdbserver --attach @var{comm} @var{pid}
56460a61
DJ
13314@end smallexample
13315
13316@var{pid} is the process ID of a currently running process. It isn't necessary
13317to point @code{gdbserver} at a binary for the running process.
13318
b1fe9455
DJ
13319@pindex pidof
13320@cindex attach to a program by name
13321You can debug processes by name instead of process ID if your target has the
13322@code{pidof} utility:
13323
13324@smallexample
2d717e4f 13325target> gdbserver --attach @var{comm} `pidof @var{program}`
b1fe9455
DJ
13326@end smallexample
13327
f822c95b 13328In case more than one copy of @var{program} is running, or @var{program}
b1fe9455
DJ
13329has multiple threads, most versions of @code{pidof} support the
13330@code{-s} option to only return the first process ID.
13331
2d717e4f
DJ
13332@subsubsection Multi-Process Mode for @code{gdbserver}
13333@cindex gdbserver, multiple processes
13334@cindex multiple processes with gdbserver
13335
13336When you connect to @code{gdbserver} using @code{target remote},
13337@code{gdbserver} debugs the specified program only once. When the
13338program exits, or you detach from it, @value{GDBN} closes the connection
13339and @code{gdbserver} exits.
13340
6e6c6f50 13341If you connect using @kbd{target extended-remote}, @code{gdbserver}
2d717e4f
DJ
13342enters multi-process mode. When the debugged program exits, or you
13343detach from it, @value{GDBN} stays connected to @code{gdbserver} even
13344though no program is running. The @code{run} and @code{attach}
13345commands instruct @code{gdbserver} to run or attach to a new program.
13346The @code{run} command uses @code{set remote exec-file} (@pxref{set
13347remote exec-file}) to select the program to run. Command line
13348arguments are supported, except for wildcard expansion and I/O
13349redirection (@pxref{Arguments}).
13350
13351To start @code{gdbserver} without supplying an initial command to run
13352or process ID to attach, use the @option{--multi} command line option.
6e6c6f50 13353Then you can connect using @kbd{target extended-remote} and start
2d717e4f
DJ
13354the program you want to debug.
13355
13356@code{gdbserver} does not automatically exit in multi-process mode.
13357You can terminate it by using @code{monitor exit}
13358(@pxref{Monitor Commands for gdbserver}).
13359
13360@subsubsection Other Command-Line Arguments for @code{gdbserver}
13361
13362You can include @option{--debug} on the @code{gdbserver} command line.
13363@code{gdbserver} will display extra status information about the debugging
13364process. This option is intended for @code{gdbserver} development and
13365for bug reports to the developers.
13366
ccd213ac
DJ
13367The @option{--wrapper} option specifies a wrapper to launch programs
13368for debugging. The option should be followed by the name of the
13369wrapper, then any command-line arguments to pass to the wrapper, then
13370@kbd{--} indicating the end of the wrapper arguments.
13371
13372@code{gdbserver} runs the specified wrapper program with a combined
13373command line including the wrapper arguments, then the name of the
13374program to debug, then any arguments to the program. The wrapper
13375runs until it executes your program, and then @value{GDBN} gains control.
13376
13377You can use any program that eventually calls @code{execve} with
13378its arguments as a wrapper. Several standard Unix utilities do
13379this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
13380with @code{exec "$@@"} will also work.
13381
13382For example, you can use @code{env} to pass an environment variable to
13383the debugged program, without setting the variable in @code{gdbserver}'s
13384environment:
13385
13386@smallexample
13387$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog
13388@end smallexample
13389
2d717e4f
DJ
13390@subsection Connecting to @code{gdbserver}
13391
13392Run @value{GDBN} on the host system.
13393
13394First make sure you have the necessary symbol files. Load symbols for
f822c95b
DJ
13395your application using the @code{file} command before you connect. Use
13396@code{set sysroot} to locate target libraries (unless your @value{GDBN}
2d717e4f 13397was compiled with the correct sysroot using @code{--with-sysroot}).
f822c95b
DJ
13398
13399The symbol file and target libraries must exactly match the executable
13400and libraries on the target, with one exception: the files on the host
13401system should not be stripped, even if the files on the target system
13402are. Mismatched or missing files will lead to confusing results
13403during debugging. On @sc{gnu}/Linux targets, mismatched or missing
13404files may also prevent @code{gdbserver} from debugging multi-threaded
13405programs.
13406
79a6e687 13407Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}).
6f05cf9f
AC
13408For TCP connections, you must start up @code{gdbserver} prior to using
13409the @code{target remote} command. Otherwise you may get an error whose
13410text depends on the host system, but which usually looks something like
2d717e4f 13411@samp{Connection refused}. Don't use the @code{load}
397ca115 13412command in @value{GDBN} when using @code{gdbserver}, since the program is
f822c95b 13413already on the target.
07f31aa6 13414
79a6e687 13415@subsection Monitor Commands for @code{gdbserver}
c74d0ad8 13416@cindex monitor commands, for @code{gdbserver}
2d717e4f 13417@anchor{Monitor Commands for gdbserver}
c74d0ad8
DJ
13418
13419During a @value{GDBN} session using @code{gdbserver}, you can use the
13420@code{monitor} command to send special requests to @code{gdbserver}.
2d717e4f 13421Here are the available commands.
c74d0ad8
DJ
13422
13423@table @code
13424@item monitor help
13425List the available monitor commands.
13426
13427@item monitor set debug 0
13428@itemx monitor set debug 1
13429Disable or enable general debugging messages.
13430
13431@item monitor set remote-debug 0
13432@itemx monitor set remote-debug 1
13433Disable or enable specific debugging messages associated with the remote
13434protocol (@pxref{Remote Protocol}).
13435
2d717e4f
DJ
13436@item monitor exit
13437Tell gdbserver to exit immediately. This command should be followed by
13438@code{disconnect} to close the debugging session. @code{gdbserver} will
13439detach from any attached processes and kill any processes it created.
13440Use @code{monitor exit} to terminate @code{gdbserver} at the end
13441of a multi-process mode debug session.
13442
c74d0ad8
DJ
13443@end table
13444
79a6e687
BW
13445@node Remote Configuration
13446@section Remote Configuration
501eef12 13447
9c16f35a
EZ
13448@kindex set remote
13449@kindex show remote
13450This section documents the configuration options available when
13451debugging remote programs. For the options related to the File I/O
fc320d37 13452extensions of the remote protocol, see @ref{system,
9c16f35a 13453system-call-allowed}.
501eef12
AC
13454
13455@table @code
9c16f35a 13456@item set remoteaddresssize @var{bits}
d3e8051b 13457@cindex address size for remote targets
9c16f35a
EZ
13458@cindex bits in remote address
13459Set the maximum size of address in a memory packet to the specified
13460number of bits. @value{GDBN} will mask off the address bits above
13461that number, when it passes addresses to the remote target. The
13462default value is the number of bits in the target's address.
13463
13464@item show remoteaddresssize
13465Show the current value of remote address size in bits.
13466
13467@item set remotebaud @var{n}
13468@cindex baud rate for remote targets
13469Set the baud rate for the remote serial I/O to @var{n} baud. The
13470value is used to set the speed of the serial port used for debugging
13471remote targets.
13472
13473@item show remotebaud
13474Show the current speed of the remote connection.
13475
13476@item set remotebreak
13477@cindex interrupt remote programs
13478@cindex BREAK signal instead of Ctrl-C
9a6253be 13479@anchor{set remotebreak}
9c16f35a 13480If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote
c8aa23ab 13481when you type @kbd{Ctrl-c} to interrupt the program running
9a7a1b36 13482on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C}
9c16f35a
EZ
13483character instead. The default is off, since most remote systems
13484expect to see @samp{Ctrl-C} as the interrupt signal.
13485
13486@item show remotebreak
13487Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to
13488interrupt the remote program.
13489
23776285
MR
13490@item set remoteflow on
13491@itemx set remoteflow off
13492@kindex set remoteflow
13493Enable or disable hardware flow control (@code{RTS}/@code{CTS})
13494on the serial port used to communicate to the remote target.
13495
13496@item show remoteflow
13497@kindex show remoteflow
13498Show the current setting of hardware flow control.
13499
9c16f35a
EZ
13500@item set remotelogbase @var{base}
13501Set the base (a.k.a.@: radix) of logging serial protocol
13502communications to @var{base}. Supported values of @var{base} are:
13503@code{ascii}, @code{octal}, and @code{hex}. The default is
13504@code{ascii}.
13505
13506@item show remotelogbase
13507Show the current setting of the radix for logging remote serial
13508protocol.
13509
13510@item set remotelogfile @var{file}
13511@cindex record serial communications on file
13512Record remote serial communications on the named @var{file}. The
13513default is not to record at all.
13514
13515@item show remotelogfile.
13516Show the current setting of the file name on which to record the
13517serial communications.
13518
13519@item set remotetimeout @var{num}
13520@cindex timeout for serial communications
13521@cindex remote timeout
13522Set the timeout limit to wait for the remote target to respond to
13523@var{num} seconds. The default is 2 seconds.
13524
13525@item show remotetimeout
13526Show the current number of seconds to wait for the remote target
13527responses.
13528
13529@cindex limit hardware breakpoints and watchpoints
13530@cindex remote target, limit break- and watchpoints
501eef12
AC
13531@anchor{set remote hardware-watchpoint-limit}
13532@anchor{set remote hardware-breakpoint-limit}
13533@item set remote hardware-watchpoint-limit @var{limit}
13534@itemx set remote hardware-breakpoint-limit @var{limit}
13535Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
13536watchpoints. A limit of -1, the default, is treated as unlimited.
2d717e4f
DJ
13537
13538@item set remote exec-file @var{filename}
13539@itemx show remote exec-file
13540@anchor{set remote exec-file}
13541@cindex executable file, for remote target
13542Select the file used for @code{run} with @code{target
13543extended-remote}. This should be set to a filename valid on the
13544target system. If it is not set, the target will use a default
13545filename (e.g.@: the last program run).
501eef12
AC
13546@end table
13547
427c3a89
DJ
13548@cindex remote packets, enabling and disabling
13549The @value{GDBN} remote protocol autodetects the packets supported by
13550your debugging stub. If you need to override the autodetection, you
13551can use these commands to enable or disable individual packets. Each
13552packet can be set to @samp{on} (the remote target supports this
13553packet), @samp{off} (the remote target does not support this packet),
13554or @samp{auto} (detect remote target support for this packet). They
13555all default to @samp{auto}. For more information about each packet,
13556see @ref{Remote Protocol}.
13557
13558During normal use, you should not have to use any of these commands.
13559If you do, that may be a bug in your remote debugging stub, or a bug
13560in @value{GDBN}. You may want to report the problem to the
13561@value{GDBN} developers.
13562
cfa9d6d9
DJ
13563For each packet @var{name}, the command to enable or disable the
13564packet is @code{set remote @var{name}-packet}. The available settings
13565are:
427c3a89 13566
cfa9d6d9 13567@multitable @columnfractions 0.28 0.32 0.25
427c3a89
DJ
13568@item Command Name
13569@tab Remote Packet
13570@tab Related Features
13571
cfa9d6d9 13572@item @code{fetch-register}
427c3a89
DJ
13573@tab @code{p}
13574@tab @code{info registers}
13575
cfa9d6d9 13576@item @code{set-register}
427c3a89
DJ
13577@tab @code{P}
13578@tab @code{set}
13579
cfa9d6d9 13580@item @code{binary-download}
427c3a89
DJ
13581@tab @code{X}
13582@tab @code{load}, @code{set}
13583
cfa9d6d9 13584@item @code{read-aux-vector}
427c3a89
DJ
13585@tab @code{qXfer:auxv:read}
13586@tab @code{info auxv}
13587
cfa9d6d9 13588@item @code{symbol-lookup}
427c3a89
DJ
13589@tab @code{qSymbol}
13590@tab Detecting multiple threads
13591
2d717e4f
DJ
13592@item @code{attach}
13593@tab @code{vAttach}
13594@tab @code{attach}
13595
cfa9d6d9 13596@item @code{verbose-resume}
427c3a89
DJ
13597@tab @code{vCont}
13598@tab Stepping or resuming multiple threads
13599
2d717e4f
DJ
13600@item @code{run}
13601@tab @code{vRun}
13602@tab @code{run}
13603
cfa9d6d9 13604@item @code{software-breakpoint}
427c3a89
DJ
13605@tab @code{Z0}
13606@tab @code{break}
13607
cfa9d6d9 13608@item @code{hardware-breakpoint}
427c3a89
DJ
13609@tab @code{Z1}
13610@tab @code{hbreak}
13611
cfa9d6d9 13612@item @code{write-watchpoint}
427c3a89
DJ
13613@tab @code{Z2}
13614@tab @code{watch}
13615
cfa9d6d9 13616@item @code{read-watchpoint}
427c3a89
DJ
13617@tab @code{Z3}
13618@tab @code{rwatch}
13619
cfa9d6d9 13620@item @code{access-watchpoint}
427c3a89
DJ
13621@tab @code{Z4}
13622@tab @code{awatch}
13623
cfa9d6d9
DJ
13624@item @code{target-features}
13625@tab @code{qXfer:features:read}
13626@tab @code{set architecture}
13627
13628@item @code{library-info}
13629@tab @code{qXfer:libraries:read}
13630@tab @code{info sharedlibrary}
13631
13632@item @code{memory-map}
13633@tab @code{qXfer:memory-map:read}
13634@tab @code{info mem}
13635
13636@item @code{read-spu-object}
13637@tab @code{qXfer:spu:read}
13638@tab @code{info spu}
13639
13640@item @code{write-spu-object}
13641@tab @code{qXfer:spu:write}
13642@tab @code{info spu}
13643
13644@item @code{get-thread-local-@*storage-address}
427c3a89
DJ
13645@tab @code{qGetTLSAddr}
13646@tab Displaying @code{__thread} variables
13647
08388c79
DE
13648@item @code{search-memory}
13649@tab @code{qSearch:memory}
13650@tab @code{find}
13651
427c3a89
DJ
13652@item @code{supported-packets}
13653@tab @code{qSupported}
13654@tab Remote communications parameters
13655
cfa9d6d9 13656@item @code{pass-signals}
89be2091
DJ
13657@tab @code{QPassSignals}
13658@tab @code{handle @var{signal}}
13659
a6b151f1
DJ
13660@item @code{hostio-close-packet}
13661@tab @code{vFile:close}
13662@tab @code{remote get}, @code{remote put}
13663
13664@item @code{hostio-open-packet}
13665@tab @code{vFile:open}
13666@tab @code{remote get}, @code{remote put}
13667
13668@item @code{hostio-pread-packet}
13669@tab @code{vFile:pread}
13670@tab @code{remote get}, @code{remote put}
13671
13672@item @code{hostio-pwrite-packet}
13673@tab @code{vFile:pwrite}
13674@tab @code{remote get}, @code{remote put}
13675
13676@item @code{hostio-unlink-packet}
13677@tab @code{vFile:unlink}
13678@tab @code{remote delete}
427c3a89
DJ
13679@end multitable
13680
79a6e687
BW
13681@node Remote Stub
13682@section Implementing a Remote Stub
7a292a7a 13683
8e04817f
AC
13684@cindex debugging stub, example
13685@cindex remote stub, example
13686@cindex stub example, remote debugging
13687The stub files provided with @value{GDBN} implement the target side of the
13688communication protocol, and the @value{GDBN} side is implemented in the
13689@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
13690these subroutines to communicate, and ignore the details. (If you're
13691implementing your own stub file, you can still ignore the details: start
13692with one of the existing stub files. @file{sparc-stub.c} is the best
13693organized, and therefore the easiest to read.)
13694
104c1213
JM
13695@cindex remote serial debugging, overview
13696To debug a program running on another machine (the debugging
13697@dfn{target} machine), you must first arrange for all the usual
13698prerequisites for the program to run by itself. For example, for a C
13699program, you need:
c906108c 13700
104c1213
JM
13701@enumerate
13702@item
13703A startup routine to set up the C runtime environment; these usually
13704have a name like @file{crt0}. The startup routine may be supplied by
13705your hardware supplier, or you may have to write your own.
96baa820 13706
5d161b24 13707@item
d4f3574e 13708A C subroutine library to support your program's
104c1213 13709subroutine calls, notably managing input and output.
96baa820 13710
104c1213
JM
13711@item
13712A way of getting your program to the other machine---for example, a
13713download program. These are often supplied by the hardware
13714manufacturer, but you may have to write your own from hardware
13715documentation.
13716@end enumerate
96baa820 13717
104c1213
JM
13718The next step is to arrange for your program to use a serial port to
13719communicate with the machine where @value{GDBN} is running (the @dfn{host}
13720machine). In general terms, the scheme looks like this:
96baa820 13721
104c1213
JM
13722@table @emph
13723@item On the host,
13724@value{GDBN} already understands how to use this protocol; when everything
13725else is set up, you can simply use the @samp{target remote} command
13726(@pxref{Targets,,Specifying a Debugging Target}).
13727
13728@item On the target,
13729you must link with your program a few special-purpose subroutines that
13730implement the @value{GDBN} remote serial protocol. The file containing these
13731subroutines is called a @dfn{debugging stub}.
13732
13733On certain remote targets, you can use an auxiliary program
13734@code{gdbserver} instead of linking a stub into your program.
79a6e687 13735@xref{Server,,Using the @code{gdbserver} Program}, for details.
104c1213 13736@end table
96baa820 13737
104c1213
JM
13738The debugging stub is specific to the architecture of the remote
13739machine; for example, use @file{sparc-stub.c} to debug programs on
13740@sc{sparc} boards.
96baa820 13741
104c1213
JM
13742@cindex remote serial stub list
13743These working remote stubs are distributed with @value{GDBN}:
96baa820 13744
104c1213
JM
13745@table @code
13746
13747@item i386-stub.c
41afff9a 13748@cindex @file{i386-stub.c}
104c1213
JM
13749@cindex Intel
13750@cindex i386
13751For Intel 386 and compatible architectures.
13752
13753@item m68k-stub.c
41afff9a 13754@cindex @file{m68k-stub.c}
104c1213
JM
13755@cindex Motorola 680x0
13756@cindex m680x0
13757For Motorola 680x0 architectures.
13758
13759@item sh-stub.c
41afff9a 13760@cindex @file{sh-stub.c}
172c2a43 13761@cindex Renesas
104c1213 13762@cindex SH
172c2a43 13763For Renesas SH architectures.
104c1213
JM
13764
13765@item sparc-stub.c
41afff9a 13766@cindex @file{sparc-stub.c}
104c1213
JM
13767@cindex Sparc
13768For @sc{sparc} architectures.
13769
13770@item sparcl-stub.c
41afff9a 13771@cindex @file{sparcl-stub.c}
104c1213
JM
13772@cindex Fujitsu
13773@cindex SparcLite
13774For Fujitsu @sc{sparclite} architectures.
13775
13776@end table
13777
13778The @file{README} file in the @value{GDBN} distribution may list other
13779recently added stubs.
13780
13781@menu
13782* Stub Contents:: What the stub can do for you
13783* Bootstrapping:: What you must do for the stub
13784* Debug Session:: Putting it all together
104c1213
JM
13785@end menu
13786
6d2ebf8b 13787@node Stub Contents
79a6e687 13788@subsection What the Stub Can Do for You
104c1213
JM
13789
13790@cindex remote serial stub
13791The debugging stub for your architecture supplies these three
13792subroutines:
13793
13794@table @code
13795@item set_debug_traps
4644b6e3 13796@findex set_debug_traps
104c1213
JM
13797@cindex remote serial stub, initialization
13798This routine arranges for @code{handle_exception} to run when your
13799program stops. You must call this subroutine explicitly near the
13800beginning of your program.
13801
13802@item handle_exception
4644b6e3 13803@findex handle_exception
104c1213
JM
13804@cindex remote serial stub, main routine
13805This is the central workhorse, but your program never calls it
13806explicitly---the setup code arranges for @code{handle_exception} to
13807run when a trap is triggered.
13808
13809@code{handle_exception} takes control when your program stops during
13810execution (for example, on a breakpoint), and mediates communications
13811with @value{GDBN} on the host machine. This is where the communications
13812protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 13813representative on the target machine. It begins by sending summary
104c1213
JM
13814information on the state of your program, then continues to execute,
13815retrieving and transmitting any information @value{GDBN} needs, until you
13816execute a @value{GDBN} command that makes your program resume; at that point,
13817@code{handle_exception} returns control to your own code on the target
5d161b24 13818machine.
104c1213
JM
13819
13820@item breakpoint
13821@cindex @code{breakpoint} subroutine, remote
13822Use this auxiliary subroutine to make your program contain a
13823breakpoint. Depending on the particular situation, this may be the only
13824way for @value{GDBN} to get control. For instance, if your target
13825machine has some sort of interrupt button, you won't need to call this;
13826pressing the interrupt button transfers control to
13827@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
13828simply receiving characters on the serial port may also trigger a trap;
13829again, in that situation, you don't need to call @code{breakpoint} from
13830your own program---simply running @samp{target remote} from the host
5d161b24 13831@value{GDBN} session gets control.
104c1213
JM
13832
13833Call @code{breakpoint} if none of these is true, or if you simply want
13834to make certain your program stops at a predetermined point for the
13835start of your debugging session.
13836@end table
13837
6d2ebf8b 13838@node Bootstrapping
79a6e687 13839@subsection What You Must Do for the Stub
104c1213
JM
13840
13841@cindex remote stub, support routines
13842The debugging stubs that come with @value{GDBN} are set up for a particular
13843chip architecture, but they have no information about the rest of your
13844debugging target machine.
13845
13846First of all you need to tell the stub how to communicate with the
13847serial port.
13848
13849@table @code
13850@item int getDebugChar()
4644b6e3 13851@findex getDebugChar
104c1213
JM
13852Write this subroutine to read a single character from the serial port.
13853It may be identical to @code{getchar} for your target system; a
13854different name is used to allow you to distinguish the two if you wish.
13855
13856@item void putDebugChar(int)
4644b6e3 13857@findex putDebugChar
104c1213 13858Write this subroutine to write a single character to the serial port.
5d161b24 13859It may be identical to @code{putchar} for your target system; a
104c1213
JM
13860different name is used to allow you to distinguish the two if you wish.
13861@end table
13862
13863@cindex control C, and remote debugging
13864@cindex interrupting remote targets
13865If you want @value{GDBN} to be able to stop your program while it is
13866running, you need to use an interrupt-driven serial driver, and arrange
13867for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
13868character). That is the character which @value{GDBN} uses to tell the
13869remote system to stop.
13870
13871Getting the debugging target to return the proper status to @value{GDBN}
13872probably requires changes to the standard stub; one quick and dirty way
13873is to just execute a breakpoint instruction (the ``dirty'' part is that
13874@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
13875
13876Other routines you need to supply are:
13877
13878@table @code
13879@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
4644b6e3 13880@findex exceptionHandler
104c1213
JM
13881Write this function to install @var{exception_address} in the exception
13882handling tables. You need to do this because the stub does not have any
13883way of knowing what the exception handling tables on your target system
13884are like (for example, the processor's table might be in @sc{rom},
13885containing entries which point to a table in @sc{ram}).
13886@var{exception_number} is the exception number which should be changed;
13887its meaning is architecture-dependent (for example, different numbers
13888might represent divide by zero, misaligned access, etc). When this
13889exception occurs, control should be transferred directly to
13890@var{exception_address}, and the processor state (stack, registers,
13891and so on) should be just as it is when a processor exception occurs. So if
13892you want to use a jump instruction to reach @var{exception_address}, it
13893should be a simple jump, not a jump to subroutine.
13894
13895For the 386, @var{exception_address} should be installed as an interrupt
13896gate so that interrupts are masked while the handler runs. The gate
13897should be at privilege level 0 (the most privileged level). The
13898@sc{sparc} and 68k stubs are able to mask interrupts themselves without
13899help from @code{exceptionHandler}.
13900
13901@item void flush_i_cache()
4644b6e3 13902@findex flush_i_cache
d4f3574e 13903On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
13904instruction cache, if any, on your target machine. If there is no
13905instruction cache, this subroutine may be a no-op.
13906
13907On target machines that have instruction caches, @value{GDBN} requires this
13908function to make certain that the state of your program is stable.
13909@end table
13910
13911@noindent
13912You must also make sure this library routine is available:
13913
13914@table @code
13915@item void *memset(void *, int, int)
4644b6e3 13916@findex memset
104c1213
JM
13917This is the standard library function @code{memset} that sets an area of
13918memory to a known value. If you have one of the free versions of
13919@code{libc.a}, @code{memset} can be found there; otherwise, you must
13920either obtain it from your hardware manufacturer, or write your own.
13921@end table
13922
13923If you do not use the GNU C compiler, you may need other standard
13924library subroutines as well; this varies from one stub to another,
13925but in general the stubs are likely to use any of the common library
e22ea452 13926subroutines which @code{@value{NGCC}} generates as inline code.
104c1213
JM
13927
13928
6d2ebf8b 13929@node Debug Session
79a6e687 13930@subsection Putting it All Together
104c1213
JM
13931
13932@cindex remote serial debugging summary
13933In summary, when your program is ready to debug, you must follow these
13934steps.
13935
13936@enumerate
13937@item
6d2ebf8b 13938Make sure you have defined the supporting low-level routines
79a6e687 13939(@pxref{Bootstrapping,,What You Must Do for the Stub}):
104c1213
JM
13940@display
13941@code{getDebugChar}, @code{putDebugChar},
13942@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
13943@end display
13944
13945@item
13946Insert these lines near the top of your program:
13947
474c8240 13948@smallexample
104c1213
JM
13949set_debug_traps();
13950breakpoint();
474c8240 13951@end smallexample
104c1213
JM
13952
13953@item
13954For the 680x0 stub only, you need to provide a variable called
13955@code{exceptionHook}. Normally you just use:
13956
474c8240 13957@smallexample
104c1213 13958void (*exceptionHook)() = 0;
474c8240 13959@end smallexample
104c1213 13960
d4f3574e 13961@noindent
104c1213 13962but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 13963function in your program, that function is called when
104c1213
JM
13964@code{@value{GDBN}} continues after stopping on a trap (for example, bus
13965error). The function indicated by @code{exceptionHook} is called with
13966one parameter: an @code{int} which is the exception number.
13967
13968@item
13969Compile and link together: your program, the @value{GDBN} debugging stub for
13970your target architecture, and the supporting subroutines.
13971
13972@item
13973Make sure you have a serial connection between your target machine and
13974the @value{GDBN} host, and identify the serial port on the host.
13975
13976@item
13977@c The "remote" target now provides a `load' command, so we should
13978@c document that. FIXME.
13979Download your program to your target machine (or get it there by
13980whatever means the manufacturer provides), and start it.
13981
13982@item
07f31aa6 13983Start @value{GDBN} on the host, and connect to the target
79a6e687 13984(@pxref{Connecting,,Connecting to a Remote Target}).
9db8d71f 13985
104c1213
JM
13986@end enumerate
13987
8e04817f
AC
13988@node Configurations
13989@chapter Configuration-Specific Information
104c1213 13990
8e04817f
AC
13991While nearly all @value{GDBN} commands are available for all native and
13992cross versions of the debugger, there are some exceptions. This chapter
13993describes things that are only available in certain configurations.
104c1213 13994
8e04817f
AC
13995There are three major categories of configurations: native
13996configurations, where the host and target are the same, embedded
13997operating system configurations, which are usually the same for several
13998different processor architectures, and bare embedded processors, which
13999are quite different from each other.
104c1213 14000
8e04817f
AC
14001@menu
14002* Native::
14003* Embedded OS::
14004* Embedded Processors::
14005* Architectures::
14006@end menu
104c1213 14007
8e04817f
AC
14008@node Native
14009@section Native
104c1213 14010
8e04817f
AC
14011This section describes details specific to particular native
14012configurations.
6cf7e474 14013
8e04817f
AC
14014@menu
14015* HP-UX:: HP-UX
7561d450 14016* BSD libkvm Interface:: Debugging BSD kernel memory images
8e04817f
AC
14017* SVR4 Process Information:: SVR4 process information
14018* DJGPP Native:: Features specific to the DJGPP port
78c47bea 14019* Cygwin Native:: Features specific to the Cygwin port
14d6dd68 14020* Hurd Native:: Features specific to @sc{gnu} Hurd
a64548ea 14021* Neutrino:: Features specific to QNX Neutrino
8e04817f 14022@end menu
6cf7e474 14023
8e04817f
AC
14024@node HP-UX
14025@subsection HP-UX
104c1213 14026
8e04817f
AC
14027On HP-UX systems, if you refer to a function or variable name that
14028begins with a dollar sign, @value{GDBN} searches for a user or system
14029name first, before it searches for a convenience variable.
104c1213 14030
9c16f35a 14031
7561d450
MK
14032@node BSD libkvm Interface
14033@subsection BSD libkvm Interface
14034
14035@cindex libkvm
14036@cindex kernel memory image
14037@cindex kernel crash dump
14038
14039BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
14040interface that provides a uniform interface for accessing kernel virtual
14041memory images, including live systems and crash dumps. @value{GDBN}
14042uses this interface to allow you to debug live kernels and kernel crash
14043dumps on many native BSD configurations. This is implemented as a
14044special @code{kvm} debugging target. For debugging a live system, load
14045the currently running kernel into @value{GDBN} and connect to the
14046@code{kvm} target:
14047
14048@smallexample
14049(@value{GDBP}) @b{target kvm}
14050@end smallexample
14051
14052For debugging crash dumps, provide the file name of the crash dump as an
14053argument:
14054
14055@smallexample
14056(@value{GDBP}) @b{target kvm /var/crash/bsd.0}
14057@end smallexample
14058
14059Once connected to the @code{kvm} target, the following commands are
14060available:
14061
14062@table @code
14063@kindex kvm
14064@item kvm pcb
721c2651 14065Set current context from the @dfn{Process Control Block} (PCB) address.
7561d450
MK
14066
14067@item kvm proc
14068Set current context from proc address. This command isn't available on
14069modern FreeBSD systems.
14070@end table
14071
8e04817f 14072@node SVR4 Process Information
79a6e687 14073@subsection SVR4 Process Information
60bf7e09
EZ
14074@cindex /proc
14075@cindex examine process image
14076@cindex process info via @file{/proc}
104c1213 14077
60bf7e09
EZ
14078Many versions of SVR4 and compatible systems provide a facility called
14079@samp{/proc} that can be used to examine the image of a running
14080process using file-system subroutines. If @value{GDBN} is configured
14081for an operating system with this facility, the command @code{info
14082proc} is available to report information about the process running
14083your program, or about any process running on your system. @code{info
14084proc} works only on SVR4 systems that include the @code{procfs} code.
14085This includes, as of this writing, @sc{gnu}/Linux, OSF/1 (Digital
14086Unix), Solaris, Irix, and Unixware, but not HP-UX, for example.
104c1213 14087
8e04817f
AC
14088@table @code
14089@kindex info proc
60bf7e09 14090@cindex process ID
8e04817f 14091@item info proc
60bf7e09
EZ
14092@itemx info proc @var{process-id}
14093Summarize available information about any running process. If a
14094process ID is specified by @var{process-id}, display information about
14095that process; otherwise display information about the program being
14096debugged. The summary includes the debugged process ID, the command
14097line used to invoke it, its current working directory, and its
14098executable file's absolute file name.
14099
14100On some systems, @var{process-id} can be of the form
14101@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID
14102within a process. If the optional @var{pid} part is missing, it means
14103a thread from the process being debugged (the leading @samp{/} still
14104needs to be present, or else @value{GDBN} will interpret the number as
14105a process ID rather than a thread ID).
6cf7e474 14106
8e04817f 14107@item info proc mappings
60bf7e09
EZ
14108@cindex memory address space mappings
14109Report the memory address space ranges accessible in the program, with
14110information on whether the process has read, write, or execute access
14111rights to each range. On @sc{gnu}/Linux systems, each memory range
14112includes the object file which is mapped to that range, instead of the
14113memory access rights to that range.
14114
14115@item info proc stat
14116@itemx info proc status
14117@cindex process detailed status information
14118These subcommands are specific to @sc{gnu}/Linux systems. They show
14119the process-related information, including the user ID and group ID;
14120how many threads are there in the process; its virtual memory usage;
14121the signals that are pending, blocked, and ignored; its TTY; its
14122consumption of system and user time; its stack size; its @samp{nice}
2eecc4ab 14123value; etc. For more information, see the @samp{proc} man page
60bf7e09
EZ
14124(type @kbd{man 5 proc} from your shell prompt).
14125
14126@item info proc all
14127Show all the information about the process described under all of the
14128above @code{info proc} subcommands.
14129
8e04817f
AC
14130@ignore
14131@comment These sub-options of 'info proc' were not included when
14132@comment procfs.c was re-written. Keep their descriptions around
14133@comment against the day when someone finds the time to put them back in.
14134@kindex info proc times
14135@item info proc times
14136Starting time, user CPU time, and system CPU time for your program and
14137its children.
6cf7e474 14138
8e04817f
AC
14139@kindex info proc id
14140@item info proc id
14141Report on the process IDs related to your program: its own process ID,
14142the ID of its parent, the process group ID, and the session ID.
8e04817f 14143@end ignore
721c2651
EZ
14144
14145@item set procfs-trace
14146@kindex set procfs-trace
14147@cindex @code{procfs} API calls
14148This command enables and disables tracing of @code{procfs} API calls.
14149
14150@item show procfs-trace
14151@kindex show procfs-trace
14152Show the current state of @code{procfs} API call tracing.
14153
14154@item set procfs-file @var{file}
14155@kindex set procfs-file
14156Tell @value{GDBN} to write @code{procfs} API trace to the named
14157@var{file}. @value{GDBN} appends the trace info to the previous
14158contents of the file. The default is to display the trace on the
14159standard output.
14160
14161@item show procfs-file
14162@kindex show procfs-file
14163Show the file to which @code{procfs} API trace is written.
14164
14165@item proc-trace-entry
14166@itemx proc-trace-exit
14167@itemx proc-untrace-entry
14168@itemx proc-untrace-exit
14169@kindex proc-trace-entry
14170@kindex proc-trace-exit
14171@kindex proc-untrace-entry
14172@kindex proc-untrace-exit
14173These commands enable and disable tracing of entries into and exits
14174from the @code{syscall} interface.
14175
14176@item info pidlist
14177@kindex info pidlist
14178@cindex process list, QNX Neutrino
14179For QNX Neutrino only, this command displays the list of all the
14180processes and all the threads within each process.
14181
14182@item info meminfo
14183@kindex info meminfo
14184@cindex mapinfo list, QNX Neutrino
14185For QNX Neutrino only, this command displays the list of all mapinfos.
8e04817f 14186@end table
104c1213 14187
8e04817f
AC
14188@node DJGPP Native
14189@subsection Features for Debugging @sc{djgpp} Programs
14190@cindex @sc{djgpp} debugging
14191@cindex native @sc{djgpp} debugging
14192@cindex MS-DOS-specific commands
104c1213 14193
514c4d71
EZ
14194@cindex DPMI
14195@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and
8e04817f
AC
14196MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
14197that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
14198top of real-mode DOS systems and their emulations.
104c1213 14199
8e04817f
AC
14200@value{GDBN} supports native debugging of @sc{djgpp} programs, and
14201defines a few commands specific to the @sc{djgpp} port. This
14202subsection describes those commands.
104c1213 14203
8e04817f
AC
14204@table @code
14205@kindex info dos
14206@item info dos
14207This is a prefix of @sc{djgpp}-specific commands which print
14208information about the target system and important OS structures.
f1251bdd 14209
8e04817f
AC
14210@kindex sysinfo
14211@cindex MS-DOS system info
14212@cindex free memory information (MS-DOS)
14213@item info dos sysinfo
14214This command displays assorted information about the underlying
14215platform: the CPU type and features, the OS version and flavor, the
14216DPMI version, and the available conventional and DPMI memory.
104c1213 14217
8e04817f
AC
14218@cindex GDT
14219@cindex LDT
14220@cindex IDT
14221@cindex segment descriptor tables
14222@cindex descriptor tables display
14223@item info dos gdt
14224@itemx info dos ldt
14225@itemx info dos idt
14226These 3 commands display entries from, respectively, Global, Local,
14227and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
14228tables are data structures which store a descriptor for each segment
14229that is currently in use. The segment's selector is an index into a
14230descriptor table; the table entry for that index holds the
14231descriptor's base address and limit, and its attributes and access
14232rights.
104c1213 14233
8e04817f
AC
14234A typical @sc{djgpp} program uses 3 segments: a code segment, a data
14235segment (used for both data and the stack), and a DOS segment (which
14236allows access to DOS/BIOS data structures and absolute addresses in
14237conventional memory). However, the DPMI host will usually define
14238additional segments in order to support the DPMI environment.
d4f3574e 14239
8e04817f
AC
14240@cindex garbled pointers
14241These commands allow to display entries from the descriptor tables.
14242Without an argument, all entries from the specified table are
14243displayed. An argument, which should be an integer expression, means
14244display a single entry whose index is given by the argument. For
14245example, here's a convenient way to display information about the
14246debugged program's data segment:
104c1213 14247
8e04817f
AC
14248@smallexample
14249@exdent @code{(@value{GDBP}) info dos ldt $ds}
14250@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
14251@end smallexample
104c1213 14252
8e04817f
AC
14253@noindent
14254This comes in handy when you want to see whether a pointer is outside
14255the data segment's limit (i.e.@: @dfn{garbled}).
104c1213 14256
8e04817f
AC
14257@cindex page tables display (MS-DOS)
14258@item info dos pde
14259@itemx info dos pte
14260These two commands display entries from, respectively, the Page
14261Directory and the Page Tables. Page Directories and Page Tables are
14262data structures which control how virtual memory addresses are mapped
14263into physical addresses. A Page Table includes an entry for every
14264page of memory that is mapped into the program's address space; there
14265may be several Page Tables, each one holding up to 4096 entries. A
14266Page Directory has up to 4096 entries, one each for every Page Table
14267that is currently in use.
104c1213 14268
8e04817f
AC
14269Without an argument, @kbd{info dos pde} displays the entire Page
14270Directory, and @kbd{info dos pte} displays all the entries in all of
14271the Page Tables. An argument, an integer expression, given to the
14272@kbd{info dos pde} command means display only that entry from the Page
14273Directory table. An argument given to the @kbd{info dos pte} command
14274means display entries from a single Page Table, the one pointed to by
14275the specified entry in the Page Directory.
104c1213 14276
8e04817f
AC
14277@cindex direct memory access (DMA) on MS-DOS
14278These commands are useful when your program uses @dfn{DMA} (Direct
14279Memory Access), which needs physical addresses to program the DMA
14280controller.
104c1213 14281
8e04817f 14282These commands are supported only with some DPMI servers.
104c1213 14283
8e04817f
AC
14284@cindex physical address from linear address
14285@item info dos address-pte @var{addr}
14286This command displays the Page Table entry for a specified linear
514c4d71
EZ
14287address. The argument @var{addr} is a linear address which should
14288already have the appropriate segment's base address added to it,
14289because this command accepts addresses which may belong to @emph{any}
14290segment. For example, here's how to display the Page Table entry for
14291the page where a variable @code{i} is stored:
104c1213 14292
b383017d 14293@smallexample
8e04817f
AC
14294@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
14295@exdent @code{Page Table entry for address 0x11a00d30:}
b383017d 14296@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
8e04817f 14297@end smallexample
104c1213 14298
8e04817f
AC
14299@noindent
14300This says that @code{i} is stored at offset @code{0xd30} from the page
514c4d71 14301whose physical base address is @code{0x02698000}, and shows all the
8e04817f 14302attributes of that page.
104c1213 14303
8e04817f
AC
14304Note that you must cast the addresses of variables to a @code{char *},
14305since otherwise the value of @code{__djgpp_base_address}, the base
14306address of all variables and functions in a @sc{djgpp} program, will
14307be added using the rules of C pointer arithmetics: if @code{i} is
14308declared an @code{int}, @value{GDBN} will add 4 times the value of
14309@code{__djgpp_base_address} to the address of @code{i}.
104c1213 14310
8e04817f
AC
14311Here's another example, it displays the Page Table entry for the
14312transfer buffer:
104c1213 14313
8e04817f
AC
14314@smallexample
14315@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
14316@exdent @code{Page Table entry for address 0x29110:}
14317@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
14318@end smallexample
104c1213 14319
8e04817f
AC
14320@noindent
14321(The @code{+ 3} offset is because the transfer buffer's address is the
514c4d71
EZ
143223rd member of the @code{_go32_info_block} structure.) The output
14323clearly shows that this DPMI server maps the addresses in conventional
14324memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and
14325linear (@code{0x29110}) addresses are identical.
104c1213 14326
8e04817f
AC
14327This command is supported only with some DPMI servers.
14328@end table
104c1213 14329
c45da7e6 14330@cindex DOS serial data link, remote debugging
a8f24a35
EZ
14331In addition to native debugging, the DJGPP port supports remote
14332debugging via a serial data link. The following commands are specific
14333to remote serial debugging in the DJGPP port of @value{GDBN}.
14334
14335@table @code
14336@kindex set com1base
14337@kindex set com1irq
14338@kindex set com2base
14339@kindex set com2irq
14340@kindex set com3base
14341@kindex set com3irq
14342@kindex set com4base
14343@kindex set com4irq
14344@item set com1base @var{addr}
14345This command sets the base I/O port address of the @file{COM1} serial
14346port.
14347
14348@item set com1irq @var{irq}
14349This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use
14350for the @file{COM1} serial port.
14351
14352There are similar commands @samp{set com2base}, @samp{set com3irq},
14353etc.@: for setting the port address and the @code{IRQ} lines for the
14354other 3 COM ports.
14355
14356@kindex show com1base
14357@kindex show com1irq
14358@kindex show com2base
14359@kindex show com2irq
14360@kindex show com3base
14361@kindex show com3irq
14362@kindex show com4base
14363@kindex show com4irq
14364The related commands @samp{show com1base}, @samp{show com1irq} etc.@:
14365display the current settings of the base address and the @code{IRQ}
14366lines used by the COM ports.
c45da7e6
EZ
14367
14368@item info serial
14369@kindex info serial
14370@cindex DOS serial port status
14371This command prints the status of the 4 DOS serial ports. For each
14372port, it prints whether it's active or not, its I/O base address and
14373IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the
14374counts of various errors encountered so far.
a8f24a35
EZ
14375@end table
14376
14377
78c47bea 14378@node Cygwin Native
79a6e687 14379@subsection Features for Debugging MS Windows PE Executables
78c47bea
PM
14380@cindex MS Windows debugging
14381@cindex native Cygwin debugging
14382@cindex Cygwin-specific commands
14383
be448670 14384@value{GDBN} supports native debugging of MS Windows programs, including
db2e3e2e
BW
14385DLLs with and without symbolic debugging information. There are various
14386additional Cygwin-specific commands, described in this section.
14387Working with DLLs that have no debugging symbols is described in
14388@ref{Non-debug DLL Symbols}.
78c47bea
PM
14389
14390@table @code
14391@kindex info w32
14392@item info w32
db2e3e2e 14393This is a prefix of MS Windows-specific commands which print
78c47bea
PM
14394information about the target system and important OS structures.
14395
14396@item info w32 selector
14397This command displays information returned by
14398the Win32 API @code{GetThreadSelectorEntry} function.
14399It takes an optional argument that is evaluated to
14400a long value to give the information about this given selector.
14401Without argument, this command displays information
d3e8051b 14402about the six segment registers.
78c47bea
PM
14403
14404@kindex info dll
14405@item info dll
db2e3e2e 14406This is a Cygwin-specific alias of @code{info shared}.
78c47bea
PM
14407
14408@kindex dll-symbols
14409@item dll-symbols
14410This command loads symbols from a dll similarly to
14411add-sym command but without the need to specify a base address.
14412
be90c084 14413@kindex set cygwin-exceptions
e16b02ee
EZ
14414@cindex debugging the Cygwin DLL
14415@cindex Cygwin DLL, debugging
be90c084 14416@item set cygwin-exceptions @var{mode}
e16b02ee
EZ
14417If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that
14418happen inside the Cygwin DLL. If @var{mode} is @code{off},
14419@value{GDBN} will delay recognition of exceptions, and may ignore some
14420exceptions which seem to be caused by internal Cygwin DLL
14421``bookkeeping''. This option is meant primarily for debugging the
14422Cygwin DLL itself; the default value is @code{off} to avoid annoying
14423@value{GDBN} users with false @code{SIGSEGV} signals.
be90c084
CF
14424
14425@kindex show cygwin-exceptions
14426@item show cygwin-exceptions
e16b02ee
EZ
14427Displays whether @value{GDBN} will break on exceptions that happen
14428inside the Cygwin DLL itself.
be90c084 14429
b383017d 14430@kindex set new-console
78c47bea 14431@item set new-console @var{mode}
b383017d 14432If @var{mode} is @code{on} the debuggee will
78c47bea
PM
14433be started in a new console on next start.
14434If @var{mode} is @code{off}i, the debuggee will
14435be started in the same console as the debugger.
14436
14437@kindex show new-console
14438@item show new-console
14439Displays whether a new console is used
14440when the debuggee is started.
14441
14442@kindex set new-group
14443@item set new-group @var{mode}
14444This boolean value controls whether the debuggee should
14445start a new group or stay in the same group as the debugger.
14446This affects the way the Windows OS handles
c8aa23ab 14447@samp{Ctrl-C}.
78c47bea
PM
14448
14449@kindex show new-group
14450@item show new-group
14451Displays current value of new-group boolean.
14452
14453@kindex set debugevents
14454@item set debugevents
219eec71
EZ
14455This boolean value adds debug output concerning kernel events related
14456to the debuggee seen by the debugger. This includes events that
14457signal thread and process creation and exit, DLL loading and
14458unloading, console interrupts, and debugging messages produced by the
14459Windows @code{OutputDebugString} API call.
78c47bea
PM
14460
14461@kindex set debugexec
14462@item set debugexec
b383017d 14463This boolean value adds debug output concerning execute events
219eec71 14464(such as resume thread) seen by the debugger.
78c47bea
PM
14465
14466@kindex set debugexceptions
14467@item set debugexceptions
219eec71
EZ
14468This boolean value adds debug output concerning exceptions in the
14469debuggee seen by the debugger.
78c47bea
PM
14470
14471@kindex set debugmemory
14472@item set debugmemory
219eec71
EZ
14473This boolean value adds debug output concerning debuggee memory reads
14474and writes by the debugger.
78c47bea
PM
14475
14476@kindex set shell
14477@item set shell
14478This boolean values specifies whether the debuggee is called
14479via a shell or directly (default value is on).
14480
14481@kindex show shell
14482@item show shell
14483Displays if the debuggee will be started with a shell.
14484
14485@end table
14486
be448670 14487@menu
79a6e687 14488* Non-debug DLL Symbols:: Support for DLLs without debugging symbols
be448670
CF
14489@end menu
14490
79a6e687
BW
14491@node Non-debug DLL Symbols
14492@subsubsection Support for DLLs without Debugging Symbols
be448670
CF
14493@cindex DLLs with no debugging symbols
14494@cindex Minimal symbols and DLLs
14495
14496Very often on windows, some of the DLLs that your program relies on do
14497not include symbolic debugging information (for example,
db2e3e2e 14498@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
be448670 14499symbols in a DLL, it relies on the minimal amount of symbolic
db2e3e2e 14500information contained in the DLL's export table. This section
be448670
CF
14501describes working with such symbols, known internally to @value{GDBN} as
14502``minimal symbols''.
14503
14504Note that before the debugged program has started execution, no DLLs
db2e3e2e 14505will have been loaded. The easiest way around this problem is simply to
be448670 14506start the program --- either by setting a breakpoint or letting the
db2e3e2e 14507program run once to completion. It is also possible to force
be448670 14508@value{GDBN} to load a particular DLL before starting the executable ---
12c27660 14509see the shared library information in @ref{Files}, or the
db2e3e2e 14510@code{dll-symbols} command in @ref{Cygwin Native}. Currently,
be448670
CF
14511explicitly loading symbols from a DLL with no debugging information will
14512cause the symbol names to be duplicated in @value{GDBN}'s lookup table,
14513which may adversely affect symbol lookup performance.
14514
79a6e687 14515@subsubsection DLL Name Prefixes
be448670
CF
14516
14517In keeping with the naming conventions used by the Microsoft debugging
14518tools, DLL export symbols are made available with a prefix based on the
14519DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
14520also entered into the symbol table, so @code{CreateFileA} is often
14521sufficient. In some cases there will be name clashes within a program
14522(particularly if the executable itself includes full debugging symbols)
14523necessitating the use of the fully qualified name when referring to the
14524contents of the DLL. Use single-quotes around the name to avoid the
14525exclamation mark (``!'') being interpreted as a language operator.
14526
14527Note that the internal name of the DLL may be all upper-case, even
14528though the file name of the DLL is lower-case, or vice-versa. Since
14529symbols within @value{GDBN} are @emph{case-sensitive} this may cause
14530some confusion. If in doubt, try the @code{info functions} and
0869d01b
NR
14531@code{info variables} commands or even @code{maint print msymbols}
14532(@pxref{Symbols}). Here's an example:
be448670
CF
14533
14534@smallexample
f7dc1244 14535(@value{GDBP}) info function CreateFileA
be448670
CF
14536All functions matching regular expression "CreateFileA":
14537
14538Non-debugging symbols:
145390x77e885f4 CreateFileA
145400x77e885f4 KERNEL32!CreateFileA
14541@end smallexample
14542
14543@smallexample
f7dc1244 14544(@value{GDBP}) info function !
be448670
CF
14545All functions matching regular expression "!":
14546
14547Non-debugging symbols:
145480x6100114c cygwin1!__assert
145490x61004034 cygwin1!_dll_crt0@@0
145500x61004240 cygwin1!dll_crt0(per_process *)
14551[etc...]
14552@end smallexample
14553
79a6e687 14554@subsubsection Working with Minimal Symbols
be448670
CF
14555
14556Symbols extracted from a DLL's export table do not contain very much
14557type information. All that @value{GDBN} can do is guess whether a symbol
14558refers to a function or variable depending on the linker section that
14559contains the symbol. Also note that the actual contents of the memory
14560contained in a DLL are not available unless the program is running. This
14561means that you cannot examine the contents of a variable or disassemble
14562a function within a DLL without a running program.
14563
14564Variables are generally treated as pointers and dereferenced
14565automatically. For this reason, it is often necessary to prefix a
14566variable name with the address-of operator (``&'') and provide explicit
14567type information in the command. Here's an example of the type of
14568problem:
14569
14570@smallexample
f7dc1244 14571(@value{GDBP}) print 'cygwin1!__argv'
be448670
CF
14572$1 = 268572168
14573@end smallexample
14574
14575@smallexample
f7dc1244 14576(@value{GDBP}) x 'cygwin1!__argv'
be448670
CF
145770x10021610: "\230y\""
14578@end smallexample
14579
14580And two possible solutions:
14581
14582@smallexample
f7dc1244 14583(@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
be448670
CF
14584$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
14585@end smallexample
14586
14587@smallexample
f7dc1244 14588(@value{GDBP}) x/2x &'cygwin1!__argv'
be448670 145890x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
f7dc1244 14590(@value{GDBP}) x/x 0x10021608
be448670 145910x10021608: 0x0022fd98
f7dc1244 14592(@value{GDBP}) x/s 0x0022fd98
be448670
CF
145930x22fd98: "/cygdrive/c/mydirectory/myprogram"
14594@end smallexample
14595
14596Setting a break point within a DLL is possible even before the program
14597starts execution. However, under these circumstances, @value{GDBN} can't
14598examine the initial instructions of the function in order to skip the
14599function's frame set-up code. You can work around this by using ``*&''
14600to set the breakpoint at a raw memory address:
14601
14602@smallexample
f7dc1244 14603(@value{GDBP}) break *&'python22!PyOS_Readline'
be448670
CF
14604Breakpoint 1 at 0x1e04eff0
14605@end smallexample
14606
14607The author of these extensions is not entirely convinced that setting a
14608break point within a shared DLL like @file{kernel32.dll} is completely
14609safe.
14610
14d6dd68 14611@node Hurd Native
79a6e687 14612@subsection Commands Specific to @sc{gnu} Hurd Systems
14d6dd68
EZ
14613@cindex @sc{gnu} Hurd debugging
14614
14615This subsection describes @value{GDBN} commands specific to the
14616@sc{gnu} Hurd native debugging.
14617
14618@table @code
14619@item set signals
14620@itemx set sigs
14621@kindex set signals@r{, Hurd command}
14622@kindex set sigs@r{, Hurd command}
14623This command toggles the state of inferior signal interception by
14624@value{GDBN}. Mach exceptions, such as breakpoint traps, are not
14625affected by this command. @code{sigs} is a shorthand alias for
14626@code{signals}.
14627
14628@item show signals
14629@itemx show sigs
14630@kindex show signals@r{, Hurd command}
14631@kindex show sigs@r{, Hurd command}
14632Show the current state of intercepting inferior's signals.
14633
14634@item set signal-thread
14635@itemx set sigthread
14636@kindex set signal-thread
14637@kindex set sigthread
14638This command tells @value{GDBN} which thread is the @code{libc} signal
14639thread. That thread is run when a signal is delivered to a running
14640process. @code{set sigthread} is the shorthand alias of @code{set
14641signal-thread}.
14642
14643@item show signal-thread
14644@itemx show sigthread
14645@kindex show signal-thread
14646@kindex show sigthread
14647These two commands show which thread will run when the inferior is
14648delivered a signal.
14649
14650@item set stopped
14651@kindex set stopped@r{, Hurd command}
14652This commands tells @value{GDBN} that the inferior process is stopped,
14653as with the @code{SIGSTOP} signal. The stopped process can be
14654continued by delivering a signal to it.
14655
14656@item show stopped
14657@kindex show stopped@r{, Hurd command}
14658This command shows whether @value{GDBN} thinks the debuggee is
14659stopped.
14660
14661@item set exceptions
14662@kindex set exceptions@r{, Hurd command}
14663Use this command to turn off trapping of exceptions in the inferior.
14664When exception trapping is off, neither breakpoints nor
14665single-stepping will work. To restore the default, set exception
14666trapping on.
14667
14668@item show exceptions
14669@kindex show exceptions@r{, Hurd command}
14670Show the current state of trapping exceptions in the inferior.
14671
14672@item set task pause
14673@kindex set task@r{, Hurd commands}
14674@cindex task attributes (@sc{gnu} Hurd)
14675@cindex pause current task (@sc{gnu} Hurd)
14676This command toggles task suspension when @value{GDBN} has control.
14677Setting it to on takes effect immediately, and the task is suspended
14678whenever @value{GDBN} gets control. Setting it to off will take
14679effect the next time the inferior is continued. If this option is set
14680to off, you can use @code{set thread default pause on} or @code{set
14681thread pause on} (see below) to pause individual threads.
14682
14683@item show task pause
14684@kindex show task@r{, Hurd commands}
14685Show the current state of task suspension.
14686
14687@item set task detach-suspend-count
14688@cindex task suspend count
14689@cindex detach from task, @sc{gnu} Hurd
14690This command sets the suspend count the task will be left with when
14691@value{GDBN} detaches from it.
14692
14693@item show task detach-suspend-count
14694Show the suspend count the task will be left with when detaching.
14695
14696@item set task exception-port
14697@itemx set task excp
14698@cindex task exception port, @sc{gnu} Hurd
14699This command sets the task exception port to which @value{GDBN} will
14700forward exceptions. The argument should be the value of the @dfn{send
14701rights} of the task. @code{set task excp} is a shorthand alias.
14702
14703@item set noninvasive
14704@cindex noninvasive task options
14705This command switches @value{GDBN} to a mode that is the least
14706invasive as far as interfering with the inferior is concerned. This
14707is the same as using @code{set task pause}, @code{set exceptions}, and
14708@code{set signals} to values opposite to the defaults.
14709
14710@item info send-rights
14711@itemx info receive-rights
14712@itemx info port-rights
14713@itemx info port-sets
14714@itemx info dead-names
14715@itemx info ports
14716@itemx info psets
14717@cindex send rights, @sc{gnu} Hurd
14718@cindex receive rights, @sc{gnu} Hurd
14719@cindex port rights, @sc{gnu} Hurd
14720@cindex port sets, @sc{gnu} Hurd
14721@cindex dead names, @sc{gnu} Hurd
14722These commands display information about, respectively, send rights,
14723receive rights, port rights, port sets, and dead names of a task.
14724There are also shorthand aliases: @code{info ports} for @code{info
14725port-rights} and @code{info psets} for @code{info port-sets}.
14726
14727@item set thread pause
14728@kindex set thread@r{, Hurd command}
14729@cindex thread properties, @sc{gnu} Hurd
14730@cindex pause current thread (@sc{gnu} Hurd)
14731This command toggles current thread suspension when @value{GDBN} has
14732control. Setting it to on takes effect immediately, and the current
14733thread is suspended whenever @value{GDBN} gets control. Setting it to
14734off will take effect the next time the inferior is continued.
14735Normally, this command has no effect, since when @value{GDBN} has
14736control, the whole task is suspended. However, if you used @code{set
14737task pause off} (see above), this command comes in handy to suspend
14738only the current thread.
14739
14740@item show thread pause
14741@kindex show thread@r{, Hurd command}
14742This command shows the state of current thread suspension.
14743
14744@item set thread run
d3e8051b 14745This command sets whether the current thread is allowed to run.
14d6dd68
EZ
14746
14747@item show thread run
14748Show whether the current thread is allowed to run.
14749
14750@item set thread detach-suspend-count
14751@cindex thread suspend count, @sc{gnu} Hurd
14752@cindex detach from thread, @sc{gnu} Hurd
14753This command sets the suspend count @value{GDBN} will leave on a
14754thread when detaching. This number is relative to the suspend count
14755found by @value{GDBN} when it notices the thread; use @code{set thread
14756takeover-suspend-count} to force it to an absolute value.
14757
14758@item show thread detach-suspend-count
14759Show the suspend count @value{GDBN} will leave on the thread when
14760detaching.
14761
14762@item set thread exception-port
14763@itemx set thread excp
14764Set the thread exception port to which to forward exceptions. This
14765overrides the port set by @code{set task exception-port} (see above).
14766@code{set thread excp} is the shorthand alias.
14767
14768@item set thread takeover-suspend-count
14769Normally, @value{GDBN}'s thread suspend counts are relative to the
14770value @value{GDBN} finds when it notices each thread. This command
14771changes the suspend counts to be absolute instead.
14772
14773@item set thread default
14774@itemx show thread default
14775@cindex thread default settings, @sc{gnu} Hurd
14776Each of the above @code{set thread} commands has a @code{set thread
14777default} counterpart (e.g., @code{set thread default pause}, @code{set
14778thread default exception-port}, etc.). The @code{thread default}
14779variety of commands sets the default thread properties for all
14780threads; you can then change the properties of individual threads with
14781the non-default commands.
14782@end table
14783
14784
a64548ea
EZ
14785@node Neutrino
14786@subsection QNX Neutrino
14787@cindex QNX Neutrino
14788
14789@value{GDBN} provides the following commands specific to the QNX
14790Neutrino target:
14791
14792@table @code
14793@item set debug nto-debug
14794@kindex set debug nto-debug
14795When set to on, enables debugging messages specific to the QNX
14796Neutrino support.
14797
14798@item show debug nto-debug
14799@kindex show debug nto-debug
14800Show the current state of QNX Neutrino messages.
14801@end table
14802
14803
8e04817f
AC
14804@node Embedded OS
14805@section Embedded Operating Systems
104c1213 14806
8e04817f
AC
14807This section describes configurations involving the debugging of
14808embedded operating systems that are available for several different
14809architectures.
d4f3574e 14810
8e04817f
AC
14811@menu
14812* VxWorks:: Using @value{GDBN} with VxWorks
14813@end menu
104c1213 14814
8e04817f
AC
14815@value{GDBN} includes the ability to debug programs running on
14816various real-time operating systems.
104c1213 14817
8e04817f
AC
14818@node VxWorks
14819@subsection Using @value{GDBN} with VxWorks
104c1213 14820
8e04817f 14821@cindex VxWorks
104c1213 14822
8e04817f 14823@table @code
104c1213 14824
8e04817f
AC
14825@kindex target vxworks
14826@item target vxworks @var{machinename}
14827A VxWorks system, attached via TCP/IP. The argument @var{machinename}
14828is the target system's machine name or IP address.
104c1213 14829
8e04817f 14830@end table
104c1213 14831
8e04817f
AC
14832On VxWorks, @code{load} links @var{filename} dynamically on the
14833current target system as well as adding its symbols in @value{GDBN}.
104c1213 14834
8e04817f
AC
14835@value{GDBN} enables developers to spawn and debug tasks running on networked
14836VxWorks targets from a Unix host. Already-running tasks spawned from
14837the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
14838both the Unix host and on the VxWorks target. The program
14839@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
14840installed with the name @code{vxgdb}, to distinguish it from a
14841@value{GDBN} for debugging programs on the host itself.)
104c1213 14842
8e04817f
AC
14843@table @code
14844@item VxWorks-timeout @var{args}
14845@kindex vxworks-timeout
14846All VxWorks-based targets now support the option @code{vxworks-timeout}.
14847This option is set by the user, and @var{args} represents the number of
14848seconds @value{GDBN} waits for responses to rpc's. You might use this if
14849your VxWorks target is a slow software simulator or is on the far side
14850of a thin network line.
14851@end table
104c1213 14852
8e04817f
AC
14853The following information on connecting to VxWorks was current when
14854this manual was produced; newer releases of VxWorks may use revised
14855procedures.
104c1213 14856
4644b6e3 14857@findex INCLUDE_RDB
8e04817f
AC
14858To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
14859to include the remote debugging interface routines in the VxWorks
14860library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
14861VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
14862kernel. The resulting kernel contains @file{rdb.a}, and spawns the
14863source debugging task @code{tRdbTask} when VxWorks is booted. For more
14864information on configuring and remaking VxWorks, see the manufacturer's
14865manual.
14866@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
104c1213 14867
8e04817f
AC
14868Once you have included @file{rdb.a} in your VxWorks system image and set
14869your Unix execution search path to find @value{GDBN}, you are ready to
14870run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
14871@code{vxgdb}, depending on your installation).
104c1213 14872
8e04817f 14873@value{GDBN} comes up showing the prompt:
104c1213 14874
474c8240 14875@smallexample
8e04817f 14876(vxgdb)
474c8240 14877@end smallexample
104c1213 14878
8e04817f
AC
14879@menu
14880* VxWorks Connection:: Connecting to VxWorks
14881* VxWorks Download:: VxWorks download
14882* VxWorks Attach:: Running tasks
14883@end menu
104c1213 14884
8e04817f
AC
14885@node VxWorks Connection
14886@subsubsection Connecting to VxWorks
104c1213 14887
8e04817f
AC
14888The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
14889network. To connect to a target whose host name is ``@code{tt}'', type:
104c1213 14890
474c8240 14891@smallexample
8e04817f 14892(vxgdb) target vxworks tt
474c8240 14893@end smallexample
104c1213 14894
8e04817f
AC
14895@need 750
14896@value{GDBN} displays messages like these:
104c1213 14897
8e04817f
AC
14898@smallexample
14899Attaching remote machine across net...
14900Connected to tt.
14901@end smallexample
104c1213 14902
8e04817f
AC
14903@need 1000
14904@value{GDBN} then attempts to read the symbol tables of any object modules
14905loaded into the VxWorks target since it was last booted. @value{GDBN} locates
14906these files by searching the directories listed in the command search
79a6e687 14907path (@pxref{Environment, ,Your Program's Environment}); if it fails
8e04817f 14908to find an object file, it displays a message such as:
5d161b24 14909
474c8240 14910@smallexample
8e04817f 14911prog.o: No such file or directory.
474c8240 14912@end smallexample
104c1213 14913
8e04817f
AC
14914When this happens, add the appropriate directory to the search path with
14915the @value{GDBN} command @code{path}, and execute the @code{target}
14916command again.
104c1213 14917
8e04817f 14918@node VxWorks Download
79a6e687 14919@subsubsection VxWorks Download
104c1213 14920
8e04817f
AC
14921@cindex download to VxWorks
14922If you have connected to the VxWorks target and you want to debug an
14923object that has not yet been loaded, you can use the @value{GDBN}
14924@code{load} command to download a file from Unix to VxWorks
14925incrementally. The object file given as an argument to the @code{load}
14926command is actually opened twice: first by the VxWorks target in order
14927to download the code, then by @value{GDBN} in order to read the symbol
14928table. This can lead to problems if the current working directories on
14929the two systems differ. If both systems have NFS mounted the same
14930filesystems, you can avoid these problems by using absolute paths.
14931Otherwise, it is simplest to set the working directory on both systems
14932to the directory in which the object file resides, and then to reference
14933the file by its name, without any path. For instance, a program
14934@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
14935and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
14936program, type this on VxWorks:
104c1213 14937
474c8240 14938@smallexample
8e04817f 14939-> cd "@var{vxpath}/vw/demo/rdb"
474c8240 14940@end smallexample
104c1213 14941
8e04817f
AC
14942@noindent
14943Then, in @value{GDBN}, type:
104c1213 14944
474c8240 14945@smallexample
8e04817f
AC
14946(vxgdb) cd @var{hostpath}/vw/demo/rdb
14947(vxgdb) load prog.o
474c8240 14948@end smallexample
104c1213 14949
8e04817f 14950@value{GDBN} displays a response similar to this:
104c1213 14951
8e04817f
AC
14952@smallexample
14953Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
14954@end smallexample
104c1213 14955
8e04817f
AC
14956You can also use the @code{load} command to reload an object module
14957after editing and recompiling the corresponding source file. Note that
14958this makes @value{GDBN} delete all currently-defined breakpoints,
14959auto-displays, and convenience variables, and to clear the value
14960history. (This is necessary in order to preserve the integrity of
14961debugger's data structures that reference the target system's symbol
14962table.)
104c1213 14963
8e04817f 14964@node VxWorks Attach
79a6e687 14965@subsubsection Running Tasks
104c1213
JM
14966
14967@cindex running VxWorks tasks
14968You can also attach to an existing task using the @code{attach} command as
14969follows:
14970
474c8240 14971@smallexample
104c1213 14972(vxgdb) attach @var{task}
474c8240 14973@end smallexample
104c1213
JM
14974
14975@noindent
14976where @var{task} is the VxWorks hexadecimal task ID. The task can be running
14977or suspended when you attach to it. Running tasks are suspended at
14978the time of attachment.
14979
6d2ebf8b 14980@node Embedded Processors
104c1213
JM
14981@section Embedded Processors
14982
14983This section goes into details specific to particular embedded
14984configurations.
14985
c45da7e6
EZ
14986@cindex send command to simulator
14987Whenever a specific embedded processor has a simulator, @value{GDBN}
14988allows to send an arbitrary command to the simulator.
14989
14990@table @code
14991@item sim @var{command}
14992@kindex sim@r{, a command}
14993Send an arbitrary @var{command} string to the simulator. Consult the
14994documentation for the specific simulator in use for information about
14995acceptable commands.
14996@end table
14997
7d86b5d5 14998
104c1213 14999@menu
c45da7e6 15000* ARM:: ARM RDI
172c2a43 15001* M32R/D:: Renesas M32R/D
104c1213 15002* M68K:: Motorola M68K
104c1213 15003* MIPS Embedded:: MIPS Embedded
a37295f9 15004* OpenRISC 1000:: OpenRisc 1000
104c1213 15005* PA:: HP PA Embedded
4acd40f3 15006* PowerPC Embedded:: PowerPC Embedded
104c1213
JM
15007* Sparclet:: Tsqware Sparclet
15008* Sparclite:: Fujitsu Sparclite
104c1213 15009* Z8000:: Zilog Z8000
a64548ea
EZ
15010* AVR:: Atmel AVR
15011* CRIS:: CRIS
15012* Super-H:: Renesas Super-H
104c1213
JM
15013@end menu
15014
6d2ebf8b 15015@node ARM
104c1213 15016@subsection ARM
c45da7e6 15017@cindex ARM RDI
104c1213
JM
15018
15019@table @code
8e04817f
AC
15020@kindex target rdi
15021@item target rdi @var{dev}
15022ARM Angel monitor, via RDI library interface to ADP protocol. You may
15023use this target to communicate with both boards running the Angel
15024monitor, or with the EmbeddedICE JTAG debug device.
15025
15026@kindex target rdp
15027@item target rdp @var{dev}
15028ARM Demon monitor.
15029
15030@end table
15031
e2f4edfd
EZ
15032@value{GDBN} provides the following ARM-specific commands:
15033
15034@table @code
15035@item set arm disassembler
15036@kindex set arm
15037This commands selects from a list of disassembly styles. The
15038@code{"std"} style is the standard style.
15039
15040@item show arm disassembler
15041@kindex show arm
15042Show the current disassembly style.
15043
15044@item set arm apcs32
15045@cindex ARM 32-bit mode
15046This command toggles ARM operation mode between 32-bit and 26-bit.
15047
15048@item show arm apcs32
15049Display the current usage of the ARM 32-bit mode.
15050
15051@item set arm fpu @var{fputype}
15052This command sets the ARM floating-point unit (FPU) type. The
15053argument @var{fputype} can be one of these:
15054
15055@table @code
15056@item auto
15057Determine the FPU type by querying the OS ABI.
15058@item softfpa
15059Software FPU, with mixed-endian doubles on little-endian ARM
15060processors.
15061@item fpa
15062GCC-compiled FPA co-processor.
15063@item softvfp
15064Software FPU with pure-endian doubles.
15065@item vfp
15066VFP co-processor.
15067@end table
15068
15069@item show arm fpu
15070Show the current type of the FPU.
15071
15072@item set arm abi
15073This command forces @value{GDBN} to use the specified ABI.
15074
15075@item show arm abi
15076Show the currently used ABI.
15077
0428b8f5
DJ
15078@item set arm fallback-mode (arm|thumb|auto)
15079@value{GDBN} uses the symbol table, when available, to determine
15080whether instructions are ARM or Thumb. This command controls
15081@value{GDBN}'s default behavior when the symbol table is not
15082available. The default is @samp{auto}, which causes @value{GDBN} to
15083use the current execution mode (from the @code{T} bit in the @code{CPSR}
15084register).
15085
15086@item show arm fallback-mode
15087Show the current fallback instruction mode.
15088
15089@item set arm force-mode (arm|thumb|auto)
15090This command overrides use of the symbol table to determine whether
15091instructions are ARM or Thumb. The default is @samp{auto}, which
15092causes @value{GDBN} to use the symbol table and then the setting
15093of @samp{set arm fallback-mode}.
15094
15095@item show arm force-mode
15096Show the current forced instruction mode.
15097
e2f4edfd
EZ
15098@item set debug arm
15099Toggle whether to display ARM-specific debugging messages from the ARM
15100target support subsystem.
15101
15102@item show debug arm
15103Show whether ARM-specific debugging messages are enabled.
15104@end table
15105
c45da7e6
EZ
15106The following commands are available when an ARM target is debugged
15107using the RDI interface:
15108
15109@table @code
15110@item rdilogfile @r{[}@var{file}@r{]}
15111@kindex rdilogfile
15112@cindex ADP (Angel Debugger Protocol) logging
15113Set the filename for the ADP (Angel Debugger Protocol) packet log.
15114With an argument, sets the log file to the specified @var{file}. With
15115no argument, show the current log file name. The default log file is
15116@file{rdi.log}.
15117
15118@item rdilogenable @r{[}@var{arg}@r{]}
15119@kindex rdilogenable
15120Control logging of ADP packets. With an argument of 1 or @code{"yes"}
15121enables logging, with an argument 0 or @code{"no"} disables it. With
15122no arguments displays the current setting. When logging is enabled,
15123ADP packets exchanged between @value{GDBN} and the RDI target device
15124are logged to a file.
15125
15126@item set rdiromatzero
15127@kindex set rdiromatzero
15128@cindex ROM at zero address, RDI
15129Tell @value{GDBN} whether the target has ROM at address 0. If on,
15130vector catching is disabled, so that zero address can be used. If off
15131(the default), vector catching is enabled. For this command to take
15132effect, it needs to be invoked prior to the @code{target rdi} command.
15133
15134@item show rdiromatzero
15135@kindex show rdiromatzero
15136Show the current setting of ROM at zero address.
15137
15138@item set rdiheartbeat
15139@kindex set rdiheartbeat
15140@cindex RDI heartbeat
15141Enable or disable RDI heartbeat packets. It is not recommended to
15142turn on this option, since it confuses ARM and EPI JTAG interface, as
15143well as the Angel monitor.
15144
15145@item show rdiheartbeat
15146@kindex show rdiheartbeat
15147Show the setting of RDI heartbeat packets.
15148@end table
15149
e2f4edfd 15150
8e04817f 15151@node M32R/D
ba04e063 15152@subsection Renesas M32R/D and M32R/SDI
8e04817f
AC
15153
15154@table @code
8e04817f
AC
15155@kindex target m32r
15156@item target m32r @var{dev}
172c2a43 15157Renesas M32R/D ROM monitor.
8e04817f 15158
fb3e19c0
KI
15159@kindex target m32rsdi
15160@item target m32rsdi @var{dev}
15161Renesas M32R SDI server, connected via parallel port to the board.
721c2651
EZ
15162@end table
15163
15164The following @value{GDBN} commands are specific to the M32R monitor:
15165
15166@table @code
15167@item set download-path @var{path}
15168@kindex set download-path
15169@cindex find downloadable @sc{srec} files (M32R)
d3e8051b 15170Set the default path for finding downloadable @sc{srec} files.
721c2651
EZ
15171
15172@item show download-path
15173@kindex show download-path
15174Show the default path for downloadable @sc{srec} files.
fb3e19c0 15175
721c2651
EZ
15176@item set board-address @var{addr}
15177@kindex set board-address
15178@cindex M32-EVA target board address
15179Set the IP address for the M32R-EVA target board.
15180
15181@item show board-address
15182@kindex show board-address
15183Show the current IP address of the target board.
15184
15185@item set server-address @var{addr}
15186@kindex set server-address
15187@cindex download server address (M32R)
15188Set the IP address for the download server, which is the @value{GDBN}'s
15189host machine.
15190
15191@item show server-address
15192@kindex show server-address
15193Display the IP address of the download server.
15194
15195@item upload @r{[}@var{file}@r{]}
15196@kindex upload@r{, M32R}
15197Upload the specified @sc{srec} @var{file} via the monitor's Ethernet
15198upload capability. If no @var{file} argument is given, the current
15199executable file is uploaded.
15200
15201@item tload @r{[}@var{file}@r{]}
15202@kindex tload@r{, M32R}
15203Test the @code{upload} command.
8e04817f
AC
15204@end table
15205
ba04e063
EZ
15206The following commands are available for M32R/SDI:
15207
15208@table @code
15209@item sdireset
15210@kindex sdireset
15211@cindex reset SDI connection, M32R
15212This command resets the SDI connection.
15213
15214@item sdistatus
15215@kindex sdistatus
15216This command shows the SDI connection status.
15217
15218@item debug_chaos
15219@kindex debug_chaos
15220@cindex M32R/Chaos debugging
15221Instructs the remote that M32R/Chaos debugging is to be used.
15222
15223@item use_debug_dma
15224@kindex use_debug_dma
15225Instructs the remote to use the DEBUG_DMA method of accessing memory.
15226
15227@item use_mon_code
15228@kindex use_mon_code
15229Instructs the remote to use the MON_CODE method of accessing memory.
15230
15231@item use_ib_break
15232@kindex use_ib_break
15233Instructs the remote to set breakpoints by IB break.
15234
15235@item use_dbt_break
15236@kindex use_dbt_break
15237Instructs the remote to set breakpoints by DBT.
15238@end table
15239
8e04817f
AC
15240@node M68K
15241@subsection M68k
15242
7ce59000
DJ
15243The Motorola m68k configuration includes ColdFire support, and a
15244target command for the following ROM monitor.
8e04817f
AC
15245
15246@table @code
15247
8e04817f
AC
15248@kindex target dbug
15249@item target dbug @var{dev}
15250dBUG ROM monitor for Motorola ColdFire.
15251
8e04817f
AC
15252@end table
15253
8e04817f
AC
15254@node MIPS Embedded
15255@subsection MIPS Embedded
15256
15257@cindex MIPS boards
15258@value{GDBN} can use the MIPS remote debugging protocol to talk to a
15259MIPS board attached to a serial line. This is available when
15260you configure @value{GDBN} with @samp{--target=mips-idt-ecoff}.
104c1213 15261
8e04817f
AC
15262@need 1000
15263Use these @value{GDBN} commands to specify the connection to your target board:
104c1213 15264
8e04817f
AC
15265@table @code
15266@item target mips @var{port}
15267@kindex target mips @var{port}
15268To run a program on the board, start up @code{@value{GDBP}} with the
15269name of your program as the argument. To connect to the board, use the
15270command @samp{target mips @var{port}}, where @var{port} is the name of
15271the serial port connected to the board. If the program has not already
15272been downloaded to the board, you may use the @code{load} command to
15273download it. You can then use all the usual @value{GDBN} commands.
104c1213 15274
8e04817f
AC
15275For example, this sequence connects to the target board through a serial
15276port, and loads and runs a program called @var{prog} through the
15277debugger:
104c1213 15278
474c8240 15279@smallexample
8e04817f
AC
15280host$ @value{GDBP} @var{prog}
15281@value{GDBN} is free software and @dots{}
15282(@value{GDBP}) target mips /dev/ttyb
15283(@value{GDBP}) load @var{prog}
15284(@value{GDBP}) run
474c8240 15285@end smallexample
104c1213 15286
8e04817f
AC
15287@item target mips @var{hostname}:@var{portnumber}
15288On some @value{GDBN} host configurations, you can specify a TCP
15289connection (for instance, to a serial line managed by a terminal
15290concentrator) instead of a serial port, using the syntax
15291@samp{@var{hostname}:@var{portnumber}}.
104c1213 15292
8e04817f
AC
15293@item target pmon @var{port}
15294@kindex target pmon @var{port}
15295PMON ROM monitor.
104c1213 15296
8e04817f
AC
15297@item target ddb @var{port}
15298@kindex target ddb @var{port}
15299NEC's DDB variant of PMON for Vr4300.
104c1213 15300
8e04817f
AC
15301@item target lsi @var{port}
15302@kindex target lsi @var{port}
15303LSI variant of PMON.
104c1213 15304
8e04817f
AC
15305@kindex target r3900
15306@item target r3900 @var{dev}
15307Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
104c1213 15308
8e04817f
AC
15309@kindex target array
15310@item target array @var{dev}
15311Array Tech LSI33K RAID controller board.
104c1213 15312
8e04817f 15313@end table
104c1213 15314
104c1213 15315
8e04817f
AC
15316@noindent
15317@value{GDBN} also supports these special commands for MIPS targets:
104c1213 15318
8e04817f 15319@table @code
8e04817f
AC
15320@item set mipsfpu double
15321@itemx set mipsfpu single
15322@itemx set mipsfpu none
a64548ea 15323@itemx set mipsfpu auto
8e04817f
AC
15324@itemx show mipsfpu
15325@kindex set mipsfpu
15326@kindex show mipsfpu
15327@cindex MIPS remote floating point
15328@cindex floating point, MIPS remote
15329If your target board does not support the MIPS floating point
15330coprocessor, you should use the command @samp{set mipsfpu none} (if you
15331need this, you may wish to put the command in your @value{GDBN} init
15332file). This tells @value{GDBN} how to find the return value of
15333functions which return floating point values. It also allows
15334@value{GDBN} to avoid saving the floating point registers when calling
15335functions on the board. If you are using a floating point coprocessor
15336with only single precision floating point support, as on the @sc{r4650}
15337processor, use the command @samp{set mipsfpu single}. The default
15338double precision floating point coprocessor may be selected using
15339@samp{set mipsfpu double}.
104c1213 15340
8e04817f
AC
15341In previous versions the only choices were double precision or no
15342floating point, so @samp{set mipsfpu on} will select double precision
15343and @samp{set mipsfpu off} will select no floating point.
104c1213 15344
8e04817f
AC
15345As usual, you can inquire about the @code{mipsfpu} variable with
15346@samp{show mipsfpu}.
104c1213 15347
8e04817f
AC
15348@item set timeout @var{seconds}
15349@itemx set retransmit-timeout @var{seconds}
15350@itemx show timeout
15351@itemx show retransmit-timeout
15352@cindex @code{timeout}, MIPS protocol
15353@cindex @code{retransmit-timeout}, MIPS protocol
15354@kindex set timeout
15355@kindex show timeout
15356@kindex set retransmit-timeout
15357@kindex show retransmit-timeout
15358You can control the timeout used while waiting for a packet, in the MIPS
15359remote protocol, with the @code{set timeout @var{seconds}} command. The
15360default is 5 seconds. Similarly, you can control the timeout used while
15361waiting for an acknowledgement of a packet with the @code{set
15362retransmit-timeout @var{seconds}} command. The default is 3 seconds.
15363You can inspect both values with @code{show timeout} and @code{show
15364retransmit-timeout}. (These commands are @emph{only} available when
15365@value{GDBN} is configured for @samp{--target=mips-idt-ecoff}.)
104c1213 15366
8e04817f
AC
15367The timeout set by @code{set timeout} does not apply when @value{GDBN}
15368is waiting for your program to stop. In that case, @value{GDBN} waits
15369forever because it has no way of knowing how long the program is going
15370to run before stopping.
ba04e063
EZ
15371
15372@item set syn-garbage-limit @var{num}
15373@kindex set syn-garbage-limit@r{, MIPS remote}
15374@cindex synchronize with remote MIPS target
15375Limit the maximum number of characters @value{GDBN} should ignore when
15376it tries to synchronize with the remote target. The default is 10
15377characters. Setting the limit to -1 means there's no limit.
15378
15379@item show syn-garbage-limit
15380@kindex show syn-garbage-limit@r{, MIPS remote}
15381Show the current limit on the number of characters to ignore when
15382trying to synchronize with the remote system.
15383
15384@item set monitor-prompt @var{prompt}
15385@kindex set monitor-prompt@r{, MIPS remote}
15386@cindex remote monitor prompt
15387Tell @value{GDBN} to expect the specified @var{prompt} string from the
15388remote monitor. The default depends on the target:
15389@table @asis
15390@item pmon target
15391@samp{PMON}
15392@item ddb target
15393@samp{NEC010}
15394@item lsi target
15395@samp{PMON>}
15396@end table
15397
15398@item show monitor-prompt
15399@kindex show monitor-prompt@r{, MIPS remote}
15400Show the current strings @value{GDBN} expects as the prompt from the
15401remote monitor.
15402
15403@item set monitor-warnings
15404@kindex set monitor-warnings@r{, MIPS remote}
15405Enable or disable monitor warnings about hardware breakpoints. This
15406has effect only for the @code{lsi} target. When on, @value{GDBN} will
15407display warning messages whose codes are returned by the @code{lsi}
15408PMON monitor for breakpoint commands.
15409
15410@item show monitor-warnings
15411@kindex show monitor-warnings@r{, MIPS remote}
15412Show the current setting of printing monitor warnings.
15413
15414@item pmon @var{command}
15415@kindex pmon@r{, MIPS remote}
15416@cindex send PMON command
15417This command allows sending an arbitrary @var{command} string to the
15418monitor. The monitor must be in debug mode for this to work.
8e04817f 15419@end table
104c1213 15420
a37295f9
MM
15421@node OpenRISC 1000
15422@subsection OpenRISC 1000
15423@cindex OpenRISC 1000
15424
15425@cindex or1k boards
15426See OR1k Architecture document (@uref{www.opencores.org}) for more information
15427about platform and commands.
15428
15429@table @code
15430
15431@kindex target jtag
15432@item target jtag jtag://@var{host}:@var{port}
15433
15434Connects to remote JTAG server.
15435JTAG remote server can be either an or1ksim or JTAG server,
15436connected via parallel port to the board.
15437
15438Example: @code{target jtag jtag://localhost:9999}
15439
15440@kindex or1ksim
15441@item or1ksim @var{command}
15442If connected to @code{or1ksim} OpenRISC 1000 Architectural
15443Simulator, proprietary commands can be executed.
15444
15445@kindex info or1k spr
15446@item info or1k spr
15447Displays spr groups.
15448
15449@item info or1k spr @var{group}
15450@itemx info or1k spr @var{groupno}
15451Displays register names in selected group.
15452
15453@item info or1k spr @var{group} @var{register}
15454@itemx info or1k spr @var{register}
15455@itemx info or1k spr @var{groupno} @var{registerno}
15456@itemx info or1k spr @var{registerno}
15457Shows information about specified spr register.
15458
15459@kindex spr
15460@item spr @var{group} @var{register} @var{value}
15461@itemx spr @var{register @var{value}}
15462@itemx spr @var{groupno} @var{registerno @var{value}}
15463@itemx spr @var{registerno @var{value}}
15464Writes @var{value} to specified spr register.
15465@end table
15466
15467Some implementations of OpenRISC 1000 Architecture also have hardware trace.
15468It is very similar to @value{GDBN} trace, except it does not interfere with normal
15469program execution and is thus much faster. Hardware breakpoints/watchpoint
15470triggers can be set using:
15471@table @code
15472@item $LEA/$LDATA
15473Load effective address/data
15474@item $SEA/$SDATA
15475Store effective address/data
15476@item $AEA/$ADATA
15477Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
15478@item $FETCH
15479Fetch data
15480@end table
15481
15482When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
15483@code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
15484
15485@code{htrace} commands:
15486@cindex OpenRISC 1000 htrace
15487@table @code
15488@kindex hwatch
15489@item hwatch @var{conditional}
d3e8051b 15490Set hardware watchpoint on combination of Load/Store Effective Address(es)
a37295f9
MM
15491or Data. For example:
15492
15493@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
15494
15495@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
15496
4644b6e3 15497@kindex htrace
a37295f9
MM
15498@item htrace info
15499Display information about current HW trace configuration.
15500
a37295f9
MM
15501@item htrace trigger @var{conditional}
15502Set starting criteria for HW trace.
15503
a37295f9
MM
15504@item htrace qualifier @var{conditional}
15505Set acquisition qualifier for HW trace.
15506
a37295f9
MM
15507@item htrace stop @var{conditional}
15508Set HW trace stopping criteria.
15509
f153cc92 15510@item htrace record [@var{data}]*
a37295f9
MM
15511Selects the data to be recorded, when qualifier is met and HW trace was
15512triggered.
15513
a37295f9 15514@item htrace enable
a37295f9
MM
15515@itemx htrace disable
15516Enables/disables the HW trace.
15517
f153cc92 15518@item htrace rewind [@var{filename}]
a37295f9
MM
15519Clears currently recorded trace data.
15520
15521If filename is specified, new trace file is made and any newly collected data
15522will be written there.
15523
f153cc92 15524@item htrace print [@var{start} [@var{len}]]
a37295f9
MM
15525Prints trace buffer, using current record configuration.
15526
a37295f9
MM
15527@item htrace mode continuous
15528Set continuous trace mode.
15529
a37295f9
MM
15530@item htrace mode suspend
15531Set suspend trace mode.
15532
15533@end table
15534
4acd40f3
TJB
15535@node PowerPC Embedded
15536@subsection PowerPC Embedded
104c1213 15537
55eddb0f
DJ
15538@value{GDBN} provides the following PowerPC-specific commands:
15539
104c1213 15540@table @code
55eddb0f
DJ
15541@kindex set powerpc
15542@item set powerpc soft-float
15543@itemx show powerpc soft-float
15544Force @value{GDBN} to use (or not use) a software floating point calling
15545convention. By default, @value{GDBN} selects the calling convention based
15546on the selected architecture and the provided executable file.
15547
15548@item set powerpc vector-abi
15549@itemx show powerpc vector-abi
15550Force @value{GDBN} to use the specified calling convention for vector
15551arguments and return values. The valid options are @samp{auto};
15552@samp{generic}, to avoid vector registers even if they are present;
15553@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE
15554registers. By default, @value{GDBN} selects the calling convention
15555based on the selected architecture and the provided executable file.
15556
8e04817f
AC
15557@kindex target dink32
15558@item target dink32 @var{dev}
15559DINK32 ROM monitor.
104c1213 15560
8e04817f
AC
15561@kindex target ppcbug
15562@item target ppcbug @var{dev}
15563@kindex target ppcbug1
15564@item target ppcbug1 @var{dev}
15565PPCBUG ROM monitor for PowerPC.
104c1213 15566
8e04817f
AC
15567@kindex target sds
15568@item target sds @var{dev}
15569SDS monitor, running on a PowerPC board (such as Motorola's ADS).
c45da7e6 15570@end table
8e04817f 15571
c45da7e6 15572@cindex SDS protocol
d52fb0e9 15573The following commands specific to the SDS protocol are supported
55eddb0f 15574by @value{GDBN}:
c45da7e6
EZ
15575
15576@table @code
15577@item set sdstimeout @var{nsec}
15578@kindex set sdstimeout
15579Set the timeout for SDS protocol reads to be @var{nsec} seconds. The
15580default is 2 seconds.
15581
15582@item show sdstimeout
15583@kindex show sdstimeout
15584Show the current value of the SDS timeout.
15585
15586@item sds @var{command}
15587@kindex sds@r{, a command}
15588Send the specified @var{command} string to the SDS monitor.
8e04817f
AC
15589@end table
15590
c45da7e6 15591
8e04817f
AC
15592@node PA
15593@subsection HP PA Embedded
104c1213
JM
15594
15595@table @code
15596
8e04817f
AC
15597@kindex target op50n
15598@item target op50n @var{dev}
15599OP50N monitor, running on an OKI HPPA board.
15600
15601@kindex target w89k
15602@item target w89k @var{dev}
15603W89K monitor, running on a Winbond HPPA board.
104c1213
JM
15604
15605@end table
15606
8e04817f
AC
15607@node Sparclet
15608@subsection Tsqware Sparclet
104c1213 15609
8e04817f
AC
15610@cindex Sparclet
15611
15612@value{GDBN} enables developers to debug tasks running on
15613Sparclet targets from a Unix host.
15614@value{GDBN} uses code that runs on
15615both the Unix host and on the Sparclet target. The program
15616@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213 15617
8e04817f
AC
15618@table @code
15619@item remotetimeout @var{args}
15620@kindex remotetimeout
15621@value{GDBN} supports the option @code{remotetimeout}.
15622This option is set by the user, and @var{args} represents the number of
15623seconds @value{GDBN} waits for responses.
104c1213
JM
15624@end table
15625
8e04817f
AC
15626@cindex compiling, on Sparclet
15627When compiling for debugging, include the options @samp{-g} to get debug
15628information and @samp{-Ttext} to relocate the program to where you wish to
15629load it on the target. You may also want to add the options @samp{-n} or
15630@samp{-N} in order to reduce the size of the sections. Example:
104c1213 15631
474c8240 15632@smallexample
8e04817f 15633sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
474c8240 15634@end smallexample
104c1213 15635
8e04817f 15636You can use @code{objdump} to verify that the addresses are what you intended:
104c1213 15637
474c8240 15638@smallexample
8e04817f 15639sparclet-aout-objdump --headers --syms prog
474c8240 15640@end smallexample
104c1213 15641
8e04817f
AC
15642@cindex running, on Sparclet
15643Once you have set
15644your Unix execution search path to find @value{GDBN}, you are ready to
15645run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
15646(or @code{sparclet-aout-gdb}, depending on your installation).
104c1213 15647
8e04817f
AC
15648@value{GDBN} comes up showing the prompt:
15649
474c8240 15650@smallexample
8e04817f 15651(gdbslet)
474c8240 15652@end smallexample
104c1213
JM
15653
15654@menu
8e04817f
AC
15655* Sparclet File:: Setting the file to debug
15656* Sparclet Connection:: Connecting to Sparclet
15657* Sparclet Download:: Sparclet download
15658* Sparclet Execution:: Running and debugging
104c1213
JM
15659@end menu
15660
8e04817f 15661@node Sparclet File
79a6e687 15662@subsubsection Setting File to Debug
104c1213 15663
8e04817f 15664The @value{GDBN} command @code{file} lets you choose with program to debug.
104c1213 15665
474c8240 15666@smallexample
8e04817f 15667(gdbslet) file prog
474c8240 15668@end smallexample
104c1213 15669
8e04817f
AC
15670@need 1000
15671@value{GDBN} then attempts to read the symbol table of @file{prog}.
15672@value{GDBN} locates
15673the file by searching the directories listed in the command search
15674path.
12c27660 15675If the file was compiled with debug information (option @samp{-g}), source
8e04817f
AC
15676files will be searched as well.
15677@value{GDBN} locates
15678the source files by searching the directories listed in the directory search
79a6e687 15679path (@pxref{Environment, ,Your Program's Environment}).
8e04817f
AC
15680If it fails
15681to find a file, it displays a message such as:
104c1213 15682
474c8240 15683@smallexample
8e04817f 15684prog: No such file or directory.
474c8240 15685@end smallexample
104c1213 15686
8e04817f
AC
15687When this happens, add the appropriate directories to the search paths with
15688the @value{GDBN} commands @code{path} and @code{dir}, and execute the
15689@code{target} command again.
104c1213 15690
8e04817f
AC
15691@node Sparclet Connection
15692@subsubsection Connecting to Sparclet
104c1213 15693
8e04817f
AC
15694The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
15695To connect to a target on serial port ``@code{ttya}'', type:
104c1213 15696
474c8240 15697@smallexample
8e04817f
AC
15698(gdbslet) target sparclet /dev/ttya
15699Remote target sparclet connected to /dev/ttya
15700main () at ../prog.c:3
474c8240 15701@end smallexample
104c1213 15702
8e04817f
AC
15703@need 750
15704@value{GDBN} displays messages like these:
104c1213 15705
474c8240 15706@smallexample
8e04817f 15707Connected to ttya.
474c8240 15708@end smallexample
104c1213 15709
8e04817f 15710@node Sparclet Download
79a6e687 15711@subsubsection Sparclet Download
104c1213 15712
8e04817f
AC
15713@cindex download to Sparclet
15714Once connected to the Sparclet target,
15715you can use the @value{GDBN}
15716@code{load} command to download the file from the host to the target.
15717The file name and load offset should be given as arguments to the @code{load}
15718command.
15719Since the file format is aout, the program must be loaded to the starting
15720address. You can use @code{objdump} to find out what this value is. The load
15721offset is an offset which is added to the VMA (virtual memory address)
15722of each of the file's sections.
15723For instance, if the program
15724@file{prog} was linked to text address 0x1201000, with data at 0x12010160
15725and bss at 0x12010170, in @value{GDBN}, type:
104c1213 15726
474c8240 15727@smallexample
8e04817f
AC
15728(gdbslet) load prog 0x12010000
15729Loading section .text, size 0xdb0 vma 0x12010000
474c8240 15730@end smallexample
104c1213 15731
8e04817f
AC
15732If the code is loaded at a different address then what the program was linked
15733to, you may need to use the @code{section} and @code{add-symbol-file} commands
15734to tell @value{GDBN} where to map the symbol table.
15735
15736@node Sparclet Execution
79a6e687 15737@subsubsection Running and Debugging
8e04817f
AC
15738
15739@cindex running and debugging Sparclet programs
15740You can now begin debugging the task using @value{GDBN}'s execution control
15741commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
15742manual for the list of commands.
15743
474c8240 15744@smallexample
8e04817f
AC
15745(gdbslet) b main
15746Breakpoint 1 at 0x12010000: file prog.c, line 3.
15747(gdbslet) run
15748Starting program: prog
15749Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
157503 char *symarg = 0;
15751(gdbslet) step
157524 char *execarg = "hello!";
15753(gdbslet)
474c8240 15754@end smallexample
8e04817f
AC
15755
15756@node Sparclite
15757@subsection Fujitsu Sparclite
104c1213
JM
15758
15759@table @code
15760
8e04817f
AC
15761@kindex target sparclite
15762@item target sparclite @var{dev}
15763Fujitsu sparclite boards, used only for the purpose of loading.
15764You must use an additional command to debug the program.
15765For example: target remote @var{dev} using @value{GDBN} standard
15766remote protocol.
104c1213
JM
15767
15768@end table
15769
8e04817f
AC
15770@node Z8000
15771@subsection Zilog Z8000
104c1213 15772
8e04817f
AC
15773@cindex Z8000
15774@cindex simulator, Z8000
15775@cindex Zilog Z8000 simulator
104c1213 15776
8e04817f
AC
15777When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
15778a Z8000 simulator.
15779
15780For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
15781unsegmented variant of the Z8000 architecture) or the Z8001 (the
15782segmented variant). The simulator recognizes which architecture is
15783appropriate by inspecting the object code.
104c1213 15784
8e04817f
AC
15785@table @code
15786@item target sim @var{args}
15787@kindex sim
15788@kindex target sim@r{, with Z8000}
15789Debug programs on a simulated CPU. If the simulator supports setup
15790options, specify them via @var{args}.
104c1213
JM
15791@end table
15792
8e04817f
AC
15793@noindent
15794After specifying this target, you can debug programs for the simulated
15795CPU in the same style as programs for your host computer; use the
15796@code{file} command to load a new program image, the @code{run} command
15797to run your program, and so on.
15798
15799As well as making available all the usual machine registers
15800(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
15801additional items of information as specially named registers:
104c1213
JM
15802
15803@table @code
15804
8e04817f
AC
15805@item cycles
15806Counts clock-ticks in the simulator.
104c1213 15807
8e04817f
AC
15808@item insts
15809Counts instructions run in the simulator.
104c1213 15810
8e04817f
AC
15811@item time
15812Execution time in 60ths of a second.
104c1213 15813
8e04817f 15814@end table
104c1213 15815
8e04817f
AC
15816You can refer to these values in @value{GDBN} expressions with the usual
15817conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
15818conditional breakpoint that suspends only after at least 5000
15819simulated clock ticks.
104c1213 15820
a64548ea
EZ
15821@node AVR
15822@subsection Atmel AVR
15823@cindex AVR
15824
15825When configured for debugging the Atmel AVR, @value{GDBN} supports the
15826following AVR-specific commands:
15827
15828@table @code
15829@item info io_registers
15830@kindex info io_registers@r{, AVR}
15831@cindex I/O registers (Atmel AVR)
15832This command displays information about the AVR I/O registers. For
15833each register, @value{GDBN} prints its number and value.
15834@end table
15835
15836@node CRIS
15837@subsection CRIS
15838@cindex CRIS
15839
15840When configured for debugging CRIS, @value{GDBN} provides the
15841following CRIS-specific commands:
15842
15843@table @code
15844@item set cris-version @var{ver}
15845@cindex CRIS version
e22e55c9
OF
15846Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}.
15847The CRIS version affects register names and sizes. This command is useful in
15848case autodetection of the CRIS version fails.
a64548ea
EZ
15849
15850@item show cris-version
15851Show the current CRIS version.
15852
15853@item set cris-dwarf2-cfi
15854@cindex DWARF-2 CFI and CRIS
e22e55c9
OF
15855Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}.
15856Change to @samp{off} when using @code{gcc-cris} whose version is below
15857@code{R59}.
a64548ea
EZ
15858
15859@item show cris-dwarf2-cfi
15860Show the current state of using DWARF-2 CFI.
e22e55c9
OF
15861
15862@item set cris-mode @var{mode}
15863@cindex CRIS mode
15864Set the current CRIS mode to @var{mode}. It should only be changed when
15865debugging in guru mode, in which case it should be set to
15866@samp{guru} (the default is @samp{normal}).
15867
15868@item show cris-mode
15869Show the current CRIS mode.
a64548ea
EZ
15870@end table
15871
15872@node Super-H
15873@subsection Renesas Super-H
15874@cindex Super-H
15875
15876For the Renesas Super-H processor, @value{GDBN} provides these
15877commands:
15878
15879@table @code
15880@item regs
15881@kindex regs@r{, Super-H}
15882Show the values of all Super-H registers.
c055b101
CV
15883
15884@item set sh calling-convention @var{convention}
15885@kindex set sh calling-convention
15886Set the calling-convention used when calling functions from @value{GDBN}.
15887Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}.
15888With the @samp{gcc} setting, functions are called using the @value{NGCC} calling
15889convention. If the DWARF-2 information of the called function specifies
15890that the function follows the Renesas calling convention, the function
15891is called using the Renesas calling convention. If the calling convention
15892is set to @samp{renesas}, the Renesas calling convention is always used,
15893regardless of the DWARF-2 information. This can be used to override the
15894default of @samp{gcc} if debug information is missing, or the compiler
15895does not emit the DWARF-2 calling convention entry for a function.
15896
15897@item show sh calling-convention
15898@kindex show sh calling-convention
15899Show the current calling convention setting.
15900
a64548ea
EZ
15901@end table
15902
15903
8e04817f
AC
15904@node Architectures
15905@section Architectures
104c1213 15906
8e04817f
AC
15907This section describes characteristics of architectures that affect
15908all uses of @value{GDBN} with the architecture, both native and cross.
104c1213 15909
8e04817f 15910@menu
9c16f35a 15911* i386::
8e04817f
AC
15912* A29K::
15913* Alpha::
15914* MIPS::
a64548ea 15915* HPPA:: HP PA architecture
23d964e7 15916* SPU:: Cell Broadband Engine SPU architecture
4acd40f3 15917* PowerPC::
8e04817f 15918@end menu
104c1213 15919
9c16f35a 15920@node i386
db2e3e2e 15921@subsection x86 Architecture-specific Issues
9c16f35a
EZ
15922
15923@table @code
15924@item set struct-convention @var{mode}
15925@kindex set struct-convention
15926@cindex struct return convention
15927@cindex struct/union returned in registers
15928Set the convention used by the inferior to return @code{struct}s and
15929@code{union}s from functions to @var{mode}. Possible values of
15930@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the
15931default). @code{"default"} or @code{"pcc"} means that @code{struct}s
15932are returned on the stack, while @code{"reg"} means that a
15933@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will
15934be returned in a register.
15935
15936@item show struct-convention
15937@kindex show struct-convention
15938Show the current setting of the convention to return @code{struct}s
15939from functions.
15940@end table
15941
8e04817f
AC
15942@node A29K
15943@subsection A29K
104c1213
JM
15944
15945@table @code
104c1213 15946
8e04817f
AC
15947@kindex set rstack_high_address
15948@cindex AMD 29K register stack
15949@cindex register stack, AMD29K
15950@item set rstack_high_address @var{address}
15951On AMD 29000 family processors, registers are saved in a separate
15952@dfn{register stack}. There is no way for @value{GDBN} to determine the
15953extent of this stack. Normally, @value{GDBN} just assumes that the
15954stack is ``large enough''. This may result in @value{GDBN} referencing
15955memory locations that do not exist. If necessary, you can get around
15956this problem by specifying the ending address of the register stack with
15957the @code{set rstack_high_address} command. The argument should be an
15958address, which you probably want to precede with @samp{0x} to specify in
15959hexadecimal.
104c1213 15960
8e04817f
AC
15961@kindex show rstack_high_address
15962@item show rstack_high_address
15963Display the current limit of the register stack, on AMD 29000 family
15964processors.
104c1213 15965
8e04817f 15966@end table
104c1213 15967
8e04817f
AC
15968@node Alpha
15969@subsection Alpha
104c1213 15970
8e04817f 15971See the following section.
104c1213 15972
8e04817f
AC
15973@node MIPS
15974@subsection MIPS
104c1213 15975
8e04817f
AC
15976@cindex stack on Alpha
15977@cindex stack on MIPS
15978@cindex Alpha stack
15979@cindex MIPS stack
15980Alpha- and MIPS-based computers use an unusual stack frame, which
15981sometimes requires @value{GDBN} to search backward in the object code to
15982find the beginning of a function.
104c1213 15983
8e04817f
AC
15984@cindex response time, MIPS debugging
15985To improve response time (especially for embedded applications, where
15986@value{GDBN} may be restricted to a slow serial line for this search)
15987you may want to limit the size of this search, using one of these
15988commands:
104c1213 15989
8e04817f
AC
15990@table @code
15991@cindex @code{heuristic-fence-post} (Alpha, MIPS)
15992@item set heuristic-fence-post @var{limit}
15993Restrict @value{GDBN} to examining at most @var{limit} bytes in its
15994search for the beginning of a function. A value of @var{0} (the
15995default) means there is no limit. However, except for @var{0}, the
15996larger the limit the more bytes @code{heuristic-fence-post} must search
e2f4edfd
EZ
15997and therefore the longer it takes to run. You should only need to use
15998this command when debugging a stripped executable.
104c1213 15999
8e04817f
AC
16000@item show heuristic-fence-post
16001Display the current limit.
16002@end table
104c1213
JM
16003
16004@noindent
8e04817f
AC
16005These commands are available @emph{only} when @value{GDBN} is configured
16006for debugging programs on Alpha or MIPS processors.
104c1213 16007
a64548ea
EZ
16008Several MIPS-specific commands are available when debugging MIPS
16009programs:
16010
16011@table @code
a64548ea
EZ
16012@item set mips abi @var{arg}
16013@kindex set mips abi
16014@cindex set ABI for MIPS
16015Tell @value{GDBN} which MIPS ABI is used by the inferior. Possible
16016values of @var{arg} are:
16017
16018@table @samp
16019@item auto
16020The default ABI associated with the current binary (this is the
16021default).
16022@item o32
16023@item o64
16024@item n32
16025@item n64
16026@item eabi32
16027@item eabi64
16028@item auto
16029@end table
16030
16031@item show mips abi
16032@kindex show mips abi
16033Show the MIPS ABI used by @value{GDBN} to debug the inferior.
16034
16035@item set mipsfpu
16036@itemx show mipsfpu
16037@xref{MIPS Embedded, set mipsfpu}.
16038
16039@item set mips mask-address @var{arg}
16040@kindex set mips mask-address
16041@cindex MIPS addresses, masking
16042This command determines whether the most-significant 32 bits of 64-bit
16043MIPS addresses are masked off. The argument @var{arg} can be
16044@samp{on}, @samp{off}, or @samp{auto}. The latter is the default
16045setting, which lets @value{GDBN} determine the correct value.
16046
16047@item show mips mask-address
16048@kindex show mips mask-address
16049Show whether the upper 32 bits of MIPS addresses are masked off or
16050not.
16051
16052@item set remote-mips64-transfers-32bit-regs
16053@kindex set remote-mips64-transfers-32bit-regs
16054This command controls compatibility with 64-bit MIPS targets that
16055transfer data in 32-bit quantities. If you have an old MIPS 64 target
16056that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr},
16057and 64 bits for other registers, set this option to @samp{on}.
16058
16059@item show remote-mips64-transfers-32bit-regs
16060@kindex show remote-mips64-transfers-32bit-regs
16061Show the current setting of compatibility with older MIPS 64 targets.
16062
16063@item set debug mips
16064@kindex set debug mips
16065This command turns on and off debugging messages for the MIPS-specific
16066target code in @value{GDBN}.
16067
16068@item show debug mips
16069@kindex show debug mips
16070Show the current setting of MIPS debugging messages.
16071@end table
16072
16073
16074@node HPPA
16075@subsection HPPA
16076@cindex HPPA support
16077
d3e8051b 16078When @value{GDBN} is debugging the HP PA architecture, it provides the
a64548ea
EZ
16079following special commands:
16080
16081@table @code
16082@item set debug hppa
16083@kindex set debug hppa
db2e3e2e 16084This command determines whether HPPA architecture-specific debugging
a64548ea
EZ
16085messages are to be displayed.
16086
16087@item show debug hppa
16088Show whether HPPA debugging messages are displayed.
16089
16090@item maint print unwind @var{address}
16091@kindex maint print unwind@r{, HPPA}
16092This command displays the contents of the unwind table entry at the
16093given @var{address}.
16094
16095@end table
16096
104c1213 16097
23d964e7
UW
16098@node SPU
16099@subsection Cell Broadband Engine SPU architecture
16100@cindex Cell Broadband Engine
16101@cindex SPU
16102
16103When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
16104it provides the following special commands:
16105
16106@table @code
16107@item info spu event
16108@kindex info spu
16109Display SPU event facility status. Shows current event mask
16110and pending event status.
16111
16112@item info spu signal
16113Display SPU signal notification facility status. Shows pending
16114signal-control word and signal notification mode of both signal
16115notification channels.
16116
16117@item info spu mailbox
16118Display SPU mailbox facility status. Shows all pending entries,
16119in order of processing, in each of the SPU Write Outbound,
16120SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
16121
16122@item info spu dma
16123Display MFC DMA status. Shows all pending commands in the MFC
16124DMA queue. For each entry, opcode, tag, class IDs, effective
16125and local store addresses and transfer size are shown.
16126
16127@item info spu proxydma
16128Display MFC Proxy-DMA status. Shows all pending commands in the MFC
16129Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
16130and local store addresses and transfer size are shown.
16131
16132@end table
16133
4acd40f3
TJB
16134@node PowerPC
16135@subsection PowerPC
16136@cindex PowerPC architecture
16137
16138When @value{GDBN} is debugging the PowerPC architecture, it provides a set of
16139pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
16140numbers stored in the floating point registers. These values must be stored
16141in two consecutive registers, always starting at an even register like
16142@code{f0} or @code{f2}.
16143
16144The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed
16145by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0},
16146@code{f2} and @code{f3} for @code{$dl1} and so on.
16147
23d964e7 16148
8e04817f
AC
16149@node Controlling GDB
16150@chapter Controlling @value{GDBN}
16151
16152You can alter the way @value{GDBN} interacts with you by using the
16153@code{set} command. For commands controlling how @value{GDBN} displays
79a6e687 16154data, see @ref{Print Settings, ,Print Settings}. Other settings are
8e04817f
AC
16155described here.
16156
16157@menu
16158* Prompt:: Prompt
16159* Editing:: Command editing
d620b259 16160* Command History:: Command history
8e04817f
AC
16161* Screen Size:: Screen size
16162* Numbers:: Numbers
1e698235 16163* ABI:: Configuring the current ABI
8e04817f
AC
16164* Messages/Warnings:: Optional warnings and messages
16165* Debugging Output:: Optional messages about internal happenings
16166@end menu
16167
16168@node Prompt
16169@section Prompt
104c1213 16170
8e04817f 16171@cindex prompt
104c1213 16172
8e04817f
AC
16173@value{GDBN} indicates its readiness to read a command by printing a string
16174called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
16175can change the prompt string with the @code{set prompt} command. For
16176instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
16177the prompt in one of the @value{GDBN} sessions so that you can always tell
16178which one you are talking to.
104c1213 16179
8e04817f
AC
16180@emph{Note:} @code{set prompt} does not add a space for you after the
16181prompt you set. This allows you to set a prompt which ends in a space
16182or a prompt that does not.
104c1213 16183
8e04817f
AC
16184@table @code
16185@kindex set prompt
16186@item set prompt @var{newprompt}
16187Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
104c1213 16188
8e04817f
AC
16189@kindex show prompt
16190@item show prompt
16191Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
104c1213
JM
16192@end table
16193
8e04817f 16194@node Editing
79a6e687 16195@section Command Editing
8e04817f
AC
16196@cindex readline
16197@cindex command line editing
104c1213 16198
703663ab 16199@value{GDBN} reads its input commands via the @dfn{Readline} interface. This
8e04817f
AC
16200@sc{gnu} library provides consistent behavior for programs which provide a
16201command line interface to the user. Advantages are @sc{gnu} Emacs-style
16202or @dfn{vi}-style inline editing of commands, @code{csh}-like history
16203substitution, and a storage and recall of command history across
16204debugging sessions.
104c1213 16205
8e04817f
AC
16206You may control the behavior of command line editing in @value{GDBN} with the
16207command @code{set}.
104c1213 16208
8e04817f
AC
16209@table @code
16210@kindex set editing
16211@cindex editing
16212@item set editing
16213@itemx set editing on
16214Enable command line editing (enabled by default).
104c1213 16215
8e04817f
AC
16216@item set editing off
16217Disable command line editing.
104c1213 16218
8e04817f
AC
16219@kindex show editing
16220@item show editing
16221Show whether command line editing is enabled.
104c1213
JM
16222@end table
16223
703663ab
EZ
16224@xref{Command Line Editing}, for more details about the Readline
16225interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
16226encouraged to read that chapter.
16227
d620b259 16228@node Command History
79a6e687 16229@section Command History
703663ab 16230@cindex command history
8e04817f
AC
16231
16232@value{GDBN} can keep track of the commands you type during your
16233debugging sessions, so that you can be certain of precisely what
16234happened. Use these commands to manage the @value{GDBN} command
16235history facility.
104c1213 16236
703663ab
EZ
16237@value{GDBN} uses the @sc{gnu} History library, a part of the Readline
16238package, to provide the history facility. @xref{Using History
16239Interactively}, for the detailed description of the History library.
16240
d620b259 16241To issue a command to @value{GDBN} without affecting certain aspects of
9e6c4bd5
NR
16242the state which is seen by users, prefix it with @samp{server }
16243(@pxref{Server Prefix}). This
d620b259
NR
16244means that this command will not affect the command history, nor will it
16245affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
16246pressed on a line by itself.
16247
16248@cindex @code{server}, command prefix
16249The server prefix does not affect the recording of values into the value
16250history; to print a value without recording it into the value history,
16251use the @code{output} command instead of the @code{print} command.
16252
703663ab
EZ
16253Here is the description of @value{GDBN} commands related to command
16254history.
16255
104c1213 16256@table @code
8e04817f
AC
16257@cindex history substitution
16258@cindex history file
16259@kindex set history filename
4644b6e3 16260@cindex @env{GDBHISTFILE}, environment variable
8e04817f
AC
16261@item set history filename @var{fname}
16262Set the name of the @value{GDBN} command history file to @var{fname}.
16263This is the file where @value{GDBN} reads an initial command history
16264list, and where it writes the command history from this session when it
16265exits. You can access this list through history expansion or through
16266the history command editing characters listed below. This file defaults
16267to the value of the environment variable @code{GDBHISTFILE}, or to
16268@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
16269is not set.
104c1213 16270
9c16f35a
EZ
16271@cindex save command history
16272@kindex set history save
8e04817f
AC
16273@item set history save
16274@itemx set history save on
16275Record command history in a file, whose name may be specified with the
16276@code{set history filename} command. By default, this option is disabled.
104c1213 16277
8e04817f
AC
16278@item set history save off
16279Stop recording command history in a file.
104c1213 16280
8e04817f 16281@cindex history size
9c16f35a 16282@kindex set history size
6fc08d32 16283@cindex @env{HISTSIZE}, environment variable
8e04817f
AC
16284@item set history size @var{size}
16285Set the number of commands which @value{GDBN} keeps in its history list.
16286This defaults to the value of the environment variable
16287@code{HISTSIZE}, or to 256 if this variable is not set.
104c1213
JM
16288@end table
16289
8e04817f 16290History expansion assigns special meaning to the character @kbd{!}.
703663ab 16291@xref{Event Designators}, for more details.
8e04817f 16292
703663ab 16293@cindex history expansion, turn on/off
8e04817f
AC
16294Since @kbd{!} is also the logical not operator in C, history expansion
16295is off by default. If you decide to enable history expansion with the
16296@code{set history expansion on} command, you may sometimes need to
16297follow @kbd{!} (when it is used as logical not, in an expression) with
16298a space or a tab to prevent it from being expanded. The readline
16299history facilities do not attempt substitution on the strings
16300@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
16301
16302The commands to control history expansion are:
104c1213
JM
16303
16304@table @code
8e04817f
AC
16305@item set history expansion on
16306@itemx set history expansion
703663ab 16307@kindex set history expansion
8e04817f 16308Enable history expansion. History expansion is off by default.
104c1213 16309
8e04817f
AC
16310@item set history expansion off
16311Disable history expansion.
104c1213 16312
8e04817f
AC
16313@c @group
16314@kindex show history
16315@item show history
16316@itemx show history filename
16317@itemx show history save
16318@itemx show history size
16319@itemx show history expansion
16320These commands display the state of the @value{GDBN} history parameters.
16321@code{show history} by itself displays all four states.
16322@c @end group
16323@end table
16324
16325@table @code
9c16f35a
EZ
16326@kindex show commands
16327@cindex show last commands
16328@cindex display command history
8e04817f
AC
16329@item show commands
16330Display the last ten commands in the command history.
104c1213 16331
8e04817f
AC
16332@item show commands @var{n}
16333Print ten commands centered on command number @var{n}.
16334
16335@item show commands +
16336Print ten commands just after the commands last printed.
104c1213
JM
16337@end table
16338
8e04817f 16339@node Screen Size
79a6e687 16340@section Screen Size
8e04817f
AC
16341@cindex size of screen
16342@cindex pauses in output
104c1213 16343
8e04817f
AC
16344Certain commands to @value{GDBN} may produce large amounts of
16345information output to the screen. To help you read all of it,
16346@value{GDBN} pauses and asks you for input at the end of each page of
16347output. Type @key{RET} when you want to continue the output, or @kbd{q}
16348to discard the remaining output. Also, the screen width setting
16349determines when to wrap lines of output. Depending on what is being
16350printed, @value{GDBN} tries to break the line at a readable place,
16351rather than simply letting it overflow onto the following line.
16352
16353Normally @value{GDBN} knows the size of the screen from the terminal
16354driver software. For example, on Unix @value{GDBN} uses the termcap data base
16355together with the value of the @code{TERM} environment variable and the
16356@code{stty rows} and @code{stty cols} settings. If this is not correct,
16357you can override it with the @code{set height} and @code{set
16358width} commands:
16359
16360@table @code
16361@kindex set height
16362@kindex set width
16363@kindex show width
16364@kindex show height
16365@item set height @var{lpp}
16366@itemx show height
16367@itemx set width @var{cpl}
16368@itemx show width
16369These @code{set} commands specify a screen height of @var{lpp} lines and
16370a screen width of @var{cpl} characters. The associated @code{show}
16371commands display the current settings.
104c1213 16372
8e04817f
AC
16373If you specify a height of zero lines, @value{GDBN} does not pause during
16374output no matter how long the output is. This is useful if output is to a
16375file or to an editor buffer.
104c1213 16376
8e04817f
AC
16377Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
16378from wrapping its output.
9c16f35a
EZ
16379
16380@item set pagination on
16381@itemx set pagination off
16382@kindex set pagination
16383Turn the output pagination on or off; the default is on. Turning
16384pagination off is the alternative to @code{set height 0}.
16385
16386@item show pagination
16387@kindex show pagination
16388Show the current pagination mode.
104c1213
JM
16389@end table
16390
8e04817f
AC
16391@node Numbers
16392@section Numbers
16393@cindex number representation
16394@cindex entering numbers
104c1213 16395
8e04817f
AC
16396You can always enter numbers in octal, decimal, or hexadecimal in
16397@value{GDBN} by the usual conventions: octal numbers begin with
16398@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
eb2dae08
EZ
16399begin with @samp{0x}. Numbers that neither begin with @samp{0} or
16400@samp{0x}, nor end with a @samp{.} are, by default, entered in base
1640110; likewise, the default display for numbers---when no particular
16402format is specified---is base 10. You can change the default base for
16403both input and output with the commands described below.
104c1213 16404
8e04817f
AC
16405@table @code
16406@kindex set input-radix
16407@item set input-radix @var{base}
16408Set the default base for numeric input. Supported choices
16409for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 16410specified either unambiguously or using the current input radix; for
8e04817f 16411example, any of
104c1213 16412
8e04817f 16413@smallexample
9c16f35a
EZ
16414set input-radix 012
16415set input-radix 10.
16416set input-radix 0xa
8e04817f 16417@end smallexample
104c1213 16418
8e04817f 16419@noindent
9c16f35a 16420sets the input base to decimal. On the other hand, @samp{set input-radix 10}
eb2dae08
EZ
16421leaves the input radix unchanged, no matter what it was, since
16422@samp{10}, being without any leading or trailing signs of its base, is
16423interpreted in the current radix. Thus, if the current radix is 16,
16424@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't
16425change the radix.
104c1213 16426
8e04817f
AC
16427@kindex set output-radix
16428@item set output-radix @var{base}
16429Set the default base for numeric display. Supported choices
16430for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 16431specified either unambiguously or using the current input radix.
104c1213 16432
8e04817f
AC
16433@kindex show input-radix
16434@item show input-radix
16435Display the current default base for numeric input.
104c1213 16436
8e04817f
AC
16437@kindex show output-radix
16438@item show output-radix
16439Display the current default base for numeric display.
9c16f35a
EZ
16440
16441@item set radix @r{[}@var{base}@r{]}
16442@itemx show radix
16443@kindex set radix
16444@kindex show radix
16445These commands set and show the default base for both input and output
16446of numbers. @code{set radix} sets the radix of input and output to
16447the same base; without an argument, it resets the radix back to its
16448default value of 10.
16449
8e04817f 16450@end table
104c1213 16451
1e698235 16452@node ABI
79a6e687 16453@section Configuring the Current ABI
1e698235
DJ
16454
16455@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
16456application automatically. However, sometimes you need to override its
16457conclusions. Use these commands to manage @value{GDBN}'s view of the
16458current ABI.
16459
98b45e30
DJ
16460@cindex OS ABI
16461@kindex set osabi
b4e9345d 16462@kindex show osabi
98b45e30
DJ
16463
16464One @value{GDBN} configuration can debug binaries for multiple operating
b383017d 16465system targets, either via remote debugging or native emulation.
98b45e30
DJ
16466@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
16467but you can override its conclusion using the @code{set osabi} command.
16468One example where this is useful is in debugging of binaries which use
16469an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
16470not have the same identifying marks that the standard C library for your
16471platform provides.
16472
16473@table @code
16474@item show osabi
16475Show the OS ABI currently in use.
16476
16477@item set osabi
16478With no argument, show the list of registered available OS ABI's.
16479
16480@item set osabi @var{abi}
16481Set the current OS ABI to @var{abi}.
16482@end table
16483
1e698235 16484@cindex float promotion
1e698235
DJ
16485
16486Generally, the way that an argument of type @code{float} is passed to a
16487function depends on whether the function is prototyped. For a prototyped
16488(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
16489according to the architecture's convention for @code{float}. For unprototyped
16490(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
16491@code{double} and then passed.
16492
16493Unfortunately, some forms of debug information do not reliably indicate whether
16494a function is prototyped. If @value{GDBN} calls a function that is not marked
16495as prototyped, it consults @kbd{set coerce-float-to-double}.
16496
16497@table @code
a8f24a35 16498@kindex set coerce-float-to-double
1e698235
DJ
16499@item set coerce-float-to-double
16500@itemx set coerce-float-to-double on
16501Arguments of type @code{float} will be promoted to @code{double} when passed
16502to an unprototyped function. This is the default setting.
16503
16504@item set coerce-float-to-double off
16505Arguments of type @code{float} will be passed directly to unprototyped
16506functions.
9c16f35a
EZ
16507
16508@kindex show coerce-float-to-double
16509@item show coerce-float-to-double
16510Show the current setting of promoting @code{float} to @code{double}.
1e698235
DJ
16511@end table
16512
f1212245
DJ
16513@kindex set cp-abi
16514@kindex show cp-abi
16515@value{GDBN} needs to know the ABI used for your program's C@t{++}
16516objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
16517used to build your application. @value{GDBN} only fully supports
16518programs with a single C@t{++} ABI; if your program contains code using
16519multiple C@t{++} ABI's or if @value{GDBN} can not identify your
16520program's ABI correctly, you can tell @value{GDBN} which ABI to use.
16521Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
16522before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
16523``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
16524use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
16525``auto''.
16526
16527@table @code
16528@item show cp-abi
16529Show the C@t{++} ABI currently in use.
16530
16531@item set cp-abi
16532With no argument, show the list of supported C@t{++} ABI's.
16533
16534@item set cp-abi @var{abi}
16535@itemx set cp-abi auto
16536Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
16537@end table
16538
8e04817f 16539@node Messages/Warnings
79a6e687 16540@section Optional Warnings and Messages
104c1213 16541
9c16f35a
EZ
16542@cindex verbose operation
16543@cindex optional warnings
8e04817f
AC
16544By default, @value{GDBN} is silent about its inner workings. If you are
16545running on a slow machine, you may want to use the @code{set verbose}
16546command. This makes @value{GDBN} tell you when it does a lengthy
16547internal operation, so you will not think it has crashed.
104c1213 16548
8e04817f
AC
16549Currently, the messages controlled by @code{set verbose} are those
16550which announce that the symbol table for a source file is being read;
79a6e687 16551see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}.
104c1213 16552
8e04817f
AC
16553@table @code
16554@kindex set verbose
16555@item set verbose on
16556Enables @value{GDBN} output of certain informational messages.
104c1213 16557
8e04817f
AC
16558@item set verbose off
16559Disables @value{GDBN} output of certain informational messages.
104c1213 16560
8e04817f
AC
16561@kindex show verbose
16562@item show verbose
16563Displays whether @code{set verbose} is on or off.
16564@end table
104c1213 16565
8e04817f
AC
16566By default, if @value{GDBN} encounters bugs in the symbol table of an
16567object file, it is silent; but if you are debugging a compiler, you may
79a6e687
BW
16568find this information useful (@pxref{Symbol Errors, ,Errors Reading
16569Symbol Files}).
104c1213 16570
8e04817f 16571@table @code
104c1213 16572
8e04817f
AC
16573@kindex set complaints
16574@item set complaints @var{limit}
16575Permits @value{GDBN} to output @var{limit} complaints about each type of
16576unusual symbols before becoming silent about the problem. Set
16577@var{limit} to zero to suppress all complaints; set it to a large number
16578to prevent complaints from being suppressed.
104c1213 16579
8e04817f
AC
16580@kindex show complaints
16581@item show complaints
16582Displays how many symbol complaints @value{GDBN} is permitted to produce.
104c1213 16583
8e04817f 16584@end table
104c1213 16585
8e04817f
AC
16586By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
16587lot of stupid questions to confirm certain commands. For example, if
16588you try to run a program which is already running:
104c1213 16589
474c8240 16590@smallexample
8e04817f
AC
16591(@value{GDBP}) run
16592The program being debugged has been started already.
16593Start it from the beginning? (y or n)
474c8240 16594@end smallexample
104c1213 16595
8e04817f
AC
16596If you are willing to unflinchingly face the consequences of your own
16597commands, you can disable this ``feature'':
104c1213 16598
8e04817f 16599@table @code
104c1213 16600
8e04817f
AC
16601@kindex set confirm
16602@cindex flinching
16603@cindex confirmation
16604@cindex stupid questions
16605@item set confirm off
16606Disables confirmation requests.
104c1213 16607
8e04817f
AC
16608@item set confirm on
16609Enables confirmation requests (the default).
104c1213 16610
8e04817f
AC
16611@kindex show confirm
16612@item show confirm
16613Displays state of confirmation requests.
16614
16615@end table
104c1213 16616
16026cd7
AS
16617@cindex command tracing
16618If you need to debug user-defined commands or sourced files you may find it
16619useful to enable @dfn{command tracing}. In this mode each command will be
16620printed as it is executed, prefixed with one or more @samp{+} symbols, the
16621quantity denoting the call depth of each command.
16622
16623@table @code
16624@kindex set trace-commands
16625@cindex command scripts, debugging
16626@item set trace-commands on
16627Enable command tracing.
16628@item set trace-commands off
16629Disable command tracing.
16630@item show trace-commands
16631Display the current state of command tracing.
16632@end table
16633
8e04817f 16634@node Debugging Output
79a6e687 16635@section Optional Messages about Internal Happenings
4644b6e3
EZ
16636@cindex optional debugging messages
16637
da316a69
EZ
16638@value{GDBN} has commands that enable optional debugging messages from
16639various @value{GDBN} subsystems; normally these commands are of
16640interest to @value{GDBN} maintainers, or when reporting a bug. This
16641section documents those commands.
16642
104c1213 16643@table @code
a8f24a35
EZ
16644@kindex set exec-done-display
16645@item set exec-done-display
16646Turns on or off the notification of asynchronous commands'
16647completion. When on, @value{GDBN} will print a message when an
16648asynchronous command finishes its execution. The default is off.
16649@kindex show exec-done-display
16650@item show exec-done-display
16651Displays the current setting of asynchronous command completion
16652notification.
4644b6e3
EZ
16653@kindex set debug
16654@cindex gdbarch debugging info
a8f24a35 16655@cindex architecture debugging info
8e04817f 16656@item set debug arch
a8f24a35 16657Turns on or off display of gdbarch debugging info. The default is off
4644b6e3 16658@kindex show debug
8e04817f
AC
16659@item show debug arch
16660Displays the current state of displaying gdbarch debugging info.
721c2651
EZ
16661@item set debug aix-thread
16662@cindex AIX threads
16663Display debugging messages about inner workings of the AIX thread
16664module.
16665@item show debug aix-thread
16666Show the current state of AIX thread debugging info display.
237fc4c9
PA
16667@item set debug displaced
16668@cindex displaced stepping debugging info
16669Turns on or off display of @value{GDBN} debugging info for the
16670displaced stepping support. The default is off.
16671@item show debug displaced
16672Displays the current state of displaying @value{GDBN} debugging info
16673related to displaced stepping.
8e04817f 16674@item set debug event
4644b6e3 16675@cindex event debugging info
a8f24a35 16676Turns on or off display of @value{GDBN} event debugging info. The
8e04817f 16677default is off.
8e04817f
AC
16678@item show debug event
16679Displays the current state of displaying @value{GDBN} event debugging
16680info.
8e04817f 16681@item set debug expression
4644b6e3 16682@cindex expression debugging info
721c2651
EZ
16683Turns on or off display of debugging info about @value{GDBN}
16684expression parsing. The default is off.
8e04817f 16685@item show debug expression
721c2651
EZ
16686Displays the current state of displaying debugging info about
16687@value{GDBN} expression parsing.
7453dc06 16688@item set debug frame
4644b6e3 16689@cindex frame debugging info
7453dc06
AC
16690Turns on or off display of @value{GDBN} frame debugging info. The
16691default is off.
7453dc06
AC
16692@item show debug frame
16693Displays the current state of displaying @value{GDBN} frame debugging
16694info.
30e91e0b
RC
16695@item set debug infrun
16696@cindex inferior debugging info
16697Turns on or off display of @value{GDBN} debugging info for running the inferior.
16698The default is off. @file{infrun.c} contains GDB's runtime state machine used
16699for implementing operations such as single-stepping the inferior.
16700@item show debug infrun
16701Displays the current state of @value{GDBN} inferior debugging.
da316a69
EZ
16702@item set debug lin-lwp
16703@cindex @sc{gnu}/Linux LWP debug messages
16704@cindex Linux lightweight processes
721c2651 16705Turns on or off debugging messages from the Linux LWP debug support.
da316a69
EZ
16706@item show debug lin-lwp
16707Show the current state of Linux LWP debugging messages.
b84876c2
PA
16708@item set debug lin-lwp-async
16709@cindex @sc{gnu}/Linux LWP async debug messages
16710@cindex Linux lightweight processes
16711Turns on or off debugging messages from the Linux LWP async debug support.
16712@item show debug lin-lwp-async
16713Show the current state of Linux LWP async debugging messages.
2b4855ab 16714@item set debug observer
4644b6e3 16715@cindex observer debugging info
2b4855ab
AC
16716Turns on or off display of @value{GDBN} observer debugging. This
16717includes info such as the notification of observable events.
2b4855ab
AC
16718@item show debug observer
16719Displays the current state of observer debugging.
8e04817f 16720@item set debug overload
4644b6e3 16721@cindex C@t{++} overload debugging info
8e04817f 16722Turns on or off display of @value{GDBN} C@t{++} overload debugging
359df76b 16723info. This includes info such as ranking of functions, etc. The default
8e04817f 16724is off.
8e04817f
AC
16725@item show debug overload
16726Displays the current state of displaying @value{GDBN} C@t{++} overload
16727debugging info.
8e04817f
AC
16728@cindex packets, reporting on stdout
16729@cindex serial connections, debugging
605a56cb
DJ
16730@cindex debug remote protocol
16731@cindex remote protocol debugging
16732@cindex display remote packets
8e04817f
AC
16733@item set debug remote
16734Turns on or off display of reports on all packets sent back and forth across
16735the serial line to the remote machine. The info is printed on the
16736@value{GDBN} standard output stream. The default is off.
8e04817f
AC
16737@item show debug remote
16738Displays the state of display of remote packets.
8e04817f
AC
16739@item set debug serial
16740Turns on or off display of @value{GDBN} serial debugging info. The
16741default is off.
8e04817f
AC
16742@item show debug serial
16743Displays the current state of displaying @value{GDBN} serial debugging
16744info.
c45da7e6
EZ
16745@item set debug solib-frv
16746@cindex FR-V shared-library debugging
16747Turns on or off debugging messages for FR-V shared-library code.
16748@item show debug solib-frv
16749Display the current state of FR-V shared-library code debugging
16750messages.
8e04817f 16751@item set debug target
4644b6e3 16752@cindex target debugging info
8e04817f
AC
16753Turns on or off display of @value{GDBN} target debugging info. This info
16754includes what is going on at the target level of GDB, as it happens. The
701b08bb
DJ
16755default is 0. Set it to 1 to track events, and to 2 to also track the
16756value of large memory transfers. Changes to this flag do not take effect
16757until the next time you connect to a target or use the @code{run} command.
8e04817f
AC
16758@item show debug target
16759Displays the current state of displaying @value{GDBN} target debugging
16760info.
75feb17d
DJ
16761@item set debug timestamp
16762@cindex timestampping debugging info
16763Turns on or off display of timestamps with @value{GDBN} debugging info.
16764When enabled, seconds and microseconds are displayed before each debugging
16765message.
16766@item show debug timestamp
16767Displays the current state of displaying timestamps with @value{GDBN}
16768debugging info.
c45da7e6 16769@item set debugvarobj
4644b6e3 16770@cindex variable object debugging info
8e04817f
AC
16771Turns on or off display of @value{GDBN} variable object debugging
16772info. The default is off.
c45da7e6 16773@item show debugvarobj
8e04817f
AC
16774Displays the current state of displaying @value{GDBN} variable object
16775debugging info.
e776119f
DJ
16776@item set debug xml
16777@cindex XML parser debugging
16778Turns on or off debugging messages for built-in XML parsers.
16779@item show debug xml
16780Displays the current state of XML debugging messages.
8e04817f 16781@end table
104c1213 16782
8e04817f
AC
16783@node Sequences
16784@chapter Canned Sequences of Commands
104c1213 16785
8e04817f 16786Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
79a6e687 16787Command Lists}), @value{GDBN} provides two ways to store sequences of
8e04817f
AC
16788commands for execution as a unit: user-defined commands and command
16789files.
104c1213 16790
8e04817f 16791@menu
fcc73fe3
EZ
16792* Define:: How to define your own commands
16793* Hooks:: Hooks for user-defined commands
16794* Command Files:: How to write scripts of commands to be stored in a file
16795* Output:: Commands for controlled output
8e04817f 16796@end menu
104c1213 16797
8e04817f 16798@node Define
79a6e687 16799@section User-defined Commands
104c1213 16800
8e04817f 16801@cindex user-defined command
fcc73fe3 16802@cindex arguments, to user-defined commands
8e04817f
AC
16803A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
16804which you assign a new name as a command. This is done with the
16805@code{define} command. User commands may accept up to 10 arguments
16806separated by whitespace. Arguments are accessed within the user command
c03c782f 16807via @code{$arg0@dots{}$arg9}. A trivial example:
104c1213 16808
8e04817f
AC
16809@smallexample
16810define adder
16811 print $arg0 + $arg1 + $arg2
c03c782f 16812end
8e04817f 16813@end smallexample
104c1213
JM
16814
16815@noindent
8e04817f 16816To execute the command use:
104c1213 16817
8e04817f
AC
16818@smallexample
16819adder 1 2 3
16820@end smallexample
104c1213 16821
8e04817f
AC
16822@noindent
16823This defines the command @code{adder}, which prints the sum of
16824its three arguments. Note the arguments are text substitutions, so they may
16825reference variables, use complex expressions, or even perform inferior
16826functions calls.
104c1213 16827
fcc73fe3
EZ
16828@cindex argument count in user-defined commands
16829@cindex how many arguments (user-defined commands)
c03c782f
AS
16830In addition, @code{$argc} may be used to find out how many arguments have
16831been passed. This expands to a number in the range 0@dots{}10.
16832
16833@smallexample
16834define adder
16835 if $argc == 2
16836 print $arg0 + $arg1
16837 end
16838 if $argc == 3
16839 print $arg0 + $arg1 + $arg2
16840 end
16841end
16842@end smallexample
16843
104c1213 16844@table @code
104c1213 16845
8e04817f
AC
16846@kindex define
16847@item define @var{commandname}
16848Define a command named @var{commandname}. If there is already a command
16849by that name, you are asked to confirm that you want to redefine it.
104c1213 16850
8e04817f
AC
16851The definition of the command is made up of other @value{GDBN} command lines,
16852which are given following the @code{define} command. The end of these
16853commands is marked by a line containing @code{end}.
104c1213 16854
8e04817f 16855@kindex document
ca91424e 16856@kindex end@r{ (user-defined commands)}
8e04817f
AC
16857@item document @var{commandname}
16858Document the user-defined command @var{commandname}, so that it can be
16859accessed by @code{help}. The command @var{commandname} must already be
16860defined. This command reads lines of documentation just as @code{define}
16861reads the lines of the command definition, ending with @code{end}.
16862After the @code{document} command is finished, @code{help} on command
16863@var{commandname} displays the documentation you have written.
104c1213 16864
8e04817f
AC
16865You may use the @code{document} command again to change the
16866documentation of a command. Redefining the command with @code{define}
16867does not change the documentation.
104c1213 16868
c45da7e6
EZ
16869@kindex dont-repeat
16870@cindex don't repeat command
16871@item dont-repeat
16872Used inside a user-defined command, this tells @value{GDBN} that this
16873command should not be repeated when the user hits @key{RET}
16874(@pxref{Command Syntax, repeat last command}).
16875
8e04817f
AC
16876@kindex help user-defined
16877@item help user-defined
16878List all user-defined commands, with the first line of the documentation
16879(if any) for each.
104c1213 16880
8e04817f
AC
16881@kindex show user
16882@item show user
16883@itemx show user @var{commandname}
16884Display the @value{GDBN} commands used to define @var{commandname} (but
16885not its documentation). If no @var{commandname} is given, display the
16886definitions for all user-defined commands.
104c1213 16887
fcc73fe3 16888@cindex infinite recursion in user-defined commands
20f01a46
DH
16889@kindex show max-user-call-depth
16890@kindex set max-user-call-depth
16891@item show max-user-call-depth
5ca0cb28
DH
16892@itemx set max-user-call-depth
16893The value of @code{max-user-call-depth} controls how many recursion
3f94c067 16894levels are allowed in user-defined commands before @value{GDBN} suspects an
5ca0cb28 16895infinite recursion and aborts the command.
104c1213
JM
16896@end table
16897
fcc73fe3
EZ
16898In addition to the above commands, user-defined commands frequently
16899use control flow commands, described in @ref{Command Files}.
16900
8e04817f
AC
16901When user-defined commands are executed, the
16902commands of the definition are not printed. An error in any command
16903stops execution of the user-defined command.
104c1213 16904
8e04817f
AC
16905If used interactively, commands that would ask for confirmation proceed
16906without asking when used inside a user-defined command. Many @value{GDBN}
16907commands that normally print messages to say what they are doing omit the
16908messages when used in a user-defined command.
104c1213 16909
8e04817f 16910@node Hooks
79a6e687 16911@section User-defined Command Hooks
8e04817f
AC
16912@cindex command hooks
16913@cindex hooks, for commands
16914@cindex hooks, pre-command
104c1213 16915
8e04817f 16916@kindex hook
8e04817f
AC
16917You may define @dfn{hooks}, which are a special kind of user-defined
16918command. Whenever you run the command @samp{foo}, if the user-defined
16919command @samp{hook-foo} exists, it is executed (with no arguments)
16920before that command.
104c1213 16921
8e04817f
AC
16922@cindex hooks, post-command
16923@kindex hookpost
8e04817f
AC
16924A hook may also be defined which is run after the command you executed.
16925Whenever you run the command @samp{foo}, if the user-defined command
16926@samp{hookpost-foo} exists, it is executed (with no arguments) after
16927that command. Post-execution hooks may exist simultaneously with
16928pre-execution hooks, for the same command.
104c1213 16929
8e04817f 16930It is valid for a hook to call the command which it hooks. If this
9f1c6395 16931occurs, the hook is not re-executed, thereby avoiding infinite recursion.
104c1213 16932
8e04817f
AC
16933@c It would be nice if hookpost could be passed a parameter indicating
16934@c if the command it hooks executed properly or not. FIXME!
104c1213 16935
8e04817f
AC
16936@kindex stop@r{, a pseudo-command}
16937In addition, a pseudo-command, @samp{stop} exists. Defining
16938(@samp{hook-stop}) makes the associated commands execute every time
16939execution stops in your program: before breakpoint commands are run,
16940displays are printed, or the stack frame is printed.
104c1213 16941
8e04817f
AC
16942For example, to ignore @code{SIGALRM} signals while
16943single-stepping, but treat them normally during normal execution,
16944you could define:
104c1213 16945
474c8240 16946@smallexample
8e04817f
AC
16947define hook-stop
16948handle SIGALRM nopass
16949end
104c1213 16950
8e04817f
AC
16951define hook-run
16952handle SIGALRM pass
16953end
104c1213 16954
8e04817f 16955define hook-continue
d3e8051b 16956handle SIGALRM pass
8e04817f 16957end
474c8240 16958@end smallexample
104c1213 16959
d3e8051b 16960As a further example, to hook at the beginning and end of the @code{echo}
b383017d 16961command, and to add extra text to the beginning and end of the message,
8e04817f 16962you could define:
104c1213 16963
474c8240 16964@smallexample
8e04817f
AC
16965define hook-echo
16966echo <<<---
16967end
104c1213 16968
8e04817f
AC
16969define hookpost-echo
16970echo --->>>\n
16971end
104c1213 16972
8e04817f
AC
16973(@value{GDBP}) echo Hello World
16974<<<---Hello World--->>>
16975(@value{GDBP})
104c1213 16976
474c8240 16977@end smallexample
104c1213 16978
8e04817f
AC
16979You can define a hook for any single-word command in @value{GDBN}, but
16980not for command aliases; you should define a hook for the basic command
c1468174 16981name, e.g.@: @code{backtrace} rather than @code{bt}.
8e04817f
AC
16982@c FIXME! So how does Joe User discover whether a command is an alias
16983@c or not?
16984If an error occurs during the execution of your hook, execution of
16985@value{GDBN} commands stops and @value{GDBN} issues a prompt
16986(before the command that you actually typed had a chance to run).
104c1213 16987
8e04817f
AC
16988If you try to define a hook which does not match any known command, you
16989get a warning from the @code{define} command.
c906108c 16990
8e04817f 16991@node Command Files
79a6e687 16992@section Command Files
c906108c 16993
8e04817f 16994@cindex command files
fcc73fe3 16995@cindex scripting commands
6fc08d32
EZ
16996A command file for @value{GDBN} is a text file made of lines that are
16997@value{GDBN} commands. Comments (lines starting with @kbd{#}) may
16998also be included. An empty line in a command file does nothing; it
16999does not mean to repeat the last command, as it would from the
17000terminal.
c906108c 17001
6fc08d32
EZ
17002You can request the execution of a command file with the @code{source}
17003command:
c906108c 17004
8e04817f
AC
17005@table @code
17006@kindex source
ca91424e 17007@cindex execute commands from a file
16026cd7 17008@item source [@code{-v}] @var{filename}
8e04817f 17009Execute the command file @var{filename}.
c906108c
SS
17010@end table
17011
fcc73fe3
EZ
17012The lines in a command file are generally executed sequentially,
17013unless the order of execution is changed by one of the
17014@emph{flow-control commands} described below. The commands are not
a71ec265
DH
17015printed as they are executed. An error in any command terminates
17016execution of the command file and control is returned to the console.
c906108c 17017
4b505b12
AS
17018@value{GDBN} searches for @var{filename} in the current directory and then
17019on the search path (specified with the @samp{directory} command).
17020
16026cd7
AS
17021If @code{-v}, for verbose mode, is given then @value{GDBN} displays
17022each command as it is executed. The option must be given before
17023@var{filename}, and is interpreted as part of the filename anywhere else.
17024
8e04817f
AC
17025Commands that would ask for confirmation if used interactively proceed
17026without asking when used in a command file. Many @value{GDBN} commands that
17027normally print messages to say what they are doing omit the messages
17028when called from command files.
c906108c 17029
8e04817f
AC
17030@value{GDBN} also accepts command input from standard input. In this
17031mode, normal output goes to standard output and error output goes to
17032standard error. Errors in a command file supplied on standard input do
6fc08d32 17033not terminate execution of the command file---execution continues with
8e04817f 17034the next command.
c906108c 17035
474c8240 17036@smallexample
8e04817f 17037gdb < cmds > log 2>&1
474c8240 17038@end smallexample
c906108c 17039
8e04817f
AC
17040(The syntax above will vary depending on the shell used.) This example
17041will execute commands from the file @file{cmds}. All output and errors
17042would be directed to @file{log}.
c906108c 17043
fcc73fe3
EZ
17044Since commands stored on command files tend to be more general than
17045commands typed interactively, they frequently need to deal with
17046complicated situations, such as different or unexpected values of
17047variables and symbols, changes in how the program being debugged is
17048built, etc. @value{GDBN} provides a set of flow-control commands to
17049deal with these complexities. Using these commands, you can write
17050complex scripts that loop over data structures, execute commands
17051conditionally, etc.
17052
17053@table @code
17054@kindex if
17055@kindex else
17056@item if
17057@itemx else
17058This command allows to include in your script conditionally executed
17059commands. The @code{if} command takes a single argument, which is an
17060expression to evaluate. It is followed by a series of commands that
17061are executed only if the expression is true (its value is nonzero).
17062There can then optionally be an @code{else} line, followed by a series
17063of commands that are only executed if the expression was false. The
17064end of the list is marked by a line containing @code{end}.
17065
17066@kindex while
17067@item while
17068This command allows to write loops. Its syntax is similar to
17069@code{if}: the command takes a single argument, which is an expression
17070to evaluate, and must be followed by the commands to execute, one per
17071line, terminated by an @code{end}. These commands are called the
17072@dfn{body} of the loop. The commands in the body of @code{while} are
17073executed repeatedly as long as the expression evaluates to true.
17074
17075@kindex loop_break
17076@item loop_break
17077This command exits the @code{while} loop in whose body it is included.
17078Execution of the script continues after that @code{while}s @code{end}
17079line.
17080
17081@kindex loop_continue
17082@item loop_continue
17083This command skips the execution of the rest of the body of commands
17084in the @code{while} loop in whose body it is included. Execution
17085branches to the beginning of the @code{while} loop, where it evaluates
17086the controlling expression.
ca91424e
EZ
17087
17088@kindex end@r{ (if/else/while commands)}
17089@item end
17090Terminate the block of commands that are the body of @code{if},
17091@code{else}, or @code{while} flow-control commands.
fcc73fe3
EZ
17092@end table
17093
17094
8e04817f 17095@node Output
79a6e687 17096@section Commands for Controlled Output
c906108c 17097
8e04817f
AC
17098During the execution of a command file or a user-defined command, normal
17099@value{GDBN} output is suppressed; the only output that appears is what is
17100explicitly printed by the commands in the definition. This section
17101describes three commands useful for generating exactly the output you
17102want.
c906108c
SS
17103
17104@table @code
8e04817f
AC
17105@kindex echo
17106@item echo @var{text}
17107@c I do not consider backslash-space a standard C escape sequence
17108@c because it is not in ANSI.
17109Print @var{text}. Nonprinting characters can be included in
17110@var{text} using C escape sequences, such as @samp{\n} to print a
17111newline. @strong{No newline is printed unless you specify one.}
17112In addition to the standard C escape sequences, a backslash followed
17113by a space stands for a space. This is useful for displaying a
17114string with spaces at the beginning or the end, since leading and
17115trailing spaces are otherwise trimmed from all arguments.
17116To print @samp{@w{ }and foo =@w{ }}, use the command
17117@samp{echo \@w{ }and foo = \@w{ }}.
c906108c 17118
8e04817f
AC
17119A backslash at the end of @var{text} can be used, as in C, to continue
17120the command onto subsequent lines. For example,
c906108c 17121
474c8240 17122@smallexample
8e04817f
AC
17123echo This is some text\n\
17124which is continued\n\
17125onto several lines.\n
474c8240 17126@end smallexample
c906108c 17127
8e04817f 17128produces the same output as
c906108c 17129
474c8240 17130@smallexample
8e04817f
AC
17131echo This is some text\n
17132echo which is continued\n
17133echo onto several lines.\n
474c8240 17134@end smallexample
c906108c 17135
8e04817f
AC
17136@kindex output
17137@item output @var{expression}
17138Print the value of @var{expression} and nothing but that value: no
17139newlines, no @samp{$@var{nn} = }. The value is not entered in the
17140value history either. @xref{Expressions, ,Expressions}, for more information
17141on expressions.
c906108c 17142
8e04817f
AC
17143@item output/@var{fmt} @var{expression}
17144Print the value of @var{expression} in format @var{fmt}. You can use
17145the same formats as for @code{print}. @xref{Output Formats,,Output
79a6e687 17146Formats}, for more information.
c906108c 17147
8e04817f 17148@kindex printf
82160952
EZ
17149@item printf @var{template}, @var{expressions}@dots{}
17150Print the values of one or more @var{expressions} under the control of
17151the string @var{template}. To print several values, make
17152@var{expressions} be a comma-separated list of individual expressions,
17153which may be either numbers or pointers. Their values are printed as
17154specified by @var{template}, exactly as a C program would do by
17155executing the code below:
c906108c 17156
474c8240 17157@smallexample
82160952 17158printf (@var{template}, @var{expressions}@dots{});
474c8240 17159@end smallexample
c906108c 17160
82160952
EZ
17161As in @code{C} @code{printf}, ordinary characters in @var{template}
17162are printed verbatim, while @dfn{conversion specification} introduced
17163by the @samp{%} character cause subsequent @var{expressions} to be
17164evaluated, their values converted and formatted according to type and
17165style information encoded in the conversion specifications, and then
17166printed.
17167
8e04817f 17168For example, you can print two values in hex like this:
c906108c 17169
8e04817f
AC
17170@smallexample
17171printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
17172@end smallexample
c906108c 17173
82160952
EZ
17174@code{printf} supports all the standard @code{C} conversion
17175specifications, including the flags and modifiers between the @samp{%}
17176character and the conversion letter, with the following exceptions:
17177
17178@itemize @bullet
17179@item
17180The argument-ordering modifiers, such as @samp{2$}, are not supported.
17181
17182@item
17183The modifier @samp{*} is not supported for specifying precision or
17184width.
17185
17186@item
17187The @samp{'} flag (for separation of digits into groups according to
17188@code{LC_NUMERIC'}) is not supported.
17189
17190@item
17191The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not
17192supported.
17193
17194@item
17195The conversion letter @samp{n} (as in @samp{%n}) is not supported.
17196
17197@item
17198The conversion letters @samp{a} and @samp{A} are not supported.
17199@end itemize
17200
17201@noindent
17202Note that the @samp{ll} type modifier is supported only if the
17203underlying @code{C} implementation used to build @value{GDBN} supports
17204the @code{long long int} type, and the @samp{L} type modifier is
17205supported only if @code{long double} type is available.
17206
17207As in @code{C}, @code{printf} supports simple backslash-escape
17208sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"},
17209@samp{\a}, and @samp{\f}, that consist of backslash followed by a
17210single character. Octal and hexadecimal escape sequences are not
17211supported.
1a619819
LM
17212
17213Additionally, @code{printf} supports conversion specifications for DFP
0aea4bf3
LM
17214(@dfn{Decimal Floating Point}) types using the following length modifiers
17215together with a floating point specifier.
1a619819
LM
17216letters:
17217
17218@itemize @bullet
17219@item
17220@samp{H} for printing @code{Decimal32} types.
17221
17222@item
17223@samp{D} for printing @code{Decimal64} types.
17224
17225@item
17226@samp{DD} for printing @code{Decimal128} types.
17227@end itemize
17228
17229If the underlying @code{C} implementation used to build @value{GDBN} has
0aea4bf3 17230support for the three length modifiers for DFP types, other modifiers
3b784c4f 17231such as width and precision will also be available for @value{GDBN} to use.
1a619819
LM
17232
17233In case there is no such @code{C} support, no additional modifiers will be
17234available and the value will be printed in the standard way.
17235
17236Here's an example of printing DFP types using the above conversion letters:
17237@smallexample
0aea4bf3 17238printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
1a619819
LM
17239@end smallexample
17240
c906108c
SS
17241@end table
17242
21c294e6
AC
17243@node Interpreters
17244@chapter Command Interpreters
17245@cindex command interpreters
17246
17247@value{GDBN} supports multiple command interpreters, and some command
17248infrastructure to allow users or user interface writers to switch
17249between interpreters or run commands in other interpreters.
17250
17251@value{GDBN} currently supports two command interpreters, the console
17252interpreter (sometimes called the command-line interpreter or @sc{cli})
17253and the machine interface interpreter (or @sc{gdb/mi}). This manual
17254describes both of these interfaces in great detail.
17255
17256By default, @value{GDBN} will start with the console interpreter.
17257However, the user may choose to start @value{GDBN} with another
17258interpreter by specifying the @option{-i} or @option{--interpreter}
17259startup options. Defined interpreters include:
17260
17261@table @code
17262@item console
17263@cindex console interpreter
17264The traditional console or command-line interpreter. This is the most often
17265used interpreter with @value{GDBN}. With no interpreter specified at runtime,
17266@value{GDBN} will use this interpreter.
17267
17268@item mi
17269@cindex mi interpreter
17270The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
17271by programs wishing to use @value{GDBN} as a backend for a debugger GUI
17272or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
17273Interface}.
17274
17275@item mi2
17276@cindex mi2 interpreter
17277The current @sc{gdb/mi} interface.
17278
17279@item mi1
17280@cindex mi1 interpreter
17281The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
17282
17283@end table
17284
17285@cindex invoke another interpreter
17286The interpreter being used by @value{GDBN} may not be dynamically
17287switched at runtime. Although possible, this could lead to a very
17288precarious situation. Consider an IDE using @sc{gdb/mi}. If a user
17289enters the command "interpreter-set console" in a console view,
17290@value{GDBN} would switch to using the console interpreter, rendering
17291the IDE inoperable!
17292
17293@kindex interpreter-exec
17294Although you may only choose a single interpreter at startup, you may execute
17295commands in any interpreter from the current interpreter using the appropriate
17296command. If you are running the console interpreter, simply use the
17297@code{interpreter-exec} command:
17298
17299@smallexample
17300interpreter-exec mi "-data-list-register-names"
17301@end smallexample
17302
17303@sc{gdb/mi} has a similar command, although it is only available in versions of
17304@value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
17305
8e04817f
AC
17306@node TUI
17307@chapter @value{GDBN} Text User Interface
17308@cindex TUI
d0d5df6f 17309@cindex Text User Interface
c906108c 17310
8e04817f
AC
17311@menu
17312* TUI Overview:: TUI overview
17313* TUI Keys:: TUI key bindings
7cf36c78 17314* TUI Single Key Mode:: TUI single key mode
db2e3e2e 17315* TUI Commands:: TUI-specific commands
8e04817f
AC
17316* TUI Configuration:: TUI configuration variables
17317@end menu
c906108c 17318
46ba6afa 17319The @value{GDBN} Text User Interface (TUI) is a terminal
d0d5df6f
AC
17320interface which uses the @code{curses} library to show the source
17321file, the assembly output, the program registers and @value{GDBN}
46ba6afa
BW
17322commands in separate text windows. The TUI mode is supported only
17323on platforms where a suitable version of the @code{curses} library
17324is available.
d0d5df6f 17325
46ba6afa
BW
17326@pindex @value{GDBTUI}
17327The TUI mode is enabled by default when you invoke @value{GDBN} as
17328either @samp{@value{GDBTUI}} or @samp{@value{GDBP} -tui}.
17329You can also switch in and out of TUI mode while @value{GDBN} runs by
17330using various TUI commands and key bindings, such as @kbd{C-x C-a}.
17331@xref{TUI Keys, ,TUI Key Bindings}.
c906108c 17332
8e04817f 17333@node TUI Overview
79a6e687 17334@section TUI Overview
c906108c 17335
46ba6afa 17336In TUI mode, @value{GDBN} can display several text windows:
c906108c 17337
8e04817f
AC
17338@table @emph
17339@item command
17340This window is the @value{GDBN} command window with the @value{GDBN}
46ba6afa
BW
17341prompt and the @value{GDBN} output. The @value{GDBN} input is still
17342managed using readline.
c906108c 17343
8e04817f
AC
17344@item source
17345The source window shows the source file of the program. The current
46ba6afa 17346line and active breakpoints are displayed in this window.
c906108c 17347
8e04817f
AC
17348@item assembly
17349The assembly window shows the disassembly output of the program.
c906108c 17350
8e04817f 17351@item register
46ba6afa
BW
17352This window shows the processor registers. Registers are highlighted
17353when their values change.
c906108c
SS
17354@end table
17355
269c21fe 17356The source and assembly windows show the current program position
46ba6afa
BW
17357by highlighting the current line and marking it with a @samp{>} marker.
17358Breakpoints are indicated with two markers. The first marker
269c21fe
SC
17359indicates the breakpoint type:
17360
17361@table @code
17362@item B
17363Breakpoint which was hit at least once.
17364
17365@item b
17366Breakpoint which was never hit.
17367
17368@item H
17369Hardware breakpoint which was hit at least once.
17370
17371@item h
17372Hardware breakpoint which was never hit.
269c21fe
SC
17373@end table
17374
17375The second marker indicates whether the breakpoint is enabled or not:
17376
17377@table @code
17378@item +
17379Breakpoint is enabled.
17380
17381@item -
17382Breakpoint is disabled.
269c21fe
SC
17383@end table
17384
46ba6afa
BW
17385The source, assembly and register windows are updated when the current
17386thread changes, when the frame changes, or when the program counter
17387changes.
17388
17389These windows are not all visible at the same time. The command
17390window is always visible. The others can be arranged in several
17391layouts:
c906108c 17392
8e04817f
AC
17393@itemize @bullet
17394@item
46ba6afa 17395source only,
2df3850c 17396
8e04817f 17397@item
46ba6afa 17398assembly only,
8e04817f
AC
17399
17400@item
46ba6afa 17401source and assembly,
8e04817f
AC
17402
17403@item
46ba6afa 17404source and registers, or
c906108c 17405
8e04817f 17406@item
46ba6afa 17407assembly and registers.
8e04817f 17408@end itemize
c906108c 17409
46ba6afa 17410A status line above the command window shows the following information:
b7bb15bc
SC
17411
17412@table @emph
17413@item target
46ba6afa 17414Indicates the current @value{GDBN} target.
b7bb15bc
SC
17415(@pxref{Targets, ,Specifying a Debugging Target}).
17416
17417@item process
46ba6afa 17418Gives the current process or thread number.
b7bb15bc
SC
17419When no process is being debugged, this field is set to @code{No process}.
17420
17421@item function
17422Gives the current function name for the selected frame.
17423The name is demangled if demangling is turned on (@pxref{Print Settings}).
46ba6afa 17424When there is no symbol corresponding to the current program counter,
b7bb15bc
SC
17425the string @code{??} is displayed.
17426
17427@item line
17428Indicates the current line number for the selected frame.
46ba6afa 17429When the current line number is not known, the string @code{??} is displayed.
b7bb15bc
SC
17430
17431@item pc
17432Indicates the current program counter address.
b7bb15bc
SC
17433@end table
17434
8e04817f
AC
17435@node TUI Keys
17436@section TUI Key Bindings
17437@cindex TUI key bindings
c906108c 17438
8e04817f 17439The TUI installs several key bindings in the readline keymaps
46ba6afa 17440(@pxref{Command Line Editing}). The following key bindings
8e04817f 17441are installed for both TUI mode and the @value{GDBN} standard mode.
c906108c 17442
8e04817f
AC
17443@table @kbd
17444@kindex C-x C-a
17445@item C-x C-a
17446@kindex C-x a
17447@itemx C-x a
17448@kindex C-x A
17449@itemx C-x A
46ba6afa
BW
17450Enter or leave the TUI mode. When leaving the TUI mode,
17451the curses window management stops and @value{GDBN} operates using
17452its standard mode, writing on the terminal directly. When reentering
17453the TUI mode, control is given back to the curses windows.
8e04817f 17454The screen is then refreshed.
c906108c 17455
8e04817f
AC
17456@kindex C-x 1
17457@item C-x 1
17458Use a TUI layout with only one window. The layout will
17459either be @samp{source} or @samp{assembly}. When the TUI mode
17460is not active, it will switch to the TUI mode.
2df3850c 17461
8e04817f 17462Think of this key binding as the Emacs @kbd{C-x 1} binding.
c906108c 17463
8e04817f
AC
17464@kindex C-x 2
17465@item C-x 2
17466Use a TUI layout with at least two windows. When the current
46ba6afa 17467layout already has two windows, the next layout with two windows is used.
8e04817f
AC
17468When a new layout is chosen, one window will always be common to the
17469previous layout and the new one.
c906108c 17470
8e04817f 17471Think of it as the Emacs @kbd{C-x 2} binding.
2df3850c 17472
72ffddc9
SC
17473@kindex C-x o
17474@item C-x o
17475Change the active window. The TUI associates several key bindings
46ba6afa 17476(like scrolling and arrow keys) with the active window. This command
72ffddc9
SC
17477gives the focus to the next TUI window.
17478
17479Think of it as the Emacs @kbd{C-x o} binding.
17480
7cf36c78
SC
17481@kindex C-x s
17482@item C-x s
46ba6afa
BW
17483Switch in and out of the TUI SingleKey mode that binds single
17484keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}).
c906108c
SS
17485@end table
17486
46ba6afa 17487The following key bindings only work in the TUI mode:
5d161b24 17488
46ba6afa 17489@table @asis
8e04817f 17490@kindex PgUp
46ba6afa 17491@item @key{PgUp}
8e04817f 17492Scroll the active window one page up.
c906108c 17493
8e04817f 17494@kindex PgDn
46ba6afa 17495@item @key{PgDn}
8e04817f 17496Scroll the active window one page down.
c906108c 17497
8e04817f 17498@kindex Up
46ba6afa 17499@item @key{Up}
8e04817f 17500Scroll the active window one line up.
c906108c 17501
8e04817f 17502@kindex Down
46ba6afa 17503@item @key{Down}
8e04817f 17504Scroll the active window one line down.
c906108c 17505
8e04817f 17506@kindex Left
46ba6afa 17507@item @key{Left}
8e04817f 17508Scroll the active window one column left.
c906108c 17509
8e04817f 17510@kindex Right
46ba6afa 17511@item @key{Right}
8e04817f 17512Scroll the active window one column right.
c906108c 17513
8e04817f 17514@kindex C-L
46ba6afa 17515@item @kbd{C-L}
8e04817f 17516Refresh the screen.
8e04817f 17517@end table
c906108c 17518
46ba6afa
BW
17519Because the arrow keys scroll the active window in the TUI mode, they
17520are not available for their normal use by readline unless the command
17521window has the focus. When another window is active, you must use
17522other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b}
17523and @kbd{C-f} to control the command window.
8e04817f 17524
7cf36c78
SC
17525@node TUI Single Key Mode
17526@section TUI Single Key Mode
17527@cindex TUI single key mode
17528
46ba6afa
BW
17529The TUI also provides a @dfn{SingleKey} mode, which binds several
17530frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to
17531switch into this mode, where the following key bindings are used:
7cf36c78
SC
17532
17533@table @kbd
17534@kindex c @r{(SingleKey TUI key)}
17535@item c
17536continue
17537
17538@kindex d @r{(SingleKey TUI key)}
17539@item d
17540down
17541
17542@kindex f @r{(SingleKey TUI key)}
17543@item f
17544finish
17545
17546@kindex n @r{(SingleKey TUI key)}
17547@item n
17548next
17549
17550@kindex q @r{(SingleKey TUI key)}
17551@item q
46ba6afa 17552exit the SingleKey mode.
7cf36c78
SC
17553
17554@kindex r @r{(SingleKey TUI key)}
17555@item r
17556run
17557
17558@kindex s @r{(SingleKey TUI key)}
17559@item s
17560step
17561
17562@kindex u @r{(SingleKey TUI key)}
17563@item u
17564up
17565
17566@kindex v @r{(SingleKey TUI key)}
17567@item v
17568info locals
17569
17570@kindex w @r{(SingleKey TUI key)}
17571@item w
17572where
7cf36c78
SC
17573@end table
17574
17575Other keys temporarily switch to the @value{GDBN} command prompt.
17576The key that was pressed is inserted in the editing buffer so that
17577it is possible to type most @value{GDBN} commands without interaction
46ba6afa
BW
17578with the TUI SingleKey mode. Once the command is entered the TUI
17579SingleKey mode is restored. The only way to permanently leave
7f9087cb 17580this mode is by typing @kbd{q} or @kbd{C-x s}.
7cf36c78
SC
17581
17582
8e04817f 17583@node TUI Commands
db2e3e2e 17584@section TUI-specific Commands
8e04817f
AC
17585@cindex TUI commands
17586
17587The TUI has specific commands to control the text windows.
46ba6afa
BW
17588These commands are always available, even when @value{GDBN} is not in
17589the TUI mode. When @value{GDBN} is in the standard mode, most
17590of these commands will automatically switch to the TUI mode.
c906108c
SS
17591
17592@table @code
3d757584
SC
17593@item info win
17594@kindex info win
17595List and give the size of all displayed windows.
17596
8e04817f 17597@item layout next
4644b6e3 17598@kindex layout
8e04817f 17599Display the next layout.
2df3850c 17600
8e04817f 17601@item layout prev
8e04817f 17602Display the previous layout.
c906108c 17603
8e04817f 17604@item layout src
8e04817f 17605Display the source window only.
c906108c 17606
8e04817f 17607@item layout asm
8e04817f 17608Display the assembly window only.
c906108c 17609
8e04817f 17610@item layout split
8e04817f 17611Display the source and assembly window.
c906108c 17612
8e04817f 17613@item layout regs
8e04817f
AC
17614Display the register window together with the source or assembly window.
17615
46ba6afa 17616@item focus next
8e04817f 17617@kindex focus
46ba6afa
BW
17618Make the next window active for scrolling.
17619
17620@item focus prev
17621Make the previous window active for scrolling.
17622
17623@item focus src
17624Make the source window active for scrolling.
17625
17626@item focus asm
17627Make the assembly window active for scrolling.
17628
17629@item focus regs
17630Make the register window active for scrolling.
17631
17632@item focus cmd
17633Make the command window active for scrolling.
c906108c 17634
8e04817f
AC
17635@item refresh
17636@kindex refresh
7f9087cb 17637Refresh the screen. This is similar to typing @kbd{C-L}.
c906108c 17638
6a1b180d
SC
17639@item tui reg float
17640@kindex tui reg
17641Show the floating point registers in the register window.
17642
17643@item tui reg general
17644Show the general registers in the register window.
17645
17646@item tui reg next
17647Show the next register group. The list of register groups as well as
17648their order is target specific. The predefined register groups are the
17649following: @code{general}, @code{float}, @code{system}, @code{vector},
17650@code{all}, @code{save}, @code{restore}.
17651
17652@item tui reg system
17653Show the system registers in the register window.
17654
8e04817f
AC
17655@item update
17656@kindex update
17657Update the source window and the current execution point.
c906108c 17658
8e04817f
AC
17659@item winheight @var{name} +@var{count}
17660@itemx winheight @var{name} -@var{count}
17661@kindex winheight
17662Change the height of the window @var{name} by @var{count}
17663lines. Positive counts increase the height, while negative counts
17664decrease it.
2df3850c 17665
46ba6afa
BW
17666@item tabset @var{nchars}
17667@kindex tabset
c45da7e6 17668Set the width of tab stops to be @var{nchars} characters.
c906108c
SS
17669@end table
17670
8e04817f 17671@node TUI Configuration
79a6e687 17672@section TUI Configuration Variables
8e04817f 17673@cindex TUI configuration variables
c906108c 17674
46ba6afa 17675Several configuration variables control the appearance of TUI windows.
c906108c 17676
8e04817f
AC
17677@table @code
17678@item set tui border-kind @var{kind}
17679@kindex set tui border-kind
17680Select the border appearance for the source, assembly and register windows.
17681The possible values are the following:
17682@table @code
17683@item space
17684Use a space character to draw the border.
c906108c 17685
8e04817f 17686@item ascii
46ba6afa 17687Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border.
c906108c 17688
8e04817f
AC
17689@item acs
17690Use the Alternate Character Set to draw the border. The border is
17691drawn using character line graphics if the terminal supports them.
8e04817f 17692@end table
c78b4128 17693
8e04817f
AC
17694@item set tui border-mode @var{mode}
17695@kindex set tui border-mode
46ba6afa
BW
17696@itemx set tui active-border-mode @var{mode}
17697@kindex set tui active-border-mode
17698Select the display attributes for the borders of the inactive windows
17699or the active window. The @var{mode} can be one of the following:
8e04817f
AC
17700@table @code
17701@item normal
17702Use normal attributes to display the border.
c906108c 17703
8e04817f
AC
17704@item standout
17705Use standout mode.
c906108c 17706
8e04817f
AC
17707@item reverse
17708Use reverse video mode.
c906108c 17709
8e04817f
AC
17710@item half
17711Use half bright mode.
c906108c 17712
8e04817f
AC
17713@item half-standout
17714Use half bright and standout mode.
c906108c 17715
8e04817f
AC
17716@item bold
17717Use extra bright or bold mode.
c78b4128 17718
8e04817f
AC
17719@item bold-standout
17720Use extra bright or bold and standout mode.
8e04817f 17721@end table
8e04817f 17722@end table
c78b4128 17723
8e04817f
AC
17724@node Emacs
17725@chapter Using @value{GDBN} under @sc{gnu} Emacs
c78b4128 17726
8e04817f
AC
17727@cindex Emacs
17728@cindex @sc{gnu} Emacs
17729A special interface allows you to use @sc{gnu} Emacs to view (and
17730edit) the source files for the program you are debugging with
17731@value{GDBN}.
c906108c 17732
8e04817f
AC
17733To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
17734executable file you want to debug as an argument. This command starts
17735@value{GDBN} as a subprocess of Emacs, with input and output through a newly
17736created Emacs buffer.
17737@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c 17738
5e252a2e 17739Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two
8e04817f 17740things:
c906108c 17741
8e04817f
AC
17742@itemize @bullet
17743@item
5e252a2e
NR
17744All ``terminal'' input and output goes through an Emacs buffer, called
17745the GUD buffer.
c906108c 17746
8e04817f
AC
17747This applies both to @value{GDBN} commands and their output, and to the input
17748and output done by the program you are debugging.
bf0184be 17749
8e04817f
AC
17750This is useful because it means that you can copy the text of previous
17751commands and input them again; you can even use parts of the output
17752in this way.
bf0184be 17753
8e04817f
AC
17754All the facilities of Emacs' Shell mode are available for interacting
17755with your program. In particular, you can send signals the usual
17756way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
17757stop.
bf0184be
ND
17758
17759@item
8e04817f 17760@value{GDBN} displays source code through Emacs.
bf0184be 17761
8e04817f
AC
17762Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
17763source file for that frame and puts an arrow (@samp{=>}) at the
17764left margin of the current line. Emacs uses a separate buffer for
17765source display, and splits the screen to show both your @value{GDBN} session
17766and the source.
bf0184be 17767
8e04817f
AC
17768Explicit @value{GDBN} @code{list} or search commands still produce output as
17769usual, but you probably have no reason to use them from Emacs.
5e252a2e
NR
17770@end itemize
17771
17772We call this @dfn{text command mode}. Emacs 22.1, and later, also uses
17773a graphical mode, enabled by default, which provides further buffers
17774that can control the execution and describe the state of your program.
17775@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}.
c906108c 17776
64fabec2
AC
17777If you specify an absolute file name when prompted for the @kbd{M-x
17778gdb} argument, then Emacs sets your current working directory to where
17779your program resides. If you only specify the file name, then Emacs
17780sets your current working directory to to the directory associated
17781with the previous buffer. In this case, @value{GDBN} may find your
17782program by searching your environment's @code{PATH} variable, but on
17783some operating systems it might not find the source. So, although the
17784@value{GDBN} input and output session proceeds normally, the auxiliary
17785buffer does not display the current source and line of execution.
17786
17787The initial working directory of @value{GDBN} is printed on the top
5e252a2e
NR
17788line of the GUD buffer and this serves as a default for the commands
17789that specify files for @value{GDBN} to operate on. @xref{Files,
17790,Commands to Specify Files}.
64fabec2
AC
17791
17792By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
17793need to call @value{GDBN} by a different name (for example, if you
17794keep several configurations around, with different names) you can
17795customize the Emacs variable @code{gud-gdb-command-name} to run the
17796one you want.
8e04817f 17797
5e252a2e 17798In the GUD buffer, you can use these special Emacs commands in
8e04817f 17799addition to the standard Shell mode commands:
c906108c 17800
8e04817f
AC
17801@table @kbd
17802@item C-h m
5e252a2e 17803Describe the features of Emacs' GUD Mode.
c906108c 17804
64fabec2 17805@item C-c C-s
8e04817f
AC
17806Execute to another source line, like the @value{GDBN} @code{step} command; also
17807update the display window to show the current file and location.
c906108c 17808
64fabec2 17809@item C-c C-n
8e04817f
AC
17810Execute to next source line in this function, skipping all function
17811calls, like the @value{GDBN} @code{next} command. Then update the display window
17812to show the current file and location.
c906108c 17813
64fabec2 17814@item C-c C-i
8e04817f
AC
17815Execute one instruction, like the @value{GDBN} @code{stepi} command; update
17816display window accordingly.
c906108c 17817
8e04817f
AC
17818@item C-c C-f
17819Execute until exit from the selected stack frame, like the @value{GDBN}
17820@code{finish} command.
c906108c 17821
64fabec2 17822@item C-c C-r
8e04817f
AC
17823Continue execution of your program, like the @value{GDBN} @code{continue}
17824command.
b433d00b 17825
64fabec2 17826@item C-c <
8e04817f
AC
17827Go up the number of frames indicated by the numeric argument
17828(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
17829like the @value{GDBN} @code{up} command.
b433d00b 17830
64fabec2 17831@item C-c >
8e04817f
AC
17832Go down the number of frames indicated by the numeric argument, like the
17833@value{GDBN} @code{down} command.
8e04817f 17834@end table
c906108c 17835
7f9087cb 17836In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break})
8e04817f 17837tells @value{GDBN} to set a breakpoint on the source line point is on.
c906108c 17838
5e252a2e
NR
17839In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a
17840separate frame which shows a backtrace when the GUD buffer is current.
17841Move point to any frame in the stack and type @key{RET} to make it
17842become the current frame and display the associated source in the
17843source buffer. Alternatively, click @kbd{Mouse-2} to make the
17844selected frame become the current one. In graphical mode, the
17845speedbar displays watch expressions.
64fabec2 17846
8e04817f
AC
17847If you accidentally delete the source-display buffer, an easy way to get
17848it back is to type the command @code{f} in the @value{GDBN} buffer, to
17849request a frame display; when you run under Emacs, this recreates
17850the source buffer if necessary to show you the context of the current
17851frame.
c906108c 17852
8e04817f
AC
17853The source files displayed in Emacs are in ordinary Emacs buffers
17854which are visiting the source files in the usual way. You can edit
17855the files with these buffers if you wish; but keep in mind that @value{GDBN}
17856communicates with Emacs in terms of line numbers. If you add or
17857delete lines from the text, the line numbers that @value{GDBN} knows cease
17858to correspond properly with the code.
b383017d 17859
5e252a2e
NR
17860A more detailed description of Emacs' interaction with @value{GDBN} is
17861given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu}
17862Emacs Manual}).
c906108c 17863
8e04817f
AC
17864@c The following dropped because Epoch is nonstandard. Reactivate
17865@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
17866@ignore
17867@kindex Emacs Epoch environment
17868@kindex Epoch
17869@kindex inspect
c906108c 17870
8e04817f
AC
17871Version 18 of @sc{gnu} Emacs has a built-in window system
17872called the @code{epoch}
17873environment. Users of this environment can use a new command,
17874@code{inspect} which performs identically to @code{print} except that
17875each value is printed in its own window.
17876@end ignore
c906108c 17877
922fbb7b
AC
17878
17879@node GDB/MI
17880@chapter The @sc{gdb/mi} Interface
17881
17882@unnumberedsec Function and Purpose
17883
17884@cindex @sc{gdb/mi}, its purpose
6b5e8c01
NR
17885@sc{gdb/mi} is a line based machine oriented text interface to
17886@value{GDBN} and is activated by specifying using the
17887@option{--interpreter} command line option (@pxref{Mode Options}). It
17888is specifically intended to support the development of systems which
17889use the debugger as just one small component of a larger system.
922fbb7b
AC
17890
17891This chapter is a specification of the @sc{gdb/mi} interface. It is written
17892in the form of a reference manual.
17893
17894Note that @sc{gdb/mi} is still under construction, so some of the
af6eff6f
NR
17895features described below are incomplete and subject to change
17896(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}).
922fbb7b
AC
17897
17898@unnumberedsec Notation and Terminology
17899
17900@cindex notational conventions, for @sc{gdb/mi}
17901This chapter uses the following notation:
17902
17903@itemize @bullet
17904@item
17905@code{|} separates two alternatives.
17906
17907@item
17908@code{[ @var{something} ]} indicates that @var{something} is optional:
17909it may or may not be given.
17910
17911@item
17912@code{( @var{group} )*} means that @var{group} inside the parentheses
17913may repeat zero or more times.
17914
17915@item
17916@code{( @var{group} )+} means that @var{group} inside the parentheses
17917may repeat one or more times.
17918
17919@item
17920@code{"@var{string}"} means a literal @var{string}.
17921@end itemize
17922
17923@ignore
17924@heading Dependencies
17925@end ignore
17926
922fbb7b
AC
17927@menu
17928* GDB/MI Command Syntax::
17929* GDB/MI Compatibility with CLI::
af6eff6f 17930* GDB/MI Development and Front Ends::
922fbb7b 17931* GDB/MI Output Records::
ef21caaf 17932* GDB/MI Simple Examples::
922fbb7b 17933* GDB/MI Command Description Format::
ef21caaf 17934* GDB/MI Breakpoint Commands::
a2c02241
NR
17935* GDB/MI Program Context::
17936* GDB/MI Thread Commands::
17937* GDB/MI Program Execution::
17938* GDB/MI Stack Manipulation::
17939* GDB/MI Variable Objects::
922fbb7b 17940* GDB/MI Data Manipulation::
a2c02241
NR
17941* GDB/MI Tracepoint Commands::
17942* GDB/MI Symbol Query::
351ff01a 17943* GDB/MI File Commands::
922fbb7b
AC
17944@ignore
17945* GDB/MI Kod Commands::
17946* GDB/MI Memory Overlay Commands::
17947* GDB/MI Signal Handling Commands::
17948@end ignore
922fbb7b 17949* GDB/MI Target Manipulation::
a6b151f1 17950* GDB/MI File Transfer Commands::
ef21caaf 17951* GDB/MI Miscellaneous Commands::
922fbb7b
AC
17952@end menu
17953
17954@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
17955@node GDB/MI Command Syntax
17956@section @sc{gdb/mi} Command Syntax
17957
17958@menu
17959* GDB/MI Input Syntax::
17960* GDB/MI Output Syntax::
922fbb7b
AC
17961@end menu
17962
17963@node GDB/MI Input Syntax
17964@subsection @sc{gdb/mi} Input Syntax
17965
17966@cindex input syntax for @sc{gdb/mi}
17967@cindex @sc{gdb/mi}, input syntax
17968@table @code
17969@item @var{command} @expansion{}
17970@code{@var{cli-command} | @var{mi-command}}
17971
17972@item @var{cli-command} @expansion{}
17973@code{[ @var{token} ] @var{cli-command} @var{nl}}, where
17974@var{cli-command} is any existing @value{GDBN} CLI command.
17975
17976@item @var{mi-command} @expansion{}
17977@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
17978@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
17979
17980@item @var{token} @expansion{}
17981"any sequence of digits"
17982
17983@item @var{option} @expansion{}
17984@code{"-" @var{parameter} [ " " @var{parameter} ]}
17985
17986@item @var{parameter} @expansion{}
17987@code{@var{non-blank-sequence} | @var{c-string}}
17988
17989@item @var{operation} @expansion{}
17990@emph{any of the operations described in this chapter}
17991
17992@item @var{non-blank-sequence} @expansion{}
17993@emph{anything, provided it doesn't contain special characters such as
17994"-", @var{nl}, """ and of course " "}
17995
17996@item @var{c-string} @expansion{}
17997@code{""" @var{seven-bit-iso-c-string-content} """}
17998
17999@item @var{nl} @expansion{}
18000@code{CR | CR-LF}
18001@end table
18002
18003@noindent
18004Notes:
18005
18006@itemize @bullet
18007@item
18008The CLI commands are still handled by the @sc{mi} interpreter; their
18009output is described below.
18010
18011@item
18012The @code{@var{token}}, when present, is passed back when the command
18013finishes.
18014
18015@item
18016Some @sc{mi} commands accept optional arguments as part of the parameter
18017list. Each option is identified by a leading @samp{-} (dash) and may be
18018followed by an optional argument parameter. Options occur first in the
18019parameter list and can be delimited from normal parameters using
18020@samp{--} (this is useful when some parameters begin with a dash).
18021@end itemize
18022
18023Pragmatics:
18024
18025@itemize @bullet
18026@item
18027We want easy access to the existing CLI syntax (for debugging).
18028
18029@item
18030We want it to be easy to spot a @sc{mi} operation.
18031@end itemize
18032
18033@node GDB/MI Output Syntax
18034@subsection @sc{gdb/mi} Output Syntax
18035
18036@cindex output syntax of @sc{gdb/mi}
18037@cindex @sc{gdb/mi}, output syntax
18038The output from @sc{gdb/mi} consists of zero or more out-of-band records
18039followed, optionally, by a single result record. This result record
18040is for the most recent command. The sequence of output records is
594fe323 18041terminated by @samp{(gdb)}.
922fbb7b
AC
18042
18043If an input command was prefixed with a @code{@var{token}} then the
18044corresponding output for that command will also be prefixed by that same
18045@var{token}.
18046
18047@table @code
18048@item @var{output} @expansion{}
594fe323 18049@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
922fbb7b
AC
18050
18051@item @var{result-record} @expansion{}
18052@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
18053
18054@item @var{out-of-band-record} @expansion{}
18055@code{@var{async-record} | @var{stream-record}}
18056
18057@item @var{async-record} @expansion{}
18058@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
18059
18060@item @var{exec-async-output} @expansion{}
18061@code{[ @var{token} ] "*" @var{async-output}}
18062
18063@item @var{status-async-output} @expansion{}
18064@code{[ @var{token} ] "+" @var{async-output}}
18065
18066@item @var{notify-async-output} @expansion{}
18067@code{[ @var{token} ] "=" @var{async-output}}
18068
18069@item @var{async-output} @expansion{}
18070@code{@var{async-class} ( "," @var{result} )* @var{nl}}
18071
18072@item @var{result-class} @expansion{}
18073@code{"done" | "running" | "connected" | "error" | "exit"}
18074
18075@item @var{async-class} @expansion{}
18076@code{"stopped" | @var{others}} (where @var{others} will be added
18077depending on the needs---this is still in development).
18078
18079@item @var{result} @expansion{}
18080@code{ @var{variable} "=" @var{value}}
18081
18082@item @var{variable} @expansion{}
18083@code{ @var{string} }
18084
18085@item @var{value} @expansion{}
18086@code{ @var{const} | @var{tuple} | @var{list} }
18087
18088@item @var{const} @expansion{}
18089@code{@var{c-string}}
18090
18091@item @var{tuple} @expansion{}
18092@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
18093
18094@item @var{list} @expansion{}
18095@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
18096@var{result} ( "," @var{result} )* "]" }
18097
18098@item @var{stream-record} @expansion{}
18099@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
18100
18101@item @var{console-stream-output} @expansion{}
18102@code{"~" @var{c-string}}
18103
18104@item @var{target-stream-output} @expansion{}
18105@code{"@@" @var{c-string}}
18106
18107@item @var{log-stream-output} @expansion{}
18108@code{"&" @var{c-string}}
18109
18110@item @var{nl} @expansion{}
18111@code{CR | CR-LF}
18112
18113@item @var{token} @expansion{}
18114@emph{any sequence of digits}.
18115@end table
18116
18117@noindent
18118Notes:
18119
18120@itemize @bullet
18121@item
18122All output sequences end in a single line containing a period.
18123
18124@item
721c02de
VP
18125The @code{@var{token}} is from the corresponding request. Note that
18126for all async output, while the token is allowed by the grammar and
18127may be output by future versions of @value{GDBN} for select async
18128output messages, it is generally omitted. Frontends should treat
18129all async output as reporting general changes in the state of the
18130target and there should be no need to associate async output to any
18131prior command.
922fbb7b
AC
18132
18133@item
18134@cindex status output in @sc{gdb/mi}
18135@var{status-async-output} contains on-going status information about the
18136progress of a slow operation. It can be discarded. All status output is
18137prefixed by @samp{+}.
18138
18139@item
18140@cindex async output in @sc{gdb/mi}
18141@var{exec-async-output} contains asynchronous state change on the target
18142(stopped, started, disappeared). All async output is prefixed by
18143@samp{*}.
18144
18145@item
18146@cindex notify output in @sc{gdb/mi}
18147@var{notify-async-output} contains supplementary information that the
18148client should handle (e.g., a new breakpoint information). All notify
18149output is prefixed by @samp{=}.
18150
18151@item
18152@cindex console output in @sc{gdb/mi}
18153@var{console-stream-output} is output that should be displayed as is in the
18154console. It is the textual response to a CLI command. All the console
18155output is prefixed by @samp{~}.
18156
18157@item
18158@cindex target output in @sc{gdb/mi}
18159@var{target-stream-output} is the output produced by the target program.
18160All the target output is prefixed by @samp{@@}.
18161
18162@item
18163@cindex log output in @sc{gdb/mi}
18164@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
18165instance messages that should be displayed as part of an error log. All
18166the log output is prefixed by @samp{&}.
18167
18168@item
18169@cindex list output in @sc{gdb/mi}
18170New @sc{gdb/mi} commands should only output @var{lists} containing
18171@var{values}.
18172
18173
18174@end itemize
18175
18176@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
18177details about the various output records.
18178
922fbb7b
AC
18179@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18180@node GDB/MI Compatibility with CLI
18181@section @sc{gdb/mi} Compatibility with CLI
18182
18183@cindex compatibility, @sc{gdb/mi} and CLI
18184@cindex @sc{gdb/mi}, compatibility with CLI
922fbb7b 18185
a2c02241
NR
18186For the developers convenience CLI commands can be entered directly,
18187but there may be some unexpected behaviour. For example, commands
18188that query the user will behave as if the user replied yes, breakpoint
18189command lists are not executed and some CLI commands, such as
18190@code{if}, @code{when} and @code{define}, prompt for further input with
18191@samp{>}, which is not valid MI output.
ef21caaf
NR
18192
18193This feature may be removed at some stage in the future and it is
a2c02241
NR
18194recommended that front ends use the @code{-interpreter-exec} command
18195(@pxref{-interpreter-exec}).
922fbb7b 18196
af6eff6f
NR
18197@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18198@node GDB/MI Development and Front Ends
18199@section @sc{gdb/mi} Development and Front Ends
18200@cindex @sc{gdb/mi} development
18201
18202The application which takes the MI output and presents the state of the
18203program being debugged to the user is called a @dfn{front end}.
18204
18205Although @sc{gdb/mi} is still incomplete, it is currently being used
18206by a variety of front ends to @value{GDBN}. This makes it difficult
18207to introduce new functionality without breaking existing usage. This
18208section tries to minimize the problems by describing how the protocol
18209might change.
18210
18211Some changes in MI need not break a carefully designed front end, and
18212for these the MI version will remain unchanged. The following is a
18213list of changes that may occur within one level, so front ends should
18214parse MI output in a way that can handle them:
18215
18216@itemize @bullet
18217@item
18218New MI commands may be added.
18219
18220@item
18221New fields may be added to the output of any MI command.
18222
36ece8b3
NR
18223@item
18224The range of values for fields with specified values, e.g.,
9f708cb2 18225@code{in_scope} (@pxref{-var-update}) may be extended.
36ece8b3 18226
af6eff6f
NR
18227@c The format of field's content e.g type prefix, may change so parse it
18228@c at your own risk. Yes, in general?
18229
18230@c The order of fields may change? Shouldn't really matter but it might
18231@c resolve inconsistencies.
18232@end itemize
18233
18234If the changes are likely to break front ends, the MI version level
18235will be increased by one. This will allow the front end to parse the
18236output according to the MI version. Apart from mi0, new versions of
18237@value{GDBN} will not support old versions of MI and it will be the
18238responsibility of the front end to work with the new one.
18239
18240@c Starting with mi3, add a new command -mi-version that prints the MI
18241@c version?
18242
18243The best way to avoid unexpected changes in MI that might break your front
18244end is to make your project known to @value{GDBN} developers and
7a9a6b69 18245follow development on @email{gdb@@sourceware.org} and
fa0f268d 18246@email{gdb-patches@@sourceware.org}.
af6eff6f
NR
18247@cindex mailing lists
18248
922fbb7b
AC
18249@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18250@node GDB/MI Output Records
18251@section @sc{gdb/mi} Output Records
18252
18253@menu
18254* GDB/MI Result Records::
18255* GDB/MI Stream Records::
82f68b1c 18256* GDB/MI Async Records::
922fbb7b
AC
18257@end menu
18258
18259@node GDB/MI Result Records
18260@subsection @sc{gdb/mi} Result Records
18261
18262@cindex result records in @sc{gdb/mi}
18263@cindex @sc{gdb/mi}, result records
18264In addition to a number of out-of-band notifications, the response to a
18265@sc{gdb/mi} command includes one of the following result indications:
18266
18267@table @code
18268@findex ^done
18269@item "^done" [ "," @var{results} ]
18270The synchronous operation was successful, @code{@var{results}} are the return
18271values.
18272
18273@item "^running"
18274@findex ^running
18275@c Is this one correct? Should it be an out-of-band notification?
18276The asynchronous operation was successfully started. The target is
18277running.
18278
ef21caaf
NR
18279@item "^connected"
18280@findex ^connected
3f94c067 18281@value{GDBN} has connected to a remote target.
ef21caaf 18282
922fbb7b
AC
18283@item "^error" "," @var{c-string}
18284@findex ^error
18285The operation failed. The @code{@var{c-string}} contains the corresponding
18286error message.
ef21caaf
NR
18287
18288@item "^exit"
18289@findex ^exit
3f94c067 18290@value{GDBN} has terminated.
ef21caaf 18291
922fbb7b
AC
18292@end table
18293
18294@node GDB/MI Stream Records
18295@subsection @sc{gdb/mi} Stream Records
18296
18297@cindex @sc{gdb/mi}, stream records
18298@cindex stream records in @sc{gdb/mi}
18299@value{GDBN} internally maintains a number of output streams: the console, the
18300target, and the log. The output intended for each of these streams is
18301funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
18302
18303Each stream record begins with a unique @dfn{prefix character} which
18304identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
18305Syntax}). In addition to the prefix, each stream record contains a
18306@code{@var{string-output}}. This is either raw text (with an implicit new
18307line) or a quoted C string (which does not contain an implicit newline).
18308
18309@table @code
18310@item "~" @var{string-output}
18311The console output stream contains text that should be displayed in the
18312CLI console window. It contains the textual responses to CLI commands.
18313
18314@item "@@" @var{string-output}
18315The target output stream contains any textual output from the running
ef21caaf
NR
18316target. This is only present when GDB's event loop is truly
18317asynchronous, which is currently only the case for remote targets.
922fbb7b
AC
18318
18319@item "&" @var{string-output}
18320The log stream contains debugging messages being produced by @value{GDBN}'s
18321internals.
18322@end table
18323
82f68b1c
VP
18324@node GDB/MI Async Records
18325@subsection @sc{gdb/mi} Async Records
922fbb7b 18326
82f68b1c
VP
18327@cindex async records in @sc{gdb/mi}
18328@cindex @sc{gdb/mi}, async records
18329@dfn{Async} records are used to notify the @sc{gdb/mi} client of
922fbb7b 18330additional changes that have occurred. Those changes can either be a
82f68b1c 18331consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of
922fbb7b
AC
18332target activity (e.g., target stopped).
18333
8eb41542 18334The following is the list of possible async records:
922fbb7b
AC
18335
18336@table @code
034dad6f 18337
e1ac3328
VP
18338@item *running,thread-id="@var{thread}"
18339The target is now running. The @var{thread} field tells which
18340specific thread is now running, and can be @samp{all} if all threads
18341are running. The frontend should assume that no interaction with a
18342running thread is possible after this notification is produced.
18343The frontend should not assume that this notification is output
18344only once for any command. @value{GDBN} may emit this notification
18345several times, either for different threads, because it cannot resume
18346all threads together, or even for a single thread, if the thread must
18347be stepped though some code before letting it run freely.
18348
82f68b1c
VP
18349@item *stopped,reason="@var{reason}"
18350The target has stopped. The @var{reason} field can have one of the
18351following values:
034dad6f
BR
18352
18353@table @code
18354@item breakpoint-hit
18355A breakpoint was reached.
18356@item watchpoint-trigger
18357A watchpoint was triggered.
18358@item read-watchpoint-trigger
18359A read watchpoint was triggered.
18360@item access-watchpoint-trigger
18361An access watchpoint was triggered.
18362@item function-finished
18363An -exec-finish or similar CLI command was accomplished.
18364@item location-reached
18365An -exec-until or similar CLI command was accomplished.
18366@item watchpoint-scope
18367A watchpoint has gone out of scope.
18368@item end-stepping-range
18369An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or
18370similar CLI command was accomplished.
18371@item exited-signalled
18372The inferior exited because of a signal.
18373@item exited
18374The inferior exited.
18375@item exited-normally
18376The inferior exited normally.
18377@item signal-received
18378A signal was received by the inferior.
922fbb7b
AC
18379@end table
18380
82f68b1c
VP
18381@item =thread-created,id="@var{id}"
18382@itemx =thread-exited,id="@var{id}"
18383A thread either was created, or has exited. The @var{id} field
18384contains the @value{GDBN} identifier of the thread.
18385@end table
18386
18387
922fbb7b 18388
ef21caaf
NR
18389@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18390@node GDB/MI Simple Examples
18391@section Simple Examples of @sc{gdb/mi} Interaction
18392@cindex @sc{gdb/mi}, simple examples
18393
18394This subsection presents several simple examples of interaction using
18395the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
18396following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
18397the output received from @sc{gdb/mi}.
18398
d3e8051b 18399Note the line breaks shown in the examples are here only for
ef21caaf
NR
18400readability, they don't appear in the real output.
18401
79a6e687 18402@subheading Setting a Breakpoint
ef21caaf
NR
18403
18404Setting a breakpoint generates synchronous output which contains detailed
18405information of the breakpoint.
18406
18407@smallexample
18408-> -break-insert main
18409<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
18410 enabled="y",addr="0x08048564",func="main",file="myprog.c",
18411 fullname="/home/nickrob/myprog.c",line="68",times="0"@}
18412<- (gdb)
18413@end smallexample
18414
18415@subheading Program Execution
18416
18417Program execution generates asynchronous records and MI gives the
18418reason that execution stopped.
18419
18420@smallexample
18421-> -exec-run
18422<- ^running
18423<- (gdb)
a47ec5fe 18424<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
ef21caaf
NR
18425 frame=@{addr="0x08048564",func="main",
18426 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}],
18427 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@}
18428<- (gdb)
18429-> -exec-continue
18430<- ^running
18431<- (gdb)
18432<- *stopped,reason="exited-normally"
18433<- (gdb)
18434@end smallexample
18435
3f94c067 18436@subheading Quitting @value{GDBN}
ef21caaf 18437
3f94c067 18438Quitting @value{GDBN} just prints the result class @samp{^exit}.
ef21caaf
NR
18439
18440@smallexample
18441-> (gdb)
18442<- -gdb-exit
18443<- ^exit
18444@end smallexample
18445
a2c02241 18446@subheading A Bad Command
ef21caaf
NR
18447
18448Here's what happens if you pass a non-existent command:
18449
18450@smallexample
18451-> -rubbish
18452<- ^error,msg="Undefined MI command: rubbish"
594fe323 18453<- (gdb)
ef21caaf
NR
18454@end smallexample
18455
18456
922fbb7b
AC
18457@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18458@node GDB/MI Command Description Format
18459@section @sc{gdb/mi} Command Description Format
18460
18461The remaining sections describe blocks of commands. Each block of
18462commands is laid out in a fashion similar to this section.
18463
922fbb7b
AC
18464@subheading Motivation
18465
18466The motivation for this collection of commands.
18467
18468@subheading Introduction
18469
18470A brief introduction to this collection of commands as a whole.
18471
18472@subheading Commands
18473
18474For each command in the block, the following is described:
18475
18476@subsubheading Synopsis
18477
18478@smallexample
18479 -command @var{args}@dots{}
18480@end smallexample
18481
922fbb7b
AC
18482@subsubheading Result
18483
265eeb58 18484@subsubheading @value{GDBN} Command
922fbb7b 18485
265eeb58 18486The corresponding @value{GDBN} CLI command(s), if any.
922fbb7b
AC
18487
18488@subsubheading Example
18489
ef21caaf
NR
18490Example(s) formatted for readability. Some of the described commands have
18491not been implemented yet and these are labeled N.A.@: (not available).
18492
18493
922fbb7b 18494@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ef21caaf
NR
18495@node GDB/MI Breakpoint Commands
18496@section @sc{gdb/mi} Breakpoint Commands
922fbb7b
AC
18497
18498@cindex breakpoint commands for @sc{gdb/mi}
18499@cindex @sc{gdb/mi}, breakpoint commands
18500This section documents @sc{gdb/mi} commands for manipulating
18501breakpoints.
18502
18503@subheading The @code{-break-after} Command
18504@findex -break-after
18505
18506@subsubheading Synopsis
18507
18508@smallexample
18509 -break-after @var{number} @var{count}
18510@end smallexample
18511
18512The breakpoint number @var{number} is not in effect until it has been
18513hit @var{count} times. To see how this is reflected in the output of
18514the @samp{-break-list} command, see the description of the
18515@samp{-break-list} command below.
18516
18517@subsubheading @value{GDBN} Command
18518
18519The corresponding @value{GDBN} command is @samp{ignore}.
18520
18521@subsubheading Example
18522
18523@smallexample
594fe323 18524(gdb)
922fbb7b 18525-break-insert main
a47ec5fe
AR
18526^done,bkpt=@{number="1",type="breakpoint",disp="keep",
18527enabled="y",addr="0x000100d0",func="main",file="hello.c",
948d5102 18528fullname="/home/foo/hello.c",line="5",times="0"@}
594fe323 18529(gdb)
922fbb7b
AC
18530-break-after 1 3
18531~
18532^done
594fe323 18533(gdb)
922fbb7b
AC
18534-break-list
18535^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
18536hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18537@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18538@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18539@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18540@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18541@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18542body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
18543addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
18544line="5",times="0",ignore="3"@}]@}
594fe323 18545(gdb)
922fbb7b
AC
18546@end smallexample
18547
18548@ignore
18549@subheading The @code{-break-catch} Command
18550@findex -break-catch
18551
18552@subheading The @code{-break-commands} Command
18553@findex -break-commands
18554@end ignore
18555
18556
18557@subheading The @code{-break-condition} Command
18558@findex -break-condition
18559
18560@subsubheading Synopsis
18561
18562@smallexample
18563 -break-condition @var{number} @var{expr}
18564@end smallexample
18565
18566Breakpoint @var{number} will stop the program only if the condition in
18567@var{expr} is true. The condition becomes part of the
18568@samp{-break-list} output (see the description of the @samp{-break-list}
18569command below).
18570
18571@subsubheading @value{GDBN} Command
18572
18573The corresponding @value{GDBN} command is @samp{condition}.
18574
18575@subsubheading Example
18576
18577@smallexample
594fe323 18578(gdb)
922fbb7b
AC
18579-break-condition 1 1
18580^done
594fe323 18581(gdb)
922fbb7b
AC
18582-break-list
18583^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
18584hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18585@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18586@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18587@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18588@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18589@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18590body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
18591addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
18592line="5",cond="1",times="0",ignore="3"@}]@}
594fe323 18593(gdb)
922fbb7b
AC
18594@end smallexample
18595
18596@subheading The @code{-break-delete} Command
18597@findex -break-delete
18598
18599@subsubheading Synopsis
18600
18601@smallexample
18602 -break-delete ( @var{breakpoint} )+
18603@end smallexample
18604
18605Delete the breakpoint(s) whose number(s) are specified in the argument
18606list. This is obviously reflected in the breakpoint list.
18607
79a6e687 18608@subsubheading @value{GDBN} Command
922fbb7b
AC
18609
18610The corresponding @value{GDBN} command is @samp{delete}.
18611
18612@subsubheading Example
18613
18614@smallexample
594fe323 18615(gdb)
922fbb7b
AC
18616-break-delete 1
18617^done
594fe323 18618(gdb)
922fbb7b
AC
18619-break-list
18620^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
18621hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18622@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18623@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18624@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18625@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18626@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18627body=[]@}
594fe323 18628(gdb)
922fbb7b
AC
18629@end smallexample
18630
18631@subheading The @code{-break-disable} Command
18632@findex -break-disable
18633
18634@subsubheading Synopsis
18635
18636@smallexample
18637 -break-disable ( @var{breakpoint} )+
18638@end smallexample
18639
18640Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
18641break list is now set to @samp{n} for the named @var{breakpoint}(s).
18642
18643@subsubheading @value{GDBN} Command
18644
18645The corresponding @value{GDBN} command is @samp{disable}.
18646
18647@subsubheading Example
18648
18649@smallexample
594fe323 18650(gdb)
922fbb7b
AC
18651-break-disable 2
18652^done
594fe323 18653(gdb)
922fbb7b
AC
18654-break-list
18655^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
18656hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18657@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18658@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18659@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18660@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18661@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18662body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
948d5102
NR
18663addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
18664line="5",times="0"@}]@}
594fe323 18665(gdb)
922fbb7b
AC
18666@end smallexample
18667
18668@subheading The @code{-break-enable} Command
18669@findex -break-enable
18670
18671@subsubheading Synopsis
18672
18673@smallexample
18674 -break-enable ( @var{breakpoint} )+
18675@end smallexample
18676
18677Enable (previously disabled) @var{breakpoint}(s).
18678
18679@subsubheading @value{GDBN} Command
18680
18681The corresponding @value{GDBN} command is @samp{enable}.
18682
18683@subsubheading Example
18684
18685@smallexample
594fe323 18686(gdb)
922fbb7b
AC
18687-break-enable 2
18688^done
594fe323 18689(gdb)
922fbb7b
AC
18690-break-list
18691^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
18692hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18693@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18694@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18695@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18696@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18697@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18698body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
18699addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
18700line="5",times="0"@}]@}
594fe323 18701(gdb)
922fbb7b
AC
18702@end smallexample
18703
18704@subheading The @code{-break-info} Command
18705@findex -break-info
18706
18707@subsubheading Synopsis
18708
18709@smallexample
18710 -break-info @var{breakpoint}
18711@end smallexample
18712
18713@c REDUNDANT???
18714Get information about a single breakpoint.
18715
79a6e687 18716@subsubheading @value{GDBN} Command
922fbb7b
AC
18717
18718The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
18719
18720@subsubheading Example
18721N.A.
18722
18723@subheading The @code{-break-insert} Command
18724@findex -break-insert
18725
18726@subsubheading Synopsis
18727
18728@smallexample
afe8ab22 18729 -break-insert [ -t ] [ -h ] [ -f ]
922fbb7b 18730 [ -c @var{condition} ] [ -i @var{ignore-count} ]
afe8ab22 18731 [ -p @var{thread} ] [ @var{location} ]
922fbb7b
AC
18732@end smallexample
18733
18734@noindent
afe8ab22 18735If specified, @var{location}, can be one of:
922fbb7b
AC
18736
18737@itemize @bullet
18738@item function
18739@c @item +offset
18740@c @item -offset
18741@c @item linenum
18742@item filename:linenum
18743@item filename:function
18744@item *address
18745@end itemize
18746
18747The possible optional parameters of this command are:
18748
18749@table @samp
18750@item -t
948d5102 18751Insert a temporary breakpoint.
922fbb7b
AC
18752@item -h
18753Insert a hardware breakpoint.
18754@item -c @var{condition}
18755Make the breakpoint conditional on @var{condition}.
18756@item -i @var{ignore-count}
18757Initialize the @var{ignore-count}.
afe8ab22
VP
18758@item -f
18759If @var{location} cannot be parsed (for example if it
18760refers to unknown files or functions), create a pending
18761breakpoint. Without this flag, @value{GDBN} will report
18762an error, and won't create a breakpoint, if @var{location}
18763cannot be parsed.
922fbb7b
AC
18764@end table
18765
18766@subsubheading Result
18767
18768The result is in the form:
18769
18770@smallexample
948d5102
NR
18771^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
18772enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filename}",
ef21caaf
NR
18773fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{threadno},]
18774times="@var{times}"@}
922fbb7b
AC
18775@end smallexample
18776
18777@noindent
948d5102
NR
18778where @var{number} is the @value{GDBN} number for this breakpoint,
18779@var{funcname} is the name of the function where the breakpoint was
18780inserted, @var{filename} is the name of the source file which contains
18781this function, @var{lineno} is the source line number within that file
18782and @var{times} the number of times that the breakpoint has been hit
18783(always 0 for -break-insert but may be greater for -break-info or -break-list
18784which use the same output).
922fbb7b
AC
18785
18786Note: this format is open to change.
18787@c An out-of-band breakpoint instead of part of the result?
18788
18789@subsubheading @value{GDBN} Command
18790
18791The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
18792@samp{hbreak}, @samp{thbreak}, and @samp{rbreak}.
18793
18794@subsubheading Example
18795
18796@smallexample
594fe323 18797(gdb)
922fbb7b 18798-break-insert main
948d5102
NR
18799^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
18800fullname="/home/foo/recursive2.c,line="4",times="0"@}
594fe323 18801(gdb)
922fbb7b 18802-break-insert -t foo
948d5102
NR
18803^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
18804fullname="/home/foo/recursive2.c,line="11",times="0"@}
594fe323 18805(gdb)
922fbb7b
AC
18806-break-list
18807^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
18808hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18809@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18810@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18811@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18812@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18813@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18814body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
18815addr="0x0001072c", func="main",file="recursive2.c",
18816fullname="/home/foo/recursive2.c,"line="4",times="0"@},
922fbb7b 18817bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
948d5102
NR
18818addr="0x00010774",func="foo",file="recursive2.c",
18819fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
594fe323 18820(gdb)
922fbb7b
AC
18821-break-insert -r foo.*
18822~int foo(int, int);
948d5102
NR
18823^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
18824"fullname="/home/foo/recursive2.c",line="11",times="0"@}
594fe323 18825(gdb)
922fbb7b
AC
18826@end smallexample
18827
18828@subheading The @code{-break-list} Command
18829@findex -break-list
18830
18831@subsubheading Synopsis
18832
18833@smallexample
18834 -break-list
18835@end smallexample
18836
18837Displays the list of inserted breakpoints, showing the following fields:
18838
18839@table @samp
18840@item Number
18841number of the breakpoint
18842@item Type
18843type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
18844@item Disposition
18845should the breakpoint be deleted or disabled when it is hit: @samp{keep}
18846or @samp{nokeep}
18847@item Enabled
18848is the breakpoint enabled or no: @samp{y} or @samp{n}
18849@item Address
18850memory location at which the breakpoint is set
18851@item What
18852logical location of the breakpoint, expressed by function name, file
18853name, line number
18854@item Times
18855number of times the breakpoint has been hit
18856@end table
18857
18858If there are no breakpoints or watchpoints, the @code{BreakpointTable}
18859@code{body} field is an empty list.
18860
18861@subsubheading @value{GDBN} Command
18862
18863The corresponding @value{GDBN} command is @samp{info break}.
18864
18865@subsubheading Example
18866
18867@smallexample
594fe323 18868(gdb)
922fbb7b
AC
18869-break-list
18870^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
18871hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18872@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18873@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18874@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18875@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18876@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18877body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
18878addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
18879bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
18880addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
18881line="13",times="0"@}]@}
594fe323 18882(gdb)
922fbb7b
AC
18883@end smallexample
18884
18885Here's an example of the result when there are no breakpoints:
18886
18887@smallexample
594fe323 18888(gdb)
922fbb7b
AC
18889-break-list
18890^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
18891hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18892@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18893@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18894@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18895@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18896@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18897body=[]@}
594fe323 18898(gdb)
922fbb7b
AC
18899@end smallexample
18900
18901@subheading The @code{-break-watch} Command
18902@findex -break-watch
18903
18904@subsubheading Synopsis
18905
18906@smallexample
18907 -break-watch [ -a | -r ]
18908@end smallexample
18909
18910Create a watchpoint. With the @samp{-a} option it will create an
d3e8051b 18911@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a
922fbb7b 18912read from or on a write to the memory location. With the @samp{-r}
d3e8051b 18913option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will
922fbb7b
AC
18914trigger only when the memory location is accessed for reading. Without
18915either of the options, the watchpoint created is a regular watchpoint,
d3e8051b 18916i.e., it will trigger when the memory location is accessed for writing.
79a6e687 18917@xref{Set Watchpoints, , Setting Watchpoints}.
922fbb7b
AC
18918
18919Note that @samp{-break-list} will report a single list of watchpoints and
18920breakpoints inserted.
18921
18922@subsubheading @value{GDBN} Command
18923
18924The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
18925@samp{rwatch}.
18926
18927@subsubheading Example
18928
18929Setting a watchpoint on a variable in the @code{main} function:
18930
18931@smallexample
594fe323 18932(gdb)
922fbb7b
AC
18933-break-watch x
18934^done,wpt=@{number="2",exp="x"@}
594fe323 18935(gdb)
922fbb7b
AC
18936-exec-continue
18937^running
0869d01b
NR
18938(gdb)
18939*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
922fbb7b 18940value=@{old="-268439212",new="55"@},
76ff342d 18941frame=@{func="main",args=[],file="recursive2.c",
948d5102 18942fullname="/home/foo/bar/recursive2.c",line="5"@}
594fe323 18943(gdb)
922fbb7b
AC
18944@end smallexample
18945
18946Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
18947the program execution twice: first for the variable changing value, then
18948for the watchpoint going out of scope.
18949
18950@smallexample
594fe323 18951(gdb)
922fbb7b
AC
18952-break-watch C
18953^done,wpt=@{number="5",exp="C"@}
594fe323 18954(gdb)
922fbb7b
AC
18955-exec-continue
18956^running
0869d01b
NR
18957(gdb)
18958*stopped,reason="watchpoint-trigger",
922fbb7b
AC
18959wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
18960frame=@{func="callee4",args=[],
76ff342d
DJ
18961file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
18962fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 18963(gdb)
922fbb7b
AC
18964-exec-continue
18965^running
0869d01b
NR
18966(gdb)
18967*stopped,reason="watchpoint-scope",wpnum="5",
922fbb7b
AC
18968frame=@{func="callee3",args=[@{name="strarg",
18969value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
18970file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
18971fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 18972(gdb)
922fbb7b
AC
18973@end smallexample
18974
18975Listing breakpoints and watchpoints, at different points in the program
18976execution. Note that once the watchpoint goes out of scope, it is
18977deleted.
18978
18979@smallexample
594fe323 18980(gdb)
922fbb7b
AC
18981-break-watch C
18982^done,wpt=@{number="2",exp="C"@}
594fe323 18983(gdb)
922fbb7b
AC
18984-break-list
18985^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
18986hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
18987@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
18988@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
18989@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
18990@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
18991@{width="40",alignment="2",col_name="what",colhdr="What"@}],
18992body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
18993addr="0x00010734",func="callee4",
948d5102
NR
18994file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
18995fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
922fbb7b
AC
18996bkpt=@{number="2",type="watchpoint",disp="keep",
18997enabled="y",addr="",what="C",times="0"@}]@}
594fe323 18998(gdb)
922fbb7b
AC
18999-exec-continue
19000^running
0869d01b
NR
19001(gdb)
19002*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
922fbb7b
AC
19003value=@{old="-276895068",new="3"@},
19004frame=@{func="callee4",args=[],
76ff342d
DJ
19005file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19006fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 19007(gdb)
922fbb7b
AC
19008-break-list
19009^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
19010hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
19011@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
19012@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
19013@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
19014@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
19015@{width="40",alignment="2",col_name="what",colhdr="What"@}],
19016body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
19017addr="0x00010734",func="callee4",
948d5102
NR
19018file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19019fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
922fbb7b
AC
19020bkpt=@{number="2",type="watchpoint",disp="keep",
19021enabled="y",addr="",what="C",times="-5"@}]@}
594fe323 19022(gdb)
922fbb7b
AC
19023-exec-continue
19024^running
19025^done,reason="watchpoint-scope",wpnum="2",
19026frame=@{func="callee3",args=[@{name="strarg",
19027value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
19028file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19029fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 19030(gdb)
922fbb7b
AC
19031-break-list
19032^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
19033hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
19034@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
19035@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
19036@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
19037@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
19038@{width="40",alignment="2",col_name="what",colhdr="What"@}],
19039body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
19040addr="0x00010734",func="callee4",
948d5102
NR
19041file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19042fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
19043times="1"@}]@}
594fe323 19044(gdb)
922fbb7b
AC
19045@end smallexample
19046
19047@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
19048@node GDB/MI Program Context
19049@section @sc{gdb/mi} Program Context
922fbb7b 19050
a2c02241
NR
19051@subheading The @code{-exec-arguments} Command
19052@findex -exec-arguments
922fbb7b 19053
922fbb7b
AC
19054
19055@subsubheading Synopsis
19056
19057@smallexample
a2c02241 19058 -exec-arguments @var{args}
922fbb7b
AC
19059@end smallexample
19060
a2c02241
NR
19061Set the inferior program arguments, to be used in the next
19062@samp{-exec-run}.
922fbb7b 19063
a2c02241 19064@subsubheading @value{GDBN} Command
922fbb7b 19065
a2c02241 19066The corresponding @value{GDBN} command is @samp{set args}.
922fbb7b 19067
a2c02241 19068@subsubheading Example
922fbb7b 19069
fbc5282e
MK
19070@smallexample
19071(gdb)
19072-exec-arguments -v word
19073^done
19074(gdb)
19075@end smallexample
922fbb7b 19076
a2c02241
NR
19077
19078@subheading The @code{-exec-show-arguments} Command
19079@findex -exec-show-arguments
19080
19081@subsubheading Synopsis
19082
19083@smallexample
19084 -exec-show-arguments
19085@end smallexample
19086
19087Print the arguments of the program.
922fbb7b
AC
19088
19089@subsubheading @value{GDBN} Command
19090
a2c02241 19091The corresponding @value{GDBN} command is @samp{show args}.
922fbb7b
AC
19092
19093@subsubheading Example
a2c02241 19094N.A.
922fbb7b 19095
922fbb7b 19096
a2c02241
NR
19097@subheading The @code{-environment-cd} Command
19098@findex -environment-cd
922fbb7b 19099
a2c02241 19100@subsubheading Synopsis
922fbb7b
AC
19101
19102@smallexample
a2c02241 19103 -environment-cd @var{pathdir}
922fbb7b
AC
19104@end smallexample
19105
a2c02241 19106Set @value{GDBN}'s working directory.
922fbb7b 19107
a2c02241 19108@subsubheading @value{GDBN} Command
922fbb7b 19109
a2c02241
NR
19110The corresponding @value{GDBN} command is @samp{cd}.
19111
19112@subsubheading Example
922fbb7b
AC
19113
19114@smallexample
594fe323 19115(gdb)
a2c02241
NR
19116-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
19117^done
594fe323 19118(gdb)
922fbb7b
AC
19119@end smallexample
19120
19121
a2c02241
NR
19122@subheading The @code{-environment-directory} Command
19123@findex -environment-directory
922fbb7b
AC
19124
19125@subsubheading Synopsis
19126
19127@smallexample
a2c02241 19128 -environment-directory [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
19129@end smallexample
19130
a2c02241
NR
19131Add directories @var{pathdir} to beginning of search path for source files.
19132If the @samp{-r} option is used, the search path is reset to the default
19133search path. If directories @var{pathdir} are supplied in addition to the
19134@samp{-r} option, the search path is first reset and then addition
19135occurs as normal.
19136Multiple directories may be specified, separated by blanks. Specifying
19137multiple directories in a single command
19138results in the directories added to the beginning of the
19139search path in the same order they were presented in the command.
19140If blanks are needed as
19141part of a directory name, double-quotes should be used around
19142the name. In the command output, the path will show up separated
d3e8051b 19143by the system directory-separator character. The directory-separator
a2c02241
NR
19144character must not be used
19145in any directory name.
19146If no directories are specified, the current search path is displayed.
922fbb7b
AC
19147
19148@subsubheading @value{GDBN} Command
19149
a2c02241 19150The corresponding @value{GDBN} command is @samp{dir}.
922fbb7b
AC
19151
19152@subsubheading Example
19153
922fbb7b 19154@smallexample
594fe323 19155(gdb)
a2c02241
NR
19156-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
19157^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 19158(gdb)
a2c02241
NR
19159-environment-directory ""
19160^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 19161(gdb)
a2c02241
NR
19162-environment-directory -r /home/jjohnstn/src/gdb /usr/src
19163^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
594fe323 19164(gdb)
a2c02241
NR
19165-environment-directory -r
19166^done,source-path="$cdir:$cwd"
594fe323 19167(gdb)
922fbb7b
AC
19168@end smallexample
19169
19170
a2c02241
NR
19171@subheading The @code{-environment-path} Command
19172@findex -environment-path
922fbb7b
AC
19173
19174@subsubheading Synopsis
19175
19176@smallexample
a2c02241 19177 -environment-path [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
19178@end smallexample
19179
a2c02241
NR
19180Add directories @var{pathdir} to beginning of search path for object files.
19181If the @samp{-r} option is used, the search path is reset to the original
19182search path that existed at gdb start-up. If directories @var{pathdir} are
19183supplied in addition to the
19184@samp{-r} option, the search path is first reset and then addition
19185occurs as normal.
19186Multiple directories may be specified, separated by blanks. Specifying
19187multiple directories in a single command
19188results in the directories added to the beginning of the
19189search path in the same order they were presented in the command.
19190If blanks are needed as
19191part of a directory name, double-quotes should be used around
19192the name. In the command output, the path will show up separated
d3e8051b 19193by the system directory-separator character. The directory-separator
a2c02241
NR
19194character must not be used
19195in any directory name.
19196If no directories are specified, the current path is displayed.
19197
922fbb7b
AC
19198
19199@subsubheading @value{GDBN} Command
19200
a2c02241 19201The corresponding @value{GDBN} command is @samp{path}.
922fbb7b
AC
19202
19203@subsubheading Example
19204
922fbb7b 19205@smallexample
594fe323 19206(gdb)
a2c02241
NR
19207-environment-path
19208^done,path="/usr/bin"
594fe323 19209(gdb)
a2c02241
NR
19210-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
19211^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
594fe323 19212(gdb)
a2c02241
NR
19213-environment-path -r /usr/local/bin
19214^done,path="/usr/local/bin:/usr/bin"
594fe323 19215(gdb)
922fbb7b
AC
19216@end smallexample
19217
19218
a2c02241
NR
19219@subheading The @code{-environment-pwd} Command
19220@findex -environment-pwd
922fbb7b
AC
19221
19222@subsubheading Synopsis
19223
19224@smallexample
a2c02241 19225 -environment-pwd
922fbb7b
AC
19226@end smallexample
19227
a2c02241 19228Show the current working directory.
922fbb7b 19229
79a6e687 19230@subsubheading @value{GDBN} Command
922fbb7b 19231
a2c02241 19232The corresponding @value{GDBN} command is @samp{pwd}.
922fbb7b
AC
19233
19234@subsubheading Example
19235
922fbb7b 19236@smallexample
594fe323 19237(gdb)
a2c02241
NR
19238-environment-pwd
19239^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
594fe323 19240(gdb)
922fbb7b
AC
19241@end smallexample
19242
a2c02241
NR
19243@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19244@node GDB/MI Thread Commands
19245@section @sc{gdb/mi} Thread Commands
19246
19247
19248@subheading The @code{-thread-info} Command
19249@findex -thread-info
922fbb7b
AC
19250
19251@subsubheading Synopsis
19252
19253@smallexample
8e8901c5 19254 -thread-info [ @var{thread-id} ]
922fbb7b
AC
19255@end smallexample
19256
8e8901c5
VP
19257Reports information about either a specific thread, if
19258the @var{thread-id} parameter is present, or about all
19259threads. When printing information about all threads,
19260also reports the current thread.
19261
79a6e687 19262@subsubheading @value{GDBN} Command
922fbb7b 19263
8e8901c5
VP
19264The @samp{info thread} command prints the same information
19265about all threads.
922fbb7b
AC
19266
19267@subsubheading Example
922fbb7b
AC
19268
19269@smallexample
8e8901c5
VP
19270-thread-info
19271^done,threads=[
19272@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
19273 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},
19274@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
19275 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
19276 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@}@}],
19277current-thread-id="1"
19278(gdb)
922fbb7b
AC
19279@end smallexample
19280
a2c02241
NR
19281@subheading The @code{-thread-list-ids} Command
19282@findex -thread-list-ids
922fbb7b 19283
a2c02241 19284@subsubheading Synopsis
922fbb7b 19285
a2c02241
NR
19286@smallexample
19287 -thread-list-ids
19288@end smallexample
922fbb7b 19289
a2c02241
NR
19290Produces a list of the currently known @value{GDBN} thread ids. At the
19291end of the list it also prints the total number of such threads.
922fbb7b
AC
19292
19293@subsubheading @value{GDBN} Command
19294
a2c02241 19295Part of @samp{info threads} supplies the same information.
922fbb7b
AC
19296
19297@subsubheading Example
19298
a2c02241 19299No threads present, besides the main process:
922fbb7b
AC
19300
19301@smallexample
594fe323 19302(gdb)
a2c02241
NR
19303-thread-list-ids
19304^done,thread-ids=@{@},number-of-threads="0"
594fe323 19305(gdb)
922fbb7b
AC
19306@end smallexample
19307
922fbb7b 19308
a2c02241 19309Several threads:
922fbb7b
AC
19310
19311@smallexample
594fe323 19312(gdb)
a2c02241
NR
19313-thread-list-ids
19314^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
19315number-of-threads="3"
594fe323 19316(gdb)
922fbb7b
AC
19317@end smallexample
19318
a2c02241
NR
19319
19320@subheading The @code{-thread-select} Command
19321@findex -thread-select
922fbb7b
AC
19322
19323@subsubheading Synopsis
19324
19325@smallexample
a2c02241 19326 -thread-select @var{threadnum}
922fbb7b
AC
19327@end smallexample
19328
a2c02241
NR
19329Make @var{threadnum} the current thread. It prints the number of the new
19330current thread, and the topmost frame for that thread.
922fbb7b
AC
19331
19332@subsubheading @value{GDBN} Command
19333
a2c02241 19334The corresponding @value{GDBN} command is @samp{thread}.
922fbb7b
AC
19335
19336@subsubheading Example
922fbb7b
AC
19337
19338@smallexample
594fe323 19339(gdb)
a2c02241
NR
19340-exec-next
19341^running
594fe323 19342(gdb)
a2c02241
NR
19343*stopped,reason="end-stepping-range",thread-id="2",line="187",
19344file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
594fe323 19345(gdb)
a2c02241
NR
19346-thread-list-ids
19347^done,
19348thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
19349number-of-threads="3"
594fe323 19350(gdb)
a2c02241
NR
19351-thread-select 3
19352^done,new-thread-id="3",
19353frame=@{level="0",func="vprintf",
19354args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
19355@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
594fe323 19356(gdb)
922fbb7b
AC
19357@end smallexample
19358
a2c02241
NR
19359@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19360@node GDB/MI Program Execution
19361@section @sc{gdb/mi} Program Execution
922fbb7b 19362
ef21caaf 19363These are the asynchronous commands which generate the out-of-band
3f94c067 19364record @samp{*stopped}. Currently @value{GDBN} only really executes
ef21caaf
NR
19365asynchronously with remote targets and this interaction is mimicked in
19366other cases.
922fbb7b 19367
922fbb7b
AC
19368@subheading The @code{-exec-continue} Command
19369@findex -exec-continue
19370
19371@subsubheading Synopsis
19372
19373@smallexample
19374 -exec-continue
19375@end smallexample
19376
ef21caaf
NR
19377Resumes the execution of the inferior program until a breakpoint is
19378encountered, or until the inferior exits.
922fbb7b
AC
19379
19380@subsubheading @value{GDBN} Command
19381
19382The corresponding @value{GDBN} corresponding is @samp{continue}.
19383
19384@subsubheading Example
19385
19386@smallexample
19387-exec-continue
19388^running
594fe323 19389(gdb)
922fbb7b 19390@@Hello world
a47ec5fe
AR
19391*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{
19392func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
19393line="13"@}
594fe323 19394(gdb)
922fbb7b
AC
19395@end smallexample
19396
19397
19398@subheading The @code{-exec-finish} Command
19399@findex -exec-finish
19400
19401@subsubheading Synopsis
19402
19403@smallexample
19404 -exec-finish
19405@end smallexample
19406
ef21caaf
NR
19407Resumes the execution of the inferior program until the current
19408function is exited. Displays the results returned by the function.
922fbb7b
AC
19409
19410@subsubheading @value{GDBN} Command
19411
19412The corresponding @value{GDBN} command is @samp{finish}.
19413
19414@subsubheading Example
19415
19416Function returning @code{void}.
19417
19418@smallexample
19419-exec-finish
19420^running
594fe323 19421(gdb)
922fbb7b
AC
19422@@hello from foo
19423*stopped,reason="function-finished",frame=@{func="main",args=[],
948d5102 19424file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@}
594fe323 19425(gdb)
922fbb7b
AC
19426@end smallexample
19427
19428Function returning other than @code{void}. The name of the internal
19429@value{GDBN} variable storing the result is printed, together with the
19430value itself.
19431
19432@smallexample
19433-exec-finish
19434^running
594fe323 19435(gdb)
922fbb7b
AC
19436*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
19437args=[@{name="a",value="1"],@{name="b",value="9"@}@},
948d5102 19438file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
922fbb7b 19439gdb-result-var="$1",return-value="0"
594fe323 19440(gdb)
922fbb7b
AC
19441@end smallexample
19442
19443
19444@subheading The @code{-exec-interrupt} Command
19445@findex -exec-interrupt
19446
19447@subsubheading Synopsis
19448
19449@smallexample
19450 -exec-interrupt
19451@end smallexample
19452
ef21caaf
NR
19453Interrupts the background execution of the target. Note how the token
19454associated with the stop message is the one for the execution command
19455that has been interrupted. The token for the interrupt itself only
19456appears in the @samp{^done} output. If the user is trying to
922fbb7b
AC
19457interrupt a non-running program, an error message will be printed.
19458
19459@subsubheading @value{GDBN} Command
19460
19461The corresponding @value{GDBN} command is @samp{interrupt}.
19462
19463@subsubheading Example
19464
19465@smallexample
594fe323 19466(gdb)
922fbb7b
AC
19467111-exec-continue
19468111^running
19469
594fe323 19470(gdb)
922fbb7b
AC
19471222-exec-interrupt
19472222^done
594fe323 19473(gdb)
922fbb7b 19474111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
76ff342d 19475frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
948d5102 19476fullname="/home/foo/bar/try.c",line="13"@}
594fe323 19477(gdb)
922fbb7b 19478
594fe323 19479(gdb)
922fbb7b
AC
19480-exec-interrupt
19481^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
594fe323 19482(gdb)
922fbb7b
AC
19483@end smallexample
19484
19485
19486@subheading The @code{-exec-next} Command
19487@findex -exec-next
19488
19489@subsubheading Synopsis
19490
19491@smallexample
19492 -exec-next
19493@end smallexample
19494
ef21caaf
NR
19495Resumes execution of the inferior program, stopping when the beginning
19496of the next source line is reached.
922fbb7b
AC
19497
19498@subsubheading @value{GDBN} Command
19499
19500The corresponding @value{GDBN} command is @samp{next}.
19501
19502@subsubheading Example
19503
19504@smallexample
19505-exec-next
19506^running
594fe323 19507(gdb)
922fbb7b 19508*stopped,reason="end-stepping-range",line="8",file="hello.c"
594fe323 19509(gdb)
922fbb7b
AC
19510@end smallexample
19511
19512
19513@subheading The @code{-exec-next-instruction} Command
19514@findex -exec-next-instruction
19515
19516@subsubheading Synopsis
19517
19518@smallexample
19519 -exec-next-instruction
19520@end smallexample
19521
ef21caaf
NR
19522Executes one machine instruction. If the instruction is a function
19523call, continues until the function returns. If the program stops at an
19524instruction in the middle of a source line, the address will be
19525printed as well.
922fbb7b
AC
19526
19527@subsubheading @value{GDBN} Command
19528
19529The corresponding @value{GDBN} command is @samp{nexti}.
19530
19531@subsubheading Example
19532
19533@smallexample
594fe323 19534(gdb)
922fbb7b
AC
19535-exec-next-instruction
19536^running
19537
594fe323 19538(gdb)
922fbb7b
AC
19539*stopped,reason="end-stepping-range",
19540addr="0x000100d4",line="5",file="hello.c"
594fe323 19541(gdb)
922fbb7b
AC
19542@end smallexample
19543
19544
19545@subheading The @code{-exec-return} Command
19546@findex -exec-return
19547
19548@subsubheading Synopsis
19549
19550@smallexample
19551 -exec-return
19552@end smallexample
19553
19554Makes current function return immediately. Doesn't execute the inferior.
19555Displays the new current frame.
19556
19557@subsubheading @value{GDBN} Command
19558
19559The corresponding @value{GDBN} command is @samp{return}.
19560
19561@subsubheading Example
19562
19563@smallexample
594fe323 19564(gdb)
922fbb7b
AC
19565200-break-insert callee4
19566200^done,bkpt=@{number="1",addr="0x00010734",
19567file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 19568(gdb)
922fbb7b
AC
19569000-exec-run
19570000^running
594fe323 19571(gdb)
a47ec5fe 19572000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
922fbb7b 19573frame=@{func="callee4",args=[],
76ff342d
DJ
19574file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19575fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 19576(gdb)
922fbb7b
AC
19577205-break-delete
19578205^done
594fe323 19579(gdb)
922fbb7b
AC
19580111-exec-return
19581111^done,frame=@{level="0",func="callee3",
19582args=[@{name="strarg",
19583value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
19584file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19585fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 19586(gdb)
922fbb7b
AC
19587@end smallexample
19588
19589
19590@subheading The @code{-exec-run} Command
19591@findex -exec-run
19592
19593@subsubheading Synopsis
19594
19595@smallexample
19596 -exec-run
19597@end smallexample
19598
ef21caaf
NR
19599Starts execution of the inferior from the beginning. The inferior
19600executes until either a breakpoint is encountered or the program
19601exits. In the latter case the output will include an exit code, if
19602the program has exited exceptionally.
922fbb7b
AC
19603
19604@subsubheading @value{GDBN} Command
19605
19606The corresponding @value{GDBN} command is @samp{run}.
19607
ef21caaf 19608@subsubheading Examples
922fbb7b
AC
19609
19610@smallexample
594fe323 19611(gdb)
922fbb7b
AC
19612-break-insert main
19613^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
594fe323 19614(gdb)
922fbb7b
AC
19615-exec-run
19616^running
594fe323 19617(gdb)
a47ec5fe 19618*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
76ff342d 19619frame=@{func="main",args=[],file="recursive2.c",
948d5102 19620fullname="/home/foo/bar/recursive2.c",line="4"@}
594fe323 19621(gdb)
922fbb7b
AC
19622@end smallexample
19623
ef21caaf
NR
19624@noindent
19625Program exited normally:
19626
19627@smallexample
594fe323 19628(gdb)
ef21caaf
NR
19629-exec-run
19630^running
594fe323 19631(gdb)
ef21caaf
NR
19632x = 55
19633*stopped,reason="exited-normally"
594fe323 19634(gdb)
ef21caaf
NR
19635@end smallexample
19636
19637@noindent
19638Program exited exceptionally:
19639
19640@smallexample
594fe323 19641(gdb)
ef21caaf
NR
19642-exec-run
19643^running
594fe323 19644(gdb)
ef21caaf
NR
19645x = 55
19646*stopped,reason="exited",exit-code="01"
594fe323 19647(gdb)
ef21caaf
NR
19648@end smallexample
19649
19650Another way the program can terminate is if it receives a signal such as
19651@code{SIGINT}. In this case, @sc{gdb/mi} displays this:
19652
19653@smallexample
594fe323 19654(gdb)
ef21caaf
NR
19655*stopped,reason="exited-signalled",signal-name="SIGINT",
19656signal-meaning="Interrupt"
19657@end smallexample
19658
922fbb7b 19659
a2c02241
NR
19660@c @subheading -exec-signal
19661
19662
19663@subheading The @code{-exec-step} Command
19664@findex -exec-step
922fbb7b
AC
19665
19666@subsubheading Synopsis
19667
19668@smallexample
a2c02241 19669 -exec-step
922fbb7b
AC
19670@end smallexample
19671
a2c02241
NR
19672Resumes execution of the inferior program, stopping when the beginning
19673of the next source line is reached, if the next source line is not a
19674function call. If it is, stop at the first instruction of the called
19675function.
922fbb7b
AC
19676
19677@subsubheading @value{GDBN} Command
19678
a2c02241 19679The corresponding @value{GDBN} command is @samp{step}.
922fbb7b
AC
19680
19681@subsubheading Example
19682
19683Stepping into a function:
19684
19685@smallexample
19686-exec-step
19687^running
594fe323 19688(gdb)
922fbb7b
AC
19689*stopped,reason="end-stepping-range",
19690frame=@{func="foo",args=[@{name="a",value="10"@},
76ff342d 19691@{name="b",value="0"@}],file="recursive2.c",
948d5102 19692fullname="/home/foo/bar/recursive2.c",line="11"@}
594fe323 19693(gdb)
922fbb7b
AC
19694@end smallexample
19695
19696Regular stepping:
19697
19698@smallexample
19699-exec-step
19700^running
594fe323 19701(gdb)
922fbb7b 19702*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
594fe323 19703(gdb)
922fbb7b
AC
19704@end smallexample
19705
19706
19707@subheading The @code{-exec-step-instruction} Command
19708@findex -exec-step-instruction
19709
19710@subsubheading Synopsis
19711
19712@smallexample
19713 -exec-step-instruction
19714@end smallexample
19715
ef21caaf
NR
19716Resumes the inferior which executes one machine instruction. The
19717output, once @value{GDBN} has stopped, will vary depending on whether
19718we have stopped in the middle of a source line or not. In the former
19719case, the address at which the program stopped will be printed as
922fbb7b
AC
19720well.
19721
19722@subsubheading @value{GDBN} Command
19723
19724The corresponding @value{GDBN} command is @samp{stepi}.
19725
19726@subsubheading Example
19727
19728@smallexample
594fe323 19729(gdb)
922fbb7b
AC
19730-exec-step-instruction
19731^running
19732
594fe323 19733(gdb)
922fbb7b 19734*stopped,reason="end-stepping-range",
76ff342d 19735frame=@{func="foo",args=[],file="try.c",
948d5102 19736fullname="/home/foo/bar/try.c",line="10"@}
594fe323 19737(gdb)
922fbb7b
AC
19738-exec-step-instruction
19739^running
19740
594fe323 19741(gdb)
922fbb7b 19742*stopped,reason="end-stepping-range",
76ff342d 19743frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
948d5102 19744fullname="/home/foo/bar/try.c",line="10"@}
594fe323 19745(gdb)
922fbb7b
AC
19746@end smallexample
19747
19748
19749@subheading The @code{-exec-until} Command
19750@findex -exec-until
19751
19752@subsubheading Synopsis
19753
19754@smallexample
19755 -exec-until [ @var{location} ]
19756@end smallexample
19757
ef21caaf
NR
19758Executes the inferior until the @var{location} specified in the
19759argument is reached. If there is no argument, the inferior executes
19760until a source line greater than the current one is reached. The
19761reason for stopping in this case will be @samp{location-reached}.
922fbb7b
AC
19762
19763@subsubheading @value{GDBN} Command
19764
19765The corresponding @value{GDBN} command is @samp{until}.
19766
19767@subsubheading Example
19768
19769@smallexample
594fe323 19770(gdb)
922fbb7b
AC
19771-exec-until recursive2.c:6
19772^running
594fe323 19773(gdb)
922fbb7b
AC
19774x = 55
19775*stopped,reason="location-reached",frame=@{func="main",args=[],
948d5102 19776file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@}
594fe323 19777(gdb)
922fbb7b
AC
19778@end smallexample
19779
19780@ignore
19781@subheading -file-clear
19782Is this going away????
19783@end ignore
19784
351ff01a 19785@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
19786@node GDB/MI Stack Manipulation
19787@section @sc{gdb/mi} Stack Manipulation Commands
351ff01a 19788
922fbb7b 19789
a2c02241
NR
19790@subheading The @code{-stack-info-frame} Command
19791@findex -stack-info-frame
922fbb7b
AC
19792
19793@subsubheading Synopsis
19794
19795@smallexample
a2c02241 19796 -stack-info-frame
922fbb7b
AC
19797@end smallexample
19798
a2c02241 19799Get info on the selected frame.
922fbb7b
AC
19800
19801@subsubheading @value{GDBN} Command
19802
a2c02241
NR
19803The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
19804(without arguments).
922fbb7b
AC
19805
19806@subsubheading Example
19807
19808@smallexample
594fe323 19809(gdb)
a2c02241
NR
19810-stack-info-frame
19811^done,frame=@{level="1",addr="0x0001076c",func="callee3",
19812file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19813fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
594fe323 19814(gdb)
922fbb7b
AC
19815@end smallexample
19816
a2c02241
NR
19817@subheading The @code{-stack-info-depth} Command
19818@findex -stack-info-depth
922fbb7b
AC
19819
19820@subsubheading Synopsis
19821
19822@smallexample
a2c02241 19823 -stack-info-depth [ @var{max-depth} ]
922fbb7b
AC
19824@end smallexample
19825
a2c02241
NR
19826Return the depth of the stack. If the integer argument @var{max-depth}
19827is specified, do not count beyond @var{max-depth} frames.
922fbb7b
AC
19828
19829@subsubheading @value{GDBN} Command
19830
a2c02241 19831There's no equivalent @value{GDBN} command.
922fbb7b
AC
19832
19833@subsubheading Example
19834
a2c02241
NR
19835For a stack with frame levels 0 through 11:
19836
922fbb7b 19837@smallexample
594fe323 19838(gdb)
a2c02241
NR
19839-stack-info-depth
19840^done,depth="12"
594fe323 19841(gdb)
a2c02241
NR
19842-stack-info-depth 4
19843^done,depth="4"
594fe323 19844(gdb)
a2c02241
NR
19845-stack-info-depth 12
19846^done,depth="12"
594fe323 19847(gdb)
a2c02241
NR
19848-stack-info-depth 11
19849^done,depth="11"
594fe323 19850(gdb)
a2c02241
NR
19851-stack-info-depth 13
19852^done,depth="12"
594fe323 19853(gdb)
922fbb7b
AC
19854@end smallexample
19855
a2c02241
NR
19856@subheading The @code{-stack-list-arguments} Command
19857@findex -stack-list-arguments
922fbb7b
AC
19858
19859@subsubheading Synopsis
19860
19861@smallexample
a2c02241
NR
19862 -stack-list-arguments @var{show-values}
19863 [ @var{low-frame} @var{high-frame} ]
922fbb7b
AC
19864@end smallexample
19865
a2c02241
NR
19866Display a list of the arguments for the frames between @var{low-frame}
19867and @var{high-frame} (inclusive). If @var{low-frame} and
2f1acb09
VP
19868@var{high-frame} are not provided, list the arguments for the whole
19869call stack. If the two arguments are equal, show the single frame
19870at the corresponding level. It is an error if @var{low-frame} is
19871larger than the actual number of frames. On the other hand,
19872@var{high-frame} may be larger than the actual number of frames, in
19873which case only existing frames will be returned.
a2c02241
NR
19874
19875The @var{show-values} argument must have a value of 0 or 1. A value of
198760 means that only the names of the arguments are listed, a value of 1
19877means that both names and values of the arguments are printed.
922fbb7b
AC
19878
19879@subsubheading @value{GDBN} Command
19880
a2c02241
NR
19881@value{GDBN} does not have an equivalent command. @code{gdbtk} has a
19882@samp{gdb_get_args} command which partially overlaps with the
19883functionality of @samp{-stack-list-arguments}.
922fbb7b
AC
19884
19885@subsubheading Example
922fbb7b 19886
a2c02241 19887@smallexample
594fe323 19888(gdb)
a2c02241
NR
19889-stack-list-frames
19890^done,
19891stack=[
19892frame=@{level="0",addr="0x00010734",func="callee4",
19893file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19894fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
19895frame=@{level="1",addr="0x0001076c",func="callee3",
19896file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19897fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
19898frame=@{level="2",addr="0x0001078c",func="callee2",
19899file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19900fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
19901frame=@{level="3",addr="0x000107b4",func="callee1",
19902file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19903fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
19904frame=@{level="4",addr="0x000107e0",func="main",
19905file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
19906fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
594fe323 19907(gdb)
a2c02241
NR
19908-stack-list-arguments 0
19909^done,
19910stack-args=[
19911frame=@{level="0",args=[]@},
19912frame=@{level="1",args=[name="strarg"]@},
19913frame=@{level="2",args=[name="intarg",name="strarg"]@},
19914frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
19915frame=@{level="4",args=[]@}]
594fe323 19916(gdb)
a2c02241
NR
19917-stack-list-arguments 1
19918^done,
19919stack-args=[
19920frame=@{level="0",args=[]@},
19921frame=@{level="1",
19922 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
19923frame=@{level="2",args=[
19924@{name="intarg",value="2"@},
19925@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
19926@{frame=@{level="3",args=[
19927@{name="intarg",value="2"@},
19928@{name="strarg",value="0x11940 \"A string argument.\""@},
19929@{name="fltarg",value="3.5"@}]@},
19930frame=@{level="4",args=[]@}]
594fe323 19931(gdb)
a2c02241
NR
19932-stack-list-arguments 0 2 2
19933^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
594fe323 19934(gdb)
a2c02241
NR
19935-stack-list-arguments 1 2 2
19936^done,stack-args=[frame=@{level="2",
19937args=[@{name="intarg",value="2"@},
19938@{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
594fe323 19939(gdb)
a2c02241
NR
19940@end smallexample
19941
19942@c @subheading -stack-list-exception-handlers
922fbb7b 19943
a2c02241
NR
19944
19945@subheading The @code{-stack-list-frames} Command
19946@findex -stack-list-frames
1abaf70c
BR
19947
19948@subsubheading Synopsis
19949
19950@smallexample
a2c02241 19951 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
1abaf70c
BR
19952@end smallexample
19953
a2c02241
NR
19954List the frames currently on the stack. For each frame it displays the
19955following info:
19956
19957@table @samp
19958@item @var{level}
d3e8051b 19959The frame number, 0 being the topmost frame, i.e., the innermost function.
a2c02241
NR
19960@item @var{addr}
19961The @code{$pc} value for that frame.
19962@item @var{func}
19963Function name.
19964@item @var{file}
19965File name of the source file where the function lives.
19966@item @var{line}
19967Line number corresponding to the @code{$pc}.
19968@end table
19969
19970If invoked without arguments, this command prints a backtrace for the
19971whole stack. If given two integer arguments, it shows the frames whose
19972levels are between the two arguments (inclusive). If the two arguments
2ab1eb7a
VP
19973are equal, it shows the single frame at the corresponding level. It is
19974an error if @var{low-frame} is larger than the actual number of
a5451f4e 19975frames. On the other hand, @var{high-frame} may be larger than the
2ab1eb7a 19976actual number of frames, in which case only existing frames will be returned.
1abaf70c
BR
19977
19978@subsubheading @value{GDBN} Command
19979
a2c02241 19980The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
1abaf70c
BR
19981
19982@subsubheading Example
19983
a2c02241
NR
19984Full stack backtrace:
19985
1abaf70c 19986@smallexample
594fe323 19987(gdb)
a2c02241
NR
19988-stack-list-frames
19989^done,stack=
19990[frame=@{level="0",addr="0x0001076c",func="foo",
19991 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@},
19992frame=@{level="1",addr="0x000107a4",func="foo",
19993 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
19994frame=@{level="2",addr="0x000107a4",func="foo",
19995 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
19996frame=@{level="3",addr="0x000107a4",func="foo",
19997 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
19998frame=@{level="4",addr="0x000107a4",func="foo",
19999 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20000frame=@{level="5",addr="0x000107a4",func="foo",
20001 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20002frame=@{level="6",addr="0x000107a4",func="foo",
20003 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20004frame=@{level="7",addr="0x000107a4",func="foo",
20005 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20006frame=@{level="8",addr="0x000107a4",func="foo",
20007 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20008frame=@{level="9",addr="0x000107a4",func="foo",
20009 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20010frame=@{level="10",addr="0x000107a4",func="foo",
20011 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20012frame=@{level="11",addr="0x00010738",func="main",
20013 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}]
594fe323 20014(gdb)
1abaf70c
BR
20015@end smallexample
20016
a2c02241 20017Show frames between @var{low_frame} and @var{high_frame}:
1abaf70c 20018
a2c02241 20019@smallexample
594fe323 20020(gdb)
a2c02241
NR
20021-stack-list-frames 3 5
20022^done,stack=
20023[frame=@{level="3",addr="0x000107a4",func="foo",
20024 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20025frame=@{level="4",addr="0x000107a4",func="foo",
20026 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
20027frame=@{level="5",addr="0x000107a4",func="foo",
20028 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 20029(gdb)
a2c02241 20030@end smallexample
922fbb7b 20031
a2c02241 20032Show a single frame:
922fbb7b
AC
20033
20034@smallexample
594fe323 20035(gdb)
a2c02241
NR
20036-stack-list-frames 3 3
20037^done,stack=
20038[frame=@{level="3",addr="0x000107a4",func="foo",
20039 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 20040(gdb)
922fbb7b
AC
20041@end smallexample
20042
922fbb7b 20043
a2c02241
NR
20044@subheading The @code{-stack-list-locals} Command
20045@findex -stack-list-locals
57c22c6c 20046
a2c02241 20047@subsubheading Synopsis
922fbb7b
AC
20048
20049@smallexample
a2c02241 20050 -stack-list-locals @var{print-values}
922fbb7b
AC
20051@end smallexample
20052
a2c02241
NR
20053Display the local variable names for the selected frame. If
20054@var{print-values} is 0 or @code{--no-values}, print only the names of
20055the variables; if it is 1 or @code{--all-values}, print also their
20056values; and if it is 2 or @code{--simple-values}, print the name,
20057type and value for simple data types and the name and type for arrays,
20058structures and unions. In this last case, a frontend can immediately
20059display the value of simple data types and create variable objects for
d3e8051b 20060other data types when the user wishes to explore their values in
a2c02241 20061more detail.
922fbb7b
AC
20062
20063@subsubheading @value{GDBN} Command
20064
a2c02241 20065@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
922fbb7b
AC
20066
20067@subsubheading Example
922fbb7b
AC
20068
20069@smallexample
594fe323 20070(gdb)
a2c02241
NR
20071-stack-list-locals 0
20072^done,locals=[name="A",name="B",name="C"]
594fe323 20073(gdb)
a2c02241
NR
20074-stack-list-locals --all-values
20075^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
20076 @{name="C",value="@{1, 2, 3@}"@}]
20077-stack-list-locals --simple-values
20078^done,locals=[@{name="A",type="int",value="1"@},
20079 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
594fe323 20080(gdb)
922fbb7b
AC
20081@end smallexample
20082
922fbb7b 20083
a2c02241
NR
20084@subheading The @code{-stack-select-frame} Command
20085@findex -stack-select-frame
922fbb7b
AC
20086
20087@subsubheading Synopsis
20088
20089@smallexample
a2c02241 20090 -stack-select-frame @var{framenum}
922fbb7b
AC
20091@end smallexample
20092
a2c02241
NR
20093Change the selected frame. Select a different frame @var{framenum} on
20094the stack.
922fbb7b
AC
20095
20096@subsubheading @value{GDBN} Command
20097
a2c02241
NR
20098The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
20099@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
922fbb7b
AC
20100
20101@subsubheading Example
20102
20103@smallexample
594fe323 20104(gdb)
a2c02241 20105-stack-select-frame 2
922fbb7b 20106^done
594fe323 20107(gdb)
922fbb7b
AC
20108@end smallexample
20109
20110@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
20111@node GDB/MI Variable Objects
20112@section @sc{gdb/mi} Variable Objects
922fbb7b 20113
a1b5960f 20114@ignore
922fbb7b 20115
a2c02241 20116@subheading Motivation for Variable Objects in @sc{gdb/mi}
922fbb7b 20117
a2c02241
NR
20118For the implementation of a variable debugger window (locals, watched
20119expressions, etc.), we are proposing the adaptation of the existing code
20120used by @code{Insight}.
922fbb7b 20121
a2c02241 20122The two main reasons for that are:
922fbb7b 20123
a2c02241
NR
20124@enumerate 1
20125@item
20126It has been proven in practice (it is already on its second generation).
922fbb7b 20127
a2c02241
NR
20128@item
20129It will shorten development time (needless to say how important it is
20130now).
20131@end enumerate
922fbb7b 20132
a2c02241
NR
20133The original interface was designed to be used by Tcl code, so it was
20134slightly changed so it could be used through @sc{gdb/mi}. This section
20135describes the @sc{gdb/mi} operations that will be available and gives some
20136hints about their use.
922fbb7b 20137
a2c02241
NR
20138@emph{Note}: In addition to the set of operations described here, we
20139expect the @sc{gui} implementation of a variable window to require, at
20140least, the following operations:
922fbb7b 20141
a2c02241
NR
20142@itemize @bullet
20143@item @code{-gdb-show} @code{output-radix}
20144@item @code{-stack-list-arguments}
20145@item @code{-stack-list-locals}
20146@item @code{-stack-select-frame}
20147@end itemize
922fbb7b 20148
a1b5960f
VP
20149@end ignore
20150
c8b2f53c 20151@subheading Introduction to Variable Objects
922fbb7b 20152
a2c02241 20153@cindex variable objects in @sc{gdb/mi}
c8b2f53c
VP
20154
20155Variable objects are "object-oriented" MI interface for examining and
20156changing values of expressions. Unlike some other MI interfaces that
20157work with expressions, variable objects are specifically designed for
20158simple and efficient presentation in the frontend. A variable object
20159is identified by string name. When a variable object is created, the
20160frontend specifies the expression for that variable object. The
20161expression can be a simple variable, or it can be an arbitrary complex
20162expression, and can even involve CPU registers. After creating a
20163variable object, the frontend can invoke other variable object
20164operations---for example to obtain or change the value of a variable
20165object, or to change display format.
20166
20167Variable objects have hierarchical tree structure. Any variable object
20168that corresponds to a composite type, such as structure in C, has
20169a number of child variable objects, for example corresponding to each
20170element of a structure. A child variable object can itself have
20171children, recursively. Recursion ends when we reach
25d5ea92
VP
20172leaf variable objects, which always have built-in types. Child variable
20173objects are created only by explicit request, so if a frontend
20174is not interested in the children of a particular variable object, no
20175child will be created.
c8b2f53c
VP
20176
20177For a leaf variable object it is possible to obtain its value as a
20178string, or set the value from a string. String value can be also
20179obtained for a non-leaf variable object, but it's generally a string
20180that only indicates the type of the object, and does not list its
20181contents. Assignment to a non-leaf variable object is not allowed.
20182
20183A frontend does not need to read the values of all variable objects each time
20184the program stops. Instead, MI provides an update command that lists all
20185variable objects whose values has changed since the last update
20186operation. This considerably reduces the amount of data that must
25d5ea92
VP
20187be transferred to the frontend. As noted above, children variable
20188objects are created on demand, and only leaf variable objects have a
20189real value. As result, gdb will read target memory only for leaf
20190variables that frontend has created.
20191
20192The automatic update is not always desirable. For example, a frontend
20193might want to keep a value of some expression for future reference,
20194and never update it. For another example, fetching memory is
20195relatively slow for embedded targets, so a frontend might want
20196to disable automatic update for the variables that are either not
20197visible on the screen, or ``closed''. This is possible using so
20198called ``frozen variable objects''. Such variable objects are never
20199implicitly updated.
922fbb7b 20200
a2c02241
NR
20201The following is the complete set of @sc{gdb/mi} operations defined to
20202access this functionality:
922fbb7b 20203
a2c02241
NR
20204@multitable @columnfractions .4 .6
20205@item @strong{Operation}
20206@tab @strong{Description}
922fbb7b 20207
a2c02241
NR
20208@item @code{-var-create}
20209@tab create a variable object
20210@item @code{-var-delete}
22d8a470 20211@tab delete the variable object and/or its children
a2c02241
NR
20212@item @code{-var-set-format}
20213@tab set the display format of this variable
20214@item @code{-var-show-format}
20215@tab show the display format of this variable
20216@item @code{-var-info-num-children}
20217@tab tells how many children this object has
20218@item @code{-var-list-children}
20219@tab return a list of the object's children
20220@item @code{-var-info-type}
20221@tab show the type of this variable object
20222@item @code{-var-info-expression}
02142340
VP
20223@tab print parent-relative expression that this variable object represents
20224@item @code{-var-info-path-expression}
20225@tab print full expression that this variable object represents
a2c02241
NR
20226@item @code{-var-show-attributes}
20227@tab is this variable editable? does it exist here?
20228@item @code{-var-evaluate-expression}
20229@tab get the value of this variable
20230@item @code{-var-assign}
20231@tab set the value of this variable
20232@item @code{-var-update}
20233@tab update the variable and its children
25d5ea92
VP
20234@item @code{-var-set-frozen}
20235@tab set frozeness attribute
a2c02241 20236@end multitable
922fbb7b 20237
a2c02241
NR
20238In the next subsection we describe each operation in detail and suggest
20239how it can be used.
922fbb7b 20240
a2c02241 20241@subheading Description And Use of Operations on Variable Objects
922fbb7b 20242
a2c02241
NR
20243@subheading The @code{-var-create} Command
20244@findex -var-create
ef21caaf 20245
a2c02241 20246@subsubheading Synopsis
ef21caaf 20247
a2c02241
NR
20248@smallexample
20249 -var-create @{@var{name} | "-"@}
20250 @{@var{frame-addr} | "*"@} @var{expression}
20251@end smallexample
20252
20253This operation creates a variable object, which allows the monitoring of
20254a variable, the result of an expression, a memory cell or a CPU
20255register.
ef21caaf 20256
a2c02241
NR
20257The @var{name} parameter is the string by which the object can be
20258referenced. It must be unique. If @samp{-} is specified, the varobj
20259system will generate a string ``varNNNNNN'' automatically. It will be
20260unique provided that one does not specify @var{name} on that format.
20261The command fails if a duplicate name is found.
ef21caaf 20262
a2c02241
NR
20263The frame under which the expression should be evaluated can be
20264specified by @var{frame-addr}. A @samp{*} indicates that the current
20265frame should be used.
922fbb7b 20266
a2c02241
NR
20267@var{expression} is any expression valid on the current language set (must not
20268begin with a @samp{*}), or one of the following:
922fbb7b 20269
a2c02241
NR
20270@itemize @bullet
20271@item
20272@samp{*@var{addr}}, where @var{addr} is the address of a memory cell
922fbb7b 20273
a2c02241
NR
20274@item
20275@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
922fbb7b 20276
a2c02241
NR
20277@item
20278@samp{$@var{regname}} --- a CPU register name
20279@end itemize
922fbb7b 20280
a2c02241 20281@subsubheading Result
922fbb7b 20282
a2c02241
NR
20283This operation returns the name, number of children and the type of the
20284object created. Type is returned as a string as the ones generated by
20285the @value{GDBN} CLI:
922fbb7b
AC
20286
20287@smallexample
a2c02241 20288 name="@var{name}",numchild="N",type="@var{type}"
dcaaae04
NR
20289@end smallexample
20290
a2c02241
NR
20291
20292@subheading The @code{-var-delete} Command
20293@findex -var-delete
922fbb7b
AC
20294
20295@subsubheading Synopsis
20296
20297@smallexample
22d8a470 20298 -var-delete [ -c ] @var{name}
922fbb7b
AC
20299@end smallexample
20300
a2c02241 20301Deletes a previously created variable object and all of its children.
22d8a470 20302With the @samp{-c} option, just deletes the children.
922fbb7b 20303
a2c02241 20304Returns an error if the object @var{name} is not found.
922fbb7b 20305
922fbb7b 20306
a2c02241
NR
20307@subheading The @code{-var-set-format} Command
20308@findex -var-set-format
922fbb7b 20309
a2c02241 20310@subsubheading Synopsis
922fbb7b
AC
20311
20312@smallexample
a2c02241 20313 -var-set-format @var{name} @var{format-spec}
922fbb7b
AC
20314@end smallexample
20315
a2c02241
NR
20316Sets the output format for the value of the object @var{name} to be
20317@var{format-spec}.
20318
de051565 20319@anchor{-var-set-format}
a2c02241
NR
20320The syntax for the @var{format-spec} is as follows:
20321
20322@smallexample
20323 @var{format-spec} @expansion{}
20324 @{binary | decimal | hexadecimal | octal | natural@}
20325@end smallexample
20326
c8b2f53c
VP
20327The natural format is the default format choosen automatically
20328based on the variable type (like decimal for an @code{int}, hex
20329for pointers, etc.).
20330
20331For a variable with children, the format is set only on the
20332variable itself, and the children are not affected.
a2c02241
NR
20333
20334@subheading The @code{-var-show-format} Command
20335@findex -var-show-format
922fbb7b
AC
20336
20337@subsubheading Synopsis
20338
20339@smallexample
a2c02241 20340 -var-show-format @var{name}
922fbb7b
AC
20341@end smallexample
20342
a2c02241 20343Returns the format used to display the value of the object @var{name}.
922fbb7b 20344
a2c02241
NR
20345@smallexample
20346 @var{format} @expansion{}
20347 @var{format-spec}
20348@end smallexample
922fbb7b 20349
922fbb7b 20350
a2c02241
NR
20351@subheading The @code{-var-info-num-children} Command
20352@findex -var-info-num-children
20353
20354@subsubheading Synopsis
20355
20356@smallexample
20357 -var-info-num-children @var{name}
20358@end smallexample
20359
20360Returns the number of children of a variable object @var{name}:
20361
20362@smallexample
20363 numchild=@var{n}
20364@end smallexample
20365
20366
20367@subheading The @code{-var-list-children} Command
20368@findex -var-list-children
20369
20370@subsubheading Synopsis
20371
20372@smallexample
20373 -var-list-children [@var{print-values}] @var{name}
20374@end smallexample
20375@anchor{-var-list-children}
20376
20377Return a list of the children of the specified variable object and
20378create variable objects for them, if they do not already exist. With
20379a single argument or if @var{print-values} has a value for of 0 or
20380@code{--no-values}, print only the names of the variables; if
20381@var{print-values} is 1 or @code{--all-values}, also print their
20382values; and if it is 2 or @code{--simple-values} print the name and
20383value for simple data types and just the name for arrays, structures
20384and unions.
922fbb7b
AC
20385
20386@subsubheading Example
20387
20388@smallexample
594fe323 20389(gdb)
a2c02241
NR
20390 -var-list-children n
20391 ^done,numchild=@var{n},children=[@{name=@var{name},
20392 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
594fe323 20393(gdb)
a2c02241
NR
20394 -var-list-children --all-values n
20395 ^done,numchild=@var{n},children=[@{name=@var{name},
20396 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
922fbb7b
AC
20397@end smallexample
20398
922fbb7b 20399
a2c02241
NR
20400@subheading The @code{-var-info-type} Command
20401@findex -var-info-type
922fbb7b 20402
a2c02241
NR
20403@subsubheading Synopsis
20404
20405@smallexample
20406 -var-info-type @var{name}
20407@end smallexample
20408
20409Returns the type of the specified variable @var{name}. The type is
20410returned as a string in the same format as it is output by the
20411@value{GDBN} CLI:
20412
20413@smallexample
20414 type=@var{typename}
20415@end smallexample
20416
20417
20418@subheading The @code{-var-info-expression} Command
20419@findex -var-info-expression
922fbb7b
AC
20420
20421@subsubheading Synopsis
20422
20423@smallexample
a2c02241 20424 -var-info-expression @var{name}
922fbb7b
AC
20425@end smallexample
20426
02142340
VP
20427Returns a string that is suitable for presenting this
20428variable object in user interface. The string is generally
20429not valid expression in the current language, and cannot be evaluated.
20430
20431For example, if @code{a} is an array, and variable object
20432@code{A} was created for @code{a}, then we'll get this output:
922fbb7b 20433
a2c02241 20434@smallexample
02142340
VP
20435(gdb) -var-info-expression A.1
20436^done,lang="C",exp="1"
a2c02241 20437@end smallexample
922fbb7b 20438
a2c02241 20439@noindent
02142340
VP
20440Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}.
20441
20442Note that the output of the @code{-var-list-children} command also
20443includes those expressions, so the @code{-var-info-expression} command
20444is of limited use.
20445
20446@subheading The @code{-var-info-path-expression} Command
20447@findex -var-info-path-expression
20448
20449@subsubheading Synopsis
20450
20451@smallexample
20452 -var-info-path-expression @var{name}
20453@end smallexample
20454
20455Returns an expression that can be evaluated in the current
20456context and will yield the same value that a variable object has.
20457Compare this with the @code{-var-info-expression} command, which
20458result can be used only for UI presentation. Typical use of
20459the @code{-var-info-path-expression} command is creating a
20460watchpoint from a variable object.
20461
20462For example, suppose @code{C} is a C@t{++} class, derived from class
20463@code{Base}, and that the @code{Base} class has a member called
20464@code{m_size}. Assume a variable @code{c} is has the type of
20465@code{C} and a variable object @code{C} was created for variable
20466@code{c}. Then, we'll get this output:
20467@smallexample
20468(gdb) -var-info-path-expression C.Base.public.m_size
20469^done,path_expr=((Base)c).m_size)
20470@end smallexample
922fbb7b 20471
a2c02241
NR
20472@subheading The @code{-var-show-attributes} Command
20473@findex -var-show-attributes
922fbb7b 20474
a2c02241 20475@subsubheading Synopsis
922fbb7b 20476
a2c02241
NR
20477@smallexample
20478 -var-show-attributes @var{name}
20479@end smallexample
922fbb7b 20480
a2c02241 20481List attributes of the specified variable object @var{name}:
922fbb7b
AC
20482
20483@smallexample
a2c02241 20484 status=@var{attr} [ ( ,@var{attr} )* ]
922fbb7b
AC
20485@end smallexample
20486
a2c02241
NR
20487@noindent
20488where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
20489
20490@subheading The @code{-var-evaluate-expression} Command
20491@findex -var-evaluate-expression
20492
20493@subsubheading Synopsis
20494
20495@smallexample
de051565 20496 -var-evaluate-expression [-f @var{format-spec}] @var{name}
a2c02241
NR
20497@end smallexample
20498
20499Evaluates the expression that is represented by the specified variable
de051565
MK
20500object and returns its value as a string. The format of the string
20501can be specified with the @samp{-f} option. The possible values of
20502this option are the same as for @code{-var-set-format}
20503(@pxref{-var-set-format}). If the @samp{-f} option is not specified,
20504the current display format will be used. The current display format
20505can be changed using the @code{-var-set-format} command.
a2c02241
NR
20506
20507@smallexample
20508 value=@var{value}
20509@end smallexample
20510
20511Note that one must invoke @code{-var-list-children} for a variable
20512before the value of a child variable can be evaluated.
20513
20514@subheading The @code{-var-assign} Command
20515@findex -var-assign
20516
20517@subsubheading Synopsis
20518
20519@smallexample
20520 -var-assign @var{name} @var{expression}
20521@end smallexample
20522
20523Assigns the value of @var{expression} to the variable object specified
20524by @var{name}. The object must be @samp{editable}. If the variable's
20525value is altered by the assign, the variable will show up in any
20526subsequent @code{-var-update} list.
20527
20528@subsubheading Example
922fbb7b
AC
20529
20530@smallexample
594fe323 20531(gdb)
a2c02241
NR
20532-var-assign var1 3
20533^done,value="3"
594fe323 20534(gdb)
a2c02241
NR
20535-var-update *
20536^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
594fe323 20537(gdb)
922fbb7b
AC
20538@end smallexample
20539
a2c02241
NR
20540@subheading The @code{-var-update} Command
20541@findex -var-update
20542
20543@subsubheading Synopsis
20544
20545@smallexample
20546 -var-update [@var{print-values}] @{@var{name} | "*"@}
20547@end smallexample
20548
c8b2f53c
VP
20549Reevaluate the expressions corresponding to the variable object
20550@var{name} and all its direct and indirect children, and return the
36ece8b3
NR
20551list of variable objects whose values have changed; @var{name} must
20552be a root variable object. Here, ``changed'' means that the result of
20553@code{-var-evaluate-expression} before and after the
20554@code{-var-update} is different. If @samp{*} is used as the variable
9f708cb2
VP
20555object names, all existing variable objects are updated, except
20556for frozen ones (@pxref{-var-set-frozen}). The option
36ece8b3 20557@var{print-values} determines whether both names and values, or just
de051565 20558names are printed. The possible values of this option are the same
36ece8b3
NR
20559as for @code{-var-list-children} (@pxref{-var-list-children}). It is
20560recommended to use the @samp{--all-values} option, to reduce the
20561number of MI commands needed on each program stop.
c8b2f53c 20562
a2c02241
NR
20563
20564@subsubheading Example
922fbb7b
AC
20565
20566@smallexample
594fe323 20567(gdb)
a2c02241
NR
20568-var-assign var1 3
20569^done,value="3"
594fe323 20570(gdb)
a2c02241
NR
20571-var-update --all-values var1
20572^done,changelist=[@{name="var1",value="3",in_scope="true",
20573type_changed="false"@}]
594fe323 20574(gdb)
922fbb7b
AC
20575@end smallexample
20576
9f708cb2 20577@anchor{-var-update}
36ece8b3
NR
20578The field in_scope may take three values:
20579
20580@table @code
20581@item "true"
20582The variable object's current value is valid.
20583
20584@item "false"
20585The variable object does not currently hold a valid value but it may
20586hold one in the future if its associated expression comes back into
20587scope.
20588
20589@item "invalid"
20590The variable object no longer holds a valid value.
20591This can occur when the executable file being debugged has changed,
20592either through recompilation or by using the @value{GDBN} @code{file}
20593command. The front end should normally choose to delete these variable
20594objects.
20595@end table
20596
20597In the future new values may be added to this list so the front should
20598be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}.
20599
25d5ea92
VP
20600@subheading The @code{-var-set-frozen} Command
20601@findex -var-set-frozen
9f708cb2 20602@anchor{-var-set-frozen}
25d5ea92
VP
20603
20604@subsubheading Synopsis
20605
20606@smallexample
9f708cb2 20607 -var-set-frozen @var{name} @var{flag}
25d5ea92
VP
20608@end smallexample
20609
9f708cb2 20610Set the frozenness flag on the variable object @var{name}. The
25d5ea92 20611@var{flag} parameter should be either @samp{1} to make the variable
9f708cb2 20612frozen or @samp{0} to make it unfrozen. If a variable object is
25d5ea92 20613frozen, then neither itself, nor any of its children, are
9f708cb2 20614implicitly updated by @code{-var-update} of
25d5ea92
VP
20615a parent variable or by @code{-var-update *}. Only
20616@code{-var-update} of the variable itself will update its value and
20617values of its children. After a variable object is unfrozen, it is
20618implicitly updated by all subsequent @code{-var-update} operations.
20619Unfreezing a variable does not update it, only subsequent
20620@code{-var-update} does.
20621
20622@subsubheading Example
20623
20624@smallexample
20625(gdb)
20626-var-set-frozen V 1
20627^done
20628(gdb)
20629@end smallexample
20630
20631
a2c02241
NR
20632@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
20633@node GDB/MI Data Manipulation
20634@section @sc{gdb/mi} Data Manipulation
922fbb7b 20635
a2c02241
NR
20636@cindex data manipulation, in @sc{gdb/mi}
20637@cindex @sc{gdb/mi}, data manipulation
20638This section describes the @sc{gdb/mi} commands that manipulate data:
20639examine memory and registers, evaluate expressions, etc.
20640
20641@c REMOVED FROM THE INTERFACE.
20642@c @subheading -data-assign
20643@c Change the value of a program variable. Plenty of side effects.
79a6e687 20644@c @subsubheading GDB Command
a2c02241
NR
20645@c set variable
20646@c @subsubheading Example
20647@c N.A.
20648
20649@subheading The @code{-data-disassemble} Command
20650@findex -data-disassemble
922fbb7b
AC
20651
20652@subsubheading Synopsis
20653
20654@smallexample
a2c02241
NR
20655 -data-disassemble
20656 [ -s @var{start-addr} -e @var{end-addr} ]
20657 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
20658 -- @var{mode}
922fbb7b
AC
20659@end smallexample
20660
a2c02241
NR
20661@noindent
20662Where:
20663
20664@table @samp
20665@item @var{start-addr}
20666is the beginning address (or @code{$pc})
20667@item @var{end-addr}
20668is the end address
20669@item @var{filename}
20670is the name of the file to disassemble
20671@item @var{linenum}
20672is the line number to disassemble around
20673@item @var{lines}
d3e8051b 20674is the number of disassembly lines to be produced. If it is -1,
a2c02241
NR
20675the whole function will be disassembled, in case no @var{end-addr} is
20676specified. If @var{end-addr} is specified as a non-zero value, and
20677@var{lines} is lower than the number of disassembly lines between
20678@var{start-addr} and @var{end-addr}, only @var{lines} lines are
20679displayed; if @var{lines} is higher than the number of lines between
20680@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
20681are displayed.
20682@item @var{mode}
20683is either 0 (meaning only disassembly) or 1 (meaning mixed source and
20684disassembly).
20685@end table
20686
20687@subsubheading Result
20688
20689The output for each instruction is composed of four fields:
20690
20691@itemize @bullet
20692@item Address
20693@item Func-name
20694@item Offset
20695@item Instruction
20696@end itemize
20697
20698Note that whatever included in the instruction field, is not manipulated
d3e8051b 20699directly by @sc{gdb/mi}, i.e., it is not possible to adjust its format.
922fbb7b
AC
20700
20701@subsubheading @value{GDBN} Command
20702
a2c02241 20703There's no direct mapping from this command to the CLI.
922fbb7b
AC
20704
20705@subsubheading Example
20706
a2c02241
NR
20707Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
20708
922fbb7b 20709@smallexample
594fe323 20710(gdb)
a2c02241
NR
20711-data-disassemble -s $pc -e "$pc + 20" -- 0
20712^done,
20713asm_insns=[
20714@{address="0x000107c0",func-name="main",offset="4",
20715inst="mov 2, %o0"@},
20716@{address="0x000107c4",func-name="main",offset="8",
20717inst="sethi %hi(0x11800), %o2"@},
20718@{address="0x000107c8",func-name="main",offset="12",
20719inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
20720@{address="0x000107cc",func-name="main",offset="16",
20721inst="sethi %hi(0x11800), %o2"@},
20722@{address="0x000107d0",func-name="main",offset="20",
20723inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
594fe323 20724(gdb)
a2c02241
NR
20725@end smallexample
20726
20727Disassemble the whole @code{main} function. Line 32 is part of
20728@code{main}.
20729
20730@smallexample
20731-data-disassemble -f basics.c -l 32 -- 0
20732^done,asm_insns=[
20733@{address="0x000107bc",func-name="main",offset="0",
20734inst="save %sp, -112, %sp"@},
20735@{address="0x000107c0",func-name="main",offset="4",
20736inst="mov 2, %o0"@},
20737@{address="0x000107c4",func-name="main",offset="8",
20738inst="sethi %hi(0x11800), %o2"@},
20739[@dots{}]
20740@{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
20741@{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
594fe323 20742(gdb)
922fbb7b
AC
20743@end smallexample
20744
a2c02241 20745Disassemble 3 instructions from the start of @code{main}:
922fbb7b 20746
a2c02241 20747@smallexample
594fe323 20748(gdb)
a2c02241
NR
20749-data-disassemble -f basics.c -l 32 -n 3 -- 0
20750^done,asm_insns=[
20751@{address="0x000107bc",func-name="main",offset="0",
20752inst="save %sp, -112, %sp"@},
20753@{address="0x000107c0",func-name="main",offset="4",
20754inst="mov 2, %o0"@},
20755@{address="0x000107c4",func-name="main",offset="8",
20756inst="sethi %hi(0x11800), %o2"@}]
594fe323 20757(gdb)
a2c02241
NR
20758@end smallexample
20759
20760Disassemble 3 instructions from the start of @code{main} in mixed mode:
20761
20762@smallexample
594fe323 20763(gdb)
a2c02241
NR
20764-data-disassemble -f basics.c -l 32 -n 3 -- 1
20765^done,asm_insns=[
20766src_and_asm_line=@{line="31",
20767file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
20768 testsuite/gdb.mi/basics.c",line_asm_insn=[
20769@{address="0x000107bc",func-name="main",offset="0",
20770inst="save %sp, -112, %sp"@}]@},
20771src_and_asm_line=@{line="32",
20772file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
20773 testsuite/gdb.mi/basics.c",line_asm_insn=[
20774@{address="0x000107c0",func-name="main",offset="4",
20775inst="mov 2, %o0"@},
20776@{address="0x000107c4",func-name="main",offset="8",
20777inst="sethi %hi(0x11800), %o2"@}]@}]
594fe323 20778(gdb)
a2c02241
NR
20779@end smallexample
20780
20781
20782@subheading The @code{-data-evaluate-expression} Command
20783@findex -data-evaluate-expression
922fbb7b
AC
20784
20785@subsubheading Synopsis
20786
20787@smallexample
a2c02241 20788 -data-evaluate-expression @var{expr}
922fbb7b
AC
20789@end smallexample
20790
a2c02241
NR
20791Evaluate @var{expr} as an expression. The expression could contain an
20792inferior function call. The function call will execute synchronously.
20793If the expression contains spaces, it must be enclosed in double quotes.
922fbb7b
AC
20794
20795@subsubheading @value{GDBN} Command
20796
a2c02241
NR
20797The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
20798@samp{call}. In @code{gdbtk} only, there's a corresponding
20799@samp{gdb_eval} command.
922fbb7b
AC
20800
20801@subsubheading Example
20802
a2c02241
NR
20803In the following example, the numbers that precede the commands are the
20804@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
20805Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
20806output.
20807
922fbb7b 20808@smallexample
a2c02241
NR
20809211-data-evaluate-expression A
20810211^done,value="1"
594fe323 20811(gdb)
a2c02241
NR
20812311-data-evaluate-expression &A
20813311^done,value="0xefffeb7c"
594fe323 20814(gdb)
a2c02241
NR
20815411-data-evaluate-expression A+3
20816411^done,value="4"
594fe323 20817(gdb)
a2c02241
NR
20818511-data-evaluate-expression "A + 3"
20819511^done,value="4"
594fe323 20820(gdb)
a2c02241 20821@end smallexample
922fbb7b
AC
20822
20823
a2c02241
NR
20824@subheading The @code{-data-list-changed-registers} Command
20825@findex -data-list-changed-registers
922fbb7b
AC
20826
20827@subsubheading Synopsis
20828
20829@smallexample
a2c02241 20830 -data-list-changed-registers
922fbb7b
AC
20831@end smallexample
20832
a2c02241 20833Display a list of the registers that have changed.
922fbb7b
AC
20834
20835@subsubheading @value{GDBN} Command
20836
a2c02241
NR
20837@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
20838has the corresponding command @samp{gdb_changed_register_list}.
922fbb7b
AC
20839
20840@subsubheading Example
922fbb7b 20841
a2c02241 20842On a PPC MBX board:
922fbb7b
AC
20843
20844@smallexample
594fe323 20845(gdb)
a2c02241
NR
20846-exec-continue
20847^running
922fbb7b 20848
594fe323 20849(gdb)
a47ec5fe
AR
20850*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{
20851func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
20852line="5"@}
594fe323 20853(gdb)
a2c02241
NR
20854-data-list-changed-registers
20855^done,changed-registers=["0","1","2","4","5","6","7","8","9",
20856"10","11","13","14","15","16","17","18","19","20","21","22","23",
20857"24","25","26","27","28","30","31","64","65","66","67","69"]
594fe323 20858(gdb)
a2c02241 20859@end smallexample
922fbb7b
AC
20860
20861
a2c02241
NR
20862@subheading The @code{-data-list-register-names} Command
20863@findex -data-list-register-names
922fbb7b
AC
20864
20865@subsubheading Synopsis
20866
20867@smallexample
a2c02241 20868 -data-list-register-names [ ( @var{regno} )+ ]
922fbb7b
AC
20869@end smallexample
20870
a2c02241
NR
20871Show a list of register names for the current target. If no arguments
20872are given, it shows a list of the names of all the registers. If
20873integer numbers are given as arguments, it will print a list of the
20874names of the registers corresponding to the arguments. To ensure
20875consistency between a register name and its number, the output list may
20876include empty register names.
922fbb7b
AC
20877
20878@subsubheading @value{GDBN} Command
20879
a2c02241
NR
20880@value{GDBN} does not have a command which corresponds to
20881@samp{-data-list-register-names}. In @code{gdbtk} there is a
20882corresponding command @samp{gdb_regnames}.
922fbb7b
AC
20883
20884@subsubheading Example
922fbb7b 20885
a2c02241
NR
20886For the PPC MBX board:
20887@smallexample
594fe323 20888(gdb)
a2c02241
NR
20889-data-list-register-names
20890^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
20891"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
20892"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
20893"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
20894"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
20895"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
20896"", "pc","ps","cr","lr","ctr","xer"]
594fe323 20897(gdb)
a2c02241
NR
20898-data-list-register-names 1 2 3
20899^done,register-names=["r1","r2","r3"]
594fe323 20900(gdb)
a2c02241 20901@end smallexample
922fbb7b 20902
a2c02241
NR
20903@subheading The @code{-data-list-register-values} Command
20904@findex -data-list-register-values
922fbb7b
AC
20905
20906@subsubheading Synopsis
20907
20908@smallexample
a2c02241 20909 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
922fbb7b
AC
20910@end smallexample
20911
a2c02241
NR
20912Display the registers' contents. @var{fmt} is the format according to
20913which the registers' contents are to be returned, followed by an optional
20914list of numbers specifying the registers to display. A missing list of
20915numbers indicates that the contents of all the registers must be returned.
20916
20917Allowed formats for @var{fmt} are:
20918
20919@table @code
20920@item x
20921Hexadecimal
20922@item o
20923Octal
20924@item t
20925Binary
20926@item d
20927Decimal
20928@item r
20929Raw
20930@item N
20931Natural
20932@end table
922fbb7b
AC
20933
20934@subsubheading @value{GDBN} Command
20935
a2c02241
NR
20936The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
20937all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
922fbb7b
AC
20938
20939@subsubheading Example
922fbb7b 20940
a2c02241
NR
20941For a PPC MBX board (note: line breaks are for readability only, they
20942don't appear in the actual output):
20943
20944@smallexample
594fe323 20945(gdb)
a2c02241
NR
20946-data-list-register-values r 64 65
20947^done,register-values=[@{number="64",value="0xfe00a300"@},
20948@{number="65",value="0x00029002"@}]
594fe323 20949(gdb)
a2c02241
NR
20950-data-list-register-values x
20951^done,register-values=[@{number="0",value="0xfe0043c8"@},
20952@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
20953@{number="3",value="0x0"@},@{number="4",value="0xa"@},
20954@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
20955@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
20956@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
20957@{number="11",value="0x1"@},@{number="12",value="0x0"@},
20958@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
20959@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
20960@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
20961@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
20962@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
20963@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
20964@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
20965@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
20966@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
20967@{number="31",value="0x0"@},@{number="32",value="0x0"@},
20968@{number="33",value="0x0"@},@{number="34",value="0x0"@},
20969@{number="35",value="0x0"@},@{number="36",value="0x0"@},
20970@{number="37",value="0x0"@},@{number="38",value="0x0"@},
20971@{number="39",value="0x0"@},@{number="40",value="0x0"@},
20972@{number="41",value="0x0"@},@{number="42",value="0x0"@},
20973@{number="43",value="0x0"@},@{number="44",value="0x0"@},
20974@{number="45",value="0x0"@},@{number="46",value="0x0"@},
20975@{number="47",value="0x0"@},@{number="48",value="0x0"@},
20976@{number="49",value="0x0"@},@{number="50",value="0x0"@},
20977@{number="51",value="0x0"@},@{number="52",value="0x0"@},
20978@{number="53",value="0x0"@},@{number="54",value="0x0"@},
20979@{number="55",value="0x0"@},@{number="56",value="0x0"@},
20980@{number="57",value="0x0"@},@{number="58",value="0x0"@},
20981@{number="59",value="0x0"@},@{number="60",value="0x0"@},
20982@{number="61",value="0x0"@},@{number="62",value="0x0"@},
20983@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
20984@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
20985@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
20986@{number="69",value="0x20002b03"@}]
594fe323 20987(gdb)
a2c02241 20988@end smallexample
922fbb7b 20989
a2c02241
NR
20990
20991@subheading The @code{-data-read-memory} Command
20992@findex -data-read-memory
922fbb7b
AC
20993
20994@subsubheading Synopsis
20995
20996@smallexample
a2c02241
NR
20997 -data-read-memory [ -o @var{byte-offset} ]
20998 @var{address} @var{word-format} @var{word-size}
20999 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
922fbb7b
AC
21000@end smallexample
21001
a2c02241
NR
21002@noindent
21003where:
922fbb7b 21004
a2c02241
NR
21005@table @samp
21006@item @var{address}
21007An expression specifying the address of the first memory word to be
21008read. Complex expressions containing embedded white space should be
21009quoted using the C convention.
922fbb7b 21010
a2c02241
NR
21011@item @var{word-format}
21012The format to be used to print the memory words. The notation is the
21013same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
79a6e687 21014,Output Formats}).
922fbb7b 21015
a2c02241
NR
21016@item @var{word-size}
21017The size of each memory word in bytes.
922fbb7b 21018
a2c02241
NR
21019@item @var{nr-rows}
21020The number of rows in the output table.
922fbb7b 21021
a2c02241
NR
21022@item @var{nr-cols}
21023The number of columns in the output table.
922fbb7b 21024
a2c02241
NR
21025@item @var{aschar}
21026If present, indicates that each row should include an @sc{ascii} dump. The
21027value of @var{aschar} is used as a padding character when a byte is not a
21028member of the printable @sc{ascii} character set (printable @sc{ascii}
21029characters are those whose code is between 32 and 126, inclusively).
922fbb7b 21030
a2c02241
NR
21031@item @var{byte-offset}
21032An offset to add to the @var{address} before fetching memory.
21033@end table
922fbb7b 21034
a2c02241
NR
21035This command displays memory contents as a table of @var{nr-rows} by
21036@var{nr-cols} words, each word being @var{word-size} bytes. In total,
21037@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
21038(returned as @samp{total-bytes}). Should less than the requested number
21039of bytes be returned by the target, the missing words are identified
21040using @samp{N/A}. The number of bytes read from the target is returned
21041in @samp{nr-bytes} and the starting address used to read memory in
21042@samp{addr}.
21043
21044The address of the next/previous row or page is available in
21045@samp{next-row} and @samp{prev-row}, @samp{next-page} and
21046@samp{prev-page}.
922fbb7b
AC
21047
21048@subsubheading @value{GDBN} Command
21049
a2c02241
NR
21050The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
21051@samp{gdb_get_mem} memory read command.
922fbb7b
AC
21052
21053@subsubheading Example
32e7087d 21054
a2c02241
NR
21055Read six bytes of memory starting at @code{bytes+6} but then offset by
21056@code{-6} bytes. Format as three rows of two columns. One byte per
21057word. Display each word in hex.
32e7087d
JB
21058
21059@smallexample
594fe323 21060(gdb)
a2c02241
NR
210619-data-read-memory -o -6 -- bytes+6 x 1 3 2
210629^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
21063next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
21064prev-page="0x0000138a",memory=[
21065@{addr="0x00001390",data=["0x00","0x01"]@},
21066@{addr="0x00001392",data=["0x02","0x03"]@},
21067@{addr="0x00001394",data=["0x04","0x05"]@}]
594fe323 21068(gdb)
32e7087d
JB
21069@end smallexample
21070
a2c02241
NR
21071Read two bytes of memory starting at address @code{shorts + 64} and
21072display as a single word formatted in decimal.
32e7087d 21073
32e7087d 21074@smallexample
594fe323 21075(gdb)
a2c02241
NR
210765-data-read-memory shorts+64 d 2 1 1
210775^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
21078next-row="0x00001512",prev-row="0x0000150e",
21079next-page="0x00001512",prev-page="0x0000150e",memory=[
21080@{addr="0x00001510",data=["128"]@}]
594fe323 21081(gdb)
32e7087d
JB
21082@end smallexample
21083
a2c02241
NR
21084Read thirty two bytes of memory starting at @code{bytes+16} and format
21085as eight rows of four columns. Include a string encoding with @samp{x}
21086used as the non-printable character.
922fbb7b
AC
21087
21088@smallexample
594fe323 21089(gdb)
a2c02241
NR
210904-data-read-memory bytes+16 x 1 8 4 x
210914^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
21092next-row="0x000013c0",prev-row="0x0000139c",
21093next-page="0x000013c0",prev-page="0x00001380",memory=[
21094@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
21095@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
21096@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
21097@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
21098@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
21099@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
21100@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
21101@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
594fe323 21102(gdb)
922fbb7b
AC
21103@end smallexample
21104
a2c02241
NR
21105@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21106@node GDB/MI Tracepoint Commands
21107@section @sc{gdb/mi} Tracepoint Commands
922fbb7b 21108
a2c02241 21109The tracepoint commands are not yet implemented.
922fbb7b 21110
a2c02241 21111@c @subheading -trace-actions
922fbb7b 21112
a2c02241 21113@c @subheading -trace-delete
922fbb7b 21114
a2c02241 21115@c @subheading -trace-disable
922fbb7b 21116
a2c02241 21117@c @subheading -trace-dump
922fbb7b 21118
a2c02241 21119@c @subheading -trace-enable
922fbb7b 21120
a2c02241 21121@c @subheading -trace-exists
922fbb7b 21122
a2c02241 21123@c @subheading -trace-find
922fbb7b 21124
a2c02241 21125@c @subheading -trace-frame-number
922fbb7b 21126
a2c02241 21127@c @subheading -trace-info
922fbb7b 21128
a2c02241 21129@c @subheading -trace-insert
922fbb7b 21130
a2c02241 21131@c @subheading -trace-list
922fbb7b 21132
a2c02241 21133@c @subheading -trace-pass-count
922fbb7b 21134
a2c02241 21135@c @subheading -trace-save
922fbb7b 21136
a2c02241 21137@c @subheading -trace-start
922fbb7b 21138
a2c02241 21139@c @subheading -trace-stop
922fbb7b 21140
922fbb7b 21141
a2c02241
NR
21142@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21143@node GDB/MI Symbol Query
21144@section @sc{gdb/mi} Symbol Query Commands
922fbb7b
AC
21145
21146
a2c02241
NR
21147@subheading The @code{-symbol-info-address} Command
21148@findex -symbol-info-address
922fbb7b
AC
21149
21150@subsubheading Synopsis
21151
21152@smallexample
a2c02241 21153 -symbol-info-address @var{symbol}
922fbb7b
AC
21154@end smallexample
21155
a2c02241 21156Describe where @var{symbol} is stored.
922fbb7b
AC
21157
21158@subsubheading @value{GDBN} Command
21159
a2c02241 21160The corresponding @value{GDBN} command is @samp{info address}.
922fbb7b
AC
21161
21162@subsubheading Example
21163N.A.
21164
21165
a2c02241
NR
21166@subheading The @code{-symbol-info-file} Command
21167@findex -symbol-info-file
922fbb7b
AC
21168
21169@subsubheading Synopsis
21170
21171@smallexample
a2c02241 21172 -symbol-info-file
922fbb7b
AC
21173@end smallexample
21174
a2c02241 21175Show the file for the symbol.
922fbb7b 21176
a2c02241 21177@subsubheading @value{GDBN} Command
922fbb7b 21178
a2c02241
NR
21179There's no equivalent @value{GDBN} command. @code{gdbtk} has
21180@samp{gdb_find_file}.
922fbb7b
AC
21181
21182@subsubheading Example
21183N.A.
21184
21185
a2c02241
NR
21186@subheading The @code{-symbol-info-function} Command
21187@findex -symbol-info-function
922fbb7b
AC
21188
21189@subsubheading Synopsis
21190
21191@smallexample
a2c02241 21192 -symbol-info-function
922fbb7b
AC
21193@end smallexample
21194
a2c02241 21195Show which function the symbol lives in.
922fbb7b
AC
21196
21197@subsubheading @value{GDBN} Command
21198
a2c02241 21199@samp{gdb_get_function} in @code{gdbtk}.
922fbb7b
AC
21200
21201@subsubheading Example
21202N.A.
21203
21204
a2c02241
NR
21205@subheading The @code{-symbol-info-line} Command
21206@findex -symbol-info-line
922fbb7b
AC
21207
21208@subsubheading Synopsis
21209
21210@smallexample
a2c02241 21211 -symbol-info-line
922fbb7b
AC
21212@end smallexample
21213
a2c02241 21214Show the core addresses of the code for a source line.
922fbb7b 21215
a2c02241 21216@subsubheading @value{GDBN} Command
922fbb7b 21217
a2c02241
NR
21218The corresponding @value{GDBN} command is @samp{info line}.
21219@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
922fbb7b
AC
21220
21221@subsubheading Example
a2c02241 21222N.A.
922fbb7b
AC
21223
21224
a2c02241
NR
21225@subheading The @code{-symbol-info-symbol} Command
21226@findex -symbol-info-symbol
07f31aa6
DJ
21227
21228@subsubheading Synopsis
21229
a2c02241
NR
21230@smallexample
21231 -symbol-info-symbol @var{addr}
21232@end smallexample
07f31aa6 21233
a2c02241 21234Describe what symbol is at location @var{addr}.
07f31aa6 21235
a2c02241 21236@subsubheading @value{GDBN} Command
07f31aa6 21237
a2c02241 21238The corresponding @value{GDBN} command is @samp{info symbol}.
07f31aa6
DJ
21239
21240@subsubheading Example
a2c02241 21241N.A.
07f31aa6
DJ
21242
21243
a2c02241
NR
21244@subheading The @code{-symbol-list-functions} Command
21245@findex -symbol-list-functions
922fbb7b
AC
21246
21247@subsubheading Synopsis
21248
21249@smallexample
a2c02241 21250 -symbol-list-functions
922fbb7b
AC
21251@end smallexample
21252
a2c02241 21253List the functions in the executable.
922fbb7b
AC
21254
21255@subsubheading @value{GDBN} Command
21256
a2c02241
NR
21257@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
21258@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
21259
21260@subsubheading Example
a2c02241 21261N.A.
922fbb7b
AC
21262
21263
a2c02241
NR
21264@subheading The @code{-symbol-list-lines} Command
21265@findex -symbol-list-lines
922fbb7b
AC
21266
21267@subsubheading Synopsis
21268
21269@smallexample
a2c02241 21270 -symbol-list-lines @var{filename}
922fbb7b
AC
21271@end smallexample
21272
a2c02241
NR
21273Print the list of lines that contain code and their associated program
21274addresses for the given source filename. The entries are sorted in
21275ascending PC order.
922fbb7b
AC
21276
21277@subsubheading @value{GDBN} Command
21278
a2c02241 21279There is no corresponding @value{GDBN} command.
922fbb7b
AC
21280
21281@subsubheading Example
a2c02241 21282@smallexample
594fe323 21283(gdb)
a2c02241
NR
21284-symbol-list-lines basics.c
21285^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
594fe323 21286(gdb)
a2c02241 21287@end smallexample
922fbb7b
AC
21288
21289
a2c02241
NR
21290@subheading The @code{-symbol-list-types} Command
21291@findex -symbol-list-types
922fbb7b
AC
21292
21293@subsubheading Synopsis
21294
21295@smallexample
a2c02241 21296 -symbol-list-types
922fbb7b
AC
21297@end smallexample
21298
a2c02241 21299List all the type names.
922fbb7b
AC
21300
21301@subsubheading @value{GDBN} Command
21302
a2c02241
NR
21303The corresponding commands are @samp{info types} in @value{GDBN},
21304@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
21305
21306@subsubheading Example
21307N.A.
21308
21309
a2c02241
NR
21310@subheading The @code{-symbol-list-variables} Command
21311@findex -symbol-list-variables
922fbb7b
AC
21312
21313@subsubheading Synopsis
21314
21315@smallexample
a2c02241 21316 -symbol-list-variables
922fbb7b
AC
21317@end smallexample
21318
a2c02241 21319List all the global and static variable names.
922fbb7b
AC
21320
21321@subsubheading @value{GDBN} Command
21322
a2c02241 21323@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
21324
21325@subsubheading Example
21326N.A.
21327
21328
a2c02241
NR
21329@subheading The @code{-symbol-locate} Command
21330@findex -symbol-locate
922fbb7b
AC
21331
21332@subsubheading Synopsis
21333
21334@smallexample
a2c02241 21335 -symbol-locate
922fbb7b
AC
21336@end smallexample
21337
922fbb7b
AC
21338@subsubheading @value{GDBN} Command
21339
a2c02241 21340@samp{gdb_loc} in @code{gdbtk}.
922fbb7b
AC
21341
21342@subsubheading Example
21343N.A.
21344
21345
a2c02241
NR
21346@subheading The @code{-symbol-type} Command
21347@findex -symbol-type
922fbb7b
AC
21348
21349@subsubheading Synopsis
21350
21351@smallexample
a2c02241 21352 -symbol-type @var{variable}
922fbb7b
AC
21353@end smallexample
21354
a2c02241 21355Show type of @var{variable}.
922fbb7b 21356
a2c02241 21357@subsubheading @value{GDBN} Command
922fbb7b 21358
a2c02241
NR
21359The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
21360@samp{gdb_obj_variable}.
21361
21362@subsubheading Example
21363N.A.
21364
21365
21366@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21367@node GDB/MI File Commands
21368@section @sc{gdb/mi} File Commands
21369
21370This section describes the GDB/MI commands to specify executable file names
21371and to read in and obtain symbol table information.
21372
21373@subheading The @code{-file-exec-and-symbols} Command
21374@findex -file-exec-and-symbols
21375
21376@subsubheading Synopsis
922fbb7b
AC
21377
21378@smallexample
a2c02241 21379 -file-exec-and-symbols @var{file}
922fbb7b
AC
21380@end smallexample
21381
a2c02241
NR
21382Specify the executable file to be debugged. This file is the one from
21383which the symbol table is also read. If no file is specified, the
21384command clears the executable and symbol information. If breakpoints
21385are set when using this command with no arguments, @value{GDBN} will produce
21386error messages. Otherwise, no output is produced, except a completion
21387notification.
21388
922fbb7b
AC
21389@subsubheading @value{GDBN} Command
21390
a2c02241 21391The corresponding @value{GDBN} command is @samp{file}.
922fbb7b
AC
21392
21393@subsubheading Example
21394
21395@smallexample
594fe323 21396(gdb)
a2c02241
NR
21397-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
21398^done
594fe323 21399(gdb)
922fbb7b
AC
21400@end smallexample
21401
922fbb7b 21402
a2c02241
NR
21403@subheading The @code{-file-exec-file} Command
21404@findex -file-exec-file
922fbb7b
AC
21405
21406@subsubheading Synopsis
21407
21408@smallexample
a2c02241 21409 -file-exec-file @var{file}
922fbb7b
AC
21410@end smallexample
21411
a2c02241
NR
21412Specify the executable file to be debugged. Unlike
21413@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
21414from this file. If used without argument, @value{GDBN} clears the information
21415about the executable file. No output is produced, except a completion
21416notification.
922fbb7b 21417
a2c02241
NR
21418@subsubheading @value{GDBN} Command
21419
21420The corresponding @value{GDBN} command is @samp{exec-file}.
922fbb7b
AC
21421
21422@subsubheading Example
a2c02241
NR
21423
21424@smallexample
594fe323 21425(gdb)
a2c02241
NR
21426-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
21427^done
594fe323 21428(gdb)
a2c02241 21429@end smallexample
922fbb7b
AC
21430
21431
a2c02241
NR
21432@subheading The @code{-file-list-exec-sections} Command
21433@findex -file-list-exec-sections
922fbb7b
AC
21434
21435@subsubheading Synopsis
21436
21437@smallexample
a2c02241 21438 -file-list-exec-sections
922fbb7b
AC
21439@end smallexample
21440
a2c02241
NR
21441List the sections of the current executable file.
21442
922fbb7b
AC
21443@subsubheading @value{GDBN} Command
21444
a2c02241
NR
21445The @value{GDBN} command @samp{info file} shows, among the rest, the same
21446information as this command. @code{gdbtk} has a corresponding command
21447@samp{gdb_load_info}.
922fbb7b
AC
21448
21449@subsubheading Example
21450N.A.
21451
21452
a2c02241
NR
21453@subheading The @code{-file-list-exec-source-file} Command
21454@findex -file-list-exec-source-file
922fbb7b
AC
21455
21456@subsubheading Synopsis
21457
21458@smallexample
a2c02241 21459 -file-list-exec-source-file
922fbb7b
AC
21460@end smallexample
21461
a2c02241 21462List the line number, the current source file, and the absolute path
44288b44
NR
21463to the current source file for the current executable. The macro
21464information field has a value of @samp{1} or @samp{0} depending on
21465whether or not the file includes preprocessor macro information.
922fbb7b
AC
21466
21467@subsubheading @value{GDBN} Command
21468
a2c02241 21469The @value{GDBN} equivalent is @samp{info source}
922fbb7b
AC
21470
21471@subsubheading Example
21472
922fbb7b 21473@smallexample
594fe323 21474(gdb)
a2c02241 21475123-file-list-exec-source-file
44288b44 21476123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
594fe323 21477(gdb)
922fbb7b
AC
21478@end smallexample
21479
21480
a2c02241
NR
21481@subheading The @code{-file-list-exec-source-files} Command
21482@findex -file-list-exec-source-files
922fbb7b
AC
21483
21484@subsubheading Synopsis
21485
21486@smallexample
a2c02241 21487 -file-list-exec-source-files
922fbb7b
AC
21488@end smallexample
21489
a2c02241
NR
21490List the source files for the current executable.
21491
3f94c067
BW
21492It will always output the filename, but only when @value{GDBN} can find
21493the absolute file name of a source file, will it output the fullname.
922fbb7b
AC
21494
21495@subsubheading @value{GDBN} Command
21496
a2c02241
NR
21497The @value{GDBN} equivalent is @samp{info sources}.
21498@code{gdbtk} has an analogous command @samp{gdb_listfiles}.
922fbb7b
AC
21499
21500@subsubheading Example
922fbb7b 21501@smallexample
594fe323 21502(gdb)
a2c02241
NR
21503-file-list-exec-source-files
21504^done,files=[
21505@{file=foo.c,fullname=/home/foo.c@},
21506@{file=/home/bar.c,fullname=/home/bar.c@},
21507@{file=gdb_could_not_find_fullpath.c@}]
594fe323 21508(gdb)
922fbb7b
AC
21509@end smallexample
21510
a2c02241
NR
21511@subheading The @code{-file-list-shared-libraries} Command
21512@findex -file-list-shared-libraries
922fbb7b 21513
a2c02241 21514@subsubheading Synopsis
922fbb7b 21515
a2c02241
NR
21516@smallexample
21517 -file-list-shared-libraries
21518@end smallexample
922fbb7b 21519
a2c02241 21520List the shared libraries in the program.
922fbb7b 21521
a2c02241 21522@subsubheading @value{GDBN} Command
922fbb7b 21523
a2c02241 21524The corresponding @value{GDBN} command is @samp{info shared}.
922fbb7b 21525
a2c02241
NR
21526@subsubheading Example
21527N.A.
922fbb7b
AC
21528
21529
a2c02241
NR
21530@subheading The @code{-file-list-symbol-files} Command
21531@findex -file-list-symbol-files
922fbb7b 21532
a2c02241 21533@subsubheading Synopsis
922fbb7b 21534
a2c02241
NR
21535@smallexample
21536 -file-list-symbol-files
21537@end smallexample
922fbb7b 21538
a2c02241 21539List symbol files.
922fbb7b 21540
a2c02241 21541@subsubheading @value{GDBN} Command
922fbb7b 21542
a2c02241 21543The corresponding @value{GDBN} command is @samp{info file} (part of it).
922fbb7b 21544
a2c02241
NR
21545@subsubheading Example
21546N.A.
922fbb7b 21547
922fbb7b 21548
a2c02241
NR
21549@subheading The @code{-file-symbol-file} Command
21550@findex -file-symbol-file
922fbb7b 21551
a2c02241 21552@subsubheading Synopsis
922fbb7b 21553
a2c02241
NR
21554@smallexample
21555 -file-symbol-file @var{file}
21556@end smallexample
922fbb7b 21557
a2c02241
NR
21558Read symbol table info from the specified @var{file} argument. When
21559used without arguments, clears @value{GDBN}'s symbol table info. No output is
21560produced, except for a completion notification.
922fbb7b 21561
a2c02241 21562@subsubheading @value{GDBN} Command
922fbb7b 21563
a2c02241 21564The corresponding @value{GDBN} command is @samp{symbol-file}.
922fbb7b 21565
a2c02241 21566@subsubheading Example
922fbb7b 21567
a2c02241 21568@smallexample
594fe323 21569(gdb)
a2c02241
NR
21570-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
21571^done
594fe323 21572(gdb)
a2c02241 21573@end smallexample
922fbb7b 21574
a2c02241 21575@ignore
a2c02241
NR
21576@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21577@node GDB/MI Memory Overlay Commands
21578@section @sc{gdb/mi} Memory Overlay Commands
922fbb7b 21579
a2c02241 21580The memory overlay commands are not implemented.
922fbb7b 21581
a2c02241 21582@c @subheading -overlay-auto
922fbb7b 21583
a2c02241 21584@c @subheading -overlay-list-mapping-state
922fbb7b 21585
a2c02241 21586@c @subheading -overlay-list-overlays
922fbb7b 21587
a2c02241 21588@c @subheading -overlay-map
922fbb7b 21589
a2c02241 21590@c @subheading -overlay-off
922fbb7b 21591
a2c02241 21592@c @subheading -overlay-on
922fbb7b 21593
a2c02241 21594@c @subheading -overlay-unmap
922fbb7b 21595
a2c02241
NR
21596@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21597@node GDB/MI Signal Handling Commands
21598@section @sc{gdb/mi} Signal Handling Commands
922fbb7b 21599
a2c02241 21600Signal handling commands are not implemented.
922fbb7b 21601
a2c02241 21602@c @subheading -signal-handle
922fbb7b 21603
a2c02241 21604@c @subheading -signal-list-handle-actions
922fbb7b 21605
a2c02241
NR
21606@c @subheading -signal-list-signal-types
21607@end ignore
922fbb7b 21608
922fbb7b 21609
a2c02241
NR
21610@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21611@node GDB/MI Target Manipulation
21612@section @sc{gdb/mi} Target Manipulation Commands
922fbb7b
AC
21613
21614
a2c02241
NR
21615@subheading The @code{-target-attach} Command
21616@findex -target-attach
922fbb7b
AC
21617
21618@subsubheading Synopsis
21619
21620@smallexample
a2c02241 21621 -target-attach @var{pid} | @var{file}
922fbb7b
AC
21622@end smallexample
21623
a2c02241 21624Attach to a process @var{pid} or a file @var{file} outside of @value{GDBN}.
922fbb7b 21625
79a6e687 21626@subsubheading @value{GDBN} Command
922fbb7b 21627
a2c02241 21628The corresponding @value{GDBN} command is @samp{attach}.
922fbb7b 21629
a2c02241 21630@subsubheading Example
b56e7235
VP
21631@smallexample
21632(gdb)
21633-target-attach 34
21634=thread-created,id="1"
21635*stopped,thread-id="1",frame={addr="0xb7f7e410",func="bar",args=[]}
21636^done
21637(gdb)
21638@end smallexample
a2c02241
NR
21639
21640@subheading The @code{-target-compare-sections} Command
21641@findex -target-compare-sections
922fbb7b
AC
21642
21643@subsubheading Synopsis
21644
21645@smallexample
a2c02241 21646 -target-compare-sections [ @var{section} ]
922fbb7b
AC
21647@end smallexample
21648
a2c02241
NR
21649Compare data of section @var{section} on target to the exec file.
21650Without the argument, all sections are compared.
922fbb7b 21651
a2c02241 21652@subsubheading @value{GDBN} Command
922fbb7b 21653
a2c02241 21654The @value{GDBN} equivalent is @samp{compare-sections}.
922fbb7b 21655
a2c02241
NR
21656@subsubheading Example
21657N.A.
21658
21659
21660@subheading The @code{-target-detach} Command
21661@findex -target-detach
922fbb7b
AC
21662
21663@subsubheading Synopsis
21664
21665@smallexample
a2c02241 21666 -target-detach
922fbb7b
AC
21667@end smallexample
21668
a2c02241
NR
21669Detach from the remote target which normally resumes its execution.
21670There's no output.
21671
79a6e687 21672@subsubheading @value{GDBN} Command
a2c02241
NR
21673
21674The corresponding @value{GDBN} command is @samp{detach}.
21675
21676@subsubheading Example
922fbb7b
AC
21677
21678@smallexample
594fe323 21679(gdb)
a2c02241
NR
21680-target-detach
21681^done
594fe323 21682(gdb)
922fbb7b
AC
21683@end smallexample
21684
21685
a2c02241
NR
21686@subheading The @code{-target-disconnect} Command
21687@findex -target-disconnect
922fbb7b
AC
21688
21689@subsubheading Synopsis
21690
123dc839 21691@smallexample
a2c02241 21692 -target-disconnect
123dc839 21693@end smallexample
922fbb7b 21694
a2c02241
NR
21695Disconnect from the remote target. There's no output and the target is
21696generally not resumed.
21697
79a6e687 21698@subsubheading @value{GDBN} Command
a2c02241
NR
21699
21700The corresponding @value{GDBN} command is @samp{disconnect}.
bc8ced35
NR
21701
21702@subsubheading Example
922fbb7b
AC
21703
21704@smallexample
594fe323 21705(gdb)
a2c02241
NR
21706-target-disconnect
21707^done
594fe323 21708(gdb)
922fbb7b
AC
21709@end smallexample
21710
21711
a2c02241
NR
21712@subheading The @code{-target-download} Command
21713@findex -target-download
922fbb7b
AC
21714
21715@subsubheading Synopsis
21716
21717@smallexample
a2c02241 21718 -target-download
922fbb7b
AC
21719@end smallexample
21720
a2c02241
NR
21721Loads the executable onto the remote target.
21722It prints out an update message every half second, which includes the fields:
21723
21724@table @samp
21725@item section
21726The name of the section.
21727@item section-sent
21728The size of what has been sent so far for that section.
21729@item section-size
21730The size of the section.
21731@item total-sent
21732The total size of what was sent so far (the current and the previous sections).
21733@item total-size
21734The size of the overall executable to download.
21735@end table
21736
21737@noindent
21738Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
21739@sc{gdb/mi} Output Syntax}).
21740
21741In addition, it prints the name and size of the sections, as they are
21742downloaded. These messages include the following fields:
21743
21744@table @samp
21745@item section
21746The name of the section.
21747@item section-size
21748The size of the section.
21749@item total-size
21750The size of the overall executable to download.
21751@end table
21752
21753@noindent
21754At the end, a summary is printed.
21755
21756@subsubheading @value{GDBN} Command
21757
21758The corresponding @value{GDBN} command is @samp{load}.
21759
21760@subsubheading Example
21761
21762Note: each status message appears on a single line. Here the messages
21763have been broken down so that they can fit onto a page.
922fbb7b
AC
21764
21765@smallexample
594fe323 21766(gdb)
a2c02241
NR
21767-target-download
21768+download,@{section=".text",section-size="6668",total-size="9880"@}
21769+download,@{section=".text",section-sent="512",section-size="6668",
21770total-sent="512",total-size="9880"@}
21771+download,@{section=".text",section-sent="1024",section-size="6668",
21772total-sent="1024",total-size="9880"@}
21773+download,@{section=".text",section-sent="1536",section-size="6668",
21774total-sent="1536",total-size="9880"@}
21775+download,@{section=".text",section-sent="2048",section-size="6668",
21776total-sent="2048",total-size="9880"@}
21777+download,@{section=".text",section-sent="2560",section-size="6668",
21778total-sent="2560",total-size="9880"@}
21779+download,@{section=".text",section-sent="3072",section-size="6668",
21780total-sent="3072",total-size="9880"@}
21781+download,@{section=".text",section-sent="3584",section-size="6668",
21782total-sent="3584",total-size="9880"@}
21783+download,@{section=".text",section-sent="4096",section-size="6668",
21784total-sent="4096",total-size="9880"@}
21785+download,@{section=".text",section-sent="4608",section-size="6668",
21786total-sent="4608",total-size="9880"@}
21787+download,@{section=".text",section-sent="5120",section-size="6668",
21788total-sent="5120",total-size="9880"@}
21789+download,@{section=".text",section-sent="5632",section-size="6668",
21790total-sent="5632",total-size="9880"@}
21791+download,@{section=".text",section-sent="6144",section-size="6668",
21792total-sent="6144",total-size="9880"@}
21793+download,@{section=".text",section-sent="6656",section-size="6668",
21794total-sent="6656",total-size="9880"@}
21795+download,@{section=".init",section-size="28",total-size="9880"@}
21796+download,@{section=".fini",section-size="28",total-size="9880"@}
21797+download,@{section=".data",section-size="3156",total-size="9880"@}
21798+download,@{section=".data",section-sent="512",section-size="3156",
21799total-sent="7236",total-size="9880"@}
21800+download,@{section=".data",section-sent="1024",section-size="3156",
21801total-sent="7748",total-size="9880"@}
21802+download,@{section=".data",section-sent="1536",section-size="3156",
21803total-sent="8260",total-size="9880"@}
21804+download,@{section=".data",section-sent="2048",section-size="3156",
21805total-sent="8772",total-size="9880"@}
21806+download,@{section=".data",section-sent="2560",section-size="3156",
21807total-sent="9284",total-size="9880"@}
21808+download,@{section=".data",section-sent="3072",section-size="3156",
21809total-sent="9796",total-size="9880"@}
21810^done,address="0x10004",load-size="9880",transfer-rate="6586",
21811write-rate="429"
594fe323 21812(gdb)
922fbb7b
AC
21813@end smallexample
21814
21815
a2c02241
NR
21816@subheading The @code{-target-exec-status} Command
21817@findex -target-exec-status
922fbb7b
AC
21818
21819@subsubheading Synopsis
21820
21821@smallexample
a2c02241 21822 -target-exec-status
922fbb7b
AC
21823@end smallexample
21824
a2c02241
NR
21825Provide information on the state of the target (whether it is running or
21826not, for instance).
922fbb7b 21827
a2c02241 21828@subsubheading @value{GDBN} Command
922fbb7b 21829
a2c02241
NR
21830There's no equivalent @value{GDBN} command.
21831
21832@subsubheading Example
21833N.A.
922fbb7b 21834
a2c02241
NR
21835
21836@subheading The @code{-target-list-available-targets} Command
21837@findex -target-list-available-targets
922fbb7b
AC
21838
21839@subsubheading Synopsis
21840
21841@smallexample
a2c02241 21842 -target-list-available-targets
922fbb7b
AC
21843@end smallexample
21844
a2c02241 21845List the possible targets to connect to.
922fbb7b 21846
a2c02241 21847@subsubheading @value{GDBN} Command
922fbb7b 21848
a2c02241 21849The corresponding @value{GDBN} command is @samp{help target}.
922fbb7b 21850
a2c02241
NR
21851@subsubheading Example
21852N.A.
21853
21854
21855@subheading The @code{-target-list-current-targets} Command
21856@findex -target-list-current-targets
922fbb7b
AC
21857
21858@subsubheading Synopsis
21859
21860@smallexample
a2c02241 21861 -target-list-current-targets
922fbb7b
AC
21862@end smallexample
21863
a2c02241 21864Describe the current target.
922fbb7b 21865
a2c02241 21866@subsubheading @value{GDBN} Command
922fbb7b 21867
a2c02241
NR
21868The corresponding information is printed by @samp{info file} (among
21869other things).
922fbb7b 21870
a2c02241
NR
21871@subsubheading Example
21872N.A.
21873
21874
21875@subheading The @code{-target-list-parameters} Command
21876@findex -target-list-parameters
922fbb7b
AC
21877
21878@subsubheading Synopsis
21879
21880@smallexample
a2c02241 21881 -target-list-parameters
922fbb7b
AC
21882@end smallexample
21883
a2c02241
NR
21884@c ????
21885
21886@subsubheading @value{GDBN} Command
21887
21888No equivalent.
922fbb7b
AC
21889
21890@subsubheading Example
a2c02241
NR
21891N.A.
21892
21893
21894@subheading The @code{-target-select} Command
21895@findex -target-select
21896
21897@subsubheading Synopsis
922fbb7b
AC
21898
21899@smallexample
a2c02241 21900 -target-select @var{type} @var{parameters @dots{}}
922fbb7b
AC
21901@end smallexample
21902
a2c02241 21903Connect @value{GDBN} to the remote target. This command takes two args:
922fbb7b 21904
a2c02241
NR
21905@table @samp
21906@item @var{type}
75c99385 21907The type of target, for instance @samp{remote}, etc.
a2c02241
NR
21908@item @var{parameters}
21909Device names, host names and the like. @xref{Target Commands, ,
79a6e687 21910Commands for Managing Targets}, for more details.
a2c02241
NR
21911@end table
21912
21913The output is a connection notification, followed by the address at
21914which the target program is, in the following form:
922fbb7b
AC
21915
21916@smallexample
a2c02241
NR
21917^connected,addr="@var{address}",func="@var{function name}",
21918 args=[@var{arg list}]
922fbb7b
AC
21919@end smallexample
21920
a2c02241
NR
21921@subsubheading @value{GDBN} Command
21922
21923The corresponding @value{GDBN} command is @samp{target}.
265eeb58
NR
21924
21925@subsubheading Example
922fbb7b 21926
265eeb58 21927@smallexample
594fe323 21928(gdb)
75c99385 21929-target-select remote /dev/ttya
a2c02241 21930^connected,addr="0xfe00a300",func="??",args=[]
594fe323 21931(gdb)
265eeb58 21932@end smallexample
ef21caaf 21933
a6b151f1
DJ
21934@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
21935@node GDB/MI File Transfer Commands
21936@section @sc{gdb/mi} File Transfer Commands
21937
21938
21939@subheading The @code{-target-file-put} Command
21940@findex -target-file-put
21941
21942@subsubheading Synopsis
21943
21944@smallexample
21945 -target-file-put @var{hostfile} @var{targetfile}
21946@end smallexample
21947
21948Copy file @var{hostfile} from the host system (the machine running
21949@value{GDBN}) to @var{targetfile} on the target system.
21950
21951@subsubheading @value{GDBN} Command
21952
21953The corresponding @value{GDBN} command is @samp{remote put}.
21954
21955@subsubheading Example
21956
21957@smallexample
21958(gdb)
21959-target-file-put localfile remotefile
21960^done
21961(gdb)
21962@end smallexample
21963
21964
1763a388 21965@subheading The @code{-target-file-get} Command
a6b151f1
DJ
21966@findex -target-file-get
21967
21968@subsubheading Synopsis
21969
21970@smallexample
21971 -target-file-get @var{targetfile} @var{hostfile}
21972@end smallexample
21973
21974Copy file @var{targetfile} from the target system to @var{hostfile}
21975on the host system.
21976
21977@subsubheading @value{GDBN} Command
21978
21979The corresponding @value{GDBN} command is @samp{remote get}.
21980
21981@subsubheading Example
21982
21983@smallexample
21984(gdb)
21985-target-file-get remotefile localfile
21986^done
21987(gdb)
21988@end smallexample
21989
21990
21991@subheading The @code{-target-file-delete} Command
21992@findex -target-file-delete
21993
21994@subsubheading Synopsis
21995
21996@smallexample
21997 -target-file-delete @var{targetfile}
21998@end smallexample
21999
22000Delete @var{targetfile} from the target system.
22001
22002@subsubheading @value{GDBN} Command
22003
22004The corresponding @value{GDBN} command is @samp{remote delete}.
22005
22006@subsubheading Example
22007
22008@smallexample
22009(gdb)
22010-target-file-delete remotefile
22011^done
22012(gdb)
22013@end smallexample
22014
22015
ef21caaf
NR
22016@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22017@node GDB/MI Miscellaneous Commands
22018@section Miscellaneous @sc{gdb/mi} Commands
22019
22020@c @subheading -gdb-complete
22021
22022@subheading The @code{-gdb-exit} Command
22023@findex -gdb-exit
22024
22025@subsubheading Synopsis
22026
22027@smallexample
22028 -gdb-exit
22029@end smallexample
22030
22031Exit @value{GDBN} immediately.
22032
22033@subsubheading @value{GDBN} Command
22034
22035Approximately corresponds to @samp{quit}.
22036
22037@subsubheading Example
22038
22039@smallexample
594fe323 22040(gdb)
ef21caaf
NR
22041-gdb-exit
22042^exit
22043@end smallexample
22044
a2c02241
NR
22045
22046@subheading The @code{-exec-abort} Command
22047@findex -exec-abort
22048
22049@subsubheading Synopsis
22050
22051@smallexample
22052 -exec-abort
22053@end smallexample
22054
22055Kill the inferior running program.
22056
22057@subsubheading @value{GDBN} Command
22058
22059The corresponding @value{GDBN} command is @samp{kill}.
22060
22061@subsubheading Example
22062N.A.
22063
22064
ef21caaf
NR
22065@subheading The @code{-gdb-set} Command
22066@findex -gdb-set
22067
22068@subsubheading Synopsis
22069
22070@smallexample
22071 -gdb-set
22072@end smallexample
22073
22074Set an internal @value{GDBN} variable.
22075@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
22076
22077@subsubheading @value{GDBN} Command
22078
22079The corresponding @value{GDBN} command is @samp{set}.
22080
22081@subsubheading Example
22082
22083@smallexample
594fe323 22084(gdb)
ef21caaf
NR
22085-gdb-set $foo=3
22086^done
594fe323 22087(gdb)
ef21caaf
NR
22088@end smallexample
22089
22090
22091@subheading The @code{-gdb-show} Command
22092@findex -gdb-show
22093
22094@subsubheading Synopsis
22095
22096@smallexample
22097 -gdb-show
22098@end smallexample
22099
22100Show the current value of a @value{GDBN} variable.
22101
79a6e687 22102@subsubheading @value{GDBN} Command
ef21caaf
NR
22103
22104The corresponding @value{GDBN} command is @samp{show}.
22105
22106@subsubheading Example
22107
22108@smallexample
594fe323 22109(gdb)
ef21caaf
NR
22110-gdb-show annotate
22111^done,value="0"
594fe323 22112(gdb)
ef21caaf
NR
22113@end smallexample
22114
22115@c @subheading -gdb-source
22116
22117
22118@subheading The @code{-gdb-version} Command
22119@findex -gdb-version
22120
22121@subsubheading Synopsis
22122
22123@smallexample
22124 -gdb-version
22125@end smallexample
22126
22127Show version information for @value{GDBN}. Used mostly in testing.
22128
22129@subsubheading @value{GDBN} Command
22130
22131The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by
22132default shows this information when you start an interactive session.
22133
22134@subsubheading Example
22135
22136@c This example modifies the actual output from GDB to avoid overfull
22137@c box in TeX.
22138@smallexample
594fe323 22139(gdb)
ef21caaf
NR
22140-gdb-version
22141~GNU gdb 5.2.1
22142~Copyright 2000 Free Software Foundation, Inc.
22143~GDB is free software, covered by the GNU General Public License, and
22144~you are welcome to change it and/or distribute copies of it under
22145~ certain conditions.
22146~Type "show copying" to see the conditions.
22147~There is absolutely no warranty for GDB. Type "show warranty" for
22148~ details.
22149~This GDB was configured as
22150 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
22151^done
594fe323 22152(gdb)
ef21caaf
NR
22153@end smallexample
22154
084344da
VP
22155@subheading The @code{-list-features} Command
22156@findex -list-features
22157
22158Returns a list of particular features of the MI protocol that
22159this version of gdb implements. A feature can be a command,
22160or a new field in an output of some command, or even an
22161important bugfix. While a frontend can sometimes detect presence
22162of a feature at runtime, it is easier to perform detection at debugger
22163startup.
22164
22165The command returns a list of strings, with each string naming an
22166available feature. Each returned string is just a name, it does not
22167have any internal structure. The list of possible feature names
22168is given below.
22169
22170Example output:
22171
22172@smallexample
22173(gdb) -list-features
22174^done,result=["feature1","feature2"]
22175@end smallexample
22176
22177The current list of features is:
22178
22179@itemize @minus
22180@item
22181@samp{frozen-varobjs}---indicates presence of the
22182@code{-var-set-frozen} command, as well as possible presense of the
22183@code{frozen} field in the output of @code{-varobj-create}.
8b4ed427
VP
22184@item
22185@samp{pending-breakpoints}---indicates presence of the @code{-f}
22186option to the @code{-break-insert} command.
8e8901c5
VP
22187@item
22188@samp{thread-info}---indicates presence of the @code{-thread-info} command.
8b4ed427 22189
084344da
VP
22190@end itemize
22191
ef21caaf
NR
22192@subheading The @code{-interpreter-exec} Command
22193@findex -interpreter-exec
22194
22195@subheading Synopsis
22196
22197@smallexample
22198-interpreter-exec @var{interpreter} @var{command}
22199@end smallexample
a2c02241 22200@anchor{-interpreter-exec}
ef21caaf
NR
22201
22202Execute the specified @var{command} in the given @var{interpreter}.
22203
22204@subheading @value{GDBN} Command
22205
22206The corresponding @value{GDBN} command is @samp{interpreter-exec}.
22207
22208@subheading Example
22209
22210@smallexample
594fe323 22211(gdb)
ef21caaf
NR
22212-interpreter-exec console "break main"
22213&"During symbol reading, couldn't parse type; debugger out of date?.\n"
22214&"During symbol reading, bad structure-type format.\n"
22215~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
22216^done
594fe323 22217(gdb)
ef21caaf
NR
22218@end smallexample
22219
22220@subheading The @code{-inferior-tty-set} Command
22221@findex -inferior-tty-set
22222
22223@subheading Synopsis
22224
22225@smallexample
22226-inferior-tty-set /dev/pts/1
22227@end smallexample
22228
22229Set terminal for future runs of the program being debugged.
22230
22231@subheading @value{GDBN} Command
22232
22233The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1.
22234
22235@subheading Example
22236
22237@smallexample
594fe323 22238(gdb)
ef21caaf
NR
22239-inferior-tty-set /dev/pts/1
22240^done
594fe323 22241(gdb)
ef21caaf
NR
22242@end smallexample
22243
22244@subheading The @code{-inferior-tty-show} Command
22245@findex -inferior-tty-show
22246
22247@subheading Synopsis
22248
22249@smallexample
22250-inferior-tty-show
22251@end smallexample
22252
22253Show terminal for future runs of program being debugged.
22254
22255@subheading @value{GDBN} Command
22256
22257The corresponding @value{GDBN} command is @samp{show inferior-tty}.
22258
22259@subheading Example
22260
22261@smallexample
594fe323 22262(gdb)
ef21caaf
NR
22263-inferior-tty-set /dev/pts/1
22264^done
594fe323 22265(gdb)
ef21caaf
NR
22266-inferior-tty-show
22267^done,inferior_tty_terminal="/dev/pts/1"
594fe323 22268(gdb)
ef21caaf 22269@end smallexample
922fbb7b 22270
a4eefcd8
NR
22271@subheading The @code{-enable-timings} Command
22272@findex -enable-timings
22273
22274@subheading Synopsis
22275
22276@smallexample
22277-enable-timings [yes | no]
22278@end smallexample
22279
22280Toggle the printing of the wallclock, user and system times for an MI
22281command as a field in its output. This command is to help frontend
22282developers optimize the performance of their code. No argument is
22283equivalent to @samp{yes}.
22284
22285@subheading @value{GDBN} Command
22286
22287No equivalent.
22288
22289@subheading Example
22290
22291@smallexample
22292(gdb)
22293-enable-timings
22294^done
22295(gdb)
22296-break-insert main
22297^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
22298addr="0x080484ed",func="main",file="myprog.c",
22299fullname="/home/nickrob/myprog.c",line="73",times="0"@},
22300time=@{wallclock="0.05185",user="0.00800",system="0.00000"@}
22301(gdb)
22302-enable-timings no
22303^done
22304(gdb)
22305-exec-run
22306^running
22307(gdb)
a47ec5fe 22308*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
a4eefcd8
NR
22309frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@},
22310@{name="argv",value="0xbfb60364"@}],file="myprog.c",
22311fullname="/home/nickrob/myprog.c",line="73"@}
22312(gdb)
22313@end smallexample
22314
922fbb7b
AC
22315@node Annotations
22316@chapter @value{GDBN} Annotations
22317
086432e2
AC
22318This chapter describes annotations in @value{GDBN}. Annotations were
22319designed to interface @value{GDBN} to graphical user interfaces or other
22320similar programs which want to interact with @value{GDBN} at a
922fbb7b
AC
22321relatively high level.
22322
d3e8051b 22323The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2
AC
22324(@pxref{GDB/MI}).
22325
922fbb7b
AC
22326@ignore
22327This is Edition @value{EDITION}, @value{DATE}.
22328@end ignore
22329
22330@menu
22331* Annotations Overview:: What annotations are; the general syntax.
9e6c4bd5 22332* Server Prefix:: Issuing a command without affecting user state.
922fbb7b
AC
22333* Prompting:: Annotations marking @value{GDBN}'s need for input.
22334* Errors:: Annotations for error messages.
922fbb7b
AC
22335* Invalidation:: Some annotations describe things now invalid.
22336* Annotations for Running::
22337 Whether the program is running, how it stopped, etc.
22338* Source Annotations:: Annotations describing source code.
922fbb7b
AC
22339@end menu
22340
22341@node Annotations Overview
22342@section What is an Annotation?
22343@cindex annotations
22344
922fbb7b
AC
22345Annotations start with a newline character, two @samp{control-z}
22346characters, and the name of the annotation. If there is no additional
22347information associated with this annotation, the name of the annotation
22348is followed immediately by a newline. If there is additional
22349information, the name of the annotation is followed by a space, the
22350additional information, and a newline. The additional information
22351cannot contain newline characters.
22352
22353Any output not beginning with a newline and two @samp{control-z}
22354characters denotes literal output from @value{GDBN}. Currently there is
22355no need for @value{GDBN} to output a newline followed by two
22356@samp{control-z} characters, but if there was such a need, the
22357annotations could be extended with an @samp{escape} annotation which
22358means those three characters as output.
22359
086432e2
AC
22360The annotation @var{level}, which is specified using the
22361@option{--annotate} command line option (@pxref{Mode Options}), controls
22362how much information @value{GDBN} prints together with its prompt,
22363values of expressions, source lines, and other types of output. Level 0
d3e8051b 22364is for no annotations, level 1 is for use when @value{GDBN} is run as a
086432e2
AC
22365subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
22366for programs that control @value{GDBN}, and level 2 annotations have
22367been made obsolete (@pxref{Limitations, , Limitations of the Annotation
09d4efe1
EZ
22368Interface, annotate, GDB's Obsolete Annotations}).
22369
22370@table @code
22371@kindex set annotate
22372@item set annotate @var{level}
e09f16f9 22373The @value{GDBN} command @code{set annotate} sets the level of
09d4efe1 22374annotations to the specified @var{level}.
9c16f35a
EZ
22375
22376@item show annotate
22377@kindex show annotate
22378Show the current annotation level.
09d4efe1
EZ
22379@end table
22380
22381This chapter describes level 3 annotations.
086432e2 22382
922fbb7b
AC
22383A simple example of starting up @value{GDBN} with annotations is:
22384
22385@smallexample
086432e2
AC
22386$ @kbd{gdb --annotate=3}
22387GNU gdb 6.0
22388Copyright 2003 Free Software Foundation, Inc.
922fbb7b
AC
22389GDB is free software, covered by the GNU General Public License,
22390and you are welcome to change it and/or distribute copies of it
22391under certain conditions.
22392Type "show copying" to see the conditions.
22393There is absolutely no warranty for GDB. Type "show warranty"
22394for details.
086432e2 22395This GDB was configured as "i386-pc-linux-gnu"
922fbb7b
AC
22396
22397^Z^Zpre-prompt
f7dc1244 22398(@value{GDBP})
922fbb7b 22399^Z^Zprompt
086432e2 22400@kbd{quit}
922fbb7b
AC
22401
22402^Z^Zpost-prompt
b383017d 22403$
922fbb7b
AC
22404@end smallexample
22405
22406Here @samp{quit} is input to @value{GDBN}; the rest is output from
22407@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
22408denotes a @samp{control-z} character) are annotations; the rest is
22409output from @value{GDBN}.
22410
9e6c4bd5
NR
22411@node Server Prefix
22412@section The Server Prefix
22413@cindex server prefix
22414
22415If you prefix a command with @samp{server } then it will not affect
22416the command history, nor will it affect @value{GDBN}'s notion of which
22417command to repeat if @key{RET} is pressed on a line by itself. This
22418means that commands can be run behind a user's back by a front-end in
22419a transparent manner.
22420
22421The server prefix does not affect the recording of values into the value
22422history; to print a value without recording it into the value history,
22423use the @code{output} command instead of the @code{print} command.
22424
922fbb7b
AC
22425@node Prompting
22426@section Annotation for @value{GDBN} Input
22427
22428@cindex annotations for prompts
22429When @value{GDBN} prompts for input, it annotates this fact so it is possible
22430to know when to send output, when the output from a given command is
22431over, etc.
22432
22433Different kinds of input each have a different @dfn{input type}. Each
22434input type has three annotations: a @code{pre-} annotation, which
22435denotes the beginning of any prompt which is being output, a plain
22436annotation, which denotes the end of the prompt, and then a @code{post-}
22437annotation which denotes the end of any echo which may (or may not) be
22438associated with the input. For example, the @code{prompt} input type
22439features the following annotations:
22440
22441@smallexample
22442^Z^Zpre-prompt
22443^Z^Zprompt
22444^Z^Zpost-prompt
22445@end smallexample
22446
22447The input types are
22448
22449@table @code
e5ac9b53
EZ
22450@findex pre-prompt annotation
22451@findex prompt annotation
22452@findex post-prompt annotation
922fbb7b
AC
22453@item prompt
22454When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
22455
e5ac9b53
EZ
22456@findex pre-commands annotation
22457@findex commands annotation
22458@findex post-commands annotation
922fbb7b
AC
22459@item commands
22460When @value{GDBN} prompts for a set of commands, like in the @code{commands}
22461command. The annotations are repeated for each command which is input.
22462
e5ac9b53
EZ
22463@findex pre-overload-choice annotation
22464@findex overload-choice annotation
22465@findex post-overload-choice annotation
922fbb7b
AC
22466@item overload-choice
22467When @value{GDBN} wants the user to select between various overloaded functions.
22468
e5ac9b53
EZ
22469@findex pre-query annotation
22470@findex query annotation
22471@findex post-query annotation
922fbb7b
AC
22472@item query
22473When @value{GDBN} wants the user to confirm a potentially dangerous operation.
22474
e5ac9b53
EZ
22475@findex pre-prompt-for-continue annotation
22476@findex prompt-for-continue annotation
22477@findex post-prompt-for-continue annotation
922fbb7b
AC
22478@item prompt-for-continue
22479When @value{GDBN} is asking the user to press return to continue. Note: Don't
22480expect this to work well; instead use @code{set height 0} to disable
22481prompting. This is because the counting of lines is buggy in the
22482presence of annotations.
22483@end table
22484
22485@node Errors
22486@section Errors
22487@cindex annotations for errors, warnings and interrupts
22488
e5ac9b53 22489@findex quit annotation
922fbb7b
AC
22490@smallexample
22491^Z^Zquit
22492@end smallexample
22493
22494This annotation occurs right before @value{GDBN} responds to an interrupt.
22495
e5ac9b53 22496@findex error annotation
922fbb7b
AC
22497@smallexample
22498^Z^Zerror
22499@end smallexample
22500
22501This annotation occurs right before @value{GDBN} responds to an error.
22502
22503Quit and error annotations indicate that any annotations which @value{GDBN} was
22504in the middle of may end abruptly. For example, if a
22505@code{value-history-begin} annotation is followed by a @code{error}, one
22506cannot expect to receive the matching @code{value-history-end}. One
22507cannot expect not to receive it either, however; an error annotation
22508does not necessarily mean that @value{GDBN} is immediately returning all the way
22509to the top level.
22510
e5ac9b53 22511@findex error-begin annotation
922fbb7b
AC
22512A quit or error annotation may be preceded by
22513
22514@smallexample
22515^Z^Zerror-begin
22516@end smallexample
22517
22518Any output between that and the quit or error annotation is the error
22519message.
22520
22521Warning messages are not yet annotated.
22522@c If we want to change that, need to fix warning(), type_error(),
22523@c range_error(), and possibly other places.
22524
922fbb7b
AC
22525@node Invalidation
22526@section Invalidation Notices
22527
22528@cindex annotations for invalidation messages
22529The following annotations say that certain pieces of state may have
22530changed.
22531
22532@table @code
e5ac9b53 22533@findex frames-invalid annotation
922fbb7b
AC
22534@item ^Z^Zframes-invalid
22535
22536The frames (for example, output from the @code{backtrace} command) may
22537have changed.
22538
e5ac9b53 22539@findex breakpoints-invalid annotation
922fbb7b
AC
22540@item ^Z^Zbreakpoints-invalid
22541
22542The breakpoints may have changed. For example, the user just added or
22543deleted a breakpoint.
22544@end table
22545
22546@node Annotations for Running
22547@section Running the Program
22548@cindex annotations for running programs
22549
e5ac9b53
EZ
22550@findex starting annotation
22551@findex stopping annotation
922fbb7b 22552When the program starts executing due to a @value{GDBN} command such as
b383017d 22553@code{step} or @code{continue},
922fbb7b
AC
22554
22555@smallexample
22556^Z^Zstarting
22557@end smallexample
22558
b383017d 22559is output. When the program stops,
922fbb7b
AC
22560
22561@smallexample
22562^Z^Zstopped
22563@end smallexample
22564
22565is output. Before the @code{stopped} annotation, a variety of
22566annotations describe how the program stopped.
22567
22568@table @code
e5ac9b53 22569@findex exited annotation
922fbb7b
AC
22570@item ^Z^Zexited @var{exit-status}
22571The program exited, and @var{exit-status} is the exit status (zero for
22572successful exit, otherwise nonzero).
22573
e5ac9b53
EZ
22574@findex signalled annotation
22575@findex signal-name annotation
22576@findex signal-name-end annotation
22577@findex signal-string annotation
22578@findex signal-string-end annotation
922fbb7b
AC
22579@item ^Z^Zsignalled
22580The program exited with a signal. After the @code{^Z^Zsignalled}, the
22581annotation continues:
22582
22583@smallexample
22584@var{intro-text}
22585^Z^Zsignal-name
22586@var{name}
22587^Z^Zsignal-name-end
22588@var{middle-text}
22589^Z^Zsignal-string
22590@var{string}
22591^Z^Zsignal-string-end
22592@var{end-text}
22593@end smallexample
22594
22595@noindent
22596where @var{name} is the name of the signal, such as @code{SIGILL} or
22597@code{SIGSEGV}, and @var{string} is the explanation of the signal, such
22598as @code{Illegal Instruction} or @code{Segmentation fault}.
22599@var{intro-text}, @var{middle-text}, and @var{end-text} are for the
22600user's benefit and have no particular format.
22601
e5ac9b53 22602@findex signal annotation
922fbb7b
AC
22603@item ^Z^Zsignal
22604The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
22605just saying that the program received the signal, not that it was
22606terminated with it.
22607
e5ac9b53 22608@findex breakpoint annotation
922fbb7b
AC
22609@item ^Z^Zbreakpoint @var{number}
22610The program hit breakpoint number @var{number}.
22611
e5ac9b53 22612@findex watchpoint annotation
922fbb7b
AC
22613@item ^Z^Zwatchpoint @var{number}
22614The program hit watchpoint number @var{number}.
22615@end table
22616
22617@node Source Annotations
22618@section Displaying Source
22619@cindex annotations for source display
22620
e5ac9b53 22621@findex source annotation
922fbb7b
AC
22622The following annotation is used instead of displaying source code:
22623
22624@smallexample
22625^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
22626@end smallexample
22627
22628where @var{filename} is an absolute file name indicating which source
22629file, @var{line} is the line number within that file (where 1 is the
22630first line in the file), @var{character} is the character position
22631within the file (where 0 is the first character in the file) (for most
22632debug formats this will necessarily point to the beginning of a line),
22633@var{middle} is @samp{middle} if @var{addr} is in the middle of the
22634line, or @samp{beg} if @var{addr} is at the beginning of the line, and
22635@var{addr} is the address in the target program associated with the
22636source which is being displayed. @var{addr} is in the form @samp{0x}
22637followed by one or more lowercase hex digits (note that this does not
22638depend on the language).
22639
8e04817f
AC
22640@node GDB Bugs
22641@chapter Reporting Bugs in @value{GDBN}
22642@cindex bugs in @value{GDBN}
22643@cindex reporting bugs in @value{GDBN}
c906108c 22644
8e04817f 22645Your bug reports play an essential role in making @value{GDBN} reliable.
c906108c 22646
8e04817f
AC
22647Reporting a bug may help you by bringing a solution to your problem, or it
22648may not. But in any case the principal function of a bug report is to help
22649the entire community by making the next version of @value{GDBN} work better. Bug
22650reports are your contribution to the maintenance of @value{GDBN}.
c906108c 22651
8e04817f
AC
22652In order for a bug report to serve its purpose, you must include the
22653information that enables us to fix the bug.
c4555f82
SC
22654
22655@menu
8e04817f
AC
22656* Bug Criteria:: Have you found a bug?
22657* Bug Reporting:: How to report bugs
c4555f82
SC
22658@end menu
22659
8e04817f 22660@node Bug Criteria
79a6e687 22661@section Have You Found a Bug?
8e04817f 22662@cindex bug criteria
c4555f82 22663
8e04817f 22664If you are not sure whether you have found a bug, here are some guidelines:
c4555f82
SC
22665
22666@itemize @bullet
8e04817f
AC
22667@cindex fatal signal
22668@cindex debugger crash
22669@cindex crash of debugger
c4555f82 22670@item
8e04817f
AC
22671If the debugger gets a fatal signal, for any input whatever, that is a
22672@value{GDBN} bug. Reliable debuggers never crash.
22673
22674@cindex error on valid input
22675@item
22676If @value{GDBN} produces an error message for valid input, that is a
22677bug. (Note that if you're cross debugging, the problem may also be
22678somewhere in the connection to the target.)
c4555f82 22679
8e04817f 22680@cindex invalid input
c4555f82 22681@item
8e04817f
AC
22682If @value{GDBN} does not produce an error message for invalid input,
22683that is a bug. However, you should note that your idea of
22684``invalid input'' might be our idea of ``an extension'' or ``support
22685for traditional practice''.
22686
22687@item
22688If you are an experienced user of debugging tools, your suggestions
22689for improvement of @value{GDBN} are welcome in any case.
c4555f82
SC
22690@end itemize
22691
8e04817f 22692@node Bug Reporting
79a6e687 22693@section How to Report Bugs
8e04817f
AC
22694@cindex bug reports
22695@cindex @value{GDBN} bugs, reporting
22696
22697A number of companies and individuals offer support for @sc{gnu} products.
22698If you obtained @value{GDBN} from a support organization, we recommend you
22699contact that organization first.
22700
22701You can find contact information for many support companies and
22702individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
22703distribution.
22704@c should add a web page ref...
22705
c16158bc
JM
22706@ifset BUGURL
22707@ifset BUGURL_DEFAULT
129188f6 22708In any event, we also recommend that you submit bug reports for
d3e8051b 22709@value{GDBN}. The preferred method is to submit them directly using
129188f6
AC
22710@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
22711page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
22712be used.
8e04817f
AC
22713
22714@strong{Do not send bug reports to @samp{info-gdb}, or to
22715@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
22716not want to receive bug reports. Those that do have arranged to receive
22717@samp{bug-gdb}.
22718
22719The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
22720serves as a repeater. The mailing list and the newsgroup carry exactly
22721the same messages. Often people think of posting bug reports to the
22722newsgroup instead of mailing them. This appears to work, but it has one
22723problem which can be crucial: a newsgroup posting often lacks a mail
22724path back to the sender. Thus, if we need to ask for more information,
22725we may be unable to reach you. For this reason, it is better to send
22726bug reports to the mailing list.
c16158bc
JM
22727@end ifset
22728@ifclear BUGURL_DEFAULT
22729In any event, we also recommend that you submit bug reports for
22730@value{GDBN} to @value{BUGURL}.
22731@end ifclear
22732@end ifset
c4555f82 22733
8e04817f
AC
22734The fundamental principle of reporting bugs usefully is this:
22735@strong{report all the facts}. If you are not sure whether to state a
22736fact or leave it out, state it!
c4555f82 22737
8e04817f
AC
22738Often people omit facts because they think they know what causes the
22739problem and assume that some details do not matter. Thus, you might
22740assume that the name of the variable you use in an example does not matter.
22741Well, probably it does not, but one cannot be sure. Perhaps the bug is a
22742stray memory reference which happens to fetch from the location where that
22743name is stored in memory; perhaps, if the name were different, the contents
22744of that location would fool the debugger into doing the right thing despite
22745the bug. Play it safe and give a specific, complete example. That is the
22746easiest thing for you to do, and the most helpful.
c4555f82 22747
8e04817f
AC
22748Keep in mind that the purpose of a bug report is to enable us to fix the
22749bug. It may be that the bug has been reported previously, but neither
22750you nor we can know that unless your bug report is complete and
22751self-contained.
c4555f82 22752
8e04817f
AC
22753Sometimes people give a few sketchy facts and ask, ``Does this ring a
22754bell?'' Those bug reports are useless, and we urge everyone to
22755@emph{refuse to respond to them} except to chide the sender to report
22756bugs properly.
22757
22758To enable us to fix the bug, you should include all these things:
c4555f82
SC
22759
22760@itemize @bullet
22761@item
8e04817f
AC
22762The version of @value{GDBN}. @value{GDBN} announces it if you start
22763with no arguments; you can also print it at any time using @code{show
22764version}.
c4555f82 22765
8e04817f
AC
22766Without this, we will not know whether there is any point in looking for
22767the bug in the current version of @value{GDBN}.
c4555f82
SC
22768
22769@item
8e04817f
AC
22770The type of machine you are using, and the operating system name and
22771version number.
c4555f82
SC
22772
22773@item
c1468174 22774What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
8e04817f 22775``@value{GCC}--2.8.1''.
c4555f82
SC
22776
22777@item
8e04817f 22778What compiler (and its version) was used to compile the program you are
c1468174 22779debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
3f94c067
BW
22780C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version}
22781to get this information; for other compilers, see the documentation for
22782those compilers.
c4555f82 22783
8e04817f
AC
22784@item
22785The command arguments you gave the compiler to compile your example and
22786observe the bug. For example, did you use @samp{-O}? To guarantee
22787you will not omit something important, list them all. A copy of the
22788Makefile (or the output from make) is sufficient.
c4555f82 22789
8e04817f
AC
22790If we were to try to guess the arguments, we would probably guess wrong
22791and then we might not encounter the bug.
c4555f82 22792
8e04817f
AC
22793@item
22794A complete input script, and all necessary source files, that will
22795reproduce the bug.
c4555f82 22796
8e04817f
AC
22797@item
22798A description of what behavior you observe that you believe is
22799incorrect. For example, ``It gets a fatal signal.''
c4555f82 22800
8e04817f
AC
22801Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
22802will certainly notice it. But if the bug is incorrect output, we might
22803not notice unless it is glaringly wrong. You might as well not give us
22804a chance to make a mistake.
c4555f82 22805
8e04817f
AC
22806Even if the problem you experience is a fatal signal, you should still
22807say so explicitly. Suppose something strange is going on, such as, your
22808copy of @value{GDBN} is out of synch, or you have encountered a bug in
22809the C library on your system. (This has happened!) Your copy might
22810crash and ours would not. If you told us to expect a crash, then when
22811ours fails to crash, we would know that the bug was not happening for
22812us. If you had not told us to expect a crash, then we would not be able
22813to draw any conclusion from our observations.
c4555f82 22814
e0c07bf0
MC
22815@pindex script
22816@cindex recording a session script
22817To collect all this information, you can use a session recording program
22818such as @command{script}, which is available on many Unix systems.
22819Just run your @value{GDBN} session inside @command{script} and then
22820include the @file{typescript} file with your bug report.
22821
22822Another way to record a @value{GDBN} session is to run @value{GDBN}
22823inside Emacs and then save the entire buffer to a file.
22824
8e04817f
AC
22825@item
22826If you wish to suggest changes to the @value{GDBN} source, send us context
22827diffs. If you even discuss something in the @value{GDBN} source, refer to
22828it by context, not by line number.
c4555f82 22829
8e04817f
AC
22830The line numbers in our development sources will not match those in your
22831sources. Your line numbers would convey no useful information to us.
c4555f82 22832
8e04817f 22833@end itemize
c4555f82 22834
8e04817f 22835Here are some things that are not necessary:
c4555f82 22836
8e04817f
AC
22837@itemize @bullet
22838@item
22839A description of the envelope of the bug.
c4555f82 22840
8e04817f
AC
22841Often people who encounter a bug spend a lot of time investigating
22842which changes to the input file will make the bug go away and which
22843changes will not affect it.
c4555f82 22844
8e04817f
AC
22845This is often time consuming and not very useful, because the way we
22846will find the bug is by running a single example under the debugger
22847with breakpoints, not by pure deduction from a series of examples.
22848We recommend that you save your time for something else.
c4555f82 22849
8e04817f
AC
22850Of course, if you can find a simpler example to report @emph{instead}
22851of the original one, that is a convenience for us. Errors in the
22852output will be easier to spot, running under the debugger will take
22853less time, and so on.
c4555f82 22854
8e04817f
AC
22855However, simplification is not vital; if you do not want to do this,
22856report the bug anyway and send us the entire test case you used.
c4555f82 22857
8e04817f
AC
22858@item
22859A patch for the bug.
c4555f82 22860
8e04817f
AC
22861A patch for the bug does help us if it is a good one. But do not omit
22862the necessary information, such as the test case, on the assumption that
22863a patch is all we need. We might see problems with your patch and decide
22864to fix the problem another way, or we might not understand it at all.
c4555f82 22865
8e04817f
AC
22866Sometimes with a program as complicated as @value{GDBN} it is very hard to
22867construct an example that will make the program follow a certain path
22868through the code. If you do not send us the example, we will not be able
22869to construct one, so we will not be able to verify that the bug is fixed.
c4555f82 22870
8e04817f
AC
22871And if we cannot understand what bug you are trying to fix, or why your
22872patch should be an improvement, we will not install it. A test case will
22873help us to understand.
c4555f82 22874
8e04817f
AC
22875@item
22876A guess about what the bug is or what it depends on.
c4555f82 22877
8e04817f
AC
22878Such guesses are usually wrong. Even we cannot guess right about such
22879things without first using the debugger to find the facts.
22880@end itemize
c4555f82 22881
8e04817f
AC
22882@c The readline documentation is distributed with the readline code
22883@c and consists of the two following files:
22884@c rluser.texinfo
22885@c inc-hist.texinfo
22886@c Use -I with makeinfo to point to the appropriate directory,
22887@c environment var TEXINPUTS with TeX.
5bdf8622 22888@include rluser.texi
8e04817f 22889@include inc-hist.texinfo
c4555f82 22890
c4555f82 22891
8e04817f
AC
22892@node Formatting Documentation
22893@appendix Formatting Documentation
c4555f82 22894
8e04817f
AC
22895@cindex @value{GDBN} reference card
22896@cindex reference card
22897The @value{GDBN} 4 release includes an already-formatted reference card, ready
22898for printing with PostScript or Ghostscript, in the @file{gdb}
22899subdirectory of the main source directory@footnote{In
22900@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
22901release.}. If you can use PostScript or Ghostscript with your printer,
22902you can print the reference card immediately with @file{refcard.ps}.
c4555f82 22903
8e04817f
AC
22904The release also includes the source for the reference card. You
22905can format it, using @TeX{}, by typing:
c4555f82 22906
474c8240 22907@smallexample
8e04817f 22908make refcard.dvi
474c8240 22909@end smallexample
c4555f82 22910
8e04817f
AC
22911The @value{GDBN} reference card is designed to print in @dfn{landscape}
22912mode on US ``letter'' size paper;
22913that is, on a sheet 11 inches wide by 8.5 inches
22914high. You will need to specify this form of printing as an option to
22915your @sc{dvi} output program.
c4555f82 22916
8e04817f 22917@cindex documentation
c4555f82 22918
8e04817f
AC
22919All the documentation for @value{GDBN} comes as part of the machine-readable
22920distribution. The documentation is written in Texinfo format, which is
22921a documentation system that uses a single source file to produce both
22922on-line information and a printed manual. You can use one of the Info
22923formatting commands to create the on-line version of the documentation
22924and @TeX{} (or @code{texi2roff}) to typeset the printed version.
c4555f82 22925
8e04817f
AC
22926@value{GDBN} includes an already formatted copy of the on-line Info
22927version of this manual in the @file{gdb} subdirectory. The main Info
22928file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
22929subordinate files matching @samp{gdb.info*} in the same directory. If
22930necessary, you can print out these files, or read them with any editor;
22931but they are easier to read using the @code{info} subsystem in @sc{gnu}
22932Emacs or the standalone @code{info} program, available as part of the
22933@sc{gnu} Texinfo distribution.
c4555f82 22934
8e04817f
AC
22935If you want to format these Info files yourself, you need one of the
22936Info formatting programs, such as @code{texinfo-format-buffer} or
22937@code{makeinfo}.
c4555f82 22938
8e04817f
AC
22939If you have @code{makeinfo} installed, and are in the top level
22940@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
22941version @value{GDBVN}), you can make the Info file by typing:
c4555f82 22942
474c8240 22943@smallexample
8e04817f
AC
22944cd gdb
22945make gdb.info
474c8240 22946@end smallexample
c4555f82 22947
8e04817f
AC
22948If you want to typeset and print copies of this manual, you need @TeX{},
22949a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
22950Texinfo definitions file.
c4555f82 22951
8e04817f
AC
22952@TeX{} is a typesetting program; it does not print files directly, but
22953produces output files called @sc{dvi} files. To print a typeset
22954document, you need a program to print @sc{dvi} files. If your system
22955has @TeX{} installed, chances are it has such a program. The precise
22956command to use depends on your system; @kbd{lpr -d} is common; another
22957(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
22958require a file name without any extension or a @samp{.dvi} extension.
c4555f82 22959
8e04817f
AC
22960@TeX{} also requires a macro definitions file called
22961@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
22962written in Texinfo format. On its own, @TeX{} cannot either read or
22963typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
22964and is located in the @file{gdb-@var{version-number}/texinfo}
22965directory.
c4555f82 22966
8e04817f 22967If you have @TeX{} and a @sc{dvi} printer program installed, you can
d3e8051b 22968typeset and print this manual. First switch to the @file{gdb}
8e04817f
AC
22969subdirectory of the main source directory (for example, to
22970@file{gdb-@value{GDBVN}/gdb}) and type:
c4555f82 22971
474c8240 22972@smallexample
8e04817f 22973make gdb.dvi
474c8240 22974@end smallexample
c4555f82 22975
8e04817f 22976Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c4555f82 22977
8e04817f
AC
22978@node Installing GDB
22979@appendix Installing @value{GDBN}
8e04817f 22980@cindex installation
c4555f82 22981
7fa2210b
DJ
22982@menu
22983* Requirements:: Requirements for building @value{GDBN}
db2e3e2e 22984* Running Configure:: Invoking the @value{GDBN} @file{configure} script
7fa2210b
DJ
22985* Separate Objdir:: Compiling @value{GDBN} in another directory
22986* Config Names:: Specifying names for hosts and targets
22987* Configure Options:: Summary of options for configure
22988@end menu
22989
22990@node Requirements
79a6e687 22991@section Requirements for Building @value{GDBN}
7fa2210b
DJ
22992@cindex building @value{GDBN}, requirements for
22993
22994Building @value{GDBN} requires various tools and packages to be available.
22995Other packages will be used only if they are found.
22996
79a6e687 22997@heading Tools/Packages Necessary for Building @value{GDBN}
7fa2210b
DJ
22998@table @asis
22999@item ISO C90 compiler
23000@value{GDBN} is written in ISO C90. It should be buildable with any
23001working C90 compiler, e.g.@: GCC.
23002
23003@end table
23004
79a6e687 23005@heading Tools/Packages Optional for Building @value{GDBN}
7fa2210b
DJ
23006@table @asis
23007@item Expat
123dc839 23008@anchor{Expat}
7fa2210b
DJ
23009@value{GDBN} can use the Expat XML parsing library. This library may be
23010included with your operating system distribution; if it is not, you
23011can get the latest version from @url{http://expat.sourceforge.net}.
db2e3e2e 23012The @file{configure} script will search for this library in several
7fa2210b
DJ
23013standard locations; if it is installed in an unusual path, you can
23014use the @option{--with-libexpat-prefix} option to specify its location.
23015
9cceb671
DJ
23016Expat is used for:
23017
23018@itemize @bullet
23019@item
23020Remote protocol memory maps (@pxref{Memory Map Format})
23021@item
23022Target descriptions (@pxref{Target Descriptions})
23023@item
23024Remote shared library lists (@pxref{Library List Format})
23025@item
23026MS-Windows shared libraries (@pxref{Shared Libraries})
23027@end itemize
7fa2210b 23028
31fffb02
CS
23029@item zlib
23030@cindex compressed debug sections
23031@value{GDBN} will use the @samp{zlib} library, if available, to read
23032compressed debug sections. Some linkers, such as GNU gold, are capable
23033of producing binaries with compressed debug sections. If @value{GDBN}
23034is compiled with @samp{zlib}, it will be able to read the debug
23035information in such binaries.
23036
23037The @samp{zlib} library is likely included with your operating system
23038distribution; if it is not, you can get the latest version from
23039@url{http://zlib.net}.
23040
7fa2210b
DJ
23041@end table
23042
23043@node Running Configure
db2e3e2e 23044@section Invoking the @value{GDBN} @file{configure} Script
7fa2210b 23045@cindex configuring @value{GDBN}
db2e3e2e 23046@value{GDBN} comes with a @file{configure} script that automates the process
8e04817f
AC
23047of preparing @value{GDBN} for installation; you can then use @code{make} to
23048build the @code{gdb} program.
23049@iftex
23050@c irrelevant in info file; it's as current as the code it lives with.
23051@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
23052look at the @file{README} file in the sources; we may have improved the
23053installation procedures since publishing this manual.}
23054@end iftex
c4555f82 23055
8e04817f
AC
23056The @value{GDBN} distribution includes all the source code you need for
23057@value{GDBN} in a single directory, whose name is usually composed by
23058appending the version number to @samp{gdb}.
c4555f82 23059
8e04817f
AC
23060For example, the @value{GDBN} version @value{GDBVN} distribution is in the
23061@file{gdb-@value{GDBVN}} directory. That directory contains:
c4555f82 23062
8e04817f
AC
23063@table @code
23064@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
23065script for configuring @value{GDBN} and all its supporting libraries
c4555f82 23066
8e04817f
AC
23067@item gdb-@value{GDBVN}/gdb
23068the source specific to @value{GDBN} itself
c4555f82 23069
8e04817f
AC
23070@item gdb-@value{GDBVN}/bfd
23071source for the Binary File Descriptor library
c906108c 23072
8e04817f
AC
23073@item gdb-@value{GDBVN}/include
23074@sc{gnu} include files
c906108c 23075
8e04817f
AC
23076@item gdb-@value{GDBVN}/libiberty
23077source for the @samp{-liberty} free software library
c906108c 23078
8e04817f
AC
23079@item gdb-@value{GDBVN}/opcodes
23080source for the library of opcode tables and disassemblers
c906108c 23081
8e04817f
AC
23082@item gdb-@value{GDBVN}/readline
23083source for the @sc{gnu} command-line interface
c906108c 23084
8e04817f
AC
23085@item gdb-@value{GDBVN}/glob
23086source for the @sc{gnu} filename pattern-matching subroutine
c906108c 23087
8e04817f
AC
23088@item gdb-@value{GDBVN}/mmalloc
23089source for the @sc{gnu} memory-mapped malloc package
23090@end table
c906108c 23091
db2e3e2e 23092The simplest way to configure and build @value{GDBN} is to run @file{configure}
8e04817f
AC
23093from the @file{gdb-@var{version-number}} source directory, which in
23094this example is the @file{gdb-@value{GDBVN}} directory.
c906108c 23095
8e04817f 23096First switch to the @file{gdb-@var{version-number}} source directory
db2e3e2e 23097if you are not already in it; then run @file{configure}. Pass the
8e04817f
AC
23098identifier for the platform on which @value{GDBN} will run as an
23099argument.
c906108c 23100
8e04817f 23101For example:
c906108c 23102
474c8240 23103@smallexample
8e04817f
AC
23104cd gdb-@value{GDBVN}
23105./configure @var{host}
23106make
474c8240 23107@end smallexample
c906108c 23108
8e04817f
AC
23109@noindent
23110where @var{host} is an identifier such as @samp{sun4} or
23111@samp{decstation}, that identifies the platform where @value{GDBN} will run.
db2e3e2e 23112(You can often leave off @var{host}; @file{configure} tries to guess the
8e04817f 23113correct value by examining your system.)
c906108c 23114
8e04817f
AC
23115Running @samp{configure @var{host}} and then running @code{make} builds the
23116@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
23117libraries, then @code{gdb} itself. The configured source files, and the
23118binaries, are left in the corresponding source directories.
c906108c 23119
8e04817f 23120@need 750
db2e3e2e 23121@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
8e04817f
AC
23122system does not recognize this automatically when you run a different
23123shell, you may need to run @code{sh} on it explicitly:
c906108c 23124
474c8240 23125@smallexample
8e04817f 23126sh configure @var{host}
474c8240 23127@end smallexample
c906108c 23128
db2e3e2e 23129If you run @file{configure} from a directory that contains source
8e04817f 23130directories for multiple libraries or programs, such as the
db2e3e2e
BW
23131@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN},
23132@file{configure}
8e04817f
AC
23133creates configuration files for every directory level underneath (unless
23134you tell it not to, with the @samp{--norecursion} option).
23135
db2e3e2e 23136You should run the @file{configure} script from the top directory in the
94e91d6d 23137source tree, the @file{gdb-@var{version-number}} directory. If you run
db2e3e2e 23138@file{configure} from one of the subdirectories, you will configure only
94e91d6d 23139that subdirectory. That is usually not what you want. In particular,
db2e3e2e 23140if you run the first @file{configure} from the @file{gdb} subdirectory
94e91d6d
MC
23141of the @file{gdb-@var{version-number}} directory, you will omit the
23142configuration of @file{bfd}, @file{readline}, and other sibling
23143directories of the @file{gdb} subdirectory. This leads to build errors
23144about missing include files such as @file{bfd/bfd.h}.
c906108c 23145
8e04817f
AC
23146You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
23147However, you should make sure that the shell on your path (named by
23148the @samp{SHELL} environment variable) is publicly readable. Remember
23149that @value{GDBN} uses the shell to start your program---some systems refuse to
23150let @value{GDBN} debug child processes whose programs are not readable.
c906108c 23151
8e04817f 23152@node Separate Objdir
79a6e687 23153@section Compiling @value{GDBN} in Another Directory
c906108c 23154
8e04817f
AC
23155If you want to run @value{GDBN} versions for several host or target machines,
23156you need a different @code{gdb} compiled for each combination of
db2e3e2e 23157host and target. @file{configure} is designed to make this easy by
8e04817f
AC
23158allowing you to generate each configuration in a separate subdirectory,
23159rather than in the source directory. If your @code{make} program
23160handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
23161@code{make} in each of these directories builds the @code{gdb}
23162program specified there.
c906108c 23163
db2e3e2e 23164To build @code{gdb} in a separate directory, run @file{configure}
8e04817f 23165with the @samp{--srcdir} option to specify where to find the source.
db2e3e2e
BW
23166(You also need to specify a path to find @file{configure}
23167itself from your working directory. If the path to @file{configure}
8e04817f
AC
23168would be the same as the argument to @samp{--srcdir}, you can leave out
23169the @samp{--srcdir} option; it is assumed.)
c906108c 23170
8e04817f
AC
23171For example, with version @value{GDBVN}, you can build @value{GDBN} in a
23172separate directory for a Sun 4 like this:
c906108c 23173
474c8240 23174@smallexample
8e04817f
AC
23175@group
23176cd gdb-@value{GDBVN}
23177mkdir ../gdb-sun4
23178cd ../gdb-sun4
23179../gdb-@value{GDBVN}/configure sun4
23180make
23181@end group
474c8240 23182@end smallexample
c906108c 23183
db2e3e2e 23184When @file{configure} builds a configuration using a remote source
8e04817f
AC
23185directory, it creates a tree for the binaries with the same structure
23186(and using the same names) as the tree under the source directory. In
23187the example, you'd find the Sun 4 library @file{libiberty.a} in the
23188directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
23189@file{gdb-sun4/gdb}.
c906108c 23190
94e91d6d
MC
23191Make sure that your path to the @file{configure} script has just one
23192instance of @file{gdb} in it. If your path to @file{configure} looks
23193like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
23194one subdirectory of @value{GDBN}, not the whole package. This leads to
23195build errors about missing include files such as @file{bfd/bfd.h}.
23196
8e04817f
AC
23197One popular reason to build several @value{GDBN} configurations in separate
23198directories is to configure @value{GDBN} for cross-compiling (where
23199@value{GDBN} runs on one machine---the @dfn{host}---while debugging
23200programs that run on another machine---the @dfn{target}).
23201You specify a cross-debugging target by
db2e3e2e 23202giving the @samp{--target=@var{target}} option to @file{configure}.
c906108c 23203
8e04817f
AC
23204When you run @code{make} to build a program or library, you must run
23205it in a configured directory---whatever directory you were in when you
db2e3e2e 23206called @file{configure} (or one of its subdirectories).
c906108c 23207
db2e3e2e 23208The @code{Makefile} that @file{configure} generates in each source
8e04817f
AC
23209directory also runs recursively. If you type @code{make} in a source
23210directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
23211directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
23212will build all the required libraries, and then build GDB.
c906108c 23213
8e04817f
AC
23214When you have multiple hosts or targets configured in separate
23215directories, you can run @code{make} on them in parallel (for example,
23216if they are NFS-mounted on each of the hosts); they will not interfere
23217with each other.
c906108c 23218
8e04817f 23219@node Config Names
79a6e687 23220@section Specifying Names for Hosts and Targets
c906108c 23221
db2e3e2e 23222The specifications used for hosts and targets in the @file{configure}
8e04817f
AC
23223script are based on a three-part naming scheme, but some short predefined
23224aliases are also supported. The full naming scheme encodes three pieces
23225of information in the following pattern:
c906108c 23226
474c8240 23227@smallexample
8e04817f 23228@var{architecture}-@var{vendor}-@var{os}
474c8240 23229@end smallexample
c906108c 23230
8e04817f
AC
23231For example, you can use the alias @code{sun4} as a @var{host} argument,
23232or as the value for @var{target} in a @code{--target=@var{target}}
23233option. The equivalent full name is @samp{sparc-sun-sunos4}.
c906108c 23234
db2e3e2e 23235The @file{configure} script accompanying @value{GDBN} does not provide
8e04817f 23236any query facility to list all supported host and target names or
db2e3e2e 23237aliases. @file{configure} calls the Bourne shell script
8e04817f
AC
23238@code{config.sub} to map abbreviations to full names; you can read the
23239script, if you wish, or you can use it to test your guesses on
23240abbreviations---for example:
c906108c 23241
8e04817f
AC
23242@smallexample
23243% sh config.sub i386-linux
23244i386-pc-linux-gnu
23245% sh config.sub alpha-linux
23246alpha-unknown-linux-gnu
23247% sh config.sub hp9k700
23248hppa1.1-hp-hpux
23249% sh config.sub sun4
23250sparc-sun-sunos4.1.1
23251% sh config.sub sun3
23252m68k-sun-sunos4.1.1
23253% sh config.sub i986v
23254Invalid configuration `i986v': machine `i986v' not recognized
23255@end smallexample
c906108c 23256
8e04817f
AC
23257@noindent
23258@code{config.sub} is also distributed in the @value{GDBN} source
23259directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
d700128c 23260
8e04817f 23261@node Configure Options
db2e3e2e 23262@section @file{configure} Options
c906108c 23263
db2e3e2e
BW
23264Here is a summary of the @file{configure} options and arguments that
23265are most often useful for building @value{GDBN}. @file{configure} also has
8e04817f 23266several other options not listed here. @inforef{What Configure
db2e3e2e 23267Does,,configure.info}, for a full explanation of @file{configure}.
c906108c 23268
474c8240 23269@smallexample
8e04817f
AC
23270configure @r{[}--help@r{]}
23271 @r{[}--prefix=@var{dir}@r{]}
23272 @r{[}--exec-prefix=@var{dir}@r{]}
23273 @r{[}--srcdir=@var{dirname}@r{]}
23274 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
23275 @r{[}--target=@var{target}@r{]}
23276 @var{host}
474c8240 23277@end smallexample
c906108c 23278
8e04817f
AC
23279@noindent
23280You may introduce options with a single @samp{-} rather than
23281@samp{--} if you prefer; but you may abbreviate option names if you use
23282@samp{--}.
c906108c 23283
8e04817f
AC
23284@table @code
23285@item --help
db2e3e2e 23286Display a quick summary of how to invoke @file{configure}.
c906108c 23287
8e04817f
AC
23288@item --prefix=@var{dir}
23289Configure the source to install programs and files under directory
23290@file{@var{dir}}.
c906108c 23291
8e04817f
AC
23292@item --exec-prefix=@var{dir}
23293Configure the source to install programs under directory
23294@file{@var{dir}}.
c906108c 23295
8e04817f
AC
23296@c avoid splitting the warning from the explanation:
23297@need 2000
23298@item --srcdir=@var{dirname}
23299@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
23300@code{make} that implements the @code{VPATH} feature.}@*
23301Use this option to make configurations in directories separate from the
23302@value{GDBN} source directories. Among other things, you can use this to
23303build (or maintain) several configurations simultaneously, in separate
db2e3e2e 23304directories. @file{configure} writes configuration-specific files in
8e04817f 23305the current directory, but arranges for them to use the source in the
db2e3e2e 23306directory @var{dirname}. @file{configure} creates directories under
8e04817f
AC
23307the working directory in parallel to the source directories below
23308@var{dirname}.
c906108c 23309
8e04817f 23310@item --norecursion
db2e3e2e 23311Configure only the directory level where @file{configure} is executed; do not
8e04817f 23312propagate configuration to subdirectories.
c906108c 23313
8e04817f
AC
23314@item --target=@var{target}
23315Configure @value{GDBN} for cross-debugging programs running on the specified
23316@var{target}. Without this option, @value{GDBN} is configured to debug
23317programs that run on the same machine (@var{host}) as @value{GDBN} itself.
c906108c 23318
8e04817f 23319There is no convenient way to generate a list of all available targets.
c906108c 23320
8e04817f
AC
23321@item @var{host} @dots{}
23322Configure @value{GDBN} to run on the specified @var{host}.
c906108c 23323
8e04817f
AC
23324There is no convenient way to generate a list of all available hosts.
23325@end table
c906108c 23326
8e04817f
AC
23327There are many other options available as well, but they are generally
23328needed for special purposes only.
c906108c 23329
8e04817f
AC
23330@node Maintenance Commands
23331@appendix Maintenance Commands
23332@cindex maintenance commands
23333@cindex internal commands
c906108c 23334
8e04817f 23335In addition to commands intended for @value{GDBN} users, @value{GDBN}
09d4efe1
EZ
23336includes a number of commands intended for @value{GDBN} developers,
23337that are not documented elsewhere in this manual. These commands are
da316a69
EZ
23338provided here for reference. (For commands that turn on debugging
23339messages, see @ref{Debugging Output}.)
c906108c 23340
8e04817f 23341@table @code
09d4efe1
EZ
23342@kindex maint agent
23343@item maint agent @var{expression}
23344Translate the given @var{expression} into remote agent bytecodes.
23345This command is useful for debugging the Agent Expression mechanism
23346(@pxref{Agent Expressions}).
23347
8e04817f
AC
23348@kindex maint info breakpoints
23349@item @anchor{maint info breakpoints}maint info breakpoints
23350Using the same format as @samp{info breakpoints}, display both the
23351breakpoints you've set explicitly, and those @value{GDBN} is using for
23352internal purposes. Internal breakpoints are shown with negative
23353breakpoint numbers. The type column identifies what kind of breakpoint
23354is shown:
c906108c 23355
8e04817f
AC
23356@table @code
23357@item breakpoint
23358Normal, explicitly set breakpoint.
c906108c 23359
8e04817f
AC
23360@item watchpoint
23361Normal, explicitly set watchpoint.
c906108c 23362
8e04817f
AC
23363@item longjmp
23364Internal breakpoint, used to handle correctly stepping through
23365@code{longjmp} calls.
c906108c 23366
8e04817f
AC
23367@item longjmp resume
23368Internal breakpoint at the target of a @code{longjmp}.
c906108c 23369
8e04817f
AC
23370@item until
23371Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
c906108c 23372
8e04817f
AC
23373@item finish
23374Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
c906108c 23375
8e04817f
AC
23376@item shlib events
23377Shared library events.
c906108c 23378
8e04817f 23379@end table
c906108c 23380
237fc4c9
PA
23381@kindex maint set can-use-displaced-stepping
23382@kindex maint show can-use-displaced-stepping
23383@cindex displaced stepping support
23384@cindex out-of-line single-stepping
23385@item maint set can-use-displaced-stepping
23386@itemx maint show can-use-displaced-stepping
23387Control whether or not @value{GDBN} will do @dfn{displaced stepping}
23388if the target supports it. The default is on. Displaced stepping is
23389a way to single-step over breakpoints without removing them from the
23390inferior, by executing an out-of-line copy of the instruction that was
23391originally at the breakpoint location. It is also known as
23392out-of-line single-stepping.
23393
09d4efe1
EZ
23394@kindex maint check-symtabs
23395@item maint check-symtabs
23396Check the consistency of psymtabs and symtabs.
23397
23398@kindex maint cplus first_component
23399@item maint cplus first_component @var{name}
23400Print the first C@t{++} class/namespace component of @var{name}.
23401
23402@kindex maint cplus namespace
23403@item maint cplus namespace
23404Print the list of possible C@t{++} namespaces.
23405
23406@kindex maint demangle
23407@item maint demangle @var{name}
d3e8051b 23408Demangle a C@t{++} or Objective-C mangled @var{name}.
09d4efe1
EZ
23409
23410@kindex maint deprecate
23411@kindex maint undeprecate
23412@cindex deprecated commands
23413@item maint deprecate @var{command} @r{[}@var{replacement}@r{]}
23414@itemx maint undeprecate @var{command}
23415Deprecate or undeprecate the named @var{command}. Deprecated commands
23416cause @value{GDBN} to issue a warning when you use them. The optional
23417argument @var{replacement} says which newer command should be used in
23418favor of the deprecated one; if it is given, @value{GDBN} will mention
23419the replacement as part of the warning.
23420
23421@kindex maint dump-me
23422@item maint dump-me
721c2651 23423@cindex @code{SIGQUIT} signal, dump core of @value{GDBN}
09d4efe1 23424Cause a fatal signal in the debugger and force it to dump its core.
721c2651
EZ
23425This is supported only on systems which support aborting a program
23426with the @code{SIGQUIT} signal.
09d4efe1 23427
8d30a00d
AC
23428@kindex maint internal-error
23429@kindex maint internal-warning
09d4efe1
EZ
23430@item maint internal-error @r{[}@var{message-text}@r{]}
23431@itemx maint internal-warning @r{[}@var{message-text}@r{]}
8d30a00d
AC
23432Cause @value{GDBN} to call the internal function @code{internal_error}
23433or @code{internal_warning} and hence behave as though an internal error
23434or internal warning has been detected. In addition to reporting the
23435internal problem, these functions give the user the opportunity to
23436either quit @value{GDBN} or create a core file of the current
23437@value{GDBN} session.
23438
09d4efe1
EZ
23439These commands take an optional parameter @var{message-text} that is
23440used as the text of the error or warning message.
23441
d3e8051b 23442Here's an example of using @code{internal-error}:
09d4efe1 23443
8d30a00d 23444@smallexample
f7dc1244 23445(@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
8d30a00d
AC
23446@dots{}/maint.c:121: internal-error: testing, 1, 2
23447A problem internal to GDB has been detected. Further
23448debugging may prove unreliable.
23449Quit this debugging session? (y or n) @kbd{n}
23450Create a core file? (y or n) @kbd{n}
f7dc1244 23451(@value{GDBP})
8d30a00d
AC
23452@end smallexample
23453
09d4efe1
EZ
23454@kindex maint packet
23455@item maint packet @var{text}
23456If @value{GDBN} is talking to an inferior via the serial protocol,
23457then this command sends the string @var{text} to the inferior, and
23458displays the response packet. @value{GDBN} supplies the initial
23459@samp{$} character, the terminating @samp{#} character, and the
23460checksum.
23461
23462@kindex maint print architecture
23463@item maint print architecture @r{[}@var{file}@r{]}
23464Print the entire architecture configuration. The optional argument
23465@var{file} names the file where the output goes.
8d30a00d 23466
81adfced
DJ
23467@kindex maint print c-tdesc
23468@item maint print c-tdesc
23469Print the current target description (@pxref{Target Descriptions}) as
23470a C source file. The created source file can be used in @value{GDBN}
23471when an XML parser is not available to parse the description.
23472
00905d52
AC
23473@kindex maint print dummy-frames
23474@item maint print dummy-frames
00905d52
AC
23475Prints the contents of @value{GDBN}'s internal dummy-frame stack.
23476
23477@smallexample
f7dc1244 23478(@value{GDBP}) @kbd{b add}
00905d52 23479@dots{}
f7dc1244 23480(@value{GDBP}) @kbd{print add(2,3)}
00905d52
AC
23481Breakpoint 2, add (a=2, b=3) at @dots{}
2348258 return (a + b);
23483The program being debugged stopped while in a function called from GDB.
23484@dots{}
f7dc1244 23485(@value{GDBP}) @kbd{maint print dummy-frames}
00905d52
AC
234860x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
23487 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@}
23488 call_lo=0x01014000 call_hi=0x01014001
f7dc1244 23489(@value{GDBP})
00905d52
AC
23490@end smallexample
23491
23492Takes an optional file parameter.
23493
0680b120
AC
23494@kindex maint print registers
23495@kindex maint print raw-registers
23496@kindex maint print cooked-registers
617073a9 23497@kindex maint print register-groups
09d4efe1
EZ
23498@item maint print registers @r{[}@var{file}@r{]}
23499@itemx maint print raw-registers @r{[}@var{file}@r{]}
23500@itemx maint print cooked-registers @r{[}@var{file}@r{]}
23501@itemx maint print register-groups @r{[}@var{file}@r{]}
0680b120
AC
23502Print @value{GDBN}'s internal register data structures.
23503
617073a9
AC
23504The command @code{maint print raw-registers} includes the contents of
23505the raw register cache; the command @code{maint print cooked-registers}
23506includes the (cooked) value of all registers; and the command
23507@code{maint print register-groups} includes the groups that each
23508register is a member of. @xref{Registers,, Registers, gdbint,
23509@value{GDBN} Internals}.
0680b120 23510
09d4efe1
EZ
23511These commands take an optional parameter, a file name to which to
23512write the information.
0680b120 23513
617073a9 23514@kindex maint print reggroups
09d4efe1
EZ
23515@item maint print reggroups @r{[}@var{file}@r{]}
23516Print @value{GDBN}'s internal register group data structures. The
23517optional argument @var{file} tells to what file to write the
23518information.
617073a9 23519
09d4efe1 23520The register groups info looks like this:
617073a9
AC
23521
23522@smallexample
f7dc1244 23523(@value{GDBP}) @kbd{maint print reggroups}
b383017d
RM
23524 Group Type
23525 general user
23526 float user
23527 all user
23528 vector user
23529 system user
23530 save internal
23531 restore internal
617073a9
AC
23532@end smallexample
23533
09d4efe1
EZ
23534@kindex flushregs
23535@item flushregs
23536This command forces @value{GDBN} to flush its internal register cache.
23537
23538@kindex maint print objfiles
23539@cindex info for known object files
23540@item maint print objfiles
23541Print a dump of all known object files. For each object file, this
23542command prints its name, address in memory, and all of its psymtabs
23543and symtabs.
23544
23545@kindex maint print statistics
23546@cindex bcache statistics
23547@item maint print statistics
23548This command prints, for each object file in the program, various data
23549about that object file followed by the byte cache (@dfn{bcache})
23550statistics for the object file. The objfile data includes the number
d3e8051b 23551of minimal, partial, full, and stabs symbols, the number of types
09d4efe1
EZ
23552defined by the objfile, the number of as yet unexpanded psym tables,
23553the number of line tables and string tables, and the amount of memory
23554used by the various tables. The bcache statistics include the counts,
23555sizes, and counts of duplicates of all and unique objects, max,
23556average, and median entry size, total memory used and its overhead and
23557savings, and various measures of the hash table size and chain
23558lengths.
23559
c7ba131e
JB
23560@kindex maint print target-stack
23561@cindex target stack description
23562@item maint print target-stack
23563A @dfn{target} is an interface between the debugger and a particular
23564kind of file or process. Targets can be stacked in @dfn{strata},
23565so that more than one target can potentially respond to a request.
23566In particular, memory accesses will walk down the stack of targets
23567until they find a target that is interested in handling that particular
23568address.
23569
23570This command prints a short description of each layer that was pushed on
23571the @dfn{target stack}, starting from the top layer down to the bottom one.
23572
09d4efe1
EZ
23573@kindex maint print type
23574@cindex type chain of a data type
23575@item maint print type @var{expr}
23576Print the type chain for a type specified by @var{expr}. The argument
23577can be either a type name or a symbol. If it is a symbol, the type of
23578that symbol is described. The type chain produced by this command is
23579a recursive definition of the data type as stored in @value{GDBN}'s
23580data structures, including its flags and contained types.
23581
23582@kindex maint set dwarf2 max-cache-age
23583@kindex maint show dwarf2 max-cache-age
23584@item maint set dwarf2 max-cache-age
23585@itemx maint show dwarf2 max-cache-age
23586Control the DWARF 2 compilation unit cache.
23587
23588@cindex DWARF 2 compilation units cache
23589In object files with inter-compilation-unit references, such as those
23590produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2
23591reader needs to frequently refer to previously read compilation units.
23592This setting controls how long a compilation unit will remain in the
23593cache if it is not referenced. A higher limit means that cached
23594compilation units will be stored in memory longer, and more total
23595memory will be used. Setting it to zero disables caching, which will
23596slow down @value{GDBN} startup, but reduce memory consumption.
23597
e7ba9c65
DJ
23598@kindex maint set profile
23599@kindex maint show profile
23600@cindex profiling GDB
23601@item maint set profile
23602@itemx maint show profile
23603Control profiling of @value{GDBN}.
23604
23605Profiling will be disabled until you use the @samp{maint set profile}
23606command to enable it. When you enable profiling, the system will begin
23607collecting timing and execution count data; when you disable profiling or
23608exit @value{GDBN}, the results will be written to a log file. Remember that
23609if you use profiling, @value{GDBN} will overwrite the profiling log file
23610(often called @file{gmon.out}). If you have a record of important profiling
23611data in a @file{gmon.out} file, be sure to move it to a safe location.
23612
23613Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
b383017d 23614compiled with the @samp{-pg} compiler option.
e7ba9c65 23615
b84876c2
PA
23616@kindex maint set linux-async
23617@kindex maint show linux-async
23618@cindex asynchronous support
23619@item maint set linux-async
23620@itemx maint show linux-async
23621Control the GNU/Linux native asynchronous support of @value{GDBN}.
23622
23623GNU/Linux native asynchronous support will be disabled until you use
23624the @samp{maint set linux-async} command to enable it.
23625
75c99385
PA
23626@kindex maint set remote-async
23627@kindex maint show remote-async
23628@cindex asynchronous support
23629@item maint set remote-async
23630@itemx maint show remote-async
23631Control the remote asynchronous support of @value{GDBN}.
23632
23633Remote asynchronous support will be disabled until you use
23634the @samp{maint set remote-async} command to enable it.
23635
09d4efe1
EZ
23636@kindex maint show-debug-regs
23637@cindex x86 hardware debug registers
23638@item maint show-debug-regs
23639Control whether to show variables that mirror the x86 hardware debug
23640registers. Use @code{ON} to enable, @code{OFF} to disable. If
3f94c067 23641enabled, the debug registers values are shown when @value{GDBN} inserts or
09d4efe1
EZ
23642removes a hardware breakpoint or watchpoint, and when the inferior
23643triggers a hardware-assisted breakpoint or watchpoint.
23644
23645@kindex maint space
23646@cindex memory used by commands
23647@item maint space
23648Control whether to display memory usage for each command. If set to a
23649nonzero value, @value{GDBN} will display how much memory each command
23650took, following the command's own output. This can also be requested
23651by invoking @value{GDBN} with the @option{--statistics} command-line
23652switch (@pxref{Mode Options}).
23653
23654@kindex maint time
23655@cindex time of command execution
23656@item maint time
23657Control whether to display the execution time for each command. If
23658set to a nonzero value, @value{GDBN} will display how much time it
23659took to execute each command, following the command's own output.
e2b7ddea
VP
23660The time is not printed for the commands that run the target, since
23661there's no mechanism currently to compute how much time was spend
23662by @value{GDBN} and how much time was spend by the program been debugged.
23663it's not possibly currently
09d4efe1
EZ
23664This can also be requested by invoking @value{GDBN} with the
23665@option{--statistics} command-line switch (@pxref{Mode Options}).
23666
23667@kindex maint translate-address
23668@item maint translate-address @r{[}@var{section}@r{]} @var{addr}
23669Find the symbol stored at the location specified by the address
23670@var{addr} and an optional section name @var{section}. If found,
23671@value{GDBN} prints the name of the closest symbol and an offset from
23672the symbol's location to the specified address. This is similar to
23673the @code{info address} command (@pxref{Symbols}), except that this
23674command also allows to find symbols in other sections.
ae038cb0 23675
8e04817f 23676@end table
c906108c 23677
9c16f35a
EZ
23678The following command is useful for non-interactive invocations of
23679@value{GDBN}, such as in the test suite.
23680
23681@table @code
23682@item set watchdog @var{nsec}
23683@kindex set watchdog
23684@cindex watchdog timer
23685@cindex timeout for commands
23686Set the maximum number of seconds @value{GDBN} will wait for the
23687target operation to finish. If this time expires, @value{GDBN}
23688reports and error and the command is aborted.
23689
23690@item show watchdog
23691Show the current setting of the target wait timeout.
23692@end table
c906108c 23693
e0ce93ac 23694@node Remote Protocol
8e04817f 23695@appendix @value{GDBN} Remote Serial Protocol
c906108c 23696
ee2d5c50
AC
23697@menu
23698* Overview::
23699* Packets::
23700* Stop Reply Packets::
23701* General Query Packets::
23702* Register Packet Format::
9d29849a 23703* Tracepoint Packets::
a6b151f1 23704* Host I/O Packets::
9a6253be 23705* Interrupts::
ee2d5c50 23706* Examples::
79a6e687 23707* File-I/O Remote Protocol Extension::
cfa9d6d9 23708* Library List Format::
79a6e687 23709* Memory Map Format::
ee2d5c50
AC
23710@end menu
23711
23712@node Overview
23713@section Overview
23714
8e04817f
AC
23715There may be occasions when you need to know something about the
23716protocol---for example, if there is only one serial port to your target
23717machine, you might want your program to do something special if it
23718recognizes a packet meant for @value{GDBN}.
c906108c 23719
d2c6833e 23720In the examples below, @samp{->} and @samp{<-} are used to indicate
bf06d120 23721transmitted and received data, respectively.
c906108c 23722
8e04817f
AC
23723@cindex protocol, @value{GDBN} remote serial
23724@cindex serial protocol, @value{GDBN} remote
23725@cindex remote serial protocol
23726All @value{GDBN} commands and responses (other than acknowledgments) are
23727sent as a @var{packet}. A @var{packet} is introduced with the character
23728@samp{$}, the actual @var{packet-data}, and the terminating character
23729@samp{#} followed by a two-digit @var{checksum}:
c906108c 23730
474c8240 23731@smallexample
8e04817f 23732@code{$}@var{packet-data}@code{#}@var{checksum}
474c8240 23733@end smallexample
8e04817f 23734@noindent
c906108c 23735
8e04817f
AC
23736@cindex checksum, for @value{GDBN} remote
23737@noindent
23738The two-digit @var{checksum} is computed as the modulo 256 sum of all
23739characters between the leading @samp{$} and the trailing @samp{#} (an
23740eight bit unsigned checksum).
c906108c 23741
8e04817f
AC
23742Implementors should note that prior to @value{GDBN} 5.0 the protocol
23743specification also included an optional two-digit @var{sequence-id}:
c906108c 23744
474c8240 23745@smallexample
8e04817f 23746@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
474c8240 23747@end smallexample
c906108c 23748
8e04817f
AC
23749@cindex sequence-id, for @value{GDBN} remote
23750@noindent
23751That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
23752has never output @var{sequence-id}s. Stubs that handle packets added
23753since @value{GDBN} 5.0 must not accept @var{sequence-id}.
c906108c 23754
8e04817f
AC
23755@cindex acknowledgment, for @value{GDBN} remote
23756When either the host or the target machine receives a packet, the first
23757response expected is an acknowledgment: either @samp{+} (to indicate
23758the package was received correctly) or @samp{-} (to request
23759retransmission):
c906108c 23760
474c8240 23761@smallexample
d2c6833e
AC
23762-> @code{$}@var{packet-data}@code{#}@var{checksum}
23763<- @code{+}
474c8240 23764@end smallexample
8e04817f 23765@noindent
53a5351d 23766
8e04817f
AC
23767The host (@value{GDBN}) sends @var{command}s, and the target (the
23768debugging stub incorporated in your program) sends a @var{response}. In
23769the case of step and continue @var{command}s, the response is only sent
23770when the operation has completed (the target has again stopped).
c906108c 23771
8e04817f
AC
23772@var{packet-data} consists of a sequence of characters with the
23773exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
23774exceptions).
c906108c 23775
ee2d5c50 23776@cindex remote protocol, field separator
0876f84a 23777Fields within the packet should be separated using @samp{,} @samp{;} or
8e04817f 23778@samp{:}. Except where otherwise noted all numbers are represented in
ee2d5c50 23779@sc{hex} with leading zeros suppressed.
c906108c 23780
8e04817f
AC
23781Implementors should note that prior to @value{GDBN} 5.0, the character
23782@samp{:} could not appear as the third character in a packet (as it
23783would potentially conflict with the @var{sequence-id}).
c906108c 23784
0876f84a
DJ
23785@cindex remote protocol, binary data
23786@anchor{Binary Data}
23787Binary data in most packets is encoded either as two hexadecimal
23788digits per byte of binary data. This allowed the traditional remote
23789protocol to work over connections which were only seven-bit clean.
23790Some packets designed more recently assume an eight-bit clean
23791connection, and use a more efficient encoding to send and receive
23792binary data.
23793
23794The binary data representation uses @code{7d} (@sc{ascii} @samp{@}})
23795as an escape character. Any escaped byte is transmitted as the escape
23796character followed by the original character XORed with @code{0x20}.
23797For example, the byte @code{0x7d} would be transmitted as the two
23798bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}),
23799@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii}
23800@samp{@}}) must always be escaped. Responses sent by the stub
23801must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it
23802is not interpreted as the start of a run-length encoded sequence
23803(described next).
23804
1d3811f6
DJ
23805Response @var{data} can be run-length encoded to save space.
23806Run-length encoding replaces runs of identical characters with one
23807instance of the repeated character, followed by a @samp{*} and a
23808repeat count. The repeat count is itself sent encoded, to avoid
23809binary characters in @var{data}: a value of @var{n} is sent as
23810@code{@var{n}+29}. For a repeat count greater or equal to 3, this
23811produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii}
23812code 32) for a repeat count of 3. (This is because run-length
23813encoding starts to win for counts 3 or more.) Thus, for example,
23814@samp{0* } is a run-length encoding of ``0000'': the space character
23815after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 =
238163}} more times.
23817
23818The printable characters @samp{#} and @samp{$} or with a numeric value
23819greater than 126 must not be used. Runs of six repeats (@samp{#}) or
23820seven repeats (@samp{$}) can be expanded using a repeat count of only
23821five (@samp{"}). For example, @samp{00000000} can be encoded as
23822@samp{0*"00}.
c906108c 23823
8e04817f
AC
23824The error response returned for some packets includes a two character
23825error number. That number is not well defined.
c906108c 23826
f8da2bff 23827@cindex empty response, for unsupported packets
8e04817f
AC
23828For any @var{command} not supported by the stub, an empty response
23829(@samp{$#00}) should be returned. That way it is possible to extend the
23830protocol. A newer @value{GDBN} can tell if a packet is supported based
23831on that response.
c906108c 23832
b383017d
RM
23833A stub is required to support the @samp{g}, @samp{G}, @samp{m}, @samp{M},
23834@samp{c}, and @samp{s} @var{command}s. All other @var{command}s are
8e04817f 23835optional.
c906108c 23836
ee2d5c50
AC
23837@node Packets
23838@section Packets
23839
23840The following table provides a complete list of all currently defined
23841@var{command}s and their corresponding response @var{data}.
79a6e687 23842@xref{File-I/O Remote Protocol Extension}, for details about the File
9c16f35a 23843I/O extension of the remote protocol.
ee2d5c50 23844
b8ff78ce
JB
23845Each packet's description has a template showing the packet's overall
23846syntax, followed by an explanation of the packet's meaning. We
23847include spaces in some of the templates for clarity; these are not
23848part of the packet's syntax. No @value{GDBN} packet uses spaces to
23849separate its components. For example, a template like @samp{foo
23850@var{bar} @var{baz}} describes a packet beginning with the three ASCII
23851bytes @samp{foo}, followed by a @var{bar}, followed directly by a
3f94c067 23852@var{baz}. @value{GDBN} does not transmit a space character between the
b8ff78ce
JB
23853@samp{foo} and the @var{bar}, or between the @var{bar} and the
23854@var{baz}.
23855
8ffe2530
JB
23856Note that all packet forms beginning with an upper- or lower-case
23857letter, other than those described here, are reserved for future use.
23858
b8ff78ce 23859Here are the packet descriptions.
ee2d5c50 23860
b8ff78ce 23861@table @samp
ee2d5c50 23862
b8ff78ce
JB
23863@item !
23864@cindex @samp{!} packet
2d717e4f 23865@anchor{extended mode}
8e04817f
AC
23866Enable extended mode. In extended mode, the remote server is made
23867persistent. The @samp{R} packet is used to restart the program being
23868debugged.
ee2d5c50
AC
23869
23870Reply:
23871@table @samp
23872@item OK
8e04817f 23873The remote target both supports and has enabled extended mode.
ee2d5c50 23874@end table
c906108c 23875
b8ff78ce
JB
23876@item ?
23877@cindex @samp{?} packet
ee2d5c50
AC
23878Indicate the reason the target halted. The reply is the same as for
23879step and continue.
c906108c 23880
ee2d5c50
AC
23881Reply:
23882@xref{Stop Reply Packets}, for the reply specifications.
23883
b8ff78ce
JB
23884@item A @var{arglen},@var{argnum},@var{arg},@dots{}
23885@cindex @samp{A} packet
23886Initialized @code{argv[]} array passed into program. @var{arglen}
23887specifies the number of bytes in the hex encoded byte stream
23888@var{arg}. See @code{gdbserver} for more details.
ee2d5c50
AC
23889
23890Reply:
23891@table @samp
23892@item OK
b8ff78ce
JB
23893The arguments were set.
23894@item E @var{NN}
23895An error occurred.
ee2d5c50
AC
23896@end table
23897
b8ff78ce
JB
23898@item b @var{baud}
23899@cindex @samp{b} packet
23900(Don't use this packet; its behavior is not well-defined.)
ee2d5c50
AC
23901Change the serial line speed to @var{baud}.
23902
23903JTC: @emph{When does the transport layer state change? When it's
23904received, or after the ACK is transmitted. In either case, there are
23905problems if the command or the acknowledgment packet is dropped.}
23906
23907Stan: @emph{If people really wanted to add something like this, and get
23908it working for the first time, they ought to modify ser-unix.c to send
23909some kind of out-of-band message to a specially-setup stub and have the
23910switch happen "in between" packets, so that from remote protocol's point
23911of view, nothing actually happened.}
23912
b8ff78ce
JB
23913@item B @var{addr},@var{mode}
23914@cindex @samp{B} packet
8e04817f 23915Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
2f870471
AC
23916breakpoint at @var{addr}.
23917
b8ff78ce 23918Don't use this packet. Use the @samp{Z} and @samp{z} packets instead
2f870471 23919(@pxref{insert breakpoint or watchpoint packet}).
c906108c 23920
4f553f88 23921@item c @r{[}@var{addr}@r{]}
b8ff78ce
JB
23922@cindex @samp{c} packet
23923Continue. @var{addr} is address to resume. If @var{addr} is omitted,
23924resume at current address.
c906108c 23925
ee2d5c50
AC
23926Reply:
23927@xref{Stop Reply Packets}, for the reply specifications.
23928
4f553f88 23929@item C @var{sig}@r{[};@var{addr}@r{]}
b8ff78ce 23930@cindex @samp{C} packet
8e04817f 23931Continue with signal @var{sig} (hex signal number). If
b8ff78ce 23932@samp{;@var{addr}} is omitted, resume at same address.
c906108c 23933
ee2d5c50
AC
23934Reply:
23935@xref{Stop Reply Packets}, for the reply specifications.
c906108c 23936
b8ff78ce
JB
23937@item d
23938@cindex @samp{d} packet
ee2d5c50
AC
23939Toggle debug flag.
23940
b8ff78ce
JB
23941Don't use this packet; instead, define a general set packet
23942(@pxref{General Query Packets}).
ee2d5c50 23943
b8ff78ce
JB
23944@item D
23945@cindex @samp{D} packet
ee2d5c50 23946Detach @value{GDBN} from the remote system. Sent to the remote target
07f31aa6 23947before @value{GDBN} disconnects via the @code{detach} command.
ee2d5c50
AC
23948
23949Reply:
23950@table @samp
10fac096
NW
23951@item OK
23952for success
b8ff78ce 23953@item E @var{NN}
10fac096 23954for an error
ee2d5c50 23955@end table
c906108c 23956
b8ff78ce
JB
23957@item F @var{RC},@var{EE},@var{CF};@var{XX}
23958@cindex @samp{F} packet
23959A reply from @value{GDBN} to an @samp{F} packet sent by the target.
23960This is part of the File-I/O protocol extension. @xref{File-I/O
79a6e687 23961Remote Protocol Extension}, for the specification.
ee2d5c50 23962
b8ff78ce 23963@item g
ee2d5c50 23964@anchor{read registers packet}
b8ff78ce 23965@cindex @samp{g} packet
ee2d5c50
AC
23966Read general registers.
23967
23968Reply:
23969@table @samp
23970@item @var{XX@dots{}}
8e04817f
AC
23971Each byte of register data is described by two hex digits. The bytes
23972with the register are transmitted in target byte order. The size of
b8ff78ce 23973each register and their position within the @samp{g} packet are
4a9bb1df
UW
23974determined by the @value{GDBN} internal gdbarch functions
23975@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The
b8ff78ce
JB
23976specification of several standard @samp{g} packets is specified below.
23977@item E @var{NN}
ee2d5c50
AC
23978for an error.
23979@end table
c906108c 23980
b8ff78ce
JB
23981@item G @var{XX@dots{}}
23982@cindex @samp{G} packet
23983Write general registers. @xref{read registers packet}, for a
23984description of the @var{XX@dots{}} data.
ee2d5c50
AC
23985
23986Reply:
23987@table @samp
23988@item OK
23989for success
b8ff78ce 23990@item E @var{NN}
ee2d5c50
AC
23991for an error
23992@end table
23993
b8ff78ce
JB
23994@item H @var{c} @var{t}
23995@cindex @samp{H} packet
8e04817f 23996Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
ee2d5c50
AC
23997@samp{G}, et.al.). @var{c} depends on the operation to be performed: it
23998should be @samp{c} for step and continue operations, @samp{g} for other
b8ff78ce
JB
23999operations. The thread designator @var{t} may be @samp{-1}, meaning all
24000the threads, a thread number, or @samp{0} which means pick any thread.
ee2d5c50
AC
24001
24002Reply:
24003@table @samp
24004@item OK
24005for success
b8ff78ce 24006@item E @var{NN}
ee2d5c50
AC
24007for an error
24008@end table
c906108c 24009
8e04817f
AC
24010@c FIXME: JTC:
24011@c 'H': How restrictive (or permissive) is the thread model. If a
24012@c thread is selected and stopped, are other threads allowed
24013@c to continue to execute? As I mentioned above, I think the
24014@c semantics of each command when a thread is selected must be
24015@c described. For example:
24016@c
24017@c 'g': If the stub supports threads and a specific thread is
24018@c selected, returns the register block from that thread;
24019@c otherwise returns current registers.
24020@c
24021@c 'G' If the stub supports threads and a specific thread is
24022@c selected, sets the registers of the register block of
24023@c that thread; otherwise sets current registers.
c906108c 24024
b8ff78ce 24025@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
ee2d5c50 24026@anchor{cycle step packet}
b8ff78ce
JB
24027@cindex @samp{i} packet
24028Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is
8e04817f
AC
24029present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
24030step starting at that address.
c906108c 24031
b8ff78ce
JB
24032@item I
24033@cindex @samp{I} packet
24034Signal, then cycle step. @xref{step with signal packet}. @xref{cycle
24035step packet}.
ee2d5c50 24036
b8ff78ce
JB
24037@item k
24038@cindex @samp{k} packet
24039Kill request.
c906108c 24040
ac282366 24041FIXME: @emph{There is no description of how to operate when a specific
ee2d5c50
AC
24042thread context has been selected (i.e.@: does 'k' kill only that
24043thread?)}.
c906108c 24044
b8ff78ce
JB
24045@item m @var{addr},@var{length}
24046@cindex @samp{m} packet
8e04817f 24047Read @var{length} bytes of memory starting at address @var{addr}.
fb031cdf
JB
24048Note that @var{addr} may not be aligned to any particular boundary.
24049
24050The stub need not use any particular size or alignment when gathering
24051data from memory for the response; even if @var{addr} is word-aligned
24052and @var{length} is a multiple of the word size, the stub is free to
24053use byte accesses, or not. For this reason, this packet may not be
24054suitable for accessing memory-mapped I/O devices.
c43c5473
JB
24055@cindex alignment of remote memory accesses
24056@cindex size of remote memory accesses
24057@cindex memory, alignment and size of remote accesses
c906108c 24058
ee2d5c50
AC
24059Reply:
24060@table @samp
24061@item @var{XX@dots{}}
599b237a 24062Memory contents; each byte is transmitted as a two-digit hexadecimal
b8ff78ce
JB
24063number. The reply may contain fewer bytes than requested if the
24064server was able to read only part of the region of memory.
24065@item E @var{NN}
ee2d5c50
AC
24066@var{NN} is errno
24067@end table
24068
b8ff78ce
JB
24069@item M @var{addr},@var{length}:@var{XX@dots{}}
24070@cindex @samp{M} packet
8e04817f 24071Write @var{length} bytes of memory starting at address @var{addr}.
b8ff78ce 24072@var{XX@dots{}} is the data; each byte is transmitted as a two-digit
599b237a 24073hexadecimal number.
ee2d5c50
AC
24074
24075Reply:
24076@table @samp
24077@item OK
24078for success
b8ff78ce 24079@item E @var{NN}
8e04817f
AC
24080for an error (this includes the case where only part of the data was
24081written).
ee2d5c50 24082@end table
c906108c 24083
b8ff78ce
JB
24084@item p @var{n}
24085@cindex @samp{p} packet
24086Read the value of register @var{n}; @var{n} is in hex.
2e868123
AC
24087@xref{read registers packet}, for a description of how the returned
24088register value is encoded.
ee2d5c50
AC
24089
24090Reply:
24091@table @samp
2e868123
AC
24092@item @var{XX@dots{}}
24093the register's value
b8ff78ce 24094@item E @var{NN}
2e868123
AC
24095for an error
24096@item
24097Indicating an unrecognized @var{query}.
ee2d5c50
AC
24098@end table
24099
b8ff78ce 24100@item P @var{n@dots{}}=@var{r@dots{}}
ee2d5c50 24101@anchor{write register packet}
b8ff78ce
JB
24102@cindex @samp{P} packet
24103Write register @var{n@dots{}} with value @var{r@dots{}}. The register
599b237a 24104number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex
8e04817f 24105digits for each byte in the register (target byte order).
c906108c 24106
ee2d5c50
AC
24107Reply:
24108@table @samp
24109@item OK
24110for success
b8ff78ce 24111@item E @var{NN}
ee2d5c50
AC
24112for an error
24113@end table
24114
5f3bebba
JB
24115@item q @var{name} @var{params}@dots{}
24116@itemx Q @var{name} @var{params}@dots{}
b8ff78ce 24117@cindex @samp{q} packet
b8ff78ce 24118@cindex @samp{Q} packet
5f3bebba
JB
24119General query (@samp{q}) and set (@samp{Q}). These packets are
24120described fully in @ref{General Query Packets}.
c906108c 24121
b8ff78ce
JB
24122@item r
24123@cindex @samp{r} packet
8e04817f 24124Reset the entire system.
c906108c 24125
b8ff78ce 24126Don't use this packet; use the @samp{R} packet instead.
ee2d5c50 24127
b8ff78ce
JB
24128@item R @var{XX}
24129@cindex @samp{R} packet
8e04817f 24130Restart the program being debugged. @var{XX}, while needed, is ignored.
2d717e4f 24131This packet is only available in extended mode (@pxref{extended mode}).
ee2d5c50 24132
8e04817f 24133The @samp{R} packet has no reply.
ee2d5c50 24134
4f553f88 24135@item s @r{[}@var{addr}@r{]}
b8ff78ce
JB
24136@cindex @samp{s} packet
24137Single step. @var{addr} is the address at which to resume. If
24138@var{addr} is omitted, resume at same address.
c906108c 24139
ee2d5c50
AC
24140Reply:
24141@xref{Stop Reply Packets}, for the reply specifications.
24142
4f553f88 24143@item S @var{sig}@r{[};@var{addr}@r{]}
ee2d5c50 24144@anchor{step with signal packet}
b8ff78ce
JB
24145@cindex @samp{S} packet
24146Step with signal. This is analogous to the @samp{C} packet, but
24147requests a single-step, rather than a normal resumption of execution.
c906108c 24148
ee2d5c50
AC
24149Reply:
24150@xref{Stop Reply Packets}, for the reply specifications.
24151
b8ff78ce
JB
24152@item t @var{addr}:@var{PP},@var{MM}
24153@cindex @samp{t} packet
8e04817f 24154Search backwards starting at address @var{addr} for a match with pattern
ee2d5c50
AC
24155@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes.
24156@var{addr} must be at least 3 digits.
c906108c 24157
b8ff78ce
JB
24158@item T @var{XX}
24159@cindex @samp{T} packet
ee2d5c50 24160Find out if the thread XX is alive.
c906108c 24161
ee2d5c50
AC
24162Reply:
24163@table @samp
24164@item OK
24165thread is still alive
b8ff78ce 24166@item E @var{NN}
ee2d5c50
AC
24167thread is dead
24168@end table
24169
b8ff78ce
JB
24170@item v
24171Packets starting with @samp{v} are identified by a multi-letter name,
24172up to the first @samp{;} or @samp{?} (or the end of the packet).
86d30acc 24173
2d717e4f
DJ
24174@item vAttach;@var{pid}
24175@cindex @samp{vAttach} packet
24176Attach to a new process with the specified process ID. @var{pid} is a
d0d064df
PA
24177hexadecimal integer identifying the process. The attached process is
24178stopped.
2d717e4f
DJ
24179
24180This packet is only available in extended mode (@pxref{extended mode}).
24181
24182Reply:
24183@table @samp
24184@item E @var{nn}
24185for an error
24186@item @r{Any stop packet}
24187for success (@pxref{Stop Reply Packets})
24188@end table
24189
b8ff78ce
JB
24190@item vCont@r{[};@var{action}@r{[}:@var{tid}@r{]]}@dots{}
24191@cindex @samp{vCont} packet
24192Resume the inferior, specifying different actions for each thread.
86d30acc
DJ
24193If an action is specified with no @var{tid}, then it is applied to any
24194threads that don't have a specific action specified; if no default action is
24195specified then other threads should remain stopped. Specifying multiple
24196default actions is an error; specifying no actions is also an error.
24197Thread IDs are specified in hexadecimal. Currently supported actions are:
24198
b8ff78ce 24199@table @samp
86d30acc
DJ
24200@item c
24201Continue.
b8ff78ce 24202@item C @var{sig}
86d30acc
DJ
24203Continue with signal @var{sig}. @var{sig} should be two hex digits.
24204@item s
24205Step.
b8ff78ce 24206@item S @var{sig}
86d30acc
DJ
24207Step with signal @var{sig}. @var{sig} should be two hex digits.
24208@end table
24209
24210The optional @var{addr} argument normally associated with these packets is
b8ff78ce 24211not supported in @samp{vCont}.
86d30acc
DJ
24212
24213Reply:
24214@xref{Stop Reply Packets}, for the reply specifications.
24215
b8ff78ce
JB
24216@item vCont?
24217@cindex @samp{vCont?} packet
d3e8051b 24218Request a list of actions supported by the @samp{vCont} packet.
86d30acc
DJ
24219
24220Reply:
24221@table @samp
b8ff78ce
JB
24222@item vCont@r{[};@var{action}@dots{}@r{]}
24223The @samp{vCont} packet is supported. Each @var{action} is a supported
24224command in the @samp{vCont} packet.
86d30acc 24225@item
b8ff78ce 24226The @samp{vCont} packet is not supported.
86d30acc 24227@end table
ee2d5c50 24228
a6b151f1
DJ
24229@item vFile:@var{operation}:@var{parameter}@dots{}
24230@cindex @samp{vFile} packet
24231Perform a file operation on the target system. For details,
24232see @ref{Host I/O Packets}.
24233
68437a39
DJ
24234@item vFlashErase:@var{addr},@var{length}
24235@cindex @samp{vFlashErase} packet
24236Direct the stub to erase @var{length} bytes of flash starting at
24237@var{addr}. The region may enclose any number of flash blocks, but
24238its start and end must fall on block boundaries, as indicated by the
79a6e687
BW
24239flash block size appearing in the memory map (@pxref{Memory Map
24240Format}). @value{GDBN} groups flash memory programming operations
68437a39
DJ
24241together, and sends a @samp{vFlashDone} request after each group; the
24242stub is allowed to delay erase operation until the @samp{vFlashDone}
24243packet is received.
24244
24245Reply:
24246@table @samp
24247@item OK
24248for success
24249@item E @var{NN}
24250for an error
24251@end table
24252
24253@item vFlashWrite:@var{addr}:@var{XX@dots{}}
24254@cindex @samp{vFlashWrite} packet
24255Direct the stub to write data to flash address @var{addr}. The data
24256is passed in binary form using the same encoding as for the @samp{X}
24257packet (@pxref{Binary Data}). The memory ranges specified by
24258@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
24259not overlap, and must appear in order of increasing addresses
24260(although @samp{vFlashErase} packets for higher addresses may already
24261have been received; the ordering is guaranteed only between
24262@samp{vFlashWrite} packets). If a packet writes to an address that was
24263neither erased by a preceding @samp{vFlashErase} packet nor by some other
24264target-specific method, the results are unpredictable.
24265
24266
24267Reply:
24268@table @samp
24269@item OK
24270for success
24271@item E.memtype
24272for vFlashWrite addressing non-flash memory
24273@item E @var{NN}
24274for an error
24275@end table
24276
24277@item vFlashDone
24278@cindex @samp{vFlashDone} packet
24279Indicate to the stub that flash programming operation is finished.
24280The stub is permitted to delay or batch the effects of a group of
24281@samp{vFlashErase} and @samp{vFlashWrite} packets until a
24282@samp{vFlashDone} packet is received. The contents of the affected
24283regions of flash memory are unpredictable until the @samp{vFlashDone}
24284request is completed.
24285
2d717e4f
DJ
24286@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{}
24287@cindex @samp{vRun} packet
24288Run the program @var{filename}, passing it each @var{argument} on its
24289command line. The file and arguments are hex-encoded strings. If
24290@var{filename} is an empty string, the stub may use a default program
24291(e.g.@: the last program run). The program is created in the stopped
9b562ab8 24292state.
2d717e4f
DJ
24293
24294This packet is only available in extended mode (@pxref{extended mode}).
24295
24296Reply:
24297@table @samp
24298@item E @var{nn}
24299for an error
24300@item @r{Any stop packet}
24301for success (@pxref{Stop Reply Packets})
24302@end table
24303
b8ff78ce 24304@item X @var{addr},@var{length}:@var{XX@dots{}}
9a6253be 24305@anchor{X packet}
b8ff78ce
JB
24306@cindex @samp{X} packet
24307Write data to memory, where the data is transmitted in binary.
24308@var{addr} is address, @var{length} is number of bytes,
0876f84a 24309@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}).
c906108c 24310
ee2d5c50
AC
24311Reply:
24312@table @samp
24313@item OK
24314for success
b8ff78ce 24315@item E @var{NN}
ee2d5c50
AC
24316for an error
24317@end table
24318
b8ff78ce
JB
24319@item z @var{type},@var{addr},@var{length}
24320@itemx Z @var{type},@var{addr},@var{length}
2f870471 24321@anchor{insert breakpoint or watchpoint packet}
b8ff78ce
JB
24322@cindex @samp{z} packet
24323@cindex @samp{Z} packets
24324Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
2f870471
AC
24325watchpoint starting at address @var{address} and covering the next
24326@var{length} bytes.
ee2d5c50 24327
2f870471
AC
24328Each breakpoint and watchpoint packet @var{type} is documented
24329separately.
24330
512217c7
AC
24331@emph{Implementation notes: A remote target shall return an empty string
24332for an unrecognized breakpoint or watchpoint packet @var{type}. A
24333remote target shall support either both or neither of a given
b8ff78ce 24334@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To
2f870471
AC
24335avoid potential problems with duplicate packets, the operations should
24336be implemented in an idempotent way.}
24337
b8ff78ce
JB
24338@item z0,@var{addr},@var{length}
24339@itemx Z0,@var{addr},@var{length}
24340@cindex @samp{z0} packet
24341@cindex @samp{Z0} packet
24342Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address
24343@var{addr} of size @var{length}.
2f870471
AC
24344
24345A memory breakpoint is implemented by replacing the instruction at
24346@var{addr} with a software breakpoint or trap instruction. The
b8ff78ce 24347@var{length} is used by targets that indicates the size of the
2f870471
AC
24348breakpoint (in bytes) that should be inserted (e.g., the @sc{arm} and
24349@sc{mips} can insert either a 2 or 4 byte breakpoint).
c906108c 24350
2f870471
AC
24351@emph{Implementation note: It is possible for a target to copy or move
24352code that contains memory breakpoints (e.g., when implementing
24353overlays). The behavior of this packet, in the presence of such a
24354target, is not defined.}
c906108c 24355
ee2d5c50
AC
24356Reply:
24357@table @samp
2f870471
AC
24358@item OK
24359success
24360@item
24361not supported
b8ff78ce 24362@item E @var{NN}
ee2d5c50 24363for an error
2f870471
AC
24364@end table
24365
b8ff78ce
JB
24366@item z1,@var{addr},@var{length}
24367@itemx Z1,@var{addr},@var{length}
24368@cindex @samp{z1} packet
24369@cindex @samp{Z1} packet
24370Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
24371address @var{addr} of size @var{length}.
2f870471
AC
24372
24373A hardware breakpoint is implemented using a mechanism that is not
24374dependant on being able to modify the target's memory.
24375
24376@emph{Implementation note: A hardware breakpoint is not affected by code
24377movement.}
24378
24379Reply:
24380@table @samp
ee2d5c50 24381@item OK
2f870471
AC
24382success
24383@item
24384not supported
b8ff78ce 24385@item E @var{NN}
2f870471
AC
24386for an error
24387@end table
24388
b8ff78ce
JB
24389@item z2,@var{addr},@var{length}
24390@itemx Z2,@var{addr},@var{length}
24391@cindex @samp{z2} packet
24392@cindex @samp{Z2} packet
24393Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint.
2f870471
AC
24394
24395Reply:
24396@table @samp
24397@item OK
24398success
24399@item
24400not supported
b8ff78ce 24401@item E @var{NN}
2f870471
AC
24402for an error
24403@end table
24404
b8ff78ce
JB
24405@item z3,@var{addr},@var{length}
24406@itemx Z3,@var{addr},@var{length}
24407@cindex @samp{z3} packet
24408@cindex @samp{Z3} packet
24409Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint.
2f870471
AC
24410
24411Reply:
24412@table @samp
24413@item OK
24414success
24415@item
24416not supported
b8ff78ce 24417@item E @var{NN}
2f870471
AC
24418for an error
24419@end table
24420
b8ff78ce
JB
24421@item z4,@var{addr},@var{length}
24422@itemx Z4,@var{addr},@var{length}
24423@cindex @samp{z4} packet
24424@cindex @samp{Z4} packet
24425Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint.
2f870471
AC
24426
24427Reply:
24428@table @samp
24429@item OK
24430success
24431@item
24432not supported
b8ff78ce 24433@item E @var{NN}
2f870471 24434for an error
ee2d5c50
AC
24435@end table
24436
24437@end table
c906108c 24438
ee2d5c50
AC
24439@node Stop Reply Packets
24440@section Stop Reply Packets
24441@cindex stop reply packets
c906108c 24442
8e04817f
AC
24443The @samp{C}, @samp{c}, @samp{S}, @samp{s} and @samp{?} packets can
24444receive any of the below as a reply. In the case of the @samp{C},
24445@samp{c}, @samp{S} and @samp{s} packets, that reply is only returned
b8ff78ce 24446when the target halts. In the below the exact meaning of @dfn{signal
89be2091
DJ
24447number} is defined by the header @file{include/gdb/signals.h} in the
24448@value{GDBN} source code.
c906108c 24449
b8ff78ce
JB
24450As in the description of request packets, we include spaces in the
24451reply templates for clarity; these are not part of the reply packet's
24452syntax. No @value{GDBN} stop reply packet uses spaces to separate its
24453components.
c906108c 24454
b8ff78ce 24455@table @samp
ee2d5c50 24456
b8ff78ce 24457@item S @var{AA}
599b237a 24458The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
24459number). This is equivalent to a @samp{T} response with no
24460@var{n}:@var{r} pairs.
c906108c 24461
b8ff78ce
JB
24462@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
24463@cindex @samp{T} packet reply
599b237a 24464The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
24465number). This is equivalent to an @samp{S} response, except that the
24466@samp{@var{n}:@var{r}} pairs can carry values of important registers
24467and other information directly in the stop reply packet, reducing
24468round-trip latency. Single-step and breakpoint traps are reported
24469this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows:
cfa9d6d9
DJ
24470
24471@itemize @bullet
b8ff78ce 24472@item
599b237a 24473If @var{n} is a hexadecimal number, it is a register number, and the
b8ff78ce
JB
24474corresponding @var{r} gives that register's value. @var{r} is a
24475series of bytes in target byte order, with each byte given by a
24476two-digit hex number.
cfa9d6d9 24477
b8ff78ce
JB
24478@item
24479If @var{n} is @samp{thread}, then @var{r} is the thread process ID, in
24480hex.
cfa9d6d9 24481
b8ff78ce 24482@item
cfa9d6d9
DJ
24483If @var{n} is a recognized @dfn{stop reason}, it describes a more
24484specific event that stopped the target. The currently defined stop
24485reasons are listed below. @var{aa} should be @samp{05}, the trap
24486signal. At most one stop reason should be present.
24487
b8ff78ce
JB
24488@item
24489Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
24490and go on to the next; this allows us to extend the protocol in the
24491future.
cfa9d6d9
DJ
24492@end itemize
24493
24494The currently defined stop reasons are:
24495
24496@table @samp
24497@item watch
24498@itemx rwatch
24499@itemx awatch
24500The packet indicates a watchpoint hit, and @var{r} is the data address, in
24501hex.
24502
24503@cindex shared library events, remote reply
24504@item library
24505The packet indicates that the loaded libraries have changed.
24506@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new
24507list of loaded libraries. @var{r} is ignored.
24508@end table
ee2d5c50 24509
b8ff78ce 24510@item W @var{AA}
8e04817f 24511The process exited, and @var{AA} is the exit status. This is only
ee2d5c50
AC
24512applicable to certain targets.
24513
b8ff78ce 24514@item X @var{AA}
8e04817f 24515The process terminated with signal @var{AA}.
c906108c 24516
b8ff78ce
JB
24517@item O @var{XX}@dots{}
24518@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
24519written as the program's console output. This can happen at any time
24520while the program is running and the debugger should continue to wait
24521for @samp{W}, @samp{T}, etc.
0ce1b118 24522
b8ff78ce 24523@item F @var{call-id},@var{parameter}@dots{}
0ce1b118
CV
24524@var{call-id} is the identifier which says which host system call should
24525be called. This is just the name of the function. Translation into the
24526correct system call is only applicable as it's defined in @value{GDBN}.
79a6e687 24527@xref{File-I/O Remote Protocol Extension}, for a list of implemented
0ce1b118
CV
24528system calls.
24529
b8ff78ce
JB
24530@samp{@var{parameter}@dots{}} is a list of parameters as defined for
24531this very system call.
0ce1b118 24532
b8ff78ce
JB
24533The target replies with this packet when it expects @value{GDBN} to
24534call a host system call on behalf of the target. @value{GDBN} replies
24535with an appropriate @samp{F} packet and keeps up waiting for the next
24536reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S}
79a6e687
BW
24537or @samp{s} action is expected to be continued. @xref{File-I/O Remote
24538Protocol Extension}, for more details.
0ce1b118 24539
ee2d5c50
AC
24540@end table
24541
24542@node General Query Packets
24543@section General Query Packets
9c16f35a 24544@cindex remote query requests
c906108c 24545
5f3bebba
JB
24546Packets starting with @samp{q} are @dfn{general query packets};
24547packets starting with @samp{Q} are @dfn{general set packets}. General
24548query and set packets are a semi-unified form for retrieving and
24549sending information to and from the stub.
24550
24551The initial letter of a query or set packet is followed by a name
24552indicating what sort of thing the packet applies to. For example,
24553@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol
24554definitions with the stub. These packet names follow some
24555conventions:
24556
24557@itemize @bullet
24558@item
24559The name must not contain commas, colons or semicolons.
24560@item
24561Most @value{GDBN} query and set packets have a leading upper case
24562letter.
24563@item
24564The names of custom vendor packets should use a company prefix, in
24565lower case, followed by a period. For example, packets designed at
24566the Acme Corporation might begin with @samp{qacme.foo} (for querying
24567foos) or @samp{Qacme.bar} (for setting bars).
24568@end itemize
24569
aa56d27a
JB
24570The name of a query or set packet should be separated from any
24571parameters by a @samp{:}; the parameters themselves should be
24572separated by @samp{,} or @samp{;}. Stubs must be careful to match the
369af7bd
DJ
24573full packet name, and check for a separator or the end of the packet,
24574in case two packet names share a common prefix. New packets should not begin
24575with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL}
24576packets predate these conventions, and have arguments without any terminator
24577for the packet name; we suspect they are in widespread use in places that
24578are difficult to upgrade. The @samp{qC} packet has no arguments, but some
24579existing stubs (e.g.@: RedBoot) are known to not check for the end of the
24580packet.}.
c906108c 24581
b8ff78ce
JB
24582Like the descriptions of the other packets, each description here
24583has a template showing the packet's overall syntax, followed by an
24584explanation of the packet's meaning. We include spaces in some of the
24585templates for clarity; these are not part of the packet's syntax. No
24586@value{GDBN} packet uses spaces to separate its components.
24587
5f3bebba
JB
24588Here are the currently defined query and set packets:
24589
b8ff78ce 24590@table @samp
c906108c 24591
b8ff78ce 24592@item qC
9c16f35a 24593@cindex current thread, remote request
b8ff78ce 24594@cindex @samp{qC} packet
ee2d5c50
AC
24595Return the current thread id.
24596
24597Reply:
24598@table @samp
b8ff78ce 24599@item QC @var{pid}
599b237a 24600Where @var{pid} is an unsigned hexadecimal process id.
b8ff78ce 24601@item @r{(anything else)}
ee2d5c50
AC
24602Any other reply implies the old pid.
24603@end table
24604
b8ff78ce 24605@item qCRC:@var{addr},@var{length}
ff2587ec 24606@cindex CRC of memory block, remote request
b8ff78ce
JB
24607@cindex @samp{qCRC} packet
24608Compute the CRC checksum of a block of memory.
ff2587ec
WZ
24609Reply:
24610@table @samp
b8ff78ce 24611@item E @var{NN}
ff2587ec 24612An error (such as memory fault)
b8ff78ce
JB
24613@item C @var{crc32}
24614The specified memory region's checksum is @var{crc32}.
ff2587ec
WZ
24615@end table
24616
b8ff78ce
JB
24617@item qfThreadInfo
24618@itemx qsThreadInfo
9c16f35a 24619@cindex list active threads, remote request
b8ff78ce
JB
24620@cindex @samp{qfThreadInfo} packet
24621@cindex @samp{qsThreadInfo} packet
24622Obtain a list of all active thread ids from the target (OS). Since there
8e04817f
AC
24623may be too many active threads to fit into one reply packet, this query
24624works iteratively: it may require more than one query/reply sequence to
24625obtain the entire list of threads. The first query of the sequence will
b8ff78ce
JB
24626be the @samp{qfThreadInfo} query; subsequent queries in the
24627sequence will be the @samp{qsThreadInfo} query.
ee2d5c50 24628
b8ff78ce 24629NOTE: This packet replaces the @samp{qL} query (see below).
ee2d5c50
AC
24630
24631Reply:
24632@table @samp
b8ff78ce 24633@item m @var{id}
ee2d5c50 24634A single thread id
b8ff78ce 24635@item m @var{id},@var{id}@dots{}
ee2d5c50 24636a comma-separated list of thread ids
b8ff78ce
JB
24637@item l
24638(lower case letter @samp{L}) denotes end of list.
ee2d5c50
AC
24639@end table
24640
24641In response to each query, the target will reply with a list of one or
e1aac25b
JB
24642more thread ids, in big-endian unsigned hex, separated by commas.
24643@value{GDBN} will respond to each reply with a request for more thread
b8ff78ce
JB
24644ids (using the @samp{qs} form of the query), until the target responds
24645with @samp{l} (lower-case el, for @dfn{last}).
c906108c 24646
b8ff78ce 24647@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
ff2587ec 24648@cindex get thread-local storage address, remote request
b8ff78ce 24649@cindex @samp{qGetTLSAddr} packet
ff2587ec
WZ
24650Fetch the address associated with thread local storage specified
24651by @var{thread-id}, @var{offset}, and @var{lm}.
24652
24653@var{thread-id} is the (big endian, hex encoded) thread id associated with the
24654thread for which to fetch the TLS address.
24655
24656@var{offset} is the (big endian, hex encoded) offset associated with the
24657thread local variable. (This offset is obtained from the debug
24658information associated with the variable.)
24659
db2e3e2e 24660@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the
ff2587ec
WZ
24661the load module associated with the thread local storage. For example,
24662a @sc{gnu}/Linux system will pass the link map address of the shared
24663object associated with the thread local storage under consideration.
24664Other operating environments may choose to represent the load module
24665differently, so the precise meaning of this parameter will vary.
ee2d5c50
AC
24666
24667Reply:
b8ff78ce
JB
24668@table @samp
24669@item @var{XX}@dots{}
ff2587ec
WZ
24670Hex encoded (big endian) bytes representing the address of the thread
24671local storage requested.
24672
b8ff78ce
JB
24673@item E @var{nn}
24674An error occurred. @var{nn} are hex digits.
ff2587ec 24675
b8ff78ce
JB
24676@item
24677An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
ee2d5c50
AC
24678@end table
24679
b8ff78ce 24680@item qL @var{startflag} @var{threadcount} @var{nextthread}
8e04817f
AC
24681Obtain thread information from RTOS. Where: @var{startflag} (one hex
24682digit) is one to indicate the first query and zero to indicate a
24683subsequent query; @var{threadcount} (two hex digits) is the maximum
24684number of threads the response packet can contain; and @var{nextthread}
24685(eight hex digits), for subsequent queries (@var{startflag} is zero), is
24686returned in the response as @var{argthread}.
ee2d5c50 24687
b8ff78ce 24688Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
ee2d5c50
AC
24689
24690Reply:
24691@table @samp
b8ff78ce 24692@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
8e04817f
AC
24693Where: @var{count} (two hex digits) is the number of threads being
24694returned; @var{done} (one hex digit) is zero to indicate more threads
24695and one indicates no further threads; @var{argthreadid} (eight hex
b8ff78ce 24696digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
ee2d5c50 24697is a sequence of thread IDs from the target. @var{threadid} (eight hex
8e04817f 24698digits). See @code{remote.c:parse_threadlist_response()}.
ee2d5c50 24699@end table
c906108c 24700
b8ff78ce 24701@item qOffsets
9c16f35a 24702@cindex section offsets, remote request
b8ff78ce 24703@cindex @samp{qOffsets} packet
31d99776
DJ
24704Get section offsets that the target used when relocating the downloaded
24705image.
c906108c 24706
ee2d5c50
AC
24707Reply:
24708@table @samp
31d99776
DJ
24709@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]}
24710Relocate the @code{Text} section by @var{xxx} from its original address.
24711Relocate the @code{Data} section by @var{yyy} from its original address.
24712If the object file format provides segment information (e.g.@: @sc{elf}
24713@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire
24714segments by the supplied offsets.
24715
24716@emph{Note: while a @code{Bss} offset may be included in the response,
24717@value{GDBN} ignores this and instead applies the @code{Data} offset
24718to the @code{Bss} section.}
24719
24720@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]}
24721Relocate the first segment of the object file, which conventionally
24722contains program code, to a starting address of @var{xxx}. If
24723@samp{DataSeg} is specified, relocate the second segment, which
24724conventionally contains modifiable data, to a starting address of
24725@var{yyy}. @value{GDBN} will report an error if the object file
24726does not contain segment information, or does not contain at least
24727as many segments as mentioned in the reply. Extra segments are
24728kept at fixed offsets relative to the last relocated segment.
ee2d5c50
AC
24729@end table
24730
b8ff78ce 24731@item qP @var{mode} @var{threadid}
9c16f35a 24732@cindex thread information, remote request
b8ff78ce 24733@cindex @samp{qP} packet
8e04817f
AC
24734Returns information on @var{threadid}. Where: @var{mode} is a hex
24735encoded 32 bit mode; @var{threadid} is a hex encoded 64 bit thread ID.
ee2d5c50 24736
aa56d27a
JB
24737Don't use this packet; use the @samp{qThreadExtraInfo} query instead
24738(see below).
24739
b8ff78ce 24740Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
c906108c 24741
89be2091
DJ
24742@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
24743@cindex pass signals to inferior, remote request
24744@cindex @samp{QPassSignals} packet
23181151 24745@anchor{QPassSignals}
89be2091
DJ
24746Each listed @var{signal} should be passed directly to the inferior process.
24747Signals are numbered identically to continue packets and stop replies
24748(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
24749strictly greater than the previous item. These signals do not need to stop
24750the inferior, or be reported to @value{GDBN}. All other signals should be
24751reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not
24752combine; any earlier @samp{QPassSignals} list is completely replaced by the
24753new list. This packet improves performance when using @samp{handle
24754@var{signal} nostop noprint pass}.
24755
24756Reply:
24757@table @samp
24758@item OK
24759The request succeeded.
24760
24761@item E @var{nn}
24762An error occurred. @var{nn} are hex digits.
24763
24764@item
24765An empty reply indicates that @samp{QPassSignals} is not supported by
24766the stub.
24767@end table
24768
24769Use of this packet is controlled by the @code{set remote pass-signals}
79a6e687 24770command (@pxref{Remote Configuration, set remote pass-signals}).
89be2091
DJ
24771This packet is not probed by default; the remote stub must request it,
24772by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
24773
b8ff78ce 24774@item qRcmd,@var{command}
ff2587ec 24775@cindex execute remote command, remote request
b8ff78ce 24776@cindex @samp{qRcmd} packet
ff2587ec 24777@var{command} (hex encoded) is passed to the local interpreter for
b8ff78ce
JB
24778execution. Invalid commands should be reported using the output
24779string. Before the final result packet, the target may also respond
24780with a number of intermediate @samp{O@var{output}} console output
24781packets. @emph{Implementors should note that providing access to a
24782stubs's interpreter may have security implications}.
fa93a9d8 24783
ff2587ec
WZ
24784Reply:
24785@table @samp
24786@item OK
24787A command response with no output.
24788@item @var{OUTPUT}
24789A command response with the hex encoded output string @var{OUTPUT}.
b8ff78ce 24790@item E @var{NN}
ff2587ec 24791Indicate a badly formed request.
b8ff78ce
JB
24792@item
24793An empty reply indicates that @samp{qRcmd} is not recognized.
ff2587ec 24794@end table
fa93a9d8 24795
aa56d27a
JB
24796(Note that the @code{qRcmd} packet's name is separated from the
24797command by a @samp{,}, not a @samp{:}, contrary to the naming
24798conventions above. Please don't use this packet as a model for new
24799packets.)
24800
08388c79
DE
24801@item qSearch:memory:@var{address};@var{length};@var{search-pattern}
24802@cindex searching memory, in remote debugging
24803@cindex @samp{qSearch:memory} packet
24804@anchor{qSearch memory}
24805Search @var{length} bytes at @var{address} for @var{search-pattern}.
24806@var{address} and @var{length} are encoded in hex.
24807@var{search-pattern} is a sequence of bytes, hex encoded.
24808
24809Reply:
24810@table @samp
24811@item 0
24812The pattern was not found.
24813@item 1,address
24814The pattern was found at @var{address}.
24815@item E @var{NN}
24816A badly formed request or an error was encountered while searching memory.
24817@item
24818An empty reply indicates that @samp{qSearch:memory} is not recognized.
24819@end table
24820
be2a5f71
DJ
24821@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]}
24822@cindex supported packets, remote query
24823@cindex features of the remote protocol
24824@cindex @samp{qSupported} packet
0876f84a 24825@anchor{qSupported}
be2a5f71
DJ
24826Tell the remote stub about features supported by @value{GDBN}, and
24827query the stub for features it supports. This packet allows
24828@value{GDBN} and the remote stub to take advantage of each others'
24829features. @samp{qSupported} also consolidates multiple feature probes
24830at startup, to improve @value{GDBN} performance---a single larger
24831packet performs better than multiple smaller probe packets on
24832high-latency links. Some features may enable behavior which must not
24833be on by default, e.g.@: because it would confuse older clients or
24834stubs. Other features may describe packets which could be
24835automatically probed for, but are not. These features must be
24836reported before @value{GDBN} will use them. This ``default
24837unsupported'' behavior is not appropriate for all packets, but it
24838helps to keep the initial connection time under control with new
24839versions of @value{GDBN} which support increasing numbers of packets.
24840
24841Reply:
24842@table @samp
24843@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{}
24844The stub supports or does not support each returned @var{stubfeature},
24845depending on the form of each @var{stubfeature} (see below for the
24846possible forms).
24847@item
24848An empty reply indicates that @samp{qSupported} is not recognized,
24849or that no features needed to be reported to @value{GDBN}.
24850@end table
24851
24852The allowed forms for each feature (either a @var{gdbfeature} in the
24853@samp{qSupported} packet, or a @var{stubfeature} in the response)
24854are:
24855
24856@table @samp
24857@item @var{name}=@var{value}
24858The remote protocol feature @var{name} is supported, and associated
24859with the specified @var{value}. The format of @var{value} depends
24860on the feature, but it must not include a semicolon.
24861@item @var{name}+
24862The remote protocol feature @var{name} is supported, and does not
24863need an associated value.
24864@item @var{name}-
24865The remote protocol feature @var{name} is not supported.
24866@item @var{name}?
24867The remote protocol feature @var{name} may be supported, and
24868@value{GDBN} should auto-detect support in some other way when it is
24869needed. This form will not be used for @var{gdbfeature} notifications,
24870but may be used for @var{stubfeature} responses.
24871@end table
24872
24873Whenever the stub receives a @samp{qSupported} request, the
24874supplied set of @value{GDBN} features should override any previous
24875request. This allows @value{GDBN} to put the stub in a known
24876state, even if the stub had previously been communicating with
24877a different version of @value{GDBN}.
24878
24879No values of @var{gdbfeature} (for the packet sent by @value{GDBN})
24880are defined yet. Stubs should ignore any unknown values for
24881@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported}
24882packet supports receiving packets of unlimited length (earlier
24883versions of @value{GDBN} may reject overly long responses). Values
24884for @var{gdbfeature} may be defined in the future to let the stub take
24885advantage of new features in @value{GDBN}, e.g.@: incompatible
24886improvements in the remote protocol---support for unlimited length
24887responses would be a @var{gdbfeature} example, if it were not implied by
24888the @samp{qSupported} query. The stub's reply should be independent
24889of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN}
24890describes all the features it supports, and then the stub replies with
24891all the features it supports.
24892
24893Similarly, @value{GDBN} will silently ignore unrecognized stub feature
24894responses, as long as each response uses one of the standard forms.
24895
24896Some features are flags. A stub which supports a flag feature
24897should respond with a @samp{+} form response. Other features
24898require values, and the stub should respond with an @samp{=}
24899form response.
24900
24901Each feature has a default value, which @value{GDBN} will use if
24902@samp{qSupported} is not available or if the feature is not mentioned
24903in the @samp{qSupported} response. The default values are fixed; a
24904stub is free to omit any feature responses that match the defaults.
24905
24906Not all features can be probed, but for those which can, the probing
24907mechanism is useful: in some cases, a stub's internal
24908architecture may not allow the protocol layer to know some information
24909about the underlying target in advance. This is especially common in
24910stubs which may be configured for multiple targets.
24911
24912These are the currently defined stub features and their properties:
24913
cfa9d6d9 24914@multitable @columnfractions 0.35 0.2 0.12 0.2
be2a5f71
DJ
24915@c NOTE: The first row should be @headitem, but we do not yet require
24916@c a new enough version of Texinfo (4.7) to use @headitem.
0876f84a 24917@item Feature Name
be2a5f71
DJ
24918@tab Value Required
24919@tab Default
24920@tab Probe Allowed
24921
24922@item @samp{PacketSize}
24923@tab Yes
24924@tab @samp{-}
24925@tab No
24926
0876f84a
DJ
24927@item @samp{qXfer:auxv:read}
24928@tab No
24929@tab @samp{-}
24930@tab Yes
24931
23181151
DJ
24932@item @samp{qXfer:features:read}
24933@tab No
24934@tab @samp{-}
24935@tab Yes
24936
cfa9d6d9
DJ
24937@item @samp{qXfer:libraries:read}
24938@tab No
24939@tab @samp{-}
24940@tab Yes
24941
68437a39
DJ
24942@item @samp{qXfer:memory-map:read}
24943@tab No
24944@tab @samp{-}
24945@tab Yes
24946
0e7f50da
UW
24947@item @samp{qXfer:spu:read}
24948@tab No
24949@tab @samp{-}
24950@tab Yes
24951
24952@item @samp{qXfer:spu:write}
24953@tab No
24954@tab @samp{-}
24955@tab Yes
24956
89be2091
DJ
24957@item @samp{QPassSignals}
24958@tab No
24959@tab @samp{-}
24960@tab Yes
24961
be2a5f71
DJ
24962@end multitable
24963
24964These are the currently defined stub features, in more detail:
24965
24966@table @samp
24967@cindex packet size, remote protocol
24968@item PacketSize=@var{bytes}
24969The remote stub can accept packets up to at least @var{bytes} in
24970length. @value{GDBN} will send packets up to this size for bulk
24971transfers, and will never send larger packets. This is a limit on the
24972data characters in the packet, including the frame and checksum.
24973There is no trailing NUL byte in a remote protocol packet; if the stub
24974stores packets in a NUL-terminated format, it should allow an extra
24975byte in its buffer for the NUL. If this stub feature is not supported,
24976@value{GDBN} guesses based on the size of the @samp{g} packet response.
24977
0876f84a
DJ
24978@item qXfer:auxv:read
24979The remote stub understands the @samp{qXfer:auxv:read} packet
24980(@pxref{qXfer auxiliary vector read}).
24981
23181151
DJ
24982@item qXfer:features:read
24983The remote stub understands the @samp{qXfer:features:read} packet
24984(@pxref{qXfer target description read}).
24985
cfa9d6d9
DJ
24986@item qXfer:libraries:read
24987The remote stub understands the @samp{qXfer:libraries:read} packet
24988(@pxref{qXfer library list read}).
24989
23181151
DJ
24990@item qXfer:memory-map:read
24991The remote stub understands the @samp{qXfer:memory-map:read} packet
24992(@pxref{qXfer memory map read}).
24993
0e7f50da
UW
24994@item qXfer:spu:read
24995The remote stub understands the @samp{qXfer:spu:read} packet
24996(@pxref{qXfer spu read}).
24997
24998@item qXfer:spu:write
24999The remote stub understands the @samp{qXfer:spu:write} packet
25000(@pxref{qXfer spu write}).
25001
23181151
DJ
25002@item QPassSignals
25003The remote stub understands the @samp{QPassSignals} packet
25004(@pxref{QPassSignals}).
25005
be2a5f71
DJ
25006@end table
25007
b8ff78ce 25008@item qSymbol::
ff2587ec 25009@cindex symbol lookup, remote request
b8ff78ce 25010@cindex @samp{qSymbol} packet
ff2587ec
WZ
25011Notify the target that @value{GDBN} is prepared to serve symbol lookup
25012requests. Accept requests from the target for the values of symbols.
fa93a9d8
JB
25013
25014Reply:
ff2587ec 25015@table @samp
b8ff78ce 25016@item OK
ff2587ec 25017The target does not need to look up any (more) symbols.
b8ff78ce 25018@item qSymbol:@var{sym_name}
ff2587ec
WZ
25019The target requests the value of symbol @var{sym_name} (hex encoded).
25020@value{GDBN} may provide the value by using the
b8ff78ce
JB
25021@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
25022below.
ff2587ec 25023@end table
83761cbd 25024
b8ff78ce 25025@item qSymbol:@var{sym_value}:@var{sym_name}
ff2587ec
WZ
25026Set the value of @var{sym_name} to @var{sym_value}.
25027
25028@var{sym_name} (hex encoded) is the name of a symbol whose value the
25029target has previously requested.
25030
25031@var{sym_value} (hex) is the value for symbol @var{sym_name}. If
25032@value{GDBN} cannot supply a value for @var{sym_name}, then this field
25033will be empty.
25034
25035Reply:
25036@table @samp
b8ff78ce 25037@item OK
ff2587ec 25038The target does not need to look up any (more) symbols.
b8ff78ce 25039@item qSymbol:@var{sym_name}
ff2587ec
WZ
25040The target requests the value of a new symbol @var{sym_name} (hex
25041encoded). @value{GDBN} will continue to supply the values of symbols
25042(if available), until the target ceases to request them.
fa93a9d8 25043@end table
0abb7bc7 25044
9d29849a
JB
25045@item QTDP
25046@itemx QTFrame
25047@xref{Tracepoint Packets}.
25048
b8ff78ce 25049@item qThreadExtraInfo,@var{id}
ff2587ec 25050@cindex thread attributes info, remote request
b8ff78ce
JB
25051@cindex @samp{qThreadExtraInfo} packet
25052Obtain a printable string description of a thread's attributes from
25053the target OS. @var{id} is a thread-id in big-endian hex. This
25054string may contain anything that the target OS thinks is interesting
25055for @value{GDBN} to tell the user about the thread. The string is
25056displayed in @value{GDBN}'s @code{info threads} display. Some
25057examples of possible thread extra info strings are @samp{Runnable}, or
25058@samp{Blocked on Mutex}.
ff2587ec
WZ
25059
25060Reply:
25061@table @samp
b8ff78ce
JB
25062@item @var{XX}@dots{}
25063Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
25064comprising the printable string containing the extra information about
25065the thread's attributes.
ff2587ec 25066@end table
814e32d7 25067
aa56d27a
JB
25068(Note that the @code{qThreadExtraInfo} packet's name is separated from
25069the command by a @samp{,}, not a @samp{:}, contrary to the naming
25070conventions above. Please don't use this packet as a model for new
25071packets.)
25072
9d29849a
JB
25073@item QTStart
25074@itemx QTStop
25075@itemx QTinit
25076@itemx QTro
25077@itemx qTStatus
25078@xref{Tracepoint Packets}.
25079
0876f84a
DJ
25080@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
25081@cindex read special object, remote request
25082@cindex @samp{qXfer} packet
68437a39 25083@anchor{qXfer read}
0876f84a
DJ
25084Read uninterpreted bytes from the target's special data area
25085identified by the keyword @var{object}. Request @var{length} bytes
25086starting at @var{offset} bytes into the data. The content and
0e7f50da 25087encoding of @var{annex} is specific to @var{object}; it can supply
0876f84a
DJ
25088additional details about what data to access.
25089
25090Here are the specific requests of this form defined so far. All
25091@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply
25092formats, listed below.
25093
25094@table @samp
25095@item qXfer:auxv:read::@var{offset},@var{length}
25096@anchor{qXfer auxiliary vector read}
25097Access the target's @dfn{auxiliary vector}. @xref{OS Information,
427c3a89 25098auxiliary vector}. Note @var{annex} must be empty.
0876f84a
DJ
25099
25100This packet is not probed by default; the remote stub must request it,
89be2091 25101by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
0876f84a 25102
23181151
DJ
25103@item qXfer:features:read:@var{annex}:@var{offset},@var{length}
25104@anchor{qXfer target description read}
25105Access the @dfn{target description}. @xref{Target Descriptions}. The
25106annex specifies which XML document to access. The main description is
25107always loaded from the @samp{target.xml} annex.
25108
25109This packet is not probed by default; the remote stub must request it,
25110by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
25111
cfa9d6d9
DJ
25112@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length}
25113@anchor{qXfer library list read}
25114Access the target's list of loaded libraries. @xref{Library List Format}.
25115The annex part of the generic @samp{qXfer} packet must be empty
25116(@pxref{qXfer read}).
25117
25118Targets which maintain a list of libraries in the program's memory do
25119not need to implement this packet; it is designed for platforms where
25120the operating system manages the list of loaded libraries.
25121
25122This packet is not probed by default; the remote stub must request it,
25123by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
25124
68437a39
DJ
25125@item qXfer:memory-map:read::@var{offset},@var{length}
25126@anchor{qXfer memory map read}
79a6e687 25127Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The
68437a39
DJ
25128annex part of the generic @samp{qXfer} packet must be empty
25129(@pxref{qXfer read}).
25130
0e7f50da
UW
25131This packet is not probed by default; the remote stub must request it,
25132by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
25133
25134@item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
25135@anchor{qXfer spu read}
25136Read contents of an @code{spufs} file on the target system. The
25137annex specifies which file to read; it must be of the form
25138@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
25139in the target process, and @var{name} identifes the @code{spufs} file
25140in that context to be accessed.
25141
68437a39
DJ
25142This packet is not probed by default; the remote stub must request it,
25143by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
25144@end table
25145
0876f84a
DJ
25146Reply:
25147@table @samp
25148@item m @var{data}
25149Data @var{data} (@pxref{Binary Data}) has been read from the
25150target. There may be more data at a higher address (although
25151it is permitted to return @samp{m} even for the last valid
25152block of data, as long as at least one byte of data was read).
25153@var{data} may have fewer bytes than the @var{length} in the
25154request.
25155
25156@item l @var{data}
25157Data @var{data} (@pxref{Binary Data}) has been read from the target.
25158There is no more data to be read. @var{data} may have fewer bytes
25159than the @var{length} in the request.
25160
25161@item l
25162The @var{offset} in the request is at the end of the data.
25163There is no more data to be read.
25164
25165@item E00
25166The request was malformed, or @var{annex} was invalid.
25167
25168@item E @var{nn}
25169The offset was invalid, or there was an error encountered reading the data.
25170@var{nn} is a hex-encoded @code{errno} value.
25171
25172@item
25173An empty reply indicates the @var{object} string was not recognized by
25174the stub, or that the object does not support reading.
25175@end table
25176
25177@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
25178@cindex write data into object, remote request
25179Write uninterpreted bytes into the target's special data area
25180identified by the keyword @var{object}, starting at @var{offset} bytes
0e7f50da 25181into the data. @var{data}@dots{} is the binary-encoded data
0876f84a 25182(@pxref{Binary Data}) to be written. The content and encoding of @var{annex}
0e7f50da 25183is specific to @var{object}; it can supply additional details about what data
0876f84a
DJ
25184to access.
25185
0e7f50da
UW
25186Here are the specific requests of this form defined so far. All
25187@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply
25188formats, listed below.
25189
25190@table @samp
25191@item qXfer:@var{spu}:write:@var{annex}:@var{offset}:@var{data}@dots{}
25192@anchor{qXfer spu write}
25193Write @var{data} to an @code{spufs} file on the target system. The
25194annex specifies which file to write; it must be of the form
25195@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
25196in the target process, and @var{name} identifes the @code{spufs} file
25197in that context to be accessed.
25198
25199This packet is not probed by default; the remote stub must request it,
25200by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
25201@end table
0876f84a
DJ
25202
25203Reply:
25204@table @samp
25205@item @var{nn}
25206@var{nn} (hex encoded) is the number of bytes written.
25207This may be fewer bytes than supplied in the request.
25208
25209@item E00
25210The request was malformed, or @var{annex} was invalid.
25211
25212@item E @var{nn}
25213The offset was invalid, or there was an error encountered writing the data.
25214@var{nn} is a hex-encoded @code{errno} value.
25215
25216@item
25217An empty reply indicates the @var{object} string was not
25218recognized by the stub, or that the object does not support writing.
25219@end table
25220
25221@item qXfer:@var{object}:@var{operation}:@dots{}
25222Requests of this form may be added in the future. When a stub does
25223not recognize the @var{object} keyword, or its support for
25224@var{object} does not recognize the @var{operation} keyword, the stub
25225must respond with an empty packet.
25226
ee2d5c50
AC
25227@end table
25228
25229@node Register Packet Format
25230@section Register Packet Format
eb12ee30 25231
b8ff78ce 25232The following @code{g}/@code{G} packets have previously been defined.
ee2d5c50
AC
25233In the below, some thirty-two bit registers are transferred as
25234sixty-four bits. Those registers should be zero/sign extended (which?)
599b237a
BW
25235to fill the space allocated. Register bytes are transferred in target
25236byte order. The two nibbles within a register byte are transferred
ee2d5c50 25237most-significant - least-significant.
eb12ee30 25238
ee2d5c50 25239@table @r
eb12ee30 25240
8e04817f 25241@item MIPS32
ee2d5c50 25242
599b237a 25243All registers are transferred as thirty-two bit quantities in the order:
8e04817f
AC
2524432 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
25245registers; fsr; fir; fp.
eb12ee30 25246
8e04817f 25247@item MIPS64
ee2d5c50 25248
599b237a 25249All registers are transferred as sixty-four bit quantities (including
8e04817f
AC
25250thirty-two bit registers such as @code{sr}). The ordering is the same
25251as @code{MIPS32}.
eb12ee30 25252
ee2d5c50
AC
25253@end table
25254
9d29849a
JB
25255@node Tracepoint Packets
25256@section Tracepoint Packets
25257@cindex tracepoint packets
25258@cindex packets, tracepoint
25259
25260Here we describe the packets @value{GDBN} uses to implement
25261tracepoints (@pxref{Tracepoints}).
25262
25263@table @samp
25264
25265@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}@r{[}-@r{]}
25266Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena}
25267is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then
25268the tracepoint is disabled. @var{step} is the tracepoint's step
25269count, and @var{pass} is its pass count. If the trailing @samp{-} is
25270present, further @samp{QTDP} packets will follow to specify this
25271tracepoint's actions.
25272
25273Replies:
25274@table @samp
25275@item OK
25276The packet was understood and carried out.
25277@item
25278The packet was not recognized.
25279@end table
25280
25281@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]}
25282Define actions to be taken when a tracepoint is hit. @var{n} and
25283@var{addr} must be the same as in the initial @samp{QTDP} packet for
25284this tracepoint. This packet may only be sent immediately after
25285another @samp{QTDP} packet that ended with a @samp{-}. If the
25286trailing @samp{-} is present, further @samp{QTDP} packets will follow,
25287specifying more actions for this tracepoint.
25288
25289In the series of action packets for a given tracepoint, at most one
25290can have an @samp{S} before its first @var{action}. If such a packet
25291is sent, it and the following packets define ``while-stepping''
25292actions. Any prior packets define ordinary actions --- that is, those
25293taken when the tracepoint is first hit. If no action packet has an
25294@samp{S}, then all the packets in the series specify ordinary
25295tracepoint actions.
25296
25297The @samp{@var{action}@dots{}} portion of the packet is a series of
25298actions, concatenated without separators. Each action has one of the
25299following forms:
25300
25301@table @samp
25302
25303@item R @var{mask}
25304Collect the registers whose bits are set in @var{mask}. @var{mask} is
599b237a 25305a hexadecimal number whose @var{i}'th bit is set if register number
9d29849a
JB
25306@var{i} should be collected. (The least significant bit is numbered
25307zero.) Note that @var{mask} may be any number of digits long; it may
25308not fit in a 32-bit word.
25309
25310@item M @var{basereg},@var{offset},@var{len}
25311Collect @var{len} bytes of memory starting at the address in register
25312number @var{basereg}, plus @var{offset}. If @var{basereg} is
25313@samp{-1}, then the range has a fixed address: @var{offset} is the
25314address of the lowest byte to collect. The @var{basereg},
599b237a 25315@var{offset}, and @var{len} parameters are all unsigned hexadecimal
9d29849a
JB
25316values (the @samp{-1} value for @var{basereg} is a special case).
25317
25318@item X @var{len},@var{expr}
25319Evaluate @var{expr}, whose length is @var{len}, and collect memory as
25320it directs. @var{expr} is an agent expression, as described in
25321@ref{Agent Expressions}. Each byte of the expression is encoded as a
25322two-digit hex number in the packet; @var{len} is the number of bytes
25323in the expression (and thus one-half the number of hex digits in the
25324packet).
25325
25326@end table
25327
25328Any number of actions may be packed together in a single @samp{QTDP}
25329packet, as long as the packet does not exceed the maximum packet
c1947b85
JB
25330length (400 bytes, for many stubs). There may be only one @samp{R}
25331action per tracepoint, and it must precede any @samp{M} or @samp{X}
25332actions. Any registers referred to by @samp{M} and @samp{X} actions
25333must be collected by a preceding @samp{R} action. (The
25334``while-stepping'' actions are treated as if they were attached to a
25335separate tracepoint, as far as these restrictions are concerned.)
9d29849a
JB
25336
25337Replies:
25338@table @samp
25339@item OK
25340The packet was understood and carried out.
25341@item
25342The packet was not recognized.
25343@end table
25344
25345@item QTFrame:@var{n}
25346Select the @var{n}'th tracepoint frame from the buffer, and use the
25347register and memory contents recorded there to answer subsequent
25348request packets from @value{GDBN}.
25349
25350A successful reply from the stub indicates that the stub has found the
25351requested frame. The response is a series of parts, concatenated
25352without separators, describing the frame we selected. Each part has
25353one of the following forms:
25354
25355@table @samp
25356@item F @var{f}
25357The selected frame is number @var{n} in the trace frame buffer;
599b237a 25358@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there
9d29849a
JB
25359was no frame matching the criteria in the request packet.
25360
25361@item T @var{t}
25362The selected trace frame records a hit of tracepoint number @var{t};
599b237a 25363@var{t} is a hexadecimal number.
9d29849a
JB
25364
25365@end table
25366
25367@item QTFrame:pc:@var{addr}
25368Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
25369currently selected frame whose PC is @var{addr};
599b237a 25370@var{addr} is a hexadecimal number.
9d29849a
JB
25371
25372@item QTFrame:tdp:@var{t}
25373Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
25374currently selected frame that is a hit of tracepoint @var{t}; @var{t}
599b237a 25375is a hexadecimal number.
9d29849a
JB
25376
25377@item QTFrame:range:@var{start}:@var{end}
25378Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
25379currently selected frame whose PC is between @var{start} (inclusive)
599b237a 25380and @var{end} (exclusive); @var{start} and @var{end} are hexadecimal
9d29849a
JB
25381numbers.
25382
25383@item QTFrame:outside:@var{start}:@var{end}
25384Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first
25385frame @emph{outside} the given range of addresses.
25386
25387@item QTStart
25388Begin the tracepoint experiment. Begin collecting data from tracepoint
25389hits in the trace frame buffer.
25390
25391@item QTStop
25392End the tracepoint experiment. Stop collecting trace frames.
25393
25394@item QTinit
25395Clear the table of tracepoints, and empty the trace frame buffer.
25396
25397@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{}
25398Establish the given ranges of memory as ``transparent''. The stub
25399will answer requests for these ranges from memory's current contents,
25400if they were not collected as part of the tracepoint hit.
25401
25402@value{GDBN} uses this to mark read-only regions of memory, like those
25403containing program code. Since these areas never change, they should
25404still have the same contents they did when the tracepoint was hit, so
25405there's no reason for the stub to refuse to provide their contents.
25406
25407@item qTStatus
25408Ask the stub if there is a trace experiment running right now.
25409
25410Replies:
25411@table @samp
25412@item T0
25413There is no trace experiment running.
25414@item T1
25415There is a trace experiment running.
25416@end table
25417
25418@end table
25419
25420
a6b151f1
DJ
25421@node Host I/O Packets
25422@section Host I/O Packets
25423@cindex Host I/O, remote protocol
25424@cindex file transfer, remote protocol
25425
25426The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O
25427operations on the far side of a remote link. For example, Host I/O is
25428used to upload and download files to a remote target with its own
25429filesystem. Host I/O uses the same constant values and data structure
25430layout as the target-initiated File-I/O protocol. However, the
25431Host I/O packets are structured differently. The target-initiated
25432protocol relies on target memory to store parameters and buffers.
25433Host I/O requests are initiated by @value{GDBN}, and the
25434target's memory is not involved. @xref{File-I/O Remote Protocol
25435Extension}, for more details on the target-initiated protocol.
25436
25437The Host I/O request packets all encode a single operation along with
25438its arguments. They have this format:
25439
25440@table @samp
25441
25442@item vFile:@var{operation}: @var{parameter}@dots{}
25443@var{operation} is the name of the particular request; the target
25444should compare the entire packet name up to the second colon when checking
25445for a supported operation. The format of @var{parameter} depends on
25446the operation. Numbers are always passed in hexadecimal. Negative
25447numbers have an explicit minus sign (i.e.@: two's complement is not
25448used). Strings (e.g.@: filenames) are encoded as a series of
25449hexadecimal bytes. The last argument to a system call may be a
25450buffer of escaped binary data (@pxref{Binary Data}).
25451
25452@end table
25453
25454The valid responses to Host I/O packets are:
25455
25456@table @samp
25457
25458@item F @var{result} [, @var{errno}] [; @var{attachment}]
25459@var{result} is the integer value returned by this operation, usually
25460non-negative for success and -1 for errors. If an error has occured,
25461@var{errno} will be included in the result. @var{errno} will have a
25462value defined by the File-I/O protocol (@pxref{Errno Values}). For
25463operations which return data, @var{attachment} supplies the data as a
25464binary buffer. Binary buffers in response packets are escaped in the
25465normal way (@pxref{Binary Data}). See the individual packet
25466documentation for the interpretation of @var{result} and
25467@var{attachment}.
25468
25469@item
25470An empty response indicates that this operation is not recognized.
25471
25472@end table
25473
25474These are the supported Host I/O operations:
25475
25476@table @samp
25477@item vFile:open: @var{pathname}, @var{flags}, @var{mode}
25478Open a file at @var{pathname} and return a file descriptor for it, or
25479return -1 if an error occurs. @var{pathname} is a string,
25480@var{flags} is an integer indicating a mask of open flags
25481(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask
25482of mode bits to use if the file is created (@pxref{mode_t Values}).
c1c25a1a 25483@xref{open}, for details of the open flags and mode values.
a6b151f1
DJ
25484
25485@item vFile:close: @var{fd}
25486Close the open file corresponding to @var{fd} and return 0, or
25487-1 if an error occurs.
25488
25489@item vFile:pread: @var{fd}, @var{count}, @var{offset}
25490Read data from the open file corresponding to @var{fd}. Up to
25491@var{count} bytes will be read from the file, starting at @var{offset}
25492relative to the start of the file. The target may read fewer bytes;
25493common reasons include packet size limits and an end-of-file
25494condition. The number of bytes read is returned. Zero should only be
25495returned for a successful read at the end of the file, or if
25496@var{count} was zero.
25497
25498The data read should be returned as a binary attachment on success.
25499If zero bytes were read, the response should include an empty binary
25500attachment (i.e.@: a trailing semicolon). The return value is the
25501number of target bytes read; the binary attachment may be longer if
25502some characters were escaped.
25503
25504@item vFile:pwrite: @var{fd}, @var{offset}, @var{data}
25505Write @var{data} (a binary buffer) to the open file corresponding
25506to @var{fd}. Start the write at @var{offset} from the start of the
25507file. Unlike many @code{write} system calls, there is no
25508separate @var{count} argument; the length of @var{data} in the
25509packet is used. @samp{vFile:write} returns the number of bytes written,
25510which may be shorter than the length of @var{data}, or -1 if an
25511error occurred.
25512
25513@item vFile:unlink: @var{pathname}
25514Delete the file at @var{pathname} on the target. Return 0,
25515or -1 if an error occurs. @var{pathname} is a string.
25516
25517@end table
25518
9a6253be
KB
25519@node Interrupts
25520@section Interrupts
25521@cindex interrupts (remote protocol)
25522
25523When a program on the remote target is running, @value{GDBN} may
25524attempt to interrupt it by sending a @samp{Ctrl-C} or a @code{BREAK},
25525control of which is specified via @value{GDBN}'s @samp{remotebreak}
25526setting (@pxref{set remotebreak}).
25527
25528The precise meaning of @code{BREAK} is defined by the transport
25529mechanism and may, in fact, be undefined. @value{GDBN} does
25530not currently define a @code{BREAK} mechanism for any of the network
25531interfaces.
25532
25533@samp{Ctrl-C}, on the other hand, is defined and implemented for all
25534transport mechanisms. It is represented by sending the single byte
25535@code{0x03} without any of the usual packet overhead described in
25536the Overview section (@pxref{Overview}). When a @code{0x03} byte is
25537transmitted as part of a packet, it is considered to be packet data
25538and does @emph{not} represent an interrupt. E.g., an @samp{X} packet
0876f84a 25539(@pxref{X packet}), used for binary downloads, may include an unescaped
9a6253be
KB
25540@code{0x03} as part of its packet.
25541
25542Stubs are not required to recognize these interrupt mechanisms and the
25543precise meaning associated with receipt of the interrupt is
25544implementation defined. If the stub is successful at interrupting the
25545running program, it is expected that it will send one of the Stop
25546Reply Packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result
25547of successfully stopping the program. Interrupts received while the
25548program is stopped will be discarded.
25549
ee2d5c50
AC
25550@node Examples
25551@section Examples
eb12ee30 25552
8e04817f
AC
25553Example sequence of a target being re-started. Notice how the restart
25554does not get any direct output:
eb12ee30 25555
474c8240 25556@smallexample
d2c6833e
AC
25557-> @code{R00}
25558<- @code{+}
8e04817f 25559@emph{target restarts}
d2c6833e 25560-> @code{?}
8e04817f 25561<- @code{+}
d2c6833e
AC
25562<- @code{T001:1234123412341234}
25563-> @code{+}
474c8240 25564@end smallexample
eb12ee30 25565
8e04817f 25566Example sequence of a target being stepped by a single instruction:
eb12ee30 25567
474c8240 25568@smallexample
d2c6833e 25569-> @code{G1445@dots{}}
8e04817f 25570<- @code{+}
d2c6833e
AC
25571-> @code{s}
25572<- @code{+}
25573@emph{time passes}
25574<- @code{T001:1234123412341234}
8e04817f 25575-> @code{+}
d2c6833e 25576-> @code{g}
8e04817f 25577<- @code{+}
d2c6833e
AC
25578<- @code{1455@dots{}}
25579-> @code{+}
474c8240 25580@end smallexample
eb12ee30 25581
79a6e687
BW
25582@node File-I/O Remote Protocol Extension
25583@section File-I/O Remote Protocol Extension
0ce1b118
CV
25584@cindex File-I/O remote protocol extension
25585
25586@menu
25587* File-I/O Overview::
79a6e687
BW
25588* Protocol Basics::
25589* The F Request Packet::
25590* The F Reply Packet::
25591* The Ctrl-C Message::
0ce1b118 25592* Console I/O::
79a6e687 25593* List of Supported Calls::
db2e3e2e 25594* Protocol-specific Representation of Datatypes::
0ce1b118
CV
25595* Constants::
25596* File-I/O Examples::
25597@end menu
25598
25599@node File-I/O Overview
25600@subsection File-I/O Overview
25601@cindex file-i/o overview
25602
9c16f35a 25603The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the
fc320d37 25604target to use the host's file system and console I/O to perform various
0ce1b118 25605system calls. System calls on the target system are translated into a
fc320d37
SL
25606remote protocol packet to the host system, which then performs the needed
25607actions and returns a response packet to the target system.
0ce1b118
CV
25608This simulates file system operations even on targets that lack file systems.
25609
fc320d37
SL
25610The protocol is defined to be independent of both the host and target systems.
25611It uses its own internal representation of datatypes and values. Both
0ce1b118 25612@value{GDBN} and the target's @value{GDBN} stub are responsible for
fc320d37
SL
25613translating the system-dependent value representations into the internal
25614protocol representations when data is transmitted.
0ce1b118 25615
fc320d37
SL
25616The communication is synchronous. A system call is possible only when
25617@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S}
25618or @samp{s} packets. While @value{GDBN} handles the request for a system call,
0ce1b118 25619the target is stopped to allow deterministic access to the target's
fc320d37
SL
25620memory. Therefore File-I/O is not interruptible by target signals. On
25621the other hand, it is possible to interrupt File-I/O by a user interrupt
c8aa23ab 25622(@samp{Ctrl-C}) within @value{GDBN}.
0ce1b118
CV
25623
25624The target's request to perform a host system call does not finish
25625the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
25626after finishing the system call, the target returns to continuing the
25627previous activity (continue, step). No additional continue or step
25628request from @value{GDBN} is required.
25629
25630@smallexample
f7dc1244 25631(@value{GDBP}) continue
0ce1b118
CV
25632 <- target requests 'system call X'
25633 target is stopped, @value{GDBN} executes system call
3f94c067
BW
25634 -> @value{GDBN} returns result
25635 ... target continues, @value{GDBN} returns to wait for the target
0ce1b118
CV
25636 <- target hits breakpoint and sends a Txx packet
25637@end smallexample
25638
fc320d37
SL
25639The protocol only supports I/O on the console and to regular files on
25640the host file system. Character or block special devices, pipes,
25641named pipes, sockets or any other communication method on the host
0ce1b118
CV
25642system are not supported by this protocol.
25643
79a6e687
BW
25644@node Protocol Basics
25645@subsection Protocol Basics
0ce1b118
CV
25646@cindex protocol basics, file-i/o
25647
fc320d37
SL
25648The File-I/O protocol uses the @code{F} packet as the request as well
25649as reply packet. Since a File-I/O system call can only occur when
25650@value{GDBN} is waiting for a response from the continuing or stepping target,
25651the File-I/O request is a reply that @value{GDBN} has to expect as a result
25652of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
0ce1b118
CV
25653This @code{F} packet contains all information needed to allow @value{GDBN}
25654to call the appropriate host system call:
25655
25656@itemize @bullet
b383017d 25657@item
0ce1b118
CV
25658A unique identifier for the requested system call.
25659
25660@item
25661All parameters to the system call. Pointers are given as addresses
25662in the target memory address space. Pointers to strings are given as
b383017d 25663pointer/length pair. Numerical values are given as they are.
db2e3e2e 25664Numerical control flags are given in a protocol-specific representation.
0ce1b118
CV
25665
25666@end itemize
25667
fc320d37 25668At this point, @value{GDBN} has to perform the following actions.
0ce1b118
CV
25669
25670@itemize @bullet
b383017d 25671@item
fc320d37
SL
25672If the parameters include pointer values to data needed as input to a
25673system call, @value{GDBN} requests this data from the target with a
0ce1b118
CV
25674standard @code{m} packet request. This additional communication has to be
25675expected by the target implementation and is handled as any other @code{m}
25676packet.
25677
25678@item
25679@value{GDBN} translates all value from protocol representation to host
25680representation as needed. Datatypes are coerced into the host types.
25681
25682@item
fc320d37 25683@value{GDBN} calls the system call.
0ce1b118
CV
25684
25685@item
25686It then coerces datatypes back to protocol representation.
25687
25688@item
fc320d37
SL
25689If the system call is expected to return data in buffer space specified
25690by pointer parameters to the call, the data is transmitted to the
0ce1b118
CV
25691target using a @code{M} or @code{X} packet. This packet has to be expected
25692by the target implementation and is handled as any other @code{M} or @code{X}
25693packet.
25694
25695@end itemize
25696
25697Eventually @value{GDBN} replies with another @code{F} packet which contains all
25698necessary information for the target to continue. This at least contains
25699
25700@itemize @bullet
25701@item
25702Return value.
25703
25704@item
25705@code{errno}, if has been changed by the system call.
25706
25707@item
25708``Ctrl-C'' flag.
25709
25710@end itemize
25711
25712After having done the needed type and value coercion, the target continues
25713the latest continue or step action.
25714
79a6e687
BW
25715@node The F Request Packet
25716@subsection The @code{F} Request Packet
0ce1b118
CV
25717@cindex file-i/o request packet
25718@cindex @code{F} request packet
25719
25720The @code{F} request packet has the following format:
25721
25722@table @samp
fc320d37 25723@item F@var{call-id},@var{parameter@dots{}}
0ce1b118
CV
25724
25725@var{call-id} is the identifier to indicate the host system call to be called.
25726This is just the name of the function.
25727
fc320d37
SL
25728@var{parameter@dots{}} are the parameters to the system call.
25729Parameters are hexadecimal integer values, either the actual values in case
25730of scalar datatypes, pointers to target buffer space in case of compound
25731datatypes and unspecified memory areas, or pointer/length pairs in case
25732of string parameters. These are appended to the @var{call-id} as a
25733comma-delimited list. All values are transmitted in ASCII
25734string representation, pointer/length pairs separated by a slash.
0ce1b118 25735
b383017d 25736@end table
0ce1b118 25737
fc320d37 25738
0ce1b118 25739
79a6e687
BW
25740@node The F Reply Packet
25741@subsection The @code{F} Reply Packet
0ce1b118
CV
25742@cindex file-i/o reply packet
25743@cindex @code{F} reply packet
25744
25745The @code{F} reply packet has the following format:
25746
25747@table @samp
25748
d3bdde98 25749@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment}
0ce1b118
CV
25750
25751@var{retcode} is the return code of the system call as hexadecimal value.
25752
db2e3e2e
BW
25753@var{errno} is the @code{errno} set by the call, in protocol-specific
25754representation.
0ce1b118
CV
25755This parameter can be omitted if the call was successful.
25756
fc320d37
SL
25757@var{Ctrl-C flag} is only sent if the user requested a break. In this
25758case, @var{errno} must be sent as well, even if the call was successful.
25759The @var{Ctrl-C flag} itself consists of the character @samp{C}:
0ce1b118
CV
25760
25761@smallexample
25762F0,0,C
25763@end smallexample
25764
25765@noindent
fc320d37 25766or, if the call was interrupted before the host call has been performed:
0ce1b118
CV
25767
25768@smallexample
25769F-1,4,C
25770@end smallexample
25771
25772@noindent
db2e3e2e 25773assuming 4 is the protocol-specific representation of @code{EINTR}.
0ce1b118
CV
25774
25775@end table
25776
0ce1b118 25777
79a6e687
BW
25778@node The Ctrl-C Message
25779@subsection The @samp{Ctrl-C} Message
0ce1b118
CV
25780@cindex ctrl-c message, in file-i/o protocol
25781
c8aa23ab 25782If the @samp{Ctrl-C} flag is set in the @value{GDBN}
79a6e687 25783reply packet (@pxref{The F Reply Packet}),
fc320d37 25784the target should behave as if it had
0ce1b118 25785gotten a break message. The meaning for the target is ``system call
fc320d37 25786interrupted by @code{SIGINT}''. Consequentially, the target should actually stop
0ce1b118 25787(as with a break message) and return to @value{GDBN} with a @code{T02}
c8aa23ab 25788packet.
fc320d37
SL
25789
25790It's important for the target to know in which
25791state the system call was interrupted. There are two possible cases:
0ce1b118
CV
25792
25793@itemize @bullet
25794@item
25795The system call hasn't been performed on the host yet.
25796
25797@item
25798The system call on the host has been finished.
25799
25800@end itemize
25801
25802These two states can be distinguished by the target by the value of the
25803returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
25804call hasn't been performed. This is equivalent to the @code{EINTR} handling
25805on POSIX systems. In any other case, the target may presume that the
fc320d37 25806system call has been finished --- successfully or not --- and should behave
0ce1b118
CV
25807as if the break message arrived right after the system call.
25808
fc320d37 25809@value{GDBN} must behave reliably. If the system call has not been called
0ce1b118
CV
25810yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
25811@code{errno} in the packet. If the system call on the host has been finished
fc320d37
SL
25812before the user requests a break, the full action must be finished by
25813@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary.
25814The @code{F} packet may only be sent when either nothing has happened
0ce1b118
CV
25815or the full action has been completed.
25816
25817@node Console I/O
25818@subsection Console I/O
25819@cindex console i/o as part of file-i/o
25820
d3e8051b 25821By default and if not explicitly closed by the target system, the file
0ce1b118
CV
25822descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
25823on the @value{GDBN} console is handled as any other file output operation
25824(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
25825by @value{GDBN} so that after the target read request from file descriptor
258260 all following typing is buffered until either one of the following
25827conditions is met:
25828
25829@itemize @bullet
25830@item
c8aa23ab 25831The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the
0ce1b118
CV
25832@code{read}
25833system call is treated as finished.
25834
25835@item
7f9087cb 25836The user presses @key{RET}. This is treated as end of input with a trailing
fc320d37 25837newline.
0ce1b118
CV
25838
25839@item
c8aa23ab
EZ
25840The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing
25841character (neither newline nor @samp{Ctrl-D}) is appended to the input.
0ce1b118
CV
25842
25843@end itemize
25844
fc320d37
SL
25845If the user has typed more characters than fit in the buffer given to
25846the @code{read} call, the trailing characters are buffered in @value{GDBN} until
25847either another @code{read(0, @dots{})} is requested by the target, or debugging
25848is stopped at the user's request.
0ce1b118 25849
0ce1b118 25850
79a6e687
BW
25851@node List of Supported Calls
25852@subsection List of Supported Calls
0ce1b118
CV
25853@cindex list of supported file-i/o calls
25854
25855@menu
25856* open::
25857* close::
25858* read::
25859* write::
25860* lseek::
25861* rename::
25862* unlink::
25863* stat/fstat::
25864* gettimeofday::
25865* isatty::
25866* system::
25867@end menu
25868
25869@node open
25870@unnumberedsubsubsec open
25871@cindex open, file-i/o system call
25872
fc320d37
SL
25873@table @asis
25874@item Synopsis:
0ce1b118 25875@smallexample
0ce1b118
CV
25876int open(const char *pathname, int flags);
25877int open(const char *pathname, int flags, mode_t mode);
0ce1b118
CV
25878@end smallexample
25879
fc320d37
SL
25880@item Request:
25881@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}}
25882
0ce1b118 25883@noindent
fc320d37 25884@var{flags} is the bitwise @code{OR} of the following values:
0ce1b118
CV
25885
25886@table @code
b383017d 25887@item O_CREAT
0ce1b118
CV
25888If the file does not exist it will be created. The host
25889rules apply as far as file ownership and time stamps
25890are concerned.
25891
b383017d 25892@item O_EXCL
fc320d37 25893When used with @code{O_CREAT}, if the file already exists it is
0ce1b118
CV
25894an error and open() fails.
25895
b383017d 25896@item O_TRUNC
0ce1b118 25897If the file already exists and the open mode allows
fc320d37
SL
25898writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be
25899truncated to zero length.
0ce1b118 25900
b383017d 25901@item O_APPEND
0ce1b118
CV
25902The file is opened in append mode.
25903
b383017d 25904@item O_RDONLY
0ce1b118
CV
25905The file is opened for reading only.
25906
b383017d 25907@item O_WRONLY
0ce1b118
CV
25908The file is opened for writing only.
25909
b383017d 25910@item O_RDWR
0ce1b118 25911The file is opened for reading and writing.
fc320d37 25912@end table
0ce1b118
CV
25913
25914@noindent
fc320d37 25915Other bits are silently ignored.
0ce1b118 25916
0ce1b118
CV
25917
25918@noindent
fc320d37 25919@var{mode} is the bitwise @code{OR} of the following values:
0ce1b118
CV
25920
25921@table @code
b383017d 25922@item S_IRUSR
0ce1b118
CV
25923User has read permission.
25924
b383017d 25925@item S_IWUSR
0ce1b118
CV
25926User has write permission.
25927
b383017d 25928@item S_IRGRP
0ce1b118
CV
25929Group has read permission.
25930
b383017d 25931@item S_IWGRP
0ce1b118
CV
25932Group has write permission.
25933
b383017d 25934@item S_IROTH
0ce1b118
CV
25935Others have read permission.
25936
b383017d 25937@item S_IWOTH
0ce1b118 25938Others have write permission.
fc320d37 25939@end table
0ce1b118
CV
25940
25941@noindent
fc320d37 25942Other bits are silently ignored.
0ce1b118 25943
0ce1b118 25944
fc320d37
SL
25945@item Return value:
25946@code{open} returns the new file descriptor or -1 if an error
25947occurred.
0ce1b118 25948
fc320d37 25949@item Errors:
0ce1b118
CV
25950
25951@table @code
b383017d 25952@item EEXIST
fc320d37 25953@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used.
0ce1b118 25954
b383017d 25955@item EISDIR
fc320d37 25956@var{pathname} refers to a directory.
0ce1b118 25957
b383017d 25958@item EACCES
0ce1b118
CV
25959The requested access is not allowed.
25960
25961@item ENAMETOOLONG
fc320d37 25962@var{pathname} was too long.
0ce1b118 25963
b383017d 25964@item ENOENT
fc320d37 25965A directory component in @var{pathname} does not exist.
0ce1b118 25966
b383017d 25967@item ENODEV
fc320d37 25968@var{pathname} refers to a device, pipe, named pipe or socket.
0ce1b118 25969
b383017d 25970@item EROFS
fc320d37 25971@var{pathname} refers to a file on a read-only filesystem and
0ce1b118
CV
25972write access was requested.
25973
b383017d 25974@item EFAULT
fc320d37 25975@var{pathname} is an invalid pointer value.
0ce1b118 25976
b383017d 25977@item ENOSPC
0ce1b118
CV
25978No space on device to create the file.
25979
b383017d 25980@item EMFILE
0ce1b118
CV
25981The process already has the maximum number of files open.
25982
b383017d 25983@item ENFILE
0ce1b118
CV
25984The limit on the total number of files open on the system
25985has been reached.
25986
b383017d 25987@item EINTR
0ce1b118
CV
25988The call was interrupted by the user.
25989@end table
25990
fc320d37
SL
25991@end table
25992
0ce1b118
CV
25993@node close
25994@unnumberedsubsubsec close
25995@cindex close, file-i/o system call
25996
fc320d37
SL
25997@table @asis
25998@item Synopsis:
0ce1b118 25999@smallexample
0ce1b118 26000int close(int fd);
fc320d37 26001@end smallexample
0ce1b118 26002
fc320d37
SL
26003@item Request:
26004@samp{Fclose,@var{fd}}
0ce1b118 26005
fc320d37
SL
26006@item Return value:
26007@code{close} returns zero on success, or -1 if an error occurred.
0ce1b118 26008
fc320d37 26009@item Errors:
0ce1b118
CV
26010
26011@table @code
b383017d 26012@item EBADF
fc320d37 26013@var{fd} isn't a valid open file descriptor.
0ce1b118 26014
b383017d 26015@item EINTR
0ce1b118
CV
26016The call was interrupted by the user.
26017@end table
26018
fc320d37
SL
26019@end table
26020
0ce1b118
CV
26021@node read
26022@unnumberedsubsubsec read
26023@cindex read, file-i/o system call
26024
fc320d37
SL
26025@table @asis
26026@item Synopsis:
0ce1b118 26027@smallexample
0ce1b118 26028int read(int fd, void *buf, unsigned int count);
fc320d37 26029@end smallexample
0ce1b118 26030
fc320d37
SL
26031@item Request:
26032@samp{Fread,@var{fd},@var{bufptr},@var{count}}
0ce1b118 26033
fc320d37 26034@item Return value:
0ce1b118
CV
26035On success, the number of bytes read is returned.
26036Zero indicates end of file. If count is zero, read
b383017d 26037returns zero as well. On error, -1 is returned.
0ce1b118 26038
fc320d37 26039@item Errors:
0ce1b118
CV
26040
26041@table @code
b383017d 26042@item EBADF
fc320d37 26043@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
26044reading.
26045
b383017d 26046@item EFAULT
fc320d37 26047@var{bufptr} is an invalid pointer value.
0ce1b118 26048
b383017d 26049@item EINTR
0ce1b118
CV
26050The call was interrupted by the user.
26051@end table
26052
fc320d37
SL
26053@end table
26054
0ce1b118
CV
26055@node write
26056@unnumberedsubsubsec write
26057@cindex write, file-i/o system call
26058
fc320d37
SL
26059@table @asis
26060@item Synopsis:
0ce1b118 26061@smallexample
0ce1b118 26062int write(int fd, const void *buf, unsigned int count);
fc320d37 26063@end smallexample
0ce1b118 26064
fc320d37
SL
26065@item Request:
26066@samp{Fwrite,@var{fd},@var{bufptr},@var{count}}
0ce1b118 26067
fc320d37 26068@item Return value:
0ce1b118
CV
26069On success, the number of bytes written are returned.
26070Zero indicates nothing was written. On error, -1
26071is returned.
26072
fc320d37 26073@item Errors:
0ce1b118
CV
26074
26075@table @code
b383017d 26076@item EBADF
fc320d37 26077@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
26078writing.
26079
b383017d 26080@item EFAULT
fc320d37 26081@var{bufptr} is an invalid pointer value.
0ce1b118 26082
b383017d 26083@item EFBIG
0ce1b118 26084An attempt was made to write a file that exceeds the
db2e3e2e 26085host-specific maximum file size allowed.
0ce1b118 26086
b383017d 26087@item ENOSPC
0ce1b118
CV
26088No space on device to write the data.
26089
b383017d 26090@item EINTR
0ce1b118
CV
26091The call was interrupted by the user.
26092@end table
26093
fc320d37
SL
26094@end table
26095
0ce1b118
CV
26096@node lseek
26097@unnumberedsubsubsec lseek
26098@cindex lseek, file-i/o system call
26099
fc320d37
SL
26100@table @asis
26101@item Synopsis:
0ce1b118 26102@smallexample
0ce1b118 26103long lseek (int fd, long offset, int flag);
0ce1b118
CV
26104@end smallexample
26105
fc320d37
SL
26106@item Request:
26107@samp{Flseek,@var{fd},@var{offset},@var{flag}}
26108
26109@var{flag} is one of:
0ce1b118
CV
26110
26111@table @code
b383017d 26112@item SEEK_SET
fc320d37 26113The offset is set to @var{offset} bytes.
0ce1b118 26114
b383017d 26115@item SEEK_CUR
fc320d37 26116The offset is set to its current location plus @var{offset}
0ce1b118
CV
26117bytes.
26118
b383017d 26119@item SEEK_END
fc320d37 26120The offset is set to the size of the file plus @var{offset}
0ce1b118
CV
26121bytes.
26122@end table
26123
fc320d37 26124@item Return value:
0ce1b118
CV
26125On success, the resulting unsigned offset in bytes from
26126the beginning of the file is returned. Otherwise, a
26127value of -1 is returned.
26128
fc320d37 26129@item Errors:
0ce1b118
CV
26130
26131@table @code
b383017d 26132@item EBADF
fc320d37 26133@var{fd} is not a valid open file descriptor.
0ce1b118 26134
b383017d 26135@item ESPIPE
fc320d37 26136@var{fd} is associated with the @value{GDBN} console.
0ce1b118 26137
b383017d 26138@item EINVAL
fc320d37 26139@var{flag} is not a proper value.
0ce1b118 26140
b383017d 26141@item EINTR
0ce1b118
CV
26142The call was interrupted by the user.
26143@end table
26144
fc320d37
SL
26145@end table
26146
0ce1b118
CV
26147@node rename
26148@unnumberedsubsubsec rename
26149@cindex rename, file-i/o system call
26150
fc320d37
SL
26151@table @asis
26152@item Synopsis:
0ce1b118 26153@smallexample
0ce1b118 26154int rename(const char *oldpath, const char *newpath);
fc320d37 26155@end smallexample
0ce1b118 26156
fc320d37
SL
26157@item Request:
26158@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}}
0ce1b118 26159
fc320d37 26160@item Return value:
0ce1b118
CV
26161On success, zero is returned. On error, -1 is returned.
26162
fc320d37 26163@item Errors:
0ce1b118
CV
26164
26165@table @code
b383017d 26166@item EISDIR
fc320d37 26167@var{newpath} is an existing directory, but @var{oldpath} is not a
0ce1b118
CV
26168directory.
26169
b383017d 26170@item EEXIST
fc320d37 26171@var{newpath} is a non-empty directory.
0ce1b118 26172
b383017d 26173@item EBUSY
fc320d37 26174@var{oldpath} or @var{newpath} is a directory that is in use by some
0ce1b118
CV
26175process.
26176
b383017d 26177@item EINVAL
0ce1b118
CV
26178An attempt was made to make a directory a subdirectory
26179of itself.
26180
b383017d 26181@item ENOTDIR
fc320d37
SL
26182A component used as a directory in @var{oldpath} or new
26183path is not a directory. Or @var{oldpath} is a directory
26184and @var{newpath} exists but is not a directory.
0ce1b118 26185
b383017d 26186@item EFAULT
fc320d37 26187@var{oldpathptr} or @var{newpathptr} are invalid pointer values.
0ce1b118 26188
b383017d 26189@item EACCES
0ce1b118
CV
26190No access to the file or the path of the file.
26191
26192@item ENAMETOOLONG
b383017d 26193
fc320d37 26194@var{oldpath} or @var{newpath} was too long.
0ce1b118 26195
b383017d 26196@item ENOENT
fc320d37 26197A directory component in @var{oldpath} or @var{newpath} does not exist.
0ce1b118 26198
b383017d 26199@item EROFS
0ce1b118
CV
26200The file is on a read-only filesystem.
26201
b383017d 26202@item ENOSPC
0ce1b118
CV
26203The device containing the file has no room for the new
26204directory entry.
26205
b383017d 26206@item EINTR
0ce1b118
CV
26207The call was interrupted by the user.
26208@end table
26209
fc320d37
SL
26210@end table
26211
0ce1b118
CV
26212@node unlink
26213@unnumberedsubsubsec unlink
26214@cindex unlink, file-i/o system call
26215
fc320d37
SL
26216@table @asis
26217@item Synopsis:
0ce1b118 26218@smallexample
0ce1b118 26219int unlink(const char *pathname);
fc320d37 26220@end smallexample
0ce1b118 26221
fc320d37
SL
26222@item Request:
26223@samp{Funlink,@var{pathnameptr}/@var{len}}
0ce1b118 26224
fc320d37 26225@item Return value:
0ce1b118
CV
26226On success, zero is returned. On error, -1 is returned.
26227
fc320d37 26228@item Errors:
0ce1b118
CV
26229
26230@table @code
b383017d 26231@item EACCES
0ce1b118
CV
26232No access to the file or the path of the file.
26233
b383017d 26234@item EPERM
0ce1b118
CV
26235The system does not allow unlinking of directories.
26236
b383017d 26237@item EBUSY
fc320d37 26238The file @var{pathname} cannot be unlinked because it's
0ce1b118
CV
26239being used by another process.
26240
b383017d 26241@item EFAULT
fc320d37 26242@var{pathnameptr} is an invalid pointer value.
0ce1b118
CV
26243
26244@item ENAMETOOLONG
fc320d37 26245@var{pathname} was too long.
0ce1b118 26246
b383017d 26247@item ENOENT
fc320d37 26248A directory component in @var{pathname} does not exist.
0ce1b118 26249
b383017d 26250@item ENOTDIR
0ce1b118
CV
26251A component of the path is not a directory.
26252
b383017d 26253@item EROFS
0ce1b118
CV
26254The file is on a read-only filesystem.
26255
b383017d 26256@item EINTR
0ce1b118
CV
26257The call was interrupted by the user.
26258@end table
26259
fc320d37
SL
26260@end table
26261
0ce1b118
CV
26262@node stat/fstat
26263@unnumberedsubsubsec stat/fstat
26264@cindex fstat, file-i/o system call
26265@cindex stat, file-i/o system call
26266
fc320d37
SL
26267@table @asis
26268@item Synopsis:
0ce1b118 26269@smallexample
0ce1b118
CV
26270int stat(const char *pathname, struct stat *buf);
26271int fstat(int fd, struct stat *buf);
fc320d37 26272@end smallexample
0ce1b118 26273
fc320d37
SL
26274@item Request:
26275@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@*
26276@samp{Ffstat,@var{fd},@var{bufptr}}
0ce1b118 26277
fc320d37 26278@item Return value:
0ce1b118
CV
26279On success, zero is returned. On error, -1 is returned.
26280
fc320d37 26281@item Errors:
0ce1b118
CV
26282
26283@table @code
b383017d 26284@item EBADF
fc320d37 26285@var{fd} is not a valid open file.
0ce1b118 26286
b383017d 26287@item ENOENT
fc320d37 26288A directory component in @var{pathname} does not exist or the
0ce1b118
CV
26289path is an empty string.
26290
b383017d 26291@item ENOTDIR
0ce1b118
CV
26292A component of the path is not a directory.
26293
b383017d 26294@item EFAULT
fc320d37 26295@var{pathnameptr} is an invalid pointer value.
0ce1b118 26296
b383017d 26297@item EACCES
0ce1b118
CV
26298No access to the file or the path of the file.
26299
26300@item ENAMETOOLONG
fc320d37 26301@var{pathname} was too long.
0ce1b118 26302
b383017d 26303@item EINTR
0ce1b118
CV
26304The call was interrupted by the user.
26305@end table
26306
fc320d37
SL
26307@end table
26308
0ce1b118
CV
26309@node gettimeofday
26310@unnumberedsubsubsec gettimeofday
26311@cindex gettimeofday, file-i/o system call
26312
fc320d37
SL
26313@table @asis
26314@item Synopsis:
0ce1b118 26315@smallexample
0ce1b118 26316int gettimeofday(struct timeval *tv, void *tz);
fc320d37 26317@end smallexample
0ce1b118 26318
fc320d37
SL
26319@item Request:
26320@samp{Fgettimeofday,@var{tvptr},@var{tzptr}}
0ce1b118 26321
fc320d37 26322@item Return value:
0ce1b118
CV
26323On success, 0 is returned, -1 otherwise.
26324
fc320d37 26325@item Errors:
0ce1b118
CV
26326
26327@table @code
b383017d 26328@item EINVAL
fc320d37 26329@var{tz} is a non-NULL pointer.
0ce1b118 26330
b383017d 26331@item EFAULT
fc320d37
SL
26332@var{tvptr} and/or @var{tzptr} is an invalid pointer value.
26333@end table
26334
0ce1b118
CV
26335@end table
26336
26337@node isatty
26338@unnumberedsubsubsec isatty
26339@cindex isatty, file-i/o system call
26340
fc320d37
SL
26341@table @asis
26342@item Synopsis:
0ce1b118 26343@smallexample
0ce1b118 26344int isatty(int fd);
fc320d37 26345@end smallexample
0ce1b118 26346
fc320d37
SL
26347@item Request:
26348@samp{Fisatty,@var{fd}}
0ce1b118 26349
fc320d37
SL
26350@item Return value:
26351Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise.
0ce1b118 26352
fc320d37 26353@item Errors:
0ce1b118
CV
26354
26355@table @code
b383017d 26356@item EINTR
0ce1b118
CV
26357The call was interrupted by the user.
26358@end table
26359
fc320d37
SL
26360@end table
26361
26362Note that the @code{isatty} call is treated as a special case: it returns
263631 to the target if the file descriptor is attached
26364to the @value{GDBN} console, 0 otherwise. Implementing through system calls
26365would require implementing @code{ioctl} and would be more complex than
26366needed.
26367
26368
0ce1b118
CV
26369@node system
26370@unnumberedsubsubsec system
26371@cindex system, file-i/o system call
26372
fc320d37
SL
26373@table @asis
26374@item Synopsis:
0ce1b118 26375@smallexample
0ce1b118 26376int system(const char *command);
fc320d37 26377@end smallexample
0ce1b118 26378
fc320d37
SL
26379@item Request:
26380@samp{Fsystem,@var{commandptr}/@var{len}}
0ce1b118 26381
fc320d37 26382@item Return value:
5600ea19
NS
26383If @var{len} is zero, the return value indicates whether a shell is
26384available. A zero return value indicates a shell is not available.
26385For non-zero @var{len}, the value returned is -1 on error and the
26386return status of the command otherwise. Only the exit status of the
26387command is returned, which is extracted from the host's @code{system}
26388return value by calling @code{WEXITSTATUS(retval)}. In case
26389@file{/bin/sh} could not be executed, 127 is returned.
0ce1b118 26390
fc320d37 26391@item Errors:
0ce1b118
CV
26392
26393@table @code
b383017d 26394@item EINTR
0ce1b118
CV
26395The call was interrupted by the user.
26396@end table
26397
fc320d37
SL
26398@end table
26399
26400@value{GDBN} takes over the full task of calling the necessary host calls
26401to perform the @code{system} call. The return value of @code{system} on
26402the host is simplified before it's returned
26403to the target. Any termination signal information from the child process
26404is discarded, and the return value consists
26405entirely of the exit status of the called command.
26406
26407Due to security concerns, the @code{system} call is by default refused
26408by @value{GDBN}. The user has to allow this call explicitly with the
26409@code{set remote system-call-allowed 1} command.
26410
26411@table @code
26412@item set remote system-call-allowed
26413@kindex set remote system-call-allowed
26414Control whether to allow the @code{system} calls in the File I/O
26415protocol for the remote target. The default is zero (disabled).
26416
26417@item show remote system-call-allowed
26418@kindex show remote system-call-allowed
26419Show whether the @code{system} calls are allowed in the File I/O
26420protocol.
26421@end table
26422
db2e3e2e
BW
26423@node Protocol-specific Representation of Datatypes
26424@subsection Protocol-specific Representation of Datatypes
26425@cindex protocol-specific representation of datatypes, in file-i/o protocol
0ce1b118
CV
26426
26427@menu
79a6e687
BW
26428* Integral Datatypes::
26429* Pointer Values::
26430* Memory Transfer::
0ce1b118
CV
26431* struct stat::
26432* struct timeval::
26433@end menu
26434
79a6e687
BW
26435@node Integral Datatypes
26436@unnumberedsubsubsec Integral Datatypes
0ce1b118
CV
26437@cindex integral datatypes, in file-i/o protocol
26438
fc320d37
SL
26439The integral datatypes used in the system calls are @code{int},
26440@code{unsigned int}, @code{long}, @code{unsigned long},
26441@code{mode_t}, and @code{time_t}.
0ce1b118 26442
fc320d37 26443@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
0ce1b118
CV
26444implemented as 32 bit values in this protocol.
26445
fc320d37 26446@code{long} and @code{unsigned long} are implemented as 64 bit types.
b383017d 26447
0ce1b118
CV
26448@xref{Limits}, for corresponding MIN and MAX values (similar to those
26449in @file{limits.h}) to allow range checking on host and target.
26450
26451@code{time_t} datatypes are defined as seconds since the Epoch.
26452
26453All integral datatypes transferred as part of a memory read or write of a
26454structured datatype e.g.@: a @code{struct stat} have to be given in big endian
26455byte order.
26456
79a6e687
BW
26457@node Pointer Values
26458@unnumberedsubsubsec Pointer Values
0ce1b118
CV
26459@cindex pointer values, in file-i/o protocol
26460
26461Pointers to target data are transmitted as they are. An exception
26462is made for pointers to buffers for which the length isn't
26463transmitted as part of the function call, namely strings. Strings
26464are transmitted as a pointer/length pair, both as hex values, e.g.@:
26465
26466@smallexample
26467@code{1aaf/12}
26468@end smallexample
26469
26470@noindent
26471which is a pointer to data of length 18 bytes at position 0x1aaf.
26472The length is defined as the full string length in bytes, including
fc320d37
SL
26473the trailing null byte. For example, the string @code{"hello world"}
26474at address 0x123456 is transmitted as
0ce1b118
CV
26475
26476@smallexample
fc320d37 26477@code{123456/d}
0ce1b118
CV
26478@end smallexample
26479
79a6e687
BW
26480@node Memory Transfer
26481@unnumberedsubsubsec Memory Transfer
fc320d37
SL
26482@cindex memory transfer, in file-i/o protocol
26483
26484Structured data which is transferred using a memory read or write (for
db2e3e2e 26485example, a @code{struct stat}) is expected to be in a protocol-specific format
fc320d37
SL
26486with all scalar multibyte datatypes being big endian. Translation to
26487this representation needs to be done both by the target before the @code{F}
26488packet is sent, and by @value{GDBN} before
26489it transfers memory to the target. Transferred pointers to structured
26490data should point to the already-coerced data at any time.
0ce1b118 26491
0ce1b118
CV
26492
26493@node struct stat
26494@unnumberedsubsubsec struct stat
26495@cindex struct stat, in file-i/o protocol
26496
fc320d37
SL
26497The buffer of type @code{struct stat} used by the target and @value{GDBN}
26498is defined as follows:
0ce1b118
CV
26499
26500@smallexample
26501struct stat @{
26502 unsigned int st_dev; /* device */
26503 unsigned int st_ino; /* inode */
26504 mode_t st_mode; /* protection */
26505 unsigned int st_nlink; /* number of hard links */
26506 unsigned int st_uid; /* user ID of owner */
26507 unsigned int st_gid; /* group ID of owner */
26508 unsigned int st_rdev; /* device type (if inode device) */
26509 unsigned long st_size; /* total size, in bytes */
26510 unsigned long st_blksize; /* blocksize for filesystem I/O */
26511 unsigned long st_blocks; /* number of blocks allocated */
26512 time_t st_atime; /* time of last access */
26513 time_t st_mtime; /* time of last modification */
26514 time_t st_ctime; /* time of last change */
26515@};
26516@end smallexample
26517
fc320d37 26518The integral datatypes conform to the definitions given in the
79a6e687 26519appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
26520structure is of size 64 bytes.
26521
26522The values of several fields have a restricted meaning and/or
26523range of values.
26524
fc320d37 26525@table @code
0ce1b118 26526
fc320d37
SL
26527@item st_dev
26528A value of 0 represents a file, 1 the console.
0ce1b118 26529
fc320d37
SL
26530@item st_ino
26531No valid meaning for the target. Transmitted unchanged.
0ce1b118 26532
fc320d37
SL
26533@item st_mode
26534Valid mode bits are described in @ref{Constants}. Any other
26535bits have currently no meaning for the target.
0ce1b118 26536
fc320d37
SL
26537@item st_uid
26538@itemx st_gid
26539@itemx st_rdev
26540No valid meaning for the target. Transmitted unchanged.
0ce1b118 26541
fc320d37
SL
26542@item st_atime
26543@itemx st_mtime
26544@itemx st_ctime
26545These values have a host and file system dependent
26546accuracy. Especially on Windows hosts, the file system may not
26547support exact timing values.
26548@end table
0ce1b118 26549
fc320d37
SL
26550The target gets a @code{struct stat} of the above representation and is
26551responsible for coercing it to the target representation before
0ce1b118
CV
26552continuing.
26553
fc320d37
SL
26554Note that due to size differences between the host, target, and protocol
26555representations of @code{struct stat} members, these members could eventually
0ce1b118
CV
26556get truncated on the target.
26557
26558@node struct timeval
26559@unnumberedsubsubsec struct timeval
26560@cindex struct timeval, in file-i/o protocol
26561
fc320d37 26562The buffer of type @code{struct timeval} used by the File-I/O protocol
0ce1b118
CV
26563is defined as follows:
26564
26565@smallexample
b383017d 26566struct timeval @{
0ce1b118
CV
26567 time_t tv_sec; /* second */
26568 long tv_usec; /* microsecond */
26569@};
26570@end smallexample
26571
fc320d37 26572The integral datatypes conform to the definitions given in the
79a6e687 26573appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
26574structure is of size 8 bytes.
26575
26576@node Constants
26577@subsection Constants
26578@cindex constants, in file-i/o protocol
26579
26580The following values are used for the constants inside of the
fc320d37 26581protocol. @value{GDBN} and target are responsible for translating these
0ce1b118
CV
26582values before and after the call as needed.
26583
26584@menu
79a6e687
BW
26585* Open Flags::
26586* mode_t Values::
26587* Errno Values::
26588* Lseek Flags::
0ce1b118
CV
26589* Limits::
26590@end menu
26591
79a6e687
BW
26592@node Open Flags
26593@unnumberedsubsubsec Open Flags
0ce1b118
CV
26594@cindex open flags, in file-i/o protocol
26595
26596All values are given in hexadecimal representation.
26597
26598@smallexample
26599 O_RDONLY 0x0
26600 O_WRONLY 0x1
26601 O_RDWR 0x2
26602 O_APPEND 0x8
26603 O_CREAT 0x200
26604 O_TRUNC 0x400
26605 O_EXCL 0x800
26606@end smallexample
26607
79a6e687
BW
26608@node mode_t Values
26609@unnumberedsubsubsec mode_t Values
0ce1b118
CV
26610@cindex mode_t values, in file-i/o protocol
26611
26612All values are given in octal representation.
26613
26614@smallexample
26615 S_IFREG 0100000
26616 S_IFDIR 040000
26617 S_IRUSR 0400
26618 S_IWUSR 0200
26619 S_IXUSR 0100
26620 S_IRGRP 040
26621 S_IWGRP 020
26622 S_IXGRP 010
26623 S_IROTH 04
26624 S_IWOTH 02
26625 S_IXOTH 01
26626@end smallexample
26627
79a6e687
BW
26628@node Errno Values
26629@unnumberedsubsubsec Errno Values
0ce1b118
CV
26630@cindex errno values, in file-i/o protocol
26631
26632All values are given in decimal representation.
26633
26634@smallexample
26635 EPERM 1
26636 ENOENT 2
26637 EINTR 4
26638 EBADF 9
26639 EACCES 13
26640 EFAULT 14
26641 EBUSY 16
26642 EEXIST 17
26643 ENODEV 19
26644 ENOTDIR 20
26645 EISDIR 21
26646 EINVAL 22
26647 ENFILE 23
26648 EMFILE 24
26649 EFBIG 27
26650 ENOSPC 28
26651 ESPIPE 29
26652 EROFS 30
26653 ENAMETOOLONG 91
26654 EUNKNOWN 9999
26655@end smallexample
26656
fc320d37 26657 @code{EUNKNOWN} is used as a fallback error value if a host system returns
0ce1b118
CV
26658 any error value not in the list of supported error numbers.
26659
79a6e687
BW
26660@node Lseek Flags
26661@unnumberedsubsubsec Lseek Flags
0ce1b118
CV
26662@cindex lseek flags, in file-i/o protocol
26663
26664@smallexample
26665 SEEK_SET 0
26666 SEEK_CUR 1
26667 SEEK_END 2
26668@end smallexample
26669
26670@node Limits
26671@unnumberedsubsubsec Limits
26672@cindex limits, in file-i/o protocol
26673
26674All values are given in decimal representation.
26675
26676@smallexample
26677 INT_MIN -2147483648
26678 INT_MAX 2147483647
26679 UINT_MAX 4294967295
26680 LONG_MIN -9223372036854775808
26681 LONG_MAX 9223372036854775807
26682 ULONG_MAX 18446744073709551615
26683@end smallexample
26684
26685@node File-I/O Examples
26686@subsection File-I/O Examples
26687@cindex file-i/o examples
26688
26689Example sequence of a write call, file descriptor 3, buffer is at target
26690address 0x1234, 6 bytes should be written:
26691
26692@smallexample
26693<- @code{Fwrite,3,1234,6}
26694@emph{request memory read from target}
26695-> @code{m1234,6}
26696<- XXXXXX
26697@emph{return "6 bytes written"}
26698-> @code{F6}
26699@end smallexample
26700
26701Example sequence of a read call, file descriptor 3, buffer is at target
26702address 0x1234, 6 bytes should be read:
26703
26704@smallexample
26705<- @code{Fread,3,1234,6}
26706@emph{request memory write to target}
26707-> @code{X1234,6:XXXXXX}
26708@emph{return "6 bytes read"}
26709-> @code{F6}
26710@end smallexample
26711
26712Example sequence of a read call, call fails on the host due to invalid
fc320d37 26713file descriptor (@code{EBADF}):
0ce1b118
CV
26714
26715@smallexample
26716<- @code{Fread,3,1234,6}
26717-> @code{F-1,9}
26718@end smallexample
26719
c8aa23ab 26720Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on
0ce1b118
CV
26721host is called:
26722
26723@smallexample
26724<- @code{Fread,3,1234,6}
26725-> @code{F-1,4,C}
26726<- @code{T02}
26727@end smallexample
26728
c8aa23ab 26729Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on
0ce1b118
CV
26730host is called:
26731
26732@smallexample
26733<- @code{Fread,3,1234,6}
26734-> @code{X1234,6:XXXXXX}
26735<- @code{T02}
26736@end smallexample
26737
cfa9d6d9
DJ
26738@node Library List Format
26739@section Library List Format
26740@cindex library list format, remote protocol
26741
26742On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the
26743same process as your application to manage libraries. In this case,
26744@value{GDBN} can use the loader's symbol table and normal memory
26745operations to maintain a list of shared libraries. On other
26746platforms, the operating system manages loaded libraries.
26747@value{GDBN} can not retrieve the list of currently loaded libraries
26748through memory operations, so it uses the @samp{qXfer:libraries:read}
26749packet (@pxref{qXfer library list read}) instead. The remote stub
26750queries the target's operating system and reports which libraries
26751are loaded.
26752
26753The @samp{qXfer:libraries:read} packet returns an XML document which
26754lists loaded libraries and their offsets. Each library has an
1fddbabb
PA
26755associated name and one or more segment or section base addresses,
26756which report where the library was loaded in memory.
26757
26758For the common case of libraries that are fully linked binaries, the
26759library should have a list of segments. If the target supports
26760dynamic linking of a relocatable object file, its library XML element
26761should instead include a list of allocated sections. The segment or
26762section bases are start addresses, not relocation offsets; they do not
26763depend on the library's link-time base addresses.
cfa9d6d9 26764
9cceb671
DJ
26765@value{GDBN} must be linked with the Expat library to support XML
26766library lists. @xref{Expat}.
26767
cfa9d6d9
DJ
26768A simple memory map, with one loaded library relocated by a single
26769offset, looks like this:
26770
26771@smallexample
26772<library-list>
26773 <library name="/lib/libc.so.6">
26774 <segment address="0x10000000"/>
26775 </library>
26776</library-list>
26777@end smallexample
26778
1fddbabb
PA
26779Another simple memory map, with one loaded library with three
26780allocated sections (.text, .data, .bss), looks like this:
26781
26782@smallexample
26783<library-list>
26784 <library name="sharedlib.o">
26785 <section address="0x10000000"/>
26786 <section address="0x20000000"/>
26787 <section address="0x30000000"/>
26788 </library>
26789</library-list>
26790@end smallexample
26791
cfa9d6d9
DJ
26792The format of a library list is described by this DTD:
26793
26794@smallexample
26795<!-- library-list: Root element with versioning -->
26796<!ELEMENT library-list (library)*>
26797<!ATTLIST library-list version CDATA #FIXED "1.0">
1fddbabb 26798<!ELEMENT library (segment*, section*)>
cfa9d6d9
DJ
26799<!ATTLIST library name CDATA #REQUIRED>
26800<!ELEMENT segment EMPTY>
26801<!ATTLIST segment address CDATA #REQUIRED>
1fddbabb
PA
26802<!ELEMENT section EMPTY>
26803<!ATTLIST section address CDATA #REQUIRED>
cfa9d6d9
DJ
26804@end smallexample
26805
1fddbabb
PA
26806In addition, segments and section descriptors cannot be mixed within a
26807single library element, and you must supply at least one segment or
26808section for each library.
26809
79a6e687
BW
26810@node Memory Map Format
26811@section Memory Map Format
68437a39
DJ
26812@cindex memory map format
26813
26814To be able to write into flash memory, @value{GDBN} needs to obtain a
26815memory map from the target. This section describes the format of the
26816memory map.
26817
26818The memory map is obtained using the @samp{qXfer:memory-map:read}
26819(@pxref{qXfer memory map read}) packet and is an XML document that
9cceb671
DJ
26820lists memory regions.
26821
26822@value{GDBN} must be linked with the Expat library to support XML
26823memory maps. @xref{Expat}.
26824
26825The top-level structure of the document is shown below:
68437a39
DJ
26826
26827@smallexample
26828<?xml version="1.0"?>
26829<!DOCTYPE memory-map
26830 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
26831 "http://sourceware.org/gdb/gdb-memory-map.dtd">
26832<memory-map>
26833 region...
26834</memory-map>
26835@end smallexample
26836
26837Each region can be either:
26838
26839@itemize
26840
26841@item
26842A region of RAM starting at @var{addr} and extending for @var{length}
26843bytes from there:
26844
26845@smallexample
26846<memory type="ram" start="@var{addr}" length="@var{length}"/>
26847@end smallexample
26848
26849
26850@item
26851A region of read-only memory:
26852
26853@smallexample
26854<memory type="rom" start="@var{addr}" length="@var{length}"/>
26855@end smallexample
26856
26857
26858@item
26859A region of flash memory, with erasure blocks @var{blocksize}
26860bytes in length:
26861
26862@smallexample
26863<memory type="flash" start="@var{addr}" length="@var{length}">
26864 <property name="blocksize">@var{blocksize}</property>
26865</memory>
26866@end smallexample
26867
26868@end itemize
26869
26870Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
26871by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
26872packets to write to addresses in such ranges.
26873
26874The formal DTD for memory map format is given below:
26875
26876@smallexample
26877<!-- ................................................... -->
26878<!-- Memory Map XML DTD ................................ -->
26879<!-- File: memory-map.dtd .............................. -->
26880<!-- .................................... .............. -->
26881<!-- memory-map.dtd -->
26882<!-- memory-map: Root element with versioning -->
26883<!ELEMENT memory-map (memory | property)>
26884<!ATTLIST memory-map version CDATA #FIXED "1.0.0">
26885<!ELEMENT memory (property)>
26886<!-- memory: Specifies a memory region,
26887 and its type, or device. -->
26888<!ATTLIST memory type CDATA #REQUIRED
26889 start CDATA #REQUIRED
26890 length CDATA #REQUIRED
26891 device CDATA #IMPLIED>
26892<!-- property: Generic attribute tag -->
26893<!ELEMENT property (#PCDATA | property)*>
26894<!ATTLIST property name CDATA #REQUIRED>
26895@end smallexample
26896
f418dd93
DJ
26897@include agentexpr.texi
26898
23181151
DJ
26899@node Target Descriptions
26900@appendix Target Descriptions
26901@cindex target descriptions
26902
26903@strong{Warning:} target descriptions are still under active development,
26904and the contents and format may change between @value{GDBN} releases.
26905The format is expected to stabilize in the future.
26906
26907One of the challenges of using @value{GDBN} to debug embedded systems
26908is that there are so many minor variants of each processor
26909architecture in use. It is common practice for vendors to start with
26910a standard processor core --- ARM, PowerPC, or MIPS, for example ---
26911and then make changes to adapt it to a particular market niche. Some
26912architectures have hundreds of variants, available from dozens of
26913vendors. This leads to a number of problems:
26914
26915@itemize @bullet
26916@item
26917With so many different customized processors, it is difficult for
26918the @value{GDBN} maintainers to keep up with the changes.
26919@item
26920Since individual variants may have short lifetimes or limited
26921audiences, it may not be worthwhile to carry information about every
26922variant in the @value{GDBN} source tree.
26923@item
26924When @value{GDBN} does support the architecture of the embedded system
26925at hand, the task of finding the correct architecture name to give the
26926@command{set architecture} command can be error-prone.
26927@end itemize
26928
26929To address these problems, the @value{GDBN} remote protocol allows a
26930target system to not only identify itself to @value{GDBN}, but to
26931actually describe its own features. This lets @value{GDBN} support
26932processor variants it has never seen before --- to the extent that the
26933descriptions are accurate, and that @value{GDBN} understands them.
26934
9cceb671
DJ
26935@value{GDBN} must be linked with the Expat library to support XML
26936target descriptions. @xref{Expat}.
123dc839 26937
23181151
DJ
26938@menu
26939* Retrieving Descriptions:: How descriptions are fetched from a target.
26940* Target Description Format:: The contents of a target description.
123dc839
DJ
26941* Predefined Target Types:: Standard types available for target
26942 descriptions.
26943* Standard Target Features:: Features @value{GDBN} knows about.
23181151
DJ
26944@end menu
26945
26946@node Retrieving Descriptions
26947@section Retrieving Descriptions
26948
26949Target descriptions can be read from the target automatically, or
26950specified by the user manually. The default behavior is to read the
26951description from the target. @value{GDBN} retrieves it via the remote
26952protocol using @samp{qXfer} requests (@pxref{General Query Packets,
26953qXfer}). The @var{annex} in the @samp{qXfer} packet will be
26954@samp{target.xml}. The contents of the @samp{target.xml} annex are an
26955XML document, of the form described in @ref{Target Description
26956Format}.
26957
26958Alternatively, you can specify a file to read for the target description.
26959If a file is set, the target will not be queried. The commands to
26960specify a file are:
26961
26962@table @code
26963@cindex set tdesc filename
26964@item set tdesc filename @var{path}
26965Read the target description from @var{path}.
26966
26967@cindex unset tdesc filename
26968@item unset tdesc filename
26969Do not read the XML target description from a file. @value{GDBN}
26970will use the description supplied by the current target.
26971
26972@cindex show tdesc filename
26973@item show tdesc filename
26974Show the filename to read for a target description, if any.
26975@end table
26976
26977
26978@node Target Description Format
26979@section Target Description Format
26980@cindex target descriptions, XML format
26981
26982A target description annex is an @uref{http://www.w3.org/XML/, XML}
26983document which complies with the Document Type Definition provided in
26984the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This
26985means you can use generally available tools like @command{xmllint} to
26986check that your feature descriptions are well-formed and valid.
26987However, to help people unfamiliar with XML write descriptions for
26988their targets, we also describe the grammar here.
26989
123dc839
DJ
26990Target descriptions can identify the architecture of the remote target
26991and (for some architectures) provide information about custom register
26992sets. @value{GDBN} can use this information to autoconfigure for your
26993target, or to warn you if you connect to an unsupported target.
23181151
DJ
26994
26995Here is a simple target description:
26996
123dc839 26997@smallexample
1780a0ed 26998<target version="1.0">
23181151
DJ
26999 <architecture>i386:x86-64</architecture>
27000</target>
123dc839 27001@end smallexample
23181151
DJ
27002
27003@noindent
27004This minimal description only says that the target uses
27005the x86-64 architecture.
27006
123dc839
DJ
27007A target description has the following overall form, with [ ] marking
27008optional elements and @dots{} marking repeatable elements. The elements
27009are explained further below.
23181151 27010
123dc839 27011@smallexample
23181151
DJ
27012<?xml version="1.0"?>
27013<!DOCTYPE target SYSTEM "gdb-target.dtd">
1780a0ed 27014<target version="1.0">
123dc839
DJ
27015 @r{[}@var{architecture}@r{]}
27016 @r{[}@var{feature}@dots{}@r{]}
23181151 27017</target>
123dc839 27018@end smallexample
23181151
DJ
27019
27020@noindent
27021The description is generally insensitive to whitespace and line
27022breaks, under the usual common-sense rules. The XML version
27023declaration and document type declaration can generally be omitted
27024(@value{GDBN} does not require them), but specifying them may be
1780a0ed
DJ
27025useful for XML validation tools. The @samp{version} attribute for
27026@samp{<target>} may also be omitted, but we recommend
27027including it; if future versions of @value{GDBN} use an incompatible
27028revision of @file{gdb-target.dtd}, they will detect and report
27029the version mismatch.
23181151 27030
108546a0
DJ
27031@subsection Inclusion
27032@cindex target descriptions, inclusion
27033@cindex XInclude
27034@ifnotinfo
27035@cindex <xi:include>
27036@end ifnotinfo
27037
27038It can sometimes be valuable to split a target description up into
27039several different annexes, either for organizational purposes, or to
27040share files between different possible target descriptions. You can
27041divide a description into multiple files by replacing any element of
27042the target description with an inclusion directive of the form:
27043
123dc839 27044@smallexample
108546a0 27045<xi:include href="@var{document}"/>
123dc839 27046@end smallexample
108546a0
DJ
27047
27048@noindent
27049When @value{GDBN} encounters an element of this form, it will retrieve
27050the named XML @var{document}, and replace the inclusion directive with
27051the contents of that document. If the current description was read
27052using @samp{qXfer}, then so will be the included document;
27053@var{document} will be interpreted as the name of an annex. If the
27054current description was read from a file, @value{GDBN} will look for
27055@var{document} as a file in the same directory where it found the
27056original description.
27057
123dc839
DJ
27058@subsection Architecture
27059@cindex <architecture>
27060
27061An @samp{<architecture>} element has this form:
27062
27063@smallexample
27064 <architecture>@var{arch}</architecture>
27065@end smallexample
27066
27067@var{arch} is an architecture name from the same selection
27068accepted by @code{set architecture} (@pxref{Targets, ,Specifying a
27069Debugging Target}).
27070
27071@subsection Features
27072@cindex <feature>
27073
27074Each @samp{<feature>} describes some logical portion of the target
27075system. Features are currently used to describe available CPU
27076registers and the types of their contents. A @samp{<feature>} element
27077has this form:
27078
27079@smallexample
27080<feature name="@var{name}">
27081 @r{[}@var{type}@dots{}@r{]}
27082 @var{reg}@dots{}
27083</feature>
27084@end smallexample
27085
27086@noindent
27087Each feature's name should be unique within the description. The name
27088of a feature does not matter unless @value{GDBN} has some special
27089knowledge of the contents of that feature; if it does, the feature
27090should have its standard name. @xref{Standard Target Features}.
27091
27092@subsection Types
27093
27094Any register's value is a collection of bits which @value{GDBN} must
27095interpret. The default interpretation is a two's complement integer,
27096but other types can be requested by name in the register description.
27097Some predefined types are provided by @value{GDBN} (@pxref{Predefined
27098Target Types}), and the description can define additional composite types.
27099
27100Each type element must have an @samp{id} attribute, which gives
27101a unique (within the containing @samp{<feature>}) name to the type.
27102Types must be defined before they are used.
27103
27104@cindex <vector>
27105Some targets offer vector registers, which can be treated as arrays
27106of scalar elements. These types are written as @samp{<vector>} elements,
27107specifying the array element type, @var{type}, and the number of elements,
27108@var{count}:
27109
27110@smallexample
27111<vector id="@var{id}" type="@var{type}" count="@var{count}"/>
27112@end smallexample
27113
27114@cindex <union>
27115If a register's value is usefully viewed in multiple ways, define it
27116with a union type containing the useful representations. The
27117@samp{<union>} element contains one or more @samp{<field>} elements,
27118each of which has a @var{name} and a @var{type}:
27119
27120@smallexample
27121<union id="@var{id}">
27122 <field name="@var{name}" type="@var{type}"/>
27123 @dots{}
27124</union>
27125@end smallexample
27126
27127@subsection Registers
27128@cindex <reg>
27129
27130Each register is represented as an element with this form:
27131
27132@smallexample
27133<reg name="@var{name}"
27134 bitsize="@var{size}"
27135 @r{[}regnum="@var{num}"@r{]}
27136 @r{[}save-restore="@var{save-restore}"@r{]}
27137 @r{[}type="@var{type}"@r{]}
27138 @r{[}group="@var{group}"@r{]}/>
27139@end smallexample
27140
27141@noindent
27142The components are as follows:
27143
27144@table @var
27145
27146@item name
27147The register's name; it must be unique within the target description.
27148
27149@item bitsize
27150The register's size, in bits.
27151
27152@item regnum
27153The register's number. If omitted, a register's number is one greater
27154than that of the previous register (either in the current feature or in
27155a preceeding feature); the first register in the target description
27156defaults to zero. This register number is used to read or write
27157the register; e.g.@: it is used in the remote @code{p} and @code{P}
27158packets, and registers appear in the @code{g} and @code{G} packets
27159in order of increasing register number.
27160
27161@item save-restore
27162Whether the register should be preserved across inferior function
27163calls; this must be either @code{yes} or @code{no}. The default is
27164@code{yes}, which is appropriate for most registers except for
27165some system control registers; this is not related to the target's
27166ABI.
27167
27168@item type
27169The type of the register. @var{type} may be a predefined type, a type
27170defined in the current feature, or one of the special types @code{int}
27171and @code{float}. @code{int} is an integer type of the correct size
27172for @var{bitsize}, and @code{float} is a floating point type (in the
27173architecture's normal floating point format) of the correct size for
27174@var{bitsize}. The default is @code{int}.
27175
27176@item group
27177The register group to which this register belongs. @var{group} must
27178be either @code{general}, @code{float}, or @code{vector}. If no
27179@var{group} is specified, @value{GDBN} will not display the register
27180in @code{info registers}.
27181
27182@end table
27183
27184@node Predefined Target Types
27185@section Predefined Target Types
27186@cindex target descriptions, predefined types
27187
27188Type definitions in the self-description can build up composite types
27189from basic building blocks, but can not define fundamental types. Instead,
27190standard identifiers are provided by @value{GDBN} for the fundamental
27191types. The currently supported types are:
27192
27193@table @code
27194
27195@item int8
27196@itemx int16
27197@itemx int32
27198@itemx int64
7cc46491 27199@itemx int128
123dc839
DJ
27200Signed integer types holding the specified number of bits.
27201
27202@item uint8
27203@itemx uint16
27204@itemx uint32
27205@itemx uint64
7cc46491 27206@itemx uint128
123dc839
DJ
27207Unsigned integer types holding the specified number of bits.
27208
27209@item code_ptr
27210@itemx data_ptr
27211Pointers to unspecified code and data. The program counter and
27212any dedicated return address register may be marked as code
27213pointers; printing a code pointer converts it into a symbolic
27214address. The stack pointer and any dedicated address registers
27215may be marked as data pointers.
27216
6e3bbd1a
PB
27217@item ieee_single
27218Single precision IEEE floating point.
27219
27220@item ieee_double
27221Double precision IEEE floating point.
27222
123dc839
DJ
27223@item arm_fpa_ext
27224The 12-byte extended precision format used by ARM FPA registers.
27225
27226@end table
27227
27228@node Standard Target Features
27229@section Standard Target Features
27230@cindex target descriptions, standard features
27231
27232A target description must contain either no registers or all the
27233target's registers. If the description contains no registers, then
27234@value{GDBN} will assume a default register layout, selected based on
27235the architecture. If the description contains any registers, the
27236default layout will not be used; the standard registers must be
27237described in the target description, in such a way that @value{GDBN}
27238can recognize them.
27239
27240This is accomplished by giving specific names to feature elements
27241which contain standard registers. @value{GDBN} will look for features
27242with those names and verify that they contain the expected registers;
27243if any known feature is missing required registers, or if any required
27244feature is missing, @value{GDBN} will reject the target
27245description. You can add additional registers to any of the
27246standard features --- @value{GDBN} will display them just as if
27247they were added to an unrecognized feature.
27248
27249This section lists the known features and their expected contents.
27250Sample XML documents for these features are included in the
27251@value{GDBN} source tree, in the directory @file{gdb/features}.
27252
27253Names recognized by @value{GDBN} should include the name of the
27254company or organization which selected the name, and the overall
27255architecture to which the feature applies; so e.g.@: the feature
27256containing ARM core registers is named @samp{org.gnu.gdb.arm.core}.
27257
ff6f572f
DJ
27258The names of registers are not case sensitive for the purpose
27259of recognizing standard features, but @value{GDBN} will only display
27260registers using the capitalization used in the description.
27261
e9c17194
VP
27262@menu
27263* ARM Features::
1e26b4f8 27264* MIPS Features::
e9c17194 27265* M68K Features::
1e26b4f8 27266* PowerPC Features::
e9c17194
VP
27267@end menu
27268
27269
27270@node ARM Features
123dc839
DJ
27271@subsection ARM Features
27272@cindex target descriptions, ARM features
27273
27274The @samp{org.gnu.gdb.arm.core} feature is required for ARM targets.
27275It should contain registers @samp{r0} through @samp{r13}, @samp{sp},
27276@samp{lr}, @samp{pc}, and @samp{cpsr}.
27277
27278The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it
27279should contain registers @samp{f0} through @samp{f7} and @samp{fps}.
27280
ff6f572f
DJ
27281The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present,
27282it should contain at least registers @samp{wR0} through @samp{wR15} and
27283@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon},
27284@samp{wCSSF}, and @samp{wCASF} registers are optional.
23181151 27285
1e26b4f8 27286@node MIPS Features
f8b73d13
DJ
27287@subsection MIPS Features
27288@cindex target descriptions, MIPS features
27289
27290The @samp{org.gnu.gdb.mips.cpu} feature is required for MIPS targets.
27291It should contain registers @samp{r0} through @samp{r31}, @samp{lo},
27292@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending
27293on the target.
27294
27295The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should
27296contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause}
27297registers. They may be 32-bit or 64-bit depending on the target.
27298
27299The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though
27300it may be optional in a future version of @value{GDBN}. It should
27301contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and
27302@samp{fir}. They may be 32-bit or 64-bit depending on the target.
27303
822b6570
DJ
27304The @samp{org.gnu.gdb.mips.linux} feature is optional. It should
27305contain a single register, @samp{restart}, which is used by the
27306Linux kernel to control restartable syscalls.
27307
e9c17194
VP
27308@node M68K Features
27309@subsection M68K Features
27310@cindex target descriptions, M68K features
27311
27312@table @code
27313@item @samp{org.gnu.gdb.m68k.core}
27314@itemx @samp{org.gnu.gdb.coldfire.core}
27315@itemx @samp{org.gnu.gdb.fido.core}
27316One of those features must be always present.
27317The feature that is present determines which flavor of m86k is
27318used. The feature that is present should contain registers
27319@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp},
27320@samp{sp}, @samp{ps} and @samp{pc}.
27321
27322@item @samp{org.gnu.gdb.coldfire.fp}
27323This feature is optional. If present, it should contain registers
27324@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
27325@samp{fpiaddr}.
27326@end table
27327
1e26b4f8 27328@node PowerPC Features
7cc46491
DJ
27329@subsection PowerPC Features
27330@cindex target descriptions, PowerPC features
27331
27332The @samp{org.gnu.gdb.power.core} feature is required for PowerPC
27333targets. It should contain registers @samp{r0} through @samp{r31},
27334@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and
27335@samp{xer}. They may be 32-bit or 64-bit depending on the target.
27336
27337The @samp{org.gnu.gdb.power.fpu} feature is optional. It should
27338contain registers @samp{f0} through @samp{f31} and @samp{fpscr}.
27339
27340The @samp{org.gnu.gdb.power.altivec} feature is optional. It should
27341contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
27342and @samp{vrsave}.
27343
27344The @samp{org.gnu.gdb.power.spe} feature is optional. It should
27345contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
27346@samp{spefscr}. SPE targets should provide 32-bit registers in
27347@samp{org.gnu.gdb.power.core} and provide the upper halves in
27348@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine
27349these to present registers @samp{ev0} through @samp{ev31} to the
27350user.
27351
aab4e0ec 27352@include gpl.texi
eb12ee30 27353
2154891a 27354@raisesections
6826cf00 27355@include fdl.texi
2154891a 27356@lowersections
6826cf00 27357
6d2ebf8b 27358@node Index
c906108c
SS
27359@unnumbered Index
27360
27361@printindex cp
27362
27363@tex
27364% I think something like @colophon should be in texinfo. In the
27365% meantime:
27366\long\def\colophon{\hbox to0pt{}\vfill
27367\centerline{The body of this manual is set in}
27368\centerline{\fontname\tenrm,}
27369\centerline{with headings in {\bf\fontname\tenbf}}
27370\centerline{and examples in {\tt\fontname\tentt}.}
27371\centerline{{\it\fontname\tenit\/},}
27372\centerline{{\bf\fontname\tenbf}, and}
27373\centerline{{\sl\fontname\tensl\/}}
27374\centerline{are used for emphasis.}\vfill}
27375\page\colophon
27376% Blame: doc@cygnus.com, 1991.
27377@end tex
27378
c906108c 27379@bye
This page took 2.832179 seconds and 4 git commands to generate.