* value.c (show_convenience): Tweak comment.
[deliverable/binutils-gdb.git] / gdb / doc / gdb.texinfo
CommitLineData
c906108c 1\input texinfo @c -*-texinfo-*-
0b302171 2@c Copyright (C) 1988-1996, 1998-2012 Free Software Foundation, Inc.
c906108c 3@c
5d161b24 4@c %**start of header
c906108c
SS
5@c makeinfo ignores cmds prev to setfilename, so its arg cannot make use
6@c of @set vars. However, you can override filename with makeinfo -o.
7@setfilename gdb.info
8@c
9@include gdb-cfg.texi
10@c
c906108c 11@settitle Debugging with @value{GDBN}
c906108c
SS
12@setchapternewpage odd
13@c %**end of header
14
15@iftex
16@c @smallbook
17@c @cropmarks
18@end iftex
19
20@finalout
00595b5e
EZ
21@c To avoid file-name clashes between index.html and Index.html, when
22@c the manual is produced on a Posix host and then moved to a
23@c case-insensitive filesystem (e.g., MS-Windows), we separate the
24@c indices into two: Concept Index and all the rest.
25@syncodeindex ky fn
26@syncodeindex tp fn
c906108c 27
41afff9a 28@c readline appendices use @vindex, @findex and @ftable,
48e934c6 29@c annotate.texi and gdbmi use @findex.
00595b5e
EZ
30@syncodeindex vr fn
31@syncodeindex fn fn
c906108c
SS
32
33@c !!set GDB manual's edition---not the same as GDB version!
9fe8321b 34@c This is updated by GNU Press.
26829f2b 35@set EDITION Tenth
c906108c 36
87885426
FN
37@c !!set GDB edit command default editor
38@set EDITOR /bin/ex
c906108c 39
6c0e9fb3 40@c THIS MANUAL REQUIRES TEXINFO 4.0 OR LATER.
c906108c 41
c906108c 42@c This is a dir.info fragment to support semi-automated addition of
6d2ebf8b 43@c manuals to an info tree.
03727ca6 44@dircategory Software development
96a2c332 45@direntry
03727ca6 46* Gdb: (gdb). The GNU debugger.
96a2c332
SS
47@end direntry
48
a67ec3f4
JM
49@copying
50Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
9d2897ad 511998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
6bd110c5 522011, 2012
a67ec3f4 53Free Software Foundation, Inc.
c906108c 54
e9c75b65 55Permission is granted to copy, distribute and/or modify this document
4f5d9f07 56under the terms of the GNU Free Documentation License, Version 1.3 or
e9c75b65 57any later version published by the Free Software Foundation; with the
959acfd1
EZ
58Invariant Sections being ``Free Software'' and ``Free Software Needs
59Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,''
60and with the Back-Cover Texts as in (a) below.
c906108c 61
b8533aec
DJ
62(a) The FSF's Back-Cover Text is: ``You are free to copy and modify
63this GNU Manual. Buying copies from GNU Press supports the FSF in
64developing GNU and promoting software freedom.''
a67ec3f4
JM
65@end copying
66
67@ifnottex
68This file documents the @sc{gnu} debugger @value{GDBN}.
69
70This is the @value{EDITION} Edition, of @cite{Debugging with
71@value{GDBN}: the @sc{gnu} Source-Level Debugger} for @value{GDBN}
72@ifset VERSION_PACKAGE
73@value{VERSION_PACKAGE}
74@end ifset
75Version @value{GDBVN}.
76
77@insertcopying
78@end ifnottex
c906108c
SS
79
80@titlepage
81@title Debugging with @value{GDBN}
82@subtitle The @sc{gnu} Source-Level Debugger
c906108c 83@sp 1
c906108c 84@subtitle @value{EDITION} Edition, for @value{GDBN} version @value{GDBVN}
c16158bc
JM
85@ifset VERSION_PACKAGE
86@sp 1
87@subtitle @value{VERSION_PACKAGE}
88@end ifset
9e9c5ae7 89@author Richard Stallman, Roland Pesch, Stan Shebs, et al.
c906108c 90@page
c906108c
SS
91@tex
92{\parskip=0pt
c16158bc 93\hfill (Send bugs and comments on @value{GDBN} to @value{BUGURL}.)\par
c906108c
SS
94\hfill {\it Debugging with @value{GDBN}}\par
95\hfill \TeX{}info \texinfoversion\par
96}
97@end tex
53a5351d 98
c906108c 99@vskip 0pt plus 1filll
c906108c 100Published by the Free Software Foundation @*
c02a867d
EZ
10151 Franklin Street, Fifth Floor,
102Boston, MA 02110-1301, USA@*
26829f2b 103ISBN 978-0-9831592-3-0 @*
e9c75b65 104
a67ec3f4 105@insertcopying
c906108c
SS
106@end titlepage
107@page
108
6c0e9fb3 109@ifnottex
6d2ebf8b
SS
110@node Top, Summary, (dir), (dir)
111
c906108c
SS
112@top Debugging with @value{GDBN}
113
114This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
115
c16158bc
JM
116This is the @value{EDITION} Edition, for @value{GDBN}
117@ifset VERSION_PACKAGE
118@value{VERSION_PACKAGE}
119@end ifset
120Version @value{GDBVN}.
c906108c 121
6bd110c5 122Copyright (C) 1988-2012 Free Software Foundation, Inc.
6d2ebf8b 123
3fb6a982
JB
124This edition of the GDB manual is dedicated to the memory of Fred
125Fish. Fred was a long-standing contributor to GDB and to Free
126software in general. We will miss him.
127
6d2ebf8b
SS
128@menu
129* Summary:: Summary of @value{GDBN}
130* Sample Session:: A sample @value{GDBN} session
131
132* Invocation:: Getting in and out of @value{GDBN}
133* Commands:: @value{GDBN} commands
134* Running:: Running programs under @value{GDBN}
135* Stopping:: Stopping and continuing
bacec72f 136* Reverse Execution:: Running programs backward
a2311334 137* Process Record and Replay:: Recording inferior's execution and replaying it
6d2ebf8b
SS
138* Stack:: Examining the stack
139* Source:: Examining source files
140* Data:: Examining data
edb3359d 141* Optimized Code:: Debugging optimized code
e2e0bcd1 142* Macros:: Preprocessor Macros
b37052ae 143* Tracepoints:: Debugging remote targets non-intrusively
df0cd8c5 144* Overlays:: Debugging programs that use overlays
6d2ebf8b
SS
145
146* Languages:: Using @value{GDBN} with different languages
147
148* Symbols:: Examining the symbol table
149* Altering:: Altering execution
150* GDB Files:: @value{GDBN} files
151* Targets:: Specifying a debugging target
6b2f586d 152* Remote Debugging:: Debugging remote programs
6d2ebf8b
SS
153* Configurations:: Configuration-specific information
154* Controlling GDB:: Controlling @value{GDBN}
d57a3c85 155* Extending GDB:: Extending @value{GDBN}
21c294e6 156* Interpreters:: Command Interpreters
c8f4133a 157* TUI:: @value{GDBN} Text User Interface
6d2ebf8b 158* Emacs:: Using @value{GDBN} under @sc{gnu} Emacs
7162c0ca 159* GDB/MI:: @value{GDBN}'s Machine Interface.
c8f4133a 160* Annotations:: @value{GDBN}'s annotation interface.
4efc6507 161* JIT Interface:: Using the JIT debugging interface.
d1feda86 162* In-Process Agent:: In-Process Agent
6d2ebf8b
SS
163
164* GDB Bugs:: Reporting bugs in @value{GDBN}
6d2ebf8b 165
39037522
TT
166@ifset SYSTEM_READLINE
167* Command Line Editing: (rluserman). Command Line Editing
168* Using History Interactively: (history). Using History Interactively
169@end ifset
170@ifclear SYSTEM_READLINE
6d2ebf8b
SS
171* Command Line Editing:: Command Line Editing
172* Using History Interactively:: Using History Interactively
39037522 173@end ifclear
4ceed123 174* In Memoriam:: In Memoriam
0869d01b 175* Formatting Documentation:: How to format and print @value{GDBN} documentation
6d2ebf8b 176* Installing GDB:: Installing GDB
eb12ee30 177* Maintenance Commands:: Maintenance Commands
e0ce93ac 178* Remote Protocol:: GDB Remote Serial Protocol
f418dd93 179* Agent Expressions:: The GDB Agent Expression Mechanism
23181151
DJ
180* Target Descriptions:: How targets can describe themselves to
181 @value{GDBN}
07e059b5
VP
182* Operating System Information:: Getting additional information from
183 the operating system
00bf0b85 184* Trace File Format:: GDB trace file format
90476074 185* Index Section Format:: .gdb_index section format
aab4e0ec
AC
186* Copying:: GNU General Public License says
187 how you can copy and share GDB
6826cf00 188* GNU Free Documentation License:: The license for this documentation
00595b5e
EZ
189* Concept Index:: Index of @value{GDBN} concepts
190* Command and Variable Index:: Index of @value{GDBN} commands, variables,
191 functions, and Python data types
6d2ebf8b
SS
192@end menu
193
6c0e9fb3 194@end ifnottex
c906108c 195
449f3b6c 196@contents
449f3b6c 197
6d2ebf8b 198@node Summary
c906108c
SS
199@unnumbered Summary of @value{GDBN}
200
201The purpose of a debugger such as @value{GDBN} is to allow you to see what is
202going on ``inside'' another program while it executes---or what another
203program was doing at the moment it crashed.
204
205@value{GDBN} can do four main kinds of things (plus other things in support of
206these) to help you catch bugs in the act:
207
208@itemize @bullet
209@item
210Start your program, specifying anything that might affect its behavior.
211
212@item
213Make your program stop on specified conditions.
214
215@item
216Examine what has happened, when your program has stopped.
217
218@item
219Change things in your program, so you can experiment with correcting the
220effects of one bug and go on to learn about another.
221@end itemize
222
49efadf5 223You can use @value{GDBN} to debug programs written in C and C@t{++}.
79a6e687 224For more information, see @ref{Supported Languages,,Supported Languages}.
c906108c
SS
225For more information, see @ref{C,,C and C++}.
226
6aecb9c2
JB
227Support for D is partial. For information on D, see
228@ref{D,,D}.
229
cce74817 230@cindex Modula-2
e632838e
AC
231Support for Modula-2 is partial. For information on Modula-2, see
232@ref{Modula-2,,Modula-2}.
c906108c 233
f4b8a18d
KW
234Support for OpenCL C is partial. For information on OpenCL C, see
235@ref{OpenCL C,,OpenCL C}.
236
cce74817
JM
237@cindex Pascal
238Debugging Pascal programs which use sets, subranges, file variables, or
239nested functions does not currently work. @value{GDBN} does not support
240entering expressions, printing values, or similar features using Pascal
241syntax.
c906108c 242
c906108c
SS
243@cindex Fortran
244@value{GDBN} can be used to debug programs written in Fortran, although
53a5351d 245it may be necessary to refer to some variables with a trailing
cce74817 246underscore.
c906108c 247
b37303ee
AF
248@value{GDBN} can be used to debug programs written in Objective-C,
249using either the Apple/NeXT or the GNU Objective-C runtime.
250
c906108c
SS
251@menu
252* Free Software:: Freely redistributable software
984359d2 253* Free Documentation:: Free Software Needs Free Documentation
c906108c
SS
254* Contributors:: Contributors to GDB
255@end menu
256
6d2ebf8b 257@node Free Software
79a6e687 258@unnumberedsec Free Software
c906108c 259
5d161b24 260@value{GDBN} is @dfn{free software}, protected by the @sc{gnu}
c906108c
SS
261General Public License
262(GPL). The GPL gives you the freedom to copy or adapt a licensed
263program---but every person getting a copy also gets with it the
264freedom to modify that copy (which means that they must get access to
265the source code), and the freedom to distribute further copies.
266Typical software companies use copyrights to limit your freedoms; the
267Free Software Foundation uses the GPL to preserve these freedoms.
268
269Fundamentally, the General Public License is a license which says that
270you have these freedoms and that you cannot take these freedoms away
271from anyone else.
272
984359d2 273@node Free Documentation
2666264b 274@unnumberedsec Free Software Needs Free Documentation
959acfd1
EZ
275
276The biggest deficiency in the free software community today is not in
277the software---it is the lack of good free documentation that we can
278include with the free software. Many of our most important
279programs do not come with free reference manuals and free introductory
280texts. Documentation is an essential part of any software package;
281when an important free software package does not come with a free
282manual and a free tutorial, that is a major gap. We have many such
283gaps today.
284
285Consider Perl, for instance. The tutorial manuals that people
286normally use are non-free. How did this come about? Because the
287authors of those manuals published them with restrictive terms---no
288copying, no modification, source files not available---which exclude
289them from the free software world.
290
291That wasn't the first time this sort of thing happened, and it was far
292from the last. Many times we have heard a GNU user eagerly describe a
293manual that he is writing, his intended contribution to the community,
294only to learn that he had ruined everything by signing a publication
295contract to make it non-free.
296
297Free documentation, like free software, is a matter of freedom, not
298price. The problem with the non-free manual is not that publishers
299charge a price for printed copies---that in itself is fine. (The Free
300Software Foundation sells printed copies of manuals, too.) The
301problem is the restrictions on the use of the manual. Free manuals
302are available in source code form, and give you permission to copy and
303modify. Non-free manuals do not allow this.
304
305The criteria of freedom for a free manual are roughly the same as for
306free software. Redistribution (including the normal kinds of
307commercial redistribution) must be permitted, so that the manual can
308accompany every copy of the program, both on-line and on paper.
309
310Permission for modification of the technical content is crucial too.
311When people modify the software, adding or changing features, if they
312are conscientious they will change the manual too---so they can
313provide accurate and clear documentation for the modified program. A
314manual that leaves you no choice but to write a new manual to document
315a changed version of the program is not really available to our
316community.
317
318Some kinds of limits on the way modification is handled are
319acceptable. For example, requirements to preserve the original
320author's copyright notice, the distribution terms, or the list of
321authors, are ok. It is also no problem to require modified versions
322to include notice that they were modified. Even entire sections that
323may not be deleted or changed are acceptable, as long as they deal
324with nontechnical topics (like this one). These kinds of restrictions
325are acceptable because they don't obstruct the community's normal use
326of the manual.
327
328However, it must be possible to modify all the @emph{technical}
329content of the manual, and then distribute the result in all the usual
330media, through all the usual channels. Otherwise, the restrictions
331obstruct the use of the manual, it is not free, and we need another
332manual to replace it.
333
334Please spread the word about this issue. Our community continues to
335lose manuals to proprietary publishing. If we spread the word that
336free software needs free reference manuals and free tutorials, perhaps
337the next person who wants to contribute by writing documentation will
338realize, before it is too late, that only free manuals contribute to
339the free software community.
340
341If you are writing documentation, please insist on publishing it under
342the GNU Free Documentation License or another free documentation
343license. Remember that this decision requires your approval---you
344don't have to let the publisher decide. Some commercial publishers
345will use a free license if you insist, but they will not propose the
346option; it is up to you to raise the issue and say firmly that this is
347what you want. If the publisher you are dealing with refuses, please
348try other publishers. If you're not sure whether a proposed license
42584a72 349is free, write to @email{licensing@@gnu.org}.
959acfd1
EZ
350
351You can encourage commercial publishers to sell more free, copylefted
352manuals and tutorials by buying them, and particularly by buying
353copies from the publishers that paid for their writing or for major
354improvements. Meanwhile, try to avoid buying non-free documentation
355at all. Check the distribution terms of a manual before you buy it,
356and insist that whoever seeks your business must respect your freedom.
72c9928d
EZ
357Check the history of the book, and try to reward the publishers that
358have paid or pay the authors to work on it.
959acfd1
EZ
359
360The Free Software Foundation maintains a list of free documentation
361published by other publishers, at
362@url{http://www.fsf.org/doc/other-free-books.html}.
363
6d2ebf8b 364@node Contributors
96a2c332
SS
365@unnumberedsec Contributors to @value{GDBN}
366
367Richard Stallman was the original author of @value{GDBN}, and of many
368other @sc{gnu} programs. Many others have contributed to its
369development. This section attempts to credit major contributors. One
370of the virtues of free software is that everyone is free to contribute
371to it; with regret, we cannot actually acknowledge everyone here. The
372file @file{ChangeLog} in the @value{GDBN} distribution approximates a
c906108c
SS
373blow-by-blow account.
374
375Changes much prior to version 2.0 are lost in the mists of time.
376
377@quotation
378@emph{Plea:} Additions to this section are particularly welcome. If you
379or your friends (or enemies, to be evenhanded) have been unfairly
380omitted from this list, we would like to add your names!
381@end quotation
382
383So that they may not regard their many labors as thankless, we
384particularly thank those who shepherded @value{GDBN} through major
385releases:
7ba3cf9c 386Andrew Cagney (releases 6.3, 6.2, 6.1, 6.0, 5.3, 5.2, 5.1 and 5.0);
c906108c
SS
387Jim Blandy (release 4.18);
388Jason Molenda (release 4.17);
389Stan Shebs (release 4.14);
390Fred Fish (releases 4.16, 4.15, 4.13, 4.12, 4.11, 4.10, and 4.9);
391Stu Grossman and John Gilmore (releases 4.8, 4.7, 4.6, 4.5, and 4.4);
392John Gilmore (releases 4.3, 4.2, 4.1, 4.0, and 3.9);
393Jim Kingdon (releases 3.5, 3.4, and 3.3);
394and Randy Smith (releases 3.2, 3.1, and 3.0).
395
396Richard Stallman, assisted at various times by Peter TerMaat, Chris
397Hanson, and Richard Mlynarik, handled releases through 2.8.
398
b37052ae
EZ
399Michael Tiemann is the author of most of the @sc{gnu} C@t{++} support
400in @value{GDBN}, with significant additional contributions from Per
401Bothner and Daniel Berlin. James Clark wrote the @sc{gnu} C@t{++}
402demangler. Early work on C@t{++} was by Peter TerMaat (who also did
403much general update work leading to release 3.0).
c906108c 404
b37052ae 405@value{GDBN} uses the BFD subroutine library to examine multiple
c906108c
SS
406object-file formats; BFD was a joint project of David V.
407Henkel-Wallace, Rich Pixley, Steve Chamberlain, and John Gilmore.
408
409David Johnson wrote the original COFF support; Pace Willison did
410the original support for encapsulated COFF.
411
0179ffac 412Brent Benson of Harris Computer Systems contributed DWARF 2 support.
c906108c
SS
413
414Adam de Boor and Bradley Davis contributed the ISI Optimum V support.
415Per Bothner, Noboyuki Hikichi, and Alessandro Forin contributed MIPS
416support.
417Jean-Daniel Fekete contributed Sun 386i support.
418Chris Hanson improved the HP9000 support.
419Noboyuki Hikichi and Tomoyuki Hasei contributed Sony/News OS 3 support.
420David Johnson contributed Encore Umax support.
421Jyrki Kuoppala contributed Altos 3068 support.
422Jeff Law contributed HP PA and SOM support.
423Keith Packard contributed NS32K support.
424Doug Rabson contributed Acorn Risc Machine support.
425Bob Rusk contributed Harris Nighthawk CX-UX support.
426Chris Smith contributed Convex support (and Fortran debugging).
427Jonathan Stone contributed Pyramid support.
428Michael Tiemann contributed SPARC support.
429Tim Tucker contributed support for the Gould NP1 and Gould Powernode.
430Pace Willison contributed Intel 386 support.
431Jay Vosburgh contributed Symmetry support.
a37295f9 432Marko Mlinar contributed OpenRISC 1000 support.
c906108c 433
1104b9e7 434Andreas Schwab contributed M68K @sc{gnu}/Linux support.
c906108c
SS
435
436Rich Schaefer and Peter Schauer helped with support of SunOS shared
437libraries.
438
439Jay Fenlason and Roland McGrath ensured that @value{GDBN} and GAS agree
440about several machine instruction sets.
441
442Patrick Duval, Ted Goldstein, Vikram Koka and Glenn Engel helped develop
443remote debugging. Intel Corporation, Wind River Systems, AMD, and ARM
444contributed remote debugging modules for the i960, VxWorks, A29K UDI,
445and RDI targets, respectively.
446
447Brian Fox is the author of the readline libraries providing
448command-line editing and command history.
449
7a292a7a
SS
450Andrew Beers of SUNY Buffalo wrote the language-switching code, the
451Modula-2 support, and contributed the Languages chapter of this manual.
c906108c 452
5d161b24 453Fred Fish wrote most of the support for Unix System Vr4.
b37052ae 454He also enhanced the command-completion support to cover C@t{++} overloaded
c906108c 455symbols.
c906108c 456
f24c5e49
KI
457Hitachi America (now Renesas America), Ltd. sponsored the support for
458H8/300, H8/500, and Super-H processors.
c906108c
SS
459
460NEC sponsored the support for the v850, Vr4xxx, and Vr5xxx processors.
461
f24c5e49
KI
462Mitsubishi (now Renesas) sponsored the support for D10V, D30V, and M32R/D
463processors.
c906108c
SS
464
465Toshiba sponsored the support for the TX39 Mips processor.
466
467Matsushita sponsored the support for the MN10200 and MN10300 processors.
468
96a2c332 469Fujitsu sponsored the support for SPARClite and FR30 processors.
c906108c
SS
470
471Kung Hsu, Jeff Law, and Rick Sladkey added support for hardware
472watchpoints.
473
474Michael Snyder added support for tracepoints.
475
476Stu Grossman wrote gdbserver.
477
478Jim Kingdon, Peter Schauer, Ian Taylor, and Stu Grossman made
96a2c332 479nearly innumerable bug fixes and cleanups throughout @value{GDBN}.
c906108c
SS
480
481The following people at the Hewlett-Packard Company contributed
482support for the PA-RISC 2.0 architecture, HP-UX 10.20, 10.30, and 11.0
b37052ae 483(narrow mode), HP's implementation of kernel threads, HP's aC@t{++}
d0d5df6f
AC
484compiler, and the Text User Interface (nee Terminal User Interface):
485Ben Krepp, Richard Title, John Bishop, Susan Macchia, Kathy Mann,
486Satish Pai, India Paul, Steve Rehrauer, and Elena Zannoni. Kim Haase
487provided HP-specific information in this manual.
c906108c 488
b37052ae
EZ
489DJ Delorie ported @value{GDBN} to MS-DOS, for the DJGPP project.
490Robert Hoehne made significant contributions to the DJGPP port.
491
96a2c332
SS
492Cygnus Solutions has sponsored @value{GDBN} maintenance and much of its
493development since 1991. Cygnus engineers who have worked on @value{GDBN}
2df3850c
JM
494fulltime include Mark Alexander, Jim Blandy, Per Bothner, Kevin
495Buettner, Edith Epstein, Chris Faylor, Fred Fish, Martin Hunt, Jim
496Ingham, John Gilmore, Stu Grossman, Kung Hsu, Jim Kingdon, John Metzler,
497Fernando Nasser, Geoffrey Noer, Dawn Perchik, Rich Pixley, Zdenek
498Radouch, Keith Seitz, Stan Shebs, David Taylor, and Elena Zannoni. In
499addition, Dave Brolley, Ian Carmichael, Steve Chamberlain, Nick Clifton,
500JT Conklin, Stan Cox, DJ Delorie, Ulrich Drepper, Frank Eigler, Doug
501Evans, Sean Fagan, David Henkel-Wallace, Richard Henderson, Jeff
502Holcomb, Jeff Law, Jim Lemke, Tom Lord, Bob Manson, Michael Meissner,
503Jason Merrill, Catherine Moore, Drew Moseley, Ken Raeburn, Gavin
504Romig-Koch, Rob Savoye, Jamie Smith, Mike Stump, Ian Taylor, Angela
505Thomas, Michael Tiemann, Tom Tromey, Ron Unrau, Jim Wilson, and David
506Zuhn have made contributions both large and small.
c906108c 507
ffed4509
AC
508Andrew Cagney, Fernando Nasser, and Elena Zannoni, while working for
509Cygnus Solutions, implemented the original @sc{gdb/mi} interface.
510
e2e0bcd1
JB
511Jim Blandy added support for preprocessor macros, while working for Red
512Hat.
c906108c 513
a9967aef
AC
514Andrew Cagney designed @value{GDBN}'s architecture vector. Many
515people including Andrew Cagney, Stephane Carrez, Randolph Chung, Nick
516Duffek, Richard Henderson, Mark Kettenis, Grace Sainsbury, Kei
517Sakamoto, Yoshinori Sato, Michael Snyder, Andreas Schwab, Jason
518Thorpe, Corinna Vinschen, Ulrich Weigand, and Elena Zannoni, helped
519with the migration of old architectures to this new framework.
520
c5e30d01
AC
521Andrew Cagney completely re-designed and re-implemented @value{GDBN}'s
522unwinder framework, this consisting of a fresh new design featuring
523frame IDs, independent frame sniffers, and the sentinel frame. Mark
524Kettenis implemented the @sc{dwarf 2} unwinder, Jeff Johnston the
525libunwind unwinder, and Andrew Cagney the dummy, sentinel, tramp, and
db2e3e2e 526trad unwinders. The architecture-specific changes, each involving a
c5e30d01
AC
527complete rewrite of the architecture's frame code, were carried out by
528Jim Blandy, Joel Brobecker, Kevin Buettner, Andrew Cagney, Stephane
529Carrez, Randolph Chung, Orjan Friberg, Richard Henderson, Daniel
530Jacobowitz, Jeff Johnston, Mark Kettenis, Theodore A. Roth, Kei
531Sakamoto, Yoshinori Sato, Michael Snyder, Corinna Vinschen, and Ulrich
532Weigand.
533
ca3bf3bd
DJ
534Christian Zankel, Ross Morley, Bob Wilson, and Maxim Grigoriev from
535Tensilica, Inc.@: contributed support for Xtensa processors. Others
536who have worked on the Xtensa port of @value{GDBN} in the past include
537Steve Tjiang, John Newlin, and Scott Foehner.
538
08be9d71
ME
539Michael Eager and staff of Xilinx, Inc., contributed support for the
540Xilinx MicroBlaze architecture.
541
6d2ebf8b 542@node Sample Session
c906108c
SS
543@chapter A Sample @value{GDBN} Session
544
545You can use this manual at your leisure to read all about @value{GDBN}.
546However, a handful of commands are enough to get started using the
547debugger. This chapter illustrates those commands.
548
549@iftex
550In this sample session, we emphasize user input like this: @b{input},
551to make it easier to pick out from the surrounding output.
552@end iftex
553
554@c FIXME: this example may not be appropriate for some configs, where
555@c FIXME...primary interest is in remote use.
556
557One of the preliminary versions of @sc{gnu} @code{m4} (a generic macro
558processor) exhibits the following bug: sometimes, when we change its
559quote strings from the default, the commands used to capture one macro
560definition within another stop working. In the following short @code{m4}
561session, we define a macro @code{foo} which expands to @code{0000}; we
562then use the @code{m4} built-in @code{defn} to define @code{bar} as the
563same thing. However, when we change the open quote string to
564@code{<QUOTE>} and the close quote string to @code{<UNQUOTE>}, the same
565procedure fails to define a new synonym @code{baz}:
566
567@smallexample
568$ @b{cd gnu/m4}
569$ @b{./m4}
570@b{define(foo,0000)}
571
572@b{foo}
5730000
574@b{define(bar,defn(`foo'))}
575
576@b{bar}
5770000
578@b{changequote(<QUOTE>,<UNQUOTE>)}
579
580@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
581@b{baz}
c8aa23ab 582@b{Ctrl-d}
c906108c
SS
583m4: End of input: 0: fatal error: EOF in string
584@end smallexample
585
586@noindent
587Let us use @value{GDBN} to try to see what is going on.
588
c906108c
SS
589@smallexample
590$ @b{@value{GDBP} m4}
591@c FIXME: this falsifies the exact text played out, to permit smallbook
592@c FIXME... format to come out better.
593@value{GDBN} is free software and you are welcome to distribute copies
5d161b24 594 of it under certain conditions; type "show copying" to see
c906108c 595 the conditions.
5d161b24 596There is absolutely no warranty for @value{GDBN}; type "show warranty"
c906108c
SS
597 for details.
598
599@value{GDBN} @value{GDBVN}, Copyright 1999 Free Software Foundation, Inc...
600(@value{GDBP})
601@end smallexample
c906108c
SS
602
603@noindent
604@value{GDBN} reads only enough symbol data to know where to find the
605rest when needed; as a result, the first prompt comes up very quickly.
606We now tell @value{GDBN} to use a narrower display width than usual, so
607that examples fit in this manual.
608
609@smallexample
610(@value{GDBP}) @b{set width 70}
611@end smallexample
612
613@noindent
614We need to see how the @code{m4} built-in @code{changequote} works.
615Having looked at the source, we know the relevant subroutine is
616@code{m4_changequote}, so we set a breakpoint there with the @value{GDBN}
617@code{break} command.
618
619@smallexample
620(@value{GDBP}) @b{break m4_changequote}
621Breakpoint 1 at 0x62f4: file builtin.c, line 879.
622@end smallexample
623
624@noindent
625Using the @code{run} command, we start @code{m4} running under @value{GDBN}
626control; as long as control does not reach the @code{m4_changequote}
627subroutine, the program runs as usual:
628
629@smallexample
630(@value{GDBP}) @b{run}
631Starting program: /work/Editorial/gdb/gnu/m4/m4
632@b{define(foo,0000)}
633
634@b{foo}
6350000
636@end smallexample
637
638@noindent
639To trigger the breakpoint, we call @code{changequote}. @value{GDBN}
640suspends execution of @code{m4}, displaying information about the
641context where it stops.
642
643@smallexample
644@b{changequote(<QUOTE>,<UNQUOTE>)}
645
5d161b24 646Breakpoint 1, m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
647 at builtin.c:879
648879 if (bad_argc(TOKEN_DATA_TEXT(argv[0]),argc,1,3))
649@end smallexample
650
651@noindent
652Now we use the command @code{n} (@code{next}) to advance execution to
653the next line of the current function.
654
655@smallexample
656(@value{GDBP}) @b{n}
657882 set_quotes((argc >= 2) ? TOKEN_DATA_TEXT(argv[1])\
658 : nil,
659@end smallexample
660
661@noindent
662@code{set_quotes} looks like a promising subroutine. We can go into it
663by using the command @code{s} (@code{step}) instead of @code{next}.
664@code{step} goes to the next line to be executed in @emph{any}
665subroutine, so it steps into @code{set_quotes}.
666
667@smallexample
668(@value{GDBP}) @b{s}
669set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
670 at input.c:530
671530 if (lquote != def_lquote)
672@end smallexample
673
674@noindent
675The display that shows the subroutine where @code{m4} is now
676suspended (and its arguments) is called a stack frame display. It
677shows a summary of the stack. We can use the @code{backtrace}
678command (which can also be spelled @code{bt}), to see where we are
679in the stack as a whole: the @code{backtrace} command displays a
680stack frame for each active subroutine.
681
682@smallexample
683(@value{GDBP}) @b{bt}
684#0 set_quotes (lq=0x34c78 "<QUOTE>", rq=0x34c88 "<UNQUOTE>")
685 at input.c:530
5d161b24 686#1 0x6344 in m4_changequote (argc=3, argv=0x33c70)
c906108c
SS
687 at builtin.c:882
688#2 0x8174 in expand_macro (sym=0x33320) at macro.c:242
689#3 0x7a88 in expand_token (obs=0x0, t=209696, td=0xf7fffa30)
690 at macro.c:71
691#4 0x79dc in expand_input () at macro.c:40
692#5 0x2930 in main (argc=0, argv=0xf7fffb20) at m4.c:195
693@end smallexample
694
695@noindent
696We step through a few more lines to see what happens. The first two
697times, we can use @samp{s}; the next two times we use @code{n} to avoid
698falling into the @code{xstrdup} subroutine.
699
700@smallexample
701(@value{GDBP}) @b{s}
7020x3b5c 532 if (rquote != def_rquote)
703(@value{GDBP}) @b{s}
7040x3b80 535 lquote = (lq == nil || *lq == '\0') ? \
705def_lquote : xstrdup(lq);
706(@value{GDBP}) @b{n}
707536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
708 : xstrdup(rq);
709(@value{GDBP}) @b{n}
710538 len_lquote = strlen(rquote);
711@end smallexample
712
713@noindent
714The last line displayed looks a little odd; we can examine the variables
715@code{lquote} and @code{rquote} to see if they are in fact the new left
716and right quotes we specified. We use the command @code{p}
717(@code{print}) to see their values.
718
719@smallexample
720(@value{GDBP}) @b{p lquote}
721$1 = 0x35d40 "<QUOTE>"
722(@value{GDBP}) @b{p rquote}
723$2 = 0x35d50 "<UNQUOTE>"
724@end smallexample
725
726@noindent
727@code{lquote} and @code{rquote} are indeed the new left and right quotes.
728To look at some context, we can display ten lines of source
729surrounding the current line with the @code{l} (@code{list}) command.
730
731@smallexample
732(@value{GDBP}) @b{l}
733533 xfree(rquote);
734534
735535 lquote = (lq == nil || *lq == '\0') ? def_lquote\
736 : xstrdup (lq);
737536 rquote = (rq == nil || *rq == '\0') ? def_rquote\
738 : xstrdup (rq);
739537
740538 len_lquote = strlen(rquote);
741539 len_rquote = strlen(lquote);
742540 @}
743541
744542 void
745@end smallexample
746
747@noindent
748Let us step past the two lines that set @code{len_lquote} and
749@code{len_rquote}, and then examine the values of those variables.
750
751@smallexample
752(@value{GDBP}) @b{n}
753539 len_rquote = strlen(lquote);
754(@value{GDBP}) @b{n}
755540 @}
756(@value{GDBP}) @b{p len_lquote}
757$3 = 9
758(@value{GDBP}) @b{p len_rquote}
759$4 = 7
760@end smallexample
761
762@noindent
763That certainly looks wrong, assuming @code{len_lquote} and
764@code{len_rquote} are meant to be the lengths of @code{lquote} and
765@code{rquote} respectively. We can set them to better values using
766the @code{p} command, since it can print the value of
767any expression---and that expression can include subroutine calls and
768assignments.
769
770@smallexample
771(@value{GDBP}) @b{p len_lquote=strlen(lquote)}
772$5 = 7
773(@value{GDBP}) @b{p len_rquote=strlen(rquote)}
774$6 = 9
775@end smallexample
776
777@noindent
778Is that enough to fix the problem of using the new quotes with the
779@code{m4} built-in @code{defn}? We can allow @code{m4} to continue
780executing with the @code{c} (@code{continue}) command, and then try the
781example that caused trouble initially:
782
783@smallexample
784(@value{GDBP}) @b{c}
785Continuing.
786
787@b{define(baz,defn(<QUOTE>foo<UNQUOTE>))}
788
789baz
7900000
791@end smallexample
792
793@noindent
794Success! The new quotes now work just as well as the default ones. The
795problem seems to have been just the two typos defining the wrong
796lengths. We allow @code{m4} exit by giving it an EOF as input:
797
798@smallexample
c8aa23ab 799@b{Ctrl-d}
c906108c
SS
800Program exited normally.
801@end smallexample
802
803@noindent
804The message @samp{Program exited normally.} is from @value{GDBN}; it
805indicates @code{m4} has finished executing. We can end our @value{GDBN}
806session with the @value{GDBN} @code{quit} command.
807
808@smallexample
809(@value{GDBP}) @b{quit}
810@end smallexample
c906108c 811
6d2ebf8b 812@node Invocation
c906108c
SS
813@chapter Getting In and Out of @value{GDBN}
814
815This chapter discusses how to start @value{GDBN}, and how to get out of it.
5d161b24 816The essentials are:
c906108c 817@itemize @bullet
5d161b24 818@item
53a5351d 819type @samp{@value{GDBP}} to start @value{GDBN}.
5d161b24 820@item
c8aa23ab 821type @kbd{quit} or @kbd{Ctrl-d} to exit.
c906108c
SS
822@end itemize
823
824@menu
825* Invoking GDB:: How to start @value{GDBN}
826* Quitting GDB:: How to quit @value{GDBN}
827* Shell Commands:: How to use shell commands inside @value{GDBN}
79a6e687 828* Logging Output:: How to log @value{GDBN}'s output to a file
c906108c
SS
829@end menu
830
6d2ebf8b 831@node Invoking GDB
c906108c
SS
832@section Invoking @value{GDBN}
833
c906108c
SS
834Invoke @value{GDBN} by running the program @code{@value{GDBP}}. Once started,
835@value{GDBN} reads commands from the terminal until you tell it to exit.
836
837You can also run @code{@value{GDBP}} with a variety of arguments and options,
838to specify more of your debugging environment at the outset.
839
c906108c
SS
840The command-line options described here are designed
841to cover a variety of situations; in some environments, some of these
5d161b24 842options may effectively be unavailable.
c906108c
SS
843
844The most usual way to start @value{GDBN} is with one argument,
845specifying an executable program:
846
474c8240 847@smallexample
c906108c 848@value{GDBP} @var{program}
474c8240 849@end smallexample
c906108c 850
c906108c
SS
851@noindent
852You can also start with both an executable program and a core file
853specified:
854
474c8240 855@smallexample
c906108c 856@value{GDBP} @var{program} @var{core}
474c8240 857@end smallexample
c906108c
SS
858
859You can, instead, specify a process ID as a second argument, if you want
860to debug a running process:
861
474c8240 862@smallexample
c906108c 863@value{GDBP} @var{program} 1234
474c8240 864@end smallexample
c906108c
SS
865
866@noindent
867would attach @value{GDBN} to process @code{1234} (unless you also have a file
868named @file{1234}; @value{GDBN} does check for a core file first).
869
c906108c 870Taking advantage of the second command-line argument requires a fairly
2df3850c
JM
871complete operating system; when you use @value{GDBN} as a remote
872debugger attached to a bare board, there may not be any notion of
873``process'', and there is often no way to get a core dump. @value{GDBN}
874will warn you if it is unable to attach or to read core dumps.
c906108c 875
aa26fa3a
TT
876You can optionally have @code{@value{GDBP}} pass any arguments after the
877executable file to the inferior using @code{--args}. This option stops
878option processing.
474c8240 879@smallexample
3f94c067 880@value{GDBP} --args gcc -O2 -c foo.c
474c8240 881@end smallexample
aa26fa3a
TT
882This will cause @code{@value{GDBP}} to debug @code{gcc}, and to set
883@code{gcc}'s command-line arguments (@pxref{Arguments}) to @samp{-O2 -c foo.c}.
884
96a2c332 885You can run @code{@value{GDBP}} without printing the front material, which describes
c906108c
SS
886@value{GDBN}'s non-warranty, by specifying @code{-silent}:
887
888@smallexample
889@value{GDBP} -silent
890@end smallexample
891
892@noindent
893You can further control how @value{GDBN} starts up by using command-line
894options. @value{GDBN} itself can remind you of the options available.
895
896@noindent
897Type
898
474c8240 899@smallexample
c906108c 900@value{GDBP} -help
474c8240 901@end smallexample
c906108c
SS
902
903@noindent
904to display all available options and briefly describe their use
905(@samp{@value{GDBP} -h} is a shorter equivalent).
906
907All options and command line arguments you give are processed
908in sequential order. The order makes a difference when the
909@samp{-x} option is used.
910
911
912@menu
c906108c
SS
913* File Options:: Choosing files
914* Mode Options:: Choosing modes
6fc08d32 915* Startup:: What @value{GDBN} does during startup
c906108c
SS
916@end menu
917
6d2ebf8b 918@node File Options
79a6e687 919@subsection Choosing Files
c906108c 920
2df3850c 921When @value{GDBN} starts, it reads any arguments other than options as
c906108c
SS
922specifying an executable file and core file (or process ID). This is
923the same as if the arguments were specified by the @samp{-se} and
d52fb0e9 924@samp{-c} (or @samp{-p}) options respectively. (@value{GDBN} reads the
19837790
MS
925first argument that does not have an associated option flag as
926equivalent to the @samp{-se} option followed by that argument; and the
927second argument that does not have an associated option flag, if any, as
928equivalent to the @samp{-c}/@samp{-p} option followed by that argument.)
929If the second argument begins with a decimal digit, @value{GDBN} will
930first attempt to attach to it as a process, and if that fails, attempt
931to open it as a corefile. If you have a corefile whose name begins with
b383017d 932a digit, you can prevent @value{GDBN} from treating it as a pid by
c1468174 933prefixing it with @file{./}, e.g.@: @file{./12345}.
7a292a7a
SS
934
935If @value{GDBN} has not been configured to included core file support,
936such as for most embedded targets, then it will complain about a second
937argument and ignore it.
c906108c
SS
938
939Many options have both long and short forms; both are shown in the
940following list. @value{GDBN} also recognizes the long forms if you truncate
941them, so long as enough of the option is present to be unambiguous.
942(If you prefer, you can flag option arguments with @samp{--} rather
943than @samp{-}, though we illustrate the more usual convention.)
944
d700128c
EZ
945@c NOTE: the @cindex entries here use double dashes ON PURPOSE. This
946@c way, both those who look for -foo and --foo in the index, will find
947@c it.
948
c906108c
SS
949@table @code
950@item -symbols @var{file}
951@itemx -s @var{file}
d700128c
EZ
952@cindex @code{--symbols}
953@cindex @code{-s}
c906108c
SS
954Read symbol table from file @var{file}.
955
956@item -exec @var{file}
957@itemx -e @var{file}
d700128c
EZ
958@cindex @code{--exec}
959@cindex @code{-e}
7a292a7a
SS
960Use file @var{file} as the executable file to execute when appropriate,
961and for examining pure data in conjunction with a core dump.
c906108c
SS
962
963@item -se @var{file}
d700128c 964@cindex @code{--se}
c906108c
SS
965Read symbol table from file @var{file} and use it as the executable
966file.
967
c906108c
SS
968@item -core @var{file}
969@itemx -c @var{file}
d700128c
EZ
970@cindex @code{--core}
971@cindex @code{-c}
b383017d 972Use file @var{file} as a core dump to examine.
c906108c 973
19837790
MS
974@item -pid @var{number}
975@itemx -p @var{number}
976@cindex @code{--pid}
977@cindex @code{-p}
978Connect to process ID @var{number}, as with the @code{attach} command.
c906108c
SS
979
980@item -command @var{file}
981@itemx -x @var{file}
d700128c
EZ
982@cindex @code{--command}
983@cindex @code{-x}
95433b34
JB
984Execute commands from file @var{file}. The contents of this file is
985evaluated exactly as the @code{source} command would.
8150ff9c 986@xref{Command Files,, Command files}.
c906108c 987
8a5a3c82
AS
988@item -eval-command @var{command}
989@itemx -ex @var{command}
990@cindex @code{--eval-command}
991@cindex @code{-ex}
992Execute a single @value{GDBN} command.
993
994This option may be used multiple times to call multiple commands. It may
995also be interleaved with @samp{-command} as required.
996
997@smallexample
998@value{GDBP} -ex 'target sim' -ex 'load' \
999 -x setbreakpoints -ex 'run' a.out
1000@end smallexample
1001
8320cc4f
JK
1002@item -init-command @var{file}
1003@itemx -ix @var{file}
1004@cindex @code{--init-command}
1005@cindex @code{-ix}
2d7b58e8
JK
1006Execute commands from file @var{file} before loading the inferior (but
1007after loading gdbinit files).
8320cc4f
JK
1008@xref{Startup}.
1009
1010@item -init-eval-command @var{command}
1011@itemx -iex @var{command}
1012@cindex @code{--init-eval-command}
1013@cindex @code{-iex}
2d7b58e8
JK
1014Execute a single @value{GDBN} command before loading the inferior (but
1015after loading gdbinit files).
8320cc4f
JK
1016@xref{Startup}.
1017
c906108c
SS
1018@item -directory @var{directory}
1019@itemx -d @var{directory}
d700128c
EZ
1020@cindex @code{--directory}
1021@cindex @code{-d}
4b505b12 1022Add @var{directory} to the path to search for source and script files.
c906108c 1023
c906108c
SS
1024@item -r
1025@itemx -readnow
d700128c
EZ
1026@cindex @code{--readnow}
1027@cindex @code{-r}
c906108c
SS
1028Read each symbol file's entire symbol table immediately, rather than
1029the default, which is to read it incrementally as it is needed.
1030This makes startup slower, but makes future operations faster.
53a5351d 1031
c906108c
SS
1032@end table
1033
6d2ebf8b 1034@node Mode Options
79a6e687 1035@subsection Choosing Modes
c906108c
SS
1036
1037You can run @value{GDBN} in various alternative modes---for example, in
1038batch mode or quiet mode.
1039
1040@table @code
bf88dd68 1041@anchor{-nx}
c906108c
SS
1042@item -nx
1043@itemx -n
d700128c
EZ
1044@cindex @code{--nx}
1045@cindex @code{-n}
96565e91 1046Do not execute commands found in any initialization files. Normally,
2df3850c
JM
1047@value{GDBN} executes the commands in these files after all the command
1048options and arguments have been processed. @xref{Command Files,,Command
79a6e687 1049Files}.
c906108c
SS
1050
1051@item -quiet
d700128c 1052@itemx -silent
c906108c 1053@itemx -q
d700128c
EZ
1054@cindex @code{--quiet}
1055@cindex @code{--silent}
1056@cindex @code{-q}
c906108c
SS
1057``Quiet''. Do not print the introductory and copyright messages. These
1058messages are also suppressed in batch mode.
1059
1060@item -batch
d700128c 1061@cindex @code{--batch}
c906108c
SS
1062Run in batch mode. Exit with status @code{0} after processing all the
1063command files specified with @samp{-x} (and all commands from
1064initialization files, if not inhibited with @samp{-n}). Exit with
1065nonzero status if an error occurs in executing the @value{GDBN} commands
5da1313b
JK
1066in the command files. Batch mode also disables pagination, sets unlimited
1067terminal width and height @pxref{Screen Size}, and acts as if @kbd{set confirm
1068off} were in effect (@pxref{Messages/Warnings}).
c906108c 1069
2df3850c
JM
1070Batch mode may be useful for running @value{GDBN} as a filter, for
1071example to download and run a program on another computer; in order to
1072make this more useful, the message
c906108c 1073
474c8240 1074@smallexample
c906108c 1075Program exited normally.
474c8240 1076@end smallexample
c906108c
SS
1077
1078@noindent
2df3850c
JM
1079(which is ordinarily issued whenever a program running under
1080@value{GDBN} control terminates) is not issued when running in batch
1081mode.
1082
1a088d06
AS
1083@item -batch-silent
1084@cindex @code{--batch-silent}
1085Run in batch mode exactly like @samp{-batch}, but totally silently. All
1086@value{GDBN} output to @code{stdout} is prevented (@code{stderr} is
1087unaffected). This is much quieter than @samp{-silent} and would be useless
1088for an interactive session.
1089
1090This is particularly useful when using targets that give @samp{Loading section}
1091messages, for example.
1092
1093Note that targets that give their output via @value{GDBN}, as opposed to
1094writing directly to @code{stdout}, will also be made silent.
1095
4b0ad762
AS
1096@item -return-child-result
1097@cindex @code{--return-child-result}
1098The return code from @value{GDBN} will be the return code from the child
1099process (the process being debugged), with the following exceptions:
1100
1101@itemize @bullet
1102@item
1103@value{GDBN} exits abnormally. E.g., due to an incorrect argument or an
1104internal error. In this case the exit code is the same as it would have been
1105without @samp{-return-child-result}.
1106@item
1107The user quits with an explicit value. E.g., @samp{quit 1}.
1108@item
1109The child process never runs, or is not allowed to terminate, in which case
1110the exit code will be -1.
1111@end itemize
1112
1113This option is useful in conjunction with @samp{-batch} or @samp{-batch-silent},
1114when @value{GDBN} is being used as a remote program loader or simulator
1115interface.
1116
2df3850c
JM
1117@item -nowindows
1118@itemx -nw
d700128c
EZ
1119@cindex @code{--nowindows}
1120@cindex @code{-nw}
2df3850c 1121``No windows''. If @value{GDBN} comes with a graphical user interface
96a2c332 1122(GUI) built in, then this option tells @value{GDBN} to only use the command-line
2df3850c
JM
1123interface. If no GUI is available, this option has no effect.
1124
1125@item -windows
1126@itemx -w
d700128c
EZ
1127@cindex @code{--windows}
1128@cindex @code{-w}
2df3850c
JM
1129If @value{GDBN} includes a GUI, then this option requires it to be
1130used if possible.
c906108c
SS
1131
1132@item -cd @var{directory}
d700128c 1133@cindex @code{--cd}
c906108c
SS
1134Run @value{GDBN} using @var{directory} as its working directory,
1135instead of the current directory.
1136
aae1c79a
DE
1137@item -data-directory @var{directory}
1138@cindex @code{--data-directory}
1139Run @value{GDBN} using @var{directory} as its data directory.
1140The data directory is where @value{GDBN} searches for its
1141auxiliary files. @xref{Data Files}.
1142
c906108c
SS
1143@item -fullname
1144@itemx -f
d700128c
EZ
1145@cindex @code{--fullname}
1146@cindex @code{-f}
7a292a7a
SS
1147@sc{gnu} Emacs sets this option when it runs @value{GDBN} as a
1148subprocess. It tells @value{GDBN} to output the full file name and line
1149number in a standard, recognizable fashion each time a stack frame is
1150displayed (which includes each time your program stops). This
1151recognizable format looks like two @samp{\032} characters, followed by
1152the file name, line number and character position separated by colons,
1153and a newline. The Emacs-to-@value{GDBN} interface program uses the two
1154@samp{\032} characters as a signal to display the source code for the
1155frame.
c906108c 1156
d700128c
EZ
1157@item -epoch
1158@cindex @code{--epoch}
1159The Epoch Emacs-@value{GDBN} interface sets this option when it runs
1160@value{GDBN} as a subprocess. It tells @value{GDBN} to modify its print
1161routines so as to allow Epoch to display values of expressions in a
1162separate window.
1163
1164@item -annotate @var{level}
1165@cindex @code{--annotate}
1166This option sets the @dfn{annotation level} inside @value{GDBN}. Its
1167effect is identical to using @samp{set annotate @var{level}}
086432e2
AC
1168(@pxref{Annotations}). The annotation @var{level} controls how much
1169information @value{GDBN} prints together with its prompt, values of
1170expressions, source lines, and other types of output. Level 0 is the
1171normal, level 1 is for use when @value{GDBN} is run as a subprocess of
1172@sc{gnu} Emacs, level 3 is the maximum annotation suitable for programs
1173that control @value{GDBN}, and level 2 has been deprecated.
1174
265eeb58 1175The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2 1176(@pxref{GDB/MI}).
d700128c 1177
aa26fa3a
TT
1178@item --args
1179@cindex @code{--args}
1180Change interpretation of command line so that arguments following the
1181executable file are passed as command line arguments to the inferior.
1182This option stops option processing.
1183
2df3850c
JM
1184@item -baud @var{bps}
1185@itemx -b @var{bps}
d700128c
EZ
1186@cindex @code{--baud}
1187@cindex @code{-b}
c906108c
SS
1188Set the line speed (baud rate or bits per second) of any serial
1189interface used by @value{GDBN} for remote debugging.
c906108c 1190
f47b1503
AS
1191@item -l @var{timeout}
1192@cindex @code{-l}
1193Set the timeout (in seconds) of any communication used by @value{GDBN}
1194for remote debugging.
1195
c906108c 1196@item -tty @var{device}
d700128c
EZ
1197@itemx -t @var{device}
1198@cindex @code{--tty}
1199@cindex @code{-t}
c906108c
SS
1200Run using @var{device} for your program's standard input and output.
1201@c FIXME: kingdon thinks there is more to -tty. Investigate.
c906108c 1202
53a5351d 1203@c resolve the situation of these eventually
c4555f82
SC
1204@item -tui
1205@cindex @code{--tui}
d0d5df6f
AC
1206Activate the @dfn{Text User Interface} when starting. The Text User
1207Interface manages several text windows on the terminal, showing
1208source, assembly, registers and @value{GDBN} command outputs
217bff3e
JK
1209(@pxref{TUI, ,@value{GDBN} Text User Interface}). Do not use this
1210option if you run @value{GDBN} from Emacs (@pxref{Emacs, ,
1211Using @value{GDBN} under @sc{gnu} Emacs}).
53a5351d
JM
1212
1213@c @item -xdb
d700128c 1214@c @cindex @code{--xdb}
53a5351d
JM
1215@c Run in XDB compatibility mode, allowing the use of certain XDB commands.
1216@c For information, see the file @file{xdb_trans.html}, which is usually
1217@c installed in the directory @code{/opt/langtools/wdb/doc} on HP-UX
1218@c systems.
1219
d700128c
EZ
1220@item -interpreter @var{interp}
1221@cindex @code{--interpreter}
1222Use the interpreter @var{interp} for interface with the controlling
1223program or device. This option is meant to be set by programs which
94bbb2c0 1224communicate with @value{GDBN} using it as a back end.
21c294e6 1225@xref{Interpreters, , Command Interpreters}.
94bbb2c0 1226
da0f9dcd 1227@samp{--interpreter=mi} (or @samp{--interpreter=mi2}) causes
2fcf52f0 1228@value{GDBN} to use the @dfn{@sc{gdb/mi} interface} (@pxref{GDB/MI, ,
6b5e8c01 1229The @sc{gdb/mi} Interface}) included since @value{GDBN} version 6.0. The
6c74ac8b
AC
1230previous @sc{gdb/mi} interface, included in @value{GDBN} version 5.3 and
1231selected with @samp{--interpreter=mi1}, is deprecated. Earlier
1232@sc{gdb/mi} interfaces are no longer supported.
d700128c
EZ
1233
1234@item -write
1235@cindex @code{--write}
1236Open the executable and core files for both reading and writing. This
1237is equivalent to the @samp{set write on} command inside @value{GDBN}
1238(@pxref{Patching}).
1239
1240@item -statistics
1241@cindex @code{--statistics}
1242This option causes @value{GDBN} to print statistics about time and
1243memory usage after it completes each command and returns to the prompt.
1244
1245@item -version
1246@cindex @code{--version}
1247This option causes @value{GDBN} to print its version number and
1248no-warranty blurb, and exit.
1249
c906108c
SS
1250@end table
1251
6fc08d32 1252@node Startup
79a6e687 1253@subsection What @value{GDBN} Does During Startup
6fc08d32
EZ
1254@cindex @value{GDBN} startup
1255
1256Here's the description of what @value{GDBN} does during session startup:
1257
1258@enumerate
1259@item
1260Sets up the command interpreter as specified by the command line
1261(@pxref{Mode Options, interpreter}).
1262
1263@item
1264@cindex init file
098b41a6
JG
1265Reads the system-wide @dfn{init file} (if @option{--with-system-gdbinit} was
1266used when building @value{GDBN}; @pxref{System-wide configuration,
1267 ,System-wide configuration and settings}) and executes all the commands in
1268that file.
1269
bf88dd68 1270@anchor{Home Directory Init File}
098b41a6
JG
1271@item
1272Reads the init file (if any) in your home directory@footnote{On
6fc08d32
EZ
1273DOS/Windows systems, the home directory is the one pointed to by the
1274@code{HOME} environment variable.} and executes all the commands in
1275that file.
1276
2d7b58e8
JK
1277@anchor{Option -init-eval-command}
1278@item
1279Executes commands and command files specified by the @samp{-iex} and
1280@samp{-ix} options in their specified order. Usually you should use the
1281@samp{-ex} and @samp{-x} options instead, but this way you can apply
1282settings before @value{GDBN} init files get executed and before inferior
1283gets loaded.
1284
6fc08d32
EZ
1285@item
1286Processes command line options and operands.
1287
bf88dd68 1288@anchor{Init File in the Current Directory during Startup}
6fc08d32
EZ
1289@item
1290Reads and executes the commands from init file (if any) in the current
bf88dd68
JK
1291working directory as long as @samp{set auto-load local-gdbinit} is set to
1292@samp{on} (@pxref{Init File in the Current Directory}).
1293This is only done if the current directory is
119b882a
EZ
1294different from your home directory. Thus, you can have more than one
1295init file, one generic in your home directory, and another, specific
1296to the program you are debugging, in the directory where you invoke
6fc08d32
EZ
1297@value{GDBN}.
1298
a86caf66
DE
1299@item
1300If the command line specified a program to debug, or a process to
1301attach to, or a core file, @value{GDBN} loads any auto-loaded
1302scripts provided for the program or for its loaded shared libraries.
1303@xref{Auto-loading}.
1304
1305If you wish to disable the auto-loading during startup,
1306you must do something like the following:
1307
1308@smallexample
bf88dd68 1309$ gdb -iex "set auto-load python-scripts off" myprogram
a86caf66
DE
1310@end smallexample
1311
8320cc4f
JK
1312Option @samp{-ex} does not work because the auto-loading is then turned
1313off too late.
a86caf66 1314
6fc08d32 1315@item
6fe37d23
JK
1316Executes commands and command files specified by the @samp{-ex} and
1317@samp{-x} options in their specified order. @xref{Command Files}, for
1318more details about @value{GDBN} command files.
6fc08d32
EZ
1319
1320@item
1321Reads the command history recorded in the @dfn{history file}.
d620b259 1322@xref{Command History}, for more details about the command history and the
6fc08d32
EZ
1323files where @value{GDBN} records it.
1324@end enumerate
1325
1326Init files use the same syntax as @dfn{command files} (@pxref{Command
1327Files}) and are processed by @value{GDBN} in the same way. The init
1328file in your home directory can set options (such as @samp{set
1329complaints}) that affect subsequent processing of command line options
1330and operands. Init files are not executed if you use the @samp{-nx}
79a6e687 1331option (@pxref{Mode Options, ,Choosing Modes}).
6fc08d32 1332
098b41a6
JG
1333To display the list of init files loaded by gdb at startup, you
1334can use @kbd{gdb --help}.
1335
6fc08d32
EZ
1336@cindex init file name
1337@cindex @file{.gdbinit}
119b882a 1338@cindex @file{gdb.ini}
8807d78b 1339The @value{GDBN} init files are normally called @file{.gdbinit}.
119b882a
EZ
1340The DJGPP port of @value{GDBN} uses the name @file{gdb.ini}, due to
1341the limitations of file names imposed by DOS filesystems. The Windows
1342ports of @value{GDBN} use the standard name, but if they find a
1343@file{gdb.ini} file, they warn you about that and suggest to rename
1344the file to the standard name.
1345
6fc08d32 1346
6d2ebf8b 1347@node Quitting GDB
c906108c
SS
1348@section Quitting @value{GDBN}
1349@cindex exiting @value{GDBN}
1350@cindex leaving @value{GDBN}
1351
1352@table @code
1353@kindex quit @r{[}@var{expression}@r{]}
41afff9a 1354@kindex q @r{(@code{quit})}
96a2c332
SS
1355@item quit @r{[}@var{expression}@r{]}
1356@itemx q
1357To exit @value{GDBN}, use the @code{quit} command (abbreviated
c8aa23ab 1358@code{q}), or type an end-of-file character (usually @kbd{Ctrl-d}). If you
96a2c332
SS
1359do not supply @var{expression}, @value{GDBN} will terminate normally;
1360otherwise it will terminate using the result of @var{expression} as the
1361error code.
c906108c
SS
1362@end table
1363
1364@cindex interrupt
c8aa23ab 1365An interrupt (often @kbd{Ctrl-c}) does not exit from @value{GDBN}, but rather
c906108c
SS
1366terminates the action of any @value{GDBN} command that is in progress and
1367returns to @value{GDBN} command level. It is safe to type the interrupt
1368character at any time because @value{GDBN} does not allow it to take effect
1369until a time when it is safe.
1370
c906108c
SS
1371If you have been using @value{GDBN} to control an attached process or
1372device, you can release it with the @code{detach} command
79a6e687 1373(@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 1374
6d2ebf8b 1375@node Shell Commands
79a6e687 1376@section Shell Commands
c906108c
SS
1377
1378If you need to execute occasional shell commands during your
1379debugging session, there is no need to leave or suspend @value{GDBN}; you can
1380just use the @code{shell} command.
1381
1382@table @code
1383@kindex shell
ed59ded5 1384@kindex !
c906108c 1385@cindex shell escape
ed59ded5
DE
1386@item shell @var{command-string}
1387@itemx !@var{command-string}
1388Invoke a standard shell to execute @var{command-string}.
1389Note that no space is needed between @code{!} and @var{command-string}.
c906108c 1390If it exists, the environment variable @code{SHELL} determines which
d4f3574e
SS
1391shell to run. Otherwise @value{GDBN} uses the default shell
1392(@file{/bin/sh} on Unix systems, @file{COMMAND.COM} on MS-DOS, etc.).
c906108c
SS
1393@end table
1394
1395The utility @code{make} is often needed in development environments.
1396You do not have to use the @code{shell} command for this purpose in
1397@value{GDBN}:
1398
1399@table @code
1400@kindex make
1401@cindex calling make
1402@item make @var{make-args}
1403Execute the @code{make} program with the specified
1404arguments. This is equivalent to @samp{shell make @var{make-args}}.
1405@end table
1406
79a6e687
BW
1407@node Logging Output
1408@section Logging Output
0fac0b41 1409@cindex logging @value{GDBN} output
9c16f35a 1410@cindex save @value{GDBN} output to a file
0fac0b41
DJ
1411
1412You may want to save the output of @value{GDBN} commands to a file.
1413There are several commands to control @value{GDBN}'s logging.
1414
1415@table @code
1416@kindex set logging
1417@item set logging on
1418Enable logging.
1419@item set logging off
1420Disable logging.
9c16f35a 1421@cindex logging file name
0fac0b41
DJ
1422@item set logging file @var{file}
1423Change the name of the current logfile. The default logfile is @file{gdb.txt}.
1424@item set logging overwrite [on|off]
1425By default, @value{GDBN} will append to the logfile. Set @code{overwrite} if
1426you want @code{set logging on} to overwrite the logfile instead.
1427@item set logging redirect [on|off]
1428By default, @value{GDBN} output will go to both the terminal and the logfile.
1429Set @code{redirect} if you want output to go only to the log file.
1430@kindex show logging
1431@item show logging
1432Show the current values of the logging settings.
1433@end table
1434
6d2ebf8b 1435@node Commands
c906108c
SS
1436@chapter @value{GDBN} Commands
1437
1438You can abbreviate a @value{GDBN} command to the first few letters of the command
1439name, if that abbreviation is unambiguous; and you can repeat certain
1440@value{GDBN} commands by typing just @key{RET}. You can also use the @key{TAB}
1441key to get @value{GDBN} to fill out the rest of a word in a command (or to
1442show you the alternatives available, if there is more than one possibility).
1443
1444@menu
1445* Command Syntax:: How to give commands to @value{GDBN}
1446* Completion:: Command completion
1447* Help:: How to ask @value{GDBN} for help
1448@end menu
1449
6d2ebf8b 1450@node Command Syntax
79a6e687 1451@section Command Syntax
c906108c
SS
1452
1453A @value{GDBN} command is a single line of input. There is no limit on
1454how long it can be. It starts with a command name, which is followed by
1455arguments whose meaning depends on the command name. For example, the
1456command @code{step} accepts an argument which is the number of times to
1457step, as in @samp{step 5}. You can also use the @code{step} command
96a2c332 1458with no arguments. Some commands do not allow any arguments.
c906108c
SS
1459
1460@cindex abbreviation
1461@value{GDBN} command names may always be truncated if that abbreviation is
1462unambiguous. Other possible command abbreviations are listed in the
1463documentation for individual commands. In some cases, even ambiguous
1464abbreviations are allowed; for example, @code{s} is specially defined as
1465equivalent to @code{step} even though there are other commands whose
1466names start with @code{s}. You can test abbreviations by using them as
1467arguments to the @code{help} command.
1468
1469@cindex repeating commands
41afff9a 1470@kindex RET @r{(repeat last command)}
c906108c 1471A blank line as input to @value{GDBN} (typing just @key{RET}) means to
96a2c332 1472repeat the previous command. Certain commands (for example, @code{run})
c906108c
SS
1473will not repeat this way; these are commands whose unintentional
1474repetition might cause trouble and which you are unlikely to want to
c45da7e6
EZ
1475repeat. User-defined commands can disable this feature; see
1476@ref{Define, dont-repeat}.
c906108c
SS
1477
1478The @code{list} and @code{x} commands, when you repeat them with
1479@key{RET}, construct new arguments rather than repeating
1480exactly as typed. This permits easy scanning of source or memory.
1481
1482@value{GDBN} can also use @key{RET} in another way: to partition lengthy
1483output, in a way similar to the common utility @code{more}
79a6e687 1484(@pxref{Screen Size,,Screen Size}). Since it is easy to press one
c906108c
SS
1485@key{RET} too many in this situation, @value{GDBN} disables command
1486repetition after any command that generates this sort of display.
1487
41afff9a 1488@kindex # @r{(a comment)}
c906108c
SS
1489@cindex comment
1490Any text from a @kbd{#} to the end of the line is a comment; it does
1491nothing. This is useful mainly in command files (@pxref{Command
79a6e687 1492Files,,Command Files}).
c906108c 1493
88118b3a 1494@cindex repeating command sequences
c8aa23ab
EZ
1495@kindex Ctrl-o @r{(operate-and-get-next)}
1496The @kbd{Ctrl-o} binding is useful for repeating a complex sequence of
7f9087cb 1497commands. This command accepts the current line, like @key{RET}, and
88118b3a
TT
1498then fetches the next line relative to the current line from the history
1499for editing.
1500
6d2ebf8b 1501@node Completion
79a6e687 1502@section Command Completion
c906108c
SS
1503
1504@cindex completion
1505@cindex word completion
1506@value{GDBN} can fill in the rest of a word in a command for you, if there is
1507only one possibility; it can also show you what the valid possibilities
1508are for the next word in a command, at any time. This works for @value{GDBN}
1509commands, @value{GDBN} subcommands, and the names of symbols in your program.
1510
1511Press the @key{TAB} key whenever you want @value{GDBN} to fill out the rest
1512of a word. If there is only one possibility, @value{GDBN} fills in the
1513word, and waits for you to finish the command (or press @key{RET} to
1514enter it). For example, if you type
1515
1516@c FIXME "@key" does not distinguish its argument sufficiently to permit
1517@c complete accuracy in these examples; space introduced for clarity.
1518@c If texinfo enhancements make it unnecessary, it would be nice to
1519@c replace " @key" by "@key" in the following...
474c8240 1520@smallexample
c906108c 1521(@value{GDBP}) info bre @key{TAB}
474c8240 1522@end smallexample
c906108c
SS
1523
1524@noindent
1525@value{GDBN} fills in the rest of the word @samp{breakpoints}, since that is
1526the only @code{info} subcommand beginning with @samp{bre}:
1527
474c8240 1528@smallexample
c906108c 1529(@value{GDBP}) info breakpoints
474c8240 1530@end smallexample
c906108c
SS
1531
1532@noindent
1533You can either press @key{RET} at this point, to run the @code{info
1534breakpoints} command, or backspace and enter something else, if
1535@samp{breakpoints} does not look like the command you expected. (If you
1536were sure you wanted @code{info breakpoints} in the first place, you
1537might as well just type @key{RET} immediately after @samp{info bre},
1538to exploit command abbreviations rather than command completion).
1539
1540If there is more than one possibility for the next word when you press
1541@key{TAB}, @value{GDBN} sounds a bell. You can either supply more
1542characters and try again, or just press @key{TAB} a second time;
1543@value{GDBN} displays all the possible completions for that word. For
1544example, you might want to set a breakpoint on a subroutine whose name
1545begins with @samp{make_}, but when you type @kbd{b make_@key{TAB}} @value{GDBN}
1546just sounds the bell. Typing @key{TAB} again displays all the
1547function names in your program that begin with those characters, for
1548example:
1549
474c8240 1550@smallexample
c906108c
SS
1551(@value{GDBP}) b make_ @key{TAB}
1552@exdent @value{GDBN} sounds bell; press @key{TAB} again, to see:
5d161b24
DB
1553make_a_section_from_file make_environ
1554make_abs_section make_function_type
1555make_blockvector make_pointer_type
1556make_cleanup make_reference_type
c906108c
SS
1557make_command make_symbol_completion_list
1558(@value{GDBP}) b make_
474c8240 1559@end smallexample
c906108c
SS
1560
1561@noindent
1562After displaying the available possibilities, @value{GDBN} copies your
1563partial input (@samp{b make_} in the example) so you can finish the
1564command.
1565
1566If you just want to see the list of alternatives in the first place, you
b37052ae 1567can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
7a292a7a 1568means @kbd{@key{META} ?}. You can type this either by holding down a
c906108c 1569key designated as the @key{META} shift on your keyboard (if there is
7a292a7a 1570one) while typing @kbd{?}, or as @key{ESC} followed by @kbd{?}.
c906108c
SS
1571
1572@cindex quotes in commands
1573@cindex completion of quoted strings
1574Sometimes the string you need, while logically a ``word'', may contain
7a292a7a
SS
1575parentheses or other characters that @value{GDBN} normally excludes from
1576its notion of a word. To permit word completion to work in this
1577situation, you may enclose words in @code{'} (single quote marks) in
1578@value{GDBN} commands.
c906108c 1579
c906108c 1580The most likely situation where you might need this is in typing the
b37052ae
EZ
1581name of a C@t{++} function. This is because C@t{++} allows function
1582overloading (multiple definitions of the same function, distinguished
1583by argument type). For example, when you want to set a breakpoint you
1584may need to distinguish whether you mean the version of @code{name}
1585that takes an @code{int} parameter, @code{name(int)}, or the version
1586that takes a @code{float} parameter, @code{name(float)}. To use the
1587word-completion facilities in this situation, type a single quote
1588@code{'} at the beginning of the function name. This alerts
1589@value{GDBN} that it may need to consider more information than usual
1590when you press @key{TAB} or @kbd{M-?} to request word completion:
c906108c 1591
474c8240 1592@smallexample
96a2c332 1593(@value{GDBP}) b 'bubble( @kbd{M-?}
c906108c
SS
1594bubble(double,double) bubble(int,int)
1595(@value{GDBP}) b 'bubble(
474c8240 1596@end smallexample
c906108c
SS
1597
1598In some cases, @value{GDBN} can tell that completing a name requires using
1599quotes. When this happens, @value{GDBN} inserts the quote for you (while
1600completing as much as it can) if you do not type the quote in the first
1601place:
1602
474c8240 1603@smallexample
c906108c
SS
1604(@value{GDBP}) b bub @key{TAB}
1605@exdent @value{GDBN} alters your input line to the following, and rings a bell:
1606(@value{GDBP}) b 'bubble(
474c8240 1607@end smallexample
c906108c
SS
1608
1609@noindent
1610In general, @value{GDBN} can tell that a quote is needed (and inserts it) if
1611you have not yet started typing the argument list when you ask for
1612completion on an overloaded symbol.
1613
79a6e687
BW
1614For more information about overloaded functions, see @ref{C Plus Plus
1615Expressions, ,C@t{++} Expressions}. You can use the command @code{set
c906108c 1616overload-resolution off} to disable overload resolution;
79a6e687 1617see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}.
c906108c 1618
65d12d83
TT
1619@cindex completion of structure field names
1620@cindex structure field name completion
1621@cindex completion of union field names
1622@cindex union field name completion
1623When completing in an expression which looks up a field in a
1624structure, @value{GDBN} also tries@footnote{The completer can be
1625confused by certain kinds of invalid expressions. Also, it only
1626examines the static type of the expression, not the dynamic type.} to
1627limit completions to the field names available in the type of the
1628left-hand-side:
1629
1630@smallexample
1631(@value{GDBP}) p gdb_stdout.@kbd{M-?}
01124a23
DE
1632magic to_fputs to_rewind
1633to_data to_isatty to_write
1634to_delete to_put to_write_async_safe
1635to_flush to_read
65d12d83
TT
1636@end smallexample
1637
1638@noindent
1639This is because the @code{gdb_stdout} is a variable of the type
1640@code{struct ui_file} that is defined in @value{GDBN} sources as
1641follows:
1642
1643@smallexample
1644struct ui_file
1645@{
1646 int *magic;
1647 ui_file_flush_ftype *to_flush;
1648 ui_file_write_ftype *to_write;
01124a23 1649 ui_file_write_async_safe_ftype *to_write_async_safe;
65d12d83
TT
1650 ui_file_fputs_ftype *to_fputs;
1651 ui_file_read_ftype *to_read;
1652 ui_file_delete_ftype *to_delete;
1653 ui_file_isatty_ftype *to_isatty;
1654 ui_file_rewind_ftype *to_rewind;
1655 ui_file_put_ftype *to_put;
1656 void *to_data;
1657@}
1658@end smallexample
1659
c906108c 1660
6d2ebf8b 1661@node Help
79a6e687 1662@section Getting Help
c906108c
SS
1663@cindex online documentation
1664@kindex help
1665
5d161b24 1666You can always ask @value{GDBN} itself for information on its commands,
c906108c
SS
1667using the command @code{help}.
1668
1669@table @code
41afff9a 1670@kindex h @r{(@code{help})}
c906108c
SS
1671@item help
1672@itemx h
1673You can use @code{help} (abbreviated @code{h}) with no arguments to
1674display a short list of named classes of commands:
1675
1676@smallexample
1677(@value{GDBP}) help
1678List of classes of commands:
1679
2df3850c 1680aliases -- Aliases of other commands
c906108c 1681breakpoints -- Making program stop at certain points
2df3850c 1682data -- Examining data
c906108c 1683files -- Specifying and examining files
2df3850c
JM
1684internals -- Maintenance commands
1685obscure -- Obscure features
1686running -- Running the program
1687stack -- Examining the stack
c906108c
SS
1688status -- Status inquiries
1689support -- Support facilities
12c27660 1690tracepoints -- Tracing of program execution without
96a2c332 1691 stopping the program
c906108c 1692user-defined -- User-defined commands
c906108c 1693
5d161b24 1694Type "help" followed by a class name for a list of
c906108c 1695commands in that class.
5d161b24 1696Type "help" followed by command name for full
c906108c
SS
1697documentation.
1698Command name abbreviations are allowed if unambiguous.
1699(@value{GDBP})
1700@end smallexample
96a2c332 1701@c the above line break eliminates huge line overfull...
c906108c
SS
1702
1703@item help @var{class}
1704Using one of the general help classes as an argument, you can get a
1705list of the individual commands in that class. For example, here is the
1706help display for the class @code{status}:
1707
1708@smallexample
1709(@value{GDBP}) help status
1710Status inquiries.
1711
1712List of commands:
1713
1714@c Line break in "show" line falsifies real output, but needed
1715@c to fit in smallbook page size.
2df3850c 1716info -- Generic command for showing things
12c27660 1717 about the program being debugged
2df3850c 1718show -- Generic command for showing things
12c27660 1719 about the debugger
c906108c 1720
5d161b24 1721Type "help" followed by command name for full
c906108c
SS
1722documentation.
1723Command name abbreviations are allowed if unambiguous.
1724(@value{GDBP})
1725@end smallexample
1726
1727@item help @var{command}
1728With a command name as @code{help} argument, @value{GDBN} displays a
1729short paragraph on how to use that command.
1730
6837a0a2
DB
1731@kindex apropos
1732@item apropos @var{args}
09d4efe1 1733The @code{apropos} command searches through all of the @value{GDBN}
6837a0a2 1734commands, and their documentation, for the regular expression specified in
99e008fe 1735@var{args}. It prints out all matches found. For example:
6837a0a2
DB
1736
1737@smallexample
16899756 1738apropos alias
6837a0a2
DB
1739@end smallexample
1740
b37052ae
EZ
1741@noindent
1742results in:
6837a0a2
DB
1743
1744@smallexample
6d2ebf8b 1745@c @group
16899756
DE
1746alias -- Define a new command that is an alias of an existing command
1747aliases -- Aliases of other commands
1748d -- Delete some breakpoints or auto-display expressions
1749del -- Delete some breakpoints or auto-display expressions
1750delete -- Delete some breakpoints or auto-display expressions
6d2ebf8b 1751@c @end group
6837a0a2
DB
1752@end smallexample
1753
c906108c
SS
1754@kindex complete
1755@item complete @var{args}
1756The @code{complete @var{args}} command lists all the possible completions
1757for the beginning of a command. Use @var{args} to specify the beginning of the
1758command you want completed. For example:
1759
1760@smallexample
1761complete i
1762@end smallexample
1763
1764@noindent results in:
1765
1766@smallexample
1767@group
2df3850c
JM
1768if
1769ignore
c906108c
SS
1770info
1771inspect
c906108c
SS
1772@end group
1773@end smallexample
1774
1775@noindent This is intended for use by @sc{gnu} Emacs.
1776@end table
1777
1778In addition to @code{help}, you can use the @value{GDBN} commands @code{info}
1779and @code{show} to inquire about the state of your program, or the state
1780of @value{GDBN} itself. Each command supports many topics of inquiry; this
1781manual introduces each of them in the appropriate context. The listings
00595b5e
EZ
1782under @code{info} and under @code{show} in the Command, Variable, and
1783Function Index point to all the sub-commands. @xref{Command and Variable
1784Index}.
c906108c
SS
1785
1786@c @group
1787@table @code
1788@kindex info
41afff9a 1789@kindex i @r{(@code{info})}
c906108c
SS
1790@item info
1791This command (abbreviated @code{i}) is for describing the state of your
cda4ce5a 1792program. For example, you can show the arguments passed to a function
c906108c
SS
1793with @code{info args}, list the registers currently in use with @code{info
1794registers}, or list the breakpoints you have set with @code{info breakpoints}.
1795You can get a complete list of the @code{info} sub-commands with
1796@w{@code{help info}}.
1797
1798@kindex set
1799@item set
5d161b24 1800You can assign the result of an expression to an environment variable with
c906108c
SS
1801@code{set}. For example, you can set the @value{GDBN} prompt to a $-sign with
1802@code{set prompt $}.
1803
1804@kindex show
1805@item show
5d161b24 1806In contrast to @code{info}, @code{show} is for describing the state of
c906108c
SS
1807@value{GDBN} itself.
1808You can change most of the things you can @code{show}, by using the
1809related command @code{set}; for example, you can control what number
1810system is used for displays with @code{set radix}, or simply inquire
1811which is currently in use with @code{show radix}.
1812
1813@kindex info set
1814To display all the settable parameters and their current
1815values, you can use @code{show} with no arguments; you may also use
1816@code{info set}. Both commands produce the same display.
1817@c FIXME: "info set" violates the rule that "info" is for state of
1818@c FIXME...program. Ck w/ GNU: "info set" to be called something else,
1819@c FIXME...or change desc of rule---eg "state of prog and debugging session"?
1820@end table
1821@c @end group
1822
1823Here are three miscellaneous @code{show} subcommands, all of which are
1824exceptional in lacking corresponding @code{set} commands:
1825
1826@table @code
1827@kindex show version
9c16f35a 1828@cindex @value{GDBN} version number
c906108c
SS
1829@item show version
1830Show what version of @value{GDBN} is running. You should include this
2df3850c
JM
1831information in @value{GDBN} bug-reports. If multiple versions of
1832@value{GDBN} are in use at your site, you may need to determine which
1833version of @value{GDBN} you are running; as @value{GDBN} evolves, new
1834commands are introduced, and old ones may wither away. Also, many
1835system vendors ship variant versions of @value{GDBN}, and there are
96a2c332 1836variant versions of @value{GDBN} in @sc{gnu}/Linux distributions as well.
2df3850c
JM
1837The version number is the same as the one announced when you start
1838@value{GDBN}.
c906108c
SS
1839
1840@kindex show copying
09d4efe1 1841@kindex info copying
9c16f35a 1842@cindex display @value{GDBN} copyright
c906108c 1843@item show copying
09d4efe1 1844@itemx info copying
c906108c
SS
1845Display information about permission for copying @value{GDBN}.
1846
1847@kindex show warranty
09d4efe1 1848@kindex info warranty
c906108c 1849@item show warranty
09d4efe1 1850@itemx info warranty
2df3850c 1851Display the @sc{gnu} ``NO WARRANTY'' statement, or a warranty,
96a2c332 1852if your version of @value{GDBN} comes with one.
2df3850c 1853
c906108c
SS
1854@end table
1855
6d2ebf8b 1856@node Running
c906108c
SS
1857@chapter Running Programs Under @value{GDBN}
1858
1859When you run a program under @value{GDBN}, you must first generate
1860debugging information when you compile it.
7a292a7a
SS
1861
1862You may start @value{GDBN} with its arguments, if any, in an environment
1863of your choice. If you are doing native debugging, you may redirect
1864your program's input and output, debug an already running process, or
1865kill a child process.
c906108c
SS
1866
1867@menu
1868* Compilation:: Compiling for debugging
1869* Starting:: Starting your program
c906108c
SS
1870* Arguments:: Your program's arguments
1871* Environment:: Your program's environment
c906108c
SS
1872
1873* Working Directory:: Your program's working directory
1874* Input/Output:: Your program's input and output
1875* Attach:: Debugging an already-running process
1876* Kill Process:: Killing the child process
c906108c 1877
6c95b8df 1878* Inferiors and Programs:: Debugging multiple inferiors and programs
c906108c 1879* Threads:: Debugging programs with multiple threads
6c95b8df 1880* Forks:: Debugging forks
5c95884b 1881* Checkpoint/Restart:: Setting a @emph{bookmark} to return to later
c906108c
SS
1882@end menu
1883
6d2ebf8b 1884@node Compilation
79a6e687 1885@section Compiling for Debugging
c906108c
SS
1886
1887In order to debug a program effectively, you need to generate
1888debugging information when you compile it. This debugging information
1889is stored in the object file; it describes the data type of each
1890variable or function and the correspondence between source line numbers
1891and addresses in the executable code.
1892
1893To request debugging information, specify the @samp{-g} option when you run
1894the compiler.
1895
514c4d71 1896Programs that are to be shipped to your customers are compiled with
edb3359d 1897optimizations, using the @samp{-O} compiler option. However, some
514c4d71
EZ
1898compilers are unable to handle the @samp{-g} and @samp{-O} options
1899together. Using those compilers, you cannot generate optimized
c906108c
SS
1900executables containing debugging information.
1901
514c4d71 1902@value{NGCC}, the @sc{gnu} C/C@t{++} compiler, supports @samp{-g} with or
53a5351d
JM
1903without @samp{-O}, making it possible to debug optimized code. We
1904recommend that you @emph{always} use @samp{-g} whenever you compile a
1905program. You may think your program is correct, but there is no sense
edb3359d 1906in pushing your luck. For more information, see @ref{Optimized Code}.
c906108c
SS
1907
1908Older versions of the @sc{gnu} C compiler permitted a variant option
1909@w{@samp{-gg}} for debugging information. @value{GDBN} no longer supports this
1910format; if your @sc{gnu} C compiler has this option, do not use it.
1911
514c4d71
EZ
1912@value{GDBN} knows about preprocessor macros and can show you their
1913expansion (@pxref{Macros}). Most compilers do not include information
1914about preprocessor macros in the debugging information if you specify
e0f8f636
TT
1915the @option{-g} flag alone. Version 3.1 and later of @value{NGCC},
1916the @sc{gnu} C compiler, provides macro information if you are using
1917the DWARF debugging format, and specify the option @option{-g3}.
1918
1919@xref{Debugging Options,,Options for Debugging Your Program or GCC,
1920gcc.info, Using the @sc{gnu} Compiler Collection (GCC)}, for more
1921information on @value{NGCC} options affecting debug information.
1922
1923You will have the best debugging experience if you use the latest
1924version of the DWARF debugging format that your compiler supports.
1925DWARF is currently the most expressive and best supported debugging
1926format in @value{GDBN}.
514c4d71 1927
c906108c 1928@need 2000
6d2ebf8b 1929@node Starting
79a6e687 1930@section Starting your Program
c906108c
SS
1931@cindex starting
1932@cindex running
1933
1934@table @code
1935@kindex run
41afff9a 1936@kindex r @r{(@code{run})}
c906108c
SS
1937@item run
1938@itemx r
7a292a7a
SS
1939Use the @code{run} command to start your program under @value{GDBN}.
1940You must first specify the program name (except on VxWorks) with an
1941argument to @value{GDBN} (@pxref{Invocation, ,Getting In and Out of
1942@value{GDBN}}), or by using the @code{file} or @code{exec-file} command
79a6e687 1943(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
1944
1945@end table
1946
c906108c
SS
1947If you are running your program in an execution environment that
1948supports processes, @code{run} creates an inferior process and makes
8edfe269
DJ
1949that process run your program. In some environments without processes,
1950@code{run} jumps to the start of your program. Other targets,
1951like @samp{remote}, are always running. If you get an error
1952message like this one:
1953
1954@smallexample
1955The "remote" target does not support "run".
1956Try "help target" or "continue".
1957@end smallexample
1958
1959@noindent
1960then use @code{continue} to run your program. You may need @code{load}
1961first (@pxref{load}).
c906108c
SS
1962
1963The execution of a program is affected by certain information it
1964receives from its superior. @value{GDBN} provides ways to specify this
1965information, which you must do @emph{before} starting your program. (You
1966can change it after starting your program, but such changes only affect
1967your program the next time you start it.) This information may be
1968divided into four categories:
1969
1970@table @asis
1971@item The @emph{arguments.}
1972Specify the arguments to give your program as the arguments of the
1973@code{run} command. If a shell is available on your target, the shell
1974is used to pass the arguments, so that you may use normal conventions
1975(such as wildcard expansion or variable substitution) in describing
1976the arguments.
1977In Unix systems, you can control which shell is used with the
1978@code{SHELL} environment variable.
79a6e687 1979@xref{Arguments, ,Your Program's Arguments}.
c906108c
SS
1980
1981@item The @emph{environment.}
1982Your program normally inherits its environment from @value{GDBN}, but you can
1983use the @value{GDBN} commands @code{set environment} and @code{unset
1984environment} to change parts of the environment that affect
79a6e687 1985your program. @xref{Environment, ,Your Program's Environment}.
c906108c
SS
1986
1987@item The @emph{working directory.}
1988Your program inherits its working directory from @value{GDBN}. You can set
1989the @value{GDBN} working directory with the @code{cd} command in @value{GDBN}.
79a6e687 1990@xref{Working Directory, ,Your Program's Working Directory}.
c906108c
SS
1991
1992@item The @emph{standard input and output.}
1993Your program normally uses the same device for standard input and
1994standard output as @value{GDBN} is using. You can redirect input and output
1995in the @code{run} command line, or you can use the @code{tty} command to
1996set a different device for your program.
79a6e687 1997@xref{Input/Output, ,Your Program's Input and Output}.
c906108c
SS
1998
1999@cindex pipes
2000@emph{Warning:} While input and output redirection work, you cannot use
2001pipes to pass the output of the program you are debugging to another
2002program; if you attempt this, @value{GDBN} is likely to wind up debugging the
2003wrong program.
2004@end table
c906108c
SS
2005
2006When you issue the @code{run} command, your program begins to execute
79a6e687 2007immediately. @xref{Stopping, ,Stopping and Continuing}, for discussion
c906108c
SS
2008of how to arrange for your program to stop. Once your program has
2009stopped, you may call functions in your program, using the @code{print}
2010or @code{call} commands. @xref{Data, ,Examining Data}.
2011
2012If the modification time of your symbol file has changed since the last
2013time @value{GDBN} read its symbols, @value{GDBN} discards its symbol
2014table, and reads it again. When it does this, @value{GDBN} tries to retain
2015your current breakpoints.
2016
4e8b0763
JB
2017@table @code
2018@kindex start
2019@item start
2020@cindex run to main procedure
2021The name of the main procedure can vary from language to language.
2022With C or C@t{++}, the main procedure name is always @code{main}, but
2023other languages such as Ada do not require a specific name for their
2024main procedure. The debugger provides a convenient way to start the
2025execution of the program and to stop at the beginning of the main
2026procedure, depending on the language used.
2027
2028The @samp{start} command does the equivalent of setting a temporary
2029breakpoint at the beginning of the main procedure and then invoking
2030the @samp{run} command.
2031
f018e82f
EZ
2032@cindex elaboration phase
2033Some programs contain an @dfn{elaboration} phase where some startup code is
2034executed before the main procedure is called. This depends on the
2035languages used to write your program. In C@t{++}, for instance,
4e8b0763
JB
2036constructors for static and global objects are executed before
2037@code{main} is called. It is therefore possible that the debugger stops
2038before reaching the main procedure. However, the temporary breakpoint
2039will remain to halt execution.
2040
2041Specify the arguments to give to your program as arguments to the
2042@samp{start} command. These arguments will be given verbatim to the
2043underlying @samp{run} command. Note that the same arguments will be
2044reused if no argument is provided during subsequent calls to
2045@samp{start} or @samp{run}.
2046
2047It is sometimes necessary to debug the program during elaboration. In
2048these cases, using the @code{start} command would stop the execution of
2049your program too late, as the program would have already completed the
2050elaboration phase. Under these circumstances, insert breakpoints in your
2051elaboration code before running your program.
ccd213ac
DJ
2052
2053@kindex set exec-wrapper
2054@item set exec-wrapper @var{wrapper}
2055@itemx show exec-wrapper
2056@itemx unset exec-wrapper
2057When @samp{exec-wrapper} is set, the specified wrapper is used to
2058launch programs for debugging. @value{GDBN} starts your program
2059with a shell command of the form @kbd{exec @var{wrapper}
2060@var{program}}. Quoting is added to @var{program} and its
2061arguments, but not to @var{wrapper}, so you should add quotes if
2062appropriate for your shell. The wrapper runs until it executes
2063your program, and then @value{GDBN} takes control.
2064
2065You can use any program that eventually calls @code{execve} with
2066its arguments as a wrapper. Several standard Unix utilities do
2067this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
2068with @code{exec "$@@"} will also work.
2069
2070For example, you can use @code{env} to pass an environment variable to
2071the debugged program, without setting the variable in your shell's
2072environment:
2073
2074@smallexample
2075(@value{GDBP}) set exec-wrapper env 'LD_PRELOAD=libtest.so'
2076(@value{GDBP}) run
2077@end smallexample
2078
2079This command is available when debugging locally on most targets, excluding
2080@sc{djgpp}, Cygwin, MS Windows, and QNX Neutrino.
2081
10568435
JK
2082@kindex set disable-randomization
2083@item set disable-randomization
2084@itemx set disable-randomization on
2085This option (enabled by default in @value{GDBN}) will turn off the native
2086randomization of the virtual address space of the started program. This option
2087is useful for multiple debugging sessions to make the execution better
2088reproducible and memory addresses reusable across debugging sessions.
2089
03583c20
UW
2090This feature is implemented only on certain targets, including @sc{gnu}/Linux.
2091On @sc{gnu}/Linux you can get the same behavior using
10568435
JK
2092
2093@smallexample
2094(@value{GDBP}) set exec-wrapper setarch `uname -m` -R
2095@end smallexample
2096
2097@item set disable-randomization off
2098Leave the behavior of the started executable unchanged. Some bugs rear their
2099ugly heads only when the program is loaded at certain addresses. If your bug
2100disappears when you run the program under @value{GDBN}, that might be because
2101@value{GDBN} by default disables the address randomization on platforms, such
2102as @sc{gnu}/Linux, which do that for stand-alone programs. Use @kbd{set
2103disable-randomization off} to try to reproduce such elusive bugs.
2104
03583c20
UW
2105On targets where it is available, virtual address space randomization
2106protects the programs against certain kinds of security attacks. In these
10568435
JK
2107cases the attacker needs to know the exact location of a concrete executable
2108code. Randomizing its location makes it impossible to inject jumps misusing
2109a code at its expected addresses.
2110
2111Prelinking shared libraries provides a startup performance advantage but it
2112makes addresses in these libraries predictable for privileged processes by
2113having just unprivileged access at the target system. Reading the shared
2114library binary gives enough information for assembling the malicious code
2115misusing it. Still even a prelinked shared library can get loaded at a new
2116random address just requiring the regular relocation process during the
2117startup. Shared libraries not already prelinked are always loaded at
2118a randomly chosen address.
2119
2120Position independent executables (PIE) contain position independent code
2121similar to the shared libraries and therefore such executables get loaded at
2122a randomly chosen address upon startup. PIE executables always load even
2123already prelinked shared libraries at a random address. You can build such
2124executable using @command{gcc -fPIE -pie}.
2125
2126Heap (malloc storage), stack and custom mmap areas are always placed randomly
2127(as long as the randomization is enabled).
2128
2129@item show disable-randomization
2130Show the current setting of the explicit disable of the native randomization of
2131the virtual address space of the started program.
2132
4e8b0763
JB
2133@end table
2134
6d2ebf8b 2135@node Arguments
79a6e687 2136@section Your Program's Arguments
c906108c
SS
2137
2138@cindex arguments (to your program)
2139The arguments to your program can be specified by the arguments of the
5d161b24 2140@code{run} command.
c906108c
SS
2141They are passed to a shell, which expands wildcard characters and
2142performs redirection of I/O, and thence to your program. Your
2143@code{SHELL} environment variable (if it exists) specifies what shell
2144@value{GDBN} uses. If you do not define @code{SHELL}, @value{GDBN} uses
d4f3574e
SS
2145the default shell (@file{/bin/sh} on Unix).
2146
2147On non-Unix systems, the program is usually invoked directly by
2148@value{GDBN}, which emulates I/O redirection via the appropriate system
2149calls, and the wildcard characters are expanded by the startup code of
2150the program, not by the shell.
c906108c
SS
2151
2152@code{run} with no arguments uses the same arguments used by the previous
2153@code{run}, or those set by the @code{set args} command.
2154
c906108c 2155@table @code
41afff9a 2156@kindex set args
c906108c
SS
2157@item set args
2158Specify the arguments to be used the next time your program is run. If
2159@code{set args} has no arguments, @code{run} executes your program
2160with no arguments. Once you have run your program with arguments,
2161using @code{set args} before the next @code{run} is the only way to run
2162it again without arguments.
2163
2164@kindex show args
2165@item show args
2166Show the arguments to give your program when it is started.
2167@end table
2168
6d2ebf8b 2169@node Environment
79a6e687 2170@section Your Program's Environment
c906108c
SS
2171
2172@cindex environment (of your program)
2173The @dfn{environment} consists of a set of environment variables and
2174their values. Environment variables conventionally record such things as
2175your user name, your home directory, your terminal type, and your search
2176path for programs to run. Usually you set up environment variables with
2177the shell and they are inherited by all the other programs you run. When
2178debugging, it can be useful to try running your program with a modified
2179environment without having to start @value{GDBN} over again.
2180
2181@table @code
2182@kindex path
2183@item path @var{directory}
2184Add @var{directory} to the front of the @code{PATH} environment variable
17cc6a06
EZ
2185(the search path for executables) that will be passed to your program.
2186The value of @code{PATH} used by @value{GDBN} does not change.
d4f3574e
SS
2187You may specify several directory names, separated by whitespace or by a
2188system-dependent separator character (@samp{:} on Unix, @samp{;} on
2189MS-DOS and MS-Windows). If @var{directory} is already in the path, it
2190is moved to the front, so it is searched sooner.
c906108c
SS
2191
2192You can use the string @samp{$cwd} to refer to whatever is the current
2193working directory at the time @value{GDBN} searches the path. If you
2194use @samp{.} instead, it refers to the directory where you executed the
2195@code{path} command. @value{GDBN} replaces @samp{.} in the
2196@var{directory} argument (with the current path) before adding
2197@var{directory} to the search path.
2198@c 'path' is explicitly nonrepeatable, but RMS points out it is silly to
2199@c document that, since repeating it would be a no-op.
2200
2201@kindex show paths
2202@item show paths
2203Display the list of search paths for executables (the @code{PATH}
2204environment variable).
2205
2206@kindex show environment
2207@item show environment @r{[}@var{varname}@r{]}
2208Print the value of environment variable @var{varname} to be given to
2209your program when it starts. If you do not supply @var{varname},
2210print the names and values of all environment variables to be given to
2211your program. You can abbreviate @code{environment} as @code{env}.
2212
2213@kindex set environment
53a5351d 2214@item set environment @var{varname} @r{[}=@var{value}@r{]}
c906108c
SS
2215Set environment variable @var{varname} to @var{value}. The value
2216changes for your program only, not for @value{GDBN} itself. @var{value} may
2217be any string; the values of environment variables are just strings, and
2218any interpretation is supplied by your program itself. The @var{value}
2219parameter is optional; if it is eliminated, the variable is set to a
2220null value.
2221@c "any string" here does not include leading, trailing
2222@c blanks. Gnu asks: does anyone care?
2223
2224For example, this command:
2225
474c8240 2226@smallexample
c906108c 2227set env USER = foo
474c8240 2228@end smallexample
c906108c
SS
2229
2230@noindent
d4f3574e 2231tells the debugged program, when subsequently run, that its user is named
c906108c
SS
2232@samp{foo}. (The spaces around @samp{=} are used for clarity here; they
2233are not actually required.)
2234
2235@kindex unset environment
2236@item unset environment @var{varname}
2237Remove variable @var{varname} from the environment to be passed to your
2238program. This is different from @samp{set env @var{varname} =};
2239@code{unset environment} removes the variable from the environment,
2240rather than assigning it an empty value.
2241@end table
2242
d4f3574e
SS
2243@emph{Warning:} On Unix systems, @value{GDBN} runs your program using
2244the shell indicated
c906108c
SS
2245by your @code{SHELL} environment variable if it exists (or
2246@code{/bin/sh} if not). If your @code{SHELL} variable names a shell
2247that runs an initialization file---such as @file{.cshrc} for C-shell, or
2248@file{.bashrc} for BASH---any variables you set in that file affect
2249your program. You may wish to move setting of environment variables to
2250files that are only run when you sign on, such as @file{.login} or
2251@file{.profile}.
2252
6d2ebf8b 2253@node Working Directory
79a6e687 2254@section Your Program's Working Directory
c906108c
SS
2255
2256@cindex working directory (of your program)
2257Each time you start your program with @code{run}, it inherits its
2258working directory from the current working directory of @value{GDBN}.
2259The @value{GDBN} working directory is initially whatever it inherited
2260from its parent process (typically the shell), but you can specify a new
2261working directory in @value{GDBN} with the @code{cd} command.
2262
2263The @value{GDBN} working directory also serves as a default for the commands
2264that specify files for @value{GDBN} to operate on. @xref{Files, ,Commands to
79a6e687 2265Specify Files}.
c906108c
SS
2266
2267@table @code
2268@kindex cd
721c2651 2269@cindex change working directory
f3c8a52a
JK
2270@item cd @r{[}@var{directory}@r{]}
2271Set the @value{GDBN} working directory to @var{directory}. If not
2272given, @var{directory} uses @file{'~'}.
c906108c
SS
2273
2274@kindex pwd
2275@item pwd
2276Print the @value{GDBN} working directory.
2277@end table
2278
60bf7e09
EZ
2279It is generally impossible to find the current working directory of
2280the process being debugged (since a program can change its directory
2281during its run). If you work on a system where @value{GDBN} is
2282configured with the @file{/proc} support, you can use the @code{info
2283proc} command (@pxref{SVR4 Process Information}) to find out the
2284current working directory of the debuggee.
2285
6d2ebf8b 2286@node Input/Output
79a6e687 2287@section Your Program's Input and Output
c906108c
SS
2288
2289@cindex redirection
2290@cindex i/o
2291@cindex terminal
2292By default, the program you run under @value{GDBN} does input and output to
5d161b24 2293the same terminal that @value{GDBN} uses. @value{GDBN} switches the terminal
c906108c
SS
2294to its own terminal modes to interact with you, but it records the terminal
2295modes your program was using and switches back to them when you continue
2296running your program.
2297
2298@table @code
2299@kindex info terminal
2300@item info terminal
2301Displays information recorded by @value{GDBN} about the terminal modes your
2302program is using.
2303@end table
2304
2305You can redirect your program's input and/or output using shell
2306redirection with the @code{run} command. For example,
2307
474c8240 2308@smallexample
c906108c 2309run > outfile
474c8240 2310@end smallexample
c906108c
SS
2311
2312@noindent
2313starts your program, diverting its output to the file @file{outfile}.
2314
2315@kindex tty
2316@cindex controlling terminal
2317Another way to specify where your program should do input and output is
2318with the @code{tty} command. This command accepts a file name as
2319argument, and causes this file to be the default for future @code{run}
2320commands. It also resets the controlling terminal for the child
2321process, for future @code{run} commands. For example,
2322
474c8240 2323@smallexample
c906108c 2324tty /dev/ttyb
474c8240 2325@end smallexample
c906108c
SS
2326
2327@noindent
2328directs that processes started with subsequent @code{run} commands
2329default to do input and output on the terminal @file{/dev/ttyb} and have
2330that as their controlling terminal.
2331
2332An explicit redirection in @code{run} overrides the @code{tty} command's
2333effect on the input/output device, but not its effect on the controlling
2334terminal.
2335
2336When you use the @code{tty} command or redirect input in the @code{run}
2337command, only the input @emph{for your program} is affected. The input
3cb3b8df
BR
2338for @value{GDBN} still comes from your terminal. @code{tty} is an alias
2339for @code{set inferior-tty}.
2340
2341@cindex inferior tty
2342@cindex set inferior controlling terminal
2343You can use the @code{show inferior-tty} command to tell @value{GDBN} to
2344display the name of the terminal that will be used for future runs of your
2345program.
2346
2347@table @code
2348@item set inferior-tty /dev/ttyb
2349@kindex set inferior-tty
2350Set the tty for the program being debugged to /dev/ttyb.
2351
2352@item show inferior-tty
2353@kindex show inferior-tty
2354Show the current tty for the program being debugged.
2355@end table
c906108c 2356
6d2ebf8b 2357@node Attach
79a6e687 2358@section Debugging an Already-running Process
c906108c
SS
2359@kindex attach
2360@cindex attach
2361
2362@table @code
2363@item attach @var{process-id}
2364This command attaches to a running process---one that was started
2365outside @value{GDBN}. (@code{info files} shows your active
2366targets.) The command takes as argument a process ID. The usual way to
09d4efe1 2367find out the @var{process-id} of a Unix process is with the @code{ps} utility,
c906108c
SS
2368or with the @samp{jobs -l} shell command.
2369
2370@code{attach} does not repeat if you press @key{RET} a second time after
2371executing the command.
2372@end table
2373
2374To use @code{attach}, your program must be running in an environment
2375which supports processes; for example, @code{attach} does not work for
2376programs on bare-board targets that lack an operating system. You must
2377also have permission to send the process a signal.
2378
2379When you use @code{attach}, the debugger finds the program running in
2380the process first by looking in the current working directory, then (if
2381the program is not found) by using the source file search path
79a6e687 2382(@pxref{Source Path, ,Specifying Source Directories}). You can also use
c906108c
SS
2383the @code{file} command to load the program. @xref{Files, ,Commands to
2384Specify Files}.
2385
2386The first thing @value{GDBN} does after arranging to debug the specified
2387process is to stop it. You can examine and modify an attached process
53a5351d
JM
2388with all the @value{GDBN} commands that are ordinarily available when
2389you start processes with @code{run}. You can insert breakpoints; you
2390can step and continue; you can modify storage. If you would rather the
2391process continue running, you may use the @code{continue} command after
c906108c
SS
2392attaching @value{GDBN} to the process.
2393
2394@table @code
2395@kindex detach
2396@item detach
2397When you have finished debugging the attached process, you can use the
2398@code{detach} command to release it from @value{GDBN} control. Detaching
2399the process continues its execution. After the @code{detach} command,
2400that process and @value{GDBN} become completely independent once more, and you
2401are ready to @code{attach} another process or start one with @code{run}.
2402@code{detach} does not repeat if you press @key{RET} again after
2403executing the command.
2404@end table
2405
159fcc13
JK
2406If you exit @value{GDBN} while you have an attached process, you detach
2407that process. If you use the @code{run} command, you kill that process.
2408By default, @value{GDBN} asks for confirmation if you try to do either of these
2409things; you can control whether or not you need to confirm by using the
2410@code{set confirm} command (@pxref{Messages/Warnings, ,Optional Warnings and
79a6e687 2411Messages}).
c906108c 2412
6d2ebf8b 2413@node Kill Process
79a6e687 2414@section Killing the Child Process
c906108c
SS
2415
2416@table @code
2417@kindex kill
2418@item kill
2419Kill the child process in which your program is running under @value{GDBN}.
2420@end table
2421
2422This command is useful if you wish to debug a core dump instead of a
2423running process. @value{GDBN} ignores any core dump file while your program
2424is running.
2425
2426On some operating systems, a program cannot be executed outside @value{GDBN}
2427while you have breakpoints set on it inside @value{GDBN}. You can use the
2428@code{kill} command in this situation to permit running your program
2429outside the debugger.
2430
2431The @code{kill} command is also useful if you wish to recompile and
2432relink your program, since on many systems it is impossible to modify an
2433executable file while it is running in a process. In this case, when you
2434next type @code{run}, @value{GDBN} notices that the file has changed, and
2435reads the symbol table again (while trying to preserve your current
2436breakpoint settings).
2437
6c95b8df
PA
2438@node Inferiors and Programs
2439@section Debugging Multiple Inferiors and Programs
b77209e0 2440
6c95b8df
PA
2441@value{GDBN} lets you run and debug multiple programs in a single
2442session. In addition, @value{GDBN} on some systems may let you run
2443several programs simultaneously (otherwise you have to exit from one
2444before starting another). In the most general case, you can have
2445multiple threads of execution in each of multiple processes, launched
2446from multiple executables.
b77209e0
PA
2447
2448@cindex inferior
2449@value{GDBN} represents the state of each program execution with an
2450object called an @dfn{inferior}. An inferior typically corresponds to
2451a process, but is more general and applies also to targets that do not
2452have processes. Inferiors may be created before a process runs, and
6c95b8df
PA
2453may be retained after a process exits. Inferiors have unique
2454identifiers that are different from process ids. Usually each
2455inferior will also have its own distinct address space, although some
2456embedded targets may have several inferiors running in different parts
2457of a single address space. Each inferior may in turn have multiple
2458threads running in it.
b77209e0 2459
6c95b8df
PA
2460To find out what inferiors exist at any moment, use @w{@code{info
2461inferiors}}:
b77209e0
PA
2462
2463@table @code
2464@kindex info inferiors
2465@item info inferiors
2466Print a list of all inferiors currently being managed by @value{GDBN}.
3a1ff0b6
PA
2467
2468@value{GDBN} displays for each inferior (in this order):
2469
2470@enumerate
2471@item
2472the inferior number assigned by @value{GDBN}
2473
2474@item
2475the target system's inferior identifier
6c95b8df
PA
2476
2477@item
2478the name of the executable the inferior is running.
2479
3a1ff0b6
PA
2480@end enumerate
2481
2482@noindent
2483An asterisk @samp{*} preceding the @value{GDBN} inferior number
2484indicates the current inferior.
2485
2486For example,
2277426b 2487@end table
3a1ff0b6
PA
2488@c end table here to get a little more width for example
2489
2490@smallexample
2491(@value{GDBP}) info inferiors
6c95b8df
PA
2492 Num Description Executable
2493 2 process 2307 hello
2494* 1 process 3401 goodbye
3a1ff0b6 2495@end smallexample
2277426b
PA
2496
2497To switch focus between inferiors, use the @code{inferior} command:
2498
2499@table @code
3a1ff0b6
PA
2500@kindex inferior @var{infno}
2501@item inferior @var{infno}
2502Make inferior number @var{infno} the current inferior. The argument
2503@var{infno} is the inferior number assigned by @value{GDBN}, as shown
2504in the first field of the @samp{info inferiors} display.
2277426b
PA
2505@end table
2506
6c95b8df
PA
2507
2508You can get multiple executables into a debugging session via the
2509@code{add-inferior} and @w{@code{clone-inferior}} commands. On some
2510systems @value{GDBN} can add inferiors to the debug session
2511automatically by following calls to @code{fork} and @code{exec}. To
2512remove inferiors from the debugging session use the
af624141 2513@w{@code{remove-inferiors}} command.
6c95b8df
PA
2514
2515@table @code
2516@kindex add-inferior
2517@item add-inferior [ -copies @var{n} ] [ -exec @var{executable} ]
2518Adds @var{n} inferiors to be run using @var{executable} as the
2519executable. @var{n} defaults to 1. If no executable is specified,
2520the inferiors begins empty, with no program. You can still assign or
2521change the program assigned to the inferior at any time by using the
2522@code{file} command with the executable name as its argument.
2523
2524@kindex clone-inferior
2525@item clone-inferior [ -copies @var{n} ] [ @var{infno} ]
2526Adds @var{n} inferiors ready to execute the same program as inferior
2527@var{infno}. @var{n} defaults to 1. @var{infno} defaults to the
2528number of the current inferior. This is a convenient command when you
2529want to run another instance of the inferior you are debugging.
2530
2531@smallexample
2532(@value{GDBP}) info inferiors
2533 Num Description Executable
2534* 1 process 29964 helloworld
2535(@value{GDBP}) clone-inferior
2536Added inferior 2.
25371 inferiors added.
2538(@value{GDBP}) info inferiors
2539 Num Description Executable
2540 2 <null> helloworld
2541* 1 process 29964 helloworld
2542@end smallexample
2543
2544You can now simply switch focus to inferior 2 and run it.
2545
af624141
MS
2546@kindex remove-inferiors
2547@item remove-inferiors @var{infno}@dots{}
2548Removes the inferior or inferiors @var{infno}@dots{}. It is not
2549possible to remove an inferior that is running with this command. For
2550those, use the @code{kill} or @code{detach} command first.
6c95b8df
PA
2551
2552@end table
2553
2554To quit debugging one of the running inferiors that is not the current
2555inferior, you can either detach from it by using the @w{@code{detach
2556inferior}} command (allowing it to run independently), or kill it
af624141 2557using the @w{@code{kill inferiors}} command:
2277426b
PA
2558
2559@table @code
af624141
MS
2560@kindex detach inferiors @var{infno}@dots{}
2561@item detach inferior @var{infno}@dots{}
2562Detach from the inferior or inferiors identified by @value{GDBN}
5e30da2c 2563inferior number(s) @var{infno}@dots{}. Note that the inferior's entry
af624141
MS
2564still stays on the list of inferiors shown by @code{info inferiors},
2565but its Description will show @samp{<null>}.
2566
2567@kindex kill inferiors @var{infno}@dots{}
2568@item kill inferiors @var{infno}@dots{}
2569Kill the inferior or inferiors identified by @value{GDBN} inferior
2570number(s) @var{infno}@dots{}. Note that the inferior's entry still
2571stays on the list of inferiors shown by @code{info inferiors}, but its
2572Description will show @samp{<null>}.
2277426b
PA
2573@end table
2574
6c95b8df 2575After the successful completion of a command such as @code{detach},
af624141 2576@code{detach inferiors}, @code{kill} or @code{kill inferiors}, or after
6c95b8df
PA
2577a normal process exit, the inferior is still valid and listed with
2578@code{info inferiors}, ready to be restarted.
2579
2580
2277426b
PA
2581To be notified when inferiors are started or exit under @value{GDBN}'s
2582control use @w{@code{set print inferior-events}}:
b77209e0 2583
2277426b 2584@table @code
b77209e0
PA
2585@kindex set print inferior-events
2586@cindex print messages on inferior start and exit
2587@item set print inferior-events
2588@itemx set print inferior-events on
2589@itemx set print inferior-events off
2590The @code{set print inferior-events} command allows you to enable or
2591disable printing of messages when @value{GDBN} notices that new
2592inferiors have started or that inferiors have exited or have been
2593detached. By default, these messages will not be printed.
2594
2595@kindex show print inferior-events
2596@item show print inferior-events
2597Show whether messages will be printed when @value{GDBN} detects that
2598inferiors have started, exited or have been detached.
2599@end table
2600
6c95b8df
PA
2601Many commands will work the same with multiple programs as with a
2602single program: e.g., @code{print myglobal} will simply display the
2603value of @code{myglobal} in the current inferior.
2604
2605
2606Occasionaly, when debugging @value{GDBN} itself, it may be useful to
2607get more info about the relationship of inferiors, programs, address
2608spaces in a debug session. You can do that with the @w{@code{maint
2609info program-spaces}} command.
2610
2611@table @code
2612@kindex maint info program-spaces
2613@item maint info program-spaces
2614Print a list of all program spaces currently being managed by
2615@value{GDBN}.
2616
2617@value{GDBN} displays for each program space (in this order):
2618
2619@enumerate
2620@item
2621the program space number assigned by @value{GDBN}
2622
2623@item
2624the name of the executable loaded into the program space, with e.g.,
2625the @code{file} command.
2626
2627@end enumerate
2628
2629@noindent
2630An asterisk @samp{*} preceding the @value{GDBN} program space number
2631indicates the current program space.
2632
2633In addition, below each program space line, @value{GDBN} prints extra
2634information that isn't suitable to display in tabular form. For
2635example, the list of inferiors bound to the program space.
2636
2637@smallexample
2638(@value{GDBP}) maint info program-spaces
2639 Id Executable
2640 2 goodbye
2641 Bound inferiors: ID 1 (process 21561)
2642* 1 hello
2643@end smallexample
2644
2645Here we can see that no inferior is running the program @code{hello},
2646while @code{process 21561} is running the program @code{goodbye}. On
2647some targets, it is possible that multiple inferiors are bound to the
2648same program space. The most common example is that of debugging both
2649the parent and child processes of a @code{vfork} call. For example,
2650
2651@smallexample
2652(@value{GDBP}) maint info program-spaces
2653 Id Executable
2654* 1 vfork-test
2655 Bound inferiors: ID 2 (process 18050), ID 1 (process 18045)
2656@end smallexample
2657
2658Here, both inferior 2 and inferior 1 are running in the same program
2659space as a result of inferior 1 having executed a @code{vfork} call.
2660@end table
2661
6d2ebf8b 2662@node Threads
79a6e687 2663@section Debugging Programs with Multiple Threads
c906108c
SS
2664
2665@cindex threads of execution
2666@cindex multiple threads
2667@cindex switching threads
2668In some operating systems, such as HP-UX and Solaris, a single program
2669may have more than one @dfn{thread} of execution. The precise semantics
2670of threads differ from one operating system to another, but in general
2671the threads of a single program are akin to multiple processes---except
2672that they share one address space (that is, they can all examine and
2673modify the same variables). On the other hand, each thread has its own
2674registers and execution stack, and perhaps private memory.
2675
2676@value{GDBN} provides these facilities for debugging multi-thread
2677programs:
2678
2679@itemize @bullet
2680@item automatic notification of new threads
2681@item @samp{thread @var{threadno}}, a command to switch among threads
2682@item @samp{info threads}, a command to inquire about existing threads
5d161b24 2683@item @samp{thread apply [@var{threadno}] [@var{all}] @var{args}},
c906108c
SS
2684a command to apply a command to a list of threads
2685@item thread-specific breakpoints
93815fbf
VP
2686@item @samp{set print thread-events}, which controls printing of
2687messages on thread start and exit.
17a37d48
PP
2688@item @samp{set libthread-db-search-path @var{path}}, which lets
2689the user specify which @code{libthread_db} to use if the default choice
2690isn't compatible with the program.
c906108c
SS
2691@end itemize
2692
c906108c
SS
2693@quotation
2694@emph{Warning:} These facilities are not yet available on every
2695@value{GDBN} configuration where the operating system supports threads.
2696If your @value{GDBN} does not support threads, these commands have no
2697effect. For example, a system without thread support shows no output
2698from @samp{info threads}, and always rejects the @code{thread} command,
2699like this:
2700
2701@smallexample
2702(@value{GDBP}) info threads
2703(@value{GDBP}) thread 1
2704Thread ID 1 not known. Use the "info threads" command to
2705see the IDs of currently known threads.
2706@end smallexample
2707@c FIXME to implementors: how hard would it be to say "sorry, this GDB
2708@c doesn't support threads"?
2709@end quotation
c906108c
SS
2710
2711@cindex focus of debugging
2712@cindex current thread
2713The @value{GDBN} thread debugging facility allows you to observe all
2714threads while your program runs---but whenever @value{GDBN} takes
2715control, one thread in particular is always the focus of debugging.
2716This thread is called the @dfn{current thread}. Debugging commands show
2717program information from the perspective of the current thread.
2718
41afff9a 2719@cindex @code{New} @var{systag} message
c906108c
SS
2720@cindex thread identifier (system)
2721@c FIXME-implementors!! It would be more helpful if the [New...] message
2722@c included GDB's numeric thread handle, so you could just go to that
2723@c thread without first checking `info threads'.
2724Whenever @value{GDBN} detects a new thread in your program, it displays
2725the target system's identification for the thread with a message in the
2726form @samp{[New @var{systag}]}. @var{systag} is a thread identifier
2727whose form varies depending on the particular system. For example, on
8807d78b 2728@sc{gnu}/Linux, you might see
c906108c 2729
474c8240 2730@smallexample
08e796bc 2731[New Thread 0x41e02940 (LWP 25582)]
474c8240 2732@end smallexample
c906108c
SS
2733
2734@noindent
2735when @value{GDBN} notices a new thread. In contrast, on an SGI system,
2736the @var{systag} is simply something like @samp{process 368}, with no
2737further qualifier.
2738
2739@c FIXME!! (1) Does the [New...] message appear even for the very first
2740@c thread of a program, or does it only appear for the
6ca652b0 2741@c second---i.e.@: when it becomes obvious we have a multithread
c906108c
SS
2742@c program?
2743@c (2) *Is* there necessarily a first thread always? Or do some
2744@c multithread systems permit starting a program with multiple
5d161b24 2745@c threads ab initio?
c906108c
SS
2746
2747@cindex thread number
2748@cindex thread identifier (GDB)
2749For debugging purposes, @value{GDBN} associates its own thread
2750number---always a single integer---with each thread in your program.
2751
2752@table @code
2753@kindex info threads
60f98dde
MS
2754@item info threads @r{[}@var{id}@dots{}@r{]}
2755Display a summary of all threads currently in your program. Optional
2756argument @var{id}@dots{} is one or more thread ids separated by spaces, and
2757means to print information only about the specified thread or threads.
2758@value{GDBN} displays for each thread (in this order):
c906108c
SS
2759
2760@enumerate
09d4efe1
EZ
2761@item
2762the thread number assigned by @value{GDBN}
c906108c 2763
09d4efe1
EZ
2764@item
2765the target system's thread identifier (@var{systag})
c906108c 2766
4694da01
TT
2767@item
2768the thread's name, if one is known. A thread can either be named by
2769the user (see @code{thread name}, below), or, in some cases, by the
2770program itself.
2771
09d4efe1
EZ
2772@item
2773the current stack frame summary for that thread
c906108c
SS
2774@end enumerate
2775
2776@noindent
2777An asterisk @samp{*} to the left of the @value{GDBN} thread number
2778indicates the current thread.
2779
5d161b24 2780For example,
c906108c
SS
2781@end table
2782@c end table here to get a little more width for example
2783
2784@smallexample
2785(@value{GDBP}) info threads
13fd8b81
TT
2786 Id Target Id Frame
2787 3 process 35 thread 27 0x34e5 in sigpause ()
2788 2 process 35 thread 23 0x34e5 in sigpause ()
2789* 1 process 35 thread 13 main (argc=1, argv=0x7ffffff8)
c906108c
SS
2790 at threadtest.c:68
2791@end smallexample
53a5351d 2792
c45da7e6
EZ
2793On Solaris, you can display more information about user threads with a
2794Solaris-specific command:
2795
2796@table @code
2797@item maint info sol-threads
2798@kindex maint info sol-threads
2799@cindex thread info (Solaris)
2800Display info on Solaris user threads.
2801@end table
2802
c906108c
SS
2803@table @code
2804@kindex thread @var{threadno}
2805@item thread @var{threadno}
2806Make thread number @var{threadno} the current thread. The command
2807argument @var{threadno} is the internal @value{GDBN} thread number, as
2808shown in the first field of the @samp{info threads} display.
2809@value{GDBN} responds by displaying the system identifier of the thread
2810you selected, and its current stack frame summary:
2811
2812@smallexample
c906108c 2813(@value{GDBP}) thread 2
13fd8b81
TT
2814[Switching to thread 2 (Thread 0xb7fdab70 (LWP 12747))]
2815#0 some_function (ignore=0x0) at example.c:8
28168 printf ("hello\n");
c906108c
SS
2817@end smallexample
2818
2819@noindent
2820As with the @samp{[New @dots{}]} message, the form of the text after
2821@samp{Switching to} depends on your system's conventions for identifying
5d161b24 2822threads.
c906108c 2823
6aed2dbc
SS
2824@vindex $_thread@r{, convenience variable}
2825The debugger convenience variable @samp{$_thread} contains the number
2826of the current thread. You may find this useful in writing breakpoint
2827conditional expressions, command scripts, and so forth. See
2828@xref{Convenience Vars,, Convenience Variables}, for general
2829information on convenience variables.
2830
9c16f35a 2831@kindex thread apply
638ac427 2832@cindex apply command to several threads
13fd8b81 2833@item thread apply [@var{threadno} | all] @var{command}
839c27b7
EZ
2834The @code{thread apply} command allows you to apply the named
2835@var{command} to one or more threads. Specify the numbers of the
2836threads that you want affected with the command argument
2837@var{threadno}. It can be a single thread number, one of the numbers
2838shown in the first field of the @samp{info threads} display; or it
2839could be a range of thread numbers, as in @code{2-4}. To apply a
2840command to all threads, type @kbd{thread apply all @var{command}}.
93815fbf 2841
4694da01
TT
2842@kindex thread name
2843@cindex name a thread
2844@item thread name [@var{name}]
2845This command assigns a name to the current thread. If no argument is
2846given, any existing user-specified name is removed. The thread name
2847appears in the @samp{info threads} display.
2848
2849On some systems, such as @sc{gnu}/Linux, @value{GDBN} is able to
2850determine the name of the thread as given by the OS. On these
2851systems, a name specified with @samp{thread name} will override the
2852system-give name, and removing the user-specified name will cause
2853@value{GDBN} to once again display the system-specified name.
2854
60f98dde
MS
2855@kindex thread find
2856@cindex search for a thread
2857@item thread find [@var{regexp}]
2858Search for and display thread ids whose name or @var{systag}
2859matches the supplied regular expression.
2860
2861As well as being the complement to the @samp{thread name} command,
2862this command also allows you to identify a thread by its target
2863@var{systag}. For instance, on @sc{gnu}/Linux, the target @var{systag}
2864is the LWP id.
2865
2866@smallexample
2867(@value{GDBN}) thread find 26688
2868Thread 4 has target id 'Thread 0x41e02940 (LWP 26688)'
2869(@value{GDBN}) info thread 4
2870 Id Target Id Frame
2871 4 Thread 0x41e02940 (LWP 26688) 0x00000031ca6cd372 in select ()
2872@end smallexample
2873
93815fbf
VP
2874@kindex set print thread-events
2875@cindex print messages on thread start and exit
2876@item set print thread-events
2877@itemx set print thread-events on
2878@itemx set print thread-events off
2879The @code{set print thread-events} command allows you to enable or
2880disable printing of messages when @value{GDBN} notices that new threads have
2881started or that threads have exited. By default, these messages will
2882be printed if detection of these events is supported by the target.
2883Note that these messages cannot be disabled on all targets.
2884
2885@kindex show print thread-events
2886@item show print thread-events
2887Show whether messages will be printed when @value{GDBN} detects that threads
2888have started and exited.
c906108c
SS
2889@end table
2890
79a6e687 2891@xref{Thread Stops,,Stopping and Starting Multi-thread Programs}, for
c906108c
SS
2892more information about how @value{GDBN} behaves when you stop and start
2893programs with multiple threads.
2894
79a6e687 2895@xref{Set Watchpoints,,Setting Watchpoints}, for information about
c906108c 2896watchpoints in programs with multiple threads.
c906108c 2897
bf88dd68 2898@anchor{set libthread-db-search-path}
17a37d48
PP
2899@table @code
2900@kindex set libthread-db-search-path
2901@cindex search path for @code{libthread_db}
2902@item set libthread-db-search-path @r{[}@var{path}@r{]}
2903If this variable is set, @var{path} is a colon-separated list of
2904directories @value{GDBN} will use to search for @code{libthread_db}.
2905If you omit @var{path}, @samp{libthread-db-search-path} will be reset to
98a5dd13 2906its default value (@code{$sdir:$pdir} on @sc{gnu}/Linux and Solaris systems).
7e0396aa
DE
2907Internally, the default value comes from the @code{LIBTHREAD_DB_SEARCH_PATH}
2908macro.
17a37d48
PP
2909
2910On @sc{gnu}/Linux and Solaris systems, @value{GDBN} uses a ``helper''
2911@code{libthread_db} library to obtain information about threads in the
2912inferior process. @value{GDBN} will use @samp{libthread-db-search-path}
bf88dd68
JK
2913to find @code{libthread_db}. @value{GDBN} also consults first if inferior
2914specific thread debugging library loading is enabled
2915by @samp{set auto-load libthread-db} (@pxref{libthread_db.so.1 file}).
98a5dd13
DE
2916
2917A special entry @samp{$sdir} for @samp{libthread-db-search-path}
2918refers to the default system directories that are
bf88dd68
JK
2919normally searched for loading shared libraries. The @samp{$sdir} entry
2920is the only kind not needing to be enabled by @samp{set auto-load libthread-db}
2921(@pxref{libthread_db.so.1 file}).
98a5dd13
DE
2922
2923A special entry @samp{$pdir} for @samp{libthread-db-search-path}
2924refers to the directory from which @code{libpthread}
2925was loaded in the inferior process.
17a37d48
PP
2926
2927For any @code{libthread_db} library @value{GDBN} finds in above directories,
2928@value{GDBN} attempts to initialize it with the current inferior process.
2929If this initialization fails (which could happen because of a version
2930mismatch between @code{libthread_db} and @code{libpthread}), @value{GDBN}
2931will unload @code{libthread_db}, and continue with the next directory.
2932If none of @code{libthread_db} libraries initialize successfully,
2933@value{GDBN} will issue a warning and thread debugging will be disabled.
2934
2935Setting @code{libthread-db-search-path} is currently implemented
2936only on some platforms.
2937
2938@kindex show libthread-db-search-path
2939@item show libthread-db-search-path
2940Display current libthread_db search path.
02d868e8
PP
2941
2942@kindex set debug libthread-db
2943@kindex show debug libthread-db
2944@cindex debugging @code{libthread_db}
2945@item set debug libthread-db
2946@itemx show debug libthread-db
2947Turns on or off display of @code{libthread_db}-related events.
2948Use @code{1} to enable, @code{0} to disable.
17a37d48
PP
2949@end table
2950
6c95b8df
PA
2951@node Forks
2952@section Debugging Forks
c906108c
SS
2953
2954@cindex fork, debugging programs which call
2955@cindex multiple processes
2956@cindex processes, multiple
53a5351d
JM
2957On most systems, @value{GDBN} has no special support for debugging
2958programs which create additional processes using the @code{fork}
2959function. When a program forks, @value{GDBN} will continue to debug the
2960parent process and the child process will run unimpeded. If you have
2961set a breakpoint in any code which the child then executes, the child
2962will get a @code{SIGTRAP} signal which (unless it catches the signal)
2963will cause it to terminate.
c906108c
SS
2964
2965However, if you want to debug the child process there is a workaround
2966which isn't too painful. Put a call to @code{sleep} in the code which
2967the child process executes after the fork. It may be useful to sleep
2968only if a certain environment variable is set, or a certain file exists,
2969so that the delay need not occur when you don't want to run @value{GDBN}
2970on the child. While the child is sleeping, use the @code{ps} program to
2971get its process ID. Then tell @value{GDBN} (a new invocation of
2972@value{GDBN} if you are also debugging the parent process) to attach to
d4f3574e 2973the child process (@pxref{Attach}). From that point on you can debug
c906108c 2974the child process just like any other process which you attached to.
c906108c 2975
b51970ac
DJ
2976On some systems, @value{GDBN} provides support for debugging programs that
2977create additional processes using the @code{fork} or @code{vfork} functions.
2978Currently, the only platforms with this feature are HP-UX (11.x and later
a6b151f1 2979only?) and @sc{gnu}/Linux (kernel version 2.5.60 and later).
c906108c
SS
2980
2981By default, when a program forks, @value{GDBN} will continue to debug
2982the parent process and the child process will run unimpeded.
2983
2984If you want to follow the child process instead of the parent process,
2985use the command @w{@code{set follow-fork-mode}}.
2986
2987@table @code
2988@kindex set follow-fork-mode
2989@item set follow-fork-mode @var{mode}
2990Set the debugger response to a program call of @code{fork} or
2991@code{vfork}. A call to @code{fork} or @code{vfork} creates a new
9c16f35a 2992process. The @var{mode} argument can be:
c906108c
SS
2993
2994@table @code
2995@item parent
2996The original process is debugged after a fork. The child process runs
2df3850c 2997unimpeded. This is the default.
c906108c
SS
2998
2999@item child
3000The new process is debugged after a fork. The parent process runs
3001unimpeded.
3002
c906108c
SS
3003@end table
3004
9c16f35a 3005@kindex show follow-fork-mode
c906108c 3006@item show follow-fork-mode
2df3850c 3007Display the current debugger response to a @code{fork} or @code{vfork} call.
c906108c
SS
3008@end table
3009
5c95884b
MS
3010@cindex debugging multiple processes
3011On Linux, if you want to debug both the parent and child processes, use the
3012command @w{@code{set detach-on-fork}}.
3013
3014@table @code
3015@kindex set detach-on-fork
3016@item set detach-on-fork @var{mode}
3017Tells gdb whether to detach one of the processes after a fork, or
3018retain debugger control over them both.
3019
3020@table @code
3021@item on
3022The child process (or parent process, depending on the value of
3023@code{follow-fork-mode}) will be detached and allowed to run
3024independently. This is the default.
3025
3026@item off
3027Both processes will be held under the control of @value{GDBN}.
3028One process (child or parent, depending on the value of
3029@code{follow-fork-mode}) is debugged as usual, while the other
3030is held suspended.
3031
3032@end table
3033
11310833
NR
3034@kindex show detach-on-fork
3035@item show detach-on-fork
3036Show whether detach-on-fork mode is on/off.
5c95884b
MS
3037@end table
3038
2277426b
PA
3039If you choose to set @samp{detach-on-fork} mode off, then @value{GDBN}
3040will retain control of all forked processes (including nested forks).
3041You can list the forked processes under the control of @value{GDBN} by
3042using the @w{@code{info inferiors}} command, and switch from one fork
6c95b8df
PA
3043to another by using the @code{inferior} command (@pxref{Inferiors and
3044Programs, ,Debugging Multiple Inferiors and Programs}).
5c95884b
MS
3045
3046To quit debugging one of the forked processes, you can either detach
af624141
MS
3047from it by using the @w{@code{detach inferiors}} command (allowing it
3048to run independently), or kill it using the @w{@code{kill inferiors}}
6c95b8df
PA
3049command. @xref{Inferiors and Programs, ,Debugging Multiple Inferiors
3050and Programs}.
5c95884b 3051
c906108c
SS
3052If you ask to debug a child process and a @code{vfork} is followed by an
3053@code{exec}, @value{GDBN} executes the new target up to the first
3054breakpoint in the new target. If you have a breakpoint set on
3055@code{main} in your original program, the breakpoint will also be set on
3056the child process's @code{main}.
3057
2277426b
PA
3058On some systems, when a child process is spawned by @code{vfork}, you
3059cannot debug the child or parent until an @code{exec} call completes.
c906108c
SS
3060
3061If you issue a @code{run} command to @value{GDBN} after an @code{exec}
6c95b8df
PA
3062call executes, the new target restarts. To restart the parent
3063process, use the @code{file} command with the parent executable name
3064as its argument. By default, after an @code{exec} call executes,
3065@value{GDBN} discards the symbols of the previous executable image.
3066You can change this behaviour with the @w{@code{set follow-exec-mode}}
3067command.
3068
3069@table @code
3070@kindex set follow-exec-mode
3071@item set follow-exec-mode @var{mode}
3072
3073Set debugger response to a program call of @code{exec}. An
3074@code{exec} call replaces the program image of a process.
3075
3076@code{follow-exec-mode} can be:
3077
3078@table @code
3079@item new
3080@value{GDBN} creates a new inferior and rebinds the process to this
3081new inferior. The program the process was running before the
3082@code{exec} call can be restarted afterwards by restarting the
3083original inferior.
3084
3085For example:
3086
3087@smallexample
3088(@value{GDBP}) info inferiors
3089(gdb) info inferior
3090 Id Description Executable
3091* 1 <null> prog1
3092(@value{GDBP}) run
3093process 12020 is executing new program: prog2
3094Program exited normally.
3095(@value{GDBP}) info inferiors
3096 Id Description Executable
3097* 2 <null> prog2
3098 1 <null> prog1
3099@end smallexample
3100
3101@item same
3102@value{GDBN} keeps the process bound to the same inferior. The new
3103executable image replaces the previous executable loaded in the
3104inferior. Restarting the inferior after the @code{exec} call, with
3105e.g., the @code{run} command, restarts the executable the process was
3106running after the @code{exec} call. This is the default mode.
3107
3108For example:
3109
3110@smallexample
3111(@value{GDBP}) info inferiors
3112 Id Description Executable
3113* 1 <null> prog1
3114(@value{GDBP}) run
3115process 12020 is executing new program: prog2
3116Program exited normally.
3117(@value{GDBP}) info inferiors
3118 Id Description Executable
3119* 1 <null> prog2
3120@end smallexample
3121
3122@end table
3123@end table
c906108c
SS
3124
3125You can use the @code{catch} command to make @value{GDBN} stop whenever
3126a @code{fork}, @code{vfork}, or @code{exec} call is made. @xref{Set
79a6e687 3127Catchpoints, ,Setting Catchpoints}.
c906108c 3128
5c95884b 3129@node Checkpoint/Restart
79a6e687 3130@section Setting a @emph{Bookmark} to Return to Later
5c95884b
MS
3131
3132@cindex checkpoint
3133@cindex restart
3134@cindex bookmark
3135@cindex snapshot of a process
3136@cindex rewind program state
3137
3138On certain operating systems@footnote{Currently, only
3139@sc{gnu}/Linux.}, @value{GDBN} is able to save a @dfn{snapshot} of a
3140program's state, called a @dfn{checkpoint}, and come back to it
3141later.
3142
3143Returning to a checkpoint effectively undoes everything that has
3144happened in the program since the @code{checkpoint} was saved. This
3145includes changes in memory, registers, and even (within some limits)
3146system state. Effectively, it is like going back in time to the
3147moment when the checkpoint was saved.
3148
3149Thus, if you're stepping thru a program and you think you're
3150getting close to the point where things go wrong, you can save
3151a checkpoint. Then, if you accidentally go too far and miss
3152the critical statement, instead of having to restart your program
3153from the beginning, you can just go back to the checkpoint and
3154start again from there.
3155
3156This can be especially useful if it takes a lot of time or
3157steps to reach the point where you think the bug occurs.
3158
3159To use the @code{checkpoint}/@code{restart} method of debugging:
3160
3161@table @code
3162@kindex checkpoint
3163@item checkpoint
3164Save a snapshot of the debugged program's current execution state.
3165The @code{checkpoint} command takes no arguments, but each checkpoint
3166is assigned a small integer id, similar to a breakpoint id.
3167
3168@kindex info checkpoints
3169@item info checkpoints
3170List the checkpoints that have been saved in the current debugging
3171session. For each checkpoint, the following information will be
3172listed:
3173
3174@table @code
3175@item Checkpoint ID
3176@item Process ID
3177@item Code Address
3178@item Source line, or label
3179@end table
3180
3181@kindex restart @var{checkpoint-id}
3182@item restart @var{checkpoint-id}
3183Restore the program state that was saved as checkpoint number
3184@var{checkpoint-id}. All program variables, registers, stack frames
3185etc.@: will be returned to the values that they had when the checkpoint
3186was saved. In essence, gdb will ``wind back the clock'' to the point
3187in time when the checkpoint was saved.
3188
3189Note that breakpoints, @value{GDBN} variables, command history etc.
3190are not affected by restoring a checkpoint. In general, a checkpoint
3191only restores things that reside in the program being debugged, not in
3192the debugger.
3193
b8db102d
MS
3194@kindex delete checkpoint @var{checkpoint-id}
3195@item delete checkpoint @var{checkpoint-id}
5c95884b
MS
3196Delete the previously-saved checkpoint identified by @var{checkpoint-id}.
3197
3198@end table
3199
3200Returning to a previously saved checkpoint will restore the user state
3201of the program being debugged, plus a significant subset of the system
3202(OS) state, including file pointers. It won't ``un-write'' data from
3203a file, but it will rewind the file pointer to the previous location,
3204so that the previously written data can be overwritten. For files
3205opened in read mode, the pointer will also be restored so that the
3206previously read data can be read again.
3207
3208Of course, characters that have been sent to a printer (or other
3209external device) cannot be ``snatched back'', and characters received
3210from eg.@: a serial device can be removed from internal program buffers,
3211but they cannot be ``pushed back'' into the serial pipeline, ready to
3212be received again. Similarly, the actual contents of files that have
3213been changed cannot be restored (at this time).
3214
3215However, within those constraints, you actually can ``rewind'' your
3216program to a previously saved point in time, and begin debugging it
3217again --- and you can change the course of events so as to debug a
3218different execution path this time.
3219
3220@cindex checkpoints and process id
3221Finally, there is one bit of internal program state that will be
3222different when you return to a checkpoint --- the program's process
3223id. Each checkpoint will have a unique process id (or @var{pid}),
3224and each will be different from the program's original @var{pid}.
3225If your program has saved a local copy of its process id, this could
3226potentially pose a problem.
3227
79a6e687 3228@subsection A Non-obvious Benefit of Using Checkpoints
5c95884b
MS
3229
3230On some systems such as @sc{gnu}/Linux, address space randomization
3231is performed on new processes for security reasons. This makes it
3232difficult or impossible to set a breakpoint, or watchpoint, on an
3233absolute address if you have to restart the program, since the
3234absolute location of a symbol will change from one execution to the
3235next.
3236
3237A checkpoint, however, is an @emph{identical} copy of a process.
3238Therefore if you create a checkpoint at (eg.@:) the start of main,
3239and simply return to that checkpoint instead of restarting the
3240process, you can avoid the effects of address randomization and
3241your symbols will all stay in the same place.
3242
6d2ebf8b 3243@node Stopping
c906108c
SS
3244@chapter Stopping and Continuing
3245
3246The principal purposes of using a debugger are so that you can stop your
3247program before it terminates; or so that, if your program runs into
3248trouble, you can investigate and find out why.
3249
7a292a7a
SS
3250Inside @value{GDBN}, your program may stop for any of several reasons,
3251such as a signal, a breakpoint, or reaching a new line after a
3252@value{GDBN} command such as @code{step}. You may then examine and
3253change variables, set new breakpoints or remove old ones, and then
3254continue execution. Usually, the messages shown by @value{GDBN} provide
3255ample explanation of the status of your program---but you can also
3256explicitly request this information at any time.
c906108c
SS
3257
3258@table @code
3259@kindex info program
3260@item info program
3261Display information about the status of your program: whether it is
7a292a7a 3262running or not, what process it is, and why it stopped.
c906108c
SS
3263@end table
3264
3265@menu
3266* Breakpoints:: Breakpoints, watchpoints, and catchpoints
3267* Continuing and Stepping:: Resuming execution
aad1c02c
TT
3268* Skipping Over Functions and Files::
3269 Skipping over functions and files
c906108c 3270* Signals:: Signals
c906108c 3271* Thread Stops:: Stopping and starting multi-thread programs
c906108c
SS
3272@end menu
3273
6d2ebf8b 3274@node Breakpoints
79a6e687 3275@section Breakpoints, Watchpoints, and Catchpoints
c906108c
SS
3276
3277@cindex breakpoints
3278A @dfn{breakpoint} makes your program stop whenever a certain point in
3279the program is reached. For each breakpoint, you can add conditions to
3280control in finer detail whether your program stops. You can set
3281breakpoints with the @code{break} command and its variants (@pxref{Set
79a6e687 3282Breaks, ,Setting Breakpoints}), to specify the place where your program
c906108c
SS
3283should stop by line number, function name or exact address in the
3284program.
3285
09d4efe1
EZ
3286On some systems, you can set breakpoints in shared libraries before
3287the executable is run. There is a minor limitation on HP-UX systems:
3288you must wait until the executable is run in order to set breakpoints
3289in shared library routines that are not called directly by the program
3290(for example, routines that are arguments in a @code{pthread_create}
3291call).
c906108c
SS
3292
3293@cindex watchpoints
fd60e0df 3294@cindex data breakpoints
c906108c
SS
3295@cindex memory tracing
3296@cindex breakpoint on memory address
3297@cindex breakpoint on variable modification
3298A @dfn{watchpoint} is a special breakpoint that stops your program
fd60e0df 3299when the value of an expression changes. The expression may be a value
0ced0c34 3300of a variable, or it could involve values of one or more variables
fd60e0df
EZ
3301combined by operators, such as @samp{a + b}. This is sometimes called
3302@dfn{data breakpoints}. You must use a different command to set
79a6e687 3303watchpoints (@pxref{Set Watchpoints, ,Setting Watchpoints}), but aside
fd60e0df
EZ
3304from that, you can manage a watchpoint like any other breakpoint: you
3305enable, disable, and delete both breakpoints and watchpoints using the
3306same commands.
c906108c
SS
3307
3308You can arrange to have values from your program displayed automatically
3309whenever @value{GDBN} stops at a breakpoint. @xref{Auto Display,,
79a6e687 3310Automatic Display}.
c906108c
SS
3311
3312@cindex catchpoints
3313@cindex breakpoint on events
3314A @dfn{catchpoint} is another special breakpoint that stops your program
b37052ae 3315when a certain kind of event occurs, such as the throwing of a C@t{++}
c906108c
SS
3316exception or the loading of a library. As with watchpoints, you use a
3317different command to set a catchpoint (@pxref{Set Catchpoints, ,Setting
79a6e687 3318Catchpoints}), but aside from that, you can manage a catchpoint like any
c906108c 3319other breakpoint. (To stop when your program receives a signal, use the
d4f3574e 3320@code{handle} command; see @ref{Signals, ,Signals}.)
c906108c
SS
3321
3322@cindex breakpoint numbers
3323@cindex numbers for breakpoints
3324@value{GDBN} assigns a number to each breakpoint, watchpoint, or
3325catchpoint when you create it; these numbers are successive integers
3326starting with one. In many of the commands for controlling various
3327features of breakpoints you use the breakpoint number to say which
3328breakpoint you want to change. Each breakpoint may be @dfn{enabled} or
3329@dfn{disabled}; if disabled, it has no effect on your program until you
3330enable it again.
3331
c5394b80
JM
3332@cindex breakpoint ranges
3333@cindex ranges of breakpoints
3334Some @value{GDBN} commands accept a range of breakpoints on which to
3335operate. A breakpoint range is either a single breakpoint number, like
3336@samp{5}, or two such numbers, in increasing order, separated by a
3337hyphen, like @samp{5-7}. When a breakpoint range is given to a command,
d52fb0e9 3338all breakpoints in that range are operated on.
c5394b80 3339
c906108c
SS
3340@menu
3341* Set Breaks:: Setting breakpoints
3342* Set Watchpoints:: Setting watchpoints
3343* Set Catchpoints:: Setting catchpoints
3344* Delete Breaks:: Deleting breakpoints
3345* Disabling:: Disabling breakpoints
3346* Conditions:: Break conditions
3347* Break Commands:: Breakpoint command lists
e7e0cddf 3348* Dynamic Printf:: Dynamic printf
6149aea9 3349* Save Breakpoints:: How to save breakpoints in a file
62e5f89c 3350* Static Probe Points:: Listing static probe points
d4f3574e 3351* Error in Breakpoints:: ``Cannot insert breakpoints''
79a6e687 3352* Breakpoint-related Warnings:: ``Breakpoint address adjusted...''
c906108c
SS
3353@end menu
3354
6d2ebf8b 3355@node Set Breaks
79a6e687 3356@subsection Setting Breakpoints
c906108c 3357
5d161b24 3358@c FIXME LMB what does GDB do if no code on line of breakpt?
c906108c
SS
3359@c consider in particular declaration with/without initialization.
3360@c
3361@c FIXME 2 is there stuff on this already? break at fun start, already init?
3362
3363@kindex break
41afff9a
EZ
3364@kindex b @r{(@code{break})}
3365@vindex $bpnum@r{, convenience variable}
c906108c
SS
3366@cindex latest breakpoint
3367Breakpoints are set with the @code{break} command (abbreviated
5d161b24 3368@code{b}). The debugger convenience variable @samp{$bpnum} records the
f3b28801 3369number of the breakpoint you've set most recently; see @ref{Convenience
79a6e687 3370Vars,, Convenience Variables}, for a discussion of what you can do with
c906108c
SS
3371convenience variables.
3372
c906108c 3373@table @code
2a25a5ba
EZ
3374@item break @var{location}
3375Set a breakpoint at the given @var{location}, which can specify a
3376function name, a line number, or an address of an instruction.
3377(@xref{Specify Location}, for a list of all the possible ways to
3378specify a @var{location}.) The breakpoint will stop your program just
3379before it executes any of the code in the specified @var{location}.
3380
c906108c 3381When using source languages that permit overloading of symbols, such as
2a25a5ba 3382C@t{++}, a function name may refer to more than one possible place to break.
6ba66d6a
JB
3383@xref{Ambiguous Expressions,,Ambiguous Expressions}, for a discussion of
3384that situation.
c906108c 3385
45ac276d 3386It is also possible to insert a breakpoint that will stop the program
2c88c651
JB
3387only if a specific thread (@pxref{Thread-Specific Breakpoints})
3388or a specific task (@pxref{Ada Tasks}) hits that breakpoint.
45ac276d 3389
c906108c
SS
3390@item break
3391When called without any arguments, @code{break} sets a breakpoint at
3392the next instruction to be executed in the selected stack frame
3393(@pxref{Stack, ,Examining the Stack}). In any selected frame but the
3394innermost, this makes your program stop as soon as control
3395returns to that frame. This is similar to the effect of a
3396@code{finish} command in the frame inside the selected frame---except
3397that @code{finish} does not leave an active breakpoint. If you use
3398@code{break} without an argument in the innermost frame, @value{GDBN} stops
3399the next time it reaches the current location; this may be useful
3400inside loops.
3401
3402@value{GDBN} normally ignores breakpoints when it resumes execution, until at
3403least one instruction has been executed. If it did not do this, you
3404would be unable to proceed past a breakpoint without first disabling the
3405breakpoint. This rule applies whether or not the breakpoint already
3406existed when your program stopped.
3407
3408@item break @dots{} if @var{cond}
3409Set a breakpoint with condition @var{cond}; evaluate the expression
3410@var{cond} each time the breakpoint is reached, and stop only if the
3411value is nonzero---that is, if @var{cond} evaluates as true.
3412@samp{@dots{}} stands for one of the possible arguments described
3413above (or no argument) specifying where to break. @xref{Conditions,
79a6e687 3414,Break Conditions}, for more information on breakpoint conditions.
c906108c
SS
3415
3416@kindex tbreak
3417@item tbreak @var{args}
3418Set a breakpoint enabled only for one stop. @var{args} are the
3419same as for the @code{break} command, and the breakpoint is set in the same
3420way, but the breakpoint is automatically deleted after the first time your
79a6e687 3421program stops there. @xref{Disabling, ,Disabling Breakpoints}.
c906108c 3422
c906108c 3423@kindex hbreak
ba04e063 3424@cindex hardware breakpoints
c906108c 3425@item hbreak @var{args}
d4f3574e
SS
3426Set a hardware-assisted breakpoint. @var{args} are the same as for the
3427@code{break} command and the breakpoint is set in the same way, but the
c906108c
SS
3428breakpoint requires hardware support and some target hardware may not
3429have this support. The main purpose of this is EPROM/ROM code
d4f3574e
SS
3430debugging, so you can set a breakpoint at an instruction without
3431changing the instruction. This can be used with the new trap-generation
09d4efe1 3432provided by SPARClite DSU and most x86-based targets. These targets
d4f3574e
SS
3433will generate traps when a program accesses some data or instruction
3434address that is assigned to the debug registers. However the hardware
3435breakpoint registers can take a limited number of breakpoints. For
3436example, on the DSU, only two data breakpoints can be set at a time, and
3437@value{GDBN} will reject this command if more than two are used. Delete
3438or disable unused hardware breakpoints before setting new ones
79a6e687
BW
3439(@pxref{Disabling, ,Disabling Breakpoints}).
3440@xref{Conditions, ,Break Conditions}.
9c16f35a
EZ
3441For remote targets, you can restrict the number of hardware
3442breakpoints @value{GDBN} will use, see @ref{set remote
3443hardware-breakpoint-limit}.
501eef12 3444
c906108c
SS
3445@kindex thbreak
3446@item thbreak @var{args}
3447Set a hardware-assisted breakpoint enabled only for one stop. @var{args}
3448are the same as for the @code{hbreak} command and the breakpoint is set in
5d161b24 3449the same way. However, like the @code{tbreak} command,
c906108c
SS
3450the breakpoint is automatically deleted after the
3451first time your program stops there. Also, like the @code{hbreak}
5d161b24 3452command, the breakpoint requires hardware support and some target hardware
79a6e687
BW
3453may not have this support. @xref{Disabling, ,Disabling Breakpoints}.
3454See also @ref{Conditions, ,Break Conditions}.
c906108c
SS
3455
3456@kindex rbreak
3457@cindex regular expression
8bd10a10 3458@cindex breakpoints at functions matching a regexp
c45da7e6 3459@cindex set breakpoints in many functions
c906108c 3460@item rbreak @var{regex}
c906108c 3461Set breakpoints on all functions matching the regular expression
11cf8741
JM
3462@var{regex}. This command sets an unconditional breakpoint on all
3463matches, printing a list of all breakpoints it set. Once these
3464breakpoints are set, they are treated just like the breakpoints set with
3465the @code{break} command. You can delete them, disable them, or make
3466them conditional the same way as any other breakpoint.
3467
3468The syntax of the regular expression is the standard one used with tools
3469like @file{grep}. Note that this is different from the syntax used by
3470shells, so for instance @code{foo*} matches all functions that include
3471an @code{fo} followed by zero or more @code{o}s. There is an implicit
3472@code{.*} leading and trailing the regular expression you supply, so to
3473match only functions that begin with @code{foo}, use @code{^foo}.
c906108c 3474
f7dc1244 3475@cindex non-member C@t{++} functions, set breakpoint in
b37052ae 3476When debugging C@t{++} programs, @code{rbreak} is useful for setting
c906108c
SS
3477breakpoints on overloaded functions that are not members of any special
3478classes.
c906108c 3479
f7dc1244
EZ
3480@cindex set breakpoints on all functions
3481The @code{rbreak} command can be used to set breakpoints in
3482@strong{all} the functions in a program, like this:
3483
3484@smallexample
3485(@value{GDBP}) rbreak .
3486@end smallexample
3487
8bd10a10
CM
3488@item rbreak @var{file}:@var{regex}
3489If @code{rbreak} is called with a filename qualification, it limits
3490the search for functions matching the given regular expression to the
3491specified @var{file}. This can be used, for example, to set breakpoints on
3492every function in a given file:
3493
3494@smallexample
3495(@value{GDBP}) rbreak file.c:.
3496@end smallexample
3497
3498The colon separating the filename qualifier from the regex may
3499optionally be surrounded by spaces.
3500
c906108c
SS
3501@kindex info breakpoints
3502@cindex @code{$_} and @code{info breakpoints}
e5a67952
MS
3503@item info breakpoints @r{[}@var{n}@dots{}@r{]}
3504@itemx info break @r{[}@var{n}@dots{}@r{]}
c906108c 3505Print a table of all breakpoints, watchpoints, and catchpoints set and
45ac1734 3506not deleted. Optional argument @var{n} means print information only
e5a67952
MS
3507about the specified breakpoint(s) (or watchpoint(s) or catchpoint(s)).
3508For each breakpoint, following columns are printed:
c906108c
SS
3509
3510@table @emph
3511@item Breakpoint Numbers
3512@item Type
3513Breakpoint, watchpoint, or catchpoint.
3514@item Disposition
3515Whether the breakpoint is marked to be disabled or deleted when hit.
3516@item Enabled or Disabled
3517Enabled breakpoints are marked with @samp{y}. @samp{n} marks breakpoints
b3db7447 3518that are not enabled.
c906108c 3519@item Address
fe6fbf8b 3520Where the breakpoint is in your program, as a memory address. For a
b3db7447
NR
3521pending breakpoint whose address is not yet known, this field will
3522contain @samp{<PENDING>}. Such breakpoint won't fire until a shared
3523library that has the symbol or line referred by breakpoint is loaded.
3524See below for details. A breakpoint with several locations will
3b784c4f 3525have @samp{<MULTIPLE>} in this field---see below for details.
c906108c
SS
3526@item What
3527Where the breakpoint is in the source for your program, as a file and
2650777c
JJ
3528line number. For a pending breakpoint, the original string passed to
3529the breakpoint command will be listed as it cannot be resolved until
3530the appropriate shared library is loaded in the future.
c906108c
SS
3531@end table
3532
3533@noindent
83364271
LM
3534If a breakpoint is conditional, there are two evaluation modes: ``host'' and
3535``target''. If mode is ``host'', breakpoint condition evaluation is done by
3536@value{GDBN} on the host's side. If it is ``target'', then the condition
3537is evaluated by the target. The @code{info break} command shows
3538the condition on the line following the affected breakpoint, together with
3539its condition evaluation mode in between parentheses.
3540
3541Breakpoint commands, if any, are listed after that. A pending breakpoint is
3542allowed to have a condition specified for it. The condition is not parsed for
3543validity until a shared library is loaded that allows the pending
3544breakpoint to resolve to a valid location.
c906108c
SS
3545
3546@noindent
3547@code{info break} with a breakpoint
3548number @var{n} as argument lists only that breakpoint. The
3549convenience variable @code{$_} and the default examining-address for
3550the @code{x} command are set to the address of the last breakpoint
79a6e687 3551listed (@pxref{Memory, ,Examining Memory}).
c906108c
SS
3552
3553@noindent
3554@code{info break} displays a count of the number of times the breakpoint
3555has been hit. This is especially useful in conjunction with the
3556@code{ignore} command. You can ignore a large number of breakpoint
3557hits, look at the breakpoint info to see how many times the breakpoint
3558was hit, and then run again, ignoring one less than that number. This
3559will get you quickly to the last hit of that breakpoint.
816338b5
SS
3560
3561@noindent
3562For a breakpoints with an enable count (xref) greater than 1,
3563@code{info break} also displays that count.
3564
c906108c
SS
3565@end table
3566
3567@value{GDBN} allows you to set any number of breakpoints at the same place in
3568your program. There is nothing silly or meaningless about this. When
3569the breakpoints are conditional, this is even useful
79a6e687 3570(@pxref{Conditions, ,Break Conditions}).
c906108c 3571
2e9132cc
EZ
3572@cindex multiple locations, breakpoints
3573@cindex breakpoints, multiple locations
fcda367b 3574It is possible that a breakpoint corresponds to several locations
fe6fbf8b
VP
3575in your program. Examples of this situation are:
3576
3577@itemize @bullet
f8eba3c6
TT
3578@item
3579Multiple functions in the program may have the same name.
3580
fe6fbf8b
VP
3581@item
3582For a C@t{++} constructor, the @value{NGCC} compiler generates several
3583instances of the function body, used in different cases.
3584
3585@item
3586For a C@t{++} template function, a given line in the function can
3587correspond to any number of instantiations.
3588
3589@item
3590For an inlined function, a given source line can correspond to
3591several places where that function is inlined.
fe6fbf8b
VP
3592@end itemize
3593
3594In all those cases, @value{GDBN} will insert a breakpoint at all
f8eba3c6 3595the relevant locations.
fe6fbf8b 3596
3b784c4f
EZ
3597A breakpoint with multiple locations is displayed in the breakpoint
3598table using several rows---one header row, followed by one row for
3599each breakpoint location. The header row has @samp{<MULTIPLE>} in the
3600address column. The rows for individual locations contain the actual
3601addresses for locations, and show the functions to which those
3602locations belong. The number column for a location is of the form
fe6fbf8b
VP
3603@var{breakpoint-number}.@var{location-number}.
3604
3605For example:
3b784c4f 3606
fe6fbf8b
VP
3607@smallexample
3608Num Type Disp Enb Address What
36091 breakpoint keep y <MULTIPLE>
3610 stop only if i==1
3611 breakpoint already hit 1 time
36121.1 y 0x080486a2 in void foo<int>() at t.cc:8
36131.2 y 0x080486ca in void foo<double>() at t.cc:8
3614@end smallexample
3615
3616Each location can be individually enabled or disabled by passing
3617@var{breakpoint-number}.@var{location-number} as argument to the
3b784c4f
EZ
3618@code{enable} and @code{disable} commands. Note that you cannot
3619delete the individual locations from the list, you can only delete the
16bfc218 3620entire list of locations that belong to their parent breakpoint (with
3b784c4f
EZ
3621the @kbd{delete @var{num}} command, where @var{num} is the number of
3622the parent breakpoint, 1 in the above example). Disabling or enabling
3623the parent breakpoint (@pxref{Disabling}) affects all of the locations
3624that belong to that breakpoint.
fe6fbf8b 3625
2650777c 3626@cindex pending breakpoints
fe6fbf8b 3627It's quite common to have a breakpoint inside a shared library.
3b784c4f 3628Shared libraries can be loaded and unloaded explicitly,
fe6fbf8b
VP
3629and possibly repeatedly, as the program is executed. To support
3630this use case, @value{GDBN} updates breakpoint locations whenever
3631any shared library is loaded or unloaded. Typically, you would
fcda367b 3632set a breakpoint in a shared library at the beginning of your
fe6fbf8b
VP
3633debugging session, when the library is not loaded, and when the
3634symbols from the library are not available. When you try to set
3635breakpoint, @value{GDBN} will ask you if you want to set
3b784c4f 3636a so called @dfn{pending breakpoint}---breakpoint whose address
fe6fbf8b
VP
3637is not yet resolved.
3638
3639After the program is run, whenever a new shared library is loaded,
3640@value{GDBN} reevaluates all the breakpoints. When a newly loaded
3641shared library contains the symbol or line referred to by some
3642pending breakpoint, that breakpoint is resolved and becomes an
3643ordinary breakpoint. When a library is unloaded, all breakpoints
3644that refer to its symbols or source lines become pending again.
3645
3646This logic works for breakpoints with multiple locations, too. For
3647example, if you have a breakpoint in a C@t{++} template function, and
3648a newly loaded shared library has an instantiation of that template,
3649a new location is added to the list of locations for the breakpoint.
3650
3651Except for having unresolved address, pending breakpoints do not
3652differ from regular breakpoints. You can set conditions or commands,
3653enable and disable them and perform other breakpoint operations.
3654
3655@value{GDBN} provides some additional commands for controlling what
3656happens when the @samp{break} command cannot resolve breakpoint
3657address specification to an address:
dd79a6cf
JJ
3658
3659@kindex set breakpoint pending
3660@kindex show breakpoint pending
3661@table @code
3662@item set breakpoint pending auto
3663This is the default behavior. When @value{GDBN} cannot find the breakpoint
3664location, it queries you whether a pending breakpoint should be created.
3665
3666@item set breakpoint pending on
3667This indicates that an unrecognized breakpoint location should automatically
3668result in a pending breakpoint being created.
3669
3670@item set breakpoint pending off
3671This indicates that pending breakpoints are not to be created. Any
3672unrecognized breakpoint location results in an error. This setting does
3673not affect any pending breakpoints previously created.
3674
3675@item show breakpoint pending
3676Show the current behavior setting for creating pending breakpoints.
3677@end table
2650777c 3678
fe6fbf8b
VP
3679The settings above only affect the @code{break} command and its
3680variants. Once breakpoint is set, it will be automatically updated
3681as shared libraries are loaded and unloaded.
2650777c 3682
765dc015
VP
3683@cindex automatic hardware breakpoints
3684For some targets, @value{GDBN} can automatically decide if hardware or
3685software breakpoints should be used, depending on whether the
3686breakpoint address is read-only or read-write. This applies to
3687breakpoints set with the @code{break} command as well as to internal
3688breakpoints set by commands like @code{next} and @code{finish}. For
fcda367b 3689breakpoints set with @code{hbreak}, @value{GDBN} will always use hardware
765dc015
VP
3690breakpoints.
3691
3692You can control this automatic behaviour with the following commands::
3693
3694@kindex set breakpoint auto-hw
3695@kindex show breakpoint auto-hw
3696@table @code
3697@item set breakpoint auto-hw on
3698This is the default behavior. When @value{GDBN} sets a breakpoint, it
3699will try to use the target memory map to decide if software or hardware
3700breakpoint must be used.
3701
3702@item set breakpoint auto-hw off
3703This indicates @value{GDBN} should not automatically select breakpoint
3704type. If the target provides a memory map, @value{GDBN} will warn when
3705trying to set software breakpoint at a read-only address.
3706@end table
3707
74960c60
VP
3708@value{GDBN} normally implements breakpoints by replacing the program code
3709at the breakpoint address with a special instruction, which, when
3710executed, given control to the debugger. By default, the program
3711code is so modified only when the program is resumed. As soon as
3712the program stops, @value{GDBN} restores the original instructions. This
3713behaviour guards against leaving breakpoints inserted in the
3714target should gdb abrubptly disconnect. However, with slow remote
3715targets, inserting and removing breakpoint can reduce the performance.
3716This behavior can be controlled with the following commands::
3717
3718@kindex set breakpoint always-inserted
3719@kindex show breakpoint always-inserted
3720@table @code
3721@item set breakpoint always-inserted off
33e5cbd6
PA
3722All breakpoints, including newly added by the user, are inserted in
3723the target only when the target is resumed. All breakpoints are
3724removed from the target when it stops.
74960c60
VP
3725
3726@item set breakpoint always-inserted on
3727Causes all breakpoints to be inserted in the target at all times. If
3728the user adds a new breakpoint, or changes an existing breakpoint, the
3729breakpoints in the target are updated immediately. A breakpoint is
3730removed from the target only when breakpoint itself is removed.
33e5cbd6
PA
3731
3732@cindex non-stop mode, and @code{breakpoint always-inserted}
3733@item set breakpoint always-inserted auto
3734This is the default mode. If @value{GDBN} is controlling the inferior
3735in non-stop mode (@pxref{Non-Stop Mode}), gdb behaves as if
3736@code{breakpoint always-inserted} mode is on. If @value{GDBN} is
3737controlling the inferior in all-stop mode, @value{GDBN} behaves as if
3738@code{breakpoint always-inserted} mode is off.
74960c60 3739@end table
765dc015 3740
83364271
LM
3741@value{GDBN} handles conditional breakpoints by evaluating these conditions
3742when a breakpoint breaks. If the condition is true, then the process being
3743debugged stops, otherwise the process is resumed.
3744
3745If the target supports evaluating conditions on its end, @value{GDBN} may
3746download the breakpoint, together with its conditions, to it.
3747
3748This feature can be controlled via the following commands:
3749
3750@kindex set breakpoint condition-evaluation
3751@kindex show breakpoint condition-evaluation
3752@table @code
3753@item set breakpoint condition-evaluation host
3754This option commands @value{GDBN} to evaluate the breakpoint
3755conditions on the host's side. Unconditional breakpoints are sent to
3756the target which in turn receives the triggers and reports them back to GDB
3757for condition evaluation. This is the standard evaluation mode.
3758
3759@item set breakpoint condition-evaluation target
3760This option commands @value{GDBN} to download breakpoint conditions
3761to the target at the moment of their insertion. The target
3762is responsible for evaluating the conditional expression and reporting
3763breakpoint stop events back to @value{GDBN} whenever the condition
3764is true. Due to limitations of target-side evaluation, some conditions
3765cannot be evaluated there, e.g., conditions that depend on local data
3766that is only known to the host. Examples include
3767conditional expressions involving convenience variables, complex types
3768that cannot be handled by the agent expression parser and expressions
3769that are too long to be sent over to the target, specially when the
3770target is a remote system. In these cases, the conditions will be
3771evaluated by @value{GDBN}.
3772
3773@item set breakpoint condition-evaluation auto
3774This is the default mode. If the target supports evaluating breakpoint
3775conditions on its end, @value{GDBN} will download breakpoint conditions to
3776the target (limitations mentioned previously apply). If the target does
3777not support breakpoint condition evaluation, then @value{GDBN} will fallback
3778to evaluating all these conditions on the host's side.
3779@end table
3780
3781
c906108c
SS
3782@cindex negative breakpoint numbers
3783@cindex internal @value{GDBN} breakpoints
eb12ee30
AC
3784@value{GDBN} itself sometimes sets breakpoints in your program for
3785special purposes, such as proper handling of @code{longjmp} (in C
3786programs). These internal breakpoints are assigned negative numbers,
3787starting with @code{-1}; @samp{info breakpoints} does not display them.
c906108c 3788You can see these breakpoints with the @value{GDBN} maintenance command
eb12ee30 3789@samp{maint info breakpoints} (@pxref{maint info breakpoints}).
c906108c
SS
3790
3791
6d2ebf8b 3792@node Set Watchpoints
79a6e687 3793@subsection Setting Watchpoints
c906108c
SS
3794
3795@cindex setting watchpoints
c906108c
SS
3796You can use a watchpoint to stop execution whenever the value of an
3797expression changes, without having to predict a particular place where
fd60e0df
EZ
3798this may happen. (This is sometimes called a @dfn{data breakpoint}.)
3799The expression may be as simple as the value of a single variable, or
3800as complex as many variables combined by operators. Examples include:
3801
3802@itemize @bullet
3803@item
3804A reference to the value of a single variable.
3805
3806@item
3807An address cast to an appropriate data type. For example,
3808@samp{*(int *)0x12345678} will watch a 4-byte region at the specified
3809address (assuming an @code{int} occupies 4 bytes).
3810
3811@item
3812An arbitrarily complex expression, such as @samp{a*b + c/d}. The
3813expression can use any operators valid in the program's native
3814language (@pxref{Languages}).
3815@end itemize
c906108c 3816
fa4727a6
DJ
3817You can set a watchpoint on an expression even if the expression can
3818not be evaluated yet. For instance, you can set a watchpoint on
3819@samp{*global_ptr} before @samp{global_ptr} is initialized.
3820@value{GDBN} will stop when your program sets @samp{global_ptr} and
3821the expression produces a valid value. If the expression becomes
3822valid in some other way than changing a variable (e.g.@: if the memory
3823pointed to by @samp{*global_ptr} becomes readable as the result of a
3824@code{malloc} call), @value{GDBN} may not stop until the next time
3825the expression changes.
3826
82f2d802
EZ
3827@cindex software watchpoints
3828@cindex hardware watchpoints
c906108c 3829Depending on your system, watchpoints may be implemented in software or
2df3850c 3830hardware. @value{GDBN} does software watchpointing by single-stepping your
c906108c
SS
3831program and testing the variable's value each time, which is hundreds of
3832times slower than normal execution. (But this may still be worth it, to
3833catch errors where you have no clue what part of your program is the
3834culprit.)
3835
37e4754d 3836On some systems, such as HP-UX, PowerPC, @sc{gnu}/Linux and most other
82f2d802
EZ
3837x86-based targets, @value{GDBN} includes support for hardware
3838watchpoints, which do not slow down the running of your program.
c906108c
SS
3839
3840@table @code
3841@kindex watch
9c06b0b4 3842@item watch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
fd60e0df
EZ
3843Set a watchpoint for an expression. @value{GDBN} will break when the
3844expression @var{expr} is written into by the program and its value
3845changes. The simplest (and the most popular) use of this command is
3846to watch the value of a single variable:
3847
3848@smallexample
3849(@value{GDBP}) watch foo
3850@end smallexample
c906108c 3851
d8b2a693 3852If the command includes a @code{@r{[}thread @var{threadnum}@r{]}}
9c06b0b4 3853argument, @value{GDBN} breaks only when the thread identified by
d8b2a693
JB
3854@var{threadnum} changes the value of @var{expr}. If any other threads
3855change the value of @var{expr}, @value{GDBN} will not break. Note
3856that watchpoints restricted to a single thread in this way only work
3857with Hardware Watchpoints.
3858
06a64a0b
TT
3859Ordinarily a watchpoint respects the scope of variables in @var{expr}
3860(see below). The @code{-location} argument tells @value{GDBN} to
3861instead watch the memory referred to by @var{expr}. In this case,
3862@value{GDBN} will evaluate @var{expr}, take the address of the result,
3863and watch the memory at that address. The type of the result is used
3864to determine the size of the watched memory. If the expression's
3865result does not have an address, then @value{GDBN} will print an
3866error.
3867
9c06b0b4
TJB
3868The @code{@r{[}mask @var{maskvalue}@r{]}} argument allows creation
3869of masked watchpoints, if the current architecture supports this
3870feature (e.g., PowerPC Embedded architecture, see @ref{PowerPC
3871Embedded}.) A @dfn{masked watchpoint} specifies a mask in addition
3872to an address to watch. The mask specifies that some bits of an address
3873(the bits which are reset in the mask) should be ignored when matching
3874the address accessed by the inferior against the watchpoint address.
3875Thus, a masked watchpoint watches many addresses simultaneously---those
3876addresses whose unmasked bits are identical to the unmasked bits in the
3877watchpoint address. The @code{mask} argument implies @code{-location}.
3878Examples:
3879
3880@smallexample
3881(@value{GDBP}) watch foo mask 0xffff00ff
3882(@value{GDBP}) watch *0xdeadbeef mask 0xffffff00
3883@end smallexample
3884
c906108c 3885@kindex rwatch
9c06b0b4 3886@item rwatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
09d4efe1
EZ
3887Set a watchpoint that will break when the value of @var{expr} is read
3888by the program.
c906108c
SS
3889
3890@kindex awatch
9c06b0b4 3891@item awatch @r{[}-l@r{|}-location@r{]} @var{expr} @r{[}thread @var{threadnum}@r{]} @r{[}mask @var{maskvalue}@r{]}
09d4efe1
EZ
3892Set a watchpoint that will break when @var{expr} is either read from
3893or written into by the program.
c906108c 3894
e5a67952
MS
3895@kindex info watchpoints @r{[}@var{n}@dots{}@r{]}
3896@item info watchpoints @r{[}@var{n}@dots{}@r{]}
d77f58be
SS
3897This command prints a list of watchpoints, using the same format as
3898@code{info break} (@pxref{Set Breaks}).
c906108c
SS
3899@end table
3900
65d79d4b
SDJ
3901If you watch for a change in a numerically entered address you need to
3902dereference it, as the address itself is just a constant number which will
3903never change. @value{GDBN} refuses to create a watchpoint that watches
3904a never-changing value:
3905
3906@smallexample
3907(@value{GDBP}) watch 0x600850
3908Cannot watch constant value 0x600850.
3909(@value{GDBP}) watch *(int *) 0x600850
3910Watchpoint 1: *(int *) 6293584
3911@end smallexample
3912
c906108c
SS
3913@value{GDBN} sets a @dfn{hardware watchpoint} if possible. Hardware
3914watchpoints execute very quickly, and the debugger reports a change in
3915value at the exact instruction where the change occurs. If @value{GDBN}
3916cannot set a hardware watchpoint, it sets a software watchpoint, which
3917executes more slowly and reports the change in value at the next
82f2d802
EZ
3918@emph{statement}, not the instruction, after the change occurs.
3919
82f2d802
EZ
3920@cindex use only software watchpoints
3921You can force @value{GDBN} to use only software watchpoints with the
3922@kbd{set can-use-hw-watchpoints 0} command. With this variable set to
3923zero, @value{GDBN} will never try to use hardware watchpoints, even if
3924the underlying system supports them. (Note that hardware-assisted
3925watchpoints that were set @emph{before} setting
3926@code{can-use-hw-watchpoints} to zero will still use the hardware
d3e8051b 3927mechanism of watching expression values.)
c906108c 3928
9c16f35a
EZ
3929@table @code
3930@item set can-use-hw-watchpoints
3931@kindex set can-use-hw-watchpoints
3932Set whether or not to use hardware watchpoints.
3933
3934@item show can-use-hw-watchpoints
3935@kindex show can-use-hw-watchpoints
3936Show the current mode of using hardware watchpoints.
3937@end table
3938
3939For remote targets, you can restrict the number of hardware
3940watchpoints @value{GDBN} will use, see @ref{set remote
3941hardware-breakpoint-limit}.
3942
c906108c
SS
3943When you issue the @code{watch} command, @value{GDBN} reports
3944
474c8240 3945@smallexample
c906108c 3946Hardware watchpoint @var{num}: @var{expr}
474c8240 3947@end smallexample
c906108c
SS
3948
3949@noindent
3950if it was able to set a hardware watchpoint.
3951
7be570e7
JM
3952Currently, the @code{awatch} and @code{rwatch} commands can only set
3953hardware watchpoints, because accesses to data that don't change the
3954value of the watched expression cannot be detected without examining
3955every instruction as it is being executed, and @value{GDBN} does not do
3956that currently. If @value{GDBN} finds that it is unable to set a
3957hardware breakpoint with the @code{awatch} or @code{rwatch} command, it
3958will print a message like this:
3959
3960@smallexample
3961Expression cannot be implemented with read/access watchpoint.
3962@end smallexample
3963
3964Sometimes, @value{GDBN} cannot set a hardware watchpoint because the
3965data type of the watched expression is wider than what a hardware
3966watchpoint on the target machine can handle. For example, some systems
3967can only watch regions that are up to 4 bytes wide; on such systems you
3968cannot set hardware watchpoints for an expression that yields a
3969double-precision floating-point number (which is typically 8 bytes
3970wide). As a work-around, it might be possible to break the large region
3971into a series of smaller ones and watch them with separate watchpoints.
3972
3973If you set too many hardware watchpoints, @value{GDBN} might be unable
3974to insert all of them when you resume the execution of your program.
3975Since the precise number of active watchpoints is unknown until such
3976time as the program is about to be resumed, @value{GDBN} might not be
3977able to warn you about this when you set the watchpoints, and the
3978warning will be printed only when the program is resumed:
3979
3980@smallexample
3981Hardware watchpoint @var{num}: Could not insert watchpoint
3982@end smallexample
3983
3984@noindent
3985If this happens, delete or disable some of the watchpoints.
3986
fd60e0df
EZ
3987Watching complex expressions that reference many variables can also
3988exhaust the resources available for hardware-assisted watchpoints.
3989That's because @value{GDBN} needs to watch every variable in the
3990expression with separately allocated resources.
3991
c906108c 3992If you call a function interactively using @code{print} or @code{call},
2df3850c 3993any watchpoints you have set will be inactive until @value{GDBN} reaches another
c906108c
SS
3994kind of breakpoint or the call completes.
3995
7be570e7
JM
3996@value{GDBN} automatically deletes watchpoints that watch local
3997(automatic) variables, or expressions that involve such variables, when
3998they go out of scope, that is, when the execution leaves the block in
3999which these variables were defined. In particular, when the program
4000being debugged terminates, @emph{all} local variables go out of scope,
4001and so only watchpoints that watch global variables remain set. If you
4002rerun the program, you will need to set all such watchpoints again. One
4003way of doing that would be to set a code breakpoint at the entry to the
4004@code{main} function and when it breaks, set all the watchpoints.
4005
c906108c
SS
4006@cindex watchpoints and threads
4007@cindex threads and watchpoints
d983da9c
DJ
4008In multi-threaded programs, watchpoints will detect changes to the
4009watched expression from every thread.
4010
4011@quotation
4012@emph{Warning:} In multi-threaded programs, software watchpoints
53a5351d
JM
4013have only limited usefulness. If @value{GDBN} creates a software
4014watchpoint, it can only watch the value of an expression @emph{in a
4015single thread}. If you are confident that the expression can only
4016change due to the current thread's activity (and if you are also
4017confident that no other thread can become current), then you can use
4018software watchpoints as usual. However, @value{GDBN} may not notice
4019when a non-current thread's activity changes the expression. (Hardware
4020watchpoints, in contrast, watch an expression in all threads.)
c906108c 4021@end quotation
c906108c 4022
501eef12
AC
4023@xref{set remote hardware-watchpoint-limit}.
4024
6d2ebf8b 4025@node Set Catchpoints
79a6e687 4026@subsection Setting Catchpoints
d4f3574e 4027@cindex catchpoints, setting
c906108c
SS
4028@cindex exception handlers
4029@cindex event handling
4030
4031You can use @dfn{catchpoints} to cause the debugger to stop for certain
b37052ae 4032kinds of program events, such as C@t{++} exceptions or the loading of a
c906108c
SS
4033shared library. Use the @code{catch} command to set a catchpoint.
4034
4035@table @code
4036@kindex catch
4037@item catch @var{event}
4038Stop when @var{event} occurs. @var{event} can be any of the following:
4039@table @code
4040@item throw
4644b6e3 4041@cindex stop on C@t{++} exceptions
b37052ae 4042The throwing of a C@t{++} exception.
c906108c
SS
4043
4044@item catch
b37052ae 4045The catching of a C@t{++} exception.
c906108c 4046
8936fcda
JB
4047@item exception
4048@cindex Ada exception catching
4049@cindex catch Ada exceptions
4050An Ada exception being raised. If an exception name is specified
4051at the end of the command (eg @code{catch exception Program_Error}),
4052the debugger will stop only when this specific exception is raised.
4053Otherwise, the debugger stops execution when any Ada exception is raised.
4054
87f67dba
JB
4055When inserting an exception catchpoint on a user-defined exception whose
4056name is identical to one of the exceptions defined by the language, the
4057fully qualified name must be used as the exception name. Otherwise,
4058@value{GDBN} will assume that it should stop on the pre-defined exception
4059rather than the user-defined one. For instance, assuming an exception
4060called @code{Constraint_Error} is defined in package @code{Pck}, then
4061the command to use to catch such exceptions is @kbd{catch exception
4062Pck.Constraint_Error}.
4063
8936fcda
JB
4064@item exception unhandled
4065An exception that was raised but is not handled by the program.
4066
4067@item assert
4068A failed Ada assertion.
4069
c906108c 4070@item exec
4644b6e3 4071@cindex break on fork/exec
5ee187d7
DJ
4072A call to @code{exec}. This is currently only available for HP-UX
4073and @sc{gnu}/Linux.
c906108c 4074
a96d9b2e 4075@item syscall
ee8e71d4 4076@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{}
a96d9b2e
SDJ
4077@cindex break on a system call.
4078A call to or return from a system call, a.k.a.@: @dfn{syscall}. A
4079syscall is a mechanism for application programs to request a service
4080from the operating system (OS) or one of the OS system services.
4081@value{GDBN} can catch some or all of the syscalls issued by the
4082debuggee, and show the related information for each syscall. If no
4083argument is specified, calls to and returns from all system calls
4084will be caught.
4085
4086@var{name} can be any system call name that is valid for the
4087underlying OS. Just what syscalls are valid depends on the OS. On
4088GNU and Unix systems, you can find the full list of valid syscall
4089names on @file{/usr/include/asm/unistd.h}.
4090
4091@c For MS-Windows, the syscall names and the corresponding numbers
4092@c can be found, e.g., on this URL:
4093@c http://www.metasploit.com/users/opcode/syscalls.html
4094@c but we don't support Windows syscalls yet.
4095
4096Normally, @value{GDBN} knows in advance which syscalls are valid for
4097each OS, so you can use the @value{GDBN} command-line completion
4098facilities (@pxref{Completion,, command completion}) to list the
4099available choices.
4100
4101You may also specify the system call numerically. A syscall's
4102number is the value passed to the OS's syscall dispatcher to
4103identify the requested service. When you specify the syscall by its
4104name, @value{GDBN} uses its database of syscalls to convert the name
4105into the corresponding numeric code, but using the number directly
4106may be useful if @value{GDBN}'s database does not have the complete
4107list of syscalls on your system (e.g., because @value{GDBN} lags
4108behind the OS upgrades).
4109
4110The example below illustrates how this command works if you don't provide
4111arguments to it:
4112
4113@smallexample
4114(@value{GDBP}) catch syscall
4115Catchpoint 1 (syscall)
4116(@value{GDBP}) r
4117Starting program: /tmp/catch-syscall
4118
4119Catchpoint 1 (call to syscall 'close'), \
4120 0xffffe424 in __kernel_vsyscall ()
4121(@value{GDBP}) c
4122Continuing.
4123
4124Catchpoint 1 (returned from syscall 'close'), \
4125 0xffffe424 in __kernel_vsyscall ()
4126(@value{GDBP})
4127@end smallexample
4128
4129Here is an example of catching a system call by name:
4130
4131@smallexample
4132(@value{GDBP}) catch syscall chroot
4133Catchpoint 1 (syscall 'chroot' [61])
4134(@value{GDBP}) r
4135Starting program: /tmp/catch-syscall
4136
4137Catchpoint 1 (call to syscall 'chroot'), \
4138 0xffffe424 in __kernel_vsyscall ()
4139(@value{GDBP}) c
4140Continuing.
4141
4142Catchpoint 1 (returned from syscall 'chroot'), \
4143 0xffffe424 in __kernel_vsyscall ()
4144(@value{GDBP})
4145@end smallexample
4146
4147An example of specifying a system call numerically. In the case
4148below, the syscall number has a corresponding entry in the XML
4149file, so @value{GDBN} finds its name and prints it:
4150
4151@smallexample
4152(@value{GDBP}) catch syscall 252
4153Catchpoint 1 (syscall(s) 'exit_group')
4154(@value{GDBP}) r
4155Starting program: /tmp/catch-syscall
4156
4157Catchpoint 1 (call to syscall 'exit_group'), \
4158 0xffffe424 in __kernel_vsyscall ()
4159(@value{GDBP}) c
4160Continuing.
4161
4162Program exited normally.
4163(@value{GDBP})
4164@end smallexample
4165
4166However, there can be situations when there is no corresponding name
4167in XML file for that syscall number. In this case, @value{GDBN} prints
4168a warning message saying that it was not able to find the syscall name,
4169but the catchpoint will be set anyway. See the example below:
4170
4171@smallexample
4172(@value{GDBP}) catch syscall 764
4173warning: The number '764' does not represent a known syscall.
4174Catchpoint 2 (syscall 764)
4175(@value{GDBP})
4176@end smallexample
4177
4178If you configure @value{GDBN} using the @samp{--without-expat} option,
4179it will not be able to display syscall names. Also, if your
4180architecture does not have an XML file describing its system calls,
4181you will not be able to see the syscall names. It is important to
4182notice that these two features are used for accessing the syscall
4183name database. In either case, you will see a warning like this:
4184
4185@smallexample
4186(@value{GDBP}) catch syscall
4187warning: Could not open "syscalls/i386-linux.xml"
4188warning: Could not load the syscall XML file 'syscalls/i386-linux.xml'.
4189GDB will not be able to display syscall names.
4190Catchpoint 1 (syscall)
4191(@value{GDBP})
4192@end smallexample
4193
4194Of course, the file name will change depending on your architecture and system.
4195
4196Still using the example above, you can also try to catch a syscall by its
4197number. In this case, you would see something like:
4198
4199@smallexample
4200(@value{GDBP}) catch syscall 252
4201Catchpoint 1 (syscall(s) 252)
4202@end smallexample
4203
4204Again, in this case @value{GDBN} would not be able to display syscall's names.
4205
c906108c 4206@item fork
5ee187d7
DJ
4207A call to @code{fork}. This is currently only available for HP-UX
4208and @sc{gnu}/Linux.
c906108c
SS
4209
4210@item vfork
5ee187d7
DJ
4211A call to @code{vfork}. This is currently only available for HP-UX
4212and @sc{gnu}/Linux.
c906108c 4213
edcc5120
TT
4214@item load @r{[}regexp@r{]}
4215@itemx unload @r{[}regexp@r{]}
4216The loading or unloading of a shared library. If @var{regexp} is
4217given, then the catchpoint will stop only if the regular expression
4218matches one of the affected libraries.
4219
c906108c
SS
4220@end table
4221
4222@item tcatch @var{event}
4223Set a catchpoint that is enabled only for one stop. The catchpoint is
4224automatically deleted after the first time the event is caught.
4225
4226@end table
4227
4228Use the @code{info break} command to list the current catchpoints.
4229
b37052ae 4230There are currently some limitations to C@t{++} exception handling
c906108c
SS
4231(@code{catch throw} and @code{catch catch}) in @value{GDBN}:
4232
4233@itemize @bullet
4234@item
4235If you call a function interactively, @value{GDBN} normally returns
4236control to you when the function has finished executing. If the call
4237raises an exception, however, the call may bypass the mechanism that
4238returns control to you and cause your program either to abort or to
4239simply continue running until it hits a breakpoint, catches a signal
4240that @value{GDBN} is listening for, or exits. This is the case even if
4241you set a catchpoint for the exception; catchpoints on exceptions are
4242disabled within interactive calls.
4243
4244@item
4245You cannot raise an exception interactively.
4246
4247@item
4248You cannot install an exception handler interactively.
4249@end itemize
4250
4251@cindex raise exceptions
4252Sometimes @code{catch} is not the best way to debug exception handling:
4253if you need to know exactly where an exception is raised, it is better to
4254stop @emph{before} the exception handler is called, since that way you
4255can see the stack before any unwinding takes place. If you set a
4256breakpoint in an exception handler instead, it may not be easy to find
4257out where the exception was raised.
4258
4259To stop just before an exception handler is called, you need some
b37052ae 4260knowledge of the implementation. In the case of @sc{gnu} C@t{++}, exceptions are
c906108c
SS
4261raised by calling a library function named @code{__raise_exception}
4262which has the following ANSI C interface:
4263
474c8240 4264@smallexample
c906108c 4265 /* @var{addr} is where the exception identifier is stored.
d4f3574e
SS
4266 @var{id} is the exception identifier. */
4267 void __raise_exception (void **addr, void *id);
474c8240 4268@end smallexample
c906108c
SS
4269
4270@noindent
4271To make the debugger catch all exceptions before any stack
4272unwinding takes place, set a breakpoint on @code{__raise_exception}
79a6e687 4273(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Exceptions}).
c906108c 4274
79a6e687 4275With a conditional breakpoint (@pxref{Conditions, ,Break Conditions})
c906108c
SS
4276that depends on the value of @var{id}, you can stop your program when
4277a specific exception is raised. You can use multiple conditional
4278breakpoints to stop your program when any of a number of exceptions are
4279raised.
4280
4281
6d2ebf8b 4282@node Delete Breaks
79a6e687 4283@subsection Deleting Breakpoints
c906108c
SS
4284
4285@cindex clearing breakpoints, watchpoints, catchpoints
4286@cindex deleting breakpoints, watchpoints, catchpoints
4287It is often necessary to eliminate a breakpoint, watchpoint, or
4288catchpoint once it has done its job and you no longer want your program
4289to stop there. This is called @dfn{deleting} the breakpoint. A
4290breakpoint that has been deleted no longer exists; it is forgotten.
4291
4292With the @code{clear} command you can delete breakpoints according to
4293where they are in your program. With the @code{delete} command you can
4294delete individual breakpoints, watchpoints, or catchpoints by specifying
4295their breakpoint numbers.
4296
4297It is not necessary to delete a breakpoint to proceed past it. @value{GDBN}
4298automatically ignores breakpoints on the first instruction to be executed
4299when you continue execution without changing the execution address.
4300
4301@table @code
4302@kindex clear
4303@item clear
4304Delete any breakpoints at the next instruction to be executed in the
79a6e687 4305selected stack frame (@pxref{Selection, ,Selecting a Frame}). When
c906108c
SS
4306the innermost frame is selected, this is a good way to delete a
4307breakpoint where your program just stopped.
4308
2a25a5ba
EZ
4309@item clear @var{location}
4310Delete any breakpoints set at the specified @var{location}.
4311@xref{Specify Location}, for the various forms of @var{location}; the
4312most useful ones are listed below:
4313
4314@table @code
c906108c
SS
4315@item clear @var{function}
4316@itemx clear @var{filename}:@var{function}
09d4efe1 4317Delete any breakpoints set at entry to the named @var{function}.
c906108c
SS
4318
4319@item clear @var{linenum}
4320@itemx clear @var{filename}:@var{linenum}
09d4efe1
EZ
4321Delete any breakpoints set at or within the code of the specified
4322@var{linenum} of the specified @var{filename}.
2a25a5ba 4323@end table
c906108c
SS
4324
4325@cindex delete breakpoints
4326@kindex delete
41afff9a 4327@kindex d @r{(@code{delete})}
c5394b80
JM
4328@item delete @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
4329Delete the breakpoints, watchpoints, or catchpoints of the breakpoint
4330ranges specified as arguments. If no argument is specified, delete all
c906108c
SS
4331breakpoints (@value{GDBN} asks confirmation, unless you have @code{set
4332confirm off}). You can abbreviate this command as @code{d}.
4333@end table
4334
6d2ebf8b 4335@node Disabling
79a6e687 4336@subsection Disabling Breakpoints
c906108c 4337
4644b6e3 4338@cindex enable/disable a breakpoint
c906108c
SS
4339Rather than deleting a breakpoint, watchpoint, or catchpoint, you might
4340prefer to @dfn{disable} it. This makes the breakpoint inoperative as if
4341it had been deleted, but remembers the information on the breakpoint so
4342that you can @dfn{enable} it again later.
4343
4344You disable and enable breakpoints, watchpoints, and catchpoints with
d77f58be
SS
4345the @code{enable} and @code{disable} commands, optionally specifying
4346one or more breakpoint numbers as arguments. Use @code{info break} to
4347print a list of all breakpoints, watchpoints, and catchpoints if you
4348do not know which numbers to use.
c906108c 4349
3b784c4f
EZ
4350Disabling and enabling a breakpoint that has multiple locations
4351affects all of its locations.
4352
816338b5
SS
4353A breakpoint, watchpoint, or catchpoint can have any of several
4354different states of enablement:
c906108c
SS
4355
4356@itemize @bullet
4357@item
4358Enabled. The breakpoint stops your program. A breakpoint set
4359with the @code{break} command starts out in this state.
4360@item
4361Disabled. The breakpoint has no effect on your program.
4362@item
4363Enabled once. The breakpoint stops your program, but then becomes
d4f3574e 4364disabled.
c906108c 4365@item
816338b5
SS
4366Enabled for a count. The breakpoint stops your program for the next
4367N times, then becomes disabled.
4368@item
c906108c 4369Enabled for deletion. The breakpoint stops your program, but
d4f3574e
SS
4370immediately after it does so it is deleted permanently. A breakpoint
4371set with the @code{tbreak} command starts out in this state.
c906108c
SS
4372@end itemize
4373
4374You can use the following commands to enable or disable breakpoints,
4375watchpoints, and catchpoints:
4376
4377@table @code
c906108c 4378@kindex disable
41afff9a 4379@kindex dis @r{(@code{disable})}
c5394b80 4380@item disable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4381Disable the specified breakpoints---or all breakpoints, if none are
4382listed. A disabled breakpoint has no effect but is not forgotten. All
4383options such as ignore-counts, conditions and commands are remembered in
4384case the breakpoint is enabled again later. You may abbreviate
4385@code{disable} as @code{dis}.
4386
c906108c 4387@kindex enable
c5394b80 4388@item enable @r{[}breakpoints@r{]} @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4389Enable the specified breakpoints (or all defined breakpoints). They
4390become effective once again in stopping your program.
4391
c5394b80 4392@item enable @r{[}breakpoints@r{]} once @var{range}@dots{}
c906108c
SS
4393Enable the specified breakpoints temporarily. @value{GDBN} disables any
4394of these breakpoints immediately after stopping your program.
4395
816338b5
SS
4396@item enable @r{[}breakpoints@r{]} count @var{count} @var{range}@dots{}
4397Enable the specified breakpoints temporarily. @value{GDBN} records
4398@var{count} with each of the specified breakpoints, and decrements a
4399breakpoint's count when it is hit. When any count reaches 0,
4400@value{GDBN} disables that breakpoint. If a breakpoint has an ignore
4401count (@pxref{Conditions, ,Break Conditions}), that will be
4402decremented to 0 before @var{count} is affected.
4403
c5394b80 4404@item enable @r{[}breakpoints@r{]} delete @var{range}@dots{}
c906108c
SS
4405Enable the specified breakpoints to work once, then die. @value{GDBN}
4406deletes any of these breakpoints as soon as your program stops there.
09d4efe1 4407Breakpoints set by the @code{tbreak} command start out in this state.
c906108c
SS
4408@end table
4409
d4f3574e
SS
4410@c FIXME: I think the following ``Except for [...] @code{tbreak}'' is
4411@c confusing: tbreak is also initially enabled.
c906108c 4412Except for a breakpoint set with @code{tbreak} (@pxref{Set Breaks,
79a6e687 4413,Setting Breakpoints}), breakpoints that you set are initially enabled;
c906108c
SS
4414subsequently, they become disabled or enabled only when you use one of
4415the commands above. (The command @code{until} can set and delete a
4416breakpoint of its own, but it does not change the state of your other
4417breakpoints; see @ref{Continuing and Stepping, ,Continuing and
79a6e687 4418Stepping}.)
c906108c 4419
6d2ebf8b 4420@node Conditions
79a6e687 4421@subsection Break Conditions
c906108c
SS
4422@cindex conditional breakpoints
4423@cindex breakpoint conditions
4424
4425@c FIXME what is scope of break condition expr? Context where wanted?
5d161b24 4426@c in particular for a watchpoint?
c906108c
SS
4427The simplest sort of breakpoint breaks every time your program reaches a
4428specified place. You can also specify a @dfn{condition} for a
4429breakpoint. A condition is just a Boolean expression in your
4430programming language (@pxref{Expressions, ,Expressions}). A breakpoint with
4431a condition evaluates the expression each time your program reaches it,
4432and your program stops only if the condition is @emph{true}.
4433
4434This is the converse of using assertions for program validation; in that
4435situation, you want to stop when the assertion is violated---that is,
4436when the condition is false. In C, if you want to test an assertion expressed
4437by the condition @var{assert}, you should set the condition
4438@samp{! @var{assert}} on the appropriate breakpoint.
4439
4440Conditions are also accepted for watchpoints; you may not need them,
4441since a watchpoint is inspecting the value of an expression anyhow---but
4442it might be simpler, say, to just set a watchpoint on a variable name,
4443and specify a condition that tests whether the new value is an interesting
4444one.
4445
4446Break conditions can have side effects, and may even call functions in
4447your program. This can be useful, for example, to activate functions
4448that log program progress, or to use your own print functions to
99e008fe 4449format special data structures. The effects are completely predictable
c906108c
SS
4450unless there is another enabled breakpoint at the same address. (In
4451that case, @value{GDBN} might see the other breakpoint first and stop your
4452program without checking the condition of this one.) Note that
d4f3574e
SS
4453breakpoint commands are usually more convenient and flexible than break
4454conditions for the
c906108c 4455purpose of performing side effects when a breakpoint is reached
79a6e687 4456(@pxref{Break Commands, ,Breakpoint Command Lists}).
c906108c 4457
83364271
LM
4458Breakpoint conditions can also be evaluated on the target's side if
4459the target supports it. Instead of evaluating the conditions locally,
4460@value{GDBN} encodes the expression into an agent expression
4461(@pxref{Agent Expressions}) suitable for execution on the target,
4462independently of @value{GDBN}. Global variables become raw memory
4463locations, locals become stack accesses, and so forth.
4464
4465In this case, @value{GDBN} will only be notified of a breakpoint trigger
4466when its condition evaluates to true. This mechanism may provide faster
4467response times depending on the performance characteristics of the target
4468since it does not need to keep @value{GDBN} informed about
4469every breakpoint trigger, even those with false conditions.
4470
c906108c
SS
4471Break conditions can be specified when a breakpoint is set, by using
4472@samp{if} in the arguments to the @code{break} command. @xref{Set
79a6e687 4473Breaks, ,Setting Breakpoints}. They can also be changed at any time
c906108c 4474with the @code{condition} command.
53a5351d 4475
c906108c
SS
4476You can also use the @code{if} keyword with the @code{watch} command.
4477The @code{catch} command does not recognize the @code{if} keyword;
4478@code{condition} is the only way to impose a further condition on a
4479catchpoint.
c906108c
SS
4480
4481@table @code
4482@kindex condition
4483@item condition @var{bnum} @var{expression}
4484Specify @var{expression} as the break condition for breakpoint,
4485watchpoint, or catchpoint number @var{bnum}. After you set a condition,
4486breakpoint @var{bnum} stops your program only if the value of
4487@var{expression} is true (nonzero, in C). When you use
4488@code{condition}, @value{GDBN} checks @var{expression} immediately for
4489syntactic correctness, and to determine whether symbols in it have
d4f3574e
SS
4490referents in the context of your breakpoint. If @var{expression} uses
4491symbols not referenced in the context of the breakpoint, @value{GDBN}
4492prints an error message:
4493
474c8240 4494@smallexample
d4f3574e 4495No symbol "foo" in current context.
474c8240 4496@end smallexample
d4f3574e
SS
4497
4498@noindent
c906108c
SS
4499@value{GDBN} does
4500not actually evaluate @var{expression} at the time the @code{condition}
d4f3574e
SS
4501command (or a command that sets a breakpoint with a condition, like
4502@code{break if @dots{}}) is given, however. @xref{Expressions, ,Expressions}.
c906108c
SS
4503
4504@item condition @var{bnum}
4505Remove the condition from breakpoint number @var{bnum}. It becomes
4506an ordinary unconditional breakpoint.
4507@end table
4508
4509@cindex ignore count (of breakpoint)
4510A special case of a breakpoint condition is to stop only when the
4511breakpoint has been reached a certain number of times. This is so
4512useful that there is a special way to do it, using the @dfn{ignore
4513count} of the breakpoint. Every breakpoint has an ignore count, which
4514is an integer. Most of the time, the ignore count is zero, and
4515therefore has no effect. But if your program reaches a breakpoint whose
4516ignore count is positive, then instead of stopping, it just decrements
4517the ignore count by one and continues. As a result, if the ignore count
4518value is @var{n}, the breakpoint does not stop the next @var{n} times
4519your program reaches it.
4520
4521@table @code
4522@kindex ignore
4523@item ignore @var{bnum} @var{count}
4524Set the ignore count of breakpoint number @var{bnum} to @var{count}.
4525The next @var{count} times the breakpoint is reached, your program's
4526execution does not stop; other than to decrement the ignore count, @value{GDBN}
4527takes no action.
4528
4529To make the breakpoint stop the next time it is reached, specify
4530a count of zero.
4531
4532When you use @code{continue} to resume execution of your program from a
4533breakpoint, you can specify an ignore count directly as an argument to
4534@code{continue}, rather than using @code{ignore}. @xref{Continuing and
79a6e687 4535Stepping,,Continuing and Stepping}.
c906108c
SS
4536
4537If a breakpoint has a positive ignore count and a condition, the
4538condition is not checked. Once the ignore count reaches zero,
4539@value{GDBN} resumes checking the condition.
4540
4541You could achieve the effect of the ignore count with a condition such
4542as @w{@samp{$foo-- <= 0}} using a debugger convenience variable that
4543is decremented each time. @xref{Convenience Vars, ,Convenience
79a6e687 4544Variables}.
c906108c
SS
4545@end table
4546
4547Ignore counts apply to breakpoints, watchpoints, and catchpoints.
4548
4549
6d2ebf8b 4550@node Break Commands
79a6e687 4551@subsection Breakpoint Command Lists
c906108c
SS
4552
4553@cindex breakpoint commands
4554You can give any breakpoint (or watchpoint or catchpoint) a series of
4555commands to execute when your program stops due to that breakpoint. For
4556example, you might want to print the values of certain expressions, or
4557enable other breakpoints.
4558
4559@table @code
4560@kindex commands
ca91424e 4561@kindex end@r{ (breakpoint commands)}
95a42b64 4562@item commands @r{[}@var{range}@dots{}@r{]}
c906108c
SS
4563@itemx @dots{} @var{command-list} @dots{}
4564@itemx end
95a42b64 4565Specify a list of commands for the given breakpoints. The commands
c906108c
SS
4566themselves appear on the following lines. Type a line containing just
4567@code{end} to terminate the commands.
4568
4569To remove all commands from a breakpoint, type @code{commands} and
4570follow it immediately with @code{end}; that is, give no commands.
4571
95a42b64
TT
4572With no argument, @code{commands} refers to the last breakpoint,
4573watchpoint, or catchpoint set (not to the breakpoint most recently
4574encountered). If the most recent breakpoints were set with a single
4575command, then the @code{commands} will apply to all the breakpoints
4576set by that command. This applies to breakpoints set by
86b17b60
PA
4577@code{rbreak}, and also applies when a single @code{break} command
4578creates multiple breakpoints (@pxref{Ambiguous Expressions,,Ambiguous
4579Expressions}).
c906108c
SS
4580@end table
4581
4582Pressing @key{RET} as a means of repeating the last @value{GDBN} command is
4583disabled within a @var{command-list}.
4584
4585You can use breakpoint commands to start your program up again. Simply
4586use the @code{continue} command, or @code{step}, or any other command
4587that resumes execution.
4588
4589Any other commands in the command list, after a command that resumes
4590execution, are ignored. This is because any time you resume execution
4591(even with a simple @code{next} or @code{step}), you may encounter
4592another breakpoint---which could have its own command list, leading to
4593ambiguities about which list to execute.
4594
4595@kindex silent
4596If the first command you specify in a command list is @code{silent}, the
4597usual message about stopping at a breakpoint is not printed. This may
4598be desirable for breakpoints that are to print a specific message and
4599then continue. If none of the remaining commands print anything, you
4600see no sign that the breakpoint was reached. @code{silent} is
4601meaningful only at the beginning of a breakpoint command list.
4602
4603The commands @code{echo}, @code{output}, and @code{printf} allow you to
4604print precisely controlled output, and are often useful in silent
79a6e687 4605breakpoints. @xref{Output, ,Commands for Controlled Output}.
c906108c
SS
4606
4607For example, here is how you could use breakpoint commands to print the
4608value of @code{x} at entry to @code{foo} whenever @code{x} is positive.
4609
474c8240 4610@smallexample
c906108c
SS
4611break foo if x>0
4612commands
4613silent
4614printf "x is %d\n",x
4615cont
4616end
474c8240 4617@end smallexample
c906108c
SS
4618
4619One application for breakpoint commands is to compensate for one bug so
4620you can test for another. Put a breakpoint just after the erroneous line
4621of code, give it a condition to detect the case in which something
4622erroneous has been done, and give it commands to assign correct values
4623to any variables that need them. End with the @code{continue} command
4624so that your program does not stop, and start with the @code{silent}
4625command so that no output is produced. Here is an example:
4626
474c8240 4627@smallexample
c906108c
SS
4628break 403
4629commands
4630silent
4631set x = y + 4
4632cont
4633end
474c8240 4634@end smallexample
c906108c 4635
e7e0cddf
SS
4636@node Dynamic Printf
4637@subsection Dynamic Printf
4638
4639@cindex dynamic printf
4640@cindex dprintf
4641The dynamic printf command @code{dprintf} combines a breakpoint with
4642formatted printing of your program's data to give you the effect of
4643inserting @code{printf} calls into your program on-the-fly, without
4644having to recompile it.
4645
4646In its most basic form, the output goes to the GDB console. However,
4647you can set the variable @code{dprintf-style} for alternate handling.
4648For instance, you can ask to format the output by calling your
4649program's @code{printf} function. This has the advantage that the
4650characters go to the program's output device, so they can recorded in
4651redirects to files and so forth.
4652
d3ce09f5
SS
4653If you are doing remote debugging with a stub or agent, you can also
4654ask to have the printf handled by the remote agent. In addition to
4655ensuring that the output goes to the remote program's device along
4656with any other output the program might produce, you can also ask that
4657the dprintf remain active even after disconnecting from the remote
4658target. Using the stub/agent is also more efficient, as it can do
4659everything without needing to communicate with @value{GDBN}.
4660
e7e0cddf
SS
4661@table @code
4662@kindex dprintf
4663@item dprintf @var{location},@var{template},@var{expression}[,@var{expression}@dots{}]
4664Whenever execution reaches @var{location}, print the values of one or
4665more @var{expressions} under the control of the string @var{template}.
4666To print several values, separate them with commas.
4667
4668@item set dprintf-style @var{style}
4669Set the dprintf output to be handled in one of several different
4670styles enumerated below. A change of style affects all existing
4671dynamic printfs immediately. (If you need individual control over the
4672print commands, simply define normal breakpoints with
4673explicitly-supplied command lists.)
4674
4675@item gdb
4676@kindex dprintf-style gdb
4677Handle the output using the @value{GDBN} @code{printf} command.
4678
4679@item call
4680@kindex dprintf-style call
4681Handle the output by calling a function in your program (normally
4682@code{printf}).
4683
d3ce09f5
SS
4684@item agent
4685@kindex dprintf-style agent
4686Have the remote debugging agent (such as @code{gdbserver}) handle
4687the output itself. This style is only available for agents that
4688support running commands on the target.
4689
e7e0cddf
SS
4690@item set dprintf-function @var{function}
4691Set the function to call if the dprintf style is @code{call}. By
4692default its value is @code{printf}. You may set it to any expression.
4693that @value{GDBN} can evaluate to a function, as per the @code{call}
4694command.
4695
4696@item set dprintf-channel @var{channel}
4697Set a ``channel'' for dprintf. If set to a non-empty value,
4698@value{GDBN} will evaluate it as an expression and pass the result as
4699a first argument to the @code{dprintf-function}, in the manner of
4700@code{fprintf} and similar functions. Otherwise, the dprintf format
4701string will be the first argument, in the manner of @code{printf}.
4702
4703As an example, if you wanted @code{dprintf} output to go to a logfile
4704that is a standard I/O stream assigned to the variable @code{mylog},
4705you could do the following:
4706
4707@example
4708(gdb) set dprintf-style call
4709(gdb) set dprintf-function fprintf
4710(gdb) set dprintf-channel mylog
4711(gdb) dprintf 25,"at line 25, glob=%d\n",glob
4712Dprintf 1 at 0x123456: file main.c, line 25.
4713(gdb) info break
47141 dprintf keep y 0x00123456 in main at main.c:25
4715 call (void) fprintf (mylog,"at line 25, glob=%d\n",glob)
4716 continue
4717(gdb)
4718@end example
4719
4720Note that the @code{info break} displays the dynamic printf commands
4721as normal breakpoint commands; you can thus easily see the effect of
4722the variable settings.
4723
d3ce09f5
SS
4724@item set disconnected-dprintf on
4725@itemx set disconnected-dprintf off
4726@kindex set disconnected-dprintf
4727Choose whether @code{dprintf} commands should continue to run if
4728@value{GDBN} has disconnected from the target. This only applies
4729if the @code{dprintf-style} is @code{agent}.
4730
4731@item show disconnected-dprintf off
4732@kindex show disconnected-dprintf
4733Show the current choice for disconnected @code{dprintf}.
4734
e7e0cddf
SS
4735@end table
4736
4737@value{GDBN} does not check the validity of function and channel,
4738relying on you to supply values that are meaningful for the contexts
4739in which they are being used. For instance, the function and channel
4740may be the values of local variables, but if that is the case, then
4741all enabled dynamic prints must be at locations within the scope of
4742those locals. If evaluation fails, @value{GDBN} will report an error.
4743
6149aea9
PA
4744@node Save Breakpoints
4745@subsection How to save breakpoints to a file
4746
4747To save breakpoint definitions to a file use the @w{@code{save
4748breakpoints}} command.
4749
4750@table @code
4751@kindex save breakpoints
4752@cindex save breakpoints to a file for future sessions
4753@item save breakpoints [@var{filename}]
4754This command saves all current breakpoint definitions together with
4755their commands and ignore counts, into a file @file{@var{filename}}
4756suitable for use in a later debugging session. This includes all
4757types of breakpoints (breakpoints, watchpoints, catchpoints,
4758tracepoints). To read the saved breakpoint definitions, use the
4759@code{source} command (@pxref{Command Files}). Note that watchpoints
4760with expressions involving local variables may fail to be recreated
4761because it may not be possible to access the context where the
4762watchpoint is valid anymore. Because the saved breakpoint definitions
4763are simply a sequence of @value{GDBN} commands that recreate the
4764breakpoints, you can edit the file in your favorite editing program,
4765and remove the breakpoint definitions you're not interested in, or
4766that can no longer be recreated.
4767@end table
4768
62e5f89c
SDJ
4769@node Static Probe Points
4770@subsection Static Probe Points
4771
4772@cindex static probe point, SystemTap
4773@value{GDBN} supports @dfn{SDT} probes in the code. @acronym{SDT} stands
4774for Statically Defined Tracing, and the probes are designed to have a tiny
4775runtime code and data footprint, and no dynamic relocations. They are
4776usable from assembly, C and C@t{++} languages. See
4777@uref{http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation}
4778for a good reference on how the @acronym{SDT} probes are implemented.
4779
4780Currently, @code{SystemTap} (@uref{http://sourceware.org/systemtap/})
4781@acronym{SDT} probes are supported on ELF-compatible systems. See
4782@uref{http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps}
4783for more information on how to add @code{SystemTap} @acronym{SDT} probes
4784in your applications.
4785
4786@cindex semaphores on static probe points
4787Some probes have an associated semaphore variable; for instance, this
4788happens automatically if you defined your probe using a DTrace-style
4789@file{.d} file. If your probe has a semaphore, @value{GDBN} will
4790automatically enable it when you specify a breakpoint using the
4791@samp{-probe-stap} notation. But, if you put a breakpoint at a probe's
4792location by some other method (e.g., @code{break file:line}), then
4793@value{GDBN} will not automatically set the semaphore.
4794
4795You can examine the available static static probes using @code{info
4796probes}, with optional arguments:
4797
4798@table @code
4799@kindex info probes
4800@item info probes stap @r{[}@var{provider} @r{[}@var{name} @r{[}@var{objfile}@r{]}@r{]}@r{]}
4801If given, @var{provider} is a regular expression used to match against provider
4802names when selecting which probes to list. If omitted, probes by all
4803probes from all providers are listed.
4804
4805If given, @var{name} is a regular expression to match against probe names
4806when selecting which probes to list. If omitted, probe names are not
4807considered when deciding whether to display them.
4808
4809If given, @var{objfile} is a regular expression used to select which
4810object files (executable or shared libraries) to examine. If not
4811given, all object files are considered.
4812
4813@item info probes all
4814List the available static probes, from all types.
4815@end table
4816
4817@vindex $_probe_arg@r{, convenience variable}
4818A probe may specify up to twelve arguments. These are available at the
4819point at which the probe is defined---that is, when the current PC is
4820at the probe's location. The arguments are available using the
4821convenience variables (@pxref{Convenience Vars})
4822@code{$_probe_arg0}@dots{}@code{$_probe_arg11}. Each probe argument is
4823an integer of the appropriate size; types are not preserved. The
4824convenience variable @code{$_probe_argc} holds the number of arguments
4825at the current probe point.
4826
4827These variables are always available, but attempts to access them at
4828any location other than a probe point will cause @value{GDBN} to give
4829an error message.
4830
4831
c906108c 4832@c @ifclear BARETARGET
6d2ebf8b 4833@node Error in Breakpoints
d4f3574e 4834@subsection ``Cannot insert breakpoints''
c906108c 4835
fa3a767f
PA
4836If you request too many active hardware-assisted breakpoints and
4837watchpoints, you will see this error message:
d4f3574e
SS
4838
4839@c FIXME: the precise wording of this message may change; the relevant
4840@c source change is not committed yet (Sep 3, 1999).
4841@smallexample
4842Stopped; cannot insert breakpoints.
4843You may have requested too many hardware breakpoints and watchpoints.
4844@end smallexample
4845
4846@noindent
4847This message is printed when you attempt to resume the program, since
4848only then @value{GDBN} knows exactly how many hardware breakpoints and
4849watchpoints it needs to insert.
4850
4851When this message is printed, you need to disable or remove some of the
4852hardware-assisted breakpoints and watchpoints, and then continue.
4853
79a6e687 4854@node Breakpoint-related Warnings
1485d690
KB
4855@subsection ``Breakpoint address adjusted...''
4856@cindex breakpoint address adjusted
4857
4858Some processor architectures place constraints on the addresses at
4859which breakpoints may be placed. For architectures thus constrained,
4860@value{GDBN} will attempt to adjust the breakpoint's address to comply
4861with the constraints dictated by the architecture.
4862
4863One example of such an architecture is the Fujitsu FR-V. The FR-V is
4864a VLIW architecture in which a number of RISC-like instructions may be
4865bundled together for parallel execution. The FR-V architecture
4866constrains the location of a breakpoint instruction within such a
4867bundle to the instruction with the lowest address. @value{GDBN}
4868honors this constraint by adjusting a breakpoint's address to the
4869first in the bundle.
4870
4871It is not uncommon for optimized code to have bundles which contain
4872instructions from different source statements, thus it may happen that
4873a breakpoint's address will be adjusted from one source statement to
4874another. Since this adjustment may significantly alter @value{GDBN}'s
4875breakpoint related behavior from what the user expects, a warning is
4876printed when the breakpoint is first set and also when the breakpoint
4877is hit.
4878
4879A warning like the one below is printed when setting a breakpoint
4880that's been subject to address adjustment:
4881
4882@smallexample
4883warning: Breakpoint address adjusted from 0x00010414 to 0x00010410.
4884@end smallexample
4885
4886Such warnings are printed both for user settable and @value{GDBN}'s
4887internal breakpoints. If you see one of these warnings, you should
4888verify that a breakpoint set at the adjusted address will have the
4889desired affect. If not, the breakpoint in question may be removed and
b383017d 4890other breakpoints may be set which will have the desired behavior.
1485d690
KB
4891E.g., it may be sufficient to place the breakpoint at a later
4892instruction. A conditional breakpoint may also be useful in some
4893cases to prevent the breakpoint from triggering too often.
4894
4895@value{GDBN} will also issue a warning when stopping at one of these
4896adjusted breakpoints:
4897
4898@smallexample
4899warning: Breakpoint 1 address previously adjusted from 0x00010414
4900to 0x00010410.
4901@end smallexample
4902
4903When this warning is encountered, it may be too late to take remedial
4904action except in cases where the breakpoint is hit earlier or more
4905frequently than expected.
d4f3574e 4906
6d2ebf8b 4907@node Continuing and Stepping
79a6e687 4908@section Continuing and Stepping
c906108c
SS
4909
4910@cindex stepping
4911@cindex continuing
4912@cindex resuming execution
4913@dfn{Continuing} means resuming program execution until your program
4914completes normally. In contrast, @dfn{stepping} means executing just
4915one more ``step'' of your program, where ``step'' may mean either one
4916line of source code, or one machine instruction (depending on what
7a292a7a
SS
4917particular command you use). Either when continuing or when stepping,
4918your program may stop even sooner, due to a breakpoint or a signal. (If
d4f3574e
SS
4919it stops due to a signal, you may want to use @code{handle}, or use
4920@samp{signal 0} to resume execution. @xref{Signals, ,Signals}.)
c906108c
SS
4921
4922@table @code
4923@kindex continue
41afff9a
EZ
4924@kindex c @r{(@code{continue})}
4925@kindex fg @r{(resume foreground execution)}
c906108c
SS
4926@item continue @r{[}@var{ignore-count}@r{]}
4927@itemx c @r{[}@var{ignore-count}@r{]}
4928@itemx fg @r{[}@var{ignore-count}@r{]}
4929Resume program execution, at the address where your program last stopped;
4930any breakpoints set at that address are bypassed. The optional argument
4931@var{ignore-count} allows you to specify a further number of times to
4932ignore a breakpoint at this location; its effect is like that of
79a6e687 4933@code{ignore} (@pxref{Conditions, ,Break Conditions}).
c906108c
SS
4934
4935The argument @var{ignore-count} is meaningful only when your program
4936stopped due to a breakpoint. At other times, the argument to
4937@code{continue} is ignored.
4938
d4f3574e
SS
4939The synonyms @code{c} and @code{fg} (for @dfn{foreground}, as the
4940debugged program is deemed to be the foreground program) are provided
4941purely for convenience, and have exactly the same behavior as
4942@code{continue}.
c906108c
SS
4943@end table
4944
4945To resume execution at a different place, you can use @code{return}
79a6e687 4946(@pxref{Returning, ,Returning from a Function}) to go back to the
c906108c 4947calling function; or @code{jump} (@pxref{Jumping, ,Continuing at a
79a6e687 4948Different Address}) to go to an arbitrary location in your program.
c906108c
SS
4949
4950A typical technique for using stepping is to set a breakpoint
79a6e687 4951(@pxref{Breakpoints, ,Breakpoints; Watchpoints; and Catchpoints}) at the
c906108c
SS
4952beginning of the function or the section of your program where a problem
4953is believed to lie, run your program until it stops at that breakpoint,
4954and then step through the suspect area, examining the variables that are
4955interesting, until you see the problem happen.
4956
4957@table @code
4958@kindex step
41afff9a 4959@kindex s @r{(@code{step})}
c906108c
SS
4960@item step
4961Continue running your program until control reaches a different source
4962line, then stop it and return control to @value{GDBN}. This command is
4963abbreviated @code{s}.
4964
4965@quotation
4966@c "without debugging information" is imprecise; actually "without line
4967@c numbers in the debugging information". (gcc -g1 has debugging info but
4968@c not line numbers). But it seems complex to try to make that
4969@c distinction here.
4970@emph{Warning:} If you use the @code{step} command while control is
4971within a function that was compiled without debugging information,
4972execution proceeds until control reaches a function that does have
4973debugging information. Likewise, it will not step into a function which
4974is compiled without debugging information. To step through functions
4975without debugging information, use the @code{stepi} command, described
4976below.
4977@end quotation
4978
4a92d011
EZ
4979The @code{step} command only stops at the first instruction of a source
4980line. This prevents the multiple stops that could otherwise occur in
4981@code{switch} statements, @code{for} loops, etc. @code{step} continues
4982to stop if a function that has debugging information is called within
4983the line. In other words, @code{step} @emph{steps inside} any functions
4984called within the line.
c906108c 4985
d4f3574e
SS
4986Also, the @code{step} command only enters a function if there is line
4987number information for the function. Otherwise it acts like the
5d161b24 4988@code{next} command. This avoids problems when using @code{cc -gl}
eb17f351 4989on @acronym{MIPS} machines. Previously, @code{step} entered subroutines if there
5d161b24 4990was any debugging information about the routine.
c906108c
SS
4991
4992@item step @var{count}
4993Continue running as in @code{step}, but do so @var{count} times. If a
7a292a7a
SS
4994breakpoint is reached, or a signal not related to stepping occurs before
4995@var{count} steps, stepping stops right away.
c906108c
SS
4996
4997@kindex next
41afff9a 4998@kindex n @r{(@code{next})}
c906108c
SS
4999@item next @r{[}@var{count}@r{]}
5000Continue to the next source line in the current (innermost) stack frame.
7a292a7a
SS
5001This is similar to @code{step}, but function calls that appear within
5002the line of code are executed without stopping. Execution stops when
5003control reaches a different line of code at the original stack level
5004that was executing when you gave the @code{next} command. This command
5005is abbreviated @code{n}.
c906108c
SS
5006
5007An argument @var{count} is a repeat count, as for @code{step}.
5008
5009
5010@c FIX ME!! Do we delete this, or is there a way it fits in with
5011@c the following paragraph? --- Vctoria
5012@c
5013@c @code{next} within a function that lacks debugging information acts like
5014@c @code{step}, but any function calls appearing within the code of the
5015@c function are executed without stopping.
5016
d4f3574e
SS
5017The @code{next} command only stops at the first instruction of a
5018source line. This prevents multiple stops that could otherwise occur in
4a92d011 5019@code{switch} statements, @code{for} loops, etc.
c906108c 5020
b90a5f51
CF
5021@kindex set step-mode
5022@item set step-mode
5023@cindex functions without line info, and stepping
5024@cindex stepping into functions with no line info
5025@itemx set step-mode on
4a92d011 5026The @code{set step-mode on} command causes the @code{step} command to
b90a5f51
CF
5027stop at the first instruction of a function which contains no debug line
5028information rather than stepping over it.
5029
4a92d011
EZ
5030This is useful in cases where you may be interested in inspecting the
5031machine instructions of a function which has no symbolic info and do not
5032want @value{GDBN} to automatically skip over this function.
b90a5f51
CF
5033
5034@item set step-mode off
4a92d011 5035Causes the @code{step} command to step over any functions which contains no
b90a5f51
CF
5036debug information. This is the default.
5037
9c16f35a
EZ
5038@item show step-mode
5039Show whether @value{GDBN} will stop in or step over functions without
5040source line debug information.
5041
c906108c 5042@kindex finish
8dfa32fc 5043@kindex fin @r{(@code{finish})}
c906108c
SS
5044@item finish
5045Continue running until just after function in the selected stack frame
8dfa32fc
JB
5046returns. Print the returned value (if any). This command can be
5047abbreviated as @code{fin}.
c906108c
SS
5048
5049Contrast this with the @code{return} command (@pxref{Returning,
79a6e687 5050,Returning from a Function}).
c906108c
SS
5051
5052@kindex until
41afff9a 5053@kindex u @r{(@code{until})}
09d4efe1 5054@cindex run until specified location
c906108c
SS
5055@item until
5056@itemx u
5057Continue running until a source line past the current line, in the
5058current stack frame, is reached. This command is used to avoid single
5059stepping through a loop more than once. It is like the @code{next}
5060command, except that when @code{until} encounters a jump, it
5061automatically continues execution until the program counter is greater
5062than the address of the jump.
5063
5064This means that when you reach the end of a loop after single stepping
5065though it, @code{until} makes your program continue execution until it
5066exits the loop. In contrast, a @code{next} command at the end of a loop
5067simply steps back to the beginning of the loop, which forces you to step
5068through the next iteration.
5069
5070@code{until} always stops your program if it attempts to exit the current
5071stack frame.
5072
5073@code{until} may produce somewhat counterintuitive results if the order
5074of machine code does not match the order of the source lines. For
5075example, in the following excerpt from a debugging session, the @code{f}
5076(@code{frame}) command shows that execution is stopped at line
5077@code{206}; yet when we use @code{until}, we get to line @code{195}:
5078
474c8240 5079@smallexample
c906108c
SS
5080(@value{GDBP}) f
5081#0 main (argc=4, argv=0xf7fffae8) at m4.c:206
5082206 expand_input();
5083(@value{GDBP}) until
5084195 for ( ; argc > 0; NEXTARG) @{
474c8240 5085@end smallexample
c906108c
SS
5086
5087This happened because, for execution efficiency, the compiler had
5088generated code for the loop closure test at the end, rather than the
5089start, of the loop---even though the test in a C @code{for}-loop is
5090written before the body of the loop. The @code{until} command appeared
5091to step back to the beginning of the loop when it advanced to this
5092expression; however, it has not really gone to an earlier
5093statement---not in terms of the actual machine code.
5094
5095@code{until} with no argument works by means of single
5096instruction stepping, and hence is slower than @code{until} with an
5097argument.
5098
5099@item until @var{location}
5100@itemx u @var{location}
5101Continue running your program until either the specified location is
5102reached, or the current stack frame returns. @var{location} is any of
2a25a5ba
EZ
5103the forms described in @ref{Specify Location}.
5104This form of the command uses temporary breakpoints, and
c60eb6f1
EZ
5105hence is quicker than @code{until} without an argument. The specified
5106location is actually reached only if it is in the current frame. This
5107implies that @code{until} can be used to skip over recursive function
5108invocations. For instance in the code below, if the current location is
5109line @code{96}, issuing @code{until 99} will execute the program up to
db2e3e2e 5110line @code{99} in the same invocation of factorial, i.e., after the inner
c60eb6f1
EZ
5111invocations have returned.
5112
5113@smallexample
511494 int factorial (int value)
511595 @{
511696 if (value > 1) @{
511797 value *= factorial (value - 1);
511898 @}
511999 return (value);
5120100 @}
5121@end smallexample
5122
5123
5124@kindex advance @var{location}
984359d2 5125@item advance @var{location}
09d4efe1 5126Continue running the program up to the given @var{location}. An argument is
2a25a5ba
EZ
5127required, which should be of one of the forms described in
5128@ref{Specify Location}.
5129Execution will also stop upon exit from the current stack
c60eb6f1
EZ
5130frame. This command is similar to @code{until}, but @code{advance} will
5131not skip over recursive function calls, and the target location doesn't
5132have to be in the same frame as the current one.
5133
c906108c
SS
5134
5135@kindex stepi
41afff9a 5136@kindex si @r{(@code{stepi})}
c906108c 5137@item stepi
96a2c332 5138@itemx stepi @var{arg}
c906108c
SS
5139@itemx si
5140Execute one machine instruction, then stop and return to the debugger.
5141
5142It is often useful to do @samp{display/i $pc} when stepping by machine
5143instructions. This makes @value{GDBN} automatically display the next
5144instruction to be executed, each time your program stops. @xref{Auto
79a6e687 5145Display,, Automatic Display}.
c906108c
SS
5146
5147An argument is a repeat count, as in @code{step}.
5148
5149@need 750
5150@kindex nexti
41afff9a 5151@kindex ni @r{(@code{nexti})}
c906108c 5152@item nexti
96a2c332 5153@itemx nexti @var{arg}
c906108c
SS
5154@itemx ni
5155Execute one machine instruction, but if it is a function call,
5156proceed until the function returns.
5157
5158An argument is a repeat count, as in @code{next}.
5159@end table
5160
aad1c02c
TT
5161@node Skipping Over Functions and Files
5162@section Skipping Over Functions and Files
1bfeeb0f
JL
5163@cindex skipping over functions and files
5164
5165The program you are debugging may contain some functions which are
5166uninteresting to debug. The @code{skip} comand lets you tell @value{GDBN} to
5167skip a function or all functions in a file when stepping.
5168
5169For example, consider the following C function:
5170
5171@smallexample
5172101 int func()
5173102 @{
5174103 foo(boring());
5175104 bar(boring());
5176105 @}
5177@end smallexample
5178
5179@noindent
5180Suppose you wish to step into the functions @code{foo} and @code{bar}, but you
5181are not interested in stepping through @code{boring}. If you run @code{step}
5182at line 103, you'll enter @code{boring()}, but if you run @code{next}, you'll
5183step over both @code{foo} and @code{boring}!
5184
5185One solution is to @code{step} into @code{boring} and use the @code{finish}
5186command to immediately exit it. But this can become tedious if @code{boring}
5187is called from many places.
5188
5189A more flexible solution is to execute @kbd{skip boring}. This instructs
5190@value{GDBN} never to step into @code{boring}. Now when you execute
5191@code{step} at line 103, you'll step over @code{boring} and directly into
5192@code{foo}.
5193
5194You can also instruct @value{GDBN} to skip all functions in a file, with, for
5195example, @code{skip file boring.c}.
5196
5197@table @code
5198@kindex skip function
5199@item skip @r{[}@var{linespec}@r{]}
5200@itemx skip function @r{[}@var{linespec}@r{]}
5201After running this command, the function named by @var{linespec} or the
5202function containing the line named by @var{linespec} will be skipped over when
983fb131 5203stepping. @xref{Specify Location}.
1bfeeb0f
JL
5204
5205If you do not specify @var{linespec}, the function you're currently debugging
5206will be skipped.
5207
5208(If you have a function called @code{file} that you want to skip, use
5209@kbd{skip function file}.)
5210
5211@kindex skip file
5212@item skip file @r{[}@var{filename}@r{]}
5213After running this command, any function whose source lives in @var{filename}
5214will be skipped over when stepping.
5215
5216If you do not specify @var{filename}, functions whose source lives in the file
5217you're currently debugging will be skipped.
5218@end table
5219
5220Skips can be listed, deleted, disabled, and enabled, much like breakpoints.
5221These are the commands for managing your list of skips:
5222
5223@table @code
5224@kindex info skip
5225@item info skip @r{[}@var{range}@r{]}
5226Print details about the specified skip(s). If @var{range} is not specified,
5227print a table with details about all functions and files marked for skipping.
5228@code{info skip} prints the following information about each skip:
5229
5230@table @emph
5231@item Identifier
5232A number identifying this skip.
5233@item Type
5234The type of this skip, either @samp{function} or @samp{file}.
5235@item Enabled or Disabled
5236Enabled skips are marked with @samp{y}. Disabled skips are marked with @samp{n}.
5237@item Address
5238For function skips, this column indicates the address in memory of the function
5239being skipped. If you've set a function skip on a function which has not yet
5240been loaded, this field will contain @samp{<PENDING>}. Once a shared library
5241which has the function is loaded, @code{info skip} will show the function's
5242address here.
5243@item What
5244For file skips, this field contains the filename being skipped. For functions
5245skips, this field contains the function name and its line number in the file
5246where it is defined.
5247@end table
5248
5249@kindex skip delete
5250@item skip delete @r{[}@var{range}@r{]}
5251Delete the specified skip(s). If @var{range} is not specified, delete all
5252skips.
5253
5254@kindex skip enable
5255@item skip enable @r{[}@var{range}@r{]}
5256Enable the specified skip(s). If @var{range} is not specified, enable all
5257skips.
5258
5259@kindex skip disable
5260@item skip disable @r{[}@var{range}@r{]}
5261Disable the specified skip(s). If @var{range} is not specified, disable all
5262skips.
5263
5264@end table
5265
6d2ebf8b 5266@node Signals
c906108c
SS
5267@section Signals
5268@cindex signals
5269
5270A signal is an asynchronous event that can happen in a program. The
5271operating system defines the possible kinds of signals, and gives each
5272kind a name and a number. For example, in Unix @code{SIGINT} is the
c8aa23ab 5273signal a program gets when you type an interrupt character (often @kbd{Ctrl-c});
c906108c
SS
5274@code{SIGSEGV} is the signal a program gets from referencing a place in
5275memory far away from all the areas in use; @code{SIGALRM} occurs when
5276the alarm clock timer goes off (which happens only if your program has
5277requested an alarm).
5278
5279@cindex fatal signals
5280Some signals, including @code{SIGALRM}, are a normal part of the
5281functioning of your program. Others, such as @code{SIGSEGV}, indicate
d4f3574e 5282errors; these signals are @dfn{fatal} (they kill your program immediately) if the
c906108c
SS
5283program has not specified in advance some other way to handle the signal.
5284@code{SIGINT} does not indicate an error in your program, but it is normally
5285fatal so it can carry out the purpose of the interrupt: to kill the program.
5286
5287@value{GDBN} has the ability to detect any occurrence of a signal in your
5288program. You can tell @value{GDBN} in advance what to do for each kind of
5289signal.
5290
5291@cindex handling signals
24f93129
EZ
5292Normally, @value{GDBN} is set up to let the non-erroneous signals like
5293@code{SIGALRM} be silently passed to your program
5294(so as not to interfere with their role in the program's functioning)
c906108c
SS
5295but to stop your program immediately whenever an error signal happens.
5296You can change these settings with the @code{handle} command.
5297
5298@table @code
5299@kindex info signals
09d4efe1 5300@kindex info handle
c906108c 5301@item info signals
96a2c332 5302@itemx info handle
c906108c
SS
5303Print a table of all the kinds of signals and how @value{GDBN} has been told to
5304handle each one. You can use this to see the signal numbers of all
5305the defined types of signals.
5306
45ac1734
EZ
5307@item info signals @var{sig}
5308Similar, but print information only about the specified signal number.
5309
d4f3574e 5310@code{info handle} is an alias for @code{info signals}.
c906108c
SS
5311
5312@kindex handle
45ac1734 5313@item handle @var{signal} @r{[}@var{keywords}@dots{}@r{]}
5ece1a18
EZ
5314Change the way @value{GDBN} handles signal @var{signal}. @var{signal}
5315can be the number of a signal or its name (with or without the
24f93129 5316@samp{SIG} at the beginning); a list of signal numbers of the form
5ece1a18 5317@samp{@var{low}-@var{high}}; or the word @samp{all}, meaning all the
45ac1734
EZ
5318known signals. Optional arguments @var{keywords}, described below,
5319say what change to make.
c906108c
SS
5320@end table
5321
5322@c @group
5323The keywords allowed by the @code{handle} command can be abbreviated.
5324Their full names are:
5325
5326@table @code
5327@item nostop
5328@value{GDBN} should not stop your program when this signal happens. It may
5329still print a message telling you that the signal has come in.
5330
5331@item stop
5332@value{GDBN} should stop your program when this signal happens. This implies
5333the @code{print} keyword as well.
5334
5335@item print
5336@value{GDBN} should print a message when this signal happens.
5337
5338@item noprint
5339@value{GDBN} should not mention the occurrence of the signal at all. This
5340implies the @code{nostop} keyword as well.
5341
5342@item pass
5ece1a18 5343@itemx noignore
c906108c
SS
5344@value{GDBN} should allow your program to see this signal; your program
5345can handle the signal, or else it may terminate if the signal is fatal
5ece1a18 5346and not handled. @code{pass} and @code{noignore} are synonyms.
c906108c
SS
5347
5348@item nopass
5ece1a18 5349@itemx ignore
c906108c 5350@value{GDBN} should not allow your program to see this signal.
5ece1a18 5351@code{nopass} and @code{ignore} are synonyms.
c906108c
SS
5352@end table
5353@c @end group
5354
d4f3574e
SS
5355When a signal stops your program, the signal is not visible to the
5356program until you
c906108c
SS
5357continue. Your program sees the signal then, if @code{pass} is in
5358effect for the signal in question @emph{at that time}. In other words,
5359after @value{GDBN} reports a signal, you can use the @code{handle}
5360command with @code{pass} or @code{nopass} to control whether your
5361program sees that signal when you continue.
5362
24f93129
EZ
5363The default is set to @code{nostop}, @code{noprint}, @code{pass} for
5364non-erroneous signals such as @code{SIGALRM}, @code{SIGWINCH} and
5365@code{SIGCHLD}, and to @code{stop}, @code{print}, @code{pass} for the
5366erroneous signals.
5367
c906108c
SS
5368You can also use the @code{signal} command to prevent your program from
5369seeing a signal, or cause it to see a signal it normally would not see,
5370or to give it any signal at any time. For example, if your program stopped
5371due to some sort of memory reference error, you might store correct
5372values into the erroneous variables and continue, hoping to see more
5373execution; but your program would probably terminate immediately as
5374a result of the fatal signal once it saw the signal. To prevent this,
5375you can continue with @samp{signal 0}. @xref{Signaling, ,Giving your
79a6e687 5376Program a Signal}.
c906108c 5377
4aa995e1
PA
5378@cindex extra signal information
5379@anchor{extra signal information}
5380
5381On some targets, @value{GDBN} can inspect extra signal information
5382associated with the intercepted signal, before it is actually
5383delivered to the program being debugged. This information is exported
5384by the convenience variable @code{$_siginfo}, and consists of data
5385that is passed by the kernel to the signal handler at the time of the
5386receipt of a signal. The data type of the information itself is
5387target dependent. You can see the data type using the @code{ptype
5388$_siginfo} command. On Unix systems, it typically corresponds to the
5389standard @code{siginfo_t} type, as defined in the @file{signal.h}
5390system header.
5391
5392Here's an example, on a @sc{gnu}/Linux system, printing the stray
5393referenced address that raised a segmentation fault.
5394
5395@smallexample
5396@group
5397(@value{GDBP}) continue
5398Program received signal SIGSEGV, Segmentation fault.
53990x0000000000400766 in main ()
540069 *(int *)p = 0;
5401(@value{GDBP}) ptype $_siginfo
5402type = struct @{
5403 int si_signo;
5404 int si_errno;
5405 int si_code;
5406 union @{
5407 int _pad[28];
5408 struct @{...@} _kill;
5409 struct @{...@} _timer;
5410 struct @{...@} _rt;
5411 struct @{...@} _sigchld;
5412 struct @{...@} _sigfault;
5413 struct @{...@} _sigpoll;
5414 @} _sifields;
5415@}
5416(@value{GDBP}) ptype $_siginfo._sifields._sigfault
5417type = struct @{
5418 void *si_addr;
5419@}
5420(@value{GDBP}) p $_siginfo._sifields._sigfault.si_addr
5421$1 = (void *) 0x7ffff7ff7000
5422@end group
5423@end smallexample
5424
5425Depending on target support, @code{$_siginfo} may also be writable.
5426
6d2ebf8b 5427@node Thread Stops
79a6e687 5428@section Stopping and Starting Multi-thread Programs
c906108c 5429
0606b73b
SL
5430@cindex stopped threads
5431@cindex threads, stopped
5432
5433@cindex continuing threads
5434@cindex threads, continuing
5435
5436@value{GDBN} supports debugging programs with multiple threads
5437(@pxref{Threads,, Debugging Programs with Multiple Threads}). There
5438are two modes of controlling execution of your program within the
5439debugger. In the default mode, referred to as @dfn{all-stop mode},
5440when any thread in your program stops (for example, at a breakpoint
5441or while being stepped), all other threads in the program are also stopped by
5442@value{GDBN}. On some targets, @value{GDBN} also supports
5443@dfn{non-stop mode}, in which other threads can continue to run freely while
5444you examine the stopped thread in the debugger.
5445
5446@menu
5447* All-Stop Mode:: All threads stop when GDB takes control
5448* Non-Stop Mode:: Other threads continue to execute
5449* Background Execution:: Running your program asynchronously
5450* Thread-Specific Breakpoints:: Controlling breakpoints
5451* Interrupted System Calls:: GDB may interfere with system calls
d914c394 5452* Observer Mode:: GDB does not alter program behavior
0606b73b
SL
5453@end menu
5454
5455@node All-Stop Mode
5456@subsection All-Stop Mode
5457
5458@cindex all-stop mode
5459
5460In all-stop mode, whenever your program stops under @value{GDBN} for any reason,
5461@emph{all} threads of execution stop, not just the current thread. This
5462allows you to examine the overall state of the program, including
5463switching between threads, without worrying that things may change
5464underfoot.
5465
5466Conversely, whenever you restart the program, @emph{all} threads start
5467executing. @emph{This is true even when single-stepping} with commands
5468like @code{step} or @code{next}.
5469
5470In particular, @value{GDBN} cannot single-step all threads in lockstep.
5471Since thread scheduling is up to your debugging target's operating
5472system (not controlled by @value{GDBN}), other threads may
5473execute more than one statement while the current thread completes a
5474single step. Moreover, in general other threads stop in the middle of a
5475statement, rather than at a clean statement boundary, when the program
5476stops.
5477
5478You might even find your program stopped in another thread after
5479continuing or even single-stepping. This happens whenever some other
5480thread runs into a breakpoint, a signal, or an exception before the
5481first thread completes whatever you requested.
5482
5483@cindex automatic thread selection
5484@cindex switching threads automatically
5485@cindex threads, automatic switching
5486Whenever @value{GDBN} stops your program, due to a breakpoint or a
5487signal, it automatically selects the thread where that breakpoint or
5488signal happened. @value{GDBN} alerts you to the context switch with a
5489message such as @samp{[Switching to Thread @var{n}]} to identify the
5490thread.
5491
5492On some OSes, you can modify @value{GDBN}'s default behavior by
5493locking the OS scheduler to allow only a single thread to run.
5494
5495@table @code
5496@item set scheduler-locking @var{mode}
5497@cindex scheduler locking mode
5498@cindex lock scheduler
5499Set the scheduler locking mode. If it is @code{off}, then there is no
5500locking and any thread may run at any time. If @code{on}, then only the
5501current thread may run when the inferior is resumed. The @code{step}
5502mode optimizes for single-stepping; it prevents other threads
5503from preempting the current thread while you are stepping, so that
5504the focus of debugging does not change unexpectedly.
5505Other threads only rarely (or never) get a chance to run
5506when you step. They are more likely to run when you @samp{next} over a
5507function call, and they are completely free to run when you use commands
5508like @samp{continue}, @samp{until}, or @samp{finish}. However, unless another
5509thread hits a breakpoint during its timeslice, @value{GDBN} does not change
5510the current thread away from the thread that you are debugging.
5511
5512@item show scheduler-locking
5513Display the current scheduler locking mode.
5514@end table
5515
d4db2f36
PA
5516@cindex resume threads of multiple processes simultaneously
5517By default, when you issue one of the execution commands such as
5518@code{continue}, @code{next} or @code{step}, @value{GDBN} allows only
5519threads of the current inferior to run. For example, if @value{GDBN}
5520is attached to two inferiors, each with two threads, the
5521@code{continue} command resumes only the two threads of the current
5522inferior. This is useful, for example, when you debug a program that
5523forks and you want to hold the parent stopped (so that, for instance,
5524it doesn't run to exit), while you debug the child. In other
5525situations, you may not be interested in inspecting the current state
5526of any of the processes @value{GDBN} is attached to, and you may want
5527to resume them all until some breakpoint is hit. In the latter case,
5528you can instruct @value{GDBN} to allow all threads of all the
5529inferiors to run with the @w{@code{set schedule-multiple}} command.
5530
5531@table @code
5532@kindex set schedule-multiple
5533@item set schedule-multiple
5534Set the mode for allowing threads of multiple processes to be resumed
5535when an execution command is issued. When @code{on}, all threads of
5536all processes are allowed to run. When @code{off}, only the threads
5537of the current process are resumed. The default is @code{off}. The
5538@code{scheduler-locking} mode takes precedence when set to @code{on},
5539or while you are stepping and set to @code{step}.
5540
5541@item show schedule-multiple
5542Display the current mode for resuming the execution of threads of
5543multiple processes.
5544@end table
5545
0606b73b
SL
5546@node Non-Stop Mode
5547@subsection Non-Stop Mode
5548
5549@cindex non-stop mode
5550
5551@c This section is really only a place-holder, and needs to be expanded
5552@c with more details.
5553
5554For some multi-threaded targets, @value{GDBN} supports an optional
5555mode of operation in which you can examine stopped program threads in
5556the debugger while other threads continue to execute freely. This
5557minimizes intrusion when debugging live systems, such as programs
5558where some threads have real-time constraints or must continue to
5559respond to external events. This is referred to as @dfn{non-stop} mode.
5560
5561In non-stop mode, when a thread stops to report a debugging event,
5562@emph{only} that thread is stopped; @value{GDBN} does not stop other
5563threads as well, in contrast to the all-stop mode behavior. Additionally,
5564execution commands such as @code{continue} and @code{step} apply by default
5565only to the current thread in non-stop mode, rather than all threads as
5566in all-stop mode. This allows you to control threads explicitly in
5567ways that are not possible in all-stop mode --- for example, stepping
5568one thread while allowing others to run freely, stepping
5569one thread while holding all others stopped, or stepping several threads
5570independently and simultaneously.
5571
5572To enter non-stop mode, use this sequence of commands before you run
5573or attach to your program:
5574
0606b73b
SL
5575@smallexample
5576# Enable the async interface.
c6ebd6cf 5577set target-async 1
0606b73b 5578
0606b73b
SL
5579# If using the CLI, pagination breaks non-stop.
5580set pagination off
5581
5582# Finally, turn it on!
5583set non-stop on
5584@end smallexample
5585
5586You can use these commands to manipulate the non-stop mode setting:
5587
5588@table @code
5589@kindex set non-stop
5590@item set non-stop on
5591Enable selection of non-stop mode.
5592@item set non-stop off
5593Disable selection of non-stop mode.
5594@kindex show non-stop
5595@item show non-stop
5596Show the current non-stop enablement setting.
5597@end table
5598
5599Note these commands only reflect whether non-stop mode is enabled,
5600not whether the currently-executing program is being run in non-stop mode.
5601In particular, the @code{set non-stop} preference is only consulted when
5602@value{GDBN} starts or connects to the target program, and it is generally
5603not possible to switch modes once debugging has started. Furthermore,
5604since not all targets support non-stop mode, even when you have enabled
5605non-stop mode, @value{GDBN} may still fall back to all-stop operation by
5606default.
5607
5608In non-stop mode, all execution commands apply only to the current thread
5609by default. That is, @code{continue} only continues one thread.
5610To continue all threads, issue @code{continue -a} or @code{c -a}.
5611
5612You can use @value{GDBN}'s background execution commands
5613(@pxref{Background Execution}) to run some threads in the background
5614while you continue to examine or step others from @value{GDBN}.
5615The MI execution commands (@pxref{GDB/MI Program Execution}) are
5616always executed asynchronously in non-stop mode.
5617
5618Suspending execution is done with the @code{interrupt} command when
5619running in the background, or @kbd{Ctrl-c} during foreground execution.
5620In all-stop mode, this stops the whole process;
5621but in non-stop mode the interrupt applies only to the current thread.
5622To stop the whole program, use @code{interrupt -a}.
5623
5624Other execution commands do not currently support the @code{-a} option.
5625
5626In non-stop mode, when a thread stops, @value{GDBN} doesn't automatically make
5627that thread current, as it does in all-stop mode. This is because the
5628thread stop notifications are asynchronous with respect to @value{GDBN}'s
5629command interpreter, and it would be confusing if @value{GDBN} unexpectedly
5630changed to a different thread just as you entered a command to operate on the
5631previously current thread.
5632
5633@node Background Execution
5634@subsection Background Execution
5635
5636@cindex foreground execution
5637@cindex background execution
5638@cindex asynchronous execution
5639@cindex execution, foreground, background and asynchronous
5640
5641@value{GDBN}'s execution commands have two variants: the normal
5642foreground (synchronous) behavior, and a background
5643(asynchronous) behavior. In foreground execution, @value{GDBN} waits for
5644the program to report that some thread has stopped before prompting for
5645another command. In background execution, @value{GDBN} immediately gives
5646a command prompt so that you can issue other commands while your program runs.
5647
32fc0df9
PA
5648You need to explicitly enable asynchronous mode before you can use
5649background execution commands. You can use these commands to
5650manipulate the asynchronous mode setting:
5651
5652@table @code
5653@kindex set target-async
5654@item set target-async on
5655Enable asynchronous mode.
5656@item set target-async off
5657Disable asynchronous mode.
5658@kindex show target-async
5659@item show target-async
5660Show the current target-async setting.
5661@end table
5662
5663If the target doesn't support async mode, @value{GDBN} issues an error
5664message if you attempt to use the background execution commands.
5665
0606b73b
SL
5666To specify background execution, add a @code{&} to the command. For example,
5667the background form of the @code{continue} command is @code{continue&}, or
5668just @code{c&}. The execution commands that accept background execution
5669are:
5670
5671@table @code
5672@kindex run&
5673@item run
5674@xref{Starting, , Starting your Program}.
5675
5676@item attach
5677@kindex attach&
5678@xref{Attach, , Debugging an Already-running Process}.
5679
5680@item step
5681@kindex step&
5682@xref{Continuing and Stepping, step}.
5683
5684@item stepi
5685@kindex stepi&
5686@xref{Continuing and Stepping, stepi}.
5687
5688@item next
5689@kindex next&
5690@xref{Continuing and Stepping, next}.
5691
7ce58dd2
DE
5692@item nexti
5693@kindex nexti&
5694@xref{Continuing and Stepping, nexti}.
5695
0606b73b
SL
5696@item continue
5697@kindex continue&
5698@xref{Continuing and Stepping, continue}.
5699
5700@item finish
5701@kindex finish&
5702@xref{Continuing and Stepping, finish}.
5703
5704@item until
5705@kindex until&
5706@xref{Continuing and Stepping, until}.
5707
5708@end table
5709
5710Background execution is especially useful in conjunction with non-stop
5711mode for debugging programs with multiple threads; see @ref{Non-Stop Mode}.
5712However, you can also use these commands in the normal all-stop mode with
5713the restriction that you cannot issue another execution command until the
5714previous one finishes. Examples of commands that are valid in all-stop
5715mode while the program is running include @code{help} and @code{info break}.
5716
5717You can interrupt your program while it is running in the background by
5718using the @code{interrupt} command.
5719
5720@table @code
5721@kindex interrupt
5722@item interrupt
5723@itemx interrupt -a
5724
5725Suspend execution of the running program. In all-stop mode,
5726@code{interrupt} stops the whole process, but in non-stop mode, it stops
5727only the current thread. To stop the whole program in non-stop mode,
5728use @code{interrupt -a}.
5729@end table
5730
0606b73b
SL
5731@node Thread-Specific Breakpoints
5732@subsection Thread-Specific Breakpoints
5733
c906108c 5734When your program has multiple threads (@pxref{Threads,, Debugging
79a6e687 5735Programs with Multiple Threads}), you can choose whether to set
c906108c
SS
5736breakpoints on all threads, or on a particular thread.
5737
5738@table @code
5739@cindex breakpoints and threads
5740@cindex thread breakpoints
5741@kindex break @dots{} thread @var{threadno}
5742@item break @var{linespec} thread @var{threadno}
5743@itemx break @var{linespec} thread @var{threadno} if @dots{}
5744@var{linespec} specifies source lines; there are several ways of
2a25a5ba
EZ
5745writing them (@pxref{Specify Location}), but the effect is always to
5746specify some source line.
c906108c
SS
5747
5748Use the qualifier @samp{thread @var{threadno}} with a breakpoint command
5749to specify that you only want @value{GDBN} to stop the program when a
5750particular thread reaches this breakpoint. @var{threadno} is one of the
5751numeric thread identifiers assigned by @value{GDBN}, shown in the first
5752column of the @samp{info threads} display.
5753
5754If you do not specify @samp{thread @var{threadno}} when you set a
5755breakpoint, the breakpoint applies to @emph{all} threads of your
5756program.
5757
5758You can use the @code{thread} qualifier on conditional breakpoints as
b6199126
DJ
5759well; in this case, place @samp{thread @var{threadno}} before or
5760after the breakpoint condition, like this:
c906108c
SS
5761
5762@smallexample
2df3850c 5763(@value{GDBP}) break frik.c:13 thread 28 if bartab > lim
c906108c
SS
5764@end smallexample
5765
5766@end table
5767
0606b73b
SL
5768@node Interrupted System Calls
5769@subsection Interrupted System Calls
c906108c 5770
36d86913
MC
5771@cindex thread breakpoints and system calls
5772@cindex system calls and thread breakpoints
5773@cindex premature return from system calls
0606b73b
SL
5774There is an unfortunate side effect when using @value{GDBN} to debug
5775multi-threaded programs. If one thread stops for a
36d86913
MC
5776breakpoint, or for some other reason, and another thread is blocked in a
5777system call, then the system call may return prematurely. This is a
5778consequence of the interaction between multiple threads and the signals
5779that @value{GDBN} uses to implement breakpoints and other events that
5780stop execution.
5781
5782To handle this problem, your program should check the return value of
5783each system call and react appropriately. This is good programming
5784style anyways.
5785
5786For example, do not write code like this:
5787
5788@smallexample
5789 sleep (10);
5790@end smallexample
5791
5792The call to @code{sleep} will return early if a different thread stops
5793at a breakpoint or for some other reason.
5794
5795Instead, write this:
5796
5797@smallexample
5798 int unslept = 10;
5799 while (unslept > 0)
5800 unslept = sleep (unslept);
5801@end smallexample
5802
5803A system call is allowed to return early, so the system is still
5804conforming to its specification. But @value{GDBN} does cause your
5805multi-threaded program to behave differently than it would without
5806@value{GDBN}.
5807
5808Also, @value{GDBN} uses internal breakpoints in the thread library to
5809monitor certain events such as thread creation and thread destruction.
5810When such an event happens, a system call in another thread may return
5811prematurely, even though your program does not appear to stop.
5812
d914c394
SS
5813@node Observer Mode
5814@subsection Observer Mode
5815
5816If you want to build on non-stop mode and observe program behavior
5817without any chance of disruption by @value{GDBN}, you can set
5818variables to disable all of the debugger's attempts to modify state,
5819whether by writing memory, inserting breakpoints, etc. These operate
5820at a low level, intercepting operations from all commands.
5821
5822When all of these are set to @code{off}, then @value{GDBN} is said to
5823be @dfn{observer mode}. As a convenience, the variable
5824@code{observer} can be set to disable these, plus enable non-stop
5825mode.
5826
5827Note that @value{GDBN} will not prevent you from making nonsensical
5828combinations of these settings. For instance, if you have enabled
5829@code{may-insert-breakpoints} but disabled @code{may-write-memory},
5830then breakpoints that work by writing trap instructions into the code
5831stream will still not be able to be placed.
5832
5833@table @code
5834
5835@kindex observer
5836@item set observer on
5837@itemx set observer off
5838When set to @code{on}, this disables all the permission variables
5839below (except for @code{insert-fast-tracepoints}), plus enables
5840non-stop debugging. Setting this to @code{off} switches back to
5841normal debugging, though remaining in non-stop mode.
5842
5843@item show observer
5844Show whether observer mode is on or off.
5845
5846@kindex may-write-registers
5847@item set may-write-registers on
5848@itemx set may-write-registers off
5849This controls whether @value{GDBN} will attempt to alter the values of
5850registers, such as with assignment expressions in @code{print}, or the
5851@code{jump} command. It defaults to @code{on}.
5852
5853@item show may-write-registers
5854Show the current permission to write registers.
5855
5856@kindex may-write-memory
5857@item set may-write-memory on
5858@itemx set may-write-memory off
5859This controls whether @value{GDBN} will attempt to alter the contents
5860of memory, such as with assignment expressions in @code{print}. It
5861defaults to @code{on}.
5862
5863@item show may-write-memory
5864Show the current permission to write memory.
5865
5866@kindex may-insert-breakpoints
5867@item set may-insert-breakpoints on
5868@itemx set may-insert-breakpoints off
5869This controls whether @value{GDBN} will attempt to insert breakpoints.
5870This affects all breakpoints, including internal breakpoints defined
5871by @value{GDBN}. It defaults to @code{on}.
5872
5873@item show may-insert-breakpoints
5874Show the current permission to insert breakpoints.
5875
5876@kindex may-insert-tracepoints
5877@item set may-insert-tracepoints on
5878@itemx set may-insert-tracepoints off
5879This controls whether @value{GDBN} will attempt to insert (regular)
5880tracepoints at the beginning of a tracing experiment. It affects only
5881non-fast tracepoints, fast tracepoints being under the control of
5882@code{may-insert-fast-tracepoints}. It defaults to @code{on}.
5883
5884@item show may-insert-tracepoints
5885Show the current permission to insert tracepoints.
5886
5887@kindex may-insert-fast-tracepoints
5888@item set may-insert-fast-tracepoints on
5889@itemx set may-insert-fast-tracepoints off
5890This controls whether @value{GDBN} will attempt to insert fast
5891tracepoints at the beginning of a tracing experiment. It affects only
5892fast tracepoints, regular (non-fast) tracepoints being under the
5893control of @code{may-insert-tracepoints}. It defaults to @code{on}.
5894
5895@item show may-insert-fast-tracepoints
5896Show the current permission to insert fast tracepoints.
5897
5898@kindex may-interrupt
5899@item set may-interrupt on
5900@itemx set may-interrupt off
5901This controls whether @value{GDBN} will attempt to interrupt or stop
5902program execution. When this variable is @code{off}, the
5903@code{interrupt} command will have no effect, nor will
5904@kbd{Ctrl-c}. It defaults to @code{on}.
5905
5906@item show may-interrupt
5907Show the current permission to interrupt or stop the program.
5908
5909@end table
c906108c 5910
bacec72f
MS
5911@node Reverse Execution
5912@chapter Running programs backward
5913@cindex reverse execution
5914@cindex running programs backward
5915
5916When you are debugging a program, it is not unusual to realize that
5917you have gone too far, and some event of interest has already happened.
5918If the target environment supports it, @value{GDBN} can allow you to
5919``rewind'' the program by running it backward.
5920
5921A target environment that supports reverse execution should be able
5922to ``undo'' the changes in machine state that have taken place as the
5923program was executing normally. Variables, registers etc.@: should
5924revert to their previous values. Obviously this requires a great
5925deal of sophistication on the part of the target environment; not
5926all target environments can support reverse execution.
5927
5928When a program is executed in reverse, the instructions that
5929have most recently been executed are ``un-executed'', in reverse
5930order. The program counter runs backward, following the previous
5931thread of execution in reverse. As each instruction is ``un-executed'',
5932the values of memory and/or registers that were changed by that
5933instruction are reverted to their previous states. After executing
5934a piece of source code in reverse, all side effects of that code
5935should be ``undone'', and all variables should be returned to their
5936prior values@footnote{
5937Note that some side effects are easier to undo than others. For instance,
5938memory and registers are relatively easy, but device I/O is hard. Some
5939targets may be able undo things like device I/O, and some may not.
5940
5941The contract between @value{GDBN} and the reverse executing target
5942requires only that the target do something reasonable when
5943@value{GDBN} tells it to execute backwards, and then report the
5944results back to @value{GDBN}. Whatever the target reports back to
5945@value{GDBN}, @value{GDBN} will report back to the user. @value{GDBN}
5946assumes that the memory and registers that the target reports are in a
5947consistant state, but @value{GDBN} accepts whatever it is given.
5948}.
5949
5950If you are debugging in a target environment that supports
5951reverse execution, @value{GDBN} provides the following commands.
5952
5953@table @code
5954@kindex reverse-continue
5955@kindex rc @r{(@code{reverse-continue})}
5956@item reverse-continue @r{[}@var{ignore-count}@r{]}
5957@itemx rc @r{[}@var{ignore-count}@r{]}
5958Beginning at the point where your program last stopped, start executing
5959in reverse. Reverse execution will stop for breakpoints and synchronous
5960exceptions (signals), just like normal execution. Behavior of
5961asynchronous signals depends on the target environment.
5962
5963@kindex reverse-step
5964@kindex rs @r{(@code{step})}
5965@item reverse-step @r{[}@var{count}@r{]}
5966Run the program backward until control reaches the start of a
5967different source line; then stop it, and return control to @value{GDBN}.
5968
5969Like the @code{step} command, @code{reverse-step} will only stop
5970at the beginning of a source line. It ``un-executes'' the previously
5971executed source line. If the previous source line included calls to
5972debuggable functions, @code{reverse-step} will step (backward) into
5973the called function, stopping at the beginning of the @emph{last}
5974statement in the called function (typically a return statement).
5975
5976Also, as with the @code{step} command, if non-debuggable functions are
5977called, @code{reverse-step} will run thru them backward without stopping.
5978
5979@kindex reverse-stepi
5980@kindex rsi @r{(@code{reverse-stepi})}
5981@item reverse-stepi @r{[}@var{count}@r{]}
5982Reverse-execute one machine instruction. Note that the instruction
5983to be reverse-executed is @emph{not} the one pointed to by the program
5984counter, but the instruction executed prior to that one. For instance,
5985if the last instruction was a jump, @code{reverse-stepi} will take you
5986back from the destination of the jump to the jump instruction itself.
5987
5988@kindex reverse-next
5989@kindex rn @r{(@code{reverse-next})}
5990@item reverse-next @r{[}@var{count}@r{]}
5991Run backward to the beginning of the previous line executed in
5992the current (innermost) stack frame. If the line contains function
5993calls, they will be ``un-executed'' without stopping. Starting from
5994the first line of a function, @code{reverse-next} will take you back
5995to the caller of that function, @emph{before} the function was called,
5996just as the normal @code{next} command would take you from the last
5997line of a function back to its return to its caller
16af530a 5998@footnote{Unless the code is too heavily optimized.}.
bacec72f
MS
5999
6000@kindex reverse-nexti
6001@kindex rni @r{(@code{reverse-nexti})}
6002@item reverse-nexti @r{[}@var{count}@r{]}
6003Like @code{nexti}, @code{reverse-nexti} executes a single instruction
6004in reverse, except that called functions are ``un-executed'' atomically.
6005That is, if the previously executed instruction was a return from
540aa8e7 6006another function, @code{reverse-nexti} will continue to execute
bacec72f
MS
6007in reverse until the call to that function (from the current stack
6008frame) is reached.
6009
6010@kindex reverse-finish
6011@item reverse-finish
6012Just as the @code{finish} command takes you to the point where the
6013current function returns, @code{reverse-finish} takes you to the point
6014where it was called. Instead of ending up at the end of the current
6015function invocation, you end up at the beginning.
6016
6017@kindex set exec-direction
6018@item set exec-direction
6019Set the direction of target execution.
984359d2 6020@item set exec-direction reverse
bacec72f
MS
6021@cindex execute forward or backward in time
6022@value{GDBN} will perform all execution commands in reverse, until the
6023exec-direction mode is changed to ``forward''. Affected commands include
6024@code{step, stepi, next, nexti, continue, and finish}. The @code{return}
6025command cannot be used in reverse mode.
6026@item set exec-direction forward
6027@value{GDBN} will perform all execution commands in the normal fashion.
6028This is the default.
6029@end table
6030
c906108c 6031
a2311334
EZ
6032@node Process Record and Replay
6033@chapter Recording Inferior's Execution and Replaying It
53cc454a
HZ
6034@cindex process record and replay
6035@cindex recording inferior's execution and replaying it
6036
8e05493c
EZ
6037On some platforms, @value{GDBN} provides a special @dfn{process record
6038and replay} target that can record a log of the process execution, and
6039replay it later with both forward and reverse execution commands.
a2311334
EZ
6040
6041@cindex replay mode
6042When this target is in use, if the execution log includes the record
6043for the next instruction, @value{GDBN} will debug in @dfn{replay
6044mode}. In the replay mode, the inferior does not really execute code
6045instructions. Instead, all the events that normally happen during
6046code execution are taken from the execution log. While code is not
6047really executed in replay mode, the values of registers (including the
6048program counter register) and the memory of the inferior are still
8e05493c
EZ
6049changed as they normally would. Their contents are taken from the
6050execution log.
a2311334
EZ
6051
6052@cindex record mode
6053If the record for the next instruction is not in the execution log,
6054@value{GDBN} will debug in @dfn{record mode}. In this mode, the
6055inferior executes normally, and @value{GDBN} records the execution log
6056for future replay.
6057
8e05493c
EZ
6058The process record and replay target supports reverse execution
6059(@pxref{Reverse Execution}), even if the platform on which the
6060inferior runs does not. However, the reverse execution is limited in
6061this case by the range of the instructions recorded in the execution
6062log. In other words, reverse execution on platforms that don't
6063support it directly can only be done in the replay mode.
6064
6065When debugging in the reverse direction, @value{GDBN} will work in
6066replay mode as long as the execution log includes the record for the
6067previous instruction; otherwise, it will work in record mode, if the
6068platform supports reverse execution, or stop if not.
6069
a2311334
EZ
6070For architecture environments that support process record and replay,
6071@value{GDBN} provides the following commands:
53cc454a
HZ
6072
6073@table @code
6074@kindex target record
6075@kindex record
6076@kindex rec
6077@item target record
a2311334
EZ
6078This command starts the process record and replay target. The process
6079record and replay target can only debug a process that is already
6080running. Therefore, you need first to start the process with the
6081@kbd{run} or @kbd{start} commands, and then start the recording with
6082the @kbd{target record} command.
6083
6084Both @code{record} and @code{rec} are aliases of @code{target record}.
6085
6086@cindex displaced stepping, and process record and replay
6087Displaced stepping (@pxref{Maintenance Commands,, displaced stepping})
6088will be automatically disabled when process record and replay target
6089is started. That's because the process record and replay target
6090doesn't support displaced stepping.
6091
6092@cindex non-stop mode, and process record and replay
6093@cindex asynchronous execution, and process record and replay
6094If the inferior is in the non-stop mode (@pxref{Non-Stop Mode}) or in
6095the asynchronous execution mode (@pxref{Background Execution}), the
6096process record and replay target cannot be started because it doesn't
6097support these two modes.
53cc454a
HZ
6098
6099@kindex record stop
6100@kindex rec s
6101@item record stop
a2311334
EZ
6102Stop the process record and replay target. When process record and
6103replay target stops, the entire execution log will be deleted and the
6104inferior will either be terminated, or will remain in its final state.
53cc454a 6105
a2311334
EZ
6106When you stop the process record and replay target in record mode (at
6107the end of the execution log), the inferior will be stopped at the
6108next instruction that would have been recorded. In other words, if
6109you record for a while and then stop recording, the inferior process
6110will be left in the same state as if the recording never happened.
53cc454a 6111
a2311334
EZ
6112On the other hand, if the process record and replay target is stopped
6113while in replay mode (that is, not at the end of the execution log,
6114but at some earlier point), the inferior process will become ``live''
6115at that earlier state, and it will then be possible to continue the
6116usual ``live'' debugging of the process from that state.
53cc454a 6117
a2311334
EZ
6118When the inferior process exits, or @value{GDBN} detaches from it,
6119process record and replay target will automatically stop itself.
53cc454a 6120
24e933df
HZ
6121@kindex record save
6122@item record save @var{filename}
6123Save the execution log to a file @file{@var{filename}}.
6124Default filename is @file{gdb_record.@var{process_id}}, where
6125@var{process_id} is the process ID of the inferior.
6126
6127@kindex record restore
6128@item record restore @var{filename}
6129Restore the execution log from a file @file{@var{filename}}.
6130File must have been created with @code{record save}.
6131
53cc454a
HZ
6132@kindex set record insn-number-max
6133@item set record insn-number-max @var{limit}
6134Set the limit of instructions to be recorded. Default value is 200000.
6135
a2311334
EZ
6136If @var{limit} is a positive number, then @value{GDBN} will start
6137deleting instructions from the log once the number of the record
6138instructions becomes greater than @var{limit}. For every new recorded
6139instruction, @value{GDBN} will delete the earliest recorded
6140instruction to keep the number of recorded instructions at the limit.
6141(Since deleting recorded instructions loses information, @value{GDBN}
6142lets you control what happens when the limit is reached, by means of
6143the @code{stop-at-limit} option, described below.)
53cc454a 6144
a2311334
EZ
6145If @var{limit} is zero, @value{GDBN} will never delete recorded
6146instructions from the execution log. The number of recorded
6147instructions is unlimited in this case.
53cc454a
HZ
6148
6149@kindex show record insn-number-max
6150@item show record insn-number-max
a2311334 6151Show the limit of instructions to be recorded.
53cc454a
HZ
6152
6153@kindex set record stop-at-limit
a2311334
EZ
6154@item set record stop-at-limit
6155Control the behavior when the number of recorded instructions reaches
6156the limit. If ON (the default), @value{GDBN} will stop when the limit
6157is reached for the first time and ask you whether you want to stop the
6158inferior or continue running it and recording the execution log. If
6159you decide to continue recording, each new recorded instruction will
6160cause the oldest one to be deleted.
53cc454a 6161
a2311334
EZ
6162If this option is OFF, @value{GDBN} will automatically delete the
6163oldest record to make room for each new one, without asking.
53cc454a
HZ
6164
6165@kindex show record stop-at-limit
6166@item show record stop-at-limit
a2311334 6167Show the current setting of @code{stop-at-limit}.
53cc454a 6168
bb08c432
HZ
6169@kindex set record memory-query
6170@item set record memory-query
6171Control the behavior when @value{GDBN} is unable to record memory
6172changes caused by an instruction. If ON, @value{GDBN} will query
6173whether to stop the inferior in that case.
6174
6175If this option is OFF (the default), @value{GDBN} will automatically
6176ignore the effect of such instructions on memory. Later, when
6177@value{GDBN} replays this execution log, it will mark the log of this
6178instruction as not accessible, and it will not affect the replay
6179results.
6180
6181@kindex show record memory-query
6182@item show record memory-query
6183Show the current setting of @code{memory-query}.
6184
29153c24
MS
6185@kindex info record
6186@item info record
6187Show various statistics about the state of process record and its
6188in-memory execution log buffer, including:
6189
6190@itemize @bullet
6191@item
6192Whether in record mode or replay mode.
6193@item
6194Lowest recorded instruction number (counting from when the current execution log started recording instructions).
6195@item
6196Highest recorded instruction number.
6197@item
6198Current instruction about to be replayed (if in replay mode).
6199@item
6200Number of instructions contained in the execution log.
6201@item
6202Maximum number of instructions that may be contained in the execution log.
6203@end itemize
53cc454a
HZ
6204
6205@kindex record delete
6206@kindex rec del
6207@item record delete
a2311334 6208When record target runs in replay mode (``in the past''), delete the
53cc454a 6209subsequent execution log and begin to record a new execution log starting
a2311334 6210from the current address. This means you will abandon the previously
53cc454a
HZ
6211recorded ``future'' and begin recording a new ``future''.
6212@end table
6213
6214
6d2ebf8b 6215@node Stack
c906108c
SS
6216@chapter Examining the Stack
6217
6218When your program has stopped, the first thing you need to know is where it
6219stopped and how it got there.
6220
6221@cindex call stack
5d161b24
DB
6222Each time your program performs a function call, information about the call
6223is generated.
6224That information includes the location of the call in your program,
6225the arguments of the call,
c906108c 6226and the local variables of the function being called.
5d161b24 6227The information is saved in a block of data called a @dfn{stack frame}.
c906108c
SS
6228The stack frames are allocated in a region of memory called the @dfn{call
6229stack}.
6230
6231When your program stops, the @value{GDBN} commands for examining the
6232stack allow you to see all of this information.
6233
6234@cindex selected frame
6235One of the stack frames is @dfn{selected} by @value{GDBN} and many
6236@value{GDBN} commands refer implicitly to the selected frame. In
6237particular, whenever you ask @value{GDBN} for the value of a variable in
6238your program, the value is found in the selected frame. There are
6239special @value{GDBN} commands to select whichever frame you are
79a6e687 6240interested in. @xref{Selection, ,Selecting a Frame}.
c906108c
SS
6241
6242When your program stops, @value{GDBN} automatically selects the
5d161b24 6243currently executing frame and describes it briefly, similar to the
79a6e687 6244@code{frame} command (@pxref{Frame Info, ,Information about a Frame}).
c906108c
SS
6245
6246@menu
6247* Frames:: Stack frames
6248* Backtrace:: Backtraces
6249* Selection:: Selecting a frame
6250* Frame Info:: Information on a frame
c906108c
SS
6251
6252@end menu
6253
6d2ebf8b 6254@node Frames
79a6e687 6255@section Stack Frames
c906108c 6256
d4f3574e 6257@cindex frame, definition
c906108c
SS
6258@cindex stack frame
6259The call stack is divided up into contiguous pieces called @dfn{stack
6260frames}, or @dfn{frames} for short; each frame is the data associated
6261with one call to one function. The frame contains the arguments given
6262to the function, the function's local variables, and the address at
6263which the function is executing.
6264
6265@cindex initial frame
6266@cindex outermost frame
6267@cindex innermost frame
6268When your program is started, the stack has only one frame, that of the
6269function @code{main}. This is called the @dfn{initial} frame or the
6270@dfn{outermost} frame. Each time a function is called, a new frame is
6271made. Each time a function returns, the frame for that function invocation
6272is eliminated. If a function is recursive, there can be many frames for
6273the same function. The frame for the function in which execution is
6274actually occurring is called the @dfn{innermost} frame. This is the most
6275recently created of all the stack frames that still exist.
6276
6277@cindex frame pointer
6278Inside your program, stack frames are identified by their addresses. A
6279stack frame consists of many bytes, each of which has its own address; each
6280kind of computer has a convention for choosing one byte whose
6281address serves as the address of the frame. Usually this address is kept
e09f16f9
EZ
6282in a register called the @dfn{frame pointer register}
6283(@pxref{Registers, $fp}) while execution is going on in that frame.
c906108c
SS
6284
6285@cindex frame number
6286@value{GDBN} assigns numbers to all existing stack frames, starting with
6287zero for the innermost frame, one for the frame that called it,
6288and so on upward. These numbers do not really exist in your program;
6289they are assigned by @value{GDBN} to give you a way of designating stack
6290frames in @value{GDBN} commands.
6291
6d2ebf8b
SS
6292@c The -fomit-frame-pointer below perennially causes hbox overflow
6293@c underflow problems.
c906108c
SS
6294@cindex frameless execution
6295Some compilers provide a way to compile functions so that they operate
e22ea452 6296without stack frames. (For example, the @value{NGCC} option
474c8240 6297@smallexample
6d2ebf8b 6298@samp{-fomit-frame-pointer}
474c8240 6299@end smallexample
6d2ebf8b 6300generates functions without a frame.)
c906108c
SS
6301This is occasionally done with heavily used library functions to save
6302the frame setup time. @value{GDBN} has limited facilities for dealing
6303with these function invocations. If the innermost function invocation
6304has no stack frame, @value{GDBN} nevertheless regards it as though
6305it had a separate frame, which is numbered zero as usual, allowing
6306correct tracing of the function call chain. However, @value{GDBN} has
6307no provision for frameless functions elsewhere in the stack.
6308
6309@table @code
d4f3574e 6310@kindex frame@r{, command}
41afff9a 6311@cindex current stack frame
c906108c 6312@item frame @var{args}
5d161b24 6313The @code{frame} command allows you to move from one stack frame to another,
c906108c 6314and to print the stack frame you select. @var{args} may be either the
5d161b24
DB
6315address of the frame or the stack frame number. Without an argument,
6316@code{frame} prints the current stack frame.
c906108c
SS
6317
6318@kindex select-frame
41afff9a 6319@cindex selecting frame silently
c906108c
SS
6320@item select-frame
6321The @code{select-frame} command allows you to move from one stack frame
6322to another without printing the frame. This is the silent version of
6323@code{frame}.
6324@end table
6325
6d2ebf8b 6326@node Backtrace
c906108c
SS
6327@section Backtraces
6328
09d4efe1
EZ
6329@cindex traceback
6330@cindex call stack traces
c906108c
SS
6331A backtrace is a summary of how your program got where it is. It shows one
6332line per frame, for many frames, starting with the currently executing
6333frame (frame zero), followed by its caller (frame one), and on up the
6334stack.
6335
6336@table @code
6337@kindex backtrace
41afff9a 6338@kindex bt @r{(@code{backtrace})}
c906108c
SS
6339@item backtrace
6340@itemx bt
6341Print a backtrace of the entire stack: one line per frame for all
6342frames in the stack.
6343
6344You can stop the backtrace at any time by typing the system interrupt
c8aa23ab 6345character, normally @kbd{Ctrl-c}.
c906108c
SS
6346
6347@item backtrace @var{n}
6348@itemx bt @var{n}
6349Similar, but print only the innermost @var{n} frames.
6350
6351@item backtrace -@var{n}
6352@itemx bt -@var{n}
6353Similar, but print only the outermost @var{n} frames.
0f061b69
NR
6354
6355@item backtrace full
0f061b69 6356@itemx bt full
dd74f6ae
NR
6357@itemx bt full @var{n}
6358@itemx bt full -@var{n}
e7109c7e 6359Print the values of the local variables also. @var{n} specifies the
286ba84d 6360number of frames to print, as described above.
c906108c
SS
6361@end table
6362
6363@kindex where
6364@kindex info stack
c906108c
SS
6365The names @code{where} and @code{info stack} (abbreviated @code{info s})
6366are additional aliases for @code{backtrace}.
6367
839c27b7
EZ
6368@cindex multiple threads, backtrace
6369In a multi-threaded program, @value{GDBN} by default shows the
6370backtrace only for the current thread. To display the backtrace for
6371several or all of the threads, use the command @code{thread apply}
6372(@pxref{Threads, thread apply}). For example, if you type @kbd{thread
6373apply all backtrace}, @value{GDBN} will display the backtrace for all
6374the threads; this is handy when you debug a core dump of a
6375multi-threaded program.
6376
c906108c
SS
6377Each line in the backtrace shows the frame number and the function name.
6378The program counter value is also shown---unless you use @code{set
6379print address off}. The backtrace also shows the source file name and
6380line number, as well as the arguments to the function. The program
6381counter value is omitted if it is at the beginning of the code for that
6382line number.
6383
6384Here is an example of a backtrace. It was made with the command
6385@samp{bt 3}, so it shows the innermost three frames.
6386
6387@smallexample
6388@group
5d161b24 6389#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
c906108c 6390 at builtin.c:993
4f5376b2 6391#1 0x6e38 in expand_macro (sym=0x2b600, data=...) at macro.c:242
c906108c
SS
6392#2 0x6840 in expand_token (obs=0x0, t=177664, td=0xf7fffb08)
6393 at macro.c:71
6394(More stack frames follow...)
6395@end group
6396@end smallexample
6397
6398@noindent
6399The display for frame zero does not begin with a program counter
6400value, indicating that your program has stopped at the beginning of the
6401code for line @code{993} of @code{builtin.c}.
6402
4f5376b2
JB
6403@noindent
6404The value of parameter @code{data} in frame 1 has been replaced by
6405@code{@dots{}}. By default, @value{GDBN} prints the value of a parameter
6406only if it is a scalar (integer, pointer, enumeration, etc). See command
6407@kbd{set print frame-arguments} in @ref{Print Settings} for more details
6408on how to configure the way function parameter values are printed.
6409
585fdaa1 6410@cindex optimized out, in backtrace
18999be5
EZ
6411@cindex function call arguments, optimized out
6412If your program was compiled with optimizations, some compilers will
6413optimize away arguments passed to functions if those arguments are
6414never used after the call. Such optimizations generate code that
6415passes arguments through registers, but doesn't store those arguments
6416in the stack frame. @value{GDBN} has no way of displaying such
6417arguments in stack frames other than the innermost one. Here's what
6418such a backtrace might look like:
6419
6420@smallexample
6421@group
6422#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
6423 at builtin.c:993
585fdaa1
PA
6424#1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242
6425#2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08)
18999be5
EZ
6426 at macro.c:71
6427(More stack frames follow...)
6428@end group
6429@end smallexample
6430
6431@noindent
6432The values of arguments that were not saved in their stack frames are
585fdaa1 6433shown as @samp{<optimized out>}.
18999be5
EZ
6434
6435If you need to display the values of such optimized-out arguments,
6436either deduce that from other variables whose values depend on the one
6437you are interested in, or recompile without optimizations.
6438
a8f24a35
EZ
6439@cindex backtrace beyond @code{main} function
6440@cindex program entry point
6441@cindex startup code, and backtrace
25d29d70
AC
6442Most programs have a standard user entry point---a place where system
6443libraries and startup code transition into user code. For C this is
d416eeec
EZ
6444@code{main}@footnote{
6445Note that embedded programs (the so-called ``free-standing''
6446environment) are not required to have a @code{main} function as the
6447entry point. They could even have multiple entry points.}.
6448When @value{GDBN} finds the entry function in a backtrace
25d29d70
AC
6449it will terminate the backtrace, to avoid tracing into highly
6450system-specific (and generally uninteresting) code.
6451
6452If you need to examine the startup code, or limit the number of levels
6453in a backtrace, you can change this behavior:
95f90d25
DJ
6454
6455@table @code
25d29d70
AC
6456@item set backtrace past-main
6457@itemx set backtrace past-main on
4644b6e3 6458@kindex set backtrace
25d29d70
AC
6459Backtraces will continue past the user entry point.
6460
6461@item set backtrace past-main off
95f90d25
DJ
6462Backtraces will stop when they encounter the user entry point. This is the
6463default.
6464
25d29d70 6465@item show backtrace past-main
4644b6e3 6466@kindex show backtrace
25d29d70
AC
6467Display the current user entry point backtrace policy.
6468
2315ffec
RC
6469@item set backtrace past-entry
6470@itemx set backtrace past-entry on
a8f24a35 6471Backtraces will continue past the internal entry point of an application.
2315ffec
RC
6472This entry point is encoded by the linker when the application is built,
6473and is likely before the user entry point @code{main} (or equivalent) is called.
6474
6475@item set backtrace past-entry off
d3e8051b 6476Backtraces will stop when they encounter the internal entry point of an
2315ffec
RC
6477application. This is the default.
6478
6479@item show backtrace past-entry
6480Display the current internal entry point backtrace policy.
6481
25d29d70
AC
6482@item set backtrace limit @var{n}
6483@itemx set backtrace limit 0
6484@cindex backtrace limit
6485Limit the backtrace to @var{n} levels. A value of zero means
6486unlimited.
95f90d25 6487
25d29d70
AC
6488@item show backtrace limit
6489Display the current limit on backtrace levels.
95f90d25
DJ
6490@end table
6491
6d2ebf8b 6492@node Selection
79a6e687 6493@section Selecting a Frame
c906108c
SS
6494
6495Most commands for examining the stack and other data in your program work on
6496whichever stack frame is selected at the moment. Here are the commands for
6497selecting a stack frame; all of them finish by printing a brief description
6498of the stack frame just selected.
6499
6500@table @code
d4f3574e 6501@kindex frame@r{, selecting}
41afff9a 6502@kindex f @r{(@code{frame})}
c906108c
SS
6503@item frame @var{n}
6504@itemx f @var{n}
6505Select frame number @var{n}. Recall that frame zero is the innermost
6506(currently executing) frame, frame one is the frame that called the
6507innermost one, and so on. The highest-numbered frame is the one for
6508@code{main}.
6509
6510@item frame @var{addr}
6511@itemx f @var{addr}
6512Select the frame at address @var{addr}. This is useful mainly if the
6513chaining of stack frames has been damaged by a bug, making it
6514impossible for @value{GDBN} to assign numbers properly to all frames. In
6515addition, this can be useful when your program has multiple stacks and
6516switches between them.
6517
c906108c
SS
6518On the SPARC architecture, @code{frame} needs two addresses to
6519select an arbitrary frame: a frame pointer and a stack pointer.
6520
eb17f351 6521On the @acronym{MIPS} and Alpha architecture, it needs two addresses: a stack
c906108c
SS
6522pointer and a program counter.
6523
6524On the 29k architecture, it needs three addresses: a register stack
6525pointer, a program counter, and a memory stack pointer.
c906108c
SS
6526
6527@kindex up
6528@item up @var{n}
6529Move @var{n} frames up the stack. For positive numbers @var{n}, this
6530advances toward the outermost frame, to higher frame numbers, to frames
6531that have existed longer. @var{n} defaults to one.
6532
6533@kindex down
41afff9a 6534@kindex do @r{(@code{down})}
c906108c
SS
6535@item down @var{n}
6536Move @var{n} frames down the stack. For positive numbers @var{n}, this
6537advances toward the innermost frame, to lower frame numbers, to frames
6538that were created more recently. @var{n} defaults to one. You may
6539abbreviate @code{down} as @code{do}.
6540@end table
6541
6542All of these commands end by printing two lines of output describing the
6543frame. The first line shows the frame number, the function name, the
6544arguments, and the source file and line number of execution in that
5d161b24 6545frame. The second line shows the text of that source line.
c906108c
SS
6546
6547@need 1000
6548For example:
6549
6550@smallexample
6551@group
6552(@value{GDBP}) up
6553#1 0x22f0 in main (argc=1, argv=0xf7fffbf4, env=0xf7fffbfc)
6554 at env.c:10
655510 read_input_file (argv[i]);
6556@end group
6557@end smallexample
6558
6559After such a printout, the @code{list} command with no arguments
6560prints ten lines centered on the point of execution in the frame.
87885426
FN
6561You can also edit the program at the point of execution with your favorite
6562editing program by typing @code{edit}.
79a6e687 6563@xref{List, ,Printing Source Lines},
87885426 6564for details.
c906108c
SS
6565
6566@table @code
6567@kindex down-silently
6568@kindex up-silently
6569@item up-silently @var{n}
6570@itemx down-silently @var{n}
6571These two commands are variants of @code{up} and @code{down},
6572respectively; they differ in that they do their work silently, without
6573causing display of the new frame. They are intended primarily for use
6574in @value{GDBN} command scripts, where the output might be unnecessary and
6575distracting.
6576@end table
6577
6d2ebf8b 6578@node Frame Info
79a6e687 6579@section Information About a Frame
c906108c
SS
6580
6581There are several other commands to print information about the selected
6582stack frame.
6583
6584@table @code
6585@item frame
6586@itemx f
6587When used without any argument, this command does not change which
6588frame is selected, but prints a brief description of the currently
6589selected stack frame. It can be abbreviated @code{f}. With an
6590argument, this command is used to select a stack frame.
79a6e687 6591@xref{Selection, ,Selecting a Frame}.
c906108c
SS
6592
6593@kindex info frame
41afff9a 6594@kindex info f @r{(@code{info frame})}
c906108c
SS
6595@item info frame
6596@itemx info f
6597This command prints a verbose description of the selected stack frame,
6598including:
6599
6600@itemize @bullet
5d161b24
DB
6601@item
6602the address of the frame
c906108c
SS
6603@item
6604the address of the next frame down (called by this frame)
6605@item
6606the address of the next frame up (caller of this frame)
6607@item
6608the language in which the source code corresponding to this frame is written
6609@item
6610the address of the frame's arguments
6611@item
d4f3574e
SS
6612the address of the frame's local variables
6613@item
c906108c
SS
6614the program counter saved in it (the address of execution in the caller frame)
6615@item
6616which registers were saved in the frame
6617@end itemize
6618
6619@noindent The verbose description is useful when
6620something has gone wrong that has made the stack format fail to fit
6621the usual conventions.
6622
6623@item info frame @var{addr}
6624@itemx info f @var{addr}
6625Print a verbose description of the frame at address @var{addr}, without
6626selecting that frame. The selected frame remains unchanged by this
6627command. This requires the same kind of address (more than one for some
6628architectures) that you specify in the @code{frame} command.
79a6e687 6629@xref{Selection, ,Selecting a Frame}.
c906108c
SS
6630
6631@kindex info args
6632@item info args
6633Print the arguments of the selected frame, each on a separate line.
6634
6635@item info locals
6636@kindex info locals
6637Print the local variables of the selected frame, each on a separate
6638line. These are all variables (declared either static or automatic)
6639accessible at the point of execution of the selected frame.
6640
c906108c
SS
6641@end table
6642
c906108c 6643
6d2ebf8b 6644@node Source
c906108c
SS
6645@chapter Examining Source Files
6646
6647@value{GDBN} can print parts of your program's source, since the debugging
6648information recorded in the program tells @value{GDBN} what source files were
6649used to build it. When your program stops, @value{GDBN} spontaneously prints
6650the line where it stopped. Likewise, when you select a stack frame
79a6e687 6651(@pxref{Selection, ,Selecting a Frame}), @value{GDBN} prints the line where
c906108c
SS
6652execution in that frame has stopped. You can print other portions of
6653source files by explicit command.
6654
7a292a7a 6655If you use @value{GDBN} through its @sc{gnu} Emacs interface, you may
d4f3574e 6656prefer to use Emacs facilities to view source; see @ref{Emacs, ,Using
7a292a7a 6657@value{GDBN} under @sc{gnu} Emacs}.
c906108c
SS
6658
6659@menu
6660* List:: Printing source lines
2a25a5ba 6661* Specify Location:: How to specify code locations
87885426 6662* Edit:: Editing source files
c906108c 6663* Search:: Searching source files
c906108c
SS
6664* Source Path:: Specifying source directories
6665* Machine Code:: Source and machine code
6666@end menu
6667
6d2ebf8b 6668@node List
79a6e687 6669@section Printing Source Lines
c906108c
SS
6670
6671@kindex list
41afff9a 6672@kindex l @r{(@code{list})}
c906108c 6673To print lines from a source file, use the @code{list} command
5d161b24 6674(abbreviated @code{l}). By default, ten lines are printed.
2a25a5ba
EZ
6675There are several ways to specify what part of the file you want to
6676print; see @ref{Specify Location}, for the full list.
c906108c
SS
6677
6678Here are the forms of the @code{list} command most commonly used:
6679
6680@table @code
6681@item list @var{linenum}
6682Print lines centered around line number @var{linenum} in the
6683current source file.
6684
6685@item list @var{function}
6686Print lines centered around the beginning of function
6687@var{function}.
6688
6689@item list
6690Print more lines. If the last lines printed were printed with a
6691@code{list} command, this prints lines following the last lines
6692printed; however, if the last line printed was a solitary line printed
6693as part of displaying a stack frame (@pxref{Stack, ,Examining the
6694Stack}), this prints lines centered around that line.
6695
6696@item list -
6697Print lines just before the lines last printed.
6698@end table
6699
9c16f35a 6700@cindex @code{list}, how many lines to display
c906108c
SS
6701By default, @value{GDBN} prints ten source lines with any of these forms of
6702the @code{list} command. You can change this using @code{set listsize}:
6703
6704@table @code
6705@kindex set listsize
6706@item set listsize @var{count}
6707Make the @code{list} command display @var{count} source lines (unless
6708the @code{list} argument explicitly specifies some other number).
6709
6710@kindex show listsize
6711@item show listsize
6712Display the number of lines that @code{list} prints.
6713@end table
6714
6715Repeating a @code{list} command with @key{RET} discards the argument,
6716so it is equivalent to typing just @code{list}. This is more useful
6717than listing the same lines again. An exception is made for an
6718argument of @samp{-}; that argument is preserved in repetition so that
6719each repetition moves up in the source file.
6720
c906108c
SS
6721In general, the @code{list} command expects you to supply zero, one or two
6722@dfn{linespecs}. Linespecs specify source lines; there are several ways
2a25a5ba
EZ
6723of writing them (@pxref{Specify Location}), but the effect is always
6724to specify some source line.
6725
c906108c
SS
6726Here is a complete description of the possible arguments for @code{list}:
6727
6728@table @code
6729@item list @var{linespec}
6730Print lines centered around the line specified by @var{linespec}.
6731
6732@item list @var{first},@var{last}
6733Print lines from @var{first} to @var{last}. Both arguments are
2a25a5ba
EZ
6734linespecs. When a @code{list} command has two linespecs, and the
6735source file of the second linespec is omitted, this refers to
6736the same source file as the first linespec.
c906108c
SS
6737
6738@item list ,@var{last}
6739Print lines ending with @var{last}.
6740
6741@item list @var{first},
6742Print lines starting with @var{first}.
6743
6744@item list +
6745Print lines just after the lines last printed.
6746
6747@item list -
6748Print lines just before the lines last printed.
6749
6750@item list
6751As described in the preceding table.
6752@end table
6753
2a25a5ba
EZ
6754@node Specify Location
6755@section Specifying a Location
6756@cindex specifying location
6757@cindex linespec
c906108c 6758
2a25a5ba
EZ
6759Several @value{GDBN} commands accept arguments that specify a location
6760of your program's code. Since @value{GDBN} is a source-level
6761debugger, a location usually specifies some line in the source code;
6762for that reason, locations are also known as @dfn{linespecs}.
c906108c 6763
2a25a5ba
EZ
6764Here are all the different ways of specifying a code location that
6765@value{GDBN} understands:
c906108c 6766
2a25a5ba
EZ
6767@table @code
6768@item @var{linenum}
6769Specifies the line number @var{linenum} of the current source file.
c906108c 6770
2a25a5ba
EZ
6771@item -@var{offset}
6772@itemx +@var{offset}
6773Specifies the line @var{offset} lines before or after the @dfn{current
6774line}. For the @code{list} command, the current line is the last one
6775printed; for the breakpoint commands, this is the line at which
6776execution stopped in the currently selected @dfn{stack frame}
6777(@pxref{Frames, ,Frames}, for a description of stack frames.) When
6778used as the second of the two linespecs in a @code{list} command,
6779this specifies the line @var{offset} lines up or down from the first
6780linespec.
6781
6782@item @var{filename}:@var{linenum}
6783Specifies the line @var{linenum} in the source file @var{filename}.
4aac40c8
TT
6784If @var{filename} is a relative file name, then it will match any
6785source file name with the same trailing components. For example, if
6786@var{filename} is @samp{gcc/expr.c}, then it will match source file
6787name of @file{/build/trunk/gcc/expr.c}, but not
6788@file{/build/trunk/libcpp/expr.c} or @file{/build/trunk/gcc/x-expr.c}.
c906108c
SS
6789
6790@item @var{function}
6791Specifies the line that begins the body of the function @var{function}.
2a25a5ba 6792For example, in C, this is the line with the open brace.
c906108c 6793
9ef07c8c
TT
6794@item @var{function}:@var{label}
6795Specifies the line where @var{label} appears in @var{function}.
6796
c906108c 6797@item @var{filename}:@var{function}
2a25a5ba
EZ
6798Specifies the line that begins the body of the function @var{function}
6799in the file @var{filename}. You only need the file name with a
6800function name to avoid ambiguity when there are identically named
6801functions in different source files.
c906108c 6802
0f5238ed
TT
6803@item @var{label}
6804Specifies the line at which the label named @var{label} appears.
6805@value{GDBN} searches for the label in the function corresponding to
6806the currently selected stack frame. If there is no current selected
6807stack frame (for instance, if the inferior is not running), then
6808@value{GDBN} will not search for a label.
6809
c906108c 6810@item *@var{address}
2a25a5ba
EZ
6811Specifies the program address @var{address}. For line-oriented
6812commands, such as @code{list} and @code{edit}, this specifies a source
6813line that contains @var{address}. For @code{break} and other
6814breakpoint oriented commands, this can be used to set breakpoints in
6815parts of your program which do not have debugging information or
6816source files.
6817
6818Here @var{address} may be any expression valid in the current working
6819language (@pxref{Languages, working language}) that specifies a code
5fa54e5d
EZ
6820address. In addition, as a convenience, @value{GDBN} extends the
6821semantics of expressions used in locations to cover the situations
6822that frequently happen during debugging. Here are the various forms
6823of @var{address}:
2a25a5ba
EZ
6824
6825@table @code
6826@item @var{expression}
6827Any expression valid in the current working language.
6828
6829@item @var{funcaddr}
6830An address of a function or procedure derived from its name. In C,
6831C@t{++}, Java, Objective-C, Fortran, minimal, and assembly, this is
6832simply the function's name @var{function} (and actually a special case
6833of a valid expression). In Pascal and Modula-2, this is
6834@code{&@var{function}}. In Ada, this is @code{@var{function}'Address}
6835(although the Pascal form also works).
6836
6837This form specifies the address of the function's first instruction,
6838before the stack frame and arguments have been set up.
6839
6840@item '@var{filename}'::@var{funcaddr}
6841Like @var{funcaddr} above, but also specifies the name of the source
6842file explicitly. This is useful if the name of the function does not
6843specify the function unambiguously, e.g., if there are several
6844functions with identical names in different source files.
c906108c
SS
6845@end table
6846
62e5f89c
SDJ
6847@cindex breakpoint at static probe point
6848@item -pstap|-probe-stap @r{[}@var{objfile}:@r{[}@var{provider}:@r{]}@r{]}@var{name}
6849The @sc{gnu}/Linux tool @code{SystemTap} provides a way for
6850applications to embed static probes. @xref{Static Probe Points}, for more
6851information on finding and using static probes. This form of linespec
6852specifies the location of such a static probe.
6853
6854If @var{objfile} is given, only probes coming from that shared library
6855or executable matching @var{objfile} as a regular expression are considered.
6856If @var{provider} is given, then only probes from that provider are considered.
6857If several probes match the spec, @value{GDBN} will insert a breakpoint at
6858each one of those probes.
6859
2a25a5ba
EZ
6860@end table
6861
6862
87885426 6863@node Edit
79a6e687 6864@section Editing Source Files
87885426
FN
6865@cindex editing source files
6866
6867@kindex edit
6868@kindex e @r{(@code{edit})}
6869To edit the lines in a source file, use the @code{edit} command.
6870The editing program of your choice
6871is invoked with the current line set to
6872the active line in the program.
6873Alternatively, there are several ways to specify what part of the file you
2a25a5ba 6874want to print if you want to see other parts of the program:
87885426
FN
6875
6876@table @code
2a25a5ba
EZ
6877@item edit @var{location}
6878Edit the source file specified by @code{location}. Editing starts at
6879that @var{location}, e.g., at the specified source line of the
6880specified file. @xref{Specify Location}, for all the possible forms
6881of the @var{location} argument; here are the forms of the @code{edit}
6882command most commonly used:
87885426 6883
2a25a5ba 6884@table @code
87885426
FN
6885@item edit @var{number}
6886Edit the current source file with @var{number} as the active line number.
6887
6888@item edit @var{function}
6889Edit the file containing @var{function} at the beginning of its definition.
2a25a5ba 6890@end table
87885426 6891
87885426
FN
6892@end table
6893
79a6e687 6894@subsection Choosing your Editor
87885426
FN
6895You can customize @value{GDBN} to use any editor you want
6896@footnote{
6897The only restriction is that your editor (say @code{ex}), recognizes the
6898following command-line syntax:
10998722 6899@smallexample
87885426 6900ex +@var{number} file
10998722 6901@end smallexample
15387254
EZ
6902The optional numeric value +@var{number} specifies the number of the line in
6903the file where to start editing.}.
6904By default, it is @file{@value{EDITOR}}, but you can change this
10998722
AC
6905by setting the environment variable @code{EDITOR} before using
6906@value{GDBN}. For example, to configure @value{GDBN} to use the
6907@code{vi} editor, you could use these commands with the @code{sh} shell:
6908@smallexample
87885426
FN
6909EDITOR=/usr/bin/vi
6910export EDITOR
15387254 6911gdb @dots{}
10998722 6912@end smallexample
87885426 6913or in the @code{csh} shell,
10998722 6914@smallexample
87885426 6915setenv EDITOR /usr/bin/vi
15387254 6916gdb @dots{}
10998722 6917@end smallexample
87885426 6918
6d2ebf8b 6919@node Search
79a6e687 6920@section Searching Source Files
15387254 6921@cindex searching source files
c906108c
SS
6922
6923There are two commands for searching through the current source file for a
6924regular expression.
6925
6926@table @code
6927@kindex search
6928@kindex forward-search
6929@item forward-search @var{regexp}
6930@itemx search @var{regexp}
6931The command @samp{forward-search @var{regexp}} checks each line,
6932starting with the one following the last line listed, for a match for
5d161b24 6933@var{regexp}. It lists the line that is found. You can use the
c906108c
SS
6934synonym @samp{search @var{regexp}} or abbreviate the command name as
6935@code{fo}.
6936
09d4efe1 6937@kindex reverse-search
c906108c
SS
6938@item reverse-search @var{regexp}
6939The command @samp{reverse-search @var{regexp}} checks each line, starting
6940with the one before the last line listed and going backward, for a match
6941for @var{regexp}. It lists the line that is found. You can abbreviate
6942this command as @code{rev}.
6943@end table
c906108c 6944
6d2ebf8b 6945@node Source Path
79a6e687 6946@section Specifying Source Directories
c906108c
SS
6947
6948@cindex source path
6949@cindex directories for source files
6950Executable programs sometimes do not record the directories of the source
6951files from which they were compiled, just the names. Even when they do,
6952the directories could be moved between the compilation and your debugging
6953session. @value{GDBN} has a list of directories to search for source files;
6954this is called the @dfn{source path}. Each time @value{GDBN} wants a source file,
6955it tries all the directories in the list, in the order they are present
0b66e38c
EZ
6956in the list, until it finds a file with the desired name.
6957
6958For example, suppose an executable references the file
6959@file{/usr/src/foo-1.0/lib/foo.c}, and our source path is
6960@file{/mnt/cross}. The file is first looked up literally; if this
6961fails, @file{/mnt/cross/usr/src/foo-1.0/lib/foo.c} is tried; if this
6962fails, @file{/mnt/cross/foo.c} is opened; if this fails, an error
6963message is printed. @value{GDBN} does not look up the parts of the
6964source file name, such as @file{/mnt/cross/src/foo-1.0/lib/foo.c}.
6965Likewise, the subdirectories of the source path are not searched: if
6966the source path is @file{/mnt/cross}, and the binary refers to
6967@file{foo.c}, @value{GDBN} would not find it under
6968@file{/mnt/cross/usr/src/foo-1.0/lib}.
6969
6970Plain file names, relative file names with leading directories, file
6971names containing dots, etc.@: are all treated as described above; for
6972instance, if the source path is @file{/mnt/cross}, and the source file
6973is recorded as @file{../lib/foo.c}, @value{GDBN} would first try
6974@file{../lib/foo.c}, then @file{/mnt/cross/../lib/foo.c}, and after
6975that---@file{/mnt/cross/foo.c}.
6976
6977Note that the executable search path is @emph{not} used to locate the
cd852561 6978source files.
c906108c
SS
6979
6980Whenever you reset or rearrange the source path, @value{GDBN} clears out
6981any information it has cached about where source files are found and where
6982each line is in the file.
6983
6984@kindex directory
6985@kindex dir
d4f3574e
SS
6986When you start @value{GDBN}, its source path includes only @samp{cdir}
6987and @samp{cwd}, in that order.
c906108c
SS
6988To add other directories, use the @code{directory} command.
6989
4b505b12
AS
6990The search path is used to find both program source files and @value{GDBN}
6991script files (read using the @samp{-command} option and @samp{source} command).
6992
30daae6c
JB
6993In addition to the source path, @value{GDBN} provides a set of commands
6994that manage a list of source path substitution rules. A @dfn{substitution
6995rule} specifies how to rewrite source directories stored in the program's
6996debug information in case the sources were moved to a different
6997directory between compilation and debugging. A rule is made of
6998two strings, the first specifying what needs to be rewritten in
6999the path, and the second specifying how it should be rewritten.
7000In @ref{set substitute-path}, we name these two parts @var{from} and
7001@var{to} respectively. @value{GDBN} does a simple string replacement
7002of @var{from} with @var{to} at the start of the directory part of the
7003source file name, and uses that result instead of the original file
7004name to look up the sources.
7005
7006Using the previous example, suppose the @file{foo-1.0} tree has been
7007moved from @file{/usr/src} to @file{/mnt/cross}, then you can tell
3f94c067 7008@value{GDBN} to replace @file{/usr/src} in all source path names with
30daae6c
JB
7009@file{/mnt/cross}. The first lookup will then be
7010@file{/mnt/cross/foo-1.0/lib/foo.c} in place of the original location
7011of @file{/usr/src/foo-1.0/lib/foo.c}. To define a source path
7012substitution rule, use the @code{set substitute-path} command
7013(@pxref{set substitute-path}).
7014
7015To avoid unexpected substitution results, a rule is applied only if the
7016@var{from} part of the directory name ends at a directory separator.
7017For instance, a rule substituting @file{/usr/source} into
7018@file{/mnt/cross} will be applied to @file{/usr/source/foo-1.0} but
7019not to @file{/usr/sourceware/foo-2.0}. And because the substitution
d3e8051b 7020is applied only at the beginning of the directory name, this rule will
30daae6c
JB
7021not be applied to @file{/root/usr/source/baz.c} either.
7022
7023In many cases, you can achieve the same result using the @code{directory}
7024command. However, @code{set substitute-path} can be more efficient in
7025the case where the sources are organized in a complex tree with multiple
7026subdirectories. With the @code{directory} command, you need to add each
7027subdirectory of your project. If you moved the entire tree while
7028preserving its internal organization, then @code{set substitute-path}
7029allows you to direct the debugger to all the sources with one single
7030command.
7031
7032@code{set substitute-path} is also more than just a shortcut command.
7033The source path is only used if the file at the original location no
7034longer exists. On the other hand, @code{set substitute-path} modifies
7035the debugger behavior to look at the rewritten location instead. So, if
7036for any reason a source file that is not relevant to your executable is
7037located at the original location, a substitution rule is the only
3f94c067 7038method available to point @value{GDBN} at the new location.
30daae6c 7039
29b0e8a2
JM
7040@cindex @samp{--with-relocated-sources}
7041@cindex default source path substitution
7042You can configure a default source path substitution rule by
7043configuring @value{GDBN} with the
7044@samp{--with-relocated-sources=@var{dir}} option. The @var{dir}
7045should be the name of a directory under @value{GDBN}'s configured
7046prefix (set with @samp{--prefix} or @samp{--exec-prefix}), and
7047directory names in debug information under @var{dir} will be adjusted
7048automatically if the installed @value{GDBN} is moved to a new
7049location. This is useful if @value{GDBN}, libraries or executables
7050with debug information and corresponding source code are being moved
7051together.
7052
c906108c
SS
7053@table @code
7054@item directory @var{dirname} @dots{}
7055@item dir @var{dirname} @dots{}
7056Add directory @var{dirname} to the front of the source path. Several
d4f3574e
SS
7057directory names may be given to this command, separated by @samp{:}
7058(@samp{;} on MS-DOS and MS-Windows, where @samp{:} usually appears as
7059part of absolute file names) or
c906108c
SS
7060whitespace. You may specify a directory that is already in the source
7061path; this moves it forward, so @value{GDBN} searches it sooner.
7062
7063@kindex cdir
7064@kindex cwd
41afff9a 7065@vindex $cdir@r{, convenience variable}
d3e8051b 7066@vindex $cwd@r{, convenience variable}
c906108c
SS
7067@cindex compilation directory
7068@cindex current directory
7069@cindex working directory
7070@cindex directory, current
7071@cindex directory, compilation
7072You can use the string @samp{$cdir} to refer to the compilation
7073directory (if one is recorded), and @samp{$cwd} to refer to the current
7074working directory. @samp{$cwd} is not the same as @samp{.}---the former
7075tracks the current working directory as it changes during your @value{GDBN}
7076session, while the latter is immediately expanded to the current
7077directory at the time you add an entry to the source path.
7078
7079@item directory
cd852561 7080Reset the source path to its default value (@samp{$cdir:$cwd} on Unix systems). This requires confirmation.
c906108c
SS
7081
7082@c RET-repeat for @code{directory} is explicitly disabled, but since
7083@c repeating it would be a no-op we do not say that. (thanks to RMS)
7084
99e7ae30
DE
7085@item set directories @var{path-list}
7086@kindex set directories
7087Set the source path to @var{path-list}.
7088@samp{$cdir:$cwd} are added if missing.
7089
c906108c
SS
7090@item show directories
7091@kindex show directories
7092Print the source path: show which directories it contains.
30daae6c
JB
7093
7094@anchor{set substitute-path}
7095@item set substitute-path @var{from} @var{to}
7096@kindex set substitute-path
7097Define a source path substitution rule, and add it at the end of the
7098current list of existing substitution rules. If a rule with the same
7099@var{from} was already defined, then the old rule is also deleted.
7100
7101For example, if the file @file{/foo/bar/baz.c} was moved to
7102@file{/mnt/cross/baz.c}, then the command
7103
7104@smallexample
7105(@value{GDBP}) set substitute-path /usr/src /mnt/cross
7106@end smallexample
7107
7108@noindent
7109will tell @value{GDBN} to replace @samp{/usr/src} with
7110@samp{/mnt/cross}, which will allow @value{GDBN} to find the file
7111@file{baz.c} even though it was moved.
7112
7113In the case when more than one substitution rule have been defined,
7114the rules are evaluated one by one in the order where they have been
7115defined. The first one matching, if any, is selected to perform
7116the substitution.
7117
7118For instance, if we had entered the following commands:
7119
7120@smallexample
7121(@value{GDBP}) set substitute-path /usr/src/include /mnt/include
7122(@value{GDBP}) set substitute-path /usr/src /mnt/src
7123@end smallexample
7124
7125@noindent
7126@value{GDBN} would then rewrite @file{/usr/src/include/defs.h} into
7127@file{/mnt/include/defs.h} by using the first rule. However, it would
7128use the second rule to rewrite @file{/usr/src/lib/foo.c} into
7129@file{/mnt/src/lib/foo.c}.
7130
7131
7132@item unset substitute-path [path]
7133@kindex unset substitute-path
7134If a path is specified, search the current list of substitution rules
7135for a rule that would rewrite that path. Delete that rule if found.
7136A warning is emitted by the debugger if no rule could be found.
7137
7138If no path is specified, then all substitution rules are deleted.
7139
7140@item show substitute-path [path]
7141@kindex show substitute-path
7142If a path is specified, then print the source path substitution rule
7143which would rewrite that path, if any.
7144
7145If no path is specified, then print all existing source path substitution
7146rules.
7147
c906108c
SS
7148@end table
7149
7150If your source path is cluttered with directories that are no longer of
7151interest, @value{GDBN} may sometimes cause confusion by finding the wrong
7152versions of source. You can correct the situation as follows:
7153
7154@enumerate
7155@item
cd852561 7156Use @code{directory} with no argument to reset the source path to its default value.
c906108c
SS
7157
7158@item
7159Use @code{directory} with suitable arguments to reinstall the
7160directories you want in the source path. You can add all the
7161directories in one command.
7162@end enumerate
7163
6d2ebf8b 7164@node Machine Code
79a6e687 7165@section Source and Machine Code
15387254 7166@cindex source line and its code address
c906108c
SS
7167
7168You can use the command @code{info line} to map source lines to program
7169addresses (and vice versa), and the command @code{disassemble} to display
91440f57
HZ
7170a range of addresses as machine instructions. You can use the command
7171@code{set disassemble-next-line} to set whether to disassemble next
7172source line when execution stops. When run under @sc{gnu} Emacs
d4f3574e 7173mode, the @code{info line} command causes the arrow to point to the
5d161b24 7174line specified. Also, @code{info line} prints addresses in symbolic form as
c906108c
SS
7175well as hex.
7176
7177@table @code
7178@kindex info line
7179@item info line @var{linespec}
7180Print the starting and ending addresses of the compiled code for
7181source line @var{linespec}. You can specify source lines in any of
2a25a5ba 7182the ways documented in @ref{Specify Location}.
c906108c
SS
7183@end table
7184
7185For example, we can use @code{info line} to discover the location of
7186the object code for the first line of function
7187@code{m4_changequote}:
7188
d4f3574e
SS
7189@c FIXME: I think this example should also show the addresses in
7190@c symbolic form, as they usually would be displayed.
c906108c 7191@smallexample
96a2c332 7192(@value{GDBP}) info line m4_changequote
c906108c
SS
7193Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
7194@end smallexample
7195
7196@noindent
15387254 7197@cindex code address and its source line
c906108c
SS
7198We can also inquire (using @code{*@var{addr}} as the form for
7199@var{linespec}) what source line covers a particular address:
7200@smallexample
7201(@value{GDBP}) info line *0x63ff
7202Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
7203@end smallexample
7204
7205@cindex @code{$_} and @code{info line}
15387254 7206@cindex @code{x} command, default address
41afff9a 7207@kindex x@r{(examine), and} info line
c906108c
SS
7208After @code{info line}, the default address for the @code{x} command
7209is changed to the starting address of the line, so that @samp{x/i} is
7210sufficient to begin examining the machine code (@pxref{Memory,
79a6e687 7211,Examining Memory}). Also, this address is saved as the value of the
c906108c 7212convenience variable @code{$_} (@pxref{Convenience Vars, ,Convenience
79a6e687 7213Variables}).
c906108c
SS
7214
7215@table @code
7216@kindex disassemble
7217@cindex assembly instructions
7218@cindex instructions, assembly
7219@cindex machine instructions
7220@cindex listing machine instructions
7221@item disassemble
d14508fe 7222@itemx disassemble /m
9b117ef3 7223@itemx disassemble /r
c906108c 7224This specialized command dumps a range of memory as machine
d14508fe 7225instructions. It can also print mixed source+disassembly by specifying
9b117ef3
HZ
7226the @code{/m} modifier and print the raw instructions in hex as well as
7227in symbolic form by specifying the @code{/r}.
d14508fe 7228The default memory range is the function surrounding the
c906108c
SS
7229program counter of the selected frame. A single argument to this
7230command is a program counter value; @value{GDBN} dumps the function
21a0512e
PP
7231surrounding this value. When two arguments are given, they should
7232be separated by a comma, possibly surrounded by whitespace. The
53a71c06
CR
7233arguments specify a range of addresses to dump, in one of two forms:
7234
7235@table @code
7236@item @var{start},@var{end}
7237the addresses from @var{start} (inclusive) to @var{end} (exclusive)
7238@item @var{start},+@var{length}
7239the addresses from @var{start} (inclusive) to
7240@code{@var{start}+@var{length}} (exclusive).
7241@end table
7242
7243@noindent
7244When 2 arguments are specified, the name of the function is also
7245printed (since there could be several functions in the given range).
21a0512e
PP
7246
7247The argument(s) can be any expression yielding a numeric value, such as
7248@samp{0x32c4}, @samp{&main+10} or @samp{$pc - 8}.
2b28d209
PP
7249
7250If the range of memory being disassembled contains current program counter,
7251the instruction at that location is shown with a @code{=>} marker.
c906108c
SS
7252@end table
7253
c906108c
SS
7254The following example shows the disassembly of a range of addresses of
7255HP PA-RISC 2.0 code:
7256
7257@smallexample
21a0512e 7258(@value{GDBP}) disas 0x32c4, 0x32e4
c906108c 7259Dump of assembler code from 0x32c4 to 0x32e4:
2b28d209
PP
7260 0x32c4 <main+204>: addil 0,dp
7261 0x32c8 <main+208>: ldw 0x22c(sr0,r1),r26
7262 0x32cc <main+212>: ldil 0x3000,r31
7263 0x32d0 <main+216>: ble 0x3f8(sr4,r31)
7264 0x32d4 <main+220>: ldo 0(r31),rp
7265 0x32d8 <main+224>: addil -0x800,dp
7266 0x32dc <main+228>: ldo 0x588(r1),r26
7267 0x32e0 <main+232>: ldil 0x3000,r31
c906108c
SS
7268End of assembler dump.
7269@end smallexample
c906108c 7270
2b28d209
PP
7271Here is an example showing mixed source+assembly for Intel x86, when the
7272program is stopped just after function prologue:
d14508fe
DE
7273
7274@smallexample
7275(@value{GDBP}) disas /m main
7276Dump of assembler code for function main:
72775 @{
9c419145
PP
7278 0x08048330 <+0>: push %ebp
7279 0x08048331 <+1>: mov %esp,%ebp
7280 0x08048333 <+3>: sub $0x8,%esp
7281 0x08048336 <+6>: and $0xfffffff0,%esp
7282 0x08048339 <+9>: sub $0x10,%esp
d14508fe
DE
7283
72846 printf ("Hello.\n");
9c419145
PP
7285=> 0x0804833c <+12>: movl $0x8048440,(%esp)
7286 0x08048343 <+19>: call 0x8048284 <puts@@plt>
d14508fe
DE
7287
72887 return 0;
72898 @}
9c419145
PP
7290 0x08048348 <+24>: mov $0x0,%eax
7291 0x0804834d <+29>: leave
7292 0x0804834e <+30>: ret
d14508fe
DE
7293
7294End of assembler dump.
7295@end smallexample
7296
53a71c06
CR
7297Here is another example showing raw instructions in hex for AMD x86-64,
7298
7299@smallexample
7300(gdb) disas /r 0x400281,+10
7301Dump of assembler code from 0x400281 to 0x40028b:
7302 0x0000000000400281: 38 36 cmp %dh,(%rsi)
7303 0x0000000000400283: 2d 36 34 2e 73 sub $0x732e3436,%eax
7304 0x0000000000400288: 6f outsl %ds:(%rsi),(%dx)
7305 0x0000000000400289: 2e 32 00 xor %cs:(%rax),%al
7306End of assembler dump.
7307@end smallexample
7308
c906108c
SS
7309Some architectures have more than one commonly-used set of instruction
7310mnemonics or other syntax.
7311
76d17f34
EZ
7312For programs that were dynamically linked and use shared libraries,
7313instructions that call functions or branch to locations in the shared
7314libraries might show a seemingly bogus location---it's actually a
7315location of the relocation table. On some architectures, @value{GDBN}
7316might be able to resolve these to actual function names.
7317
c906108c 7318@table @code
d4f3574e 7319@kindex set disassembly-flavor
d4f3574e
SS
7320@cindex Intel disassembly flavor
7321@cindex AT&T disassembly flavor
7322@item set disassembly-flavor @var{instruction-set}
c906108c
SS
7323Select the instruction set to use when disassembling the
7324program via the @code{disassemble} or @code{x/i} commands.
7325
7326Currently this command is only defined for the Intel x86 family. You
d4f3574e
SS
7327can set @var{instruction-set} to either @code{intel} or @code{att}.
7328The default is @code{att}, the AT&T flavor used by default by Unix
7329assemblers for x86-based targets.
9c16f35a
EZ
7330
7331@kindex show disassembly-flavor
7332@item show disassembly-flavor
7333Show the current setting of the disassembly flavor.
c906108c
SS
7334@end table
7335
91440f57
HZ
7336@table @code
7337@kindex set disassemble-next-line
7338@kindex show disassemble-next-line
7339@item set disassemble-next-line
7340@itemx show disassemble-next-line
32ae1842
EZ
7341Control whether or not @value{GDBN} will disassemble the next source
7342line or instruction when execution stops. If ON, @value{GDBN} will
7343display disassembly of the next source line when execution of the
7344program being debugged stops. This is @emph{in addition} to
7345displaying the source line itself, which @value{GDBN} always does if
7346possible. If the next source line cannot be displayed for some reason
7347(e.g., if @value{GDBN} cannot find the source file, or there's no line
7348info in the debug info), @value{GDBN} will display disassembly of the
7349next @emph{instruction} instead of showing the next source line. If
7350AUTO, @value{GDBN} will display disassembly of next instruction only
7351if the source line cannot be displayed. This setting causes
7352@value{GDBN} to display some feedback when you step through a function
7353with no line info or whose source file is unavailable. The default is
7354OFF, which means never display the disassembly of the next line or
7355instruction.
91440f57
HZ
7356@end table
7357
c906108c 7358
6d2ebf8b 7359@node Data
c906108c
SS
7360@chapter Examining Data
7361
7362@cindex printing data
7363@cindex examining data
7364@kindex print
7365@kindex inspect
7366@c "inspect" is not quite a synonym if you are using Epoch, which we do not
7367@c document because it is nonstandard... Under Epoch it displays in a
7368@c different window or something like that.
7369The usual way to examine data in your program is with the @code{print}
7a292a7a
SS
7370command (abbreviated @code{p}), or its synonym @code{inspect}. It
7371evaluates and prints the value of an expression of the language your
7372program is written in (@pxref{Languages, ,Using @value{GDBN} with
78e2826b
TT
7373Different Languages}). It may also print the expression using a
7374Python-based pretty-printer (@pxref{Pretty Printing}).
c906108c
SS
7375
7376@table @code
d4f3574e
SS
7377@item print @var{expr}
7378@itemx print /@var{f} @var{expr}
7379@var{expr} is an expression (in the source language). By default the
7380value of @var{expr} is printed in a format appropriate to its data type;
c906108c 7381you can choose a different format by specifying @samp{/@var{f}}, where
d4f3574e 7382@var{f} is a letter specifying the format; see @ref{Output Formats,,Output
79a6e687 7383Formats}.
c906108c
SS
7384
7385@item print
7386@itemx print /@var{f}
15387254 7387@cindex reprint the last value
d4f3574e 7388If you omit @var{expr}, @value{GDBN} displays the last value again (from the
79a6e687 7389@dfn{value history}; @pxref{Value History, ,Value History}). This allows you to
c906108c
SS
7390conveniently inspect the same value in an alternative format.
7391@end table
7392
7393A more low-level way of examining data is with the @code{x} command.
7394It examines data in memory at a specified address and prints it in a
79a6e687 7395specified format. @xref{Memory, ,Examining Memory}.
c906108c 7396
7a292a7a 7397If you are interested in information about types, or about how the
d4f3574e
SS
7398fields of a struct or a class are declared, use the @code{ptype @var{exp}}
7399command rather than @code{print}. @xref{Symbols, ,Examining the Symbol
7a292a7a 7400Table}.
c906108c 7401
06fc020f
SCR
7402@cindex exploring hierarchical data structures
7403@kindex explore
7404Another way of examining values of expressions and type information is
7405through the Python extension command @code{explore} (available only if
7406the @value{GDBN} build is configured with @code{--with-python}). It
7407offers an interactive way to start at the highest level (or, the most
7408abstract level) of the data type of an expression (or, the data type
7409itself) and explore all the way down to leaf scalar values/fields
7410embedded in the higher level data types.
7411
7412@table @code
7413@item explore @var{arg}
7414@var{arg} is either an expression (in the source language), or a type
7415visible in the current context of the program being debugged.
7416@end table
7417
7418The working of the @code{explore} command can be illustrated with an
7419example. If a data type @code{struct ComplexStruct} is defined in your
7420C program as
7421
7422@smallexample
7423struct SimpleStruct
7424@{
7425 int i;
7426 double d;
7427@};
7428
7429struct ComplexStruct
7430@{
7431 struct SimpleStruct *ss_p;
7432 int arr[10];
7433@};
7434@end smallexample
7435
7436@noindent
7437followed by variable declarations as
7438
7439@smallexample
7440struct SimpleStruct ss = @{ 10, 1.11 @};
7441struct ComplexStruct cs = @{ &ss, @{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 @} @};
7442@end smallexample
7443
7444@noindent
7445then, the value of the variable @code{cs} can be explored using the
7446@code{explore} command as follows.
7447
7448@smallexample
7449(gdb) explore cs
7450The value of `cs' is a struct/class of type `struct ComplexStruct' with
7451the following fields:
7452
7453 ss_p = <Enter 0 to explore this field of type `struct SimpleStruct *'>
7454 arr = <Enter 1 to explore this field of type `int [10]'>
7455
7456Enter the field number of choice:
7457@end smallexample
7458
7459@noindent
7460Since the fields of @code{cs} are not scalar values, you are being
7461prompted to chose the field you want to explore. Let's say you choose
7462the field @code{ss_p} by entering @code{0}. Then, since this field is a
7463pointer, you will be asked if it is pointing to a single value. From
7464the declaration of @code{cs} above, it is indeed pointing to a single
7465value, hence you enter @code{y}. If you enter @code{n}, then you will
7466be asked if it were pointing to an array of values, in which case this
7467field will be explored as if it were an array.
7468
7469@smallexample
7470`cs.ss_p' is a pointer to a value of type `struct SimpleStruct'
7471Continue exploring it as a pointer to a single value [y/n]: y
7472The value of `*(cs.ss_p)' is a struct/class of type `struct
7473SimpleStruct' with the following fields:
7474
7475 i = 10 .. (Value of type `int')
7476 d = 1.1100000000000001 .. (Value of type `double')
7477
7478Press enter to return to parent value:
7479@end smallexample
7480
7481@noindent
7482If the field @code{arr} of @code{cs} was chosen for exploration by
7483entering @code{1} earlier, then since it is as array, you will be
7484prompted to enter the index of the element in the array that you want
7485to explore.
7486
7487@smallexample
7488`cs.arr' is an array of `int'.
7489Enter the index of the element you want to explore in `cs.arr': 5
7490
7491`(cs.arr)[5]' is a scalar value of type `int'.
7492
7493(cs.arr)[5] = 4
7494
7495Press enter to return to parent value:
7496@end smallexample
7497
7498In general, at any stage of exploration, you can go deeper towards the
7499leaf values by responding to the prompts appropriately, or hit the
7500return key to return to the enclosing data structure (the @i{higher}
7501level data structure).
7502
7503Similar to exploring values, you can use the @code{explore} command to
7504explore types. Instead of specifying a value (which is typically a
7505variable name or an expression valid in the current context of the
7506program being debugged), you specify a type name. If you consider the
7507same example as above, your can explore the type
7508@code{struct ComplexStruct} by passing the argument
7509@code{struct ComplexStruct} to the @code{explore} command.
7510
7511@smallexample
7512(gdb) explore struct ComplexStruct
7513@end smallexample
7514
7515@noindent
7516By responding to the prompts appropriately in the subsequent interactive
7517session, you can explore the type @code{struct ComplexStruct} in a
7518manner similar to how the value @code{cs} was explored in the above
7519example.
7520
7521The @code{explore} command also has two sub-commands,
7522@code{explore value} and @code{explore type}. The former sub-command is
7523a way to explicitly specify that value exploration of the argument is
7524being invoked, while the latter is a way to explicitly specify that type
7525exploration of the argument is being invoked.
7526
7527@table @code
7528@item explore value @var{expr}
7529@cindex explore value
7530This sub-command of @code{explore} explores the value of the
7531expression @var{expr} (if @var{expr} is an expression valid in the
7532current context of the program being debugged). The behavior of this
7533command is identical to that of the behavior of the @code{explore}
7534command being passed the argument @var{expr}.
7535
7536@item explore type @var{arg}
7537@cindex explore type
7538This sub-command of @code{explore} explores the type of @var{arg} (if
7539@var{arg} is a type visible in the current context of program being
7540debugged), or the type of the value/expression @var{arg} (if @var{arg}
7541is an expression valid in the current context of the program being
7542debugged). If @var{arg} is a type, then the behavior of this command is
7543identical to that of the @code{explore} command being passed the
7544argument @var{arg}. If @var{arg} is an expression, then the behavior of
7545this command will be identical to that of the @code{explore} command
7546being passed the type of @var{arg} as the argument.
7547@end table
7548
c906108c
SS
7549@menu
7550* Expressions:: Expressions
6ba66d6a 7551* Ambiguous Expressions:: Ambiguous Expressions
c906108c
SS
7552* Variables:: Program variables
7553* Arrays:: Artificial arrays
7554* Output Formats:: Output formats
7555* Memory:: Examining memory
7556* Auto Display:: Automatic display
7557* Print Settings:: Print settings
4c374409 7558* Pretty Printing:: Python pretty printing
c906108c
SS
7559* Value History:: Value history
7560* Convenience Vars:: Convenience variables
a72c3253 7561* Convenience Funs:: Convenience functions
c906108c 7562* Registers:: Registers
c906108c 7563* Floating Point Hardware:: Floating point hardware
53c69bd7 7564* Vector Unit:: Vector Unit
721c2651 7565* OS Information:: Auxiliary data provided by operating system
29e57380 7566* Memory Region Attributes:: Memory region attributes
16d9dec6 7567* Dump/Restore Files:: Copy between memory and a file
384ee23f 7568* Core File Generation:: Cause a program dump its core
a0eb71c5
KB
7569* Character Sets:: Debugging programs that use a different
7570 character set than GDB does
09d4efe1 7571* Caching Remote Data:: Data caching for remote targets
08388c79 7572* Searching Memory:: Searching memory for a sequence of bytes
c906108c
SS
7573@end menu
7574
6d2ebf8b 7575@node Expressions
c906108c
SS
7576@section Expressions
7577
7578@cindex expressions
7579@code{print} and many other @value{GDBN} commands accept an expression and
7580compute its value. Any kind of constant, variable or operator defined
7581by the programming language you are using is valid in an expression in
e2e0bcd1
JB
7582@value{GDBN}. This includes conditional expressions, function calls,
7583casts, and string constants. It also includes preprocessor macros, if
7584you compiled your program to include this information; see
7585@ref{Compilation}.
c906108c 7586
15387254 7587@cindex arrays in expressions
d4f3574e
SS
7588@value{GDBN} supports array constants in expressions input by
7589the user. The syntax is @{@var{element}, @var{element}@dots{}@}. For example,
63092375
DJ
7590you can use the command @code{print @{1, 2, 3@}} to create an array
7591of three integers. If you pass an array to a function or assign it
7592to a program variable, @value{GDBN} copies the array to memory that
7593is @code{malloc}ed in the target program.
c906108c 7594
c906108c
SS
7595Because C is so widespread, most of the expressions shown in examples in
7596this manual are in C. @xref{Languages, , Using @value{GDBN} with Different
7597Languages}, for information on how to use expressions in other
7598languages.
7599
7600In this section, we discuss operators that you can use in @value{GDBN}
7601expressions regardless of your programming language.
7602
15387254 7603@cindex casts, in expressions
c906108c
SS
7604Casts are supported in all languages, not just in C, because it is so
7605useful to cast a number into a pointer in order to examine a structure
7606at that address in memory.
7607@c FIXME: casts supported---Mod2 true?
c906108c
SS
7608
7609@value{GDBN} supports these operators, in addition to those common
7610to programming languages:
7611
7612@table @code
7613@item @@
7614@samp{@@} is a binary operator for treating parts of memory as arrays.
79a6e687 7615@xref{Arrays, ,Artificial Arrays}, for more information.
c906108c
SS
7616
7617@item ::
7618@samp{::} allows you to specify a variable in terms of the file or
79a6e687 7619function where it is defined. @xref{Variables, ,Program Variables}.
c906108c
SS
7620
7621@cindex @{@var{type}@}
7622@cindex type casting memory
7623@cindex memory, viewing as typed object
7624@cindex casts, to view memory
7625@item @{@var{type}@} @var{addr}
7626Refers to an object of type @var{type} stored at address @var{addr} in
7627memory. @var{addr} may be any expression whose value is an integer or
7628pointer (but parentheses are required around binary operators, just as in
7629a cast). This construct is allowed regardless of what kind of data is
7630normally supposed to reside at @var{addr}.
7631@end table
7632
6ba66d6a
JB
7633@node Ambiguous Expressions
7634@section Ambiguous Expressions
7635@cindex ambiguous expressions
7636
7637Expressions can sometimes contain some ambiguous elements. For instance,
7638some programming languages (notably Ada, C@t{++} and Objective-C) permit
7639a single function name to be defined several times, for application in
7640different contexts. This is called @dfn{overloading}. Another example
7641involving Ada is generics. A @dfn{generic package} is similar to C@t{++}
7642templates and is typically instantiated several times, resulting in
7643the same function name being defined in different contexts.
7644
7645In some cases and depending on the language, it is possible to adjust
7646the expression to remove the ambiguity. For instance in C@t{++}, you
7647can specify the signature of the function you want to break on, as in
7648@kbd{break @var{function}(@var{types})}. In Ada, using the fully
7649qualified name of your function often makes the expression unambiguous
7650as well.
7651
7652When an ambiguity that needs to be resolved is detected, the debugger
7653has the capability to display a menu of numbered choices for each
7654possibility, and then waits for the selection with the prompt @samp{>}.
7655The first option is always @samp{[0] cancel}, and typing @kbd{0 @key{RET}}
7656aborts the current command. If the command in which the expression was
7657used allows more than one choice to be selected, the next option in the
7658menu is @samp{[1] all}, and typing @kbd{1 @key{RET}} selects all possible
7659choices.
7660
7661For example, the following session excerpt shows an attempt to set a
7662breakpoint at the overloaded symbol @code{String::after}.
7663We choose three particular definitions of that function name:
7664
7665@c FIXME! This is likely to change to show arg type lists, at least
7666@smallexample
7667@group
7668(@value{GDBP}) b String::after
7669[0] cancel
7670[1] all
7671[2] file:String.cc; line number:867
7672[3] file:String.cc; line number:860
7673[4] file:String.cc; line number:875
7674[5] file:String.cc; line number:853
7675[6] file:String.cc; line number:846
7676[7] file:String.cc; line number:735
7677> 2 4 6
7678Breakpoint 1 at 0xb26c: file String.cc, line 867.
7679Breakpoint 2 at 0xb344: file String.cc, line 875.
7680Breakpoint 3 at 0xafcc: file String.cc, line 846.
7681Multiple breakpoints were set.
7682Use the "delete" command to delete unwanted
7683 breakpoints.
7684(@value{GDBP})
7685@end group
7686@end smallexample
7687
7688@table @code
7689@kindex set multiple-symbols
7690@item set multiple-symbols @var{mode}
7691@cindex multiple-symbols menu
7692
7693This option allows you to adjust the debugger behavior when an expression
7694is ambiguous.
7695
7696By default, @var{mode} is set to @code{all}. If the command with which
7697the expression is used allows more than one choice, then @value{GDBN}
7698automatically selects all possible choices. For instance, inserting
7699a breakpoint on a function using an ambiguous name results in a breakpoint
7700inserted on each possible match. However, if a unique choice must be made,
7701then @value{GDBN} uses the menu to help you disambiguate the expression.
7702For instance, printing the address of an overloaded function will result
7703in the use of the menu.
7704
7705When @var{mode} is set to @code{ask}, the debugger always uses the menu
7706when an ambiguity is detected.
7707
7708Finally, when @var{mode} is set to @code{cancel}, the debugger reports
7709an error due to the ambiguity and the command is aborted.
7710
7711@kindex show multiple-symbols
7712@item show multiple-symbols
7713Show the current value of the @code{multiple-symbols} setting.
7714@end table
7715
6d2ebf8b 7716@node Variables
79a6e687 7717@section Program Variables
c906108c
SS
7718
7719The most common kind of expression to use is the name of a variable
7720in your program.
7721
7722Variables in expressions are understood in the selected stack frame
79a6e687 7723(@pxref{Selection, ,Selecting a Frame}); they must be either:
c906108c
SS
7724
7725@itemize @bullet
7726@item
7727global (or file-static)
7728@end itemize
7729
5d161b24 7730@noindent or
c906108c
SS
7731
7732@itemize @bullet
7733@item
7734visible according to the scope rules of the
7735programming language from the point of execution in that frame
5d161b24 7736@end itemize
c906108c
SS
7737
7738@noindent This means that in the function
7739
474c8240 7740@smallexample
c906108c
SS
7741foo (a)
7742 int a;
7743@{
7744 bar (a);
7745 @{
7746 int b = test ();
7747 bar (b);
7748 @}
7749@}
474c8240 7750@end smallexample
c906108c
SS
7751
7752@noindent
7753you can examine and use the variable @code{a} whenever your program is
7754executing within the function @code{foo}, but you can only use or
7755examine the variable @code{b} while your program is executing inside
7756the block where @code{b} is declared.
7757
7758@cindex variable name conflict
7759There is an exception: you can refer to a variable or function whose
7760scope is a single source file even if the current execution point is not
7761in this file. But it is possible to have more than one such variable or
7762function with the same name (in different source files). If that
7763happens, referring to that name has unpredictable effects. If you wish,
72384ba3 7764you can specify a static variable in a particular function or file by
15387254 7765using the colon-colon (@code{::}) notation:
c906108c 7766
d4f3574e 7767@cindex colon-colon, context for variables/functions
12c27660 7768@ifnotinfo
c906108c 7769@c info cannot cope with a :: index entry, but why deprive hard copy readers?
41afff9a 7770@cindex @code{::}, context for variables/functions
12c27660 7771@end ifnotinfo
474c8240 7772@smallexample
c906108c
SS
7773@var{file}::@var{variable}
7774@var{function}::@var{variable}
474c8240 7775@end smallexample
c906108c
SS
7776
7777@noindent
7778Here @var{file} or @var{function} is the name of the context for the
7779static @var{variable}. In the case of file names, you can use quotes to
7780make sure @value{GDBN} parses the file name as a single word---for example,
7781to print a global value of @code{x} defined in @file{f2.c}:
7782
474c8240 7783@smallexample
c906108c 7784(@value{GDBP}) p 'f2.c'::x
474c8240 7785@end smallexample
c906108c 7786
72384ba3
PH
7787The @code{::} notation is normally used for referring to
7788static variables, since you typically disambiguate uses of local variables
7789in functions by selecting the appropriate frame and using the
7790simple name of the variable. However, you may also use this notation
7791to refer to local variables in frames enclosing the selected frame:
7792
7793@smallexample
7794void
7795foo (int a)
7796@{
7797 if (a < 10)
7798 bar (a);
7799 else
7800 process (a); /* Stop here */
7801@}
7802
7803int
7804bar (int a)
7805@{
7806 foo (a + 5);
7807@}
7808@end smallexample
7809
7810@noindent
7811For example, if there is a breakpoint at the commented line,
7812here is what you might see
7813when the program stops after executing the call @code{bar(0)}:
7814
7815@smallexample
7816(@value{GDBP}) p a
7817$1 = 10
7818(@value{GDBP}) p bar::a
7819$2 = 5
7820(@value{GDBP}) up 2
7821#2 0x080483d0 in foo (a=5) at foobar.c:12
7822(@value{GDBP}) p a
7823$3 = 5
7824(@value{GDBP}) p bar::a
7825$4 = 0
7826@end smallexample
7827
b37052ae 7828@cindex C@t{++} scope resolution
72384ba3 7829These uses of @samp{::} are very rarely in conflict with the very similar
b37052ae 7830use of the same notation in C@t{++}. @value{GDBN} also supports use of the C@t{++}
c906108c
SS
7831scope resolution operator in @value{GDBN} expressions.
7832@c FIXME: Um, so what happens in one of those rare cases where it's in
7833@c conflict?? --mew
c906108c
SS
7834
7835@cindex wrong values
7836@cindex variable values, wrong
15387254
EZ
7837@cindex function entry/exit, wrong values of variables
7838@cindex optimized code, wrong values of variables
c906108c
SS
7839@quotation
7840@emph{Warning:} Occasionally, a local variable may appear to have the
7841wrong value at certain points in a function---just after entry to a new
7842scope, and just before exit.
7843@end quotation
7844You may see this problem when you are stepping by machine instructions.
7845This is because, on most machines, it takes more than one instruction to
7846set up a stack frame (including local variable definitions); if you are
7847stepping by machine instructions, variables may appear to have the wrong
7848values until the stack frame is completely built. On exit, it usually
7849also takes more than one machine instruction to destroy a stack frame;
7850after you begin stepping through that group of instructions, local
7851variable definitions may be gone.
7852
7853This may also happen when the compiler does significant optimizations.
7854To be sure of always seeing accurate values, turn off all optimization
7855when compiling.
7856
d4f3574e
SS
7857@cindex ``No symbol "foo" in current context''
7858Another possible effect of compiler optimizations is to optimize
7859unused variables out of existence, or assign variables to registers (as
7860opposed to memory addresses). Depending on the support for such cases
7861offered by the debug info format used by the compiler, @value{GDBN}
7862might not be able to display values for such local variables. If that
7863happens, @value{GDBN} will print a message like this:
7864
474c8240 7865@smallexample
d4f3574e 7866No symbol "foo" in current context.
474c8240 7867@end smallexample
d4f3574e
SS
7868
7869To solve such problems, either recompile without optimizations, or use a
7870different debug info format, if the compiler supports several such
e0f8f636
TT
7871formats. @xref{Compilation}, for more information on choosing compiler
7872options. @xref{C, ,C and C@t{++}}, for more information about debug
7873info formats that are best suited to C@t{++} programs.
d4f3574e 7874
ab1adacd
EZ
7875If you ask to print an object whose contents are unknown to
7876@value{GDBN}, e.g., because its data type is not completely specified
7877by the debug information, @value{GDBN} will say @samp{<incomplete
7878type>}. @xref{Symbols, incomplete type}, for more about this.
7879
36b11add
JK
7880If you append @kbd{@@entry} string to a function parameter name you get its
7881value at the time the function got called. If the value is not available an
7882error message is printed. Entry values are available only with some compilers.
7883Entry values are normally also printed at the function parameter list according
7884to @ref{set print entry-values}.
7885
7886@smallexample
7887Breakpoint 1, d (i=30) at gdb.base/entry-value.c:29
788829 i++;
7889(gdb) next
789030 e (i);
7891(gdb) print i
7892$1 = 31
7893(gdb) print i@@entry
7894$2 = 30
7895@end smallexample
7896
3a60f64e
JK
7897Strings are identified as arrays of @code{char} values without specified
7898signedness. Arrays of either @code{signed char} or @code{unsigned char} get
7899printed as arrays of 1 byte sized integers. @code{-fsigned-char} or
7900@code{-funsigned-char} @value{NGCC} options have no effect as @value{GDBN}
7901defines literal string type @code{"char"} as @code{char} without a sign.
7902For program code
7903
7904@smallexample
7905char var0[] = "A";
7906signed char var1[] = "A";
7907@end smallexample
7908
7909You get during debugging
7910@smallexample
7911(gdb) print var0
7912$1 = "A"
7913(gdb) print var1
7914$2 = @{65 'A', 0 '\0'@}
7915@end smallexample
7916
6d2ebf8b 7917@node Arrays
79a6e687 7918@section Artificial Arrays
c906108c
SS
7919
7920@cindex artificial array
15387254 7921@cindex arrays
41afff9a 7922@kindex @@@r{, referencing memory as an array}
c906108c
SS
7923It is often useful to print out several successive objects of the
7924same type in memory; a section of an array, or an array of
7925dynamically determined size for which only a pointer exists in the
7926program.
7927
7928You can do this by referring to a contiguous span of memory as an
7929@dfn{artificial array}, using the binary operator @samp{@@}. The left
7930operand of @samp{@@} should be the first element of the desired array
7931and be an individual object. The right operand should be the desired length
7932of the array. The result is an array value whose elements are all of
7933the type of the left argument. The first element is actually the left
7934argument; the second element comes from bytes of memory immediately
7935following those that hold the first element, and so on. Here is an
7936example. If a program says
7937
474c8240 7938@smallexample
c906108c 7939int *array = (int *) malloc (len * sizeof (int));
474c8240 7940@end smallexample
c906108c
SS
7941
7942@noindent
7943you can print the contents of @code{array} with
7944
474c8240 7945@smallexample
c906108c 7946p *array@@len
474c8240 7947@end smallexample
c906108c
SS
7948
7949The left operand of @samp{@@} must reside in memory. Array values made
7950with @samp{@@} in this way behave just like other arrays in terms of
7951subscripting, and are coerced to pointers when used in expressions.
7952Artificial arrays most often appear in expressions via the value history
79a6e687 7953(@pxref{Value History, ,Value History}), after printing one out.
c906108c
SS
7954
7955Another way to create an artificial array is to use a cast.
7956This re-interprets a value as if it were an array.
7957The value need not be in memory:
474c8240 7958@smallexample
c906108c
SS
7959(@value{GDBP}) p/x (short[2])0x12345678
7960$1 = @{0x1234, 0x5678@}
474c8240 7961@end smallexample
c906108c
SS
7962
7963As a convenience, if you leave the array length out (as in
c3f6f71d 7964@samp{(@var{type}[])@var{value}}) @value{GDBN} calculates the size to fill
c906108c 7965the value (as @samp{sizeof(@var{value})/sizeof(@var{type})}:
474c8240 7966@smallexample
c906108c
SS
7967(@value{GDBP}) p/x (short[])0x12345678
7968$2 = @{0x1234, 0x5678@}
474c8240 7969@end smallexample
c906108c
SS
7970
7971Sometimes the artificial array mechanism is not quite enough; in
7972moderately complex data structures, the elements of interest may not
7973actually be adjacent---for example, if you are interested in the values
7974of pointers in an array. One useful work-around in this situation is
7975to use a convenience variable (@pxref{Convenience Vars, ,Convenience
79a6e687 7976Variables}) as a counter in an expression that prints the first
c906108c
SS
7977interesting value, and then repeat that expression via @key{RET}. For
7978instance, suppose you have an array @code{dtab} of pointers to
7979structures, and you are interested in the values of a field @code{fv}
7980in each structure. Here is an example of what you might type:
7981
474c8240 7982@smallexample
c906108c
SS
7983set $i = 0
7984p dtab[$i++]->fv
7985@key{RET}
7986@key{RET}
7987@dots{}
474c8240 7988@end smallexample
c906108c 7989
6d2ebf8b 7990@node Output Formats
79a6e687 7991@section Output Formats
c906108c
SS
7992
7993@cindex formatted output
7994@cindex output formats
7995By default, @value{GDBN} prints a value according to its data type. Sometimes
7996this is not what you want. For example, you might want to print a number
7997in hex, or a pointer in decimal. Or you might want to view data in memory
7998at a certain address as a character string or as an instruction. To do
7999these things, specify an @dfn{output format} when you print a value.
8000
8001The simplest use of output formats is to say how to print a value
8002already computed. This is done by starting the arguments of the
8003@code{print} command with a slash and a format letter. The format
8004letters supported are:
8005
8006@table @code
8007@item x
8008Regard the bits of the value as an integer, and print the integer in
8009hexadecimal.
8010
8011@item d
8012Print as integer in signed decimal.
8013
8014@item u
8015Print as integer in unsigned decimal.
8016
8017@item o
8018Print as integer in octal.
8019
8020@item t
8021Print as integer in binary. The letter @samp{t} stands for ``two''.
8022@footnote{@samp{b} cannot be used because these format letters are also
8023used with the @code{x} command, where @samp{b} stands for ``byte'';
79a6e687 8024see @ref{Memory,,Examining Memory}.}
c906108c
SS
8025
8026@item a
8027@cindex unknown address, locating
3d67e040 8028@cindex locate address
c906108c
SS
8029Print as an address, both absolute in hexadecimal and as an offset from
8030the nearest preceding symbol. You can use this format used to discover
8031where (in what function) an unknown address is located:
8032
474c8240 8033@smallexample
c906108c
SS
8034(@value{GDBP}) p/a 0x54320
8035$3 = 0x54320 <_initialize_vx+396>
474c8240 8036@end smallexample
c906108c 8037
3d67e040
EZ
8038@noindent
8039The command @code{info symbol 0x54320} yields similar results.
8040@xref{Symbols, info symbol}.
8041
c906108c 8042@item c
51274035
EZ
8043Regard as an integer and print it as a character constant. This
8044prints both the numerical value and its character representation. The
8045character representation is replaced with the octal escape @samp{\nnn}
8046for characters outside the 7-bit @sc{ascii} range.
c906108c 8047
ea37ba09
DJ
8048Without this format, @value{GDBN} displays @code{char},
8049@w{@code{unsigned char}}, and @w{@code{signed char}} data as character
8050constants. Single-byte members of vectors are displayed as integer
8051data.
8052
c906108c
SS
8053@item f
8054Regard the bits of the value as a floating point number and print
8055using typical floating point syntax.
ea37ba09
DJ
8056
8057@item s
8058@cindex printing strings
8059@cindex printing byte arrays
8060Regard as a string, if possible. With this format, pointers to single-byte
8061data are displayed as null-terminated strings and arrays of single-byte data
8062are displayed as fixed-length strings. Other values are displayed in their
8063natural types.
8064
8065Without this format, @value{GDBN} displays pointers to and arrays of
8066@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
8067strings. Single-byte members of a vector are displayed as an integer
8068array.
a6bac58e
TT
8069
8070@item r
8071@cindex raw printing
8072Print using the @samp{raw} formatting. By default, @value{GDBN} will
78e2826b
TT
8073use a Python-based pretty-printer, if one is available (@pxref{Pretty
8074Printing}). This typically results in a higher-level display of the
8075value's contents. The @samp{r} format bypasses any Python
8076pretty-printer which might exist.
c906108c
SS
8077@end table
8078
8079For example, to print the program counter in hex (@pxref{Registers}), type
8080
474c8240 8081@smallexample
c906108c 8082p/x $pc
474c8240 8083@end smallexample
c906108c
SS
8084
8085@noindent
8086Note that no space is required before the slash; this is because command
8087names in @value{GDBN} cannot contain a slash.
8088
8089To reprint the last value in the value history with a different format,
8090you can use the @code{print} command with just a format and no
8091expression. For example, @samp{p/x} reprints the last value in hex.
8092
6d2ebf8b 8093@node Memory
79a6e687 8094@section Examining Memory
c906108c
SS
8095
8096You can use the command @code{x} (for ``examine'') to examine memory in
8097any of several formats, independently of your program's data types.
8098
8099@cindex examining memory
8100@table @code
41afff9a 8101@kindex x @r{(examine memory)}
c906108c
SS
8102@item x/@var{nfu} @var{addr}
8103@itemx x @var{addr}
8104@itemx x
8105Use the @code{x} command to examine memory.
8106@end table
8107
8108@var{n}, @var{f}, and @var{u} are all optional parameters that specify how
8109much memory to display and how to format it; @var{addr} is an
8110expression giving the address where you want to start displaying memory.
8111If you use defaults for @var{nfu}, you need not type the slash @samp{/}.
8112Several commands set convenient defaults for @var{addr}.
8113
8114@table @r
8115@item @var{n}, the repeat count
8116The repeat count is a decimal integer; the default is 1. It specifies
8117how much memory (counting by units @var{u}) to display.
8118@c This really is **decimal**; unaffected by 'set radix' as of GDB
8119@c 4.1.2.
8120
8121@item @var{f}, the display format
51274035
EZ
8122The display format is one of the formats used by @code{print}
8123(@samp{x}, @samp{d}, @samp{u}, @samp{o}, @samp{t}, @samp{a}, @samp{c},
ea37ba09
DJ
8124@samp{f}, @samp{s}), and in addition @samp{i} (for machine instructions).
8125The default is @samp{x} (hexadecimal) initially. The default changes
8126each time you use either @code{x} or @code{print}.
c906108c
SS
8127
8128@item @var{u}, the unit size
8129The unit size is any of
8130
8131@table @code
8132@item b
8133Bytes.
8134@item h
8135Halfwords (two bytes).
8136@item w
8137Words (four bytes). This is the initial default.
8138@item g
8139Giant words (eight bytes).
8140@end table
8141
8142Each time you specify a unit size with @code{x}, that size becomes the
9a22f0d0
PM
8143default unit the next time you use @code{x}. For the @samp{i} format,
8144the unit size is ignored and is normally not written. For the @samp{s} format,
8145the unit size defaults to @samp{b}, unless it is explicitly given.
8146Use @kbd{x /hs} to display 16-bit char strings and @kbd{x /ws} to display
814732-bit strings. The next use of @kbd{x /s} will again display 8-bit strings.
8148Note that the results depend on the programming language of the
8149current compilation unit. If the language is C, the @samp{s}
8150modifier will use the UTF-16 encoding while @samp{w} will use
8151UTF-32. The encoding is set by the programming language and cannot
8152be altered.
c906108c
SS
8153
8154@item @var{addr}, starting display address
8155@var{addr} is the address where you want @value{GDBN} to begin displaying
8156memory. The expression need not have a pointer value (though it may);
8157it is always interpreted as an integer address of a byte of memory.
8158@xref{Expressions, ,Expressions}, for more information on expressions. The default for
8159@var{addr} is usually just after the last address examined---but several
8160other commands also set the default address: @code{info breakpoints} (to
8161the address of the last breakpoint listed), @code{info line} (to the
8162starting address of a line), and @code{print} (if you use it to display
8163a value from memory).
8164@end table
8165
8166For example, @samp{x/3uh 0x54320} is a request to display three halfwords
8167(@code{h}) of memory, formatted as unsigned decimal integers (@samp{u}),
8168starting at address @code{0x54320}. @samp{x/4xw $sp} prints the four
8169words (@samp{w}) of memory above the stack pointer (here, @samp{$sp};
d4f3574e 8170@pxref{Registers, ,Registers}) in hexadecimal (@samp{x}).
c906108c
SS
8171
8172Since the letters indicating unit sizes are all distinct from the
8173letters specifying output formats, you do not have to remember whether
8174unit size or format comes first; either order works. The output
8175specifications @samp{4xw} and @samp{4wx} mean exactly the same thing.
8176(However, the count @var{n} must come first; @samp{wx4} does not work.)
8177
8178Even though the unit size @var{u} is ignored for the formats @samp{s}
8179and @samp{i}, you might still want to use a count @var{n}; for example,
8180@samp{3i} specifies that you want to see three machine instructions,
a4642986
MR
8181including any operands. For convenience, especially when used with
8182the @code{display} command, the @samp{i} format also prints branch delay
8183slot instructions, if any, beyond the count specified, which immediately
8184follow the last instruction that is within the count. The command
8185@code{disassemble} gives an alternative way of inspecting machine
8186instructions; see @ref{Machine Code,,Source and Machine Code}.
c906108c
SS
8187
8188All the defaults for the arguments to @code{x} are designed to make it
8189easy to continue scanning memory with minimal specifications each time
8190you use @code{x}. For example, after you have inspected three machine
8191instructions with @samp{x/3i @var{addr}}, you can inspect the next seven
8192with just @samp{x/7}. If you use @key{RET} to repeat the @code{x} command,
8193the repeat count @var{n} is used again; the other arguments default as
8194for successive uses of @code{x}.
8195
2b28d209
PP
8196When examining machine instructions, the instruction at current program
8197counter is shown with a @code{=>} marker. For example:
8198
8199@smallexample
8200(@value{GDBP}) x/5i $pc-6
8201 0x804837f <main+11>: mov %esp,%ebp
8202 0x8048381 <main+13>: push %ecx
8203 0x8048382 <main+14>: sub $0x4,%esp
8204=> 0x8048385 <main+17>: movl $0x8048460,(%esp)
8205 0x804838c <main+24>: call 0x80482d4 <puts@@plt>
8206@end smallexample
8207
c906108c
SS
8208@cindex @code{$_}, @code{$__}, and value history
8209The addresses and contents printed by the @code{x} command are not saved
8210in the value history because there is often too much of them and they
8211would get in the way. Instead, @value{GDBN} makes these values available for
8212subsequent use in expressions as values of the convenience variables
8213@code{$_} and @code{$__}. After an @code{x} command, the last address
8214examined is available for use in expressions in the convenience variable
8215@code{$_}. The contents of that address, as examined, are available in
8216the convenience variable @code{$__}.
8217
8218If the @code{x} command has a repeat count, the address and contents saved
8219are from the last memory unit printed; this is not the same as the last
8220address printed if several units were printed on the last line of output.
8221
09d4efe1
EZ
8222@cindex remote memory comparison
8223@cindex verify remote memory image
8224When you are debugging a program running on a remote target machine
ea35711c 8225(@pxref{Remote Debugging}), you may wish to verify the program's image in the
09d4efe1
EZ
8226remote machine's memory against the executable file you downloaded to
8227the target. The @code{compare-sections} command is provided for such
8228situations.
8229
8230@table @code
8231@kindex compare-sections
8232@item compare-sections @r{[}@var{section-name}@r{]}
8233Compare the data of a loadable section @var{section-name} in the
8234executable file of the program being debugged with the same section in
8235the remote machine's memory, and report any mismatches. With no
8236arguments, compares all loadable sections. This command's
8237availability depends on the target's support for the @code{"qCRC"}
8238remote request.
8239@end table
8240
6d2ebf8b 8241@node Auto Display
79a6e687 8242@section Automatic Display
c906108c
SS
8243@cindex automatic display
8244@cindex display of expressions
8245
8246If you find that you want to print the value of an expression frequently
8247(to see how it changes), you might want to add it to the @dfn{automatic
8248display list} so that @value{GDBN} prints its value each time your program stops.
8249Each expression added to the list is given a number to identify it;
8250to remove an expression from the list, you specify that number.
8251The automatic display looks like this:
8252
474c8240 8253@smallexample
c906108c
SS
82542: foo = 38
82553: bar[5] = (struct hack *) 0x3804
474c8240 8256@end smallexample
c906108c
SS
8257
8258@noindent
8259This display shows item numbers, expressions and their current values. As with
8260displays you request manually using @code{x} or @code{print}, you can
8261specify the output format you prefer; in fact, @code{display} decides
ea37ba09
DJ
8262whether to use @code{print} or @code{x} depending your format
8263specification---it uses @code{x} if you specify either the @samp{i}
8264or @samp{s} format, or a unit size; otherwise it uses @code{print}.
c906108c
SS
8265
8266@table @code
8267@kindex display
d4f3574e
SS
8268@item display @var{expr}
8269Add the expression @var{expr} to the list of expressions to display
c906108c
SS
8270each time your program stops. @xref{Expressions, ,Expressions}.
8271
8272@code{display} does not repeat if you press @key{RET} again after using it.
8273
d4f3574e 8274@item display/@var{fmt} @var{expr}
c906108c 8275For @var{fmt} specifying only a display format and not a size or
d4f3574e 8276count, add the expression @var{expr} to the auto-display list but
c906108c 8277arrange to display it each time in the specified format @var{fmt}.
79a6e687 8278@xref{Output Formats,,Output Formats}.
c906108c
SS
8279
8280@item display/@var{fmt} @var{addr}
8281For @var{fmt} @samp{i} or @samp{s}, or including a unit-size or a
8282number of units, add the expression @var{addr} as a memory address to
8283be examined each time your program stops. Examining means in effect
79a6e687 8284doing @samp{x/@var{fmt} @var{addr}}. @xref{Memory, ,Examining Memory}.
c906108c
SS
8285@end table
8286
8287For example, @samp{display/i $pc} can be helpful, to see the machine
8288instruction about to be executed each time execution stops (@samp{$pc}
d4f3574e 8289is a common name for the program counter; @pxref{Registers, ,Registers}).
c906108c
SS
8290
8291@table @code
8292@kindex delete display
8293@kindex undisplay
8294@item undisplay @var{dnums}@dots{}
8295@itemx delete display @var{dnums}@dots{}
c9174737
PA
8296Remove items from the list of expressions to display. Specify the
8297numbers of the displays that you want affected with the command
8298argument @var{dnums}. It can be a single display number, one of the
8299numbers shown in the first field of the @samp{info display} display;
8300or it could be a range of display numbers, as in @code{2-4}.
c906108c
SS
8301
8302@code{undisplay} does not repeat if you press @key{RET} after using it.
8303(Otherwise you would just get the error @samp{No display number @dots{}}.)
8304
8305@kindex disable display
8306@item disable display @var{dnums}@dots{}
8307Disable the display of item numbers @var{dnums}. A disabled display
8308item is not printed automatically, but is not forgotten. It may be
c9174737
PA
8309enabled again later. Specify the numbers of the displays that you
8310want affected with the command argument @var{dnums}. It can be a
8311single display number, one of the numbers shown in the first field of
8312the @samp{info display} display; or it could be a range of display
8313numbers, as in @code{2-4}.
c906108c
SS
8314
8315@kindex enable display
8316@item enable display @var{dnums}@dots{}
8317Enable display of item numbers @var{dnums}. It becomes effective once
8318again in auto display of its expression, until you specify otherwise.
c9174737
PA
8319Specify the numbers of the displays that you want affected with the
8320command argument @var{dnums}. It can be a single display number, one
8321of the numbers shown in the first field of the @samp{info display}
8322display; or it could be a range of display numbers, as in @code{2-4}.
c906108c
SS
8323
8324@item display
8325Display the current values of the expressions on the list, just as is
8326done when your program stops.
8327
8328@kindex info display
8329@item info display
8330Print the list of expressions previously set up to display
8331automatically, each one with its item number, but without showing the
8332values. This includes disabled expressions, which are marked as such.
8333It also includes expressions which would not be displayed right now
8334because they refer to automatic variables not currently available.
8335@end table
8336
15387254 8337@cindex display disabled out of scope
c906108c
SS
8338If a display expression refers to local variables, then it does not make
8339sense outside the lexical context for which it was set up. Such an
8340expression is disabled when execution enters a context where one of its
8341variables is not defined. For example, if you give the command
8342@code{display last_char} while inside a function with an argument
8343@code{last_char}, @value{GDBN} displays this argument while your program
8344continues to stop inside that function. When it stops elsewhere---where
8345there is no variable @code{last_char}---the display is disabled
8346automatically. The next time your program stops where @code{last_char}
8347is meaningful, you can enable the display expression once again.
8348
6d2ebf8b 8349@node Print Settings
79a6e687 8350@section Print Settings
c906108c
SS
8351
8352@cindex format options
8353@cindex print settings
8354@value{GDBN} provides the following ways to control how arrays, structures,
8355and symbols are printed.
8356
8357@noindent
8358These settings are useful for debugging programs in any language:
8359
8360@table @code
4644b6e3 8361@kindex set print
c906108c
SS
8362@item set print address
8363@itemx set print address on
4644b6e3 8364@cindex print/don't print memory addresses
c906108c
SS
8365@value{GDBN} prints memory addresses showing the location of stack
8366traces, structure values, pointer values, breakpoints, and so forth,
8367even when it also displays the contents of those addresses. The default
8368is @code{on}. For example, this is what a stack frame display looks like with
8369@code{set print address on}:
8370
8371@smallexample
8372@group
8373(@value{GDBP}) f
8374#0 set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
8375 at input.c:530
8376530 if (lquote != def_lquote)
8377@end group
8378@end smallexample
8379
8380@item set print address off
8381Do not print addresses when displaying their contents. For example,
8382this is the same stack frame displayed with @code{set print address off}:
8383
8384@smallexample
8385@group
8386(@value{GDBP}) set print addr off
8387(@value{GDBP}) f
8388#0 set_quotes (lq="<<", rq=">>") at input.c:530
8389530 if (lquote != def_lquote)
8390@end group
8391@end smallexample
8392
8393You can use @samp{set print address off} to eliminate all machine
8394dependent displays from the @value{GDBN} interface. For example, with
8395@code{print address off}, you should get the same text for backtraces on
8396all machines---whether or not they involve pointer arguments.
8397
4644b6e3 8398@kindex show print
c906108c
SS
8399@item show print address
8400Show whether or not addresses are to be printed.
8401@end table
8402
8403When @value{GDBN} prints a symbolic address, it normally prints the
8404closest earlier symbol plus an offset. If that symbol does not uniquely
8405identify the address (for example, it is a name whose scope is a single
8406source file), you may need to clarify. One way to do this is with
8407@code{info line}, for example @samp{info line *0x4537}. Alternately,
8408you can set @value{GDBN} to print the source file and line number when
8409it prints a symbolic address:
8410
8411@table @code
c906108c 8412@item set print symbol-filename on
9c16f35a
EZ
8413@cindex source file and line of a symbol
8414@cindex symbol, source file and line
c906108c
SS
8415Tell @value{GDBN} to print the source file name and line number of a
8416symbol in the symbolic form of an address.
8417
8418@item set print symbol-filename off
8419Do not print source file name and line number of a symbol. This is the
8420default.
8421
c906108c
SS
8422@item show print symbol-filename
8423Show whether or not @value{GDBN} will print the source file name and
8424line number of a symbol in the symbolic form of an address.
8425@end table
8426
8427Another situation where it is helpful to show symbol filenames and line
8428numbers is when disassembling code; @value{GDBN} shows you the line
8429number and source file that corresponds to each instruction.
8430
8431Also, you may wish to see the symbolic form only if the address being
8432printed is reasonably close to the closest earlier symbol:
8433
8434@table @code
c906108c 8435@item set print max-symbolic-offset @var{max-offset}
4644b6e3 8436@cindex maximum value for offset of closest symbol
c906108c
SS
8437Tell @value{GDBN} to only display the symbolic form of an address if the
8438offset between the closest earlier symbol and the address is less than
5d161b24 8439@var{max-offset}. The default is 0, which tells @value{GDBN}
c906108c
SS
8440to always print the symbolic form of an address if any symbol precedes it.
8441
c906108c
SS
8442@item show print max-symbolic-offset
8443Ask how large the maximum offset is that @value{GDBN} prints in a
8444symbolic address.
8445@end table
8446
8447@cindex wild pointer, interpreting
8448@cindex pointer, finding referent
8449If you have a pointer and you are not sure where it points, try
8450@samp{set print symbol-filename on}. Then you can determine the name
8451and source file location of the variable where it points, using
8452@samp{p/a @var{pointer}}. This interprets the address in symbolic form.
8453For example, here @value{GDBN} shows that a variable @code{ptt} points
8454at another variable @code{t}, defined in @file{hi2.c}:
8455
474c8240 8456@smallexample
c906108c
SS
8457(@value{GDBP}) set print symbol-filename on
8458(@value{GDBP}) p/a ptt
8459$4 = 0xe008 <t in hi2.c>
474c8240 8460@end smallexample
c906108c
SS
8461
8462@quotation
8463@emph{Warning:} For pointers that point to a local variable, @samp{p/a}
8464does not show the symbol name and filename of the referent, even with
8465the appropriate @code{set print} options turned on.
8466@end quotation
8467
9cb709b6
TT
8468You can also enable @samp{/a}-like formatting all the time using
8469@samp{set print symbol on}:
8470
8471@table @code
8472@item set print symbol on
8473Tell @value{GDBN} to print the symbol corresponding to an address, if
8474one exists.
8475
8476@item set print symbol off
8477Tell @value{GDBN} not to print the symbol corresponding to an
8478address. In this mode, @value{GDBN} will still print the symbol
8479corresponding to pointers to functions. This is the default.
8480
8481@item show print symbol
8482Show whether @value{GDBN} will display the symbol corresponding to an
8483address.
8484@end table
8485
c906108c
SS
8486Other settings control how different kinds of objects are printed:
8487
8488@table @code
c906108c
SS
8489@item set print array
8490@itemx set print array on
4644b6e3 8491@cindex pretty print arrays
c906108c
SS
8492Pretty print arrays. This format is more convenient to read,
8493but uses more space. The default is off.
8494
8495@item set print array off
8496Return to compressed format for arrays.
8497
c906108c
SS
8498@item show print array
8499Show whether compressed or pretty format is selected for displaying
8500arrays.
8501
3c9c013a
JB
8502@cindex print array indexes
8503@item set print array-indexes
8504@itemx set print array-indexes on
8505Print the index of each element when displaying arrays. May be more
8506convenient to locate a given element in the array or quickly find the
8507index of a given element in that printed array. The default is off.
8508
8509@item set print array-indexes off
8510Stop printing element indexes when displaying arrays.
8511
8512@item show print array-indexes
8513Show whether the index of each element is printed when displaying
8514arrays.
8515
c906108c 8516@item set print elements @var{number-of-elements}
4644b6e3 8517@cindex number of array elements to print
9c16f35a 8518@cindex limit on number of printed array elements
c906108c
SS
8519Set a limit on how many elements of an array @value{GDBN} will print.
8520If @value{GDBN} is printing a large array, it stops printing after it has
8521printed the number of elements set by the @code{set print elements} command.
8522This limit also applies to the display of strings.
d4f3574e 8523When @value{GDBN} starts, this limit is set to 200.
c906108c
SS
8524Setting @var{number-of-elements} to zero means that the printing is unlimited.
8525
c906108c
SS
8526@item show print elements
8527Display the number of elements of a large array that @value{GDBN} will print.
8528If the number is 0, then the printing is unlimited.
8529
b4740add 8530@item set print frame-arguments @var{value}
a0381d3a 8531@kindex set print frame-arguments
b4740add
JB
8532@cindex printing frame argument values
8533@cindex print all frame argument values
8534@cindex print frame argument values for scalars only
8535@cindex do not print frame argument values
8536This command allows to control how the values of arguments are printed
8537when the debugger prints a frame (@pxref{Frames}). The possible
8538values are:
8539
8540@table @code
8541@item all
4f5376b2 8542The values of all arguments are printed.
b4740add
JB
8543
8544@item scalars
8545Print the value of an argument only if it is a scalar. The value of more
8546complex arguments such as arrays, structures, unions, etc, is replaced
4f5376b2
JB
8547by @code{@dots{}}. This is the default. Here is an example where
8548only scalar arguments are shown:
b4740add
JB
8549
8550@smallexample
8551#1 0x08048361 in call_me (i=3, s=@dots{}, ss=0xbf8d508c, u=@dots{}, e=green)
8552 at frame-args.c:23
8553@end smallexample
8554
8555@item none
8556None of the argument values are printed. Instead, the value of each argument
8557is replaced by @code{@dots{}}. In this case, the example above now becomes:
8558
8559@smallexample
8560#1 0x08048361 in call_me (i=@dots{}, s=@dots{}, ss=@dots{}, u=@dots{}, e=@dots{})
8561 at frame-args.c:23
8562@end smallexample
8563@end table
8564
4f5376b2
JB
8565By default, only scalar arguments are printed. This command can be used
8566to configure the debugger to print the value of all arguments, regardless
8567of their type. However, it is often advantageous to not print the value
8568of more complex parameters. For instance, it reduces the amount of
8569information printed in each frame, making the backtrace more readable.
8570Also, it improves performance when displaying Ada frames, because
8571the computation of large arguments can sometimes be CPU-intensive,
8572especially in large applications. Setting @code{print frame-arguments}
8573to @code{scalars} (the default) or @code{none} avoids this computation,
8574thus speeding up the display of each Ada frame.
b4740add
JB
8575
8576@item show print frame-arguments
8577Show how the value of arguments should be displayed when printing a frame.
8578
36b11add 8579@anchor{set print entry-values}
e18b2753
JK
8580@item set print entry-values @var{value}
8581@kindex set print entry-values
8582Set printing of frame argument values at function entry. In some cases
8583@value{GDBN} can determine the value of function argument which was passed by
8584the function caller, even if the value was modified inside the called function
8585and therefore is different. With optimized code, the current value could be
8586unavailable, but the entry value may still be known.
8587
8588The default value is @code{default} (see below for its description). Older
8589@value{GDBN} behaved as with the setting @code{no}. Compilers not supporting
8590this feature will behave in the @code{default} setting the same way as with the
8591@code{no} setting.
8592
8593This functionality is currently supported only by DWARF 2 debugging format and
8594the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With
8595@value{NGCC}, you need to specify @option{-O -g} during compilation, to get
8596this information.
8597
8598The @var{value} parameter can be one of the following:
8599
8600@table @code
8601@item no
8602Print only actual parameter values, never print values from function entry
8603point.
8604@smallexample
8605#0 equal (val=5)
8606#0 different (val=6)
8607#0 lost (val=<optimized out>)
8608#0 born (val=10)
8609#0 invalid (val=<optimized out>)
8610@end smallexample
8611
8612@item only
8613Print only parameter values from function entry point. The actual parameter
8614values are never printed.
8615@smallexample
8616#0 equal (val@@entry=5)
8617#0 different (val@@entry=5)
8618#0 lost (val@@entry=5)
8619#0 born (val@@entry=<optimized out>)
8620#0 invalid (val@@entry=<optimized out>)
8621@end smallexample
8622
8623@item preferred
8624Print only parameter values from function entry point. If value from function
8625entry point is not known while the actual value is known, print the actual
8626value for such parameter.
8627@smallexample
8628#0 equal (val@@entry=5)
8629#0 different (val@@entry=5)
8630#0 lost (val@@entry=5)
8631#0 born (val=10)
8632#0 invalid (val@@entry=<optimized out>)
8633@end smallexample
8634
8635@item if-needed
8636Print actual parameter values. If actual parameter value is not known while
8637value from function entry point is known, print the entry point value for such
8638parameter.
8639@smallexample
8640#0 equal (val=5)
8641#0 different (val=6)
8642#0 lost (val@@entry=5)
8643#0 born (val=10)
8644#0 invalid (val=<optimized out>)
8645@end smallexample
8646
8647@item both
8648Always print both the actual parameter value and its value from function entry
8649point, even if values of one or both are not available due to compiler
8650optimizations.
8651@smallexample
8652#0 equal (val=5, val@@entry=5)
8653#0 different (val=6, val@@entry=5)
8654#0 lost (val=<optimized out>, val@@entry=5)
8655#0 born (val=10, val@@entry=<optimized out>)
8656#0 invalid (val=<optimized out>, val@@entry=<optimized out>)
8657@end smallexample
8658
8659@item compact
8660Print the actual parameter value if it is known and also its value from
8661function entry point if it is known. If neither is known, print for the actual
8662value @code{<optimized out>}. If not in MI mode (@pxref{GDB/MI}) and if both
8663values are known and identical, print the shortened
8664@code{param=param@@entry=VALUE} notation.
8665@smallexample
8666#0 equal (val=val@@entry=5)
8667#0 different (val=6, val@@entry=5)
8668#0 lost (val@@entry=5)
8669#0 born (val=10)
8670#0 invalid (val=<optimized out>)
8671@end smallexample
8672
8673@item default
8674Always print the actual parameter value. Print also its value from function
8675entry point, but only if it is known. If not in MI mode (@pxref{GDB/MI}) and
8676if both values are known and identical, print the shortened
8677@code{param=param@@entry=VALUE} notation.
8678@smallexample
8679#0 equal (val=val@@entry=5)
8680#0 different (val=6, val@@entry=5)
8681#0 lost (val=<optimized out>, val@@entry=5)
8682#0 born (val=10)
8683#0 invalid (val=<optimized out>)
8684@end smallexample
8685@end table
8686
8687For analysis messages on possible failures of frame argument values at function
8688entry resolution see @ref{set debug entry-values}.
8689
8690@item show print entry-values
8691Show the method being used for printing of frame argument values at function
8692entry.
8693
9c16f35a
EZ
8694@item set print repeats
8695@cindex repeated array elements
8696Set the threshold for suppressing display of repeated array
d3e8051b 8697elements. When the number of consecutive identical elements of an
9c16f35a
EZ
8698array exceeds the threshold, @value{GDBN} prints the string
8699@code{"<repeats @var{n} times>"}, where @var{n} is the number of
8700identical repetitions, instead of displaying the identical elements
8701themselves. Setting the threshold to zero will cause all elements to
8702be individually printed. The default threshold is 10.
8703
8704@item show print repeats
8705Display the current threshold for printing repeated identical
8706elements.
8707
c906108c 8708@item set print null-stop
4644b6e3 8709@cindex @sc{null} elements in arrays
c906108c 8710Cause @value{GDBN} to stop printing the characters of an array when the first
d4f3574e 8711@sc{null} is encountered. This is useful when large arrays actually
c906108c 8712contain only short strings.
d4f3574e 8713The default is off.
c906108c 8714
9c16f35a
EZ
8715@item show print null-stop
8716Show whether @value{GDBN} stops printing an array on the first
8717@sc{null} character.
8718
c906108c 8719@item set print pretty on
9c16f35a
EZ
8720@cindex print structures in indented form
8721@cindex indentation in structure display
5d161b24 8722Cause @value{GDBN} to print structures in an indented format with one member
c906108c
SS
8723per line, like this:
8724
8725@smallexample
8726@group
8727$1 = @{
8728 next = 0x0,
8729 flags = @{
8730 sweet = 1,
8731 sour = 1
8732 @},
8733 meat = 0x54 "Pork"
8734@}
8735@end group
8736@end smallexample
8737
8738@item set print pretty off
8739Cause @value{GDBN} to print structures in a compact format, like this:
8740
8741@smallexample
8742@group
8743$1 = @{next = 0x0, flags = @{sweet = 1, sour = 1@}, \
8744meat = 0x54 "Pork"@}
8745@end group
8746@end smallexample
8747
8748@noindent
8749This is the default format.
8750
c906108c
SS
8751@item show print pretty
8752Show which format @value{GDBN} is using to print structures.
8753
c906108c 8754@item set print sevenbit-strings on
4644b6e3
EZ
8755@cindex eight-bit characters in strings
8756@cindex octal escapes in strings
c906108c
SS
8757Print using only seven-bit characters; if this option is set,
8758@value{GDBN} displays any eight-bit characters (in strings or
8759character values) using the notation @code{\}@var{nnn}. This setting is
8760best if you are working in English (@sc{ascii}) and you use the
8761high-order bit of characters as a marker or ``meta'' bit.
8762
8763@item set print sevenbit-strings off
8764Print full eight-bit characters. This allows the use of more
8765international character sets, and is the default.
8766
c906108c
SS
8767@item show print sevenbit-strings
8768Show whether or not @value{GDBN} is printing only seven-bit characters.
8769
c906108c 8770@item set print union on
4644b6e3 8771@cindex unions in structures, printing
9c16f35a
EZ
8772Tell @value{GDBN} to print unions which are contained in structures
8773and other unions. This is the default setting.
c906108c
SS
8774
8775@item set print union off
9c16f35a
EZ
8776Tell @value{GDBN} not to print unions which are contained in
8777structures and other unions. @value{GDBN} will print @code{"@{...@}"}
8778instead.
c906108c 8779
c906108c
SS
8780@item show print union
8781Ask @value{GDBN} whether or not it will print unions which are contained in
9c16f35a 8782structures and other unions.
c906108c
SS
8783
8784For example, given the declarations
8785
8786@smallexample
8787typedef enum @{Tree, Bug@} Species;
8788typedef enum @{Big_tree, Acorn, Seedling@} Tree_forms;
5d161b24 8789typedef enum @{Caterpillar, Cocoon, Butterfly@}
c906108c
SS
8790 Bug_forms;
8791
8792struct thing @{
8793 Species it;
8794 union @{
8795 Tree_forms tree;
8796 Bug_forms bug;
8797 @} form;
8798@};
8799
8800struct thing foo = @{Tree, @{Acorn@}@};
8801@end smallexample
8802
8803@noindent
8804with @code{set print union on} in effect @samp{p foo} would print
8805
8806@smallexample
8807$1 = @{it = Tree, form = @{tree = Acorn, bug = Cocoon@}@}
8808@end smallexample
8809
8810@noindent
8811and with @code{set print union off} in effect it would print
8812
8813@smallexample
8814$1 = @{it = Tree, form = @{...@}@}
8815@end smallexample
9c16f35a
EZ
8816
8817@noindent
8818@code{set print union} affects programs written in C-like languages
8819and in Pascal.
c906108c
SS
8820@end table
8821
c906108c
SS
8822@need 1000
8823@noindent
b37052ae 8824These settings are of interest when debugging C@t{++} programs:
c906108c
SS
8825
8826@table @code
4644b6e3 8827@cindex demangling C@t{++} names
c906108c
SS
8828@item set print demangle
8829@itemx set print demangle on
b37052ae 8830Print C@t{++} names in their source form rather than in the encoded
c906108c 8831(``mangled'') form passed to the assembler and linker for type-safe
d4f3574e 8832linkage. The default is on.
c906108c 8833
c906108c 8834@item show print demangle
b37052ae 8835Show whether C@t{++} names are printed in mangled or demangled form.
c906108c 8836
c906108c
SS
8837@item set print asm-demangle
8838@itemx set print asm-demangle on
b37052ae 8839Print C@t{++} names in their source form rather than their mangled form, even
c906108c
SS
8840in assembler code printouts such as instruction disassemblies.
8841The default is off.
8842
c906108c 8843@item show print asm-demangle
b37052ae 8844Show whether C@t{++} names in assembly listings are printed in mangled
c906108c
SS
8845or demangled form.
8846
b37052ae
EZ
8847@cindex C@t{++} symbol decoding style
8848@cindex symbol decoding style, C@t{++}
a8f24a35 8849@kindex set demangle-style
c906108c
SS
8850@item set demangle-style @var{style}
8851Choose among several encoding schemes used by different compilers to
b37052ae 8852represent C@t{++} names. The choices for @var{style} are currently:
c906108c
SS
8853
8854@table @code
8855@item auto
8856Allow @value{GDBN} to choose a decoding style by inspecting your program.
8857
8858@item gnu
b37052ae 8859Decode based on the @sc{gnu} C@t{++} compiler (@code{g++}) encoding algorithm.
c906108c 8860This is the default.
c906108c
SS
8861
8862@item hp
b37052ae 8863Decode based on the HP ANSI C@t{++} (@code{aCC}) encoding algorithm.
c906108c
SS
8864
8865@item lucid
b37052ae 8866Decode based on the Lucid C@t{++} compiler (@code{lcc}) encoding algorithm.
c906108c
SS
8867
8868@item arm
b37052ae 8869Decode using the algorithm in the @cite{C@t{++} Annotated Reference Manual}.
c906108c
SS
8870@strong{Warning:} this setting alone is not sufficient to allow
8871debugging @code{cfront}-generated executables. @value{GDBN} would
8872require further enhancement to permit that.
8873
8874@end table
8875If you omit @var{style}, you will see a list of possible formats.
8876
c906108c 8877@item show demangle-style
b37052ae 8878Display the encoding style currently in use for decoding C@t{++} symbols.
c906108c 8879
c906108c
SS
8880@item set print object
8881@itemx set print object on
4644b6e3 8882@cindex derived type of an object, printing
9c16f35a 8883@cindex display derived types
c906108c
SS
8884When displaying a pointer to an object, identify the @emph{actual}
8885(derived) type of the object rather than the @emph{declared} type, using
625c0d47
TT
8886the virtual function table. Note that the virtual function table is
8887required---this feature can only work for objects that have run-time
8888type identification; a single virtual method in the object's declared
8264ba82
AG
8889type is sufficient. Note that this setting is also taken into account when
8890working with variable objects via MI (@pxref{GDB/MI}).
c906108c
SS
8891
8892@item set print object off
8893Display only the declared type of objects, without reference to the
8894virtual function table. This is the default setting.
8895
c906108c
SS
8896@item show print object
8897Show whether actual, or declared, object types are displayed.
8898
c906108c
SS
8899@item set print static-members
8900@itemx set print static-members on
4644b6e3 8901@cindex static members of C@t{++} objects
b37052ae 8902Print static members when displaying a C@t{++} object. The default is on.
c906108c
SS
8903
8904@item set print static-members off
b37052ae 8905Do not print static members when displaying a C@t{++} object.
c906108c 8906
c906108c 8907@item show print static-members
9c16f35a
EZ
8908Show whether C@t{++} static members are printed or not.
8909
8910@item set print pascal_static-members
8911@itemx set print pascal_static-members on
d3e8051b
EZ
8912@cindex static members of Pascal objects
8913@cindex Pascal objects, static members display
9c16f35a
EZ
8914Print static members when displaying a Pascal object. The default is on.
8915
8916@item set print pascal_static-members off
8917Do not print static members when displaying a Pascal object.
8918
8919@item show print pascal_static-members
8920Show whether Pascal static members are printed or not.
c906108c
SS
8921
8922@c These don't work with HP ANSI C++ yet.
c906108c
SS
8923@item set print vtbl
8924@itemx set print vtbl on
4644b6e3 8925@cindex pretty print C@t{++} virtual function tables
9c16f35a
EZ
8926@cindex virtual functions (C@t{++}) display
8927@cindex VTBL display
b37052ae 8928Pretty print C@t{++} virtual function tables. The default is off.
c906108c 8929(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 8930ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
8931
8932@item set print vtbl off
b37052ae 8933Do not pretty print C@t{++} virtual function tables.
c906108c 8934
c906108c 8935@item show print vtbl
b37052ae 8936Show whether C@t{++} virtual function tables are pretty printed, or not.
c906108c 8937@end table
c906108c 8938
4c374409
JK
8939@node Pretty Printing
8940@section Pretty Printing
8941
8942@value{GDBN} provides a mechanism to allow pretty-printing of values using
8943Python code. It greatly simplifies the display of complex objects. This
8944mechanism works for both MI and the CLI.
8945
7b51bc51
DE
8946@menu
8947* Pretty-Printer Introduction:: Introduction to pretty-printers
8948* Pretty-Printer Example:: An example pretty-printer
8949* Pretty-Printer Commands:: Pretty-printer commands
8950@end menu
8951
8952@node Pretty-Printer Introduction
8953@subsection Pretty-Printer Introduction
8954
8955When @value{GDBN} prints a value, it first sees if there is a pretty-printer
8956registered for the value. If there is then @value{GDBN} invokes the
8957pretty-printer to print the value. Otherwise the value is printed normally.
8958
8959Pretty-printers are normally named. This makes them easy to manage.
8960The @samp{info pretty-printer} command will list all the installed
8961pretty-printers with their names.
8962If a pretty-printer can handle multiple data types, then its
8963@dfn{subprinters} are the printers for the individual data types.
8964Each such subprinter has its own name.
4e04c971 8965The format of the name is @var{printer-name};@var{subprinter-name}.
7b51bc51
DE
8966
8967Pretty-printers are installed by @dfn{registering} them with @value{GDBN}.
8968Typically they are automatically loaded and registered when the corresponding
8969debug information is loaded, thus making them available without having to
8970do anything special.
8971
8972There are three places where a pretty-printer can be registered.
8973
8974@itemize @bullet
8975@item
8976Pretty-printers registered globally are available when debugging
8977all inferiors.
8978
8979@item
8980Pretty-printers registered with a program space are available only
8981when debugging that program.
8982@xref{Progspaces In Python}, for more details on program spaces in Python.
8983
8984@item
8985Pretty-printers registered with an objfile are loaded and unloaded
8986with the corresponding objfile (e.g., shared library).
8987@xref{Objfiles In Python}, for more details on objfiles in Python.
8988@end itemize
8989
8990@xref{Selecting Pretty-Printers}, for further information on how
8991pretty-printers are selected,
8992
8993@xref{Writing a Pretty-Printer}, for implementing pretty printers
8994for new types.
8995
8996@node Pretty-Printer Example
8997@subsection Pretty-Printer Example
8998
8999Here is how a C@t{++} @code{std::string} looks without a pretty-printer:
4c374409
JK
9000
9001@smallexample
9002(@value{GDBP}) print s
9003$1 = @{
9004 static npos = 4294967295,
9005 _M_dataplus = @{
9006 <std::allocator<char>> = @{
9007 <__gnu_cxx::new_allocator<char>> = @{
9008 <No data fields>@}, <No data fields>
9009 @},
9010 members of std::basic_string<char, std::char_traits<char>,
9011 std::allocator<char> >::_Alloc_hider:
9012 _M_p = 0x804a014 "abcd"
9013 @}
9014@}
9015@end smallexample
9016
9017With a pretty-printer for @code{std::string} only the contents are printed:
9018
9019@smallexample
9020(@value{GDBP}) print s
9021$2 = "abcd"
9022@end smallexample
9023
7b51bc51
DE
9024@node Pretty-Printer Commands
9025@subsection Pretty-Printer Commands
9026@cindex pretty-printer commands
9027
9028@table @code
9029@kindex info pretty-printer
9030@item info pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9031Print the list of installed pretty-printers.
9032This includes disabled pretty-printers, which are marked as such.
9033
9034@var{object-regexp} is a regular expression matching the objects
9035whose pretty-printers to list.
9036Objects can be @code{global}, the program space's file
9037(@pxref{Progspaces In Python}),
9038and the object files within that program space (@pxref{Objfiles In Python}).
9039@xref{Selecting Pretty-Printers}, for details on how @value{GDBN}
9040looks up a printer from these three objects.
9041
9042@var{name-regexp} is a regular expression matching the name of the printers
9043to list.
9044
9045@kindex disable pretty-printer
9046@item disable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9047Disable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
9048A disabled pretty-printer is not forgotten, it may be enabled again later.
9049
9050@kindex enable pretty-printer
9051@item enable pretty-printer [@var{object-regexp} [@var{name-regexp}]]
9052Enable pretty-printers matching @var{object-regexp} and @var{name-regexp}.
9053@end table
9054
9055Example:
9056
9057Suppose we have three pretty-printers installed: one from library1.so
9058named @code{foo} that prints objects of type @code{foo}, and
9059another from library2.so named @code{bar} that prints two types of objects,
9060@code{bar1} and @code{bar2}.
9061
9062@smallexample
9063(gdb) info pretty-printer
9064library1.so:
9065 foo
9066library2.so:
9067 bar
9068 bar1
9069 bar2
9070(gdb) info pretty-printer library2
9071library2.so:
9072 bar
9073 bar1
9074 bar2
9075(gdb) disable pretty-printer library1
90761 printer disabled
90772 of 3 printers enabled
9078(gdb) info pretty-printer
9079library1.so:
9080 foo [disabled]
9081library2.so:
9082 bar
9083 bar1
9084 bar2
9085(gdb) disable pretty-printer library2 bar:bar1
90861 printer disabled
90871 of 3 printers enabled
9088(gdb) info pretty-printer library2
9089library1.so:
9090 foo [disabled]
9091library2.so:
9092 bar
9093 bar1 [disabled]
9094 bar2
9095(gdb) disable pretty-printer library2 bar
90961 printer disabled
90970 of 3 printers enabled
9098(gdb) info pretty-printer library2
9099library1.so:
9100 foo [disabled]
9101library2.so:
9102 bar [disabled]
9103 bar1 [disabled]
9104 bar2
9105@end smallexample
9106
9107Note that for @code{bar} the entire printer can be disabled,
9108as can each individual subprinter.
4c374409 9109
6d2ebf8b 9110@node Value History
79a6e687 9111@section Value History
c906108c
SS
9112
9113@cindex value history
9c16f35a 9114@cindex history of values printed by @value{GDBN}
5d161b24
DB
9115Values printed by the @code{print} command are saved in the @value{GDBN}
9116@dfn{value history}. This allows you to refer to them in other expressions.
9117Values are kept until the symbol table is re-read or discarded
9118(for example with the @code{file} or @code{symbol-file} commands).
9119When the symbol table changes, the value history is discarded,
9120since the values may contain pointers back to the types defined in the
c906108c
SS
9121symbol table.
9122
9123@cindex @code{$}
9124@cindex @code{$$}
9125@cindex history number
9126The values printed are given @dfn{history numbers} by which you can
9127refer to them. These are successive integers starting with one.
9128@code{print} shows you the history number assigned to a value by
9129printing @samp{$@var{num} = } before the value; here @var{num} is the
9130history number.
9131
9132To refer to any previous value, use @samp{$} followed by the value's
9133history number. The way @code{print} labels its output is designed to
9134remind you of this. Just @code{$} refers to the most recent value in
9135the history, and @code{$$} refers to the value before that.
9136@code{$$@var{n}} refers to the @var{n}th value from the end; @code{$$2}
9137is the value just prior to @code{$$}, @code{$$1} is equivalent to
9138@code{$$}, and @code{$$0} is equivalent to @code{$}.
9139
9140For example, suppose you have just printed a pointer to a structure and
9141want to see the contents of the structure. It suffices to type
9142
474c8240 9143@smallexample
c906108c 9144p *$
474c8240 9145@end smallexample
c906108c
SS
9146
9147If you have a chain of structures where the component @code{next} points
9148to the next one, you can print the contents of the next one with this:
9149
474c8240 9150@smallexample
c906108c 9151p *$.next
474c8240 9152@end smallexample
c906108c
SS
9153
9154@noindent
9155You can print successive links in the chain by repeating this
9156command---which you can do by just typing @key{RET}.
9157
9158Note that the history records values, not expressions. If the value of
9159@code{x} is 4 and you type these commands:
9160
474c8240 9161@smallexample
c906108c
SS
9162print x
9163set x=5
474c8240 9164@end smallexample
c906108c
SS
9165
9166@noindent
9167then the value recorded in the value history by the @code{print} command
9168remains 4 even though the value of @code{x} has changed.
9169
9170@table @code
9171@kindex show values
9172@item show values
9173Print the last ten values in the value history, with their item numbers.
9174This is like @samp{p@ $$9} repeated ten times, except that @code{show
9175values} does not change the history.
9176
9177@item show values @var{n}
9178Print ten history values centered on history item number @var{n}.
9179
9180@item show values +
9181Print ten history values just after the values last printed. If no more
9182values are available, @code{show values +} produces no display.
9183@end table
9184
9185Pressing @key{RET} to repeat @code{show values @var{n}} has exactly the
9186same effect as @samp{show values +}.
9187
6d2ebf8b 9188@node Convenience Vars
79a6e687 9189@section Convenience Variables
c906108c
SS
9190
9191@cindex convenience variables
9c16f35a 9192@cindex user-defined variables
c906108c
SS
9193@value{GDBN} provides @dfn{convenience variables} that you can use within
9194@value{GDBN} to hold on to a value and refer to it later. These variables
9195exist entirely within @value{GDBN}; they are not part of your program, and
9196setting a convenience variable has no direct effect on further execution
9197of your program. That is why you can use them freely.
9198
9199Convenience variables are prefixed with @samp{$}. Any name preceded by
9200@samp{$} can be used for a convenience variable, unless it is one of
d4f3574e 9201the predefined machine-specific register names (@pxref{Registers, ,Registers}).
c906108c 9202(Value history references, in contrast, are @emph{numbers} preceded
79a6e687 9203by @samp{$}. @xref{Value History, ,Value History}.)
c906108c
SS
9204
9205You can save a value in a convenience variable with an assignment
9206expression, just as you would set a variable in your program.
9207For example:
9208
474c8240 9209@smallexample
c906108c 9210set $foo = *object_ptr
474c8240 9211@end smallexample
c906108c
SS
9212
9213@noindent
9214would save in @code{$foo} the value contained in the object pointed to by
9215@code{object_ptr}.
9216
9217Using a convenience variable for the first time creates it, but its
9218value is @code{void} until you assign a new value. You can alter the
9219value with another assignment at any time.
9220
9221Convenience variables have no fixed types. You can assign a convenience
9222variable any type of value, including structures and arrays, even if
9223that variable already has a value of a different type. The convenience
9224variable, when used as an expression, has the type of its current value.
9225
9226@table @code
9227@kindex show convenience
f47f77df 9228@cindex show all user variables and functions
c906108c 9229@item show convenience
f47f77df
DE
9230Print a list of convenience variables used so far, and their values,
9231as well as a list of the convenience functions.
d4f3574e 9232Abbreviated @code{show conv}.
53e5f3cf
AS
9233
9234@kindex init-if-undefined
9235@cindex convenience variables, initializing
9236@item init-if-undefined $@var{variable} = @var{expression}
9237Set a convenience variable if it has not already been set. This is useful
9238for user-defined commands that keep some state. It is similar, in concept,
9239to using local static variables with initializers in C (except that
9240convenience variables are global). It can also be used to allow users to
9241override default values used in a command script.
9242
9243If the variable is already defined then the expression is not evaluated so
9244any side-effects do not occur.
c906108c
SS
9245@end table
9246
9247One of the ways to use a convenience variable is as a counter to be
9248incremented or a pointer to be advanced. For example, to print
9249a field from successive elements of an array of structures:
9250
474c8240 9251@smallexample
c906108c
SS
9252set $i = 0
9253print bar[$i++]->contents
474c8240 9254@end smallexample
c906108c 9255
d4f3574e
SS
9256@noindent
9257Repeat that command by typing @key{RET}.
c906108c
SS
9258
9259Some convenience variables are created automatically by @value{GDBN} and given
9260values likely to be useful.
9261
9262@table @code
41afff9a 9263@vindex $_@r{, convenience variable}
c906108c
SS
9264@item $_
9265The variable @code{$_} is automatically set by the @code{x} command to
79a6e687 9266the last address examined (@pxref{Memory, ,Examining Memory}). Other
c906108c
SS
9267commands which provide a default address for @code{x} to examine also
9268set @code{$_} to that address; these commands include @code{info line}
9269and @code{info breakpoint}. The type of @code{$_} is @code{void *}
9270except when set by the @code{x} command, in which case it is a pointer
9271to the type of @code{$__}.
9272
41afff9a 9273@vindex $__@r{, convenience variable}
c906108c
SS
9274@item $__
9275The variable @code{$__} is automatically set by the @code{x} command
9276to the value found in the last address examined. Its type is chosen
9277to match the format in which the data was printed.
9278
9279@item $_exitcode
41afff9a 9280@vindex $_exitcode@r{, convenience variable}
c906108c
SS
9281The variable @code{$_exitcode} is automatically set to the exit code when
9282the program being debugged terminates.
4aa995e1 9283
62e5f89c
SDJ
9284@item $_probe_argc
9285@itemx $_probe_arg0@dots{}$_probe_arg11
9286Arguments to a static probe. @xref{Static Probe Points}.
9287
0fb4aa4b
PA
9288@item $_sdata
9289@vindex $_sdata@r{, inspect, convenience variable}
9290The variable @code{$_sdata} contains extra collected static tracepoint
9291data. @xref{Tracepoint Actions,,Tracepoint Action Lists}. Note that
9292@code{$_sdata} could be empty, if not inspecting a trace buffer, or
9293if extra static tracepoint data has not been collected.
9294
4aa995e1
PA
9295@item $_siginfo
9296@vindex $_siginfo@r{, convenience variable}
ec7e75e7
PP
9297The variable @code{$_siginfo} contains extra signal information
9298(@pxref{extra signal information}). Note that @code{$_siginfo}
9299could be empty, if the application has not yet received any signals.
9300For example, it will be empty before you execute the @code{run} command.
711e434b
PM
9301
9302@item $_tlb
9303@vindex $_tlb@r{, convenience variable}
9304The variable @code{$_tlb} is automatically set when debugging
9305applications running on MS-Windows in native mode or connected to
9306gdbserver that supports the @code{qGetTIBAddr} request.
9307@xref{General Query Packets}.
9308This variable contains the address of the thread information block.
9309
c906108c
SS
9310@end table
9311
53a5351d
JM
9312On HP-UX systems, if you refer to a function or variable name that
9313begins with a dollar sign, @value{GDBN} searches for a user or system
9314name first, before it searches for a convenience variable.
c906108c 9315
a72c3253
DE
9316@node Convenience Funs
9317@section Convenience Functions
9318
bc3b79fd
TJB
9319@cindex convenience functions
9320@value{GDBN} also supplies some @dfn{convenience functions}. These
9321have a syntax similar to convenience variables. A convenience
9322function can be used in an expression just like an ordinary function;
9323however, a convenience function is implemented internally to
9324@value{GDBN}.
9325
a72c3253
DE
9326These functions require @value{GDBN} to be configured with
9327@code{Python} support.
9328
9329@table @code
9330
9331@item $_memeq(@var{buf1}, @var{buf2}, @var{length})
9332@findex $_memeq@r{, convenience function}
9333Returns one if the @var{length} bytes at the addresses given by
9334@var{buf1} and @var{buf2} are equal.
9335Otherwise it returns zero.
9336
9337@item $_regex(@var{str}, @var{regex})
9338@findex $_regex@r{, convenience function}
9339Returns one if the string @var{str} matches the regular expression
9340@var{regex}. Otherwise it returns zero.
9341The syntax of the regular expression is that specified by @code{Python}'s
9342regular expression support.
9343
9344@item $_streq(@var{str1}, @var{str2})
9345@findex $_streq@r{, convenience function}
9346Returns one if the strings @var{str1} and @var{str2} are equal.
9347Otherwise it returns zero.
9348
9349@item $_strlen(@var{str})
9350@findex $_strlen@r{, convenience function}
9351Returns the length of string @var{str}.
9352
9353@end table
9354
9355@value{GDBN} provides the ability to list and get help on
9356convenience functions.
9357
bc3b79fd
TJB
9358@table @code
9359@item help function
9360@kindex help function
9361@cindex show all convenience functions
9362Print a list of all convenience functions.
9363@end table
9364
6d2ebf8b 9365@node Registers
c906108c
SS
9366@section Registers
9367
9368@cindex registers
9369You can refer to machine register contents, in expressions, as variables
9370with names starting with @samp{$}. The names of registers are different
9371for each machine; use @code{info registers} to see the names used on
9372your machine.
9373
9374@table @code
9375@kindex info registers
9376@item info registers
9377Print the names and values of all registers except floating-point
c85508ee 9378and vector registers (in the selected stack frame).
c906108c
SS
9379
9380@kindex info all-registers
9381@cindex floating point registers
9382@item info all-registers
9383Print the names and values of all registers, including floating-point
c85508ee 9384and vector registers (in the selected stack frame).
c906108c
SS
9385
9386@item info registers @var{regname} @dots{}
9387Print the @dfn{relativized} value of each specified register @var{regname}.
5d161b24
DB
9388As discussed in detail below, register values are normally relative to
9389the selected stack frame. @var{regname} may be any register name valid on
c906108c
SS
9390the machine you are using, with or without the initial @samp{$}.
9391@end table
9392
e09f16f9
EZ
9393@cindex stack pointer register
9394@cindex program counter register
9395@cindex process status register
9396@cindex frame pointer register
9397@cindex standard registers
c906108c
SS
9398@value{GDBN} has four ``standard'' register names that are available (in
9399expressions) on most machines---whenever they do not conflict with an
9400architecture's canonical mnemonics for registers. The register names
9401@code{$pc} and @code{$sp} are used for the program counter register and
9402the stack pointer. @code{$fp} is used for a register that contains a
9403pointer to the current stack frame, and @code{$ps} is used for a
9404register that contains the processor status. For example,
9405you could print the program counter in hex with
9406
474c8240 9407@smallexample
c906108c 9408p/x $pc
474c8240 9409@end smallexample
c906108c
SS
9410
9411@noindent
9412or print the instruction to be executed next with
9413
474c8240 9414@smallexample
c906108c 9415x/i $pc
474c8240 9416@end smallexample
c906108c
SS
9417
9418@noindent
9419or add four to the stack pointer@footnote{This is a way of removing
9420one word from the stack, on machines where stacks grow downward in
9421memory (most machines, nowadays). This assumes that the innermost
9422stack frame is selected; setting @code{$sp} is not allowed when other
9423stack frames are selected. To pop entire frames off the stack,
9424regardless of machine architecture, use @code{return};
79a6e687 9425see @ref{Returning, ,Returning from a Function}.} with
c906108c 9426
474c8240 9427@smallexample
c906108c 9428set $sp += 4
474c8240 9429@end smallexample
c906108c
SS
9430
9431Whenever possible, these four standard register names are available on
9432your machine even though the machine has different canonical mnemonics,
9433so long as there is no conflict. The @code{info registers} command
9434shows the canonical names. For example, on the SPARC, @code{info
9435registers} displays the processor status register as @code{$psr} but you
d4f3574e
SS
9436can also refer to it as @code{$ps}; and on x86-based machines @code{$ps}
9437is an alias for the @sc{eflags} register.
c906108c
SS
9438
9439@value{GDBN} always considers the contents of an ordinary register as an
9440integer when the register is examined in this way. Some machines have
9441special registers which can hold nothing but floating point; these
9442registers are considered to have floating point values. There is no way
9443to refer to the contents of an ordinary register as floating point value
9444(although you can @emph{print} it as a floating point value with
9445@samp{print/f $@var{regname}}).
9446
9447Some registers have distinct ``raw'' and ``virtual'' data formats. This
9448means that the data format in which the register contents are saved by
9449the operating system is not the same one that your program normally
9450sees. For example, the registers of the 68881 floating point
9451coprocessor are always saved in ``extended'' (raw) format, but all C
9452programs expect to work with ``double'' (virtual) format. In such
5d161b24 9453cases, @value{GDBN} normally works with the virtual format only (the format
c906108c
SS
9454that makes sense for your program), but the @code{info registers} command
9455prints the data in both formats.
9456
36b80e65
EZ
9457@cindex SSE registers (x86)
9458@cindex MMX registers (x86)
9459Some machines have special registers whose contents can be interpreted
9460in several different ways. For example, modern x86-based machines
9461have SSE and MMX registers that can hold several values packed
9462together in several different formats. @value{GDBN} refers to such
9463registers in @code{struct} notation:
9464
9465@smallexample
9466(@value{GDBP}) print $xmm1
9467$1 = @{
9468 v4_float = @{0, 3.43859137e-038, 1.54142831e-044, 1.821688e-044@},
9469 v2_double = @{9.92129282474342e-303, 2.7585945287983262e-313@},
9470 v16_int8 = "\000\000\000\000\3706;\001\v\000\000\000\r\000\000",
9471 v8_int16 = @{0, 0, 14072, 315, 11, 0, 13, 0@},
9472 v4_int32 = @{0, 20657912, 11, 13@},
9473 v2_int64 = @{88725056443645952, 55834574859@},
9474 uint128 = 0x0000000d0000000b013b36f800000000
9475@}
9476@end smallexample
9477
9478@noindent
9479To set values of such registers, you need to tell @value{GDBN} which
9480view of the register you wish to change, as if you were assigning
9481value to a @code{struct} member:
9482
9483@smallexample
9484 (@value{GDBP}) set $xmm1.uint128 = 0x000000000000000000000000FFFFFFFF
9485@end smallexample
9486
c906108c 9487Normally, register values are relative to the selected stack frame
79a6e687 9488(@pxref{Selection, ,Selecting a Frame}). This means that you get the
c906108c
SS
9489value that the register would contain if all stack frames farther in
9490were exited and their saved registers restored. In order to see the
9491true contents of hardware registers, you must select the innermost
9492frame (with @samp{frame 0}).
9493
9494However, @value{GDBN} must deduce where registers are saved, from the machine
9495code generated by your compiler. If some registers are not saved, or if
9496@value{GDBN} is unable to locate the saved registers, the selected stack
9497frame makes no difference.
9498
6d2ebf8b 9499@node Floating Point Hardware
79a6e687 9500@section Floating Point Hardware
c906108c
SS
9501@cindex floating point
9502
9503Depending on the configuration, @value{GDBN} may be able to give
9504you more information about the status of the floating point hardware.
9505
9506@table @code
9507@kindex info float
9508@item info float
9509Display hardware-dependent information about the floating
9510point unit. The exact contents and layout vary depending on the
9511floating point chip. Currently, @samp{info float} is supported on
9512the ARM and x86 machines.
9513@end table
c906108c 9514
e76f1f2e
AC
9515@node Vector Unit
9516@section Vector Unit
9517@cindex vector unit
9518
9519Depending on the configuration, @value{GDBN} may be able to give you
9520more information about the status of the vector unit.
9521
9522@table @code
9523@kindex info vector
9524@item info vector
9525Display information about the vector unit. The exact contents and
9526layout vary depending on the hardware.
9527@end table
9528
721c2651 9529@node OS Information
79a6e687 9530@section Operating System Auxiliary Information
721c2651
EZ
9531@cindex OS information
9532
9533@value{GDBN} provides interfaces to useful OS facilities that can help
9534you debug your program.
9535
9536@cindex @code{ptrace} system call
9537@cindex @code{struct user} contents
9538When @value{GDBN} runs on a @dfn{Posix system} (such as GNU or Unix
9539machines), it interfaces with the inferior via the @code{ptrace}
9540system call. The operating system creates a special sata structure,
9541called @code{struct user}, for this interface. You can use the
9542command @code{info udot} to display the contents of this data
9543structure.
9544
9545@table @code
9546@item info udot
9547@kindex info udot
9548Display the contents of the @code{struct user} maintained by the OS
9549kernel for the program being debugged. @value{GDBN} displays the
9550contents of @code{struct user} as a list of hex numbers, similar to
9551the @code{examine} command.
9552@end table
9553
b383017d
RM
9554@cindex auxiliary vector
9555@cindex vector, auxiliary
b383017d
RM
9556Some operating systems supply an @dfn{auxiliary vector} to programs at
9557startup. This is akin to the arguments and environment that you
9558specify for a program, but contains a system-dependent variety of
9559binary values that tell system libraries important details about the
9560hardware, operating system, and process. Each value's purpose is
9561identified by an integer tag; the meanings are well-known but system-specific.
9562Depending on the configuration and operating system facilities,
9c16f35a
EZ
9563@value{GDBN} may be able to show you this information. For remote
9564targets, this functionality may further depend on the remote stub's
427c3a89
DJ
9565support of the @samp{qXfer:auxv:read} packet, see
9566@ref{qXfer auxiliary vector read}.
b383017d
RM
9567
9568@table @code
9569@kindex info auxv
9570@item info auxv
9571Display the auxiliary vector of the inferior, which can be either a
e4937fc1 9572live process or a core dump file. @value{GDBN} prints each tag value
b383017d
RM
9573numerically, and also shows names and text descriptions for recognized
9574tags. Some values in the vector are numbers, some bit masks, and some
e4937fc1 9575pointers to strings or other data. @value{GDBN} displays each value in the
b383017d
RM
9576most appropriate form for a recognized tag, and in hexadecimal for
9577an unrecognized tag.
9578@end table
9579
85d4a676
SS
9580On some targets, @value{GDBN} can access operating system-specific
9581information and show it to you. The types of information available
9582will differ depending on the type of operating system running on the
9583target. The mechanism used to fetch the data is described in
9584@ref{Operating System Information}. For remote targets, this
9585functionality depends on the remote stub's support of the
07e059b5
VP
9586@samp{qXfer:osdata:read} packet, see @ref{qXfer osdata read}.
9587
9588@table @code
a61408f8 9589@kindex info os
85d4a676
SS
9590@item info os @var{infotype}
9591
9592Display OS information of the requested type.
a61408f8 9593
85d4a676
SS
9594On @sc{gnu}/Linux, the following values of @var{infotype} are valid:
9595
9596@anchor{linux info os infotypes}
9597@table @code
07e059b5 9598@kindex info os processes
85d4a676 9599@item processes
07e059b5 9600Display the list of processes on the target. For each process,
85d4a676
SS
9601@value{GDBN} prints the process identifier, the name of the user, the
9602command corresponding to the process, and the list of processor cores
9603that the process is currently running on. (To understand what these
9604properties mean, for this and the following info types, please consult
9605the general @sc{gnu}/Linux documentation.)
9606
9607@kindex info os procgroups
9608@item procgroups
9609Display the list of process groups on the target. For each process,
9610@value{GDBN} prints the identifier of the process group that it belongs
9611to, the command corresponding to the process group leader, the process
9612identifier, and the command line of the process. The list is sorted
9613first by the process group identifier, then by the process identifier,
9614so that processes belonging to the same process group are grouped together
9615and the process group leader is listed first.
9616
9617@kindex info os threads
9618@item threads
9619Display the list of threads running on the target. For each thread,
9620@value{GDBN} prints the identifier of the process that the thread
9621belongs to, the command of the process, the thread identifier, and the
9622processor core that it is currently running on. The main thread of a
9623process is not listed.
9624
9625@kindex info os files
9626@item files
9627Display the list of open file descriptors on the target. For each
9628file descriptor, @value{GDBN} prints the identifier of the process
9629owning the descriptor, the command of the owning process, the value
9630of the descriptor, and the target of the descriptor.
9631
9632@kindex info os sockets
9633@item sockets
9634Display the list of Internet-domain sockets on the target. For each
9635socket, @value{GDBN} prints the address and port of the local and
9636remote endpoints, the current state of the connection, the creator of
9637the socket, the IP address family of the socket, and the type of the
9638connection.
9639
9640@kindex info os shm
9641@item shm
9642Display the list of all System V shared-memory regions on the target.
9643For each shared-memory region, @value{GDBN} prints the region key,
9644the shared-memory identifier, the access permissions, the size of the
9645region, the process that created the region, the process that last
9646attached to or detached from the region, the current number of live
9647attaches to the region, and the times at which the region was last
9648attached to, detach from, and changed.
9649
9650@kindex info os semaphores
9651@item semaphores
9652Display the list of all System V semaphore sets on the target. For each
9653semaphore set, @value{GDBN} prints the semaphore set key, the semaphore
9654set identifier, the access permissions, the number of semaphores in the
9655set, the user and group of the owner and creator of the semaphore set,
9656and the times at which the semaphore set was operated upon and changed.
9657
9658@kindex info os msg
9659@item msg
9660Display the list of all System V message queues on the target. For each
9661message queue, @value{GDBN} prints the message queue key, the message
9662queue identifier, the access permissions, the current number of bytes
9663on the queue, the current number of messages on the queue, the processes
9664that last sent and received a message on the queue, the user and group
9665of the owner and creator of the message queue, the times at which a
9666message was last sent and received on the queue, and the time at which
9667the message queue was last changed.
9668
9669@kindex info os modules
9670@item modules
9671Display the list of all loaded kernel modules on the target. For each
9672module, @value{GDBN} prints the module name, the size of the module in
9673bytes, the number of times the module is used, the dependencies of the
9674module, the status of the module, and the address of the loaded module
9675in memory.
9676@end table
9677
9678@item info os
9679If @var{infotype} is omitted, then list the possible values for
9680@var{infotype} and the kind of OS information available for each
9681@var{infotype}. If the target does not return a list of possible
9682types, this command will report an error.
07e059b5 9683@end table
721c2651 9684
29e57380 9685@node Memory Region Attributes
79a6e687 9686@section Memory Region Attributes
29e57380
C
9687@cindex memory region attributes
9688
b383017d 9689@dfn{Memory region attributes} allow you to describe special handling
fd79ecee
DJ
9690required by regions of your target's memory. @value{GDBN} uses
9691attributes to determine whether to allow certain types of memory
9692accesses; whether to use specific width accesses; and whether to cache
9693target memory. By default the description of memory regions is
9694fetched from the target (if the current target supports this), but the
9695user can override the fetched regions.
29e57380
C
9696
9697Defined memory regions can be individually enabled and disabled. When a
9698memory region is disabled, @value{GDBN} uses the default attributes when
9699accessing memory in that region. Similarly, if no memory regions have
9700been defined, @value{GDBN} uses the default attributes when accessing
9701all memory.
9702
b383017d 9703When a memory region is defined, it is given a number to identify it;
29e57380
C
9704to enable, disable, or remove a memory region, you specify that number.
9705
9706@table @code
9707@kindex mem
bfac230e 9708@item mem @var{lower} @var{upper} @var{attributes}@dots{}
09d4efe1
EZ
9709Define a memory region bounded by @var{lower} and @var{upper} with
9710attributes @var{attributes}@dots{}, and add it to the list of regions
9711monitored by @value{GDBN}. Note that @var{upper} == 0 is a special
d3e8051b 9712case: it is treated as the target's maximum memory address.
bfac230e 9713(0xffff on 16 bit targets, 0xffffffff on 32 bit targets, etc.)
29e57380 9714
fd79ecee
DJ
9715@item mem auto
9716Discard any user changes to the memory regions and use target-supplied
9717regions, if available, or no regions if the target does not support.
9718
29e57380
C
9719@kindex delete mem
9720@item delete mem @var{nums}@dots{}
09d4efe1
EZ
9721Remove memory regions @var{nums}@dots{} from the list of regions
9722monitored by @value{GDBN}.
29e57380
C
9723
9724@kindex disable mem
9725@item disable mem @var{nums}@dots{}
09d4efe1 9726Disable monitoring of memory regions @var{nums}@dots{}.
b383017d 9727A disabled memory region is not forgotten.
29e57380
C
9728It may be enabled again later.
9729
9730@kindex enable mem
9731@item enable mem @var{nums}@dots{}
09d4efe1 9732Enable monitoring of memory regions @var{nums}@dots{}.
29e57380
C
9733
9734@kindex info mem
9735@item info mem
9736Print a table of all defined memory regions, with the following columns
09d4efe1 9737for each region:
29e57380
C
9738
9739@table @emph
9740@item Memory Region Number
9741@item Enabled or Disabled.
b383017d 9742Enabled memory regions are marked with @samp{y}.
29e57380
C
9743Disabled memory regions are marked with @samp{n}.
9744
9745@item Lo Address
9746The address defining the inclusive lower bound of the memory region.
9747
9748@item Hi Address
9749The address defining the exclusive upper bound of the memory region.
9750
9751@item Attributes
9752The list of attributes set for this memory region.
9753@end table
9754@end table
9755
9756
9757@subsection Attributes
9758
b383017d 9759@subsubsection Memory Access Mode
29e57380
C
9760The access mode attributes set whether @value{GDBN} may make read or
9761write accesses to a memory region.
9762
9763While these attributes prevent @value{GDBN} from performing invalid
9764memory accesses, they do nothing to prevent the target system, I/O DMA,
359df76b 9765etc.@: from accessing memory.
29e57380
C
9766
9767@table @code
9768@item ro
9769Memory is read only.
9770@item wo
9771Memory is write only.
9772@item rw
6ca652b0 9773Memory is read/write. This is the default.
29e57380
C
9774@end table
9775
9776@subsubsection Memory Access Size
d3e8051b 9777The access size attribute tells @value{GDBN} to use specific sized
29e57380
C
9778accesses in the memory region. Often memory mapped device registers
9779require specific sized accesses. If no access size attribute is
9780specified, @value{GDBN} may use accesses of any size.
9781
9782@table @code
9783@item 8
9784Use 8 bit memory accesses.
9785@item 16
9786Use 16 bit memory accesses.
9787@item 32
9788Use 32 bit memory accesses.
9789@item 64
9790Use 64 bit memory accesses.
9791@end table
9792
9793@c @subsubsection Hardware/Software Breakpoints
9794@c The hardware/software breakpoint attributes set whether @value{GDBN}
9795@c will use hardware or software breakpoints for the internal breakpoints
9796@c used by the step, next, finish, until, etc. commands.
9797@c
9798@c @table @code
9799@c @item hwbreak
b383017d 9800@c Always use hardware breakpoints
29e57380
C
9801@c @item swbreak (default)
9802@c @end table
9803
9804@subsubsection Data Cache
9805The data cache attributes set whether @value{GDBN} will cache target
9806memory. While this generally improves performance by reducing debug
9807protocol overhead, it can lead to incorrect results because @value{GDBN}
9808does not know about volatile variables or memory mapped device
9809registers.
9810
9811@table @code
9812@item cache
b383017d 9813Enable @value{GDBN} to cache target memory.
6ca652b0
EZ
9814@item nocache
9815Disable @value{GDBN} from caching target memory. This is the default.
29e57380
C
9816@end table
9817
4b5752d0
VP
9818@subsection Memory Access Checking
9819@value{GDBN} can be instructed to refuse accesses to memory that is
9820not explicitly described. This can be useful if accessing such
9821regions has undesired effects for a specific target, or to provide
9822better error checking. The following commands control this behaviour.
9823
9824@table @code
9825@kindex set mem inaccessible-by-default
9826@item set mem inaccessible-by-default [on|off]
9827If @code{on} is specified, make @value{GDBN} treat memory not
9828explicitly described by the memory ranges as non-existent and refuse accesses
9829to such memory. The checks are only performed if there's at least one
9830memory range defined. If @code{off} is specified, make @value{GDBN}
9831treat the memory not explicitly described by the memory ranges as RAM.
56cf5405 9832The default value is @code{on}.
4b5752d0
VP
9833@kindex show mem inaccessible-by-default
9834@item show mem inaccessible-by-default
9835Show the current handling of accesses to unknown memory.
9836@end table
9837
9838
29e57380 9839@c @subsubsection Memory Write Verification
b383017d 9840@c The memory write verification attributes set whether @value{GDBN}
29e57380
C
9841@c will re-reads data after each write to verify the write was successful.
9842@c
9843@c @table @code
9844@c @item verify
9845@c @item noverify (default)
9846@c @end table
9847
16d9dec6 9848@node Dump/Restore Files
79a6e687 9849@section Copy Between Memory and a File
16d9dec6
MS
9850@cindex dump/restore files
9851@cindex append data to a file
9852@cindex dump data to a file
9853@cindex restore data from a file
16d9dec6 9854
df5215a6
JB
9855You can use the commands @code{dump}, @code{append}, and
9856@code{restore} to copy data between target memory and a file. The
9857@code{dump} and @code{append} commands write data to a file, and the
9858@code{restore} command reads data from a file back into the inferior's
9859memory. Files may be in binary, Motorola S-record, Intel hex, or
9860Tektronix Hex format; however, @value{GDBN} can only append to binary
9861files.
9862
9863@table @code
9864
9865@kindex dump
9866@item dump @r{[}@var{format}@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
9867@itemx dump @r{[}@var{format}@r{]} value @var{filename} @var{expr}
9868Dump the contents of memory from @var{start_addr} to @var{end_addr},
9869or the value of @var{expr}, to @var{filename} in the given format.
16d9dec6 9870
df5215a6 9871The @var{format} parameter may be any one of:
16d9dec6 9872@table @code
df5215a6
JB
9873@item binary
9874Raw binary form.
9875@item ihex
9876Intel hex format.
9877@item srec
9878Motorola S-record format.
9879@item tekhex
9880Tektronix Hex format.
9881@end table
9882
9883@value{GDBN} uses the same definitions of these formats as the
9884@sc{gnu} binary utilities, like @samp{objdump} and @samp{objcopy}. If
9885@var{format} is omitted, @value{GDBN} dumps the data in raw binary
9886form.
9887
9888@kindex append
9889@item append @r{[}binary@r{]} memory @var{filename} @var{start_addr} @var{end_addr}
9890@itemx append @r{[}binary@r{]} value @var{filename} @var{expr}
9891Append the contents of memory from @var{start_addr} to @var{end_addr},
09d4efe1 9892or the value of @var{expr}, to the file @var{filename}, in raw binary form.
df5215a6
JB
9893(@value{GDBN} can only append data to files in raw binary form.)
9894
9895@kindex restore
9896@item restore @var{filename} @r{[}binary@r{]} @var{bias} @var{start} @var{end}
9897Restore the contents of file @var{filename} into memory. The
9898@code{restore} command can automatically recognize any known @sc{bfd}
9899file format, except for raw binary. To restore a raw binary file you
9900must specify the optional keyword @code{binary} after the filename.
16d9dec6 9901
b383017d 9902If @var{bias} is non-zero, its value will be added to the addresses
16d9dec6
MS
9903contained in the file. Binary files always start at address zero, so
9904they will be restored at address @var{bias}. Other bfd files have
9905a built-in location; they will be restored at offset @var{bias}
9906from that location.
9907
9908If @var{start} and/or @var{end} are non-zero, then only data between
9909file offset @var{start} and file offset @var{end} will be restored.
b383017d 9910These offsets are relative to the addresses in the file, before
16d9dec6
MS
9911the @var{bias} argument is applied.
9912
9913@end table
9914
384ee23f
EZ
9915@node Core File Generation
9916@section How to Produce a Core File from Your Program
9917@cindex dump core from inferior
9918
9919A @dfn{core file} or @dfn{core dump} is a file that records the memory
9920image of a running process and its process status (register values
9921etc.). Its primary use is post-mortem debugging of a program that
9922crashed while it ran outside a debugger. A program that crashes
9923automatically produces a core file, unless this feature is disabled by
9924the user. @xref{Files}, for information on invoking @value{GDBN} in
9925the post-mortem debugging mode.
9926
9927Occasionally, you may wish to produce a core file of the program you
9928are debugging in order to preserve a snapshot of its state.
9929@value{GDBN} has a special command for that.
9930
9931@table @code
9932@kindex gcore
9933@kindex generate-core-file
9934@item generate-core-file [@var{file}]
9935@itemx gcore [@var{file}]
9936Produce a core dump of the inferior process. The optional argument
9937@var{file} specifies the file name where to put the core dump. If not
9938specified, the file name defaults to @file{core.@var{pid}}, where
9939@var{pid} is the inferior process ID.
9940
9941Note that this command is implemented only for some systems (as of
9942this writing, @sc{gnu}/Linux, FreeBSD, Solaris, Unixware, and S390).
9943@end table
9944
a0eb71c5
KB
9945@node Character Sets
9946@section Character Sets
9947@cindex character sets
9948@cindex charset
9949@cindex translating between character sets
9950@cindex host character set
9951@cindex target character set
9952
9953If the program you are debugging uses a different character set to
9954represent characters and strings than the one @value{GDBN} uses itself,
9955@value{GDBN} can automatically translate between the character sets for
9956you. The character set @value{GDBN} uses we call the @dfn{host
9957character set}; the one the inferior program uses we call the
9958@dfn{target character set}.
9959
9960For example, if you are running @value{GDBN} on a @sc{gnu}/Linux system, which
9961uses the ISO Latin 1 character set, but you are using @value{GDBN}'s
ea35711c 9962remote protocol (@pxref{Remote Debugging}) to debug a program
a0eb71c5
KB
9963running on an IBM mainframe, which uses the @sc{ebcdic} character set,
9964then the host character set is Latin-1, and the target character set is
9965@sc{ebcdic}. If you give @value{GDBN} the command @code{set
e33d66ec 9966target-charset EBCDIC-US}, then @value{GDBN} translates between
a0eb71c5
KB
9967@sc{ebcdic} and Latin 1 as you print character or string values, or use
9968character and string literals in expressions.
9969
9970@value{GDBN} has no way to automatically recognize which character set
9971the inferior program uses; you must tell it, using the @code{set
9972target-charset} command, described below.
9973
9974Here are the commands for controlling @value{GDBN}'s character set
9975support:
9976
9977@table @code
9978@item set target-charset @var{charset}
9979@kindex set target-charset
10af6951
EZ
9980Set the current target character set to @var{charset}. To display the
9981list of supported target character sets, type
9982@kbd{@w{set target-charset @key{TAB}@key{TAB}}}.
a0eb71c5 9983
a0eb71c5
KB
9984@item set host-charset @var{charset}
9985@kindex set host-charset
9986Set the current host character set to @var{charset}.
9987
9988By default, @value{GDBN} uses a host character set appropriate to the
9989system it is running on; you can override that default using the
732f6a93
TT
9990@code{set host-charset} command. On some systems, @value{GDBN} cannot
9991automatically determine the appropriate host character set. In this
9992case, @value{GDBN} uses @samp{UTF-8}.
a0eb71c5
KB
9993
9994@value{GDBN} can only use certain character sets as its host character
c1b6b909 9995set. If you type @kbd{@w{set host-charset @key{TAB}@key{TAB}}},
10af6951 9996@value{GDBN} will list the host character sets it supports.
a0eb71c5
KB
9997
9998@item set charset @var{charset}
9999@kindex set charset
e33d66ec 10000Set the current host and target character sets to @var{charset}. As
10af6951
EZ
10001above, if you type @kbd{@w{set charset @key{TAB}@key{TAB}}},
10002@value{GDBN} will list the names of the character sets that can be used
e33d66ec
EZ
10003for both host and target.
10004
a0eb71c5 10005@item show charset
a0eb71c5 10006@kindex show charset
10af6951 10007Show the names of the current host and target character sets.
e33d66ec 10008
10af6951 10009@item show host-charset
a0eb71c5 10010@kindex show host-charset
10af6951 10011Show the name of the current host character set.
e33d66ec 10012
10af6951 10013@item show target-charset
a0eb71c5 10014@kindex show target-charset
10af6951 10015Show the name of the current target character set.
a0eb71c5 10016
10af6951
EZ
10017@item set target-wide-charset @var{charset}
10018@kindex set target-wide-charset
10019Set the current target's wide character set to @var{charset}. This is
10020the character set used by the target's @code{wchar_t} type. To
10021display the list of supported wide character sets, type
10022@kbd{@w{set target-wide-charset @key{TAB}@key{TAB}}}.
10023
10024@item show target-wide-charset
10025@kindex show target-wide-charset
10026Show the name of the current target's wide character set.
a0eb71c5
KB
10027@end table
10028
a0eb71c5
KB
10029Here is an example of @value{GDBN}'s character set support in action.
10030Assume that the following source code has been placed in the file
10031@file{charset-test.c}:
10032
10033@smallexample
10034#include <stdio.h>
10035
10036char ascii_hello[]
10037 = @{72, 101, 108, 108, 111, 44, 32, 119,
10038 111, 114, 108, 100, 33, 10, 0@};
10039char ibm1047_hello[]
10040 = @{200, 133, 147, 147, 150, 107, 64, 166,
10041 150, 153, 147, 132, 90, 37, 0@};
10042
10043main ()
10044@{
10045 printf ("Hello, world!\n");
10046@}
10998722 10047@end smallexample
a0eb71c5
KB
10048
10049In this program, @code{ascii_hello} and @code{ibm1047_hello} are arrays
10050containing the string @samp{Hello, world!} followed by a newline,
10051encoded in the @sc{ascii} and @sc{ibm1047} character sets.
10052
10053We compile the program, and invoke the debugger on it:
10054
10055@smallexample
10056$ gcc -g charset-test.c -o charset-test
10057$ gdb -nw charset-test
10058GNU gdb 2001-12-19-cvs
10059Copyright 2001 Free Software Foundation, Inc.
10060@dots{}
f7dc1244 10061(@value{GDBP})
10998722 10062@end smallexample
a0eb71c5
KB
10063
10064We can use the @code{show charset} command to see what character sets
10065@value{GDBN} is currently using to interpret and display characters and
10066strings:
10067
10068@smallexample
f7dc1244 10069(@value{GDBP}) show charset
e33d66ec 10070The current host and target character set is `ISO-8859-1'.
f7dc1244 10071(@value{GDBP})
10998722 10072@end smallexample
a0eb71c5
KB
10073
10074For the sake of printing this manual, let's use @sc{ascii} as our
10075initial character set:
10076@smallexample
f7dc1244
EZ
10077(@value{GDBP}) set charset ASCII
10078(@value{GDBP}) show charset
e33d66ec 10079The current host and target character set is `ASCII'.
f7dc1244 10080(@value{GDBP})
10998722 10081@end smallexample
a0eb71c5
KB
10082
10083Let's assume that @sc{ascii} is indeed the correct character set for our
10084host system --- in other words, let's assume that if @value{GDBN} prints
10085characters using the @sc{ascii} character set, our terminal will display
10086them properly. Since our current target character set is also
10087@sc{ascii}, the contents of @code{ascii_hello} print legibly:
10088
10089@smallexample
f7dc1244 10090(@value{GDBP}) print ascii_hello
a0eb71c5 10091$1 = 0x401698 "Hello, world!\n"
f7dc1244 10092(@value{GDBP}) print ascii_hello[0]
a0eb71c5 10093$2 = 72 'H'
f7dc1244 10094(@value{GDBP})
10998722 10095@end smallexample
a0eb71c5
KB
10096
10097@value{GDBN} uses the target character set for character and string
10098literals you use in expressions:
10099
10100@smallexample
f7dc1244 10101(@value{GDBP}) print '+'
a0eb71c5 10102$3 = 43 '+'
f7dc1244 10103(@value{GDBP})
10998722 10104@end smallexample
a0eb71c5
KB
10105
10106The @sc{ascii} character set uses the number 43 to encode the @samp{+}
10107character.
10108
10109@value{GDBN} relies on the user to tell it which character set the
10110target program uses. If we print @code{ibm1047_hello} while our target
10111character set is still @sc{ascii}, we get jibberish:
10112
10113@smallexample
f7dc1244 10114(@value{GDBP}) print ibm1047_hello
a0eb71c5 10115$4 = 0x4016a8 "\310\205\223\223\226k@@\246\226\231\223\204Z%"
f7dc1244 10116(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 10117$5 = 200 '\310'
f7dc1244 10118(@value{GDBP})
10998722 10119@end smallexample
a0eb71c5 10120
e33d66ec 10121If we invoke the @code{set target-charset} followed by @key{TAB}@key{TAB},
a0eb71c5
KB
10122@value{GDBN} tells us the character sets it supports:
10123
10124@smallexample
f7dc1244 10125(@value{GDBP}) set target-charset
b383017d 10126ASCII EBCDIC-US IBM1047 ISO-8859-1
f7dc1244 10127(@value{GDBP}) set target-charset
10998722 10128@end smallexample
a0eb71c5
KB
10129
10130We can select @sc{ibm1047} as our target character set, and examine the
10131program's strings again. Now the @sc{ascii} string is wrong, but
10132@value{GDBN} translates the contents of @code{ibm1047_hello} from the
10133target character set, @sc{ibm1047}, to the host character set,
10134@sc{ascii}, and they display correctly:
10135
10136@smallexample
f7dc1244
EZ
10137(@value{GDBP}) set target-charset IBM1047
10138(@value{GDBP}) show charset
e33d66ec
EZ
10139The current host character set is `ASCII'.
10140The current target character set is `IBM1047'.
f7dc1244 10141(@value{GDBP}) print ascii_hello
a0eb71c5 10142$6 = 0x401698 "\110\145%%?\054\040\167?\162%\144\041\012"
f7dc1244 10143(@value{GDBP}) print ascii_hello[0]
a0eb71c5 10144$7 = 72 '\110'
f7dc1244 10145(@value{GDBP}) print ibm1047_hello
a0eb71c5 10146$8 = 0x4016a8 "Hello, world!\n"
f7dc1244 10147(@value{GDBP}) print ibm1047_hello[0]
a0eb71c5 10148$9 = 200 'H'
f7dc1244 10149(@value{GDBP})
10998722 10150@end smallexample
a0eb71c5
KB
10151
10152As above, @value{GDBN} uses the target character set for character and
10153string literals you use in expressions:
10154
10155@smallexample
f7dc1244 10156(@value{GDBP}) print '+'
a0eb71c5 10157$10 = 78 '+'
f7dc1244 10158(@value{GDBP})
10998722 10159@end smallexample
a0eb71c5 10160
e33d66ec 10161The @sc{ibm1047} character set uses the number 78 to encode the @samp{+}
a0eb71c5
KB
10162character.
10163
09d4efe1
EZ
10164@node Caching Remote Data
10165@section Caching Data of Remote Targets
10166@cindex caching data of remote targets
10167
4e5d721f 10168@value{GDBN} caches data exchanged between the debugger and a
ea35711c 10169remote target (@pxref{Remote Debugging}). Such caching generally improves
09d4efe1 10170performance, because it reduces the overhead of the remote protocol by
4e5d721f
DE
10171bundling memory reads and writes into large chunks. Unfortunately, simply
10172caching everything would lead to incorrect results, since @value{GDBN}
10173does not necessarily know anything about volatile values, memory-mapped I/O
29b090c0
DE
10174addresses, etc. Furthermore, in non-stop mode (@pxref{Non-Stop Mode})
10175memory can be changed @emph{while} a gdb command is executing.
10176Therefore, by default, @value{GDBN} only caches data
10177known to be on the stack@footnote{In non-stop mode, it is moderately
10178rare for a running thread to modify the stack of a stopped thread
10179in a way that would interfere with a backtrace, and caching of
10180stack reads provides a significant speed up of remote backtraces.}.
10181Other regions of memory can be explicitly marked as
4e5d721f 10182cacheable; see @pxref{Memory Region Attributes}.
09d4efe1
EZ
10183
10184@table @code
10185@kindex set remotecache
10186@item set remotecache on
10187@itemx set remotecache off
4e5d721f
DE
10188This option no longer does anything; it exists for compatibility
10189with old scripts.
09d4efe1
EZ
10190
10191@kindex show remotecache
10192@item show remotecache
4e5d721f
DE
10193Show the current state of the obsolete remotecache flag.
10194
10195@kindex set stack-cache
10196@item set stack-cache on
10197@itemx set stack-cache off
10198Enable or disable caching of stack accesses. When @code{ON}, use
10199caching. By default, this option is @code{ON}.
10200
10201@kindex show stack-cache
10202@item show stack-cache
10203Show the current state of data caching for memory accesses.
09d4efe1
EZ
10204
10205@kindex info dcache
4e5d721f 10206@item info dcache @r{[}line@r{]}
09d4efe1 10207Print the information about the data cache performance. The
4e5d721f
DE
10208information displayed includes the dcache width and depth, and for
10209each cache line, its number, address, and how many times it was
10210referenced. This command is useful for debugging the data cache
10211operation.
10212
10213If a line number is specified, the contents of that line will be
10214printed in hex.
1a532630
PP
10215
10216@item set dcache size @var{size}
10217@cindex dcache size
10218@kindex set dcache size
10219Set maximum number of entries in dcache (dcache depth above).
10220
10221@item set dcache line-size @var{line-size}
10222@cindex dcache line-size
10223@kindex set dcache line-size
10224Set number of bytes each dcache entry caches (dcache width above).
10225Must be a power of 2.
10226
10227@item show dcache size
10228@kindex show dcache size
10229Show maximum number of dcache entries. See also @ref{Caching Remote Data, info dcache}.
10230
10231@item show dcache line-size
10232@kindex show dcache line-size
10233Show default size of dcache lines. See also @ref{Caching Remote Data, info dcache}.
10234
09d4efe1
EZ
10235@end table
10236
08388c79
DE
10237@node Searching Memory
10238@section Search Memory
10239@cindex searching memory
10240
10241Memory can be searched for a particular sequence of bytes with the
10242@code{find} command.
10243
10244@table @code
10245@kindex find
10246@item find @r{[}/@var{sn}@r{]} @var{start_addr}, +@var{len}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
10247@itemx find @r{[}/@var{sn}@r{]} @var{start_addr}, @var{end_addr}, @var{val1} @r{[}, @var{val2}, @dots{}@r{]}
10248Search memory for the sequence of bytes specified by @var{val1}, @var{val2},
10249etc. The search begins at address @var{start_addr} and continues for either
10250@var{len} bytes or through to @var{end_addr} inclusive.
10251@end table
10252
10253@var{s} and @var{n} are optional parameters.
10254They may be specified in either order, apart or together.
10255
10256@table @r
10257@item @var{s}, search query size
10258The size of each search query value.
10259
10260@table @code
10261@item b
10262bytes
10263@item h
10264halfwords (two bytes)
10265@item w
10266words (four bytes)
10267@item g
10268giant words (eight bytes)
10269@end table
10270
10271All values are interpreted in the current language.
10272This means, for example, that if the current source language is C/C@t{++}
10273then searching for the string ``hello'' includes the trailing '\0'.
10274
10275If the value size is not specified, it is taken from the
10276value's type in the current language.
10277This is useful when one wants to specify the search
10278pattern as a mixture of types.
10279Note that this means, for example, that in the case of C-like languages
10280a search for an untyped 0x42 will search for @samp{(int) 0x42}
10281which is typically four bytes.
10282
10283@item @var{n}, maximum number of finds
10284The maximum number of matches to print. The default is to print all finds.
10285@end table
10286
10287You can use strings as search values. Quote them with double-quotes
10288 (@code{"}).
10289The string value is copied into the search pattern byte by byte,
10290regardless of the endianness of the target and the size specification.
10291
10292The address of each match found is printed as well as a count of the
10293number of matches found.
10294
10295The address of the last value found is stored in convenience variable
10296@samp{$_}.
10297A count of the number of matches is stored in @samp{$numfound}.
10298
10299For example, if stopped at the @code{printf} in this function:
10300
10301@smallexample
10302void
10303hello ()
10304@{
10305 static char hello[] = "hello-hello";
10306 static struct @{ char c; short s; int i; @}
10307 __attribute__ ((packed)) mixed
10308 = @{ 'c', 0x1234, 0x87654321 @};
10309 printf ("%s\n", hello);
10310@}
10311@end smallexample
10312
10313@noindent
10314you get during debugging:
10315
10316@smallexample
10317(gdb) find &hello[0], +sizeof(hello), "hello"
103180x804956d <hello.1620+6>
103191 pattern found
10320(gdb) find &hello[0], +sizeof(hello), 'h', 'e', 'l', 'l', 'o'
103210x8049567 <hello.1620>
103220x804956d <hello.1620+6>
103232 patterns found
10324(gdb) find /b1 &hello[0], +sizeof(hello), 'h', 0x65, 'l'
103250x8049567 <hello.1620>
103261 pattern found
10327(gdb) find &mixed, +sizeof(mixed), (char) 'c', (short) 0x1234, (int) 0x87654321
103280x8049560 <mixed.1625>
103291 pattern found
10330(gdb) print $numfound
10331$1 = 1
10332(gdb) print $_
10333$2 = (void *) 0x8049560
10334@end smallexample
a0eb71c5 10335
edb3359d
DJ
10336@node Optimized Code
10337@chapter Debugging Optimized Code
10338@cindex optimized code, debugging
10339@cindex debugging optimized code
10340
10341Almost all compilers support optimization. With optimization
10342disabled, the compiler generates assembly code that corresponds
10343directly to your source code, in a simplistic way. As the compiler
10344applies more powerful optimizations, the generated assembly code
10345diverges from your original source code. With help from debugging
10346information generated by the compiler, @value{GDBN} can map from
10347the running program back to constructs from your original source.
10348
10349@value{GDBN} is more accurate with optimization disabled. If you
10350can recompile without optimization, it is easier to follow the
10351progress of your program during debugging. But, there are many cases
10352where you may need to debug an optimized version.
10353
10354When you debug a program compiled with @samp{-g -O}, remember that the
10355optimizer has rearranged your code; the debugger shows you what is
10356really there. Do not be too surprised when the execution path does not
10357exactly match your source file! An extreme example: if you define a
10358variable, but never use it, @value{GDBN} never sees that
10359variable---because the compiler optimizes it out of existence.
10360
10361Some things do not work as well with @samp{-g -O} as with just
10362@samp{-g}, particularly on machines with instruction scheduling. If in
10363doubt, recompile with @samp{-g} alone, and if this fixes the problem,
10364please report it to us as a bug (including a test case!).
10365@xref{Variables}, for more information about debugging optimized code.
10366
10367@menu
10368* Inline Functions:: How @value{GDBN} presents inlining
111c6489 10369* Tail Call Frames:: @value{GDBN} analysis of jumps to functions
edb3359d
DJ
10370@end menu
10371
10372@node Inline Functions
10373@section Inline Functions
10374@cindex inline functions, debugging
10375
10376@dfn{Inlining} is an optimization that inserts a copy of the function
10377body directly at each call site, instead of jumping to a shared
10378routine. @value{GDBN} displays inlined functions just like
10379non-inlined functions. They appear in backtraces. You can view their
10380arguments and local variables, step into them with @code{step}, skip
10381them with @code{next}, and escape from them with @code{finish}.
10382You can check whether a function was inlined by using the
10383@code{info frame} command.
10384
10385For @value{GDBN} to support inlined functions, the compiler must
10386record information about inlining in the debug information ---
10387@value{NGCC} using the @sc{dwarf 2} format does this, and several
10388other compilers do also. @value{GDBN} only supports inlined functions
10389when using @sc{dwarf 2}. Versions of @value{NGCC} before 4.1
10390do not emit two required attributes (@samp{DW_AT_call_file} and
10391@samp{DW_AT_call_line}); @value{GDBN} does not display inlined
10392function calls with earlier versions of @value{NGCC}. It instead
10393displays the arguments and local variables of inlined functions as
10394local variables in the caller.
10395
10396The body of an inlined function is directly included at its call site;
10397unlike a non-inlined function, there are no instructions devoted to
10398the call. @value{GDBN} still pretends that the call site and the
10399start of the inlined function are different instructions. Stepping to
10400the call site shows the call site, and then stepping again shows
10401the first line of the inlined function, even though no additional
10402instructions are executed.
10403
10404This makes source-level debugging much clearer; you can see both the
10405context of the call and then the effect of the call. Only stepping by
10406a single instruction using @code{stepi} or @code{nexti} does not do
10407this; single instruction steps always show the inlined body.
10408
10409There are some ways that @value{GDBN} does not pretend that inlined
10410function calls are the same as normal calls:
10411
10412@itemize @bullet
edb3359d
DJ
10413@item
10414Setting breakpoints at the call site of an inlined function may not
10415work, because the call site does not contain any code. @value{GDBN}
10416may incorrectly move the breakpoint to the next line of the enclosing
10417function, after the call. This limitation will be removed in a future
10418version of @value{GDBN}; until then, set a breakpoint on an earlier line
10419or inside the inlined function instead.
10420
10421@item
10422@value{GDBN} cannot locate the return value of inlined calls after
10423using the @code{finish} command. This is a limitation of compiler-generated
10424debugging information; after @code{finish}, you can step to the next line
10425and print a variable where your program stored the return value.
10426
10427@end itemize
10428
111c6489
JK
10429@node Tail Call Frames
10430@section Tail Call Frames
10431@cindex tail call frames, debugging
10432
10433Function @code{B} can call function @code{C} in its very last statement. In
10434unoptimized compilation the call of @code{C} is immediately followed by return
10435instruction at the end of @code{B} code. Optimizing compiler may replace the
10436call and return in function @code{B} into one jump to function @code{C}
10437instead. Such use of a jump instruction is called @dfn{tail call}.
10438
10439During execution of function @code{C}, there will be no indication in the
10440function call stack frames that it was tail-called from @code{B}. If function
10441@code{A} regularly calls function @code{B} which tail-calls function @code{C},
10442then @value{GDBN} will see @code{A} as the caller of @code{C}. However, in
10443some cases @value{GDBN} can determine that @code{C} was tail-called from
10444@code{B}, and it will then create fictitious call frame for that, with the
10445return address set up as if @code{B} called @code{C} normally.
10446
10447This functionality is currently supported only by DWARF 2 debugging format and
10448the compiler has to produce @samp{DW_TAG_GNU_call_site} tags. With
10449@value{NGCC}, you need to specify @option{-O -g} during compilation, to get
10450this information.
10451
10452@kbd{info frame} command (@pxref{Frame Info}) will indicate the tail call frame
10453kind by text @code{tail call frame} such as in this sample @value{GDBN} output:
10454
10455@smallexample
10456(gdb) x/i $pc - 2
10457 0x40066b <b(int, double)+11>: jmp 0x400640 <c(int, double)>
10458(gdb) info frame
10459Stack level 1, frame at 0x7fffffffda30:
10460 rip = 0x40066d in b (amd64-entry-value.cc:59); saved rip 0x4004c5
10461 tail call frame, caller of frame at 0x7fffffffda30
10462 source language c++.
10463 Arglist at unknown address.
10464 Locals at unknown address, Previous frame's sp is 0x7fffffffda30
10465@end smallexample
10466
10467The detection of all the possible code path executions can find them ambiguous.
10468There is no execution history stored (possible @ref{Reverse Execution} is never
10469used for this purpose) and the last known caller could have reached the known
10470callee by multiple different jump sequences. In such case @value{GDBN} still
10471tries to show at least all the unambiguous top tail callers and all the
10472unambiguous bottom tail calees, if any.
10473
10474@table @code
e18b2753 10475@anchor{set debug entry-values}
111c6489
JK
10476@item set debug entry-values
10477@kindex set debug entry-values
10478When set to on, enables printing of analysis messages for both frame argument
10479values at function entry and tail calls. It will show all the possible valid
10480tail calls code paths it has considered. It will also print the intersection
10481of them with the final unambiguous (possibly partial or even empty) code path
10482result.
10483
10484@item show debug entry-values
10485@kindex show debug entry-values
10486Show the current state of analysis messages printing for both frame argument
10487values at function entry and tail calls.
10488@end table
10489
10490The analysis messages for tail calls can for example show why the virtual tail
10491call frame for function @code{c} has not been recognized (due to the indirect
10492reference by variable @code{x}):
10493
10494@smallexample
10495static void __attribute__((noinline, noclone)) c (void);
10496void (*x) (void) = c;
10497static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
10498static void __attribute__((noinline, noclone)) c (void) @{ a (); @}
10499int main (void) @{ x (); return 0; @}
10500
10501Breakpoint 1, DW_OP_GNU_entry_value resolving cannot find
10502DW_TAG_GNU_call_site 0x40039a in main
10503a () at t.c:3
105043 static void __attribute__((noinline, noclone)) a (void) @{ x++; @}
10505(gdb) bt
10506#0 a () at t.c:3
10507#1 0x000000000040039a in main () at t.c:5
10508@end smallexample
10509
10510Another possibility is an ambiguous virtual tail call frames resolution:
10511
10512@smallexample
10513int i;
10514static void __attribute__((noinline, noclone)) f (void) @{ i++; @}
10515static void __attribute__((noinline, noclone)) e (void) @{ f (); @}
10516static void __attribute__((noinline, noclone)) d (void) @{ f (); @}
10517static void __attribute__((noinline, noclone)) c (void) @{ d (); @}
10518static void __attribute__((noinline, noclone)) b (void)
10519@{ if (i) c (); else e (); @}
10520static void __attribute__((noinline, noclone)) a (void) @{ b (); @}
10521int main (void) @{ a (); return 0; @}
10522
10523tailcall: initial: 0x4004d2(a) 0x4004ce(b) 0x4004b2(c) 0x4004a2(d)
10524tailcall: compare: 0x4004d2(a) 0x4004cc(b) 0x400492(e)
10525tailcall: reduced: 0x4004d2(a) |
10526(gdb) bt
10527#0 f () at t.c:2
10528#1 0x00000000004004d2 in a () at t.c:8
10529#2 0x0000000000400395 in main () at t.c:9
10530@end smallexample
10531
5048e516
JK
10532@set CALLSEQ1A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}c@value{ARROW}d@value{ARROW}f}
10533@set CALLSEQ2A @code{main@value{ARROW}a@value{ARROW}b@value{ARROW}e@value{ARROW}f}
10534
10535@c Convert CALLSEQ#A to CALLSEQ#B depending on HAVE_MAKEINFO_CLICK.
10536@ifset HAVE_MAKEINFO_CLICK
10537@set ARROW @click{}
10538@set CALLSEQ1B @clicksequence{@value{CALLSEQ1A}}
10539@set CALLSEQ2B @clicksequence{@value{CALLSEQ2A}}
10540@end ifset
10541@ifclear HAVE_MAKEINFO_CLICK
10542@set ARROW ->
10543@set CALLSEQ1B @value{CALLSEQ1A}
10544@set CALLSEQ2B @value{CALLSEQ2A}
10545@end ifclear
10546
10547Frames #0 and #2 are real, #1 is a virtual tail call frame.
10548The code can have possible execution paths @value{CALLSEQ1B} or
10549@value{CALLSEQ2B}, @value{GDBN} cannot find which one from the inferior state.
111c6489
JK
10550
10551@code{initial:} state shows some random possible calling sequence @value{GDBN}
10552has found. It then finds another possible calling sequcen - that one is
10553prefixed by @code{compare:}. The non-ambiguous intersection of these two is
10554printed as the @code{reduced:} calling sequence. That one could have many
10555futher @code{compare:} and @code{reduced:} statements as long as there remain
10556any non-ambiguous sequence entries.
10557
10558For the frame of function @code{b} in both cases there are different possible
10559@code{$pc} values (@code{0x4004cc} or @code{0x4004ce}), therefore this frame is
10560also ambigous. The only non-ambiguous frame is the one for function @code{a},
10561therefore this one is displayed to the user while the ambiguous frames are
10562omitted.
edb3359d 10563
e18b2753
JK
10564There can be also reasons why printing of frame argument values at function
10565entry may fail:
10566
10567@smallexample
10568int v;
10569static void __attribute__((noinline, noclone)) c (int i) @{ v++; @}
10570static void __attribute__((noinline, noclone)) a (int i);
10571static void __attribute__((noinline, noclone)) b (int i) @{ a (i); @}
10572static void __attribute__((noinline, noclone)) a (int i)
10573@{ if (i) b (i - 1); else c (0); @}
10574int main (void) @{ a (5); return 0; @}
10575
10576(gdb) bt
10577#0 c (i=i@@entry=0) at t.c:2
10578#1 0x0000000000400428 in a (DW_OP_GNU_entry_value resolving has found
10579function "a" at 0x400420 can call itself via tail calls
10580i=<optimized out>) at t.c:6
10581#2 0x000000000040036e in main () at t.c:7
10582@end smallexample
10583
10584@value{GDBN} cannot find out from the inferior state if and how many times did
10585function @code{a} call itself (via function @code{b}) as these calls would be
10586tail calls. Such tail calls would modify thue @code{i} variable, therefore
10587@value{GDBN} cannot be sure the value it knows would be right - @value{GDBN}
10588prints @code{<optimized out>} instead.
10589
e2e0bcd1
JB
10590@node Macros
10591@chapter C Preprocessor Macros
10592
49efadf5 10593Some languages, such as C and C@t{++}, provide a way to define and invoke
e2e0bcd1
JB
10594``preprocessor macros'' which expand into strings of tokens.
10595@value{GDBN} can evaluate expressions containing macro invocations, show
10596the result of macro expansion, and show a macro's definition, including
10597where it was defined.
10598
10599You may need to compile your program specially to provide @value{GDBN}
10600with information about preprocessor macros. Most compilers do not
10601include macros in their debugging information, even when you compile
10602with the @option{-g} flag. @xref{Compilation}.
10603
10604A program may define a macro at one point, remove that definition later,
10605and then provide a different definition after that. Thus, at different
10606points in the program, a macro may have different definitions, or have
10607no definition at all. If there is a current stack frame, @value{GDBN}
10608uses the macros in scope at that frame's source code line. Otherwise,
10609@value{GDBN} uses the macros in scope at the current listing location;
10610see @ref{List}.
10611
e2e0bcd1
JB
10612Whenever @value{GDBN} evaluates an expression, it always expands any
10613macro invocations present in the expression. @value{GDBN} also provides
10614the following commands for working with macros explicitly.
10615
10616@table @code
10617
10618@kindex macro expand
10619@cindex macro expansion, showing the results of preprocessor
10620@cindex preprocessor macro expansion, showing the results of
10621@cindex expanding preprocessor macros
10622@item macro expand @var{expression}
10623@itemx macro exp @var{expression}
10624Show the results of expanding all preprocessor macro invocations in
10625@var{expression}. Since @value{GDBN} simply expands macros, but does
10626not parse the result, @var{expression} need not be a valid expression;
10627it can be any string of tokens.
10628
09d4efe1 10629@kindex macro exp1
e2e0bcd1
JB
10630@item macro expand-once @var{expression}
10631@itemx macro exp1 @var{expression}
4644b6e3 10632@cindex expand macro once
e2e0bcd1
JB
10633@i{(This command is not yet implemented.)} Show the results of
10634expanding those preprocessor macro invocations that appear explicitly in
10635@var{expression}. Macro invocations appearing in that expansion are
10636left unchanged. This command allows you to see the effect of a
10637particular macro more clearly, without being confused by further
10638expansions. Since @value{GDBN} simply expands macros, but does not
10639parse the result, @var{expression} need not be a valid expression; it
10640can be any string of tokens.
10641
475b0867 10642@kindex info macro
e2e0bcd1 10643@cindex macro definition, showing
9b158ba0 10644@cindex definition of a macro, showing
10645@cindex macros, from debug info
71eba9c2 10646@item info macro [-a|-all] [--] @var{macro}
10647Show the current definition or all definitions of the named @var{macro},
10648and describe the source location or compiler command-line where that
10649definition was established. The optional double dash is to signify the end of
10650argument processing and the beginning of @var{macro} for non C-like macros where
10651the macro may begin with a hyphen.
e2e0bcd1 10652
9b158ba0 10653@kindex info macros
10654@item info macros @var{linespec}
10655Show all macro definitions that are in effect at the location specified
10656by @var{linespec}, and describe the source location or compiler
10657command-line where those definitions were established.
10658
e2e0bcd1
JB
10659@kindex macro define
10660@cindex user-defined macros
10661@cindex defining macros interactively
10662@cindex macros, user-defined
10663@item macro define @var{macro} @var{replacement-list}
10664@itemx macro define @var{macro}(@var{arglist}) @var{replacement-list}
d7d9f01e
TT
10665Introduce a definition for a preprocessor macro named @var{macro},
10666invocations of which are replaced by the tokens given in
10667@var{replacement-list}. The first form of this command defines an
10668``object-like'' macro, which takes no arguments; the second form
10669defines a ``function-like'' macro, which takes the arguments given in
10670@var{arglist}.
10671
10672A definition introduced by this command is in scope in every
10673expression evaluated in @value{GDBN}, until it is removed with the
10674@code{macro undef} command, described below. The definition overrides
10675all definitions for @var{macro} present in the program being debugged,
10676as well as any previous user-supplied definition.
e2e0bcd1
JB
10677
10678@kindex macro undef
10679@item macro undef @var{macro}
d7d9f01e
TT
10680Remove any user-supplied definition for the macro named @var{macro}.
10681This command only affects definitions provided with the @code{macro
10682define} command, described above; it cannot remove definitions present
10683in the program being debugged.
e2e0bcd1 10684
09d4efe1
EZ
10685@kindex macro list
10686@item macro list
d7d9f01e 10687List all the macros defined using the @code{macro define} command.
e2e0bcd1
JB
10688@end table
10689
10690@cindex macros, example of debugging with
10691Here is a transcript showing the above commands in action. First, we
10692show our source files:
10693
10694@smallexample
10695$ cat sample.c
10696#include <stdio.h>
10697#include "sample.h"
10698
10699#define M 42
10700#define ADD(x) (M + x)
10701
10702main ()
10703@{
10704#define N 28
10705 printf ("Hello, world!\n");
10706#undef N
10707 printf ("We're so creative.\n");
10708#define N 1729
10709 printf ("Goodbye, world!\n");
10710@}
10711$ cat sample.h
10712#define Q <
10713$
10714@end smallexample
10715
e0f8f636
TT
10716Now, we compile the program using the @sc{gnu} C compiler,
10717@value{NGCC}. We pass the @option{-gdwarf-2}@footnote{This is the
10718minimum. Recent versions of @value{NGCC} support @option{-gdwarf-3}
10719and @option{-gdwarf-4}; we recommend always choosing the most recent
10720version of DWARF.} @emph{and} @option{-g3} flags to ensure the compiler
10721includes information about preprocessor macros in the debugging
e2e0bcd1
JB
10722information.
10723
10724@smallexample
10725$ gcc -gdwarf-2 -g3 sample.c -o sample
10726$
10727@end smallexample
10728
10729Now, we start @value{GDBN} on our sample program:
10730
10731@smallexample
10732$ gdb -nw sample
10733GNU gdb 2002-05-06-cvs
10734Copyright 2002 Free Software Foundation, Inc.
10735GDB is free software, @dots{}
f7dc1244 10736(@value{GDBP})
e2e0bcd1
JB
10737@end smallexample
10738
10739We can expand macros and examine their definitions, even when the
10740program is not running. @value{GDBN} uses the current listing position
10741to decide which macro definitions are in scope:
10742
10743@smallexample
f7dc1244 10744(@value{GDBP}) list main
e2e0bcd1
JB
107453
107464 #define M 42
107475 #define ADD(x) (M + x)
107486
107497 main ()
107508 @{
107519 #define N 28
1075210 printf ("Hello, world!\n");
1075311 #undef N
1075412 printf ("We're so creative.\n");
f7dc1244 10755(@value{GDBP}) info macro ADD
e2e0bcd1
JB
10756Defined at /home/jimb/gdb/macros/play/sample.c:5
10757#define ADD(x) (M + x)
f7dc1244 10758(@value{GDBP}) info macro Q
e2e0bcd1
JB
10759Defined at /home/jimb/gdb/macros/play/sample.h:1
10760 included at /home/jimb/gdb/macros/play/sample.c:2
10761#define Q <
f7dc1244 10762(@value{GDBP}) macro expand ADD(1)
e2e0bcd1 10763expands to: (42 + 1)
f7dc1244 10764(@value{GDBP}) macro expand-once ADD(1)
e2e0bcd1 10765expands to: once (M + 1)
f7dc1244 10766(@value{GDBP})
e2e0bcd1
JB
10767@end smallexample
10768
d7d9f01e 10769In the example above, note that @code{macro expand-once} expands only
e2e0bcd1
JB
10770the macro invocation explicit in the original text --- the invocation of
10771@code{ADD} --- but does not expand the invocation of the macro @code{M},
10772which was introduced by @code{ADD}.
10773
3f94c067
BW
10774Once the program is running, @value{GDBN} uses the macro definitions in
10775force at the source line of the current stack frame:
e2e0bcd1
JB
10776
10777@smallexample
f7dc1244 10778(@value{GDBP}) break main
e2e0bcd1 10779Breakpoint 1 at 0x8048370: file sample.c, line 10.
f7dc1244 10780(@value{GDBP}) run
b383017d 10781Starting program: /home/jimb/gdb/macros/play/sample
e2e0bcd1
JB
10782
10783Breakpoint 1, main () at sample.c:10
1078410 printf ("Hello, world!\n");
f7dc1244 10785(@value{GDBP})
e2e0bcd1
JB
10786@end smallexample
10787
10788At line 10, the definition of the macro @code{N} at line 9 is in force:
10789
10790@smallexample
f7dc1244 10791(@value{GDBP}) info macro N
e2e0bcd1
JB
10792Defined at /home/jimb/gdb/macros/play/sample.c:9
10793#define N 28
f7dc1244 10794(@value{GDBP}) macro expand N Q M
e2e0bcd1 10795expands to: 28 < 42
f7dc1244 10796(@value{GDBP}) print N Q M
e2e0bcd1 10797$1 = 1
f7dc1244 10798(@value{GDBP})
e2e0bcd1
JB
10799@end smallexample
10800
10801As we step over directives that remove @code{N}'s definition, and then
10802give it a new definition, @value{GDBN} finds the definition (or lack
10803thereof) in force at each point:
10804
10805@smallexample
f7dc1244 10806(@value{GDBP}) next
e2e0bcd1
JB
10807Hello, world!
1080812 printf ("We're so creative.\n");
f7dc1244 10809(@value{GDBP}) info macro N
e2e0bcd1
JB
10810The symbol `N' has no definition as a C/C++ preprocessor macro
10811at /home/jimb/gdb/macros/play/sample.c:12
f7dc1244 10812(@value{GDBP}) next
e2e0bcd1
JB
10813We're so creative.
1081414 printf ("Goodbye, world!\n");
f7dc1244 10815(@value{GDBP}) info macro N
e2e0bcd1
JB
10816Defined at /home/jimb/gdb/macros/play/sample.c:13
10817#define N 1729
f7dc1244 10818(@value{GDBP}) macro expand N Q M
e2e0bcd1 10819expands to: 1729 < 42
f7dc1244 10820(@value{GDBP}) print N Q M
e2e0bcd1 10821$2 = 0
f7dc1244 10822(@value{GDBP})
e2e0bcd1
JB
10823@end smallexample
10824
484086b7
JK
10825In addition to source files, macros can be defined on the compilation command
10826line using the @option{-D@var{name}=@var{value}} syntax. For macros defined in
10827such a way, @value{GDBN} displays the location of their definition as line zero
10828of the source file submitted to the compiler.
10829
10830@smallexample
10831(@value{GDBP}) info macro __STDC__
10832Defined at /home/jimb/gdb/macros/play/sample.c:0
10833-D__STDC__=1
10834(@value{GDBP})
10835@end smallexample
10836
e2e0bcd1 10837
b37052ae
EZ
10838@node Tracepoints
10839@chapter Tracepoints
10840@c This chapter is based on the documentation written by Michael
10841@c Snyder, David Taylor, Jim Blandy, and Elena Zannoni.
10842
10843@cindex tracepoints
10844In some applications, it is not feasible for the debugger to interrupt
10845the program's execution long enough for the developer to learn
10846anything helpful about its behavior. If the program's correctness
10847depends on its real-time behavior, delays introduced by a debugger
10848might cause the program to change its behavior drastically, or perhaps
10849fail, even when the code itself is correct. It is useful to be able
10850to observe the program's behavior without interrupting it.
10851
10852Using @value{GDBN}'s @code{trace} and @code{collect} commands, you can
10853specify locations in the program, called @dfn{tracepoints}, and
10854arbitrary expressions to evaluate when those tracepoints are reached.
10855Later, using the @code{tfind} command, you can examine the values
10856those expressions had when the program hit the tracepoints. The
10857expressions may also denote objects in memory---structures or arrays,
10858for example---whose values @value{GDBN} should record; while visiting
10859a particular tracepoint, you may inspect those objects as if they were
10860in memory at that moment. However, because @value{GDBN} records these
10861values without interacting with you, it can do so quickly and
10862unobtrusively, hopefully not disturbing the program's behavior.
10863
10864The tracepoint facility is currently available only for remote
9d29849a
JB
10865targets. @xref{Targets}. In addition, your remote target must know
10866how to collect trace data. This functionality is implemented in the
10867remote stub; however, none of the stubs distributed with @value{GDBN}
10868support tracepoints as of this writing. The format of the remote
10869packets used to implement tracepoints are described in @ref{Tracepoint
10870Packets}.
b37052ae 10871
00bf0b85
SS
10872It is also possible to get trace data from a file, in a manner reminiscent
10873of corefiles; you specify the filename, and use @code{tfind} to search
10874through the file. @xref{Trace Files}, for more details.
10875
b37052ae
EZ
10876This chapter describes the tracepoint commands and features.
10877
10878@menu
b383017d
RM
10879* Set Tracepoints::
10880* Analyze Collected Data::
10881* Tracepoint Variables::
00bf0b85 10882* Trace Files::
b37052ae
EZ
10883@end menu
10884
10885@node Set Tracepoints
10886@section Commands to Set Tracepoints
10887
10888Before running such a @dfn{trace experiment}, an arbitrary number of
1042e4c0
SS
10889tracepoints can be set. A tracepoint is actually a special type of
10890breakpoint (@pxref{Set Breaks}), so you can manipulate it using
10891standard breakpoint commands. For instance, as with breakpoints,
10892tracepoint numbers are successive integers starting from one, and many
10893of the commands associated with tracepoints take the tracepoint number
10894as their argument, to identify which tracepoint to work on.
b37052ae
EZ
10895
10896For each tracepoint, you can specify, in advance, some arbitrary set
10897of data that you want the target to collect in the trace buffer when
10898it hits that tracepoint. The collected data can include registers,
10899local variables, or global data. Later, you can use @value{GDBN}
10900commands to examine the values these data had at the time the
10901tracepoint was hit.
10902
7d13fe92
SS
10903Tracepoints do not support every breakpoint feature. Ignore counts on
10904tracepoints have no effect, and tracepoints cannot run @value{GDBN}
10905commands when they are hit. Tracepoints may not be thread-specific
10906either.
1042e4c0 10907
7a697b8d
SS
10908@cindex fast tracepoints
10909Some targets may support @dfn{fast tracepoints}, which are inserted in
10910a different way (such as with a jump instead of a trap), that is
10911faster but possibly restricted in where they may be installed.
10912
0fb4aa4b
PA
10913@cindex static tracepoints
10914@cindex markers, static tracepoints
10915@cindex probing markers, static tracepoints
10916Regular and fast tracepoints are dynamic tracing facilities, meaning
10917that they can be used to insert tracepoints at (almost) any location
10918in the target. Some targets may also support controlling @dfn{static
10919tracepoints} from @value{GDBN}. With static tracing, a set of
10920instrumentation points, also known as @dfn{markers}, are embedded in
10921the target program, and can be activated or deactivated by name or
10922address. These are usually placed at locations which facilitate
10923investigating what the target is actually doing. @value{GDBN}'s
10924support for static tracing includes being able to list instrumentation
10925points, and attach them with @value{GDBN} defined high level
10926tracepoints that expose the whole range of convenience of
8786b2bd 10927@value{GDBN}'s tracepoints support. Namely, support for collecting
0fb4aa4b
PA
10928registers values and values of global or local (to the instrumentation
10929point) variables; tracepoint conditions and trace state variables.
10930The act of installing a @value{GDBN} static tracepoint on an
10931instrumentation point, or marker, is referred to as @dfn{probing} a
10932static tracepoint marker.
10933
fa593d66
PA
10934@code{gdbserver} supports tracepoints on some target systems.
10935@xref{Server,,Tracepoints support in @code{gdbserver}}.
10936
b37052ae
EZ
10937This section describes commands to set tracepoints and associated
10938conditions and actions.
10939
10940@menu
b383017d
RM
10941* Create and Delete Tracepoints::
10942* Enable and Disable Tracepoints::
10943* Tracepoint Passcounts::
782b2b07 10944* Tracepoint Conditions::
f61e138d 10945* Trace State Variables::
b383017d
RM
10946* Tracepoint Actions::
10947* Listing Tracepoints::
0fb4aa4b 10948* Listing Static Tracepoint Markers::
79a6e687 10949* Starting and Stopping Trace Experiments::
c9429232 10950* Tracepoint Restrictions::
b37052ae
EZ
10951@end menu
10952
10953@node Create and Delete Tracepoints
10954@subsection Create and Delete Tracepoints
10955
10956@table @code
10957@cindex set tracepoint
10958@kindex trace
1042e4c0 10959@item trace @var{location}
b37052ae 10960The @code{trace} command is very similar to the @code{break} command.
1042e4c0
SS
10961Its argument @var{location} can be a source line, a function name, or
10962an address in the target program. @xref{Specify Location}. The
10963@code{trace} command defines a tracepoint, which is a point in the
10964target program where the debugger will briefly stop, collect some
10965data, and then allow the program to continue. Setting a tracepoint or
1e4d1764
YQ
10966changing its actions takes effect immediately if the remote stub
10967supports the @samp{InstallInTrace} feature (@pxref{install tracepoint
10968in tracing}).
10969If remote stub doesn't support the @samp{InstallInTrace} feature, all
10970these changes don't take effect until the next @code{tstart}
1042e4c0 10971command, and once a trace experiment is running, further changes will
bfccc43c
YQ
10972not have any effect until the next trace experiment starts. In addition,
10973@value{GDBN} supports @dfn{pending tracepoints}---tracepoints whose
10974address is not yet resolved. (This is similar to pending breakpoints.)
10975Pending tracepoints are not downloaded to the target and not installed
10976until they are resolved. The resolution of pending tracepoints requires
10977@value{GDBN} support---when debugging with the remote target, and
10978@value{GDBN} disconnects from the remote stub (@pxref{disconnected
10979tracing}), pending tracepoints can not be resolved (and downloaded to
10980the remote stub) while @value{GDBN} is disconnected.
b37052ae
EZ
10981
10982Here are some examples of using the @code{trace} command:
10983
10984@smallexample
10985(@value{GDBP}) @b{trace foo.c:121} // a source file and line number
10986
10987(@value{GDBP}) @b{trace +2} // 2 lines forward
10988
10989(@value{GDBP}) @b{trace my_function} // first source line of function
10990
10991(@value{GDBP}) @b{trace *my_function} // EXACT start address of function
10992
10993(@value{GDBP}) @b{trace *0x2117c4} // an address
10994@end smallexample
10995
10996@noindent
10997You can abbreviate @code{trace} as @code{tr}.
10998
782b2b07
SS
10999@item trace @var{location} if @var{cond}
11000Set a tracepoint with condition @var{cond}; evaluate the expression
11001@var{cond} each time the tracepoint is reached, and collect data only
11002if the value is nonzero---that is, if @var{cond} evaluates as true.
11003@xref{Tracepoint Conditions, ,Tracepoint Conditions}, for more
11004information on tracepoint conditions.
11005
7a697b8d
SS
11006@item ftrace @var{location} [ if @var{cond} ]
11007@cindex set fast tracepoint
74c761c1 11008@cindex fast tracepoints, setting
7a697b8d
SS
11009@kindex ftrace
11010The @code{ftrace} command sets a fast tracepoint. For targets that
11011support them, fast tracepoints will use a more efficient but possibly
11012less general technique to trigger data collection, such as a jump
11013instruction instead of a trap, or some sort of hardware support. It
11014may not be possible to create a fast tracepoint at the desired
11015location, in which case the command will exit with an explanatory
11016message.
11017
11018@value{GDBN} handles arguments to @code{ftrace} exactly as for
11019@code{trace}.
11020
405f8e94
SS
11021On 32-bit x86-architecture systems, fast tracepoints normally need to
11022be placed at an instruction that is 5 bytes or longer, but can be
11023placed at 4-byte instructions if the low 64K of memory of the target
11024program is available to install trampolines. Some Unix-type systems,
11025such as @sc{gnu}/Linux, exclude low addresses from the program's
11026address space; but for instance with the Linux kernel it is possible
11027to let @value{GDBN} use this area by doing a @command{sysctl} command
11028to set the @code{mmap_min_addr} kernel parameter, as in
11029
11030@example
11031sudo sysctl -w vm.mmap_min_addr=32768
11032@end example
11033
11034@noindent
11035which sets the low address to 32K, which leaves plenty of room for
11036trampolines. The minimum address should be set to a page boundary.
11037
0fb4aa4b 11038@item strace @var{location} [ if @var{cond} ]
74c761c1
PA
11039@cindex set static tracepoint
11040@cindex static tracepoints, setting
11041@cindex probe static tracepoint marker
0fb4aa4b
PA
11042@kindex strace
11043The @code{strace} command sets a static tracepoint. For targets that
11044support it, setting a static tracepoint probes a static
11045instrumentation point, or marker, found at @var{location}. It may not
11046be possible to set a static tracepoint at the desired location, in
11047which case the command will exit with an explanatory message.
11048
11049@value{GDBN} handles arguments to @code{strace} exactly as for
11050@code{trace}, with the addition that the user can also specify
11051@code{-m @var{marker}} as @var{location}. This probes the marker
11052identified by the @var{marker} string identifier. This identifier
11053depends on the static tracepoint backend library your program is
11054using. You can find all the marker identifiers in the @samp{ID} field
11055of the @code{info static-tracepoint-markers} command output.
11056@xref{Listing Static Tracepoint Markers,,Listing Static Tracepoint
11057Markers}. For example, in the following small program using the UST
11058tracing engine:
11059
11060@smallexample
11061main ()
11062@{
11063 trace_mark(ust, bar33, "str %s", "FOOBAZ");
11064@}
11065@end smallexample
11066
11067@noindent
11068the marker id is composed of joining the first two arguments to the
11069@code{trace_mark} call with a slash, which translates to:
11070
11071@smallexample
11072(@value{GDBP}) info static-tracepoint-markers
11073Cnt Enb ID Address What
110741 n ust/bar33 0x0000000000400ddc in main at stexample.c:22
11075 Data: "str %s"
11076[etc...]
11077@end smallexample
11078
11079@noindent
11080so you may probe the marker above with:
11081
11082@smallexample
11083(@value{GDBP}) strace -m ust/bar33
11084@end smallexample
11085
11086Static tracepoints accept an extra collect action --- @code{collect
11087$_sdata}. This collects arbitrary user data passed in the probe point
11088call to the tracing library. In the UST example above, you'll see
11089that the third argument to @code{trace_mark} is a printf-like format
11090string. The user data is then the result of running that formating
11091string against the following arguments. Note that @code{info
11092static-tracepoint-markers} command output lists that format string in
11093the @samp{Data:} field.
11094
11095You can inspect this data when analyzing the trace buffer, by printing
11096the $_sdata variable like any other variable available to
11097@value{GDBN}. @xref{Tracepoint Actions,,Tracepoint Action Lists}.
11098
b37052ae
EZ
11099@vindex $tpnum
11100@cindex last tracepoint number
11101@cindex recent tracepoint number
11102@cindex tracepoint number
11103The convenience variable @code{$tpnum} records the tracepoint number
11104of the most recently set tracepoint.
11105
11106@kindex delete tracepoint
11107@cindex tracepoint deletion
11108@item delete tracepoint @r{[}@var{num}@r{]}
11109Permanently delete one or more tracepoints. With no argument, the
1042e4c0
SS
11110default is to delete all tracepoints. Note that the regular
11111@code{delete} command can remove tracepoints also.
b37052ae
EZ
11112
11113Examples:
11114
11115@smallexample
11116(@value{GDBP}) @b{delete trace 1 2 3} // remove three tracepoints
11117
11118(@value{GDBP}) @b{delete trace} // remove all tracepoints
11119@end smallexample
11120
11121@noindent
11122You can abbreviate this command as @code{del tr}.
11123@end table
11124
11125@node Enable and Disable Tracepoints
11126@subsection Enable and Disable Tracepoints
11127
1042e4c0
SS
11128These commands are deprecated; they are equivalent to plain @code{disable} and @code{enable}.
11129
b37052ae
EZ
11130@table @code
11131@kindex disable tracepoint
11132@item disable tracepoint @r{[}@var{num}@r{]}
11133Disable tracepoint @var{num}, or all tracepoints if no argument
11134@var{num} is given. A disabled tracepoint will have no effect during
d248b706 11135a trace experiment, but it is not forgotten. You can re-enable
b37052ae 11136a disabled tracepoint using the @code{enable tracepoint} command.
d248b706
KY
11137If the command is issued during a trace experiment and the debug target
11138has support for disabling tracepoints during a trace experiment, then the
11139change will be effective immediately. Otherwise, it will be applied to the
11140next trace experiment.
b37052ae
EZ
11141
11142@kindex enable tracepoint
11143@item enable tracepoint @r{[}@var{num}@r{]}
d248b706
KY
11144Enable tracepoint @var{num}, or all tracepoints. If this command is
11145issued during a trace experiment and the debug target supports enabling
11146tracepoints during a trace experiment, then the enabled tracepoints will
11147become effective immediately. Otherwise, they will become effective the
11148next time a trace experiment is run.
b37052ae
EZ
11149@end table
11150
11151@node Tracepoint Passcounts
11152@subsection Tracepoint Passcounts
11153
11154@table @code
11155@kindex passcount
11156@cindex tracepoint pass count
11157@item passcount @r{[}@var{n} @r{[}@var{num}@r{]]}
11158Set the @dfn{passcount} of a tracepoint. The passcount is a way to
11159automatically stop a trace experiment. If a tracepoint's passcount is
11160@var{n}, then the trace experiment will be automatically stopped on
11161the @var{n}'th time that tracepoint is hit. If the tracepoint number
11162@var{num} is not specified, the @code{passcount} command sets the
11163passcount of the most recently defined tracepoint. If no passcount is
11164given, the trace experiment will run until stopped explicitly by the
11165user.
11166
11167Examples:
11168
11169@smallexample
b383017d 11170(@value{GDBP}) @b{passcount 5 2} // Stop on the 5th execution of
6826cf00 11171@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// tracepoint 2}
b37052ae
EZ
11172
11173(@value{GDBP}) @b{passcount 12} // Stop on the 12th execution of the
6826cf00 11174@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// most recently defined tracepoint.}
b37052ae
EZ
11175(@value{GDBP}) @b{trace foo}
11176(@value{GDBP}) @b{pass 3}
11177(@value{GDBP}) @b{trace bar}
11178(@value{GDBP}) @b{pass 2}
11179(@value{GDBP}) @b{trace baz}
11180(@value{GDBP}) @b{pass 1} // Stop tracing when foo has been
6826cf00
EZ
11181@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// executed 3 times OR when bar has}
11182@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// been executed 2 times}
11183@exdent @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @code{// OR when baz has been executed 1 time.}
b37052ae
EZ
11184@end smallexample
11185@end table
11186
782b2b07
SS
11187@node Tracepoint Conditions
11188@subsection Tracepoint Conditions
11189@cindex conditional tracepoints
11190@cindex tracepoint conditions
11191
11192The simplest sort of tracepoint collects data every time your program
11193reaches a specified place. You can also specify a @dfn{condition} for
11194a tracepoint. A condition is just a Boolean expression in your
11195programming language (@pxref{Expressions, ,Expressions}). A
11196tracepoint with a condition evaluates the expression each time your
11197program reaches it, and data collection happens only if the condition
11198is true.
11199
11200Tracepoint conditions can be specified when a tracepoint is set, by
11201using @samp{if} in the arguments to the @code{trace} command.
11202@xref{Create and Delete Tracepoints, ,Setting Tracepoints}. They can
11203also be set or changed at any time with the @code{condition} command,
11204just as with breakpoints.
11205
11206Unlike breakpoint conditions, @value{GDBN} does not actually evaluate
11207the conditional expression itself. Instead, @value{GDBN} encodes the
6dcd5565 11208expression into an agent expression (@pxref{Agent Expressions})
782b2b07
SS
11209suitable for execution on the target, independently of @value{GDBN}.
11210Global variables become raw memory locations, locals become stack
11211accesses, and so forth.
11212
11213For instance, suppose you have a function that is usually called
11214frequently, but should not be called after an error has occurred. You
11215could use the following tracepoint command to collect data about calls
11216of that function that happen while the error code is propagating
11217through the program; an unconditional tracepoint could end up
11218collecting thousands of useless trace frames that you would have to
11219search through.
11220
11221@smallexample
11222(@value{GDBP}) @kbd{trace normal_operation if errcode > 0}
11223@end smallexample
11224
f61e138d
SS
11225@node Trace State Variables
11226@subsection Trace State Variables
11227@cindex trace state variables
11228
11229A @dfn{trace state variable} is a special type of variable that is
11230created and managed by target-side code. The syntax is the same as
11231that for GDB's convenience variables (a string prefixed with ``$''),
11232but they are stored on the target. They must be created explicitly,
11233using a @code{tvariable} command. They are always 64-bit signed
11234integers.
11235
11236Trace state variables are remembered by @value{GDBN}, and downloaded
11237to the target along with tracepoint information when the trace
11238experiment starts. There are no intrinsic limits on the number of
11239trace state variables, beyond memory limitations of the target.
11240
11241@cindex convenience variables, and trace state variables
11242Although trace state variables are managed by the target, you can use
11243them in print commands and expressions as if they were convenience
11244variables; @value{GDBN} will get the current value from the target
11245while the trace experiment is running. Trace state variables share
11246the same namespace as other ``$'' variables, which means that you
11247cannot have trace state variables with names like @code{$23} or
11248@code{$pc}, nor can you have a trace state variable and a convenience
11249variable with the same name.
11250
11251@table @code
11252
11253@item tvariable $@var{name} [ = @var{expression} ]
11254@kindex tvariable
11255The @code{tvariable} command creates a new trace state variable named
11256@code{$@var{name}}, and optionally gives it an initial value of
11257@var{expression}. @var{expression} is evaluated when this command is
11258entered; the result will be converted to an integer if possible,
11259otherwise @value{GDBN} will report an error. A subsequent
11260@code{tvariable} command specifying the same name does not create a
11261variable, but instead assigns the supplied initial value to the
11262existing variable of that name, overwriting any previous initial
11263value. The default initial value is 0.
11264
11265@item info tvariables
11266@kindex info tvariables
11267List all the trace state variables along with their initial values.
11268Their current values may also be displayed, if the trace experiment is
11269currently running.
11270
11271@item delete tvariable @r{[} $@var{name} @dots{} @r{]}
11272@kindex delete tvariable
11273Delete the given trace state variables, or all of them if no arguments
11274are specified.
11275
11276@end table
11277
b37052ae
EZ
11278@node Tracepoint Actions
11279@subsection Tracepoint Action Lists
11280
11281@table @code
11282@kindex actions
11283@cindex tracepoint actions
11284@item actions @r{[}@var{num}@r{]}
11285This command will prompt for a list of actions to be taken when the
11286tracepoint is hit. If the tracepoint number @var{num} is not
11287specified, this command sets the actions for the one that was most
11288recently defined (so that you can define a tracepoint and then say
11289@code{actions} without bothering about its number). You specify the
11290actions themselves on the following lines, one action at a time, and
11291terminate the actions list with a line containing just @code{end}. So
7d13fe92 11292far, the only defined actions are @code{collect}, @code{teval}, and
b37052ae
EZ
11293@code{while-stepping}.
11294
5a9351ae
SS
11295@code{actions} is actually equivalent to @code{commands} (@pxref{Break
11296Commands, ,Breakpoint Command Lists}), except that only the defined
11297actions are allowed; any other @value{GDBN} command is rejected.
11298
b37052ae
EZ
11299@cindex remove actions from a tracepoint
11300To remove all actions from a tracepoint, type @samp{actions @var{num}}
11301and follow it immediately with @samp{end}.
11302
11303@smallexample
11304(@value{GDBP}) @b{collect @var{data}} // collect some data
11305
6826cf00 11306(@value{GDBP}) @b{while-stepping 5} // single-step 5 times, collect data
b37052ae 11307
6826cf00 11308(@value{GDBP}) @b{end} // signals the end of actions.
b37052ae
EZ
11309@end smallexample
11310
11311In the following example, the action list begins with @code{collect}
11312commands indicating the things to be collected when the tracepoint is
11313hit. Then, in order to single-step and collect additional data
11314following the tracepoint, a @code{while-stepping} command is used,
7d13fe92
SS
11315followed by the list of things to be collected after each step in a
11316sequence of single steps. The @code{while-stepping} command is
11317terminated by its own separate @code{end} command. Lastly, the action
11318list is terminated by an @code{end} command.
b37052ae
EZ
11319
11320@smallexample
11321(@value{GDBP}) @b{trace foo}
11322(@value{GDBP}) @b{actions}
11323Enter actions for tracepoint 1, one per line:
11324> collect bar,baz
11325> collect $regs
11326> while-stepping 12
5a9351ae 11327 > collect $pc, arr[i]
b37052ae
EZ
11328 > end
11329end
11330@end smallexample
11331
11332@kindex collect @r{(tracepoints)}
3065dfb6 11333@item collect@r{[}/@var{mods}@r{]} @var{expr1}, @var{expr2}, @dots{}
b37052ae
EZ
11334Collect values of the given expressions when the tracepoint is hit.
11335This command accepts a comma-separated list of any valid expressions.
11336In addition to global, static, or local variables, the following
11337special arguments are supported:
11338
11339@table @code
11340@item $regs
0fb4aa4b 11341Collect all registers.
b37052ae
EZ
11342
11343@item $args
0fb4aa4b 11344Collect all function arguments.
b37052ae
EZ
11345
11346@item $locals
0fb4aa4b
PA
11347Collect all local variables.
11348
6710bf39
SS
11349@item $_ret
11350Collect the return address. This is helpful if you want to see more
11351of a backtrace.
11352
62e5f89c
SDJ
11353@item $_probe_argc
11354Collects the number of arguments from the static probe at which the
11355tracepoint is located.
11356@xref{Static Probe Points}.
11357
11358@item $_probe_arg@var{n}
11359@var{n} is an integer between 0 and 11. Collects the @var{n}th argument
11360from the static probe at which the tracepoint is located.
11361@xref{Static Probe Points}.
11362
0fb4aa4b
PA
11363@item $_sdata
11364@vindex $_sdata@r{, collect}
11365Collect static tracepoint marker specific data. Only available for
11366static tracepoints. @xref{Tracepoint Actions,,Tracepoint Action
11367Lists}. On the UST static tracepoints library backend, an
11368instrumentation point resembles a @code{printf} function call. The
11369tracing library is able to collect user specified data formatted to a
11370character string using the format provided by the programmer that
11371instrumented the program. Other backends have similar mechanisms.
11372Here's an example of a UST marker call:
11373
11374@smallexample
11375 const char master_name[] = "$your_name";
11376 trace_mark(channel1, marker1, "hello %s", master_name)
11377@end smallexample
11378
11379In this case, collecting @code{$_sdata} collects the string
11380@samp{hello $yourname}. When analyzing the trace buffer, you can
11381inspect @samp{$_sdata} like any other variable available to
11382@value{GDBN}.
b37052ae
EZ
11383@end table
11384
11385You can give several consecutive @code{collect} commands, each one
11386with a single argument, or one @code{collect} command with several
5a9351ae 11387arguments separated by commas; the effect is the same.
b37052ae 11388
3065dfb6
SS
11389The optional @var{mods} changes the usual handling of the arguments.
11390@code{s} requests that pointers to chars be handled as strings, in
11391particular collecting the contents of the memory being pointed at, up
11392to the first zero. The upper bound is by default the value of the
11393@code{print elements} variable; if @code{s} is followed by a decimal
11394number, that is the upper bound instead. So for instance
11395@samp{collect/s25 mystr} collects as many as 25 characters at
11396@samp{mystr}.
11397
f5c37c66
EZ
11398The command @code{info scope} (@pxref{Symbols, info scope}) is
11399particularly useful for figuring out what data to collect.
11400
6da95a67
SS
11401@kindex teval @r{(tracepoints)}
11402@item teval @var{expr1}, @var{expr2}, @dots{}
11403Evaluate the given expressions when the tracepoint is hit. This
11404command accepts a comma-separated list of expressions. The results
11405are discarded, so this is mainly useful for assigning values to trace
11406state variables (@pxref{Trace State Variables}) without adding those
11407values to the trace buffer, as would be the case if the @code{collect}
11408action were used.
11409
b37052ae
EZ
11410@kindex while-stepping @r{(tracepoints)}
11411@item while-stepping @var{n}
c9429232 11412Perform @var{n} single-step instruction traces after the tracepoint,
7d13fe92 11413collecting new data after each step. The @code{while-stepping}
c9429232
SS
11414command is followed by the list of what to collect while stepping
11415(followed by its own @code{end} command):
b37052ae
EZ
11416
11417@smallexample
11418> while-stepping 12
11419 > collect $regs, myglobal
11420 > end
11421>
11422@end smallexample
11423
11424@noindent
7d13fe92
SS
11425Note that @code{$pc} is not automatically collected by
11426@code{while-stepping}; you need to explicitly collect that register if
11427you need it. You may abbreviate @code{while-stepping} as @code{ws} or
b37052ae 11428@code{stepping}.
236f1d4d
SS
11429
11430@item set default-collect @var{expr1}, @var{expr2}, @dots{}
11431@kindex set default-collect
11432@cindex default collection action
11433This variable is a list of expressions to collect at each tracepoint
11434hit. It is effectively an additional @code{collect} action prepended
11435to every tracepoint action list. The expressions are parsed
11436individually for each tracepoint, so for instance a variable named
11437@code{xyz} may be interpreted as a global for one tracepoint, and a
11438local for another, as appropriate to the tracepoint's location.
11439
11440@item show default-collect
11441@kindex show default-collect
11442Show the list of expressions that are collected by default at each
11443tracepoint hit.
11444
b37052ae
EZ
11445@end table
11446
11447@node Listing Tracepoints
11448@subsection Listing Tracepoints
11449
11450@table @code
e5a67952
MS
11451@kindex info tracepoints @r{[}@var{n}@dots{}@r{]}
11452@kindex info tp @r{[}@var{n}@dots{}@r{]}
b37052ae 11453@cindex information about tracepoints
e5a67952 11454@item info tracepoints @r{[}@var{num}@dots{}@r{]}
1042e4c0
SS
11455Display information about the tracepoint @var{num}. If you don't
11456specify a tracepoint number, displays information about all the
11457tracepoints defined so far. The format is similar to that used for
11458@code{info breakpoints}; in fact, @code{info tracepoints} is the same
11459command, simply restricting itself to tracepoints.
11460
11461A tracepoint's listing may include additional information specific to
11462tracing:
b37052ae
EZ
11463
11464@itemize @bullet
11465@item
b37052ae 11466its passcount as given by the @code{passcount @var{n}} command
b37052ae
EZ
11467@end itemize
11468
11469@smallexample
11470(@value{GDBP}) @b{info trace}
1042e4c0
SS
11471Num Type Disp Enb Address What
114721 tracepoint keep y 0x0804ab57 in foo() at main.cxx:7
5a9351ae
SS
11473 while-stepping 20
11474 collect globfoo, $regs
11475 end
11476 collect globfoo2
11477 end
1042e4c0 11478 pass count 1200
b37052ae
EZ
11479(@value{GDBP})
11480@end smallexample
11481
11482@noindent
11483This command can be abbreviated @code{info tp}.
11484@end table
11485
0fb4aa4b
PA
11486@node Listing Static Tracepoint Markers
11487@subsection Listing Static Tracepoint Markers
11488
11489@table @code
11490@kindex info static-tracepoint-markers
11491@cindex information about static tracepoint markers
11492@item info static-tracepoint-markers
11493Display information about all static tracepoint markers defined in the
11494program.
11495
11496For each marker, the following columns are printed:
11497
11498@table @emph
11499@item Count
11500An incrementing counter, output to help readability. This is not a
11501stable identifier.
11502@item ID
11503The marker ID, as reported by the target.
11504@item Enabled or Disabled
11505Probed markers are tagged with @samp{y}. @samp{n} identifies marks
11506that are not enabled.
11507@item Address
11508Where the marker is in your program, as a memory address.
11509@item What
11510Where the marker is in the source for your program, as a file and line
11511number. If the debug information included in the program does not
11512allow @value{GDBN} to locate the source of the marker, this column
11513will be left blank.
11514@end table
11515
11516@noindent
11517In addition, the following information may be printed for each marker:
11518
11519@table @emph
11520@item Data
11521User data passed to the tracing library by the marker call. In the
11522UST backend, this is the format string passed as argument to the
11523marker call.
11524@item Static tracepoints probing the marker
11525The list of static tracepoints attached to the marker.
11526@end table
11527
11528@smallexample
11529(@value{GDBP}) info static-tracepoint-markers
11530Cnt ID Enb Address What
115311 ust/bar2 y 0x0000000000400e1a in main at stexample.c:25
11532 Data: number1 %d number2 %d
11533 Probed by static tracepoints: #2
115342 ust/bar33 n 0x0000000000400c87 in main at stexample.c:24
11535 Data: str %s
11536(@value{GDBP})
11537@end smallexample
11538@end table
11539
79a6e687
BW
11540@node Starting and Stopping Trace Experiments
11541@subsection Starting and Stopping Trace Experiments
b37052ae
EZ
11542
11543@table @code
f196051f 11544@kindex tstart [ @var{notes} ]
b37052ae
EZ
11545@cindex start a new trace experiment
11546@cindex collected data discarded
11547@item tstart
f196051f
SS
11548This command starts the trace experiment, and begins collecting data.
11549It has the side effect of discarding all the data collected in the
11550trace buffer during the previous trace experiment. If any arguments
11551are supplied, they are taken as a note and stored with the trace
11552experiment's state. The notes may be arbitrary text, and are
11553especially useful with disconnected tracing in a multi-user context;
11554the notes can explain what the trace is doing, supply user contact
11555information, and so forth.
11556
11557@kindex tstop [ @var{notes} ]
b37052ae
EZ
11558@cindex stop a running trace experiment
11559@item tstop
f196051f
SS
11560This command stops the trace experiment. If any arguments are
11561supplied, they are recorded with the experiment as a note. This is
11562useful if you are stopping a trace started by someone else, for
11563instance if the trace is interfering with the system's behavior and
11564needs to be stopped quickly.
b37052ae 11565
68c71a2e 11566@strong{Note}: a trace experiment and data collection may stop
b37052ae
EZ
11567automatically if any tracepoint's passcount is reached
11568(@pxref{Tracepoint Passcounts}), or if the trace buffer becomes full.
11569
11570@kindex tstatus
11571@cindex status of trace data collection
11572@cindex trace experiment, status of
11573@item tstatus
11574This command displays the status of the current trace data
11575collection.
11576@end table
11577
11578Here is an example of the commands we described so far:
11579
11580@smallexample
11581(@value{GDBP}) @b{trace gdb_c_test}
11582(@value{GDBP}) @b{actions}
11583Enter actions for tracepoint #1, one per line.
11584> collect $regs,$locals,$args
11585> while-stepping 11
11586 > collect $regs
11587 > end
11588> end
11589(@value{GDBP}) @b{tstart}
11590 [time passes @dots{}]
11591(@value{GDBP}) @b{tstop}
11592@end smallexample
11593
03f2bd59 11594@anchor{disconnected tracing}
d5551862
SS
11595@cindex disconnected tracing
11596You can choose to continue running the trace experiment even if
11597@value{GDBN} disconnects from the target, voluntarily or
11598involuntarily. For commands such as @code{detach}, the debugger will
11599ask what you want to do with the trace. But for unexpected
11600terminations (@value{GDBN} crash, network outage), it would be
11601unfortunate to lose hard-won trace data, so the variable
11602@code{disconnected-tracing} lets you decide whether the trace should
11603continue running without @value{GDBN}.
11604
11605@table @code
11606@item set disconnected-tracing on
11607@itemx set disconnected-tracing off
11608@kindex set disconnected-tracing
11609Choose whether a tracing run should continue to run if @value{GDBN}
11610has disconnected from the target. Note that @code{detach} or
11611@code{quit} will ask you directly what to do about a running trace no
11612matter what this variable's setting, so the variable is mainly useful
11613for handling unexpected situations, such as loss of the network.
11614
11615@item show disconnected-tracing
11616@kindex show disconnected-tracing
11617Show the current choice for disconnected tracing.
11618
11619@end table
11620
11621When you reconnect to the target, the trace experiment may or may not
11622still be running; it might have filled the trace buffer in the
11623meantime, or stopped for one of the other reasons. If it is running,
11624it will continue after reconnection.
11625
11626Upon reconnection, the target will upload information about the
11627tracepoints in effect. @value{GDBN} will then compare that
11628information to the set of tracepoints currently defined, and attempt
11629to match them up, allowing for the possibility that the numbers may
11630have changed due to creation and deletion in the meantime. If one of
11631the target's tracepoints does not match any in @value{GDBN}, the
11632debugger will create a new tracepoint, so that you have a number with
11633which to specify that tracepoint. This matching-up process is
11634necessarily heuristic, and it may result in useless tracepoints being
11635created; you may simply delete them if they are of no use.
b37052ae 11636
4daf5ac0
SS
11637@cindex circular trace buffer
11638If your target agent supports a @dfn{circular trace buffer}, then you
11639can run a trace experiment indefinitely without filling the trace
11640buffer; when space runs out, the agent deletes already-collected trace
11641frames, oldest first, until there is enough room to continue
11642collecting. This is especially useful if your tracepoints are being
11643hit too often, and your trace gets terminated prematurely because the
11644buffer is full. To ask for a circular trace buffer, simply set
81896e36 11645@samp{circular-trace-buffer} to on. You can set this at any time,
4daf5ac0
SS
11646including during tracing; if the agent can do it, it will change
11647buffer handling on the fly, otherwise it will not take effect until
11648the next run.
11649
11650@table @code
11651@item set circular-trace-buffer on
11652@itemx set circular-trace-buffer off
11653@kindex set circular-trace-buffer
11654Choose whether a tracing run should use a linear or circular buffer
11655for trace data. A linear buffer will not lose any trace data, but may
11656fill up prematurely, while a circular buffer will discard old trace
11657data, but it will have always room for the latest tracepoint hits.
11658
11659@item show circular-trace-buffer
11660@kindex show circular-trace-buffer
11661Show the current choice for the trace buffer. Note that this may not
11662match the agent's current buffer handling, nor is it guaranteed to
11663match the setting that might have been in effect during a past run,
11664for instance if you are looking at frames from a trace file.
11665
11666@end table
11667
f196051f
SS
11668@table @code
11669@item set trace-user @var{text}
11670@kindex set trace-user
11671
11672@item show trace-user
11673@kindex show trace-user
11674
11675@item set trace-notes @var{text}
11676@kindex set trace-notes
11677Set the trace run's notes.
11678
11679@item show trace-notes
11680@kindex show trace-notes
11681Show the trace run's notes.
11682
11683@item set trace-stop-notes @var{text}
11684@kindex set trace-stop-notes
11685Set the trace run's stop notes. The handling of the note is as for
11686@code{tstop} arguments; the set command is convenient way to fix a
11687stop note that is mistaken or incomplete.
11688
11689@item show trace-stop-notes
11690@kindex show trace-stop-notes
11691Show the trace run's stop notes.
11692
11693@end table
11694
c9429232
SS
11695@node Tracepoint Restrictions
11696@subsection Tracepoint Restrictions
11697
11698@cindex tracepoint restrictions
11699There are a number of restrictions on the use of tracepoints. As
11700described above, tracepoint data gathering occurs on the target
11701without interaction from @value{GDBN}. Thus the full capabilities of
11702the debugger are not available during data gathering, and then at data
11703examination time, you will be limited by only having what was
11704collected. The following items describe some common problems, but it
11705is not exhaustive, and you may run into additional difficulties not
11706mentioned here.
11707
11708@itemize @bullet
11709
11710@item
11711Tracepoint expressions are intended to gather objects (lvalues). Thus
11712the full flexibility of GDB's expression evaluator is not available.
11713You cannot call functions, cast objects to aggregate types, access
11714convenience variables or modify values (except by assignment to trace
11715state variables). Some language features may implicitly call
11716functions (for instance Objective-C fields with accessors), and therefore
11717cannot be collected either.
11718
11719@item
11720Collection of local variables, either individually or in bulk with
11721@code{$locals} or @code{$args}, during @code{while-stepping} may
11722behave erratically. The stepping action may enter a new scope (for
11723instance by stepping into a function), or the location of the variable
11724may change (for instance it is loaded into a register). The
11725tracepoint data recorded uses the location information for the
11726variables that is correct for the tracepoint location. When the
11727tracepoint is created, it is not possible, in general, to determine
11728where the steps of a @code{while-stepping} sequence will advance the
11729program---particularly if a conditional branch is stepped.
11730
11731@item
11732Collection of an incompletely-initialized or partially-destroyed object
11733may result in something that @value{GDBN} cannot display, or displays
11734in a misleading way.
11735
11736@item
11737When @value{GDBN} displays a pointer to character it automatically
11738dereferences the pointer to also display characters of the string
11739being pointed to. However, collecting the pointer during tracing does
11740not automatically collect the string. You need to explicitly
11741dereference the pointer and provide size information if you want to
11742collect not only the pointer, but the memory pointed to. For example,
11743@code{*ptr@@50} can be used to collect the 50 element array pointed to
11744by @code{ptr}.
11745
11746@item
11747It is not possible to collect a complete stack backtrace at a
11748tracepoint. Instead, you may collect the registers and a few hundred
d99f7e48 11749bytes from the stack pointer with something like @code{*(unsigned char *)$esp@@300}
c9429232
SS
11750(adjust to use the name of the actual stack pointer register on your
11751target architecture, and the amount of stack you wish to capture).
11752Then the @code{backtrace} command will show a partial backtrace when
11753using a trace frame. The number of stack frames that can be examined
11754depends on the sizes of the frames in the collected stack. Note that
11755if you ask for a block so large that it goes past the bottom of the
11756stack, the target agent may report an error trying to read from an
11757invalid address.
11758
af54718e
SS
11759@item
11760If you do not collect registers at a tracepoint, @value{GDBN} can
11761infer that the value of @code{$pc} must be the same as the address of
11762the tracepoint and use that when you are looking at a trace frame
11763for that tracepoint. However, this cannot work if the tracepoint has
11764multiple locations (for instance if it was set in a function that was
11765inlined), or if it has a @code{while-stepping} loop. In those cases
11766@value{GDBN} will warn you that it can't infer @code{$pc}, and default
11767it to zero.
11768
c9429232
SS
11769@end itemize
11770
b37052ae 11771@node Analyze Collected Data
79a6e687 11772@section Using the Collected Data
b37052ae
EZ
11773
11774After the tracepoint experiment ends, you use @value{GDBN} commands
11775for examining the trace data. The basic idea is that each tracepoint
11776collects a trace @dfn{snapshot} every time it is hit and another
11777snapshot every time it single-steps. All these snapshots are
11778consecutively numbered from zero and go into a buffer, and you can
11779examine them later. The way you examine them is to @dfn{focus} on a
11780specific trace snapshot. When the remote stub is focused on a trace
11781snapshot, it will respond to all @value{GDBN} requests for memory and
11782registers by reading from the buffer which belongs to that snapshot,
11783rather than from @emph{real} memory or registers of the program being
11784debugged. This means that @strong{all} @value{GDBN} commands
11785(@code{print}, @code{info registers}, @code{backtrace}, etc.) will
11786behave as if we were currently debugging the program state as it was
11787when the tracepoint occurred. Any requests for data that are not in
11788the buffer will fail.
11789
11790@menu
11791* tfind:: How to select a trace snapshot
11792* tdump:: How to display all data for a snapshot
6149aea9 11793* save tracepoints:: How to save tracepoints for a future run
b37052ae
EZ
11794@end menu
11795
11796@node tfind
11797@subsection @code{tfind @var{n}}
11798
11799@kindex tfind
11800@cindex select trace snapshot
11801@cindex find trace snapshot
11802The basic command for selecting a trace snapshot from the buffer is
11803@code{tfind @var{n}}, which finds trace snapshot number @var{n},
11804counting from zero. If no argument @var{n} is given, the next
11805snapshot is selected.
11806
11807Here are the various forms of using the @code{tfind} command.
11808
11809@table @code
11810@item tfind start
11811Find the first snapshot in the buffer. This is a synonym for
11812@code{tfind 0} (since 0 is the number of the first snapshot).
11813
11814@item tfind none
11815Stop debugging trace snapshots, resume @emph{live} debugging.
11816
11817@item tfind end
11818Same as @samp{tfind none}.
11819
11820@item tfind
11821No argument means find the next trace snapshot.
11822
11823@item tfind -
11824Find the previous trace snapshot before the current one. This permits
11825retracing earlier steps.
11826
11827@item tfind tracepoint @var{num}
11828Find the next snapshot associated with tracepoint @var{num}. Search
11829proceeds forward from the last examined trace snapshot. If no
11830argument @var{num} is given, it means find the next snapshot collected
11831for the same tracepoint as the current snapshot.
11832
11833@item tfind pc @var{addr}
11834Find the next snapshot associated with the value @var{addr} of the
11835program counter. Search proceeds forward from the last examined trace
11836snapshot. If no argument @var{addr} is given, it means find the next
11837snapshot with the same value of PC as the current snapshot.
11838
11839@item tfind outside @var{addr1}, @var{addr2}
11840Find the next snapshot whose PC is outside the given range of
081dfbf7 11841addresses (exclusive).
b37052ae
EZ
11842
11843@item tfind range @var{addr1}, @var{addr2}
11844Find the next snapshot whose PC is between @var{addr1} and
081dfbf7 11845@var{addr2} (inclusive).
b37052ae
EZ
11846
11847@item tfind line @r{[}@var{file}:@r{]}@var{n}
11848Find the next snapshot associated with the source line @var{n}. If
11849the optional argument @var{file} is given, refer to line @var{n} in
11850that source file. Search proceeds forward from the last examined
11851trace snapshot. If no argument @var{n} is given, it means find the
11852next line other than the one currently being examined; thus saying
11853@code{tfind line} repeatedly can appear to have the same effect as
11854stepping from line to line in a @emph{live} debugging session.
11855@end table
11856
11857The default arguments for the @code{tfind} commands are specifically
11858designed to make it easy to scan through the trace buffer. For
11859instance, @code{tfind} with no argument selects the next trace
11860snapshot, and @code{tfind -} with no argument selects the previous
11861trace snapshot. So, by giving one @code{tfind} command, and then
11862simply hitting @key{RET} repeatedly you can examine all the trace
11863snapshots in order. Or, by saying @code{tfind -} and then hitting
11864@key{RET} repeatedly you can examine the snapshots in reverse order.
11865The @code{tfind line} command with no argument selects the snapshot
11866for the next source line executed. The @code{tfind pc} command with
11867no argument selects the next snapshot with the same program counter
11868(PC) as the current frame. The @code{tfind tracepoint} command with
11869no argument selects the next trace snapshot collected by the same
11870tracepoint as the current one.
11871
11872In addition to letting you scan through the trace buffer manually,
11873these commands make it easy to construct @value{GDBN} scripts that
11874scan through the trace buffer and print out whatever collected data
11875you are interested in. Thus, if we want to examine the PC, FP, and SP
11876registers from each trace frame in the buffer, we can say this:
11877
11878@smallexample
11879(@value{GDBP}) @b{tfind start}
11880(@value{GDBP}) @b{while ($trace_frame != -1)}
11881> printf "Frame %d, PC = %08X, SP = %08X, FP = %08X\n", \
11882 $trace_frame, $pc, $sp, $fp
11883> tfind
11884> end
11885
11886Frame 0, PC = 0020DC64, SP = 0030BF3C, FP = 0030BF44
11887Frame 1, PC = 0020DC6C, SP = 0030BF38, FP = 0030BF44
11888Frame 2, PC = 0020DC70, SP = 0030BF34, FP = 0030BF44
11889Frame 3, PC = 0020DC74, SP = 0030BF30, FP = 0030BF44
11890Frame 4, PC = 0020DC78, SP = 0030BF2C, FP = 0030BF44
11891Frame 5, PC = 0020DC7C, SP = 0030BF28, FP = 0030BF44
11892Frame 6, PC = 0020DC80, SP = 0030BF24, FP = 0030BF44
11893Frame 7, PC = 0020DC84, SP = 0030BF20, FP = 0030BF44
11894Frame 8, PC = 0020DC88, SP = 0030BF1C, FP = 0030BF44
11895Frame 9, PC = 0020DC8E, SP = 0030BF18, FP = 0030BF44
11896Frame 10, PC = 00203F6C, SP = 0030BE3C, FP = 0030BF14
11897@end smallexample
11898
11899Or, if we want to examine the variable @code{X} at each source line in
11900the buffer:
11901
11902@smallexample
11903(@value{GDBP}) @b{tfind start}
11904(@value{GDBP}) @b{while ($trace_frame != -1)}
11905> printf "Frame %d, X == %d\n", $trace_frame, X
11906> tfind line
11907> end
11908
11909Frame 0, X = 1
11910Frame 7, X = 2
11911Frame 13, X = 255
11912@end smallexample
11913
11914@node tdump
11915@subsection @code{tdump}
11916@kindex tdump
11917@cindex dump all data collected at tracepoint
11918@cindex tracepoint data, display
11919
11920This command takes no arguments. It prints all the data collected at
11921the current trace snapshot.
11922
11923@smallexample
11924(@value{GDBP}) @b{trace 444}
11925(@value{GDBP}) @b{actions}
11926Enter actions for tracepoint #2, one per line:
11927> collect $regs, $locals, $args, gdb_long_test
11928> end
11929
11930(@value{GDBP}) @b{tstart}
11931
11932(@value{GDBP}) @b{tfind line 444}
11933#0 gdb_test (p1=0x11, p2=0x22, p3=0x33, p4=0x44, p5=0x55, p6=0x66)
11934at gdb_test.c:444
11935444 printp( "%s: arguments = 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X\n", )
11936
11937(@value{GDBP}) @b{tdump}
11938Data collected at tracepoint 2, trace frame 1:
11939d0 0xc4aa0085 -995491707
11940d1 0x18 24
11941d2 0x80 128
11942d3 0x33 51
11943d4 0x71aea3d 119204413
11944d5 0x22 34
11945d6 0xe0 224
11946d7 0x380035 3670069
11947a0 0x19e24a 1696330
11948a1 0x3000668 50333288
11949a2 0x100 256
11950a3 0x322000 3284992
11951a4 0x3000698 50333336
11952a5 0x1ad3cc 1758156
11953fp 0x30bf3c 0x30bf3c
11954sp 0x30bf34 0x30bf34
11955ps 0x0 0
11956pc 0x20b2c8 0x20b2c8
11957fpcontrol 0x0 0
11958fpstatus 0x0 0
11959fpiaddr 0x0 0
11960p = 0x20e5b4 "gdb-test"
11961p1 = (void *) 0x11
11962p2 = (void *) 0x22
11963p3 = (void *) 0x33
11964p4 = (void *) 0x44
11965p5 = (void *) 0x55
11966p6 = (void *) 0x66
11967gdb_long_test = 17 '\021'
11968
11969(@value{GDBP})
11970@end smallexample
11971
af54718e
SS
11972@code{tdump} works by scanning the tracepoint's current collection
11973actions and printing the value of each expression listed. So
11974@code{tdump} can fail, if after a run, you change the tracepoint's
11975actions to mention variables that were not collected during the run.
11976
11977Also, for tracepoints with @code{while-stepping} loops, @code{tdump}
11978uses the collected value of @code{$pc} to distinguish between trace
11979frames that were collected at the tracepoint hit, and frames that were
11980collected while stepping. This allows it to correctly choose whether
11981to display the basic list of collections, or the collections from the
11982body of the while-stepping loop. However, if @code{$pc} was not collected,
11983then @code{tdump} will always attempt to dump using the basic collection
11984list, and may fail if a while-stepping frame does not include all the
11985same data that is collected at the tracepoint hit.
11986@c This is getting pretty arcane, example would be good.
11987
6149aea9
PA
11988@node save tracepoints
11989@subsection @code{save tracepoints @var{filename}}
11990@kindex save tracepoints
b37052ae
EZ
11991@kindex save-tracepoints
11992@cindex save tracepoints for future sessions
11993
11994This command saves all current tracepoint definitions together with
11995their actions and passcounts, into a file @file{@var{filename}}
11996suitable for use in a later debugging session. To read the saved
11997tracepoint definitions, use the @code{source} command (@pxref{Command
6149aea9
PA
11998Files}). The @w{@code{save-tracepoints}} command is a deprecated
11999alias for @w{@code{save tracepoints}}
b37052ae
EZ
12000
12001@node Tracepoint Variables
12002@section Convenience Variables for Tracepoints
12003@cindex tracepoint variables
12004@cindex convenience variables for tracepoints
12005
12006@table @code
12007@vindex $trace_frame
12008@item (int) $trace_frame
12009The current trace snapshot (a.k.a.@: @dfn{frame}) number, or -1 if no
12010snapshot is selected.
12011
12012@vindex $tracepoint
12013@item (int) $tracepoint
12014The tracepoint for the current trace snapshot.
12015
12016@vindex $trace_line
12017@item (int) $trace_line
12018The line number for the current trace snapshot.
12019
12020@vindex $trace_file
12021@item (char []) $trace_file
12022The source file for the current trace snapshot.
12023
12024@vindex $trace_func
12025@item (char []) $trace_func
12026The name of the function containing @code{$tracepoint}.
12027@end table
12028
12029Note: @code{$trace_file} is not suitable for use in @code{printf},
12030use @code{output} instead.
12031
12032Here's a simple example of using these convenience variables for
12033stepping through all the trace snapshots and printing some of their
f61e138d
SS
12034data. Note that these are not the same as trace state variables,
12035which are managed by the target.
b37052ae
EZ
12036
12037@smallexample
12038(@value{GDBP}) @b{tfind start}
12039
12040(@value{GDBP}) @b{while $trace_frame != -1}
12041> output $trace_file
12042> printf ", line %d (tracepoint #%d)\n", $trace_line, $tracepoint
12043> tfind
12044> end
12045@end smallexample
12046
00bf0b85
SS
12047@node Trace Files
12048@section Using Trace Files
12049@cindex trace files
12050
12051In some situations, the target running a trace experiment may no
12052longer be available; perhaps it crashed, or the hardware was needed
12053for a different activity. To handle these cases, you can arrange to
12054dump the trace data into a file, and later use that file as a source
12055of trace data, via the @code{target tfile} command.
12056
12057@table @code
12058
12059@kindex tsave
12060@item tsave [ -r ] @var{filename}
12061Save the trace data to @var{filename}. By default, this command
12062assumes that @var{filename} refers to the host filesystem, so if
12063necessary @value{GDBN} will copy raw trace data up from the target and
12064then save it. If the target supports it, you can also supply the
12065optional argument @code{-r} (``remote'') to direct the target to save
12066the data directly into @var{filename} in its own filesystem, which may be
12067more efficient if the trace buffer is very large. (Note, however, that
12068@code{target tfile} can only read from files accessible to the host.)
12069
12070@kindex target tfile
12071@kindex tfile
12072@item target tfile @var{filename}
12073Use the file named @var{filename} as a source of trace data. Commands
12074that examine data work as they do with a live target, but it is not
12075possible to run any new trace experiments. @code{tstatus} will report
12076the state of the trace run at the moment the data was saved, as well
12077as the current trace frame you are examining. @var{filename} must be
12078on a filesystem accessible to the host.
12079
12080@end table
12081
df0cd8c5
JB
12082@node Overlays
12083@chapter Debugging Programs That Use Overlays
12084@cindex overlays
12085
12086If your program is too large to fit completely in your target system's
12087memory, you can sometimes use @dfn{overlays} to work around this
12088problem. @value{GDBN} provides some support for debugging programs that
12089use overlays.
12090
12091@menu
12092* How Overlays Work:: A general explanation of overlays.
12093* Overlay Commands:: Managing overlays in @value{GDBN}.
12094* Automatic Overlay Debugging:: @value{GDBN} can find out which overlays are
12095 mapped by asking the inferior.
12096* Overlay Sample Program:: A sample program using overlays.
12097@end menu
12098
12099@node How Overlays Work
12100@section How Overlays Work
12101@cindex mapped overlays
12102@cindex unmapped overlays
12103@cindex load address, overlay's
12104@cindex mapped address
12105@cindex overlay area
12106
12107Suppose you have a computer whose instruction address space is only 64
12108kilobytes long, but which has much more memory which can be accessed by
12109other means: special instructions, segment registers, or memory
12110management hardware, for example. Suppose further that you want to
12111adapt a program which is larger than 64 kilobytes to run on this system.
12112
12113One solution is to identify modules of your program which are relatively
12114independent, and need not call each other directly; call these modules
12115@dfn{overlays}. Separate the overlays from the main program, and place
12116their machine code in the larger memory. Place your main program in
12117instruction memory, but leave at least enough space there to hold the
12118largest overlay as well.
12119
12120Now, to call a function located in an overlay, you must first copy that
12121overlay's machine code from the large memory into the space set aside
12122for it in the instruction memory, and then jump to its entry point
12123there.
12124
c928edc0
AC
12125@c NB: In the below the mapped area's size is greater or equal to the
12126@c size of all overlays. This is intentional to remind the developer
12127@c that overlays don't necessarily need to be the same size.
12128
474c8240 12129@smallexample
df0cd8c5 12130@group
c928edc0
AC
12131 Data Instruction Larger
12132Address Space Address Space Address Space
12133+-----------+ +-----------+ +-----------+
12134| | | | | |
12135+-----------+ +-----------+ +-----------+<-- overlay 1
12136| program | | main | .----| overlay 1 | load address
12137| variables | | program | | +-----------+
12138| and heap | | | | | |
12139+-----------+ | | | +-----------+<-- overlay 2
12140| | +-----------+ | | | load address
12141+-----------+ | | | .-| overlay 2 |
12142 | | | | | |
12143 mapped --->+-----------+ | | +-----------+
12144 address | | | | | |
12145 | overlay | <-' | | |
12146 | area | <---' +-----------+<-- overlay 3
12147 | | <---. | | load address
12148 +-----------+ `--| overlay 3 |
12149 | | | |
12150 +-----------+ | |
12151 +-----------+
12152 | |
12153 +-----------+
12154
12155 @anchor{A code overlay}A code overlay
df0cd8c5 12156@end group
474c8240 12157@end smallexample
df0cd8c5 12158
c928edc0
AC
12159The diagram (@pxref{A code overlay}) shows a system with separate data
12160and instruction address spaces. To map an overlay, the program copies
12161its code from the larger address space to the instruction address space.
12162Since the overlays shown here all use the same mapped address, only one
12163may be mapped at a time. For a system with a single address space for
12164data and instructions, the diagram would be similar, except that the
12165program variables and heap would share an address space with the main
12166program and the overlay area.
df0cd8c5
JB
12167
12168An overlay loaded into instruction memory and ready for use is called a
12169@dfn{mapped} overlay; its @dfn{mapped address} is its address in the
12170instruction memory. An overlay not present (or only partially present)
12171in instruction memory is called @dfn{unmapped}; its @dfn{load address}
12172is its address in the larger memory. The mapped address is also called
12173the @dfn{virtual memory address}, or @dfn{VMA}; the load address is also
12174called the @dfn{load memory address}, or @dfn{LMA}.
12175
12176Unfortunately, overlays are not a completely transparent way to adapt a
12177program to limited instruction memory. They introduce a new set of
12178global constraints you must keep in mind as you design your program:
12179
12180@itemize @bullet
12181
12182@item
12183Before calling or returning to a function in an overlay, your program
12184must make sure that overlay is actually mapped. Otherwise, the call or
12185return will transfer control to the right address, but in the wrong
12186overlay, and your program will probably crash.
12187
12188@item
12189If the process of mapping an overlay is expensive on your system, you
12190will need to choose your overlays carefully to minimize their effect on
12191your program's performance.
12192
12193@item
12194The executable file you load onto your system must contain each
12195overlay's instructions, appearing at the overlay's load address, not its
12196mapped address. However, each overlay's instructions must be relocated
12197and its symbols defined as if the overlay were at its mapped address.
12198You can use GNU linker scripts to specify different load and relocation
12199addresses for pieces of your program; see @ref{Overlay Description,,,
12200ld.info, Using ld: the GNU linker}.
12201
12202@item
12203The procedure for loading executable files onto your system must be able
12204to load their contents into the larger address space as well as the
12205instruction and data spaces.
12206
12207@end itemize
12208
12209The overlay system described above is rather simple, and could be
12210improved in many ways:
12211
12212@itemize @bullet
12213
12214@item
12215If your system has suitable bank switch registers or memory management
12216hardware, you could use those facilities to make an overlay's load area
12217contents simply appear at their mapped address in instruction space.
12218This would probably be faster than copying the overlay to its mapped
12219area in the usual way.
12220
12221@item
12222If your overlays are small enough, you could set aside more than one
12223overlay area, and have more than one overlay mapped at a time.
12224
12225@item
12226You can use overlays to manage data, as well as instructions. In
12227general, data overlays are even less transparent to your design than
12228code overlays: whereas code overlays only require care when you call or
12229return to functions, data overlays require care every time you access
12230the data. Also, if you change the contents of a data overlay, you
12231must copy its contents back out to its load address before you can copy a
12232different data overlay into the same mapped area.
12233
12234@end itemize
12235
12236
12237@node Overlay Commands
12238@section Overlay Commands
12239
12240To use @value{GDBN}'s overlay support, each overlay in your program must
12241correspond to a separate section of the executable file. The section's
12242virtual memory address and load memory address must be the overlay's
12243mapped and load addresses. Identifying overlays with sections allows
12244@value{GDBN} to determine the appropriate address of a function or
12245variable, depending on whether the overlay is mapped or not.
12246
12247@value{GDBN}'s overlay commands all start with the word @code{overlay};
12248you can abbreviate this as @code{ov} or @code{ovly}. The commands are:
12249
12250@table @code
12251@item overlay off
4644b6e3 12252@kindex overlay
df0cd8c5
JB
12253Disable @value{GDBN}'s overlay support. When overlay support is
12254disabled, @value{GDBN} assumes that all functions and variables are
12255always present at their mapped addresses. By default, @value{GDBN}'s
12256overlay support is disabled.
12257
12258@item overlay manual
df0cd8c5
JB
12259@cindex manual overlay debugging
12260Enable @dfn{manual} overlay debugging. In this mode, @value{GDBN}
12261relies on you to tell it which overlays are mapped, and which are not,
12262using the @code{overlay map-overlay} and @code{overlay unmap-overlay}
12263commands described below.
12264
12265@item overlay map-overlay @var{overlay}
12266@itemx overlay map @var{overlay}
df0cd8c5
JB
12267@cindex map an overlay
12268Tell @value{GDBN} that @var{overlay} is now mapped; @var{overlay} must
12269be the name of the object file section containing the overlay. When an
12270overlay is mapped, @value{GDBN} assumes it can find the overlay's
12271functions and variables at their mapped addresses. @value{GDBN} assumes
12272that any other overlays whose mapped ranges overlap that of
12273@var{overlay} are now unmapped.
12274
12275@item overlay unmap-overlay @var{overlay}
12276@itemx overlay unmap @var{overlay}
df0cd8c5
JB
12277@cindex unmap an overlay
12278Tell @value{GDBN} that @var{overlay} is no longer mapped; @var{overlay}
12279must be the name of the object file section containing the overlay.
12280When an overlay is unmapped, @value{GDBN} assumes it can find the
12281overlay's functions and variables at their load addresses.
12282
12283@item overlay auto
df0cd8c5
JB
12284Enable @dfn{automatic} overlay debugging. In this mode, @value{GDBN}
12285consults a data structure the overlay manager maintains in the inferior
12286to see which overlays are mapped. For details, see @ref{Automatic
12287Overlay Debugging}.
12288
12289@item overlay load-target
12290@itemx overlay load
df0cd8c5
JB
12291@cindex reloading the overlay table
12292Re-read the overlay table from the inferior. Normally, @value{GDBN}
12293re-reads the table @value{GDBN} automatically each time the inferior
12294stops, so this command should only be necessary if you have changed the
12295overlay mapping yourself using @value{GDBN}. This command is only
12296useful when using automatic overlay debugging.
12297
12298@item overlay list-overlays
12299@itemx overlay list
12300@cindex listing mapped overlays
12301Display a list of the overlays currently mapped, along with their mapped
12302addresses, load addresses, and sizes.
12303
12304@end table
12305
12306Normally, when @value{GDBN} prints a code address, it includes the name
12307of the function the address falls in:
12308
474c8240 12309@smallexample
f7dc1244 12310(@value{GDBP}) print main
df0cd8c5 12311$3 = @{int ()@} 0x11a0 <main>
474c8240 12312@end smallexample
df0cd8c5
JB
12313@noindent
12314When overlay debugging is enabled, @value{GDBN} recognizes code in
12315unmapped overlays, and prints the names of unmapped functions with
12316asterisks around them. For example, if @code{foo} is a function in an
12317unmapped overlay, @value{GDBN} prints it this way:
12318
474c8240 12319@smallexample
f7dc1244 12320(@value{GDBP}) overlay list
df0cd8c5 12321No sections are mapped.
f7dc1244 12322(@value{GDBP}) print foo
df0cd8c5 12323$5 = @{int (int)@} 0x100000 <*foo*>
474c8240 12324@end smallexample
df0cd8c5
JB
12325@noindent
12326When @code{foo}'s overlay is mapped, @value{GDBN} prints the function's
12327name normally:
12328
474c8240 12329@smallexample
f7dc1244 12330(@value{GDBP}) overlay list
b383017d 12331Section .ov.foo.text, loaded at 0x100000 - 0x100034,
df0cd8c5 12332 mapped at 0x1016 - 0x104a
f7dc1244 12333(@value{GDBP}) print foo
df0cd8c5 12334$6 = @{int (int)@} 0x1016 <foo>
474c8240 12335@end smallexample
df0cd8c5
JB
12336
12337When overlay debugging is enabled, @value{GDBN} can find the correct
12338address for functions and variables in an overlay, whether or not the
12339overlay is mapped. This allows most @value{GDBN} commands, like
12340@code{break} and @code{disassemble}, to work normally, even on unmapped
12341code. However, @value{GDBN}'s breakpoint support has some limitations:
12342
12343@itemize @bullet
12344@item
12345@cindex breakpoints in overlays
12346@cindex overlays, setting breakpoints in
12347You can set breakpoints in functions in unmapped overlays, as long as
12348@value{GDBN} can write to the overlay at its load address.
12349@item
12350@value{GDBN} can not set hardware or simulator-based breakpoints in
12351unmapped overlays. However, if you set a breakpoint at the end of your
12352overlay manager (and tell @value{GDBN} which overlays are now mapped, if
12353you are using manual overlay management), @value{GDBN} will re-set its
12354breakpoints properly.
12355@end itemize
12356
12357
12358@node Automatic Overlay Debugging
12359@section Automatic Overlay Debugging
12360@cindex automatic overlay debugging
12361
12362@value{GDBN} can automatically track which overlays are mapped and which
12363are not, given some simple co-operation from the overlay manager in the
12364inferior. If you enable automatic overlay debugging with the
12365@code{overlay auto} command (@pxref{Overlay Commands}), @value{GDBN}
12366looks in the inferior's memory for certain variables describing the
12367current state of the overlays.
12368
12369Here are the variables your overlay manager must define to support
12370@value{GDBN}'s automatic overlay debugging:
12371
12372@table @asis
12373
12374@item @code{_ovly_table}:
12375This variable must be an array of the following structures:
12376
474c8240 12377@smallexample
df0cd8c5
JB
12378struct
12379@{
12380 /* The overlay's mapped address. */
12381 unsigned long vma;
12382
12383 /* The size of the overlay, in bytes. */
12384 unsigned long size;
12385
12386 /* The overlay's load address. */
12387 unsigned long lma;
12388
12389 /* Non-zero if the overlay is currently mapped;
12390 zero otherwise. */
12391 unsigned long mapped;
12392@}
474c8240 12393@end smallexample
df0cd8c5
JB
12394
12395@item @code{_novlys}:
12396This variable must be a four-byte signed integer, holding the total
12397number of elements in @code{_ovly_table}.
12398
12399@end table
12400
12401To decide whether a particular overlay is mapped or not, @value{GDBN}
12402looks for an entry in @w{@code{_ovly_table}} whose @code{vma} and
12403@code{lma} members equal the VMA and LMA of the overlay's section in the
12404executable file. When @value{GDBN} finds a matching entry, it consults
12405the entry's @code{mapped} member to determine whether the overlay is
12406currently mapped.
12407
81d46470 12408In addition, your overlay manager may define a function called
def71bfa 12409@code{_ovly_debug_event}. If this function is defined, @value{GDBN}
81d46470
MS
12410will silently set a breakpoint there. If the overlay manager then
12411calls this function whenever it has changed the overlay table, this
12412will enable @value{GDBN} to accurately keep track of which overlays
12413are in program memory, and update any breakpoints that may be set
b383017d 12414in overlays. This will allow breakpoints to work even if the
81d46470
MS
12415overlays are kept in ROM or other non-writable memory while they
12416are not being executed.
df0cd8c5
JB
12417
12418@node Overlay Sample Program
12419@section Overlay Sample Program
12420@cindex overlay example program
12421
12422When linking a program which uses overlays, you must place the overlays
12423at their load addresses, while relocating them to run at their mapped
12424addresses. To do this, you must write a linker script (@pxref{Overlay
12425Description,,, ld.info, Using ld: the GNU linker}). Unfortunately,
12426since linker scripts are specific to a particular host system, target
12427architecture, and target memory layout, this manual cannot provide
12428portable sample code demonstrating @value{GDBN}'s overlay support.
12429
12430However, the @value{GDBN} source distribution does contain an overlaid
12431program, with linker scripts for a few systems, as part of its test
12432suite. The program consists of the following files from
12433@file{gdb/testsuite/gdb.base}:
12434
12435@table @file
12436@item overlays.c
12437The main program file.
12438@item ovlymgr.c
12439A simple overlay manager, used by @file{overlays.c}.
12440@item foo.c
12441@itemx bar.c
12442@itemx baz.c
12443@itemx grbx.c
12444Overlay modules, loaded and used by @file{overlays.c}.
12445@item d10v.ld
12446@itemx m32r.ld
12447Linker scripts for linking the test program on the @code{d10v-elf}
12448and @code{m32r-elf} targets.
12449@end table
12450
12451You can build the test program using the @code{d10v-elf} GCC
12452cross-compiler like this:
12453
474c8240 12454@smallexample
df0cd8c5
JB
12455$ d10v-elf-gcc -g -c overlays.c
12456$ d10v-elf-gcc -g -c ovlymgr.c
12457$ d10v-elf-gcc -g -c foo.c
12458$ d10v-elf-gcc -g -c bar.c
12459$ d10v-elf-gcc -g -c baz.c
12460$ d10v-elf-gcc -g -c grbx.c
12461$ d10v-elf-gcc -g overlays.o ovlymgr.o foo.o bar.o \
12462 baz.o grbx.o -Wl,-Td10v.ld -o overlays
474c8240 12463@end smallexample
df0cd8c5
JB
12464
12465The build process is identical for any other architecture, except that
12466you must substitute the appropriate compiler and linker script for the
12467target system for @code{d10v-elf-gcc} and @code{d10v.ld}.
12468
12469
6d2ebf8b 12470@node Languages
c906108c
SS
12471@chapter Using @value{GDBN} with Different Languages
12472@cindex languages
12473
c906108c
SS
12474Although programming languages generally have common aspects, they are
12475rarely expressed in the same manner. For instance, in ANSI C,
12476dereferencing a pointer @code{p} is accomplished by @code{*p}, but in
12477Modula-2, it is accomplished by @code{p^}. Values can also be
5d161b24 12478represented (and displayed) differently. Hex numbers in C appear as
c906108c 12479@samp{0x1ae}, while in Modula-2 they appear as @samp{1AEH}.
c906108c
SS
12480
12481@cindex working language
12482Language-specific information is built into @value{GDBN} for some languages,
12483allowing you to express operations like the above in your program's
12484native language, and allowing @value{GDBN} to output values in a manner
12485consistent with the syntax of your program's native language. The
12486language you use to build expressions is called the @dfn{working
12487language}.
12488
12489@menu
12490* Setting:: Switching between source languages
12491* Show:: Displaying the language
c906108c 12492* Checks:: Type and range checks
79a6e687
BW
12493* Supported Languages:: Supported languages
12494* Unsupported Languages:: Unsupported languages
c906108c
SS
12495@end menu
12496
6d2ebf8b 12497@node Setting
79a6e687 12498@section Switching Between Source Languages
c906108c
SS
12499
12500There are two ways to control the working language---either have @value{GDBN}
12501set it automatically, or select it manually yourself. You can use the
12502@code{set language} command for either purpose. On startup, @value{GDBN}
12503defaults to setting the language automatically. The working language is
12504used to determine how expressions you type are interpreted, how values
12505are printed, etc.
12506
12507In addition to the working language, every source file that
12508@value{GDBN} knows about has its own working language. For some object
12509file formats, the compiler might indicate which language a particular
12510source file is in. However, most of the time @value{GDBN} infers the
12511language from the name of the file. The language of a source file
b37052ae 12512controls whether C@t{++} names are demangled---this way @code{backtrace} can
c906108c 12513show each frame appropriately for its own language. There is no way to
d4f3574e
SS
12514set the language of a source file from within @value{GDBN}, but you can
12515set the language associated with a filename extension. @xref{Show, ,
79a6e687 12516Displaying the Language}.
c906108c
SS
12517
12518This is most commonly a problem when you use a program, such
5d161b24 12519as @code{cfront} or @code{f2c}, that generates C but is written in
c906108c
SS
12520another language. In that case, make the
12521program use @code{#line} directives in its C output; that way
12522@value{GDBN} will know the correct language of the source code of the original
12523program, and will display that source code, not the generated C code.
12524
12525@menu
12526* Filenames:: Filename extensions and languages.
12527* Manually:: Setting the working language manually
12528* Automatically:: Having @value{GDBN} infer the source language
12529@end menu
12530
6d2ebf8b 12531@node Filenames
79a6e687 12532@subsection List of Filename Extensions and Languages
c906108c
SS
12533
12534If a source file name ends in one of the following extensions, then
12535@value{GDBN} infers that its language is the one indicated.
12536
12537@table @file
e07c999f
PH
12538@item .ada
12539@itemx .ads
12540@itemx .adb
12541@itemx .a
12542Ada source file.
c906108c
SS
12543
12544@item .c
12545C source file
12546
12547@item .C
12548@itemx .cc
12549@itemx .cp
12550@itemx .cpp
12551@itemx .cxx
12552@itemx .c++
b37052ae 12553C@t{++} source file
c906108c 12554
6aecb9c2
JB
12555@item .d
12556D source file
12557
b37303ee
AF
12558@item .m
12559Objective-C source file
12560
c906108c
SS
12561@item .f
12562@itemx .F
12563Fortran source file
12564
c906108c
SS
12565@item .mod
12566Modula-2 source file
c906108c
SS
12567
12568@item .s
12569@itemx .S
12570Assembler source file. This actually behaves almost like C, but
12571@value{GDBN} does not skip over function prologues when stepping.
12572@end table
12573
12574In addition, you may set the language associated with a filename
79a6e687 12575extension. @xref{Show, , Displaying the Language}.
c906108c 12576
6d2ebf8b 12577@node Manually
79a6e687 12578@subsection Setting the Working Language
c906108c
SS
12579
12580If you allow @value{GDBN} to set the language automatically,
12581expressions are interpreted the same way in your debugging session and
12582your program.
12583
12584@kindex set language
12585If you wish, you may set the language manually. To do this, issue the
12586command @samp{set language @var{lang}}, where @var{lang} is the name of
5d161b24 12587a language, such as
c906108c 12588@code{c} or @code{modula-2}.
c906108c
SS
12589For a list of the supported languages, type @samp{set language}.
12590
c906108c
SS
12591Setting the language manually prevents @value{GDBN} from updating the working
12592language automatically. This can lead to confusion if you try
12593to debug a program when the working language is not the same as the
12594source language, when an expression is acceptable to both
12595languages---but means different things. For instance, if the current
12596source file were written in C, and @value{GDBN} was parsing Modula-2, a
12597command such as:
12598
474c8240 12599@smallexample
c906108c 12600print a = b + c
474c8240 12601@end smallexample
c906108c
SS
12602
12603@noindent
12604might not have the effect you intended. In C, this means to add
12605@code{b} and @code{c} and place the result in @code{a}. The result
12606printed would be the value of @code{a}. In Modula-2, this means to compare
12607@code{a} to the result of @code{b+c}, yielding a @code{BOOLEAN} value.
c906108c 12608
6d2ebf8b 12609@node Automatically
79a6e687 12610@subsection Having @value{GDBN} Infer the Source Language
c906108c
SS
12611
12612To have @value{GDBN} set the working language automatically, use
12613@samp{set language local} or @samp{set language auto}. @value{GDBN}
12614then infers the working language. That is, when your program stops in a
12615frame (usually by encountering a breakpoint), @value{GDBN} sets the
12616working language to the language recorded for the function in that
12617frame. If the language for a frame is unknown (that is, if the function
12618or block corresponding to the frame was defined in a source file that
12619does not have a recognized extension), the current working language is
12620not changed, and @value{GDBN} issues a warning.
12621
12622This may not seem necessary for most programs, which are written
12623entirely in one source language. However, program modules and libraries
12624written in one source language can be used by a main program written in
12625a different source language. Using @samp{set language auto} in this
12626case frees you from having to set the working language manually.
12627
6d2ebf8b 12628@node Show
79a6e687 12629@section Displaying the Language
c906108c
SS
12630
12631The following commands help you find out which language is the
12632working language, and also what language source files were written in.
12633
c906108c
SS
12634@table @code
12635@item show language
9c16f35a 12636@kindex show language
c906108c
SS
12637Display the current working language. This is the
12638language you can use with commands such as @code{print} to
12639build and compute expressions that may involve variables in your program.
12640
12641@item info frame
4644b6e3 12642@kindex info frame@r{, show the source language}
5d161b24 12643Display the source language for this frame. This language becomes the
c906108c 12644working language if you use an identifier from this frame.
79a6e687 12645@xref{Frame Info, ,Information about a Frame}, to identify the other
c906108c
SS
12646information listed here.
12647
12648@item info source
4644b6e3 12649@kindex info source@r{, show the source language}
c906108c 12650Display the source language of this source file.
5d161b24 12651@xref{Symbols, ,Examining the Symbol Table}, to identify the other
c906108c
SS
12652information listed here.
12653@end table
12654
12655In unusual circumstances, you may have source files with extensions
12656not in the standard list. You can then set the extension associated
12657with a language explicitly:
12658
c906108c 12659@table @code
09d4efe1 12660@item set extension-language @var{ext} @var{language}
9c16f35a 12661@kindex set extension-language
09d4efe1
EZ
12662Tell @value{GDBN} that source files with extension @var{ext} are to be
12663assumed as written in the source language @var{language}.
c906108c
SS
12664
12665@item info extensions
9c16f35a 12666@kindex info extensions
c906108c
SS
12667List all the filename extensions and the associated languages.
12668@end table
12669
6d2ebf8b 12670@node Checks
79a6e687 12671@section Type and Range Checking
c906108c
SS
12672
12673@quotation
12674@emph{Warning:} In this release, the @value{GDBN} commands for type and range
12675checking are included, but they do not yet have any effect. This
12676section documents the intended facilities.
12677@end quotation
12678@c FIXME remove warning when type/range code added
12679
12680Some languages are designed to guard you against making seemingly common
12681errors through a series of compile- and run-time checks. These include
12682checking the type of arguments to functions and operators, and making
12683sure mathematical overflows are caught at run time. Checks such as
12684these help to ensure a program's correctness once it has been compiled
12685by eliminating type mismatches, and providing active checks for range
12686errors when your program is running.
12687
12688@value{GDBN} can check for conditions like the above if you wish.
9c16f35a
EZ
12689Although @value{GDBN} does not check the statements in your program,
12690it can check expressions entered directly into @value{GDBN} for
12691evaluation via the @code{print} command, for example. As with the
12692working language, @value{GDBN} can also decide whether or not to check
12693automatically based on your program's source language.
79a6e687 12694@xref{Supported Languages, ,Supported Languages}, for the default
9c16f35a 12695settings of supported languages.
c906108c
SS
12696
12697@menu
12698* Type Checking:: An overview of type checking
12699* Range Checking:: An overview of range checking
12700@end menu
12701
12702@cindex type checking
12703@cindex checks, type
6d2ebf8b 12704@node Type Checking
79a6e687 12705@subsection An Overview of Type Checking
c906108c
SS
12706
12707Some languages, such as Modula-2, are strongly typed, meaning that the
12708arguments to operators and functions have to be of the correct type,
12709otherwise an error occurs. These checks prevent type mismatch
12710errors from ever causing any run-time problems. For example,
12711
12712@smallexample
127131 + 2 @result{} 3
12714@exdent but
12715@error{} 1 + 2.3
12716@end smallexample
12717
12718The second example fails because the @code{CARDINAL} 1 is not
12719type-compatible with the @code{REAL} 2.3.
12720
5d161b24
DB
12721For the expressions you use in @value{GDBN} commands, you can tell the
12722@value{GDBN} type checker to skip checking;
12723to treat any mismatches as errors and abandon the expression;
12724or to only issue warnings when type mismatches occur,
c906108c
SS
12725but evaluate the expression anyway. When you choose the last of
12726these, @value{GDBN} evaluates expressions like the second example above, but
12727also issues a warning.
12728
5d161b24
DB
12729Even if you turn type checking off, there may be other reasons
12730related to type that prevent @value{GDBN} from evaluating an expression.
12731For instance, @value{GDBN} does not know how to add an @code{int} and
12732a @code{struct foo}. These particular type errors have nothing to do
12733with the language in use, and usually arise from expressions, such as
c906108c
SS
12734the one described above, which make little sense to evaluate anyway.
12735
12736Each language defines to what degree it is strict about type. For
12737instance, both Modula-2 and C require the arguments to arithmetical
12738operators to be numbers. In C, enumerated types and pointers can be
12739represented as numbers, so that they are valid arguments to mathematical
79a6e687 12740operators. @xref{Supported Languages, ,Supported Languages}, for further
c906108c
SS
12741details on specific languages.
12742
12743@value{GDBN} provides some additional commands for controlling the type checker:
12744
c906108c
SS
12745@kindex set check type
12746@kindex show check type
12747@table @code
12748@item set check type auto
12749Set type checking on or off based on the current working language.
79a6e687 12750@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
12751each language.
12752
12753@item set check type on
12754@itemx set check type off
12755Set type checking on or off, overriding the default setting for the
12756current working language. Issue a warning if the setting does not
12757match the language default. If any type mismatches occur in
d4f3574e 12758evaluating an expression while type checking is on, @value{GDBN} prints a
c906108c
SS
12759message and aborts evaluation of the expression.
12760
12761@item set check type warn
12762Cause the type checker to issue warnings, but to always attempt to
12763evaluate the expression. Evaluating the expression may still
12764be impossible for other reasons. For example, @value{GDBN} cannot add
12765numbers and structures.
12766
12767@item show type
5d161b24 12768Show the current setting of the type checker, and whether or not @value{GDBN}
c906108c
SS
12769is setting it automatically.
12770@end table
12771
12772@cindex range checking
12773@cindex checks, range
6d2ebf8b 12774@node Range Checking
79a6e687 12775@subsection An Overview of Range Checking
c906108c
SS
12776
12777In some languages (such as Modula-2), it is an error to exceed the
12778bounds of a type; this is enforced with run-time checks. Such range
12779checking is meant to ensure program correctness by making sure
12780computations do not overflow, or indices on an array element access do
12781not exceed the bounds of the array.
12782
12783For expressions you use in @value{GDBN} commands, you can tell
12784@value{GDBN} to treat range errors in one of three ways: ignore them,
12785always treat them as errors and abandon the expression, or issue
12786warnings but evaluate the expression anyway.
12787
12788A range error can result from numerical overflow, from exceeding an
12789array index bound, or when you type a constant that is not a member
12790of any type. Some languages, however, do not treat overflows as an
12791error. In many implementations of C, mathematical overflow causes the
12792result to ``wrap around'' to lower values---for example, if @var{m} is
12793the largest integer value, and @var{s} is the smallest, then
12794
474c8240 12795@smallexample
c906108c 12796@var{m} + 1 @result{} @var{s}
474c8240 12797@end smallexample
c906108c
SS
12798
12799This, too, is specific to individual languages, and in some cases
79a6e687
BW
12800specific to individual compilers or machines. @xref{Supported Languages, ,
12801Supported Languages}, for further details on specific languages.
c906108c
SS
12802
12803@value{GDBN} provides some additional commands for controlling the range checker:
12804
c906108c
SS
12805@kindex set check range
12806@kindex show check range
12807@table @code
12808@item set check range auto
12809Set range checking on or off based on the current working language.
79a6e687 12810@xref{Supported Languages, ,Supported Languages}, for the default settings for
c906108c
SS
12811each language.
12812
12813@item set check range on
12814@itemx set check range off
12815Set range checking on or off, overriding the default setting for the
12816current working language. A warning is issued if the setting does not
c3f6f71d
JM
12817match the language default. If a range error occurs and range checking is on,
12818then a message is printed and evaluation of the expression is aborted.
c906108c
SS
12819
12820@item set check range warn
12821Output messages when the @value{GDBN} range checker detects a range error,
12822but attempt to evaluate the expression anyway. Evaluating the
12823expression may still be impossible for other reasons, such as accessing
12824memory that the process does not own (a typical example from many Unix
12825systems).
12826
12827@item show range
12828Show the current setting of the range checker, and whether or not it is
12829being set automatically by @value{GDBN}.
12830@end table
c906108c 12831
79a6e687
BW
12832@node Supported Languages
12833@section Supported Languages
c906108c 12834
a766d390
DE
12835@value{GDBN} supports C, C@t{++}, D, Go, Objective-C, Fortran, Java,
12836OpenCL C, Pascal, assembly, Modula-2, and Ada.
cce74817 12837@c This is false ...
c906108c
SS
12838Some @value{GDBN} features may be used in expressions regardless of the
12839language you use: the @value{GDBN} @code{@@} and @code{::} operators,
12840and the @samp{@{type@}addr} construct (@pxref{Expressions,
12841,Expressions}) can be used with the constructs of any supported
12842language.
12843
12844The following sections detail to what degree each source language is
12845supported by @value{GDBN}. These sections are not meant to be language
12846tutorials or references, but serve only as a reference guide to what the
12847@value{GDBN} expression parser accepts, and what input and output
12848formats should look like for different languages. There are many good
12849books written on each of these languages; please look to these for a
12850language reference or tutorial.
12851
c906108c 12852@menu
b37303ee 12853* C:: C and C@t{++}
6aecb9c2 12854* D:: D
a766d390 12855* Go:: Go
b383017d 12856* Objective-C:: Objective-C
f4b8a18d 12857* OpenCL C:: OpenCL C
09d4efe1 12858* Fortran:: Fortran
9c16f35a 12859* Pascal:: Pascal
b37303ee 12860* Modula-2:: Modula-2
e07c999f 12861* Ada:: Ada
c906108c
SS
12862@end menu
12863
6d2ebf8b 12864@node C
b37052ae 12865@subsection C and C@t{++}
7a292a7a 12866
b37052ae
EZ
12867@cindex C and C@t{++}
12868@cindex expressions in C or C@t{++}
c906108c 12869
b37052ae 12870Since C and C@t{++} are so closely related, many features of @value{GDBN} apply
c906108c
SS
12871to both languages. Whenever this is the case, we discuss those languages
12872together.
12873
41afff9a
EZ
12874@cindex C@t{++}
12875@cindex @code{g++}, @sc{gnu} C@t{++} compiler
b37052ae
EZ
12876@cindex @sc{gnu} C@t{++}
12877The C@t{++} debugging facilities are jointly implemented by the C@t{++}
12878compiler and @value{GDBN}. Therefore, to debug your C@t{++} code
12879effectively, you must compile your C@t{++} programs with a supported
12880C@t{++} compiler, such as @sc{gnu} @code{g++}, or the HP ANSI C@t{++}
c906108c
SS
12881compiler (@code{aCC}).
12882
c906108c 12883@menu
b37052ae
EZ
12884* C Operators:: C and C@t{++} operators
12885* C Constants:: C and C@t{++} constants
79a6e687 12886* C Plus Plus Expressions:: C@t{++} expressions
b37052ae
EZ
12887* C Defaults:: Default settings for C and C@t{++}
12888* C Checks:: C and C@t{++} type and range checks
c906108c 12889* Debugging C:: @value{GDBN} and C
79a6e687 12890* Debugging C Plus Plus:: @value{GDBN} features for C@t{++}
febe4383 12891* Decimal Floating Point:: Numbers in Decimal Floating Point format
c906108c 12892@end menu
c906108c 12893
6d2ebf8b 12894@node C Operators
79a6e687 12895@subsubsection C and C@t{++} Operators
7a292a7a 12896
b37052ae 12897@cindex C and C@t{++} operators
c906108c
SS
12898
12899Operators must be defined on values of specific types. For instance,
12900@code{+} is defined on numbers, but not on structures. Operators are
5d161b24 12901often defined on groups of types.
c906108c 12902
b37052ae 12903For the purposes of C and C@t{++}, the following definitions hold:
c906108c
SS
12904
12905@itemize @bullet
53a5351d 12906
c906108c 12907@item
c906108c 12908@emph{Integral types} include @code{int} with any of its storage-class
b37052ae 12909specifiers; @code{char}; @code{enum}; and, for C@t{++}, @code{bool}.
c906108c
SS
12910
12911@item
d4f3574e
SS
12912@emph{Floating-point types} include @code{float}, @code{double}, and
12913@code{long double} (if supported by the target platform).
c906108c
SS
12914
12915@item
53a5351d 12916@emph{Pointer types} include all types defined as @code{(@var{type} *)}.
c906108c
SS
12917
12918@item
12919@emph{Scalar types} include all of the above.
53a5351d 12920
c906108c
SS
12921@end itemize
12922
12923@noindent
12924The following operators are supported. They are listed here
12925in order of increasing precedence:
12926
12927@table @code
12928@item ,
12929The comma or sequencing operator. Expressions in a comma-separated list
12930are evaluated from left to right, with the result of the entire
12931expression being the last expression evaluated.
12932
12933@item =
12934Assignment. The value of an assignment expression is the value
12935assigned. Defined on scalar types.
12936
12937@item @var{op}=
12938Used in an expression of the form @w{@code{@var{a} @var{op}= @var{b}}},
12939and translated to @w{@code{@var{a} = @var{a op b}}}.
d4f3574e 12940@w{@code{@var{op}=}} and @code{=} have the same precedence.
c906108c
SS
12941@var{op} is any one of the operators @code{|}, @code{^}, @code{&},
12942@code{<<}, @code{>>}, @code{+}, @code{-}, @code{*}, @code{/}, @code{%}.
12943
12944@item ?:
12945The ternary operator. @code{@var{a} ? @var{b} : @var{c}} can be thought
12946of as: if @var{a} then @var{b} else @var{c}. @var{a} should be of an
12947integral type.
12948
12949@item ||
12950Logical @sc{or}. Defined on integral types.
12951
12952@item &&
12953Logical @sc{and}. Defined on integral types.
12954
12955@item |
12956Bitwise @sc{or}. Defined on integral types.
12957
12958@item ^
12959Bitwise exclusive-@sc{or}. Defined on integral types.
12960
12961@item &
12962Bitwise @sc{and}. Defined on integral types.
12963
12964@item ==@r{, }!=
12965Equality and inequality. Defined on scalar types. The value of these
12966expressions is 0 for false and non-zero for true.
12967
12968@item <@r{, }>@r{, }<=@r{, }>=
12969Less than, greater than, less than or equal, greater than or equal.
12970Defined on scalar types. The value of these expressions is 0 for false
12971and non-zero for true.
12972
12973@item <<@r{, }>>
12974left shift, and right shift. Defined on integral types.
12975
12976@item @@
12977The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
12978
12979@item +@r{, }-
12980Addition and subtraction. Defined on integral types, floating-point types and
12981pointer types.
12982
12983@item *@r{, }/@r{, }%
12984Multiplication, division, and modulus. Multiplication and division are
12985defined on integral and floating-point types. Modulus is defined on
12986integral types.
12987
12988@item ++@r{, }--
12989Increment and decrement. When appearing before a variable, the
12990operation is performed before the variable is used in an expression;
12991when appearing after it, the variable's value is used before the
12992operation takes place.
12993
12994@item *
12995Pointer dereferencing. Defined on pointer types. Same precedence as
12996@code{++}.
12997
12998@item &
12999Address operator. Defined on variables. Same precedence as @code{++}.
13000
b37052ae
EZ
13001For debugging C@t{++}, @value{GDBN} implements a use of @samp{&} beyond what is
13002allowed in the C@t{++} language itself: you can use @samp{&(&@var{ref})}
b17828ca 13003to examine the address
b37052ae 13004where a C@t{++} reference variable (declared with @samp{&@var{ref}}) is
c906108c 13005stored.
c906108c
SS
13006
13007@item -
13008Negative. Defined on integral and floating-point types. Same
13009precedence as @code{++}.
13010
13011@item !
13012Logical negation. Defined on integral types. Same precedence as
13013@code{++}.
13014
13015@item ~
13016Bitwise complement operator. Defined on integral types. Same precedence as
13017@code{++}.
13018
13019
13020@item .@r{, }->
13021Structure member, and pointer-to-structure member. For convenience,
13022@value{GDBN} regards the two as equivalent, choosing whether to dereference a
13023pointer based on the stored type information.
13024Defined on @code{struct} and @code{union} data.
13025
c906108c
SS
13026@item .*@r{, }->*
13027Dereferences of pointers to members.
c906108c
SS
13028
13029@item []
13030Array indexing. @code{@var{a}[@var{i}]} is defined as
13031@code{*(@var{a}+@var{i})}. Same precedence as @code{->}.
13032
13033@item ()
13034Function parameter list. Same precedence as @code{->}.
13035
c906108c 13036@item ::
b37052ae 13037C@t{++} scope resolution operator. Defined on @code{struct}, @code{union},
7a292a7a 13038and @code{class} types.
c906108c
SS
13039
13040@item ::
7a292a7a
SS
13041Doubled colons also represent the @value{GDBN} scope operator
13042(@pxref{Expressions, ,Expressions}). Same precedence as @code{::},
13043above.
c906108c
SS
13044@end table
13045
c906108c
SS
13046If an operator is redefined in the user code, @value{GDBN} usually
13047attempts to invoke the redefined version instead of using the operator's
13048predefined meaning.
c906108c 13049
6d2ebf8b 13050@node C Constants
79a6e687 13051@subsubsection C and C@t{++} Constants
c906108c 13052
b37052ae 13053@cindex C and C@t{++} constants
c906108c 13054
b37052ae 13055@value{GDBN} allows you to express the constants of C and C@t{++} in the
c906108c 13056following ways:
c906108c
SS
13057
13058@itemize @bullet
13059@item
13060Integer constants are a sequence of digits. Octal constants are
6ca652b0
EZ
13061specified by a leading @samp{0} (i.e.@: zero), and hexadecimal constants
13062by a leading @samp{0x} or @samp{0X}. Constants may also end with a letter
c906108c
SS
13063@samp{l}, specifying that the constant should be treated as a
13064@code{long} value.
13065
13066@item
13067Floating point constants are a sequence of digits, followed by a decimal
13068point, followed by a sequence of digits, and optionally followed by an
13069exponent. An exponent is of the form:
13070@samp{@w{e@r{[[}+@r{]|}-@r{]}@var{nnn}}}, where @var{nnn} is another
13071sequence of digits. The @samp{+} is optional for positive exponents.
d4f3574e
SS
13072A floating-point constant may also end with a letter @samp{f} or
13073@samp{F}, specifying that the constant should be treated as being of
13074the @code{float} (as opposed to the default @code{double}) type; or with
13075a letter @samp{l} or @samp{L}, which specifies a @code{long double}
13076constant.
c906108c
SS
13077
13078@item
13079Enumerated constants consist of enumerated identifiers, or their
13080integral equivalents.
13081
13082@item
13083Character constants are a single character surrounded by single quotes
13084(@code{'}), or a number---the ordinal value of the corresponding character
d4f3574e 13085(usually its @sc{ascii} value). Within quotes, the single character may
c906108c
SS
13086be represented by a letter or by @dfn{escape sequences}, which are of
13087the form @samp{\@var{nnn}}, where @var{nnn} is the octal representation
13088of the character's ordinal value; or of the form @samp{\@var{x}}, where
13089@samp{@var{x}} is a predefined special character---for example,
13090@samp{\n} for newline.
13091
e0f8f636
TT
13092Wide character constants can be written by prefixing a character
13093constant with @samp{L}, as in C. For example, @samp{L'x'} is the wide
13094form of @samp{x}. The target wide character set is used when
13095computing the value of this constant (@pxref{Character Sets}).
13096
c906108c 13097@item
96a2c332
SS
13098String constants are a sequence of character constants surrounded by
13099double quotes (@code{"}). Any valid character constant (as described
13100above) may appear. Double quotes within the string must be preceded by
13101a backslash, so for instance @samp{"a\"b'c"} is a string of five
13102characters.
c906108c 13103
e0f8f636
TT
13104Wide string constants can be written by prefixing a string constant
13105with @samp{L}, as in C. The target wide character set is used when
13106computing the value of this constant (@pxref{Character Sets}).
13107
c906108c
SS
13108@item
13109Pointer constants are an integral value. You can also write pointers
13110to constants using the C operator @samp{&}.
13111
13112@item
13113Array constants are comma-separated lists surrounded by braces @samp{@{}
13114and @samp{@}}; for example, @samp{@{1,2,3@}} is a three-element array of
13115integers, @samp{@{@{1,2@}, @{3,4@}, @{5,6@}@}} is a three-by-two array,
13116and @samp{@{&"hi", &"there", &"fred"@}} is a three-element array of pointers.
13117@end itemize
13118
79a6e687
BW
13119@node C Plus Plus Expressions
13120@subsubsection C@t{++} Expressions
b37052ae
EZ
13121
13122@cindex expressions in C@t{++}
13123@value{GDBN} expression handling can interpret most C@t{++} expressions.
13124
0179ffac
DC
13125@cindex debugging C@t{++} programs
13126@cindex C@t{++} compilers
13127@cindex debug formats and C@t{++}
13128@cindex @value{NGCC} and C@t{++}
c906108c 13129@quotation
e0f8f636
TT
13130@emph{Warning:} @value{GDBN} can only debug C@t{++} code if you use
13131the proper compiler and the proper debug format. Currently,
13132@value{GDBN} works best when debugging C@t{++} code that is compiled
13133with the most recent version of @value{NGCC} possible. The DWARF
13134debugging format is preferred; @value{NGCC} defaults to this on most
13135popular platforms. Other compilers and/or debug formats are likely to
13136work badly or not at all when using @value{GDBN} to debug C@t{++}
13137code. @xref{Compilation}.
c906108c 13138@end quotation
c906108c
SS
13139
13140@enumerate
13141
13142@cindex member functions
13143@item
13144Member function calls are allowed; you can use expressions like
13145
474c8240 13146@smallexample
c906108c 13147count = aml->GetOriginal(x, y)
474c8240 13148@end smallexample
c906108c 13149
41afff9a 13150@vindex this@r{, inside C@t{++} member functions}
b37052ae 13151@cindex namespace in C@t{++}
c906108c
SS
13152@item
13153While a member function is active (in the selected stack frame), your
13154expressions have the same namespace available as the member function;
13155that is, @value{GDBN} allows implicit references to the class instance
e0f8f636
TT
13156pointer @code{this} following the same rules as C@t{++}. @code{using}
13157declarations in the current scope are also respected by @value{GDBN}.
c906108c 13158
c906108c 13159@cindex call overloaded functions
d4f3574e 13160@cindex overloaded functions, calling
b37052ae 13161@cindex type conversions in C@t{++}
c906108c
SS
13162@item
13163You can call overloaded functions; @value{GDBN} resolves the function
d4f3574e 13164call to the right definition, with some restrictions. @value{GDBN} does not
c906108c
SS
13165perform overload resolution involving user-defined type conversions,
13166calls to constructors, or instantiations of templates that do not exist
13167in the program. It also cannot handle ellipsis argument lists or
13168default arguments.
13169
13170It does perform integral conversions and promotions, floating-point
13171promotions, arithmetic conversions, pointer conversions, conversions of
13172class objects to base classes, and standard conversions such as those of
13173functions or arrays to pointers; it requires an exact match on the
13174number of function arguments.
13175
13176Overload resolution is always performed, unless you have specified
79a6e687
BW
13177@code{set overload-resolution off}. @xref{Debugging C Plus Plus,
13178,@value{GDBN} Features for C@t{++}}.
c906108c 13179
d4f3574e 13180You must specify @code{set overload-resolution off} in order to use an
c906108c
SS
13181explicit function signature to call an overloaded function, as in
13182@smallexample
13183p 'foo(char,int)'('x', 13)
13184@end smallexample
d4f3574e 13185
c906108c 13186The @value{GDBN} command-completion facility can simplify this;
79a6e687 13187see @ref{Completion, ,Command Completion}.
c906108c 13188
c906108c
SS
13189@cindex reference declarations
13190@item
b37052ae
EZ
13191@value{GDBN} understands variables declared as C@t{++} references; you can use
13192them in expressions just as you do in C@t{++} source---they are automatically
c906108c
SS
13193dereferenced.
13194
13195In the parameter list shown when @value{GDBN} displays a frame, the values of
13196reference variables are not displayed (unlike other variables); this
13197avoids clutter, since references are often used for large structures.
13198The @emph{address} of a reference variable is always shown, unless
13199you have specified @samp{set print address off}.
13200
13201@item
b37052ae 13202@value{GDBN} supports the C@t{++} name resolution operator @code{::}---your
c906108c
SS
13203expressions can use it just as expressions in your program do. Since
13204one scope may be defined in another, you can use @code{::} repeatedly if
13205necessary, for example in an expression like
13206@samp{@var{scope1}::@var{scope2}::@var{name}}. @value{GDBN} also allows
b37052ae 13207resolving name scope by reference to source files, in both C and C@t{++}
79a6e687 13208debugging (@pxref{Variables, ,Program Variables}).
c906108c 13209
e0f8f636
TT
13210@item
13211@value{GDBN} performs argument-dependent lookup, following the C@t{++}
13212specification.
13213@end enumerate
c906108c 13214
6d2ebf8b 13215@node C Defaults
79a6e687 13216@subsubsection C and C@t{++} Defaults
7a292a7a 13217
b37052ae 13218@cindex C and C@t{++} defaults
c906108c 13219
c906108c
SS
13220If you allow @value{GDBN} to set type and range checking automatically, they
13221both default to @code{off} whenever the working language changes to
b37052ae 13222C or C@t{++}. This happens regardless of whether you or @value{GDBN}
c906108c 13223selects the working language.
c906108c
SS
13224
13225If you allow @value{GDBN} to set the language automatically, it
13226recognizes source files whose names end with @file{.c}, @file{.C}, or
13227@file{.cc}, etc, and when @value{GDBN} enters code compiled from one of
b37052ae 13228these files, it sets the working language to C or C@t{++}.
79a6e687 13229@xref{Automatically, ,Having @value{GDBN} Infer the Source Language},
c906108c
SS
13230for further details.
13231
c906108c
SS
13232@c Type checking is (a) primarily motivated by Modula-2, and (b)
13233@c unimplemented. If (b) changes, it might make sense to let this node
13234@c appear even if Mod-2 does not, but meanwhile ignore it. roland 16jul93.
7a292a7a 13235
6d2ebf8b 13236@node C Checks
79a6e687 13237@subsubsection C and C@t{++} Type and Range Checks
7a292a7a 13238
b37052ae 13239@cindex C and C@t{++} checks
c906108c 13240
b37052ae 13241By default, when @value{GDBN} parses C or C@t{++} expressions, type checking
c906108c
SS
13242is not used. However, if you turn type checking on, @value{GDBN}
13243considers two variables type equivalent if:
13244
13245@itemize @bullet
13246@item
13247The two variables are structured and have the same structure, union, or
13248enumerated tag.
13249
13250@item
13251The two variables have the same type name, or types that have been
13252declared equivalent through @code{typedef}.
13253
13254@ignore
13255@c leaving this out because neither J Gilmore nor R Pesch understand it.
13256@c FIXME--beers?
13257@item
13258The two @code{struct}, @code{union}, or @code{enum} variables are
13259declared in the same declaration. (Note: this may not be true for all C
13260compilers.)
13261@end ignore
13262@end itemize
13263
13264Range checking, if turned on, is done on mathematical operations. Array
13265indices are not checked, since they are often used to index a pointer
13266that is not itself an array.
c906108c 13267
6d2ebf8b 13268@node Debugging C
c906108c 13269@subsubsection @value{GDBN} and C
c906108c
SS
13270
13271The @code{set print union} and @code{show print union} commands apply to
13272the @code{union} type. When set to @samp{on}, any @code{union} that is
7a292a7a
SS
13273inside a @code{struct} or @code{class} is also printed. Otherwise, it
13274appears as @samp{@{...@}}.
c906108c
SS
13275
13276The @code{@@} operator aids in the debugging of dynamic arrays, formed
13277with pointers and a memory allocation function. @xref{Expressions,
13278,Expressions}.
13279
79a6e687
BW
13280@node Debugging C Plus Plus
13281@subsubsection @value{GDBN} Features for C@t{++}
c906108c 13282
b37052ae 13283@cindex commands for C@t{++}
7a292a7a 13284
b37052ae
EZ
13285Some @value{GDBN} commands are particularly useful with C@t{++}, and some are
13286designed specifically for use with C@t{++}. Here is a summary:
c906108c
SS
13287
13288@table @code
13289@cindex break in overloaded functions
13290@item @r{breakpoint menus}
13291When you want a breakpoint in a function whose name is overloaded,
6ba66d6a
JB
13292@value{GDBN} has the capability to display a menu of possible breakpoint
13293locations to help you specify which function definition you want.
13294@xref{Ambiguous Expressions,,Ambiguous Expressions}.
c906108c 13295
b37052ae 13296@cindex overloading in C@t{++}
c906108c
SS
13297@item rbreak @var{regex}
13298Setting breakpoints using regular expressions is helpful for setting
13299breakpoints on overloaded functions that are not members of any special
13300classes.
79a6e687 13301@xref{Set Breaks, ,Setting Breakpoints}.
c906108c 13302
b37052ae 13303@cindex C@t{++} exception handling
c906108c
SS
13304@item catch throw
13305@itemx catch catch
b37052ae 13306Debug C@t{++} exception handling using these commands. @xref{Set
79a6e687 13307Catchpoints, , Setting Catchpoints}.
c906108c
SS
13308
13309@cindex inheritance
13310@item ptype @var{typename}
13311Print inheritance relationships as well as other information for type
13312@var{typename}.
13313@xref{Symbols, ,Examining the Symbol Table}.
13314
c4aeac85
TT
13315@item info vtbl @var{expression}.
13316The @code{info vtbl} command can be used to display the virtual
13317method tables of the object computed by @var{expression}. This shows
13318one entry per virtual table; there may be multiple virtual tables when
13319multiple inheritance is in use.
13320
b37052ae 13321@cindex C@t{++} symbol display
c906108c
SS
13322@item set print demangle
13323@itemx show print demangle
13324@itemx set print asm-demangle
13325@itemx show print asm-demangle
b37052ae
EZ
13326Control whether C@t{++} symbols display in their source form, both when
13327displaying code as C@t{++} source and when displaying disassemblies.
79a6e687 13328@xref{Print Settings, ,Print Settings}.
c906108c
SS
13329
13330@item set print object
13331@itemx show print object
13332Choose whether to print derived (actual) or declared types of objects.
79a6e687 13333@xref{Print Settings, ,Print Settings}.
c906108c
SS
13334
13335@item set print vtbl
13336@itemx show print vtbl
13337Control the format for printing virtual function tables.
79a6e687 13338@xref{Print Settings, ,Print Settings}.
c906108c 13339(The @code{vtbl} commands do not work on programs compiled with the HP
b37052ae 13340ANSI C@t{++} compiler (@code{aCC}).)
c906108c
SS
13341
13342@kindex set overload-resolution
d4f3574e 13343@cindex overloaded functions, overload resolution
c906108c 13344@item set overload-resolution on
b37052ae 13345Enable overload resolution for C@t{++} expression evaluation. The default
c906108c
SS
13346is on. For overloaded functions, @value{GDBN} evaluates the arguments
13347and searches for a function whose signature matches the argument types,
79a6e687
BW
13348using the standard C@t{++} conversion rules (see @ref{C Plus Plus
13349Expressions, ,C@t{++} Expressions}, for details).
13350If it cannot find a match, it emits a message.
c906108c
SS
13351
13352@item set overload-resolution off
b37052ae 13353Disable overload resolution for C@t{++} expression evaluation. For
c906108c
SS
13354overloaded functions that are not class member functions, @value{GDBN}
13355chooses the first function of the specified name that it finds in the
13356symbol table, whether or not its arguments are of the correct type. For
13357overloaded functions that are class member functions, @value{GDBN}
13358searches for a function whose signature @emph{exactly} matches the
13359argument types.
c906108c 13360
9c16f35a
EZ
13361@kindex show overload-resolution
13362@item show overload-resolution
13363Show the current setting of overload resolution.
13364
c906108c
SS
13365@item @r{Overloaded symbol names}
13366You can specify a particular definition of an overloaded symbol, using
b37052ae 13367the same notation that is used to declare such symbols in C@t{++}: type
c906108c
SS
13368@code{@var{symbol}(@var{types})} rather than just @var{symbol}. You can
13369also use the @value{GDBN} command-line word completion facilities to list the
13370available choices, or to finish the type list for you.
79a6e687 13371@xref{Completion,, Command Completion}, for details on how to do this.
c906108c 13372@end table
c906108c 13373
febe4383
TJB
13374@node Decimal Floating Point
13375@subsubsection Decimal Floating Point format
13376@cindex decimal floating point format
13377
13378@value{GDBN} can examine, set and perform computations with numbers in
13379decimal floating point format, which in the C language correspond to the
13380@code{_Decimal32}, @code{_Decimal64} and @code{_Decimal128} types as
13381specified by the extension to support decimal floating-point arithmetic.
13382
13383There are two encodings in use, depending on the architecture: BID (Binary
13384Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for
99e008fe 13385PowerPC. @value{GDBN} will use the appropriate encoding for the configured
febe4383
TJB
13386target.
13387
13388Because of a limitation in @file{libdecnumber}, the library used by @value{GDBN}
13389to manipulate decimal floating point numbers, it is not possible to convert
13390(using a cast, for example) integers wider than 32-bit to decimal float.
13391
13392In addition, in order to imitate @value{GDBN}'s behaviour with binary floating
13393point computations, error checking in decimal float operations ignores
13394underflow, overflow and divide by zero exceptions.
13395
4acd40f3 13396In the PowerPC architecture, @value{GDBN} provides a set of pseudo-registers
99e008fe
EZ
13397to inspect @code{_Decimal128} values stored in floating point registers.
13398See @ref{PowerPC,,PowerPC} for more details.
4acd40f3 13399
6aecb9c2
JB
13400@node D
13401@subsection D
13402
13403@cindex D
13404@value{GDBN} can be used to debug programs written in D and compiled with
13405GDC, LDC or DMD compilers. Currently @value{GDBN} supports only one D
13406specific feature --- dynamic arrays.
13407
a766d390
DE
13408@node Go
13409@subsection Go
13410
13411@cindex Go (programming language)
13412@value{GDBN} can be used to debug programs written in Go and compiled with
13413@file{gccgo} or @file{6g} compilers.
13414
13415Here is a summary of the Go-specific features and restrictions:
13416
13417@table @code
13418@cindex current Go package
13419@item The current Go package
13420The name of the current package does not need to be specified when
13421specifying global variables and functions.
13422
13423For example, given the program:
13424
13425@example
13426package main
13427var myglob = "Shall we?"
13428func main () @{
13429 // ...
13430@}
13431@end example
13432
13433When stopped inside @code{main} either of these work:
13434
13435@example
13436(gdb) p myglob
13437(gdb) p main.myglob
13438@end example
13439
13440@cindex builtin Go types
13441@item Builtin Go types
13442The @code{string} type is recognized by @value{GDBN} and is printed
13443as a string.
13444
13445@cindex builtin Go functions
13446@item Builtin Go functions
13447The @value{GDBN} expression parser recognizes the @code{unsafe.Sizeof}
13448function and handles it internally.
a766d390
DE
13449
13450@cindex restrictions on Go expressions
13451@item Restrictions on Go expressions
13452All Go operators are supported except @code{&^}.
13453The Go @code{_} ``blank identifier'' is not supported.
13454Automatic dereferencing of pointers is not supported.
50f042b9 13455@end table
a766d390 13456
b37303ee
AF
13457@node Objective-C
13458@subsection Objective-C
13459
13460@cindex Objective-C
13461This section provides information about some commands and command
721c2651
EZ
13462options that are useful for debugging Objective-C code. See also
13463@ref{Symbols, info classes}, and @ref{Symbols, info selectors}, for a
13464few more commands specific to Objective-C support.
b37303ee
AF
13465
13466@menu
b383017d
RM
13467* Method Names in Commands::
13468* The Print Command with Objective-C::
b37303ee
AF
13469@end menu
13470
c8f4133a 13471@node Method Names in Commands
b37303ee
AF
13472@subsubsection Method Names in Commands
13473
13474The following commands have been extended to accept Objective-C method
13475names as line specifications:
13476
13477@kindex clear@r{, and Objective-C}
13478@kindex break@r{, and Objective-C}
13479@kindex info line@r{, and Objective-C}
13480@kindex jump@r{, and Objective-C}
13481@kindex list@r{, and Objective-C}
13482@itemize
13483@item @code{clear}
13484@item @code{break}
13485@item @code{info line}
13486@item @code{jump}
13487@item @code{list}
13488@end itemize
13489
13490A fully qualified Objective-C method name is specified as
13491
13492@smallexample
13493-[@var{Class} @var{methodName}]
13494@end smallexample
13495
c552b3bb
JM
13496where the minus sign is used to indicate an instance method and a
13497plus sign (not shown) is used to indicate a class method. The class
13498name @var{Class} and method name @var{methodName} are enclosed in
13499brackets, similar to the way messages are specified in Objective-C
13500source code. For example, to set a breakpoint at the @code{create}
13501instance method of class @code{Fruit} in the program currently being
13502debugged, enter:
b37303ee
AF
13503
13504@smallexample
13505break -[Fruit create]
13506@end smallexample
13507
13508To list ten program lines around the @code{initialize} class method,
13509enter:
13510
13511@smallexample
13512list +[NSText initialize]
13513@end smallexample
13514
c552b3bb
JM
13515In the current version of @value{GDBN}, the plus or minus sign is
13516required. In future versions of @value{GDBN}, the plus or minus
13517sign will be optional, but you can use it to narrow the search. It
13518is also possible to specify just a method name:
b37303ee
AF
13519
13520@smallexample
13521break create
13522@end smallexample
13523
13524You must specify the complete method name, including any colons. If
13525your program's source files contain more than one @code{create} method,
13526you'll be presented with a numbered list of classes that implement that
13527method. Indicate your choice by number, or type @samp{0} to exit if
13528none apply.
13529
13530As another example, to clear a breakpoint established at the
13531@code{makeKeyAndOrderFront:} method of the @code{NSWindow} class, enter:
13532
13533@smallexample
13534clear -[NSWindow makeKeyAndOrderFront:]
13535@end smallexample
13536
13537@node The Print Command with Objective-C
13538@subsubsection The Print Command With Objective-C
721c2651 13539@cindex Objective-C, print objects
c552b3bb
JM
13540@kindex print-object
13541@kindex po @r{(@code{print-object})}
b37303ee 13542
c552b3bb 13543The print command has also been extended to accept methods. For example:
b37303ee
AF
13544
13545@smallexample
c552b3bb 13546print -[@var{object} hash]
b37303ee
AF
13547@end smallexample
13548
13549@cindex print an Objective-C object description
c552b3bb
JM
13550@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
13551@noindent
13552will tell @value{GDBN} to send the @code{hash} message to @var{object}
13553and print the result. Also, an additional command has been added,
13554@code{print-object} or @code{po} for short, which is meant to print
13555the description of an object. However, this command may only work
13556with certain Objective-C libraries that have a particular hook
13557function, @code{_NSPrintForDebugger}, defined.
b37303ee 13558
f4b8a18d
KW
13559@node OpenCL C
13560@subsection OpenCL C
13561
13562@cindex OpenCL C
13563This section provides information about @value{GDBN}s OpenCL C support.
13564
13565@menu
13566* OpenCL C Datatypes::
13567* OpenCL C Expressions::
13568* OpenCL C Operators::
13569@end menu
13570
13571@node OpenCL C Datatypes
13572@subsubsection OpenCL C Datatypes
13573
13574@cindex OpenCL C Datatypes
13575@value{GDBN} supports the builtin scalar and vector datatypes specified
13576by OpenCL 1.1. In addition the half- and double-precision floating point
13577data types of the @code{cl_khr_fp16} and @code{cl_khr_fp64} OpenCL
13578extensions are also known to @value{GDBN}.
13579
13580@node OpenCL C Expressions
13581@subsubsection OpenCL C Expressions
13582
13583@cindex OpenCL C Expressions
13584@value{GDBN} supports accesses to vector components including the access as
13585lvalue where possible. Since OpenCL C is based on C99 most C expressions
13586supported by @value{GDBN} can be used as well.
13587
13588@node OpenCL C Operators
13589@subsubsection OpenCL C Operators
13590
13591@cindex OpenCL C Operators
13592@value{GDBN} supports the operators specified by OpenCL 1.1 for scalar and
13593vector data types.
13594
09d4efe1
EZ
13595@node Fortran
13596@subsection Fortran
13597@cindex Fortran-specific support in @value{GDBN}
13598
814e32d7
WZ
13599@value{GDBN} can be used to debug programs written in Fortran, but it
13600currently supports only the features of Fortran 77 language.
13601
13602@cindex trailing underscore, in Fortran symbols
13603Some Fortran compilers (@sc{gnu} Fortran 77 and Fortran 95 compilers
13604among them) append an underscore to the names of variables and
13605functions. When you debug programs compiled by those compilers, you
13606will need to refer to variables and functions with a trailing
13607underscore.
13608
13609@menu
13610* Fortran Operators:: Fortran operators and expressions
13611* Fortran Defaults:: Default settings for Fortran
79a6e687 13612* Special Fortran Commands:: Special @value{GDBN} commands for Fortran
814e32d7
WZ
13613@end menu
13614
13615@node Fortran Operators
79a6e687 13616@subsubsection Fortran Operators and Expressions
814e32d7
WZ
13617
13618@cindex Fortran operators and expressions
13619
13620Operators must be defined on values of specific types. For instance,
13621@code{+} is defined on numbers, but not on characters or other non-
ff2587ec 13622arithmetic types. Operators are often defined on groups of types.
814e32d7
WZ
13623
13624@table @code
13625@item **
99e008fe 13626The exponentiation operator. It raises the first operand to the power
814e32d7
WZ
13627of the second one.
13628
13629@item :
13630The range operator. Normally used in the form of array(low:high) to
13631represent a section of array.
68837c9d
MD
13632
13633@item %
13634The access component operator. Normally used to access elements in derived
13635types. Also suitable for unions. As unions aren't part of regular Fortran,
13636this can only happen when accessing a register that uses a gdbarch-defined
13637union type.
814e32d7
WZ
13638@end table
13639
13640@node Fortran Defaults
13641@subsubsection Fortran Defaults
13642
13643@cindex Fortran Defaults
13644
13645Fortran symbols are usually case-insensitive, so @value{GDBN} by
13646default uses case-insensitive matches for Fortran symbols. You can
13647change that with the @samp{set case-insensitive} command, see
13648@ref{Symbols}, for the details.
13649
79a6e687
BW
13650@node Special Fortran Commands
13651@subsubsection Special Fortran Commands
814e32d7
WZ
13652
13653@cindex Special Fortran commands
13654
db2e3e2e
BW
13655@value{GDBN} has some commands to support Fortran-specific features,
13656such as displaying common blocks.
814e32d7 13657
09d4efe1
EZ
13658@table @code
13659@cindex @code{COMMON} blocks, Fortran
13660@kindex info common
13661@item info common @r{[}@var{common-name}@r{]}
13662This command prints the values contained in the Fortran @code{COMMON}
13663block whose name is @var{common-name}. With no argument, the names of
d52fb0e9 13664all @code{COMMON} blocks visible at the current program location are
09d4efe1
EZ
13665printed.
13666@end table
13667
9c16f35a
EZ
13668@node Pascal
13669@subsection Pascal
13670
13671@cindex Pascal support in @value{GDBN}, limitations
13672Debugging Pascal programs which use sets, subranges, file variables, or
13673nested functions does not currently work. @value{GDBN} does not support
13674entering expressions, printing values, or similar features using Pascal
13675syntax.
13676
13677The Pascal-specific command @code{set print pascal_static-members}
13678controls whether static members of Pascal objects are displayed.
13679@xref{Print Settings, pascal_static-members}.
13680
09d4efe1 13681@node Modula-2
c906108c 13682@subsection Modula-2
7a292a7a 13683
d4f3574e 13684@cindex Modula-2, @value{GDBN} support
c906108c
SS
13685
13686The extensions made to @value{GDBN} to support Modula-2 only support
13687output from the @sc{gnu} Modula-2 compiler (which is currently being
13688developed). Other Modula-2 compilers are not currently supported, and
13689attempting to debug executables produced by them is most likely
13690to give an error as @value{GDBN} reads in the executable's symbol
13691table.
13692
13693@cindex expressions in Modula-2
13694@menu
13695* M2 Operators:: Built-in operators
13696* Built-In Func/Proc:: Built-in functions and procedures
13697* M2 Constants:: Modula-2 constants
72019c9c 13698* M2 Types:: Modula-2 types
c906108c
SS
13699* M2 Defaults:: Default settings for Modula-2
13700* Deviations:: Deviations from standard Modula-2
13701* M2 Checks:: Modula-2 type and range checks
13702* M2 Scope:: The scope operators @code{::} and @code{.}
13703* GDB/M2:: @value{GDBN} and Modula-2
13704@end menu
13705
6d2ebf8b 13706@node M2 Operators
c906108c
SS
13707@subsubsection Operators
13708@cindex Modula-2 operators
13709
13710Operators must be defined on values of specific types. For instance,
13711@code{+} is defined on numbers, but not on structures. Operators are
13712often defined on groups of types. For the purposes of Modula-2, the
13713following definitions hold:
13714
13715@itemize @bullet
13716
13717@item
13718@emph{Integral types} consist of @code{INTEGER}, @code{CARDINAL}, and
13719their subranges.
13720
13721@item
13722@emph{Character types} consist of @code{CHAR} and its subranges.
13723
13724@item
13725@emph{Floating-point types} consist of @code{REAL}.
13726
13727@item
13728@emph{Pointer types} consist of anything declared as @code{POINTER TO
13729@var{type}}.
13730
13731@item
13732@emph{Scalar types} consist of all of the above.
13733
13734@item
13735@emph{Set types} consist of @code{SET} and @code{BITSET} types.
13736
13737@item
13738@emph{Boolean types} consist of @code{BOOLEAN}.
13739@end itemize
13740
13741@noindent
13742The following operators are supported, and appear in order of
13743increasing precedence:
13744
13745@table @code
13746@item ,
13747Function argument or array index separator.
13748
13749@item :=
13750Assignment. The value of @var{var} @code{:=} @var{value} is
13751@var{value}.
13752
13753@item <@r{, }>
13754Less than, greater than on integral, floating-point, or enumerated
13755types.
13756
13757@item <=@r{, }>=
96a2c332 13758Less than or equal to, greater than or equal to
c906108c
SS
13759on integral, floating-point and enumerated types, or set inclusion on
13760set types. Same precedence as @code{<}.
13761
13762@item =@r{, }<>@r{, }#
13763Equality and two ways of expressing inequality, valid on scalar types.
13764Same precedence as @code{<}. In @value{GDBN} scripts, only @code{<>} is
13765available for inequality, since @code{#} conflicts with the script
13766comment character.
13767
13768@item IN
13769Set membership. Defined on set types and the types of their members.
13770Same precedence as @code{<}.
13771
13772@item OR
13773Boolean disjunction. Defined on boolean types.
13774
13775@item AND@r{, }&
d4f3574e 13776Boolean conjunction. Defined on boolean types.
c906108c
SS
13777
13778@item @@
13779The @value{GDBN} ``artificial array'' operator (@pxref{Expressions, ,Expressions}).
13780
13781@item +@r{, }-
13782Addition and subtraction on integral and floating-point types, or union
13783and difference on set types.
13784
13785@item *
13786Multiplication on integral and floating-point types, or set intersection
13787on set types.
13788
13789@item /
13790Division on floating-point types, or symmetric set difference on set
13791types. Same precedence as @code{*}.
13792
13793@item DIV@r{, }MOD
13794Integer division and remainder. Defined on integral types. Same
13795precedence as @code{*}.
13796
13797@item -
99e008fe 13798Negative. Defined on @code{INTEGER} and @code{REAL} data.
c906108c
SS
13799
13800@item ^
13801Pointer dereferencing. Defined on pointer types.
13802
13803@item NOT
13804Boolean negation. Defined on boolean types. Same precedence as
13805@code{^}.
13806
13807@item .
13808@code{RECORD} field selector. Defined on @code{RECORD} data. Same
13809precedence as @code{^}.
13810
13811@item []
13812Array indexing. Defined on @code{ARRAY} data. Same precedence as @code{^}.
13813
13814@item ()
13815Procedure argument list. Defined on @code{PROCEDURE} objects. Same precedence
13816as @code{^}.
13817
13818@item ::@r{, }.
13819@value{GDBN} and Modula-2 scope operators.
13820@end table
13821
13822@quotation
72019c9c 13823@emph{Warning:} Set expressions and their operations are not yet supported, so @value{GDBN}
c906108c
SS
13824treats the use of the operator @code{IN}, or the use of operators
13825@code{+}, @code{-}, @code{*}, @code{/}, @code{=}, , @code{<>}, @code{#},
13826@code{<=}, and @code{>=} on sets as an error.
13827@end quotation
13828
cb51c4e0 13829
6d2ebf8b 13830@node Built-In Func/Proc
79a6e687 13831@subsubsection Built-in Functions and Procedures
cb51c4e0 13832@cindex Modula-2 built-ins
c906108c
SS
13833
13834Modula-2 also makes available several built-in procedures and functions.
13835In describing these, the following metavariables are used:
13836
13837@table @var
13838
13839@item a
13840represents an @code{ARRAY} variable.
13841
13842@item c
13843represents a @code{CHAR} constant or variable.
13844
13845@item i
13846represents a variable or constant of integral type.
13847
13848@item m
13849represents an identifier that belongs to a set. Generally used in the
13850same function with the metavariable @var{s}. The type of @var{s} should
13851be @code{SET OF @var{mtype}} (where @var{mtype} is the type of @var{m}).
13852
13853@item n
13854represents a variable or constant of integral or floating-point type.
13855
13856@item r
13857represents a variable or constant of floating-point type.
13858
13859@item t
13860represents a type.
13861
13862@item v
13863represents a variable.
13864
13865@item x
13866represents a variable or constant of one of many types. See the
13867explanation of the function for details.
13868@end table
13869
13870All Modula-2 built-in procedures also return a result, described below.
13871
13872@table @code
13873@item ABS(@var{n})
13874Returns the absolute value of @var{n}.
13875
13876@item CAP(@var{c})
13877If @var{c} is a lower case letter, it returns its upper case
c3f6f71d 13878equivalent, otherwise it returns its argument.
c906108c
SS
13879
13880@item CHR(@var{i})
13881Returns the character whose ordinal value is @var{i}.
13882
13883@item DEC(@var{v})
c3f6f71d 13884Decrements the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
13885
13886@item DEC(@var{v},@var{i})
13887Decrements the value in the variable @var{v} by @var{i}. Returns the
13888new value.
13889
13890@item EXCL(@var{m},@var{s})
13891Removes the element @var{m} from the set @var{s}. Returns the new
13892set.
13893
13894@item FLOAT(@var{i})
13895Returns the floating point equivalent of the integer @var{i}.
13896
13897@item HIGH(@var{a})
13898Returns the index of the last member of @var{a}.
13899
13900@item INC(@var{v})
c3f6f71d 13901Increments the value in the variable @var{v} by one. Returns the new value.
c906108c
SS
13902
13903@item INC(@var{v},@var{i})
13904Increments the value in the variable @var{v} by @var{i}. Returns the
13905new value.
13906
13907@item INCL(@var{m},@var{s})
13908Adds the element @var{m} to the set @var{s} if it is not already
13909there. Returns the new set.
13910
13911@item MAX(@var{t})
13912Returns the maximum value of the type @var{t}.
13913
13914@item MIN(@var{t})
13915Returns the minimum value of the type @var{t}.
13916
13917@item ODD(@var{i})
13918Returns boolean TRUE if @var{i} is an odd number.
13919
13920@item ORD(@var{x})
13921Returns the ordinal value of its argument. For example, the ordinal
c3f6f71d
JM
13922value of a character is its @sc{ascii} value (on machines supporting the
13923@sc{ascii} character set). @var{x} must be of an ordered type, which include
c906108c
SS
13924integral, character and enumerated types.
13925
13926@item SIZE(@var{x})
13927Returns the size of its argument. @var{x} can be a variable or a type.
13928
13929@item TRUNC(@var{r})
13930Returns the integral part of @var{r}.
13931
844781a1
GM
13932@item TSIZE(@var{x})
13933Returns the size of its argument. @var{x} can be a variable or a type.
13934
c906108c
SS
13935@item VAL(@var{t},@var{i})
13936Returns the member of the type @var{t} whose ordinal value is @var{i}.
13937@end table
13938
13939@quotation
13940@emph{Warning:} Sets and their operations are not yet supported, so
13941@value{GDBN} treats the use of procedures @code{INCL} and @code{EXCL} as
13942an error.
13943@end quotation
13944
13945@cindex Modula-2 constants
6d2ebf8b 13946@node M2 Constants
c906108c
SS
13947@subsubsection Constants
13948
13949@value{GDBN} allows you to express the constants of Modula-2 in the following
13950ways:
13951
13952@itemize @bullet
13953
13954@item
13955Integer constants are simply a sequence of digits. When used in an
13956expression, a constant is interpreted to be type-compatible with the
13957rest of the expression. Hexadecimal integers are specified by a
13958trailing @samp{H}, and octal integers by a trailing @samp{B}.
13959
13960@item
13961Floating point constants appear as a sequence of digits, followed by a
13962decimal point and another sequence of digits. An optional exponent can
13963then be specified, in the form @samp{E@r{[}+@r{|}-@r{]}@var{nnn}}, where
13964@samp{@r{[}+@r{|}-@r{]}@var{nnn}} is the desired exponent. All of the
13965digits of the floating point constant must be valid decimal (base 10)
13966digits.
13967
13968@item
13969Character constants consist of a single character enclosed by a pair of
13970like quotes, either single (@code{'}) or double (@code{"}). They may
c3f6f71d 13971also be expressed by their ordinal value (their @sc{ascii} value, usually)
c906108c
SS
13972followed by a @samp{C}.
13973
13974@item
13975String constants consist of a sequence of characters enclosed by a
13976pair of like quotes, either single (@code{'}) or double (@code{"}).
13977Escape sequences in the style of C are also allowed. @xref{C
79a6e687 13978Constants, ,C and C@t{++} Constants}, for a brief explanation of escape
c906108c
SS
13979sequences.
13980
13981@item
13982Enumerated constants consist of an enumerated identifier.
13983
13984@item
13985Boolean constants consist of the identifiers @code{TRUE} and
13986@code{FALSE}.
13987
13988@item
13989Pointer constants consist of integral values only.
13990
13991@item
13992Set constants are not yet supported.
13993@end itemize
13994
72019c9c
GM
13995@node M2 Types
13996@subsubsection Modula-2 Types
13997@cindex Modula-2 types
13998
13999Currently @value{GDBN} can print the following data types in Modula-2
14000syntax: array types, record types, set types, pointer types, procedure
14001types, enumerated types, subrange types and base types. You can also
14002print the contents of variables declared using these type.
14003This section gives a number of simple source code examples together with
14004sample @value{GDBN} sessions.
14005
14006The first example contains the following section of code:
14007
14008@smallexample
14009VAR
14010 s: SET OF CHAR ;
14011 r: [20..40] ;
14012@end smallexample
14013
14014@noindent
14015and you can request @value{GDBN} to interrogate the type and value of
14016@code{r} and @code{s}.
14017
14018@smallexample
14019(@value{GDBP}) print s
14020@{'A'..'C', 'Z'@}
14021(@value{GDBP}) ptype s
14022SET OF CHAR
14023(@value{GDBP}) print r
1402421
14025(@value{GDBP}) ptype r
14026[20..40]
14027@end smallexample
14028
14029@noindent
14030Likewise if your source code declares @code{s} as:
14031
14032@smallexample
14033VAR
14034 s: SET ['A'..'Z'] ;
14035@end smallexample
14036
14037@noindent
14038then you may query the type of @code{s} by:
14039
14040@smallexample
14041(@value{GDBP}) ptype s
14042type = SET ['A'..'Z']
14043@end smallexample
14044
14045@noindent
14046Note that at present you cannot interactively manipulate set
14047expressions using the debugger.
14048
14049The following example shows how you might declare an array in Modula-2
14050and how you can interact with @value{GDBN} to print its type and contents:
14051
14052@smallexample
14053VAR
14054 s: ARRAY [-10..10] OF CHAR ;
14055@end smallexample
14056
14057@smallexample
14058(@value{GDBP}) ptype s
14059ARRAY [-10..10] OF CHAR
14060@end smallexample
14061
14062Note that the array handling is not yet complete and although the type
14063is printed correctly, expression handling still assumes that all
14064arrays have a lower bound of zero and not @code{-10} as in the example
844781a1 14065above.
72019c9c
GM
14066
14067Here are some more type related Modula-2 examples:
14068
14069@smallexample
14070TYPE
14071 colour = (blue, red, yellow, green) ;
14072 t = [blue..yellow] ;
14073VAR
14074 s: t ;
14075BEGIN
14076 s := blue ;
14077@end smallexample
14078
14079@noindent
14080The @value{GDBN} interaction shows how you can query the data type
14081and value of a variable.
14082
14083@smallexample
14084(@value{GDBP}) print s
14085$1 = blue
14086(@value{GDBP}) ptype t
14087type = [blue..yellow]
14088@end smallexample
14089
14090@noindent
14091In this example a Modula-2 array is declared and its contents
14092displayed. Observe that the contents are written in the same way as
14093their @code{C} counterparts.
14094
14095@smallexample
14096VAR
14097 s: ARRAY [1..5] OF CARDINAL ;
14098BEGIN
14099 s[1] := 1 ;
14100@end smallexample
14101
14102@smallexample
14103(@value{GDBP}) print s
14104$1 = @{1, 0, 0, 0, 0@}
14105(@value{GDBP}) ptype s
14106type = ARRAY [1..5] OF CARDINAL
14107@end smallexample
14108
14109The Modula-2 language interface to @value{GDBN} also understands
14110pointer types as shown in this example:
14111
14112@smallexample
14113VAR
14114 s: POINTER TO ARRAY [1..5] OF CARDINAL ;
14115BEGIN
14116 NEW(s) ;
14117 s^[1] := 1 ;
14118@end smallexample
14119
14120@noindent
14121and you can request that @value{GDBN} describes the type of @code{s}.
14122
14123@smallexample
14124(@value{GDBP}) ptype s
14125type = POINTER TO ARRAY [1..5] OF CARDINAL
14126@end smallexample
14127
14128@value{GDBN} handles compound types as we can see in this example.
14129Here we combine array types, record types, pointer types and subrange
14130types:
14131
14132@smallexample
14133TYPE
14134 foo = RECORD
14135 f1: CARDINAL ;
14136 f2: CHAR ;
14137 f3: myarray ;
14138 END ;
14139
14140 myarray = ARRAY myrange OF CARDINAL ;
14141 myrange = [-2..2] ;
14142VAR
14143 s: POINTER TO ARRAY myrange OF foo ;
14144@end smallexample
14145
14146@noindent
14147and you can ask @value{GDBN} to describe the type of @code{s} as shown
14148below.
14149
14150@smallexample
14151(@value{GDBP}) ptype s
14152type = POINTER TO ARRAY [-2..2] OF foo = RECORD
14153 f1 : CARDINAL;
14154 f2 : CHAR;
14155 f3 : ARRAY [-2..2] OF CARDINAL;
14156END
14157@end smallexample
14158
6d2ebf8b 14159@node M2 Defaults
79a6e687 14160@subsubsection Modula-2 Defaults
c906108c
SS
14161@cindex Modula-2 defaults
14162
14163If type and range checking are set automatically by @value{GDBN}, they
14164both default to @code{on} whenever the working language changes to
d4f3574e 14165Modula-2. This happens regardless of whether you or @value{GDBN}
c906108c
SS
14166selected the working language.
14167
14168If you allow @value{GDBN} to set the language automatically, then entering
14169code compiled from a file whose name ends with @file{.mod} sets the
79a6e687
BW
14170working language to Modula-2. @xref{Automatically, ,Having @value{GDBN}
14171Infer the Source Language}, for further details.
c906108c 14172
6d2ebf8b 14173@node Deviations
79a6e687 14174@subsubsection Deviations from Standard Modula-2
c906108c
SS
14175@cindex Modula-2, deviations from
14176
14177A few changes have been made to make Modula-2 programs easier to debug.
14178This is done primarily via loosening its type strictness:
14179
14180@itemize @bullet
14181@item
14182Unlike in standard Modula-2, pointer constants can be formed by
14183integers. This allows you to modify pointer variables during
14184debugging. (In standard Modula-2, the actual address contained in a
14185pointer variable is hidden from you; it can only be modified
14186through direct assignment to another pointer variable or expression that
14187returned a pointer.)
14188
14189@item
14190C escape sequences can be used in strings and characters to represent
14191non-printable characters. @value{GDBN} prints out strings with these
14192escape sequences embedded. Single non-printable characters are
14193printed using the @samp{CHR(@var{nnn})} format.
14194
14195@item
14196The assignment operator (@code{:=}) returns the value of its right-hand
14197argument.
14198
14199@item
14200All built-in procedures both modify @emph{and} return their argument.
14201@end itemize
14202
6d2ebf8b 14203@node M2 Checks
79a6e687 14204@subsubsection Modula-2 Type and Range Checks
c906108c
SS
14205@cindex Modula-2 checks
14206
14207@quotation
14208@emph{Warning:} in this release, @value{GDBN} does not yet perform type or
14209range checking.
14210@end quotation
14211@c FIXME remove warning when type/range checks added
14212
14213@value{GDBN} considers two Modula-2 variables type equivalent if:
14214
14215@itemize @bullet
14216@item
14217They are of types that have been declared equivalent via a @code{TYPE
14218@var{t1} = @var{t2}} statement
14219
14220@item
14221They have been declared on the same line. (Note: This is true of the
14222@sc{gnu} Modula-2 compiler, but it may not be true of other compilers.)
14223@end itemize
14224
14225As long as type checking is enabled, any attempt to combine variables
14226whose types are not equivalent is an error.
14227
14228Range checking is done on all mathematical operations, assignment, array
14229index bounds, and all built-in functions and procedures.
14230
6d2ebf8b 14231@node M2 Scope
79a6e687 14232@subsubsection The Scope Operators @code{::} and @code{.}
c906108c 14233@cindex scope
41afff9a 14234@cindex @code{.}, Modula-2 scope operator
c906108c
SS
14235@cindex colon, doubled as scope operator
14236@ifinfo
41afff9a 14237@vindex colon-colon@r{, in Modula-2}
c906108c
SS
14238@c Info cannot handle :: but TeX can.
14239@end ifinfo
a67ec3f4 14240@ifnotinfo
41afff9a 14241@vindex ::@r{, in Modula-2}
a67ec3f4 14242@end ifnotinfo
c906108c
SS
14243
14244There are a few subtle differences between the Modula-2 scope operator
14245(@code{.}) and the @value{GDBN} scope operator (@code{::}). The two have
14246similar syntax:
14247
474c8240 14248@smallexample
c906108c
SS
14249
14250@var{module} . @var{id}
14251@var{scope} :: @var{id}
474c8240 14252@end smallexample
c906108c
SS
14253
14254@noindent
14255where @var{scope} is the name of a module or a procedure,
14256@var{module} the name of a module, and @var{id} is any declared
14257identifier within your program, except another module.
14258
14259Using the @code{::} operator makes @value{GDBN} search the scope
14260specified by @var{scope} for the identifier @var{id}. If it is not
14261found in the specified scope, then @value{GDBN} searches all scopes
14262enclosing the one specified by @var{scope}.
14263
14264Using the @code{.} operator makes @value{GDBN} search the current scope for
14265the identifier specified by @var{id} that was imported from the
14266definition module specified by @var{module}. With this operator, it is
14267an error if the identifier @var{id} was not imported from definition
14268module @var{module}, or if @var{id} is not an identifier in
14269@var{module}.
14270
6d2ebf8b 14271@node GDB/M2
c906108c
SS
14272@subsubsection @value{GDBN} and Modula-2
14273
14274Some @value{GDBN} commands have little use when debugging Modula-2 programs.
14275Five subcommands of @code{set print} and @code{show print} apply
b37052ae 14276specifically to C and C@t{++}: @samp{vtbl}, @samp{demangle},
c906108c 14277@samp{asm-demangle}, @samp{object}, and @samp{union}. The first four
b37052ae 14278apply to C@t{++}, and the last to the C @code{union} type, which has no direct
c906108c
SS
14279analogue in Modula-2.
14280
14281The @code{@@} operator (@pxref{Expressions, ,Expressions}), while available
d4f3574e 14282with any language, is not useful with Modula-2. Its
c906108c 14283intent is to aid the debugging of @dfn{dynamic arrays}, which cannot be
b37052ae 14284created in Modula-2 as they can in C or C@t{++}. However, because an
c906108c 14285address can be specified by an integral constant, the construct
d4f3574e 14286@samp{@{@var{type}@}@var{adrexp}} is still useful.
c906108c
SS
14287
14288@cindex @code{#} in Modula-2
14289In @value{GDBN} scripts, the Modula-2 inequality operator @code{#} is
14290interpreted as the beginning of a comment. Use @code{<>} instead.
c906108c 14291
e07c999f
PH
14292@node Ada
14293@subsection Ada
14294@cindex Ada
14295
14296The extensions made to @value{GDBN} for Ada only support
14297output from the @sc{gnu} Ada (GNAT) compiler.
14298Other Ada compilers are not currently supported, and
14299attempting to debug executables produced by them is most likely
14300to be difficult.
14301
14302
14303@cindex expressions in Ada
14304@menu
14305* Ada Mode Intro:: General remarks on the Ada syntax
14306 and semantics supported by Ada mode
14307 in @value{GDBN}.
14308* Omissions from Ada:: Restrictions on the Ada expression syntax.
14309* Additions to Ada:: Extensions of the Ada expression syntax.
14310* Stopping Before Main Program:: Debugging the program during elaboration.
20924a55
JB
14311* Ada Tasks:: Listing and setting breakpoints in tasks.
14312* Ada Tasks and Core Files:: Tasking Support when Debugging Core Files
6e1bb179
JB
14313* Ravenscar Profile:: Tasking Support when using the Ravenscar
14314 Profile
e07c999f
PH
14315* Ada Glitches:: Known peculiarities of Ada mode.
14316@end menu
14317
14318@node Ada Mode Intro
14319@subsubsection Introduction
14320@cindex Ada mode, general
14321
14322The Ada mode of @value{GDBN} supports a fairly large subset of Ada expression
14323syntax, with some extensions.
14324The philosophy behind the design of this subset is
14325
14326@itemize @bullet
14327@item
14328That @value{GDBN} should provide basic literals and access to operations for
14329arithmetic, dereferencing, field selection, indexing, and subprogram calls,
14330leaving more sophisticated computations to subprograms written into the
14331program (which therefore may be called from @value{GDBN}).
14332
14333@item
14334That type safety and strict adherence to Ada language restrictions
14335are not particularly important to the @value{GDBN} user.
14336
14337@item
14338That brevity is important to the @value{GDBN} user.
14339@end itemize
14340
f3a2dd1a
JB
14341Thus, for brevity, the debugger acts as if all names declared in
14342user-written packages are directly visible, even if they are not visible
14343according to Ada rules, thus making it unnecessary to fully qualify most
14344names with their packages, regardless of context. Where this causes
14345ambiguity, @value{GDBN} asks the user's intent.
e07c999f
PH
14346
14347The debugger will start in Ada mode if it detects an Ada main program.
14348As for other languages, it will enter Ada mode when stopped in a program that
14349was translated from an Ada source file.
14350
14351While in Ada mode, you may use `@t{--}' for comments. This is useful
14352mostly for documenting command files. The standard @value{GDBN} comment
14353(@samp{#}) still works at the beginning of a line in Ada mode, but not in the
14354middle (to allow based literals).
14355
14356The debugger supports limited overloading. Given a subprogram call in which
14357the function symbol has multiple definitions, it will use the number of
14358actual parameters and some information about their types to attempt to narrow
14359the set of definitions. It also makes very limited use of context, preferring
14360procedures to functions in the context of the @code{call} command, and
14361functions to procedures elsewhere.
14362
14363@node Omissions from Ada
14364@subsubsection Omissions from Ada
14365@cindex Ada, omissions from
14366
14367Here are the notable omissions from the subset:
14368
14369@itemize @bullet
14370@item
14371Only a subset of the attributes are supported:
14372
14373@itemize @minus
14374@item
14375@t{'First}, @t{'Last}, and @t{'Length}
14376 on array objects (not on types and subtypes).
14377
14378@item
14379@t{'Min} and @t{'Max}.
14380
14381@item
14382@t{'Pos} and @t{'Val}.
14383
14384@item
14385@t{'Tag}.
14386
14387@item
14388@t{'Range} on array objects (not subtypes), but only as the right
14389operand of the membership (@code{in}) operator.
14390
14391@item
14392@t{'Access}, @t{'Unchecked_Access}, and
14393@t{'Unrestricted_Access} (a GNAT extension).
14394
14395@item
14396@t{'Address}.
14397@end itemize
14398
14399@item
14400The names in
14401@code{Characters.Latin_1} are not available and
14402concatenation is not implemented. Thus, escape characters in strings are
14403not currently available.
14404
14405@item
14406Equality tests (@samp{=} and @samp{/=}) on arrays test for bitwise
14407equality of representations. They will generally work correctly
14408for strings and arrays whose elements have integer or enumeration types.
14409They may not work correctly for arrays whose element
14410types have user-defined equality, for arrays of real values
14411(in particular, IEEE-conformant floating point, because of negative
14412zeroes and NaNs), and for arrays whose elements contain unused bits with
14413indeterminate values.
14414
14415@item
14416The other component-by-component array operations (@code{and}, @code{or},
14417@code{xor}, @code{not}, and relational tests other than equality)
14418are not implemented.
14419
14420@item
860701dc
PH
14421@cindex array aggregates (Ada)
14422@cindex record aggregates (Ada)
14423@cindex aggregates (Ada)
14424There is limited support for array and record aggregates. They are
14425permitted only on the right sides of assignments, as in these examples:
14426
14427@smallexample
077e0a52
JB
14428(@value{GDBP}) set An_Array := (1, 2, 3, 4, 5, 6)
14429(@value{GDBP}) set An_Array := (1, others => 0)
14430(@value{GDBP}) set An_Array := (0|4 => 1, 1..3 => 2, 5 => 6)
14431(@value{GDBP}) set A_2D_Array := ((1, 2, 3), (4, 5, 6), (7, 8, 9))
14432(@value{GDBP}) set A_Record := (1, "Peter", True);
14433(@value{GDBP}) set A_Record := (Name => "Peter", Id => 1, Alive => True)
860701dc
PH
14434@end smallexample
14435
14436Changing a
14437discriminant's value by assigning an aggregate has an
14438undefined effect if that discriminant is used within the record.
14439However, you can first modify discriminants by directly assigning to
14440them (which normally would not be allowed in Ada), and then performing an
14441aggregate assignment. For example, given a variable @code{A_Rec}
14442declared to have a type such as:
14443
14444@smallexample
14445type Rec (Len : Small_Integer := 0) is record
14446 Id : Integer;
14447 Vals : IntArray (1 .. Len);
14448end record;
14449@end smallexample
14450
14451you can assign a value with a different size of @code{Vals} with two
14452assignments:
14453
14454@smallexample
077e0a52
JB
14455(@value{GDBP}) set A_Rec.Len := 4
14456(@value{GDBP}) set A_Rec := (Id => 42, Vals => (1, 2, 3, 4))
860701dc
PH
14457@end smallexample
14458
14459As this example also illustrates, @value{GDBN} is very loose about the usual
14460rules concerning aggregates. You may leave out some of the
14461components of an array or record aggregate (such as the @code{Len}
14462component in the assignment to @code{A_Rec} above); they will retain their
14463original values upon assignment. You may freely use dynamic values as
14464indices in component associations. You may even use overlapping or
14465redundant component associations, although which component values are
14466assigned in such cases is not defined.
e07c999f
PH
14467
14468@item
14469Calls to dispatching subprograms are not implemented.
14470
14471@item
14472The overloading algorithm is much more limited (i.e., less selective)
ae21e955
BW
14473than that of real Ada. It makes only limited use of the context in
14474which a subexpression appears to resolve its meaning, and it is much
14475looser in its rules for allowing type matches. As a result, some
14476function calls will be ambiguous, and the user will be asked to choose
14477the proper resolution.
e07c999f
PH
14478
14479@item
14480The @code{new} operator is not implemented.
14481
14482@item
14483Entry calls are not implemented.
14484
14485@item
14486Aside from printing, arithmetic operations on the native VAX floating-point
14487formats are not supported.
14488
14489@item
14490It is not possible to slice a packed array.
158c7665
PH
14491
14492@item
14493The names @code{True} and @code{False}, when not part of a qualified name,
14494are interpreted as if implicitly prefixed by @code{Standard}, regardless of
14495context.
14496Should your program
14497redefine these names in a package or procedure (at best a dubious practice),
14498you will have to use fully qualified names to access their new definitions.
e07c999f
PH
14499@end itemize
14500
14501@node Additions to Ada
14502@subsubsection Additions to Ada
14503@cindex Ada, deviations from
14504
14505As it does for other languages, @value{GDBN} makes certain generic
14506extensions to Ada (@pxref{Expressions}):
14507
14508@itemize @bullet
14509@item
ae21e955
BW
14510If the expression @var{E} is a variable residing in memory (typically
14511a local variable or array element) and @var{N} is a positive integer,
14512then @code{@var{E}@@@var{N}} displays the values of @var{E} and the
14513@var{N}-1 adjacent variables following it in memory as an array. In
14514Ada, this operator is generally not necessary, since its prime use is
14515in displaying parts of an array, and slicing will usually do this in
14516Ada. However, there are occasional uses when debugging programs in
14517which certain debugging information has been optimized away.
e07c999f
PH
14518
14519@item
ae21e955
BW
14520@code{@var{B}::@var{var}} means ``the variable named @var{var} that
14521appears in function or file @var{B}.'' When @var{B} is a file name,
14522you must typically surround it in single quotes.
e07c999f
PH
14523
14524@item
14525The expression @code{@{@var{type}@} @var{addr}} means ``the variable of type
14526@var{type} that appears at address @var{addr}.''
14527
14528@item
14529A name starting with @samp{$} is a convenience variable
14530(@pxref{Convenience Vars}) or a machine register (@pxref{Registers}).
14531@end itemize
14532
ae21e955
BW
14533In addition, @value{GDBN} provides a few other shortcuts and outright
14534additions specific to Ada:
e07c999f
PH
14535
14536@itemize @bullet
14537@item
14538The assignment statement is allowed as an expression, returning
14539its right-hand operand as its value. Thus, you may enter
14540
14541@smallexample
077e0a52
JB
14542(@value{GDBP}) set x := y + 3
14543(@value{GDBP}) print A(tmp := y + 1)
e07c999f
PH
14544@end smallexample
14545
14546@item
14547The semicolon is allowed as an ``operator,'' returning as its value
14548the value of its right-hand operand.
14549This allows, for example,
14550complex conditional breaks:
14551
14552@smallexample
077e0a52
JB
14553(@value{GDBP}) break f
14554(@value{GDBP}) condition 1 (report(i); k += 1; A(k) > 100)
e07c999f
PH
14555@end smallexample
14556
14557@item
14558Rather than use catenation and symbolic character names to introduce special
14559characters into strings, one may instead use a special bracket notation,
14560which is also used to print strings. A sequence of characters of the form
14561@samp{["@var{XX}"]} within a string or character literal denotes the
14562(single) character whose numeric encoding is @var{XX} in hexadecimal. The
14563sequence of characters @samp{["""]} also denotes a single quotation mark
14564in strings. For example,
14565@smallexample
14566 "One line.["0a"]Next line.["0a"]"
14567@end smallexample
14568@noindent
ae21e955
BW
14569contains an ASCII newline character (@code{Ada.Characters.Latin_1.LF})
14570after each period.
e07c999f
PH
14571
14572@item
14573The subtype used as a prefix for the attributes @t{'Pos}, @t{'Min}, and
14574@t{'Max} is optional (and is ignored in any case). For example, it is valid
14575to write
14576
14577@smallexample
077e0a52 14578(@value{GDBP}) print 'max(x, y)
e07c999f
PH
14579@end smallexample
14580
14581@item
14582When printing arrays, @value{GDBN} uses positional notation when the
14583array has a lower bound of 1, and uses a modified named notation otherwise.
ae21e955
BW
14584For example, a one-dimensional array of three integers with a lower bound
14585of 3 might print as
e07c999f
PH
14586
14587@smallexample
14588(3 => 10, 17, 1)
14589@end smallexample
14590
14591@noindent
14592That is, in contrast to valid Ada, only the first component has a @code{=>}
14593clause.
14594
14595@item
14596You may abbreviate attributes in expressions with any unique,
14597multi-character subsequence of
14598their names (an exact match gets preference).
14599For example, you may use @t{a'len}, @t{a'gth}, or @t{a'lh}
14600in place of @t{a'length}.
14601
14602@item
14603@cindex quoting Ada internal identifiers
14604Since Ada is case-insensitive, the debugger normally maps identifiers you type
14605to lower case. The GNAT compiler uses upper-case characters for
14606some of its internal identifiers, which are normally of no interest to users.
14607For the rare occasions when you actually have to look at them,
14608enclose them in angle brackets to avoid the lower-case mapping.
14609For example,
14610@smallexample
077e0a52 14611(@value{GDBP}) print <JMPBUF_SAVE>[0]
e07c999f
PH
14612@end smallexample
14613
14614@item
14615Printing an object of class-wide type or dereferencing an
14616access-to-class-wide value will display all the components of the object's
14617specific type (as indicated by its run-time tag). Likewise, component
14618selection on such a value will operate on the specific type of the
14619object.
14620
14621@end itemize
14622
14623@node Stopping Before Main Program
14624@subsubsection Stopping at the Very Beginning
14625
14626@cindex breakpointing Ada elaboration code
14627It is sometimes necessary to debug the program during elaboration, and
14628before reaching the main procedure.
14629As defined in the Ada Reference
14630Manual, the elaboration code is invoked from a procedure called
14631@code{adainit}. To run your program up to the beginning of
14632elaboration, simply use the following two commands:
14633@code{tbreak adainit} and @code{run}.
14634
20924a55
JB
14635@node Ada Tasks
14636@subsubsection Extensions for Ada Tasks
14637@cindex Ada, tasking
14638
14639Support for Ada tasks is analogous to that for threads (@pxref{Threads}).
14640@value{GDBN} provides the following task-related commands:
14641
14642@table @code
14643@kindex info tasks
14644@item info tasks
14645This command shows a list of current Ada tasks, as in the following example:
14646
14647
14648@smallexample
14649@iftex
14650@leftskip=0.5cm
14651@end iftex
14652(@value{GDBP}) info tasks
14653 ID TID P-ID Pri State Name
14654 1 8088000 0 15 Child Activation Wait main_task
14655 2 80a4000 1 15 Accept Statement b
14656 3 809a800 1 15 Child Activation Wait a
32cd1edc 14657* 4 80ae800 3 15 Runnable c
20924a55
JB
14658
14659@end smallexample
14660
14661@noindent
14662In this listing, the asterisk before the last task indicates it to be the
14663task currently being inspected.
14664
14665@table @asis
14666@item ID
14667Represents @value{GDBN}'s internal task number.
14668
14669@item TID
14670The Ada task ID.
14671
14672@item P-ID
14673The parent's task ID (@value{GDBN}'s internal task number).
14674
14675@item Pri
14676The base priority of the task.
14677
14678@item State
14679Current state of the task.
14680
14681@table @code
14682@item Unactivated
14683The task has been created but has not been activated. It cannot be
14684executing.
14685
20924a55
JB
14686@item Runnable
14687The task is not blocked for any reason known to Ada. (It may be waiting
14688for a mutex, though.) It is conceptually "executing" in normal mode.
14689
14690@item Terminated
14691The task is terminated, in the sense of ARM 9.3 (5). Any dependents
14692that were waiting on terminate alternatives have been awakened and have
14693terminated themselves.
14694
14695@item Child Activation Wait
14696The task is waiting for created tasks to complete activation.
14697
14698@item Accept Statement
14699The task is waiting on an accept or selective wait statement.
14700
14701@item Waiting on entry call
14702The task is waiting on an entry call.
14703
14704@item Async Select Wait
14705The task is waiting to start the abortable part of an asynchronous
14706select statement.
14707
14708@item Delay Sleep
14709The task is waiting on a select statement with only a delay
14710alternative open.
14711
14712@item Child Termination Wait
14713The task is sleeping having completed a master within itself, and is
14714waiting for the tasks dependent on that master to become terminated or
14715waiting on a terminate Phase.
14716
14717@item Wait Child in Term Alt
14718The task is sleeping waiting for tasks on terminate alternatives to
14719finish terminating.
14720
14721@item Accepting RV with @var{taskno}
14722The task is accepting a rendez-vous with the task @var{taskno}.
14723@end table
14724
14725@item Name
14726Name of the task in the program.
14727
14728@end table
14729
14730@kindex info task @var{taskno}
14731@item info task @var{taskno}
14732This command shows detailled informations on the specified task, as in
14733the following example:
14734@smallexample
14735@iftex
14736@leftskip=0.5cm
14737@end iftex
14738(@value{GDBP}) info tasks
14739 ID TID P-ID Pri State Name
14740 1 8077880 0 15 Child Activation Wait main_task
32cd1edc 14741* 2 807c468 1 15 Runnable task_1
20924a55
JB
14742(@value{GDBP}) info task 2
14743Ada Task: 0x807c468
14744Name: task_1
14745Thread: 0x807f378
14746Parent: 1 (main_task)
14747Base Priority: 15
14748State: Runnable
14749@end smallexample
14750
14751@item task
14752@kindex task@r{ (Ada)}
14753@cindex current Ada task ID
14754This command prints the ID of the current task.
14755
14756@smallexample
14757@iftex
14758@leftskip=0.5cm
14759@end iftex
14760(@value{GDBP}) info tasks
14761 ID TID P-ID Pri State Name
14762 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 14763* 2 807c458 1 15 Runnable t
20924a55
JB
14764(@value{GDBP}) task
14765[Current task is 2]
14766@end smallexample
14767
14768@item task @var{taskno}
14769@cindex Ada task switching
14770This command is like the @code{thread @var{threadno}}
14771command (@pxref{Threads}). It switches the context of debugging
14772from the current task to the given task.
14773
14774@smallexample
14775@iftex
14776@leftskip=0.5cm
14777@end iftex
14778(@value{GDBP}) info tasks
14779 ID TID P-ID Pri State Name
14780 1 8077870 0 15 Child Activation Wait main_task
32cd1edc 14781* 2 807c458 1 15 Runnable t
20924a55
JB
14782(@value{GDBP}) task 1
14783[Switching to task 1]
14784#0 0x8067726 in pthread_cond_wait ()
14785(@value{GDBP}) bt
14786#0 0x8067726 in pthread_cond_wait ()
14787#1 0x8056714 in system.os_interface.pthread_cond_wait ()
14788#2 0x805cb63 in system.task_primitives.operations.sleep ()
14789#3 0x806153e in system.tasking.stages.activate_tasks ()
14790#4 0x804aacc in un () at un.adb:5
14791@end smallexample
14792
45ac276d
JB
14793@item break @var{linespec} task @var{taskno}
14794@itemx break @var{linespec} task @var{taskno} if @dots{}
14795@cindex breakpoints and tasks, in Ada
14796@cindex task breakpoints, in Ada
14797@kindex break @dots{} task @var{taskno}@r{ (Ada)}
14798These commands are like the @code{break @dots{} thread @dots{}}
14799command (@pxref{Thread Stops}).
14800@var{linespec} specifies source lines, as described
14801in @ref{Specify Location}.
14802
14803Use the qualifier @samp{task @var{taskno}} with a breakpoint command
14804to specify that you only want @value{GDBN} to stop the program when a
14805particular Ada task reaches this breakpoint. @var{taskno} is one of the
14806numeric task identifiers assigned by @value{GDBN}, shown in the first
14807column of the @samp{info tasks} display.
14808
14809If you do not specify @samp{task @var{taskno}} when you set a
14810breakpoint, the breakpoint applies to @emph{all} tasks of your
14811program.
14812
14813You can use the @code{task} qualifier on conditional breakpoints as
14814well; in this case, place @samp{task @var{taskno}} before the
14815breakpoint condition (before the @code{if}).
14816
14817For example,
14818
14819@smallexample
14820@iftex
14821@leftskip=0.5cm
14822@end iftex
14823(@value{GDBP}) info tasks
14824 ID TID P-ID Pri State Name
14825 1 140022020 0 15 Child Activation Wait main_task
14826 2 140045060 1 15 Accept/Select Wait t2
14827 3 140044840 1 15 Runnable t1
14828* 4 140056040 1 15 Runnable t3
14829(@value{GDBP}) b 15 task 2
14830Breakpoint 5 at 0x120044cb0: file test_task_debug.adb, line 15.
14831(@value{GDBP}) cont
14832Continuing.
14833task # 1 running
14834task # 2 running
14835
14836Breakpoint 5, test_task_debug () at test_task_debug.adb:15
1483715 flush;
14838(@value{GDBP}) info tasks
14839 ID TID P-ID Pri State Name
14840 1 140022020 0 15 Child Activation Wait main_task
14841* 2 140045060 1 15 Runnable t2
14842 3 140044840 1 15 Runnable t1
14843 4 140056040 1 15 Delay Sleep t3
14844@end smallexample
20924a55
JB
14845@end table
14846
14847@node Ada Tasks and Core Files
14848@subsubsection Tasking Support when Debugging Core Files
14849@cindex Ada tasking and core file debugging
14850
14851When inspecting a core file, as opposed to debugging a live program,
14852tasking support may be limited or even unavailable, depending on
14853the platform being used.
14854For instance, on x86-linux, the list of tasks is available, but task
14855switching is not supported. On Tru64, however, task switching will work
14856as usual.
14857
14858On certain platforms, including Tru64, the debugger needs to perform some
14859memory writes in order to provide Ada tasking support. When inspecting
14860a core file, this means that the core file must be opened with read-write
14861privileges, using the command @samp{"set write on"} (@pxref{Patching}).
14862Under these circumstances, you should make a backup copy of the core
14863file before inspecting it with @value{GDBN}.
14864
6e1bb179
JB
14865@node Ravenscar Profile
14866@subsubsection Tasking Support when using the Ravenscar Profile
14867@cindex Ravenscar Profile
14868
14869The @dfn{Ravenscar Profile} is a subset of the Ada tasking features,
14870specifically designed for systems with safety-critical real-time
14871requirements.
14872
14873@table @code
14874@kindex set ravenscar task-switching on
14875@cindex task switching with program using Ravenscar Profile
14876@item set ravenscar task-switching on
14877Allows task switching when debugging a program that uses the Ravenscar
14878Profile. This is the default.
14879
14880@kindex set ravenscar task-switching off
14881@item set ravenscar task-switching off
14882Turn off task switching when debugging a program that uses the Ravenscar
14883Profile. This is mostly intended to disable the code that adds support
14884for the Ravenscar Profile, in case a bug in either @value{GDBN} or in
14885the Ravenscar runtime is preventing @value{GDBN} from working properly.
14886To be effective, this command should be run before the program is started.
14887
14888@kindex show ravenscar task-switching
14889@item show ravenscar task-switching
14890Show whether it is possible to switch from task to task in a program
14891using the Ravenscar Profile.
14892
14893@end table
14894
e07c999f
PH
14895@node Ada Glitches
14896@subsubsection Known Peculiarities of Ada Mode
14897@cindex Ada, problems
14898
14899Besides the omissions listed previously (@pxref{Omissions from Ada}),
14900we know of several problems with and limitations of Ada mode in
14901@value{GDBN},
14902some of which will be fixed with planned future releases of the debugger
14903and the GNU Ada compiler.
14904
14905@itemize @bullet
e07c999f
PH
14906@item
14907Static constants that the compiler chooses not to materialize as objects in
14908storage are invisible to the debugger.
14909
14910@item
14911Named parameter associations in function argument lists are ignored (the
14912argument lists are treated as positional).
14913
14914@item
14915Many useful library packages are currently invisible to the debugger.
14916
14917@item
14918Fixed-point arithmetic, conversions, input, and output is carried out using
14919floating-point arithmetic, and may give results that only approximate those on
14920the host machine.
14921
e07c999f
PH
14922@item
14923The GNAT compiler never generates the prefix @code{Standard} for any of
14924the standard symbols defined by the Ada language. @value{GDBN} knows about
14925this: it will strip the prefix from names when you use it, and will never
14926look for a name you have so qualified among local symbols, nor match against
14927symbols in other packages or subprograms. If you have
14928defined entities anywhere in your program other than parameters and
14929local variables whose simple names match names in @code{Standard},
14930GNAT's lack of qualification here can cause confusion. When this happens,
14931you can usually resolve the confusion
14932by qualifying the problematic names with package
14933@code{Standard} explicitly.
14934@end itemize
14935
95433b34
JB
14936Older versions of the compiler sometimes generate erroneous debugging
14937information, resulting in the debugger incorrectly printing the value
14938of affected entities. In some cases, the debugger is able to work
14939around an issue automatically. In other cases, the debugger is able
14940to work around the issue, but the work-around has to be specifically
14941enabled.
14942
14943@kindex set ada trust-PAD-over-XVS
14944@kindex show ada trust-PAD-over-XVS
14945@table @code
14946
14947@item set ada trust-PAD-over-XVS on
14948Configure GDB to strictly follow the GNAT encoding when computing the
14949value of Ada entities, particularly when @code{PAD} and @code{PAD___XVS}
14950types are involved (see @code{ada/exp_dbug.ads} in the GCC sources for
14951a complete description of the encoding used by the GNAT compiler).
14952This is the default.
14953
14954@item set ada trust-PAD-over-XVS off
14955This is related to the encoding using by the GNAT compiler. If @value{GDBN}
14956sometimes prints the wrong value for certain entities, changing @code{ada
14957trust-PAD-over-XVS} to @code{off} activates a work-around which may fix
14958the issue. It is always safe to set @code{ada trust-PAD-over-XVS} to
14959@code{off}, but this incurs a slight performance penalty, so it is
14960recommended to leave this setting to @code{on} unless necessary.
14961
14962@end table
14963
79a6e687
BW
14964@node Unsupported Languages
14965@section Unsupported Languages
4e562065
JB
14966
14967@cindex unsupported languages
14968@cindex minimal language
14969In addition to the other fully-supported programming languages,
14970@value{GDBN} also provides a pseudo-language, called @code{minimal}.
14971It does not represent a real programming language, but provides a set
14972of capabilities close to what the C or assembly languages provide.
14973This should allow most simple operations to be performed while debugging
14974an application that uses a language currently not supported by @value{GDBN}.
14975
14976If the language is set to @code{auto}, @value{GDBN} will automatically
14977select this language if the current frame corresponds to an unsupported
14978language.
14979
6d2ebf8b 14980@node Symbols
c906108c
SS
14981@chapter Examining the Symbol Table
14982
d4f3574e 14983The commands described in this chapter allow you to inquire about the
c906108c
SS
14984symbols (names of variables, functions and types) defined in your
14985program. This information is inherent in the text of your program and
14986does not change as your program executes. @value{GDBN} finds it in your
14987program's symbol table, in the file indicated when you started @value{GDBN}
79a6e687
BW
14988(@pxref{File Options, ,Choosing Files}), or by one of the
14989file-management commands (@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
14990
14991@cindex symbol names
14992@cindex names of symbols
14993@cindex quoting names
14994Occasionally, you may need to refer to symbols that contain unusual
14995characters, which @value{GDBN} ordinarily treats as word delimiters. The
14996most frequent case is in referring to static variables in other
79a6e687 14997source files (@pxref{Variables,,Program Variables}). File names
c906108c
SS
14998are recorded in object files as debugging symbols, but @value{GDBN} would
14999ordinarily parse a typical file name, like @file{foo.c}, as the three words
15000@samp{foo} @samp{.} @samp{c}. To allow @value{GDBN} to recognize
15001@samp{foo.c} as a single symbol, enclose it in single quotes; for example,
15002
474c8240 15003@smallexample
c906108c 15004p 'foo.c'::x
474c8240 15005@end smallexample
c906108c
SS
15006
15007@noindent
15008looks up the value of @code{x} in the scope of the file @file{foo.c}.
15009
15010@table @code
a8f24a35
EZ
15011@cindex case-insensitive symbol names
15012@cindex case sensitivity in symbol names
15013@kindex set case-sensitive
15014@item set case-sensitive on
15015@itemx set case-sensitive off
15016@itemx set case-sensitive auto
15017Normally, when @value{GDBN} looks up symbols, it matches their names
15018with case sensitivity determined by the current source language.
15019Occasionally, you may wish to control that. The command @code{set
15020case-sensitive} lets you do that by specifying @code{on} for
15021case-sensitive matches or @code{off} for case-insensitive ones. If
15022you specify @code{auto}, case sensitivity is reset to the default
15023suitable for the source language. The default is case-sensitive
15024matches for all languages except for Fortran, for which the default is
15025case-insensitive matches.
15026
9c16f35a
EZ
15027@kindex show case-sensitive
15028@item show case-sensitive
a8f24a35
EZ
15029This command shows the current setting of case sensitivity for symbols
15030lookups.
15031
c906108c 15032@kindex info address
b37052ae 15033@cindex address of a symbol
c906108c
SS
15034@item info address @var{symbol}
15035Describe where the data for @var{symbol} is stored. For a register
15036variable, this says which register it is kept in. For a non-register
15037local variable, this prints the stack-frame offset at which the variable
15038is always stored.
15039
15040Note the contrast with @samp{print &@var{symbol}}, which does not work
15041at all for a register variable, and for a stack local variable prints
15042the exact address of the current instantiation of the variable.
15043
3d67e040 15044@kindex info symbol
b37052ae 15045@cindex symbol from address
9c16f35a 15046@cindex closest symbol and offset for an address
3d67e040
EZ
15047@item info symbol @var{addr}
15048Print the name of a symbol which is stored at the address @var{addr}.
15049If no symbol is stored exactly at @var{addr}, @value{GDBN} prints the
15050nearest symbol and an offset from it:
15051
474c8240 15052@smallexample
3d67e040
EZ
15053(@value{GDBP}) info symbol 0x54320
15054_initialize_vx + 396 in section .text
474c8240 15055@end smallexample
3d67e040
EZ
15056
15057@noindent
15058This is the opposite of the @code{info address} command. You can use
15059it to find out the name of a variable or a function given its address.
15060
c14c28ba
PP
15061For dynamically linked executables, the name of executable or shared
15062library containing the symbol is also printed:
15063
15064@smallexample
15065(@value{GDBP}) info symbol 0x400225
15066_start + 5 in section .text of /tmp/a.out
15067(@value{GDBP}) info symbol 0x2aaaac2811cf
15068__read_nocancel + 6 in section .text of /usr/lib64/libc.so.6
15069@end smallexample
15070
c906108c 15071@kindex whatis
62f3a2ba 15072@item whatis [@var{arg}]
177bc839
JK
15073Print the data type of @var{arg}, which can be either an expression
15074or a name of a data type. With no argument, print the data type of
15075@code{$}, the last value in the value history.
15076
15077If @var{arg} is an expression (@pxref{Expressions, ,Expressions}), it
15078is not actually evaluated, and any side-effecting operations (such as
15079assignments or function calls) inside it do not take place.
15080
15081If @var{arg} is a variable or an expression, @code{whatis} prints its
15082literal type as it is used in the source code. If the type was
15083defined using a @code{typedef}, @code{whatis} will @emph{not} print
15084the data type underlying the @code{typedef}. If the type of the
15085variable or the expression is a compound data type, such as
15086@code{struct} or @code{class}, @code{whatis} never prints their
15087fields or methods. It just prints the @code{struct}/@code{class}
15088name (a.k.a.@: its @dfn{tag}). If you want to see the members of
15089such a compound data type, use @code{ptype}.
15090
15091If @var{arg} is a type name that was defined using @code{typedef},
15092@code{whatis} @dfn{unrolls} only one level of that @code{typedef}.
15093Unrolling means that @code{whatis} will show the underlying type used
15094in the @code{typedef} declaration of @var{arg}. However, if that
15095underlying type is also a @code{typedef}, @code{whatis} will not
15096unroll it.
15097
15098For C code, the type names may also have the form @samp{class
15099@var{class-name}}, @samp{struct @var{struct-tag}}, @samp{union
15100@var{union-tag}} or @samp{enum @var{enum-tag}}.
c906108c 15101
c906108c 15102@kindex ptype
62f3a2ba
FF
15103@item ptype [@var{arg}]
15104@code{ptype} accepts the same arguments as @code{whatis}, but prints a
15105detailed description of the type, instead of just the name of the type.
15106@xref{Expressions, ,Expressions}.
c906108c 15107
177bc839
JK
15108Contrary to @code{whatis}, @code{ptype} always unrolls any
15109@code{typedef}s in its argument declaration, whether the argument is
15110a variable, expression, or a data type. This means that @code{ptype}
15111of a variable or an expression will not print literally its type as
15112present in the source code---use @code{whatis} for that. @code{typedef}s at
15113the pointer or reference targets are also unrolled. Only @code{typedef}s of
15114fields, methods and inner @code{class typedef}s of @code{struct}s,
15115@code{class}es and @code{union}s are not unrolled even with @code{ptype}.
15116
c906108c
SS
15117For example, for this variable declaration:
15118
474c8240 15119@smallexample
177bc839
JK
15120typedef double real_t;
15121struct complex @{ real_t real; double imag; @};
15122typedef struct complex complex_t;
15123complex_t var;
15124real_t *real_pointer_var;
474c8240 15125@end smallexample
c906108c
SS
15126
15127@noindent
15128the two commands give this output:
15129
474c8240 15130@smallexample
c906108c 15131@group
177bc839
JK
15132(@value{GDBP}) whatis var
15133type = complex_t
15134(@value{GDBP}) ptype var
15135type = struct complex @{
15136 real_t real;
15137 double imag;
15138@}
15139(@value{GDBP}) whatis complex_t
15140type = struct complex
15141(@value{GDBP}) whatis struct complex
c906108c 15142type = struct complex
177bc839 15143(@value{GDBP}) ptype struct complex
c906108c 15144type = struct complex @{
177bc839 15145 real_t real;
c906108c
SS
15146 double imag;
15147@}
177bc839
JK
15148(@value{GDBP}) whatis real_pointer_var
15149type = real_t *
15150(@value{GDBP}) ptype real_pointer_var
15151type = double *
c906108c 15152@end group
474c8240 15153@end smallexample
c906108c
SS
15154
15155@noindent
15156As with @code{whatis}, using @code{ptype} without an argument refers to
15157the type of @code{$}, the last value in the value history.
15158
ab1adacd
EZ
15159@cindex incomplete type
15160Sometimes, programs use opaque data types or incomplete specifications
15161of complex data structure. If the debug information included in the
15162program does not allow @value{GDBN} to display a full declaration of
15163the data type, it will say @samp{<incomplete type>}. For example,
15164given these declarations:
15165
15166@smallexample
15167 struct foo;
15168 struct foo *fooptr;
15169@end smallexample
15170
15171@noindent
15172but no definition for @code{struct foo} itself, @value{GDBN} will say:
15173
15174@smallexample
ddb50cd7 15175 (@value{GDBP}) ptype foo
ab1adacd
EZ
15176 $1 = <incomplete type>
15177@end smallexample
15178
15179@noindent
15180``Incomplete type'' is C terminology for data types that are not
15181completely specified.
15182
c906108c
SS
15183@kindex info types
15184@item info types @var{regexp}
15185@itemx info types
09d4efe1
EZ
15186Print a brief description of all types whose names match the regular
15187expression @var{regexp} (or all types in your program, if you supply
15188no argument). Each complete typename is matched as though it were a
15189complete line; thus, @samp{i type value} gives information on all
15190types in your program whose names include the string @code{value}, but
15191@samp{i type ^value$} gives information only on types whose complete
15192name is @code{value}.
c906108c
SS
15193
15194This command differs from @code{ptype} in two ways: first, like
15195@code{whatis}, it does not print a detailed description; second, it
15196lists all source files where a type is defined.
15197
b37052ae
EZ
15198@kindex info scope
15199@cindex local variables
09d4efe1 15200@item info scope @var{location}
b37052ae 15201List all the variables local to a particular scope. This command
09d4efe1
EZ
15202accepts a @var{location} argument---a function name, a source line, or
15203an address preceded by a @samp{*}, and prints all the variables local
2a25a5ba
EZ
15204to the scope defined by that location. (@xref{Specify Location}, for
15205details about supported forms of @var{location}.) For example:
b37052ae
EZ
15206
15207@smallexample
15208(@value{GDBP}) @b{info scope command_line_handler}
15209Scope for command_line_handler:
15210Symbol rl is an argument at stack/frame offset 8, length 4.
15211Symbol linebuffer is in static storage at address 0x150a18, length 4.
15212Symbol linelength is in static storage at address 0x150a1c, length 4.
15213Symbol p is a local variable in register $esi, length 4.
15214Symbol p1 is a local variable in register $ebx, length 4.
15215Symbol nline is a local variable in register $edx, length 4.
15216Symbol repeat is a local variable at frame offset -8, length 4.
15217@end smallexample
15218
f5c37c66
EZ
15219@noindent
15220This command is especially useful for determining what data to collect
15221during a @dfn{trace experiment}, see @ref{Tracepoint Actions,
15222collect}.
15223
c906108c
SS
15224@kindex info source
15225@item info source
919d772c
JB
15226Show information about the current source file---that is, the source file for
15227the function containing the current point of execution:
15228@itemize @bullet
15229@item
15230the name of the source file, and the directory containing it,
15231@item
15232the directory it was compiled in,
15233@item
15234its length, in lines,
15235@item
15236which programming language it is written in,
15237@item
15238whether the executable includes debugging information for that file, and
15239if so, what format the information is in (e.g., STABS, Dwarf 2, etc.), and
15240@item
15241whether the debugging information includes information about
15242preprocessor macros.
15243@end itemize
15244
c906108c
SS
15245
15246@kindex info sources
15247@item info sources
15248Print the names of all source files in your program for which there is
15249debugging information, organized into two lists: files whose symbols
15250have already been read, and files whose symbols will be read when needed.
15251
15252@kindex info functions
15253@item info functions
15254Print the names and data types of all defined functions.
15255
15256@item info functions @var{regexp}
15257Print the names and data types of all defined functions
15258whose names contain a match for regular expression @var{regexp}.
15259Thus, @samp{info fun step} finds all functions whose names
15260include @code{step}; @samp{info fun ^step} finds those whose names
b383017d 15261start with @code{step}. If a function name contains characters
c1468174 15262that conflict with the regular expression language (e.g.@:
1c5dfdad 15263@samp{operator*()}), they may be quoted with a backslash.
c906108c
SS
15264
15265@kindex info variables
15266@item info variables
0fe7935b 15267Print the names and data types of all variables that are defined
6ca652b0 15268outside of functions (i.e.@: excluding local variables).
c906108c
SS
15269
15270@item info variables @var{regexp}
15271Print the names and data types of all variables (except for local
15272variables) whose names contain a match for regular expression
15273@var{regexp}.
15274
b37303ee 15275@kindex info classes
721c2651 15276@cindex Objective-C, classes and selectors
b37303ee
AF
15277@item info classes
15278@itemx info classes @var{regexp}
15279Display all Objective-C classes in your program, or
15280(with the @var{regexp} argument) all those matching a particular regular
15281expression.
15282
15283@kindex info selectors
15284@item info selectors
15285@itemx info selectors @var{regexp}
15286Display all Objective-C selectors in your program, or
15287(with the @var{regexp} argument) all those matching a particular regular
15288expression.
15289
c906108c
SS
15290@ignore
15291This was never implemented.
15292@kindex info methods
15293@item info methods
15294@itemx info methods @var{regexp}
15295The @code{info methods} command permits the user to examine all defined
b37052ae
EZ
15296methods within C@t{++} program, or (with the @var{regexp} argument) a
15297specific set of methods found in the various C@t{++} classes. Many
15298C@t{++} classes provide a large number of methods. Thus, the output
c906108c
SS
15299from the @code{ptype} command can be overwhelming and hard to use. The
15300@code{info-methods} command filters the methods, printing only those
15301which match the regular-expression @var{regexp}.
15302@end ignore
15303
9c16f35a 15304@cindex opaque data types
c906108c
SS
15305@kindex set opaque-type-resolution
15306@item set opaque-type-resolution on
15307Tell @value{GDBN} to resolve opaque types. An opaque type is a type
15308declared as a pointer to a @code{struct}, @code{class}, or
15309@code{union}---for example, @code{struct MyType *}---that is used in one
15310source file although the full declaration of @code{struct MyType} is in
15311another source file. The default is on.
15312
15313A change in the setting of this subcommand will not take effect until
15314the next time symbols for a file are loaded.
15315
15316@item set opaque-type-resolution off
15317Tell @value{GDBN} not to resolve opaque types. In this case, the type
15318is printed as follows:
15319@smallexample
15320@{<no data fields>@}
15321@end smallexample
15322
15323@kindex show opaque-type-resolution
15324@item show opaque-type-resolution
15325Show whether opaque types are resolved or not.
c906108c
SS
15326
15327@kindex maint print symbols
15328@cindex symbol dump
15329@kindex maint print psymbols
15330@cindex partial symbol dump
15331@item maint print symbols @var{filename}
15332@itemx maint print psymbols @var{filename}
15333@itemx maint print msymbols @var{filename}
15334Write a dump of debugging symbol data into the file @var{filename}.
15335These commands are used to debug the @value{GDBN} symbol-reading code. Only
15336symbols with debugging data are included. If you use @samp{maint print
15337symbols}, @value{GDBN} includes all the symbols for which it has already
15338collected full details: that is, @var{filename} reflects symbols for
15339only those files whose symbols @value{GDBN} has read. You can use the
15340command @code{info sources} to find out which files these are. If you
15341use @samp{maint print psymbols} instead, the dump shows information about
15342symbols that @value{GDBN} only knows partially---that is, symbols defined in
15343files that @value{GDBN} has skimmed, but not yet read completely. Finally,
15344@samp{maint print msymbols} dumps just the minimal symbol information
15345required for each object file from which @value{GDBN} has read some symbols.
79a6e687 15346@xref{Files, ,Commands to Specify Files}, for a discussion of how
c906108c 15347@value{GDBN} reads symbols (in the description of @code{symbol-file}).
44ea7b70 15348
5e7b2f39
JB
15349@kindex maint info symtabs
15350@kindex maint info psymtabs
44ea7b70
JB
15351@cindex listing @value{GDBN}'s internal symbol tables
15352@cindex symbol tables, listing @value{GDBN}'s internal
15353@cindex full symbol tables, listing @value{GDBN}'s internal
15354@cindex partial symbol tables, listing @value{GDBN}'s internal
5e7b2f39
JB
15355@item maint info symtabs @r{[} @var{regexp} @r{]}
15356@itemx maint info psymtabs @r{[} @var{regexp} @r{]}
44ea7b70
JB
15357
15358List the @code{struct symtab} or @code{struct partial_symtab}
15359structures whose names match @var{regexp}. If @var{regexp} is not
15360given, list them all. The output includes expressions which you can
15361copy into a @value{GDBN} debugging this one to examine a particular
15362structure in more detail. For example:
15363
15364@smallexample
5e7b2f39 15365(@value{GDBP}) maint info psymtabs dwarf2read
44ea7b70
JB
15366@{ objfile /home/gnu/build/gdb/gdb
15367 ((struct objfile *) 0x82e69d0)
b383017d 15368 @{ psymtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
15369 ((struct partial_symtab *) 0x8474b10)
15370 readin no
15371 fullname (null)
15372 text addresses 0x814d3c8 -- 0x8158074
15373 globals (* (struct partial_symbol **) 0x8507a08 @@ 9)
15374 statics (* (struct partial_symbol **) 0x40e95b78 @@ 2882)
15375 dependencies (none)
15376 @}
15377@}
5e7b2f39 15378(@value{GDBP}) maint info symtabs
44ea7b70
JB
15379(@value{GDBP})
15380@end smallexample
15381@noindent
15382We see that there is one partial symbol table whose filename contains
15383the string @samp{dwarf2read}, belonging to the @samp{gdb} executable;
15384and we see that @value{GDBN} has not read in any symtabs yet at all.
15385If we set a breakpoint on a function, that will cause @value{GDBN} to
15386read the symtab for the compilation unit containing that function:
15387
15388@smallexample
15389(@value{GDBP}) break dwarf2_psymtab_to_symtab
15390Breakpoint 1 at 0x814e5da: file /home/gnu/src/gdb/dwarf2read.c,
15391line 1574.
5e7b2f39 15392(@value{GDBP}) maint info symtabs
b383017d 15393@{ objfile /home/gnu/build/gdb/gdb
44ea7b70 15394 ((struct objfile *) 0x82e69d0)
b383017d 15395 @{ symtab /home/gnu/src/gdb/dwarf2read.c
44ea7b70
JB
15396 ((struct symtab *) 0x86c1f38)
15397 dirname (null)
15398 fullname (null)
15399 blockvector ((struct blockvector *) 0x86c1bd0) (primary)
1b39d5c0 15400 linetable ((struct linetable *) 0x8370fa0)
44ea7b70
JB
15401 debugformat DWARF 2
15402 @}
15403@}
b383017d 15404(@value{GDBP})
44ea7b70 15405@end smallexample
c906108c
SS
15406@end table
15407
44ea7b70 15408
6d2ebf8b 15409@node Altering
c906108c
SS
15410@chapter Altering Execution
15411
15412Once you think you have found an error in your program, you might want to
15413find out for certain whether correcting the apparent error would lead to
15414correct results in the rest of the run. You can find the answer by
15415experiment, using the @value{GDBN} features for altering execution of the
15416program.
15417
15418For example, you can store new values into variables or memory
7a292a7a
SS
15419locations, give your program a signal, restart it at a different
15420address, or even return prematurely from a function.
c906108c
SS
15421
15422@menu
15423* Assignment:: Assignment to variables
15424* Jumping:: Continuing at a different address
c906108c 15425* Signaling:: Giving your program a signal
c906108c
SS
15426* Returning:: Returning from a function
15427* Calling:: Calling your program's functions
15428* Patching:: Patching your program
15429@end menu
15430
6d2ebf8b 15431@node Assignment
79a6e687 15432@section Assignment to Variables
c906108c
SS
15433
15434@cindex assignment
15435@cindex setting variables
15436To alter the value of a variable, evaluate an assignment expression.
15437@xref{Expressions, ,Expressions}. For example,
15438
474c8240 15439@smallexample
c906108c 15440print x=4
474c8240 15441@end smallexample
c906108c
SS
15442
15443@noindent
15444stores the value 4 into the variable @code{x}, and then prints the
5d161b24 15445value of the assignment expression (which is 4).
c906108c
SS
15446@xref{Languages, ,Using @value{GDBN} with Different Languages}, for more
15447information on operators in supported languages.
c906108c
SS
15448
15449@kindex set variable
15450@cindex variables, setting
15451If you are not interested in seeing the value of the assignment, use the
15452@code{set} command instead of the @code{print} command. @code{set} is
15453really the same as @code{print} except that the expression's value is
15454not printed and is not put in the value history (@pxref{Value History,
79a6e687 15455,Value History}). The expression is evaluated only for its effects.
c906108c 15456
c906108c
SS
15457If the beginning of the argument string of the @code{set} command
15458appears identical to a @code{set} subcommand, use the @code{set
15459variable} command instead of just @code{set}. This command is identical
15460to @code{set} except for its lack of subcommands. For example, if your
15461program has a variable @code{width}, you get an error if you try to set
15462a new value with just @samp{set width=13}, because @value{GDBN} has the
15463command @code{set width}:
15464
474c8240 15465@smallexample
c906108c
SS
15466(@value{GDBP}) whatis width
15467type = double
15468(@value{GDBP}) p width
15469$4 = 13
15470(@value{GDBP}) set width=47
15471Invalid syntax in expression.
474c8240 15472@end smallexample
c906108c
SS
15473
15474@noindent
15475The invalid expression, of course, is @samp{=47}. In
15476order to actually set the program's variable @code{width}, use
15477
474c8240 15478@smallexample
c906108c 15479(@value{GDBP}) set var width=47
474c8240 15480@end smallexample
53a5351d 15481
c906108c
SS
15482Because the @code{set} command has many subcommands that can conflict
15483with the names of program variables, it is a good idea to use the
15484@code{set variable} command instead of just @code{set}. For example, if
15485your program has a variable @code{g}, you run into problems if you try
15486to set a new value with just @samp{set g=4}, because @value{GDBN} has
15487the command @code{set gnutarget}, abbreviated @code{set g}:
15488
474c8240 15489@smallexample
c906108c
SS
15490@group
15491(@value{GDBP}) whatis g
15492type = double
15493(@value{GDBP}) p g
15494$1 = 1
15495(@value{GDBP}) set g=4
2df3850c 15496(@value{GDBP}) p g
c906108c
SS
15497$2 = 1
15498(@value{GDBP}) r
15499The program being debugged has been started already.
15500Start it from the beginning? (y or n) y
15501Starting program: /home/smith/cc_progs/a.out
6d2ebf8b
SS
15502"/home/smith/cc_progs/a.out": can't open to read symbols:
15503 Invalid bfd target.
c906108c
SS
15504(@value{GDBP}) show g
15505The current BFD target is "=4".
15506@end group
474c8240 15507@end smallexample
c906108c
SS
15508
15509@noindent
15510The program variable @code{g} did not change, and you silently set the
15511@code{gnutarget} to an invalid value. In order to set the variable
15512@code{g}, use
15513
474c8240 15514@smallexample
c906108c 15515(@value{GDBP}) set var g=4
474c8240 15516@end smallexample
c906108c
SS
15517
15518@value{GDBN} allows more implicit conversions in assignments than C; you can
15519freely store an integer value into a pointer variable or vice versa,
15520and you can convert any structure to any other structure that is the
15521same length or shorter.
15522@comment FIXME: how do structs align/pad in these conversions?
15523@comment /doc@cygnus.com 18dec1990
15524
15525To store values into arbitrary places in memory, use the @samp{@{@dots{}@}}
15526construct to generate a value of specified type at a specified address
15527(@pxref{Expressions, ,Expressions}). For example, @code{@{int@}0x83040} refers
15528to memory location @code{0x83040} as an integer (which implies a certain size
15529and representation in memory), and
15530
474c8240 15531@smallexample
c906108c 15532set @{int@}0x83040 = 4
474c8240 15533@end smallexample
c906108c
SS
15534
15535@noindent
15536stores the value 4 into that memory location.
15537
6d2ebf8b 15538@node Jumping
79a6e687 15539@section Continuing at a Different Address
c906108c
SS
15540
15541Ordinarily, when you continue your program, you do so at the place where
15542it stopped, with the @code{continue} command. You can instead continue at
15543an address of your own choosing, with the following commands:
15544
15545@table @code
15546@kindex jump
15547@item jump @var{linespec}
2a25a5ba
EZ
15548@itemx jump @var{location}
15549Resume execution at line @var{linespec} or at address given by
15550@var{location}. Execution stops again immediately if there is a
15551breakpoint there. @xref{Specify Location}, for a description of the
15552different forms of @var{linespec} and @var{location}. It is common
15553practice to use the @code{tbreak} command in conjunction with
15554@code{jump}. @xref{Set Breaks, ,Setting Breakpoints}.
c906108c
SS
15555
15556The @code{jump} command does not change the current stack frame, or
15557the stack pointer, or the contents of any memory location or any
15558register other than the program counter. If line @var{linespec} is in
15559a different function from the one currently executing, the results may
15560be bizarre if the two functions expect different patterns of arguments or
15561of local variables. For this reason, the @code{jump} command requests
15562confirmation if the specified line is not in the function currently
15563executing. However, even bizarre results are predictable if you are
15564well acquainted with the machine-language code of your program.
c906108c
SS
15565@end table
15566
c906108c 15567@c Doesn't work on HP-UX; have to set $pcoqh and $pcoqt.
53a5351d
JM
15568On many systems, you can get much the same effect as the @code{jump}
15569command by storing a new value into the register @code{$pc}. The
15570difference is that this does not start your program running; it only
15571changes the address of where it @emph{will} run when you continue. For
15572example,
c906108c 15573
474c8240 15574@smallexample
c906108c 15575set $pc = 0x485
474c8240 15576@end smallexample
c906108c
SS
15577
15578@noindent
15579makes the next @code{continue} command or stepping command execute at
15580address @code{0x485}, rather than at the address where your program stopped.
79a6e687 15581@xref{Continuing and Stepping, ,Continuing and Stepping}.
c906108c
SS
15582
15583The most common occasion to use the @code{jump} command is to back
15584up---perhaps with more breakpoints set---over a portion of a program
15585that has already executed, in order to examine its execution in more
15586detail.
15587
c906108c 15588@c @group
6d2ebf8b 15589@node Signaling
79a6e687 15590@section Giving your Program a Signal
9c16f35a 15591@cindex deliver a signal to a program
c906108c
SS
15592
15593@table @code
15594@kindex signal
15595@item signal @var{signal}
15596Resume execution where your program stopped, but immediately give it the
15597signal @var{signal}. @var{signal} can be the name or the number of a
15598signal. For example, on many systems @code{signal 2} and @code{signal
15599SIGINT} are both ways of sending an interrupt signal.
15600
15601Alternatively, if @var{signal} is zero, continue execution without
15602giving a signal. This is useful when your program stopped on account of
15603a signal and would ordinary see the signal when resumed with the
15604@code{continue} command; @samp{signal 0} causes it to resume without a
15605signal.
15606
15607@code{signal} does not repeat when you press @key{RET} a second time
15608after executing the command.
15609@end table
15610@c @end group
15611
15612Invoking the @code{signal} command is not the same as invoking the
15613@code{kill} utility from the shell. Sending a signal with @code{kill}
15614causes @value{GDBN} to decide what to do with the signal depending on
15615the signal handling tables (@pxref{Signals}). The @code{signal} command
15616passes the signal directly to your program.
15617
c906108c 15618
6d2ebf8b 15619@node Returning
79a6e687 15620@section Returning from a Function
c906108c
SS
15621
15622@table @code
15623@cindex returning from a function
15624@kindex return
15625@item return
15626@itemx return @var{expression}
15627You can cancel execution of a function call with the @code{return}
15628command. If you give an
15629@var{expression} argument, its value is used as the function's return
15630value.
15631@end table
15632
15633When you use @code{return}, @value{GDBN} discards the selected stack frame
15634(and all frames within it). You can think of this as making the
15635discarded frame return prematurely. If you wish to specify a value to
15636be returned, give that value as the argument to @code{return}.
15637
15638This pops the selected stack frame (@pxref{Selection, ,Selecting a
79a6e687 15639Frame}), and any other frames inside of it, leaving its caller as the
c906108c
SS
15640innermost remaining frame. That frame becomes selected. The
15641specified value is stored in the registers used for returning values
15642of functions.
15643
15644The @code{return} command does not resume execution; it leaves the
15645program stopped in the state that would exist if the function had just
15646returned. In contrast, the @code{finish} command (@pxref{Continuing
79a6e687 15647and Stepping, ,Continuing and Stepping}) resumes execution until the
c906108c
SS
15648selected stack frame returns naturally.
15649
61ff14c6
JK
15650@value{GDBN} needs to know how the @var{expression} argument should be set for
15651the inferior. The concrete registers assignment depends on the OS ABI and the
15652type being returned by the selected stack frame. For example it is common for
15653OS ABI to return floating point values in FPU registers while integer values in
15654CPU registers. Still some ABIs return even floating point values in CPU
15655registers. Larger integer widths (such as @code{long long int}) also have
15656specific placement rules. @value{GDBN} already knows the OS ABI from its
15657current target so it needs to find out also the type being returned to make the
15658assignment into the right register(s).
15659
15660Normally, the selected stack frame has debug info. @value{GDBN} will always
15661use the debug info instead of the implicit type of @var{expression} when the
15662debug info is available. For example, if you type @kbd{return -1}, and the
15663function in the current stack frame is declared to return a @code{long long
15664int}, @value{GDBN} transparently converts the implicit @code{int} value of -1
15665into a @code{long long int}:
15666
15667@smallexample
15668Breakpoint 1, func () at gdb.base/return-nodebug.c:29
1566929 return 31;
15670(@value{GDBP}) return -1
15671Make func return now? (y or n) y
15672#0 0x004004f6 in main () at gdb.base/return-nodebug.c:43
1567343 printf ("result=%lld\n", func ());
15674(@value{GDBP})
15675@end smallexample
15676
15677However, if the selected stack frame does not have a debug info, e.g., if the
15678function was compiled without debug info, @value{GDBN} has to find out the type
15679to return from user. Specifying a different type by mistake may set the value
15680in different inferior registers than the caller code expects. For example,
15681typing @kbd{return -1} with its implicit type @code{int} would set only a part
15682of a @code{long long int} result for a debug info less function (on 32-bit
15683architectures). Therefore the user is required to specify the return type by
15684an appropriate cast explicitly:
15685
15686@smallexample
15687Breakpoint 2, 0x0040050b in func ()
15688(@value{GDBP}) return -1
15689Return value type not available for selected stack frame.
15690Please use an explicit cast of the value to return.
15691(@value{GDBP}) return (long long int) -1
15692Make selected stack frame return now? (y or n) y
15693#0 0x00400526 in main ()
15694(@value{GDBP})
15695@end smallexample
15696
6d2ebf8b 15697@node Calling
79a6e687 15698@section Calling Program Functions
c906108c 15699
f8568604 15700@table @code
c906108c 15701@cindex calling functions
f8568604
EZ
15702@cindex inferior functions, calling
15703@item print @var{expr}
d3e8051b 15704Evaluate the expression @var{expr} and display the resulting value.
f8568604
EZ
15705@var{expr} may include calls to functions in the program being
15706debugged.
15707
c906108c 15708@kindex call
c906108c
SS
15709@item call @var{expr}
15710Evaluate the expression @var{expr} without displaying @code{void}
15711returned values.
c906108c
SS
15712
15713You can use this variant of the @code{print} command if you want to
f8568604
EZ
15714execute a function from your program that does not return anything
15715(a.k.a.@: @dfn{a void function}), but without cluttering the output
15716with @code{void} returned values that @value{GDBN} will otherwise
15717print. If the result is not void, it is printed and saved in the
15718value history.
15719@end table
15720
9c16f35a
EZ
15721It is possible for the function you call via the @code{print} or
15722@code{call} command to generate a signal (e.g., if there's a bug in
15723the function, or if you passed it incorrect arguments). What happens
15724in that case is controlled by the @code{set unwindonsignal} command.
15725
7cd1089b
PM
15726Similarly, with a C@t{++} program it is possible for the function you
15727call via the @code{print} or @code{call} command to generate an
15728exception that is not handled due to the constraints of the dummy
15729frame. In this case, any exception that is raised in the frame, but has
15730an out-of-frame exception handler will not be found. GDB builds a
15731dummy-frame for the inferior function call, and the unwinder cannot
15732seek for exception handlers outside of this dummy-frame. What happens
15733in that case is controlled by the
15734@code{set unwind-on-terminating-exception} command.
15735
9c16f35a
EZ
15736@table @code
15737@item set unwindonsignal
15738@kindex set unwindonsignal
15739@cindex unwind stack in called functions
15740@cindex call dummy stack unwinding
15741Set unwinding of the stack if a signal is received while in a function
15742that @value{GDBN} called in the program being debugged. If set to on,
15743@value{GDBN} unwinds the stack it created for the call and restores
15744the context to what it was before the call. If set to off (the
15745default), @value{GDBN} stops in the frame where the signal was
15746received.
15747
15748@item show unwindonsignal
15749@kindex show unwindonsignal
15750Show the current setting of stack unwinding in the functions called by
15751@value{GDBN}.
7cd1089b
PM
15752
15753@item set unwind-on-terminating-exception
15754@kindex set unwind-on-terminating-exception
15755@cindex unwind stack in called functions with unhandled exceptions
15756@cindex call dummy stack unwinding on unhandled exception.
15757Set unwinding of the stack if a C@t{++} exception is raised, but left
15758unhandled while in a function that @value{GDBN} called in the program being
15759debugged. If set to on (the default), @value{GDBN} unwinds the stack
15760it created for the call and restores the context to what it was before
15761the call. If set to off, @value{GDBN} the exception is delivered to
15762the default C@t{++} exception handler and the inferior terminated.
15763
15764@item show unwind-on-terminating-exception
15765@kindex show unwind-on-terminating-exception
15766Show the current setting of stack unwinding in the functions called by
15767@value{GDBN}.
15768
9c16f35a
EZ
15769@end table
15770
f8568604
EZ
15771@cindex weak alias functions
15772Sometimes, a function you wish to call is actually a @dfn{weak alias}
15773for another function. In such case, @value{GDBN} might not pick up
15774the type information, including the types of the function arguments,
15775which causes @value{GDBN} to call the inferior function incorrectly.
15776As a result, the called function will function erroneously and may
15777even crash. A solution to that is to use the name of the aliased
15778function instead.
c906108c 15779
6d2ebf8b 15780@node Patching
79a6e687 15781@section Patching Programs
7a292a7a 15782
c906108c
SS
15783@cindex patching binaries
15784@cindex writing into executables
c906108c 15785@cindex writing into corefiles
c906108c 15786
7a292a7a
SS
15787By default, @value{GDBN} opens the file containing your program's
15788executable code (or the corefile) read-only. This prevents accidental
15789alterations to machine code; but it also prevents you from intentionally
15790patching your program's binary.
c906108c
SS
15791
15792If you'd like to be able to patch the binary, you can specify that
15793explicitly with the @code{set write} command. For example, you might
15794want to turn on internal debugging flags, or even to make emergency
15795repairs.
15796
15797@table @code
15798@kindex set write
15799@item set write on
15800@itemx set write off
7a292a7a 15801If you specify @samp{set write on}, @value{GDBN} opens executable and
20924a55 15802core files for both reading and writing; if you specify @kbd{set write
c906108c
SS
15803off} (the default), @value{GDBN} opens them read-only.
15804
15805If you have already loaded a file, you must load it again (using the
7a292a7a
SS
15806@code{exec-file} or @code{core-file} command) after changing @code{set
15807write}, for your new setting to take effect.
c906108c
SS
15808
15809@item show write
15810@kindex show write
7a292a7a
SS
15811Display whether executable files and core files are opened for writing
15812as well as reading.
c906108c
SS
15813@end table
15814
6d2ebf8b 15815@node GDB Files
c906108c
SS
15816@chapter @value{GDBN} Files
15817
7a292a7a
SS
15818@value{GDBN} needs to know the file name of the program to be debugged,
15819both in order to read its symbol table and in order to start your
15820program. To debug a core dump of a previous run, you must also tell
15821@value{GDBN} the name of the core dump file.
c906108c
SS
15822
15823@menu
15824* Files:: Commands to specify files
5b5d99cf 15825* Separate Debug Files:: Debugging information in separate files
9291a0cd 15826* Index Files:: Index files speed up GDB
c906108c 15827* Symbol Errors:: Errors reading symbol files
b14b1491 15828* Data Files:: GDB data files
c906108c
SS
15829@end menu
15830
6d2ebf8b 15831@node Files
79a6e687 15832@section Commands to Specify Files
c906108c 15833
7a292a7a 15834@cindex symbol table
c906108c 15835@cindex core dump file
7a292a7a
SS
15836
15837You may want to specify executable and core dump file names. The usual
15838way to do this is at start-up time, using the arguments to
15839@value{GDBN}'s start-up commands (@pxref{Invocation, , Getting In and
15840Out of @value{GDBN}}).
c906108c
SS
15841
15842Occasionally it is necessary to change to a different file during a
397ca115
EZ
15843@value{GDBN} session. Or you may run @value{GDBN} and forget to
15844specify a file you want to use. Or you are debugging a remote target
79a6e687
BW
15845via @code{gdbserver} (@pxref{Server, file, Using the @code{gdbserver}
15846Program}). In these situations the @value{GDBN} commands to specify
0869d01b 15847new files are useful.
c906108c
SS
15848
15849@table @code
15850@cindex executable file
15851@kindex file
15852@item file @var{filename}
15853Use @var{filename} as the program to be debugged. It is read for its
15854symbols and for the contents of pure memory. It is also the program
15855executed when you use the @code{run} command. If you do not specify a
5d161b24
DB
15856directory and the file is not found in the @value{GDBN} working directory,
15857@value{GDBN} uses the environment variable @code{PATH} as a list of
15858directories to search, just as the shell does when looking for a program
15859to run. You can change the value of this variable, for both @value{GDBN}
c906108c
SS
15860and your program, using the @code{path} command.
15861
fc8be69e
EZ
15862@cindex unlinked object files
15863@cindex patching object files
15864You can load unlinked object @file{.o} files into @value{GDBN} using
15865the @code{file} command. You will not be able to ``run'' an object
15866file, but you can disassemble functions and inspect variables. Also,
15867if the underlying BFD functionality supports it, you could use
15868@kbd{gdb -write} to patch object files using this technique. Note
15869that @value{GDBN} can neither interpret nor modify relocations in this
15870case, so branches and some initialized variables will appear to go to
15871the wrong place. But this feature is still handy from time to time.
15872
c906108c
SS
15873@item file
15874@code{file} with no argument makes @value{GDBN} discard any information it
15875has on both executable file and the symbol table.
15876
15877@kindex exec-file
15878@item exec-file @r{[} @var{filename} @r{]}
15879Specify that the program to be run (but not the symbol table) is found
15880in @var{filename}. @value{GDBN} searches the environment variable @code{PATH}
15881if necessary to locate your program. Omitting @var{filename} means to
15882discard information on the executable file.
15883
15884@kindex symbol-file
15885@item symbol-file @r{[} @var{filename} @r{]}
15886Read symbol table information from file @var{filename}. @code{PATH} is
15887searched when necessary. Use the @code{file} command to get both symbol
15888table and program to run from the same file.
15889
15890@code{symbol-file} with no argument clears out @value{GDBN} information on your
15891program's symbol table.
15892
ae5a43e0
DJ
15893The @code{symbol-file} command causes @value{GDBN} to forget the contents of
15894some breakpoints and auto-display expressions. This is because they may
15895contain pointers to the internal data recording symbols and data types,
15896which are part of the old symbol table data being discarded inside
15897@value{GDBN}.
c906108c
SS
15898
15899@code{symbol-file} does not repeat if you press @key{RET} again after
15900executing it once.
15901
15902When @value{GDBN} is configured for a particular environment, it
15903understands debugging information in whatever format is the standard
15904generated for that environment; you may use either a @sc{gnu} compiler, or
15905other compilers that adhere to the local conventions.
c906108c 15906Best results are usually obtained from @sc{gnu} compilers; for example,
e22ea452 15907using @code{@value{NGCC}} you can generate debugging information for
c906108c 15908optimized code.
c906108c
SS
15909
15910For most kinds of object files, with the exception of old SVR3 systems
15911using COFF, the @code{symbol-file} command does not normally read the
15912symbol table in full right away. Instead, it scans the symbol table
15913quickly to find which source files and which symbols are present. The
15914details are read later, one source file at a time, as they are needed.
15915
15916The purpose of this two-stage reading strategy is to make @value{GDBN}
15917start up faster. For the most part, it is invisible except for
15918occasional pauses while the symbol table details for a particular source
15919file are being read. (The @code{set verbose} command can turn these
15920pauses into messages if desired. @xref{Messages/Warnings, ,Optional
79a6e687 15921Warnings and Messages}.)
c906108c 15922
c906108c
SS
15923We have not implemented the two-stage strategy for COFF yet. When the
15924symbol table is stored in COFF format, @code{symbol-file} reads the
15925symbol table data in full right away. Note that ``stabs-in-COFF''
15926still does the two-stage strategy, since the debug info is actually
15927in stabs format.
15928
15929@kindex readnow
15930@cindex reading symbols immediately
15931@cindex symbols, reading immediately
6ac33a4e
TT
15932@item symbol-file @r{[} -readnow @r{]} @var{filename}
15933@itemx file @r{[} -readnow @r{]} @var{filename}
c906108c
SS
15934You can override the @value{GDBN} two-stage strategy for reading symbol
15935tables by using the @samp{-readnow} option with any of the commands that
15936load symbol table information, if you want to be sure @value{GDBN} has the
5d161b24 15937entire symbol table available.
c906108c 15938
c906108c
SS
15939@c FIXME: for now no mention of directories, since this seems to be in
15940@c flux. 13mar1992 status is that in theory GDB would look either in
15941@c current dir or in same dir as myprog; but issues like competing
15942@c GDB's, or clutter in system dirs, mean that in practice right now
15943@c only current dir is used. FFish says maybe a special GDB hierarchy
15944@c (eg rooted in val of env var GDBSYMS) could exist for mappable symbol
15945@c files.
15946
c906108c 15947@kindex core-file
09d4efe1 15948@item core-file @r{[}@var{filename}@r{]}
4644b6e3 15949@itemx core
c906108c
SS
15950Specify the whereabouts of a core dump file to be used as the ``contents
15951of memory''. Traditionally, core files contain only some parts of the
15952address space of the process that generated them; @value{GDBN} can access the
15953executable file itself for other parts.
15954
15955@code{core-file} with no argument specifies that no core file is
15956to be used.
15957
15958Note that the core file is ignored when your program is actually running
7a292a7a
SS
15959under @value{GDBN}. So, if you have been running your program and you
15960wish to debug a core file instead, you must kill the subprocess in which
15961the program is running. To do this, use the @code{kill} command
79a6e687 15962(@pxref{Kill Process, ,Killing the Child Process}).
c906108c 15963
c906108c
SS
15964@kindex add-symbol-file
15965@cindex dynamic linking
15966@item add-symbol-file @var{filename} @var{address}
a94ab193 15967@itemx add-symbol-file @var{filename} @var{address} @r{[} -readnow @r{]}
24bdad53 15968@itemx add-symbol-file @var{filename} @var{address} -s @var{section} @var{address} @dots{}
96a2c332
SS
15969The @code{add-symbol-file} command reads additional symbol table
15970information from the file @var{filename}. You would use this command
15971when @var{filename} has been dynamically loaded (by some other means)
15972into the program that is running. @var{address} should be the memory
15973address at which the file has been loaded; @value{GDBN} cannot figure
d167840f 15974this out for itself. You can additionally specify an arbitrary number
24bdad53 15975of @samp{-s @var{section} @var{address}} pairs, to give an explicit
d167840f
EZ
15976section name and base address for that section. You can specify any
15977@var{address} as an expression.
c906108c
SS
15978
15979The symbol table of the file @var{filename} is added to the symbol table
15980originally read with the @code{symbol-file} command. You can use the
96a2c332
SS
15981@code{add-symbol-file} command any number of times; the new symbol data
15982thus read keeps adding to the old. To discard all old symbol data
15983instead, use the @code{symbol-file} command without any arguments.
c906108c 15984
17d9d558
JB
15985@cindex relocatable object files, reading symbols from
15986@cindex object files, relocatable, reading symbols from
15987@cindex reading symbols from relocatable object files
15988@cindex symbols, reading from relocatable object files
15989@cindex @file{.o} files, reading symbols from
15990Although @var{filename} is typically a shared library file, an
15991executable file, or some other object file which has been fully
15992relocated for loading into a process, you can also load symbolic
15993information from relocatable @file{.o} files, as long as:
15994
15995@itemize @bullet
15996@item
15997the file's symbolic information refers only to linker symbols defined in
15998that file, not to symbols defined by other object files,
15999@item
16000every section the file's symbolic information refers to has actually
16001been loaded into the inferior, as it appears in the file, and
16002@item
16003you can determine the address at which every section was loaded, and
16004provide these to the @code{add-symbol-file} command.
16005@end itemize
16006
16007@noindent
16008Some embedded operating systems, like Sun Chorus and VxWorks, can load
16009relocatable files into an already running program; such systems
16010typically make the requirements above easy to meet. However, it's
16011important to recognize that many native systems use complex link
49efadf5 16012procedures (@code{.linkonce} section factoring and C@t{++} constructor table
17d9d558
JB
16013assembly, for example) that make the requirements difficult to meet. In
16014general, one cannot assume that using @code{add-symbol-file} to read a
16015relocatable object file's symbolic information will have the same effect
16016as linking the relocatable object file into the program in the normal
16017way.
16018
c906108c
SS
16019@code{add-symbol-file} does not repeat if you press @key{RET} after using it.
16020
c45da7e6
EZ
16021@kindex add-symbol-file-from-memory
16022@cindex @code{syscall DSO}
16023@cindex load symbols from memory
16024@item add-symbol-file-from-memory @var{address}
16025Load symbols from the given @var{address} in a dynamically loaded
16026object file whose image is mapped directly into the inferior's memory.
16027For example, the Linux kernel maps a @code{syscall DSO} into each
16028process's address space; this DSO provides kernel-specific code for
16029some system calls. The argument can be any expression whose
16030evaluation yields the address of the file's shared object file header.
16031For this command to work, you must have used @code{symbol-file} or
16032@code{exec-file} commands in advance.
16033
09d4efe1
EZ
16034@kindex add-shared-symbol-files
16035@kindex assf
16036@item add-shared-symbol-files @var{library-file}
16037@itemx assf @var{library-file}
16038The @code{add-shared-symbol-files} command can currently be used only
16039in the Cygwin build of @value{GDBN} on MS-Windows OS, where it is an
16040alias for the @code{dll-symbols} command (@pxref{Cygwin Native}).
16041@value{GDBN} automatically looks for shared libraries, however if
16042@value{GDBN} does not find yours, you can invoke
16043@code{add-shared-symbol-files}. It takes one argument: the shared
16044library's file name. @code{assf} is a shorthand alias for
16045@code{add-shared-symbol-files}.
c906108c 16046
c906108c 16047@kindex section
09d4efe1
EZ
16048@item section @var{section} @var{addr}
16049The @code{section} command changes the base address of the named
16050@var{section} of the exec file to @var{addr}. This can be used if the
16051exec file does not contain section addresses, (such as in the
16052@code{a.out} format), or when the addresses specified in the file
16053itself are wrong. Each section must be changed separately. The
16054@code{info files} command, described below, lists all the sections and
16055their addresses.
c906108c
SS
16056
16057@kindex info files
16058@kindex info target
16059@item info files
16060@itemx info target
7a292a7a
SS
16061@code{info files} and @code{info target} are synonymous; both print the
16062current target (@pxref{Targets, ,Specifying a Debugging Target}),
16063including the names of the executable and core dump files currently in
16064use by @value{GDBN}, and the files from which symbols were loaded. The
16065command @code{help target} lists all possible targets rather than
16066current ones.
16067
fe95c787
MS
16068@kindex maint info sections
16069@item maint info sections
16070Another command that can give you extra information about program sections
16071is @code{maint info sections}. In addition to the section information
16072displayed by @code{info files}, this command displays the flags and file
16073offset of each section in the executable and core dump files. In addition,
16074@code{maint info sections} provides the following command options (which
16075may be arbitrarily combined):
16076
16077@table @code
16078@item ALLOBJ
16079Display sections for all loaded object files, including shared libraries.
16080@item @var{sections}
6600abed 16081Display info only for named @var{sections}.
fe95c787
MS
16082@item @var{section-flags}
16083Display info only for sections for which @var{section-flags} are true.
16084The section flags that @value{GDBN} currently knows about are:
16085@table @code
16086@item ALLOC
16087Section will have space allocated in the process when loaded.
16088Set for all sections except those containing debug information.
16089@item LOAD
16090Section will be loaded from the file into the child process memory.
16091Set for pre-initialized code and data, clear for @code{.bss} sections.
16092@item RELOC
16093Section needs to be relocated before loading.
16094@item READONLY
16095Section cannot be modified by the child process.
16096@item CODE
16097Section contains executable code only.
6600abed 16098@item DATA
fe95c787
MS
16099Section contains data only (no executable code).
16100@item ROM
16101Section will reside in ROM.
16102@item CONSTRUCTOR
16103Section contains data for constructor/destructor lists.
16104@item HAS_CONTENTS
16105Section is not empty.
16106@item NEVER_LOAD
16107An instruction to the linker to not output the section.
16108@item COFF_SHARED_LIBRARY
16109A notification to the linker that the section contains
16110COFF shared library information.
16111@item IS_COMMON
16112Section contains common symbols.
16113@end table
16114@end table
6763aef9 16115@kindex set trust-readonly-sections
9c16f35a 16116@cindex read-only sections
6763aef9
MS
16117@item set trust-readonly-sections on
16118Tell @value{GDBN} that readonly sections in your object file
6ca652b0 16119really are read-only (i.e.@: that their contents will not change).
6763aef9
MS
16120In that case, @value{GDBN} can fetch values from these sections
16121out of the object file, rather than from the target program.
16122For some targets (notably embedded ones), this can be a significant
16123enhancement to debugging performance.
16124
16125The default is off.
16126
16127@item set trust-readonly-sections off
15110bc3 16128Tell @value{GDBN} not to trust readonly sections. This means that
6763aef9
MS
16129the contents of the section might change while the program is running,
16130and must therefore be fetched from the target when needed.
9c16f35a
EZ
16131
16132@item show trust-readonly-sections
16133Show the current setting of trusting readonly sections.
c906108c
SS
16134@end table
16135
16136All file-specifying commands allow both absolute and relative file names
16137as arguments. @value{GDBN} always converts the file name to an absolute file
16138name and remembers it that way.
16139
c906108c 16140@cindex shared libraries
9cceb671
DJ
16141@anchor{Shared Libraries}
16142@value{GDBN} supports @sc{gnu}/Linux, MS-Windows, HP-UX, SunOS, SVr4, Irix,
9c16f35a 16143and IBM RS/6000 AIX shared libraries.
53a5351d 16144
9cceb671
DJ
16145On MS-Windows @value{GDBN} must be linked with the Expat library to support
16146shared libraries. @xref{Expat}.
16147
c906108c
SS
16148@value{GDBN} automatically loads symbol definitions from shared libraries
16149when you use the @code{run} command, or when you examine a core file.
16150(Before you issue the @code{run} command, @value{GDBN} does not understand
16151references to a function in a shared library, however---unless you are
16152debugging a core file).
53a5351d
JM
16153
16154On HP-UX, if the program loads a library explicitly, @value{GDBN}
16155automatically loads the symbols at the time of the @code{shl_load} call.
16156
c906108c
SS
16157@c FIXME: some @value{GDBN} release may permit some refs to undef
16158@c FIXME...symbols---eg in a break cmd---assuming they are from a shared
16159@c FIXME...lib; check this from time to time when updating manual
16160
b7209cb4
FF
16161There are times, however, when you may wish to not automatically load
16162symbol definitions from shared libraries, such as when they are
16163particularly large or there are many of them.
16164
16165To control the automatic loading of shared library symbols, use the
16166commands:
16167
16168@table @code
16169@kindex set auto-solib-add
16170@item set auto-solib-add @var{mode}
16171If @var{mode} is @code{on}, symbols from all shared object libraries
16172will be loaded automatically when the inferior begins execution, you
16173attach to an independently started inferior, or when the dynamic linker
16174informs @value{GDBN} that a new library has been loaded. If @var{mode}
16175is @code{off}, symbols must be loaded manually, using the
16176@code{sharedlibrary} command. The default value is @code{on}.
16177
dcaf7c2c
EZ
16178@cindex memory used for symbol tables
16179If your program uses lots of shared libraries with debug info that
16180takes large amounts of memory, you can decrease the @value{GDBN}
16181memory footprint by preventing it from automatically loading the
16182symbols from shared libraries. To that end, type @kbd{set
16183auto-solib-add off} before running the inferior, then load each
16184library whose debug symbols you do need with @kbd{sharedlibrary
d3e8051b 16185@var{regexp}}, where @var{regexp} is a regular expression that matches
dcaf7c2c
EZ
16186the libraries whose symbols you want to be loaded.
16187
b7209cb4
FF
16188@kindex show auto-solib-add
16189@item show auto-solib-add
16190Display the current autoloading mode.
16191@end table
16192
c45da7e6 16193@cindex load shared library
b7209cb4
FF
16194To explicitly load shared library symbols, use the @code{sharedlibrary}
16195command:
16196
c906108c
SS
16197@table @code
16198@kindex info sharedlibrary
16199@kindex info share
55333a84
DE
16200@item info share @var{regex}
16201@itemx info sharedlibrary @var{regex}
16202Print the names of the shared libraries which are currently loaded
16203that match @var{regex}. If @var{regex} is omitted then print
16204all shared libraries that are loaded.
c906108c
SS
16205
16206@kindex sharedlibrary
16207@kindex share
16208@item sharedlibrary @var{regex}
16209@itemx share @var{regex}
c906108c
SS
16210Load shared object library symbols for files matching a
16211Unix regular expression.
16212As with files loaded automatically, it only loads shared libraries
16213required by your program for a core file or after typing @code{run}. If
16214@var{regex} is omitted all shared libraries required by your program are
16215loaded.
c45da7e6
EZ
16216
16217@item nosharedlibrary
16218@kindex nosharedlibrary
16219@cindex unload symbols from shared libraries
16220Unload all shared object library symbols. This discards all symbols
16221that have been loaded from all shared libraries. Symbols from shared
16222libraries that were loaded by explicit user requests are not
16223discarded.
c906108c
SS
16224@end table
16225
721c2651 16226Sometimes you may wish that @value{GDBN} stops and gives you control
edcc5120
TT
16227when any of shared library events happen. The best way to do this is
16228to use @code{catch load} and @code{catch unload} (@pxref{Set
16229Catchpoints}).
16230
16231@value{GDBN} also supports the the @code{set stop-on-solib-events}
16232command for this. This command exists for historical reasons. It is
16233less useful than setting a catchpoint, because it does not allow for
16234conditions or commands as a catchpoint does.
721c2651
EZ
16235
16236@table @code
16237@item set stop-on-solib-events
16238@kindex set stop-on-solib-events
16239This command controls whether @value{GDBN} should give you control
16240when the dynamic linker notifies it about some shared library event.
16241The most common event of interest is loading or unloading of a new
16242shared library.
16243
16244@item show stop-on-solib-events
16245@kindex show stop-on-solib-events
16246Show whether @value{GDBN} stops and gives you control when shared
16247library events happen.
16248@end table
16249
f5ebfba0 16250Shared libraries are also supported in many cross or remote debugging
f1838a98
UW
16251configurations. @value{GDBN} needs to have access to the target's libraries;
16252this can be accomplished either by providing copies of the libraries
16253on the host system, or by asking @value{GDBN} to automatically retrieve the
16254libraries from the target. If copies of the target libraries are
16255provided, they need to be the same as the target libraries, although the
f5ebfba0
DJ
16256copies on the target can be stripped as long as the copies on the host are
16257not.
16258
59b7b46f
EZ
16259@cindex where to look for shared libraries
16260For remote debugging, you need to tell @value{GDBN} where the target
16261libraries are, so that it can load the correct copies---otherwise, it
16262may try to load the host's libraries. @value{GDBN} has two variables
16263to specify the search directories for target libraries.
f5ebfba0
DJ
16264
16265@table @code
59b7b46f 16266@cindex prefix for shared library file names
f822c95b 16267@cindex system root, alternate
f5ebfba0 16268@kindex set solib-absolute-prefix
f822c95b
DJ
16269@kindex set sysroot
16270@item set sysroot @var{path}
16271Use @var{path} as the system root for the program being debugged. Any
16272absolute shared library paths will be prefixed with @var{path}; many
16273runtime loaders store the absolute paths to the shared library in the
16274target program's memory. If you use @code{set sysroot} to find shared
16275libraries, they need to be laid out in the same way that they are on
16276the target, with e.g.@: a @file{/lib} and @file{/usr/lib} hierarchy
16277under @var{path}.
16278
f1838a98
UW
16279If @var{path} starts with the sequence @file{remote:}, @value{GDBN} will
16280retrieve the target libraries from the remote system. This is only
16281supported when using a remote target that supports the @code{remote get}
16282command (@pxref{File Transfer,,Sending files to a remote system}).
16283The part of @var{path} following the initial @file{remote:}
16284(if present) is used as system root prefix on the remote file system.
16285@footnote{If you want to specify a local system root using a directory
16286that happens to be named @file{remote:}, you need to use some equivalent
16287variant of the name like @file{./remote:}.}
16288
ab38a727
PA
16289For targets with an MS-DOS based filesystem, such as MS-Windows and
16290SymbianOS, @value{GDBN} tries prefixing a few variants of the target
16291absolute file name with @var{path}. But first, on Unix hosts,
16292@value{GDBN} converts all backslash directory separators into forward
16293slashes, because the backslash is not a directory separator on Unix:
16294
16295@smallexample
16296 c:\foo\bar.dll @result{} c:/foo/bar.dll
16297@end smallexample
16298
16299Then, @value{GDBN} attempts prefixing the target file name with
16300@var{path}, and looks for the resulting file name in the host file
16301system:
16302
16303@smallexample
16304 c:/foo/bar.dll @result{} /path/to/sysroot/c:/foo/bar.dll
16305@end smallexample
16306
16307If that does not find the shared library, @value{GDBN} tries removing
16308the @samp{:} character from the drive spec, both for convenience, and,
16309for the case of the host file system not supporting file names with
16310colons:
16311
16312@smallexample
16313 c:/foo/bar.dll @result{} /path/to/sysroot/c/foo/bar.dll
16314@end smallexample
16315
16316This makes it possible to have a system root that mirrors a target
16317with more than one drive. E.g., you may want to setup your local
16318copies of the target system shared libraries like so (note @samp{c} vs
16319@samp{z}):
16320
16321@smallexample
16322 @file{/path/to/sysroot/c/sys/bin/foo.dll}
16323 @file{/path/to/sysroot/c/sys/bin/bar.dll}
16324 @file{/path/to/sysroot/z/sys/bin/bar.dll}
16325@end smallexample
16326
16327@noindent
16328and point the system root at @file{/path/to/sysroot}, so that
16329@value{GDBN} can find the correct copies of both
16330@file{c:\sys\bin\foo.dll}, and @file{z:\sys\bin\bar.dll}.
16331
16332If that still does not find the shared library, @value{GDBN} tries
16333removing the whole drive spec from the target file name:
16334
16335@smallexample
16336 c:/foo/bar.dll @result{} /path/to/sysroot/foo/bar.dll
16337@end smallexample
16338
16339This last lookup makes it possible to not care about the drive name,
16340if you don't want or need to.
16341
f822c95b
DJ
16342The @code{set solib-absolute-prefix} command is an alias for @code{set
16343sysroot}.
16344
16345@cindex default system root
59b7b46f 16346@cindex @samp{--with-sysroot}
f822c95b
DJ
16347You can set the default system root by using the configure-time
16348@samp{--with-sysroot} option. If the system root is inside
16349@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
16350@samp{--exec-prefix}), then the default system root will be updated
16351automatically if the installed @value{GDBN} is moved to a new
16352location.
16353
16354@kindex show sysroot
16355@item show sysroot
f5ebfba0
DJ
16356Display the current shared library prefix.
16357
16358@kindex set solib-search-path
16359@item set solib-search-path @var{path}
f822c95b
DJ
16360If this variable is set, @var{path} is a colon-separated list of
16361directories to search for shared libraries. @samp{solib-search-path}
16362is used after @samp{sysroot} fails to locate the library, or if the
16363path to the library is relative instead of absolute. If you want to
16364use @samp{solib-search-path} instead of @samp{sysroot}, be sure to set
d3e8051b 16365@samp{sysroot} to a nonexistent directory to prevent @value{GDBN} from
f822c95b 16366finding your host's libraries. @samp{sysroot} is preferred; setting
d3e8051b 16367it to a nonexistent directory may interfere with automatic loading
f822c95b 16368of shared library symbols.
f5ebfba0
DJ
16369
16370@kindex show solib-search-path
16371@item show solib-search-path
16372Display the current shared library search path.
ab38a727
PA
16373
16374@cindex DOS file-name semantics of file names.
16375@kindex set target-file-system-kind (unix|dos-based|auto)
16376@kindex show target-file-system-kind
16377@item set target-file-system-kind @var{kind}
16378Set assumed file system kind for target reported file names.
16379
16380Shared library file names as reported by the target system may not
16381make sense as is on the system @value{GDBN} is running on. For
16382example, when remote debugging a target that has MS-DOS based file
16383system semantics, from a Unix host, the target may be reporting to
16384@value{GDBN} a list of loaded shared libraries with file names such as
16385@file{c:\Windows\kernel32.dll}. On Unix hosts, there's no concept of
16386drive letters, so the @samp{c:\} prefix is not normally understood as
16387indicating an absolute file name, and neither is the backslash
16388normally considered a directory separator character. In that case,
16389the native file system would interpret this whole absolute file name
16390as a relative file name with no directory components. This would make
16391it impossible to point @value{GDBN} at a copy of the remote target's
16392shared libraries on the host using @code{set sysroot}, and impractical
16393with @code{set solib-search-path}. Setting
16394@code{target-file-system-kind} to @code{dos-based} tells @value{GDBN}
16395to interpret such file names similarly to how the target would, and to
16396map them to file names valid on @value{GDBN}'s native file system
16397semantics. The value of @var{kind} can be @code{"auto"}, in addition
16398to one of the supported file system kinds. In that case, @value{GDBN}
16399tries to determine the appropriate file system variant based on the
16400current target's operating system (@pxref{ABI, ,Configuring the
16401Current ABI}). The supported file system settings are:
16402
16403@table @code
16404@item unix
16405Instruct @value{GDBN} to assume the target file system is of Unix
16406kind. Only file names starting the forward slash (@samp{/}) character
16407are considered absolute, and the directory separator character is also
16408the forward slash.
16409
16410@item dos-based
16411Instruct @value{GDBN} to assume the target file system is DOS based.
16412File names starting with either a forward slash, or a drive letter
16413followed by a colon (e.g., @samp{c:}), are considered absolute, and
16414both the slash (@samp{/}) and the backslash (@samp{\\}) characters are
16415considered directory separators.
16416
16417@item auto
16418Instruct @value{GDBN} to use the file system kind associated with the
16419target operating system (@pxref{ABI, ,Configuring the Current ABI}).
16420This is the default.
16421@end table
f5ebfba0
DJ
16422@end table
16423
c011a4f4
DE
16424@cindex file name canonicalization
16425@cindex base name differences
16426When processing file names provided by the user, @value{GDBN}
16427frequently needs to compare them to the file names recorded in the
16428program's debug info. Normally, @value{GDBN} compares just the
16429@dfn{base names} of the files as strings, which is reasonably fast
16430even for very large programs. (The base name of a file is the last
16431portion of its name, after stripping all the leading directories.)
16432This shortcut in comparison is based upon the assumption that files
16433cannot have more than one base name. This is usually true, but
16434references to files that use symlinks or similar filesystem
16435facilities violate that assumption. If your program records files
16436using such facilities, or if you provide file names to @value{GDBN}
16437using symlinks etc., you can set @code{basenames-may-differ} to
16438@code{true} to instruct @value{GDBN} to completely canonicalize each
16439pair of file names it needs to compare. This will make file-name
16440comparisons accurate, but at a price of a significant slowdown.
16441
16442@table @code
16443@item set basenames-may-differ
16444@kindex set basenames-may-differ
16445Set whether a source file may have multiple base names.
16446
16447@item show basenames-may-differ
16448@kindex show basenames-may-differ
16449Show whether a source file may have multiple base names.
16450@end table
5b5d99cf
JB
16451
16452@node Separate Debug Files
16453@section Debugging Information in Separate Files
16454@cindex separate debugging information files
16455@cindex debugging information in separate files
16456@cindex @file{.debug} subdirectories
16457@cindex debugging information directory, global
f307c045 16458@cindex global debugging information directories
c7e83d54
EZ
16459@cindex build ID, and separate debugging files
16460@cindex @file{.build-id} directory
5b5d99cf
JB
16461
16462@value{GDBN} allows you to put a program's debugging information in a
16463file separate from the executable itself, in a way that allows
16464@value{GDBN} to find and load the debugging information automatically.
c7e83d54
EZ
16465Since debugging information can be very large---sometimes larger
16466than the executable code itself---some systems distribute debugging
5b5d99cf
JB
16467information for their executables in separate files, which users can
16468install only when they need to debug a problem.
16469
c7e83d54
EZ
16470@value{GDBN} supports two ways of specifying the separate debug info
16471file:
5b5d99cf
JB
16472
16473@itemize @bullet
16474@item
c7e83d54
EZ
16475The executable contains a @dfn{debug link} that specifies the name of
16476the separate debug info file. The separate debug file's name is
16477usually @file{@var{executable}.debug}, where @var{executable} is the
16478name of the corresponding executable file without leading directories
16479(e.g., @file{ls.debug} for @file{/usr/bin/ls}). In addition, the
99e008fe
EZ
16480debug link specifies a 32-bit @dfn{Cyclic Redundancy Check} (CRC)
16481checksum for the debug file, which @value{GDBN} uses to validate that
16482the executable and the debug file came from the same build.
c7e83d54
EZ
16483
16484@item
7e27a47a 16485The executable contains a @dfn{build ID}, a unique bit string that is
c7e83d54 16486also present in the corresponding debug info file. (This is supported
7e27a47a
EZ
16487only on some operating systems, notably those which use the ELF format
16488for binary files and the @sc{gnu} Binutils.) For more details about
16489this feature, see the description of the @option{--build-id}
16490command-line option in @ref{Options, , Command Line Options, ld.info,
16491The GNU Linker}. The debug info file's name is not specified
16492explicitly by the build ID, but can be computed from the build ID, see
16493below.
d3750b24
JK
16494@end itemize
16495
c7e83d54
EZ
16496Depending on the way the debug info file is specified, @value{GDBN}
16497uses two different methods of looking for the debug file:
d3750b24
JK
16498
16499@itemize @bullet
16500@item
c7e83d54
EZ
16501For the ``debug link'' method, @value{GDBN} looks up the named file in
16502the directory of the executable file, then in a subdirectory of that
f307c045
JK
16503directory named @file{.debug}, and finally under each one of the global debug
16504directories, in a subdirectory whose name is identical to the leading
c7e83d54
EZ
16505directories of the executable's absolute file name.
16506
16507@item
83f83d7f 16508For the ``build ID'' method, @value{GDBN} looks in the
f307c045
JK
16509@file{.build-id} subdirectory of each one of the global debug directories for
16510a file named @file{@var{nn}/@var{nnnnnnnn}.debug}, where @var{nn} are the
7e27a47a
EZ
16511first 2 hex characters of the build ID bit string, and @var{nnnnnnnn}
16512are the rest of the bit string. (Real build ID strings are 32 or more
16513hex characters, not 10.)
c7e83d54
EZ
16514@end itemize
16515
16516So, for example, suppose you ask @value{GDBN} to debug
7e27a47a
EZ
16517@file{/usr/bin/ls}, which has a debug link that specifies the
16518file @file{ls.debug}, and a build ID whose value in hex is
f307c045 16519@code{abcdef1234}. If the list of the global debug directories includes
c7e83d54
EZ
16520@file{/usr/lib/debug}, then @value{GDBN} will look for the following
16521debug information files, in the indicated order:
16522
16523@itemize @minus
16524@item
16525@file{/usr/lib/debug/.build-id/ab/cdef1234.debug}
d3750b24 16526@item
c7e83d54 16527@file{/usr/bin/ls.debug}
5b5d99cf 16528@item
c7e83d54 16529@file{/usr/bin/.debug/ls.debug}
5b5d99cf 16530@item
c7e83d54 16531@file{/usr/lib/debug/usr/bin/ls.debug}.
5b5d99cf 16532@end itemize
5b5d99cf 16533
1564a261
JK
16534@anchor{debug-file-directory}
16535Global debugging info directories default to what is set by @value{GDBN}
16536configure option @option{--with-separate-debug-dir}. During @value{GDBN} run
16537you can also set the global debugging info directories, and view the list
16538@value{GDBN} is currently using.
5b5d99cf
JB
16539
16540@table @code
16541
16542@kindex set debug-file-directory
24ddea62
JK
16543@item set debug-file-directory @var{directories}
16544Set the directories which @value{GDBN} searches for separate debugging
d9242c17
JK
16545information files to @var{directory}. Multiple path components can be set
16546concatenating them by a path separator.
5b5d99cf
JB
16547
16548@kindex show debug-file-directory
16549@item show debug-file-directory
24ddea62 16550Show the directories @value{GDBN} searches for separate debugging
5b5d99cf
JB
16551information files.
16552
16553@end table
16554
16555@cindex @code{.gnu_debuglink} sections
c7e83d54 16556@cindex debug link sections
5b5d99cf
JB
16557A debug link is a special section of the executable file named
16558@code{.gnu_debuglink}. The section must contain:
16559
16560@itemize
16561@item
16562A filename, with any leading directory components removed, followed by
16563a zero byte,
16564@item
16565zero to three bytes of padding, as needed to reach the next four-byte
16566boundary within the section, and
16567@item
16568a four-byte CRC checksum, stored in the same endianness used for the
16569executable file itself. The checksum is computed on the debugging
16570information file's full contents by the function given below, passing
16571zero as the @var{crc} argument.
16572@end itemize
16573
16574Any executable file format can carry a debug link, as long as it can
16575contain a section named @code{.gnu_debuglink} with the contents
16576described above.
16577
d3750b24 16578@cindex @code{.note.gnu.build-id} sections
c7e83d54 16579@cindex build ID sections
7e27a47a
EZ
16580The build ID is a special section in the executable file (and in other
16581ELF binary files that @value{GDBN} may consider). This section is
16582often named @code{.note.gnu.build-id}, but that name is not mandatory.
16583It contains unique identification for the built files---the ID remains
16584the same across multiple builds of the same build tree. The default
16585algorithm SHA1 produces 160 bits (40 hexadecimal characters) of the
16586content for the build ID string. The same section with an identical
16587value is present in the original built binary with symbols, in its
16588stripped variant, and in the separate debugging information file.
d3750b24 16589
5b5d99cf
JB
16590The debugging information file itself should be an ordinary
16591executable, containing a full set of linker symbols, sections, and
16592debugging information. The sections of the debugging information file
c7e83d54
EZ
16593should have the same names, addresses, and sizes as the original file,
16594but they need not contain any data---much like a @code{.bss} section
5b5d99cf
JB
16595in an ordinary executable.
16596
7e27a47a 16597The @sc{gnu} binary utilities (Binutils) package includes the
c7e83d54
EZ
16598@samp{objcopy} utility that can produce
16599the separated executable / debugging information file pairs using the
16600following commands:
16601
16602@smallexample
16603@kbd{objcopy --only-keep-debug foo foo.debug}
16604@kbd{strip -g foo}
c7e83d54
EZ
16605@end smallexample
16606
16607@noindent
16608These commands remove the debugging
83f83d7f
JK
16609information from the executable file @file{foo} and place it in the file
16610@file{foo.debug}. You can use the first, second or both methods to link the
16611two files:
16612
16613@itemize @bullet
16614@item
16615The debug link method needs the following additional command to also leave
16616behind a debug link in @file{foo}:
16617
16618@smallexample
16619@kbd{objcopy --add-gnu-debuglink=foo.debug foo}
16620@end smallexample
16621
16622Ulrich Drepper's @file{elfutils} package, starting with version 0.53, contains
d3750b24 16623a version of the @code{strip} command such that the command @kbd{strip foo -f
83f83d7f
JK
16624foo.debug} has the same functionality as the two @code{objcopy} commands and
16625the @code{ln -s} command above, together.
16626
16627@item
16628Build ID gets embedded into the main executable using @code{ld --build-id} or
16629the @value{NGCC} counterpart @code{gcc -Wl,--build-id}. Build ID support plus
16630compatibility fixes for debug files separation are present in @sc{gnu} binary
7e27a47a 16631utilities (Binutils) package since version 2.18.
83f83d7f
JK
16632@end itemize
16633
16634@noindent
d3750b24 16635
99e008fe
EZ
16636@cindex CRC algorithm definition
16637The CRC used in @code{.gnu_debuglink} is the CRC-32 defined in
16638IEEE 802.3 using the polynomial:
16639
16640@c TexInfo requires naked braces for multi-digit exponents for Tex
16641@c output, but this causes HTML output to barf. HTML has to be set using
16642@c raw commands. So we end up having to specify this equation in 2
16643@c different ways!
16644@ifhtml
16645@display
16646@html
16647 <em>x</em><sup>32</sup> + <em>x</em><sup>26</sup> + <em>x</em><sup>23</sup> + <em>x</em><sup>22</sup> + <em>x</em><sup>16</sup> + <em>x</em><sup>12</sup> + <em>x</em><sup>11</sup>
16648 + <em>x</em><sup>10</sup> + <em>x</em><sup>8</sup> + <em>x</em><sup>7</sup> + <em>x</em><sup>5</sup> + <em>x</em><sup>4</sup> + <em>x</em><sup>2</sup> + <em>x</em> + 1
16649@end html
16650@end display
16651@end ifhtml
16652@ifnothtml
16653@display
16654 @math{x^{32} + x^{26} + x^{23} + x^{22} + x^{16} + x^{12} + x^{11}}
16655 @math{+ x^{10} + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1}
16656@end display
16657@end ifnothtml
16658
16659The function is computed byte at a time, taking the least
16660significant bit of each byte first. The initial pattern
16661@code{0xffffffff} is used, to ensure leading zeros affect the CRC and
16662the final result is inverted to ensure trailing zeros also affect the
16663CRC.
16664
16665@emph{Note:} This is the same CRC polynomial as used in handling the
16666@dfn{Remote Serial Protocol} @code{qCRC} packet (@pxref{Remote Protocol,
16667, @value{GDBN} Remote Serial Protocol}). However in the
16668case of the Remote Serial Protocol, the CRC is computed @emph{most}
16669significant bit first, and the result is not inverted, so trailing
16670zeros have no effect on the CRC value.
16671
16672To complete the description, we show below the code of the function
16673which produces the CRC used in @code{.gnu_debuglink}. Inverting the
16674initially supplied @code{crc} argument means that an initial call to
16675this function passing in zero will start computing the CRC using
16676@code{0xffffffff}.
5b5d99cf 16677
4644b6e3 16678@kindex gnu_debuglink_crc32
5b5d99cf
JB
16679@smallexample
16680unsigned long
16681gnu_debuglink_crc32 (unsigned long crc,
16682 unsigned char *buf, size_t len)
16683@{
16684 static const unsigned long crc32_table[256] =
16685 @{
16686 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
16687 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
16688 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
16689 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
16690 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
16691 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
16692 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
16693 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
16694 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
16695 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
16696 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
16697 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
16698 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
16699 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
16700 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
16701 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
16702 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
16703 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
16704 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
16705 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
16706 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
16707 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
16708 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
16709 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
16710 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
16711 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
16712 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
16713 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
16714 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
16715 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
16716 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
16717 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
16718 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
16719 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
16720 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
16721 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
16722 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
16723 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
16724 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
16725 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
16726 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
16727 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
16728 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
16729 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
16730 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
16731 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
16732 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
16733 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
16734 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
16735 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
16736 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
16737 0x2d02ef8d
16738 @};
16739 unsigned char *end;
16740
16741 crc = ~crc & 0xffffffff;
16742 for (end = buf + len; buf < end; ++buf)
16743 crc = crc32_table[(crc ^ *buf) & 0xff] ^ (crc >> 8);
e7a3abfc 16744 return ~crc & 0xffffffff;
5b5d99cf
JB
16745@}
16746@end smallexample
16747
c7e83d54
EZ
16748@noindent
16749This computation does not apply to the ``build ID'' method.
16750
5b5d99cf 16751
9291a0cd
TT
16752@node Index Files
16753@section Index Files Speed Up @value{GDBN}
16754@cindex index files
16755@cindex @samp{.gdb_index} section
16756
16757When @value{GDBN} finds a symbol file, it scans the symbols in the
16758file in order to construct an internal symbol table. This lets most
16759@value{GDBN} operations work quickly---at the cost of a delay early
16760on. For large programs, this delay can be quite lengthy, so
16761@value{GDBN} provides a way to build an index, which speeds up
16762startup.
16763
16764The index is stored as a section in the symbol file. @value{GDBN} can
16765write the index to a file, then you can put it into the symbol file
16766using @command{objcopy}.
16767
16768To create an index file, use the @code{save gdb-index} command:
16769
16770@table @code
16771@item save gdb-index @var{directory}
16772@kindex save gdb-index
16773Create an index file for each symbol file currently known by
16774@value{GDBN}. Each file is named after its corresponding symbol file,
16775with @samp{.gdb-index} appended, and is written into the given
16776@var{directory}.
16777@end table
16778
16779Once you have created an index file you can merge it into your symbol
16780file, here named @file{symfile}, using @command{objcopy}:
16781
16782@smallexample
16783$ objcopy --add-section .gdb_index=symfile.gdb-index \
16784 --set-section-flags .gdb_index=readonly symfile symfile
16785@end smallexample
16786
e615022a
DE
16787@value{GDBN} will normally ignore older versions of @file{.gdb_index}
16788sections that have been deprecated. Usually they are deprecated because
16789they are missing a new feature or have performance issues.
16790To tell @value{GDBN} to use a deprecated index section anyway
16791specify @code{set use-deprecated-index-sections on}.
16792The default is @code{off}.
16793This can speed up startup, but may result in some functionality being lost.
16794@xref{Index Section Format}.
16795
16796@emph{Warning:} Setting @code{use-deprecated-index-sections} to @code{on}
16797must be done before gdb reads the file. The following will not work:
16798
16799@smallexample
16800$ gdb -ex "set use-deprecated-index-sections on" <program>
16801@end smallexample
16802
16803Instead you must do, for example,
16804
16805@smallexample
16806$ gdb -iex "set use-deprecated-index-sections on" <program>
16807@end smallexample
16808
9291a0cd
TT
16809There are currently some limitation on indices. They only work when
16810for DWARF debugging information, not stabs. And, they do not
16811currently work for programs using Ada.
16812
6d2ebf8b 16813@node Symbol Errors
79a6e687 16814@section Errors Reading Symbol Files
c906108c
SS
16815
16816While reading a symbol file, @value{GDBN} occasionally encounters problems,
16817such as symbol types it does not recognize, or known bugs in compiler
16818output. By default, @value{GDBN} does not notify you of such problems, since
16819they are relatively common and primarily of interest to people
16820debugging compilers. If you are interested in seeing information
16821about ill-constructed symbol tables, you can either ask @value{GDBN} to print
16822only one message about each such type of problem, no matter how many
16823times the problem occurs; or you can ask @value{GDBN} to print more messages,
16824to see how many times the problems occur, with the @code{set
79a6e687
BW
16825complaints} command (@pxref{Messages/Warnings, ,Optional Warnings and
16826Messages}).
c906108c
SS
16827
16828The messages currently printed, and their meanings, include:
16829
16830@table @code
16831@item inner block not inside outer block in @var{symbol}
16832
16833The symbol information shows where symbol scopes begin and end
16834(such as at the start of a function or a block of statements). This
16835error indicates that an inner scope block is not fully contained
16836in its outer scope blocks.
16837
16838@value{GDBN} circumvents the problem by treating the inner block as if it had
16839the same scope as the outer block. In the error message, @var{symbol}
16840may be shown as ``@code{(don't know)}'' if the outer block is not a
16841function.
16842
16843@item block at @var{address} out of order
16844
16845The symbol information for symbol scope blocks should occur in
16846order of increasing addresses. This error indicates that it does not
16847do so.
16848
16849@value{GDBN} does not circumvent this problem, and has trouble
16850locating symbols in the source file whose symbols it is reading. (You
16851can often determine what source file is affected by specifying
79a6e687
BW
16852@code{set verbose on}. @xref{Messages/Warnings, ,Optional Warnings and
16853Messages}.)
c906108c
SS
16854
16855@item bad block start address patched
16856
16857The symbol information for a symbol scope block has a start address
16858smaller than the address of the preceding source line. This is known
16859to occur in the SunOS 4.1.1 (and earlier) C compiler.
16860
16861@value{GDBN} circumvents the problem by treating the symbol scope block as
16862starting on the previous source line.
16863
16864@item bad string table offset in symbol @var{n}
16865
16866@cindex foo
16867Symbol number @var{n} contains a pointer into the string table which is
16868larger than the size of the string table.
16869
16870@value{GDBN} circumvents the problem by considering the symbol to have the
16871name @code{foo}, which may cause other problems if many symbols end up
16872with this name.
16873
16874@item unknown symbol type @code{0x@var{nn}}
16875
7a292a7a
SS
16876The symbol information contains new data types that @value{GDBN} does
16877not yet know how to read. @code{0x@var{nn}} is the symbol type of the
d4f3574e 16878uncomprehended information, in hexadecimal.
c906108c 16879
7a292a7a
SS
16880@value{GDBN} circumvents the error by ignoring this symbol information.
16881This usually allows you to debug your program, though certain symbols
c906108c 16882are not accessible. If you encounter such a problem and feel like
7a292a7a
SS
16883debugging it, you can debug @code{@value{GDBP}} with itself, breakpoint
16884on @code{complain}, then go up to the function @code{read_dbx_symtab}
16885and examine @code{*bufp} to see the symbol.
c906108c
SS
16886
16887@item stub type has NULL name
c906108c 16888
7a292a7a 16889@value{GDBN} could not find the full definition for a struct or class.
c906108c 16890
7a292a7a 16891@item const/volatile indicator missing (ok if using g++ v1.x), got@dots{}
b37052ae 16892The symbol information for a C@t{++} member function is missing some
7a292a7a
SS
16893information that recent versions of the compiler should have output for
16894it.
c906108c
SS
16895
16896@item info mismatch between compiler and debugger
16897
16898@value{GDBN} could not parse a type specification output by the compiler.
7a292a7a 16899
c906108c
SS
16900@end table
16901
b14b1491
TT
16902@node Data Files
16903@section GDB Data Files
16904
16905@cindex prefix for data files
16906@value{GDBN} will sometimes read an auxiliary data file. These files
16907are kept in a directory known as the @dfn{data directory}.
16908
16909You can set the data directory's name, and view the name @value{GDBN}
16910is currently using.
16911
16912@table @code
16913@kindex set data-directory
16914@item set data-directory @var{directory}
16915Set the directory which @value{GDBN} searches for auxiliary data files
16916to @var{directory}.
16917
16918@kindex show data-directory
16919@item show data-directory
16920Show the directory @value{GDBN} searches for auxiliary data files.
16921@end table
16922
16923@cindex default data directory
16924@cindex @samp{--with-gdb-datadir}
16925You can set the default data directory by using the configure-time
16926@samp{--with-gdb-datadir} option. If the data directory is inside
16927@value{GDBN}'s configured binary prefix (set with @samp{--prefix} or
16928@samp{--exec-prefix}), then the default data directory will be updated
16929automatically if the installed @value{GDBN} is moved to a new
16930location.
16931
aae1c79a
DE
16932The data directory may also be specified with the
16933@code{--data-directory} command line option.
16934@xref{Mode Options}.
16935
6d2ebf8b 16936@node Targets
c906108c 16937@chapter Specifying a Debugging Target
7a292a7a 16938
c906108c 16939@cindex debugging target
c906108c 16940A @dfn{target} is the execution environment occupied by your program.
53a5351d
JM
16941
16942Often, @value{GDBN} runs in the same host environment as your program;
16943in that case, the debugging target is specified as a side effect when
16944you use the @code{file} or @code{core} commands. When you need more
c906108c
SS
16945flexibility---for example, running @value{GDBN} on a physically separate
16946host, or controlling a standalone system over a serial port or a
53a5351d
JM
16947realtime system over a TCP/IP connection---you can use the @code{target}
16948command to specify one of the target types configured for @value{GDBN}
79a6e687 16949(@pxref{Target Commands, ,Commands for Managing Targets}).
c906108c 16950
a8f24a35
EZ
16951@cindex target architecture
16952It is possible to build @value{GDBN} for several different @dfn{target
16953architectures}. When @value{GDBN} is built like that, you can choose
16954one of the available architectures with the @kbd{set architecture}
16955command.
16956
16957@table @code
16958@kindex set architecture
16959@kindex show architecture
16960@item set architecture @var{arch}
16961This command sets the current target architecture to @var{arch}. The
16962value of @var{arch} can be @code{"auto"}, in addition to one of the
16963supported architectures.
16964
16965@item show architecture
16966Show the current target architecture.
9c16f35a
EZ
16967
16968@item set processor
16969@itemx processor
16970@kindex set processor
16971@kindex show processor
16972These are alias commands for, respectively, @code{set architecture}
16973and @code{show architecture}.
a8f24a35
EZ
16974@end table
16975
c906108c
SS
16976@menu
16977* Active Targets:: Active targets
16978* Target Commands:: Commands for managing targets
c906108c 16979* Byte Order:: Choosing target byte order
c906108c
SS
16980@end menu
16981
6d2ebf8b 16982@node Active Targets
79a6e687 16983@section Active Targets
7a292a7a 16984
c906108c
SS
16985@cindex stacking targets
16986@cindex active targets
16987@cindex multiple targets
16988
8ea5bce5 16989There are multiple classes of targets such as: processes, executable files or
c0edd9ed
JK
16990recording sessions. Core files belong to the process class, making core file
16991and process mutually exclusive. Otherwise, @value{GDBN} can work concurrently
16992on multiple active targets, one in each class. This allows you to (for
16993example) start a process and inspect its activity, while still having access to
16994the executable file after the process finishes. Or if you start process
16995recording (@pxref{Reverse Execution}) and @code{reverse-step} there, you are
16996presented a virtual layer of the recording target, while the process target
16997remains stopped at the chronologically last point of the process execution.
16998
16999Use the @code{core-file} and @code{exec-file} commands to select a new core
17000file or executable target (@pxref{Files, ,Commands to Specify Files}). To
17001specify as a target a process that is already running, use the @code{attach}
17002command (@pxref{Attach, ,Debugging an Already-running Process}).
c906108c 17003
6d2ebf8b 17004@node Target Commands
79a6e687 17005@section Commands for Managing Targets
c906108c
SS
17006
17007@table @code
17008@item target @var{type} @var{parameters}
7a292a7a
SS
17009Connects the @value{GDBN} host environment to a target machine or
17010process. A target is typically a protocol for talking to debugging
17011facilities. You use the argument @var{type} to specify the type or
17012protocol of the target machine.
c906108c
SS
17013
17014Further @var{parameters} are interpreted by the target protocol, but
17015typically include things like device names or host names to connect
17016with, process numbers, and baud rates.
c906108c
SS
17017
17018The @code{target} command does not repeat if you press @key{RET} again
17019after executing the command.
17020
17021@kindex help target
17022@item help target
17023Displays the names of all targets available. To display targets
17024currently selected, use either @code{info target} or @code{info files}
79a6e687 17025(@pxref{Files, ,Commands to Specify Files}).
c906108c
SS
17026
17027@item help target @var{name}
17028Describe a particular target, including any parameters necessary to
17029select it.
17030
17031@kindex set gnutarget
17032@item set gnutarget @var{args}
5d161b24 17033@value{GDBN} uses its own library BFD to read your files. @value{GDBN}
c906108c 17034knows whether it is reading an @dfn{executable},
5d161b24
DB
17035a @dfn{core}, or a @dfn{.o} file; however, you can specify the file format
17036with the @code{set gnutarget} command. Unlike most @code{target} commands,
c906108c
SS
17037with @code{gnutarget} the @code{target} refers to a program, not a machine.
17038
d4f3574e 17039@quotation
c906108c
SS
17040@emph{Warning:} To specify a file format with @code{set gnutarget},
17041you must know the actual BFD name.
d4f3574e 17042@end quotation
c906108c 17043
d4f3574e 17044@noindent
79a6e687 17045@xref{Files, , Commands to Specify Files}.
c906108c 17046
5d161b24 17047@kindex show gnutarget
c906108c
SS
17048@item show gnutarget
17049Use the @code{show gnutarget} command to display what file format
17050@code{gnutarget} is set to read. If you have not set @code{gnutarget},
17051@value{GDBN} will determine the file format for each file automatically,
17052and @code{show gnutarget} displays @samp{The current BDF target is "auto"}.
17053@end table
17054
4644b6e3 17055@cindex common targets
c906108c
SS
17056Here are some common targets (available, or not, depending on the GDB
17057configuration):
c906108c
SS
17058
17059@table @code
4644b6e3 17060@kindex target
c906108c 17061@item target exec @var{program}
4644b6e3 17062@cindex executable file target
c906108c
SS
17063An executable file. @samp{target exec @var{program}} is the same as
17064@samp{exec-file @var{program}}.
17065
c906108c 17066@item target core @var{filename}
4644b6e3 17067@cindex core dump file target
c906108c
SS
17068A core dump file. @samp{target core @var{filename}} is the same as
17069@samp{core-file @var{filename}}.
c906108c 17070
1a10341b 17071@item target remote @var{medium}
4644b6e3 17072@cindex remote target
1a10341b
JB
17073A remote system connected to @value{GDBN} via a serial line or network
17074connection. This command tells @value{GDBN} to use its own remote
17075protocol over @var{medium} for debugging. @xref{Remote Debugging}.
17076
17077For example, if you have a board connected to @file{/dev/ttya} on the
17078machine running @value{GDBN}, you could say:
17079
17080@smallexample
17081target remote /dev/ttya
17082@end smallexample
17083
17084@code{target remote} supports the @code{load} command. This is only
17085useful if you have some other way of getting the stub to the target
17086system, and you can put it somewhere in memory where it won't get
17087clobbered by the download.
c906108c 17088
ee8e71d4 17089@item target sim @r{[}@var{simargs}@r{]} @dots{}
4644b6e3 17090@cindex built-in simulator target
2df3850c 17091Builtin CPU simulator. @value{GDBN} includes simulators for most architectures.
104c1213 17092In general,
474c8240 17093@smallexample
104c1213
JM
17094 target sim
17095 load
17096 run
474c8240 17097@end smallexample
d4f3574e 17098@noindent
104c1213 17099works; however, you cannot assume that a specific memory map, device
d4f3574e 17100drivers, or even basic I/O is available, although some simulators do
104c1213
JM
17101provide these. For info about any processor-specific simulator details,
17102see the appropriate section in @ref{Embedded Processors, ,Embedded
17103Processors}.
17104
c906108c
SS
17105@end table
17106
104c1213 17107Some configurations may include these targets as well:
c906108c
SS
17108
17109@table @code
17110
c906108c 17111@item target nrom @var{dev}
4644b6e3 17112@cindex NetROM ROM emulator target
c906108c
SS
17113NetROM ROM emulator. This target only supports downloading.
17114
c906108c
SS
17115@end table
17116
5d161b24 17117Different targets are available on different configurations of @value{GDBN};
c906108c 17118your configuration may have more or fewer targets.
c906108c 17119
721c2651
EZ
17120Many remote targets require you to download the executable's code once
17121you've successfully established a connection. You may wish to control
3d00d119
DJ
17122various aspects of this process.
17123
17124@table @code
721c2651
EZ
17125
17126@item set hash
17127@kindex set hash@r{, for remote monitors}
17128@cindex hash mark while downloading
17129This command controls whether a hash mark @samp{#} is displayed while
17130downloading a file to the remote monitor. If on, a hash mark is
17131displayed after each S-record is successfully downloaded to the
17132monitor.
17133
17134@item show hash
17135@kindex show hash@r{, for remote monitors}
17136Show the current status of displaying the hash mark.
17137
17138@item set debug monitor
17139@kindex set debug monitor
17140@cindex display remote monitor communications
17141Enable or disable display of communications messages between
17142@value{GDBN} and the remote monitor.
17143
17144@item show debug monitor
17145@kindex show debug monitor
17146Show the current status of displaying communications between
17147@value{GDBN} and the remote monitor.
a8f24a35 17148@end table
c906108c
SS
17149
17150@table @code
17151
17152@kindex load @var{filename}
17153@item load @var{filename}
8edfe269 17154@anchor{load}
c906108c
SS
17155Depending on what remote debugging facilities are configured into
17156@value{GDBN}, the @code{load} command may be available. Where it exists, it
17157is meant to make @var{filename} (an executable) available for debugging
17158on the remote system---by downloading, or dynamic linking, for example.
17159@code{load} also records the @var{filename} symbol table in @value{GDBN}, like
17160the @code{add-symbol-file} command.
17161
17162If your @value{GDBN} does not have a @code{load} command, attempting to
17163execute it gets the error message ``@code{You can't do that when your
17164target is @dots{}}''
c906108c
SS
17165
17166The file is loaded at whatever address is specified in the executable.
17167For some object file formats, you can specify the load address when you
17168link the program; for other formats, like a.out, the object file format
17169specifies a fixed address.
17170@c FIXME! This would be a good place for an xref to the GNU linker doc.
17171
68437a39
DJ
17172Depending on the remote side capabilities, @value{GDBN} may be able to
17173load programs into flash memory.
17174
c906108c
SS
17175@code{load} does not repeat if you press @key{RET} again after using it.
17176@end table
17177
6d2ebf8b 17178@node Byte Order
79a6e687 17179@section Choosing Target Byte Order
7a292a7a 17180
c906108c
SS
17181@cindex choosing target byte order
17182@cindex target byte order
c906108c 17183
eb17f351 17184Some types of processors, such as the @acronym{MIPS}, PowerPC, and Renesas SH,
c906108c
SS
17185offer the ability to run either big-endian or little-endian byte
17186orders. Usually the executable or symbol will include a bit to
17187designate the endian-ness, and you will not need to worry about
17188which to use. However, you may still find it useful to adjust
d4f3574e 17189@value{GDBN}'s idea of processor endian-ness manually.
c906108c
SS
17190
17191@table @code
4644b6e3 17192@kindex set endian
c906108c
SS
17193@item set endian big
17194Instruct @value{GDBN} to assume the target is big-endian.
17195
c906108c
SS
17196@item set endian little
17197Instruct @value{GDBN} to assume the target is little-endian.
17198
c906108c
SS
17199@item set endian auto
17200Instruct @value{GDBN} to use the byte order associated with the
17201executable.
17202
17203@item show endian
17204Display @value{GDBN}'s current idea of the target byte order.
17205
17206@end table
17207
17208Note that these commands merely adjust interpretation of symbolic
17209data on the host, and that they have absolutely no effect on the
17210target system.
17211
ea35711c
DJ
17212
17213@node Remote Debugging
17214@chapter Debugging Remote Programs
c906108c
SS
17215@cindex remote debugging
17216
17217If you are trying to debug a program running on a machine that cannot run
5d161b24
DB
17218@value{GDBN} in the usual way, it is often useful to use remote debugging.
17219For example, you might use remote debugging on an operating system kernel,
c906108c
SS
17220or on a small system which does not have a general purpose operating system
17221powerful enough to run a full-featured debugger.
17222
17223Some configurations of @value{GDBN} have special serial or TCP/IP interfaces
17224to make this work with particular debugging targets. In addition,
5d161b24 17225@value{GDBN} comes with a generic serial protocol (specific to @value{GDBN},
c906108c
SS
17226but not specific to any particular target system) which you can use if you
17227write the remote stubs---the code that runs on the remote system to
17228communicate with @value{GDBN}.
17229
17230Other remote targets may be available in your
17231configuration of @value{GDBN}; use @code{help target} to list them.
c906108c 17232
6b2f586d 17233@menu
07f31aa6 17234* Connecting:: Connecting to a remote target
a6b151f1 17235* File Transfer:: Sending files to a remote system
6b2f586d 17236* Server:: Using the gdbserver program
79a6e687
BW
17237* Remote Configuration:: Remote configuration
17238* Remote Stub:: Implementing a remote stub
6b2f586d
AC
17239@end menu
17240
07f31aa6 17241@node Connecting
79a6e687 17242@section Connecting to a Remote Target
07f31aa6
DJ
17243
17244On the @value{GDBN} host machine, you will need an unstripped copy of
d3e8051b 17245your program, since @value{GDBN} needs symbol and debugging information.
07f31aa6
DJ
17246Start up @value{GDBN} as usual, using the name of the local copy of your
17247program as the first argument.
17248
86941c27
JB
17249@cindex @code{target remote}
17250@value{GDBN} can communicate with the target over a serial line, or
17251over an @acronym{IP} network using @acronym{TCP} or @acronym{UDP}. In
17252each case, @value{GDBN} uses the same protocol for debugging your
17253program; only the medium carrying the debugging packets varies. The
17254@code{target remote} command establishes a connection to the target.
17255Its arguments indicate which medium to use:
17256
17257@table @code
17258
17259@item target remote @var{serial-device}
07f31aa6 17260@cindex serial line, @code{target remote}
86941c27
JB
17261Use @var{serial-device} to communicate with the target. For example,
17262to use a serial line connected to the device named @file{/dev/ttyb}:
17263
17264@smallexample
17265target remote /dev/ttyb
17266@end smallexample
17267
07f31aa6
DJ
17268If you're using a serial line, you may want to give @value{GDBN} the
17269@w{@samp{--baud}} option, or use the @code{set remotebaud} command
79a6e687 17270(@pxref{Remote Configuration, set remotebaud}) before the
9c16f35a 17271@code{target} command.
07f31aa6 17272
86941c27
JB
17273@item target remote @code{@var{host}:@var{port}}
17274@itemx target remote @code{tcp:@var{host}:@var{port}}
17275@cindex @acronym{TCP} port, @code{target remote}
17276Debug using a @acronym{TCP} connection to @var{port} on @var{host}.
17277The @var{host} may be either a host name or a numeric @acronym{IP}
17278address; @var{port} must be a decimal number. The @var{host} could be
17279the target machine itself, if it is directly connected to the net, or
17280it might be a terminal server which in turn has a serial line to the
17281target.
07f31aa6 17282
86941c27
JB
17283For example, to connect to port 2828 on a terminal server named
17284@code{manyfarms}:
07f31aa6
DJ
17285
17286@smallexample
17287target remote manyfarms:2828
17288@end smallexample
17289
86941c27
JB
17290If your remote target is actually running on the same machine as your
17291debugger session (e.g.@: a simulator for your target running on the
17292same host), you can omit the hostname. For example, to connect to
17293port 1234 on your local machine:
07f31aa6
DJ
17294
17295@smallexample
17296target remote :1234
17297@end smallexample
17298@noindent
17299
17300Note that the colon is still required here.
17301
86941c27
JB
17302@item target remote @code{udp:@var{host}:@var{port}}
17303@cindex @acronym{UDP} port, @code{target remote}
17304Debug using @acronym{UDP} packets to @var{port} on @var{host}. For example, to
17305connect to @acronym{UDP} port 2828 on a terminal server named @code{manyfarms}:
07f31aa6
DJ
17306
17307@smallexample
17308target remote udp:manyfarms:2828
17309@end smallexample
17310
86941c27
JB
17311When using a @acronym{UDP} connection for remote debugging, you should
17312keep in mind that the `U' stands for ``Unreliable''. @acronym{UDP}
17313can silently drop packets on busy or unreliable networks, which will
17314cause havoc with your debugging session.
17315
66b8c7f6
JB
17316@item target remote | @var{command}
17317@cindex pipe, @code{target remote} to
17318Run @var{command} in the background and communicate with it using a
17319pipe. The @var{command} is a shell command, to be parsed and expanded
17320by the system's command shell, @code{/bin/sh}; it should expect remote
17321protocol packets on its standard input, and send replies on its
17322standard output. You could use this to run a stand-alone simulator
17323that speaks the remote debugging protocol, to make net connections
17324using programs like @code{ssh}, or for other similar tricks.
17325
17326If @var{command} closes its standard output (perhaps by exiting),
17327@value{GDBN} will try to send it a @code{SIGTERM} signal. (If the
17328program has already exited, this will have no effect.)
17329
86941c27 17330@end table
07f31aa6 17331
86941c27 17332Once the connection has been established, you can use all the usual
8edfe269
DJ
17333commands to examine and change data. The remote program is already
17334running; you can use @kbd{step} and @kbd{continue}, and you do not
17335need to use @kbd{run}.
07f31aa6
DJ
17336
17337@cindex interrupting remote programs
17338@cindex remote programs, interrupting
17339Whenever @value{GDBN} is waiting for the remote program, if you type the
c8aa23ab 17340interrupt character (often @kbd{Ctrl-c}), @value{GDBN} attempts to stop the
07f31aa6
DJ
17341program. This may or may not succeed, depending in part on the hardware
17342and the serial drivers the remote system uses. If you type the
17343interrupt character once again, @value{GDBN} displays this prompt:
17344
17345@smallexample
17346Interrupted while waiting for the program.
17347Give up (and stop debugging it)? (y or n)
17348@end smallexample
17349
17350If you type @kbd{y}, @value{GDBN} abandons the remote debugging session.
17351(If you decide you want to try again later, you can use @samp{target
17352remote} again to connect once more.) If you type @kbd{n}, @value{GDBN}
17353goes back to waiting.
17354
17355@table @code
17356@kindex detach (remote)
17357@item detach
17358When you have finished debugging the remote program, you can use the
17359@code{detach} command to release it from @value{GDBN} control.
17360Detaching from the target normally resumes its execution, but the results
17361will depend on your particular remote stub. After the @code{detach}
17362command, @value{GDBN} is free to connect to another target.
17363
17364@kindex disconnect
17365@item disconnect
17366The @code{disconnect} command behaves like @code{detach}, except that
17367the target is generally not resumed. It will wait for @value{GDBN}
17368(this instance or another one) to connect and continue debugging. After
17369the @code{disconnect} command, @value{GDBN} is again free to connect to
17370another target.
09d4efe1
EZ
17371
17372@cindex send command to remote monitor
fad38dfa
EZ
17373@cindex extend @value{GDBN} for remote targets
17374@cindex add new commands for external monitor
09d4efe1
EZ
17375@kindex monitor
17376@item monitor @var{cmd}
fad38dfa
EZ
17377This command allows you to send arbitrary commands directly to the
17378remote monitor. Since @value{GDBN} doesn't care about the commands it
17379sends like this, this command is the way to extend @value{GDBN}---you
17380can add new commands that only the external monitor will understand
17381and implement.
07f31aa6
DJ
17382@end table
17383
a6b151f1
DJ
17384@node File Transfer
17385@section Sending files to a remote system
17386@cindex remote target, file transfer
17387@cindex file transfer
17388@cindex sending files to remote systems
17389
17390Some remote targets offer the ability to transfer files over the same
17391connection used to communicate with @value{GDBN}. This is convenient
17392for targets accessible through other means, e.g.@: @sc{gnu}/Linux systems
17393running @code{gdbserver} over a network interface. For other targets,
17394e.g.@: embedded devices with only a single serial port, this may be
17395the only way to upload or download files.
17396
17397Not all remote targets support these commands.
17398
17399@table @code
17400@kindex remote put
17401@item remote put @var{hostfile} @var{targetfile}
17402Copy file @var{hostfile} from the host system (the machine running
17403@value{GDBN}) to @var{targetfile} on the target system.
17404
17405@kindex remote get
17406@item remote get @var{targetfile} @var{hostfile}
17407Copy file @var{targetfile} from the target system to @var{hostfile}
17408on the host system.
17409
17410@kindex remote delete
17411@item remote delete @var{targetfile}
17412Delete @var{targetfile} from the target system.
17413
17414@end table
17415
6f05cf9f 17416@node Server
79a6e687 17417@section Using the @code{gdbserver} Program
6f05cf9f
AC
17418
17419@kindex gdbserver
17420@cindex remote connection without stubs
17421@code{gdbserver} is a control program for Unix-like systems, which
17422allows you to connect your program with a remote @value{GDBN} via
17423@code{target remote}---but without linking in the usual debugging stub.
17424
17425@code{gdbserver} is not a complete replacement for the debugging stubs,
17426because it requires essentially the same operating-system facilities
17427that @value{GDBN} itself does. In fact, a system that can run
17428@code{gdbserver} to connect to a remote @value{GDBN} could also run
17429@value{GDBN} locally! @code{gdbserver} is sometimes useful nevertheless,
17430because it is a much smaller program than @value{GDBN} itself. It is
17431also easier to port than all of @value{GDBN}, so you may be able to get
17432started more quickly on a new system by using @code{gdbserver}.
17433Finally, if you develop code for real-time systems, you may find that
17434the tradeoffs involved in real-time operation make it more convenient to
17435do as much development work as possible on another system, for example
17436by cross-compiling. You can use @code{gdbserver} to make a similar
17437choice for debugging.
17438
17439@value{GDBN} and @code{gdbserver} communicate via either a serial line
17440or a TCP connection, using the standard @value{GDBN} remote serial
17441protocol.
17442
2d717e4f
DJ
17443@quotation
17444@emph{Warning:} @code{gdbserver} does not have any built-in security.
17445Do not run @code{gdbserver} connected to any public network; a
17446@value{GDBN} connection to @code{gdbserver} provides access to the
17447target system with the same privileges as the user running
17448@code{gdbserver}.
17449@end quotation
17450
17451@subsection Running @code{gdbserver}
17452@cindex arguments, to @code{gdbserver}
d9b1a651 17453@cindex @code{gdbserver}, command-line arguments
2d717e4f
DJ
17454
17455Run @code{gdbserver} on the target system. You need a copy of the
17456program you want to debug, including any libraries it requires.
6f05cf9f
AC
17457@code{gdbserver} does not need your program's symbol table, so you can
17458strip the program if necessary to save space. @value{GDBN} on the host
17459system does all the symbol handling.
17460
17461To use the server, you must tell it how to communicate with @value{GDBN};
56460a61 17462the name of your program; and the arguments for your program. The usual
6f05cf9f
AC
17463syntax is:
17464
17465@smallexample
17466target> gdbserver @var{comm} @var{program} [ @var{args} @dots{} ]
17467@end smallexample
17468
e0f9f062
DE
17469@var{comm} is either a device name (to use a serial line), or a TCP
17470hostname and portnumber, or @code{-} or @code{stdio} to use
17471stdin/stdout of @code{gdbserver}.
17472For example, to debug Emacs with the argument
6f05cf9f
AC
17473@samp{foo.txt} and communicate with @value{GDBN} over the serial port
17474@file{/dev/com1}:
17475
17476@smallexample
17477target> gdbserver /dev/com1 emacs foo.txt
17478@end smallexample
17479
17480@code{gdbserver} waits passively for the host @value{GDBN} to communicate
17481with it.
17482
17483To use a TCP connection instead of a serial line:
17484
17485@smallexample
17486target> gdbserver host:2345 emacs foo.txt
17487@end smallexample
17488
17489The only difference from the previous example is the first argument,
17490specifying that you are communicating with the host @value{GDBN} via
17491TCP. The @samp{host:2345} argument means that @code{gdbserver} is to
17492expect a TCP connection from machine @samp{host} to local TCP port 2345.
17493(Currently, the @samp{host} part is ignored.) You can choose any number
17494you want for the port number as long as it does not conflict with any
17495TCP ports already in use on the target system (for example, @code{23} is
17496reserved for @code{telnet}).@footnote{If you choose a port number that
17497conflicts with another service, @code{gdbserver} prints an error message
17498and exits.} You must use the same port number with the host @value{GDBN}
17499@code{target remote} command.
17500
e0f9f062
DE
17501The @code{stdio} connection is useful when starting @code{gdbserver}
17502with ssh:
17503
17504@smallexample
17505(gdb) target remote | ssh -T hostname gdbserver - hello
17506@end smallexample
17507
17508The @samp{-T} option to ssh is provided because we don't need a remote pty,
17509and we don't want escape-character handling. Ssh does this by default when
17510a command is provided, the flag is provided to make it explicit.
17511You could elide it if you want to.
17512
17513Programs started with stdio-connected gdbserver have @file{/dev/null} for
17514@code{stdin}, and @code{stdout},@code{stderr} are sent back to gdb for
17515display through a pipe connected to gdbserver.
17516Both @code{stdout} and @code{stderr} use the same pipe.
17517
2d717e4f 17518@subsubsection Attaching to a Running Program
d9b1a651
EZ
17519@cindex attach to a program, @code{gdbserver}
17520@cindex @option{--attach}, @code{gdbserver} option
2d717e4f 17521
56460a61
DJ
17522On some targets, @code{gdbserver} can also attach to running programs.
17523This is accomplished via the @code{--attach} argument. The syntax is:
17524
17525@smallexample
2d717e4f 17526target> gdbserver --attach @var{comm} @var{pid}
56460a61
DJ
17527@end smallexample
17528
17529@var{pid} is the process ID of a currently running process. It isn't necessary
17530to point @code{gdbserver} at a binary for the running process.
17531
b1fe9455 17532@pindex pidof
b1fe9455
DJ
17533You can debug processes by name instead of process ID if your target has the
17534@code{pidof} utility:
17535
17536@smallexample
2d717e4f 17537target> gdbserver --attach @var{comm} `pidof @var{program}`
b1fe9455
DJ
17538@end smallexample
17539
f822c95b 17540In case more than one copy of @var{program} is running, or @var{program}
b1fe9455
DJ
17541has multiple threads, most versions of @code{pidof} support the
17542@code{-s} option to only return the first process ID.
17543
2d717e4f 17544@subsubsection Multi-Process Mode for @code{gdbserver}
d9b1a651
EZ
17545@cindex @code{gdbserver}, multiple processes
17546@cindex multiple processes with @code{gdbserver}
2d717e4f
DJ
17547
17548When you connect to @code{gdbserver} using @code{target remote},
17549@code{gdbserver} debugs the specified program only once. When the
17550program exits, or you detach from it, @value{GDBN} closes the connection
17551and @code{gdbserver} exits.
17552
6e6c6f50 17553If you connect using @kbd{target extended-remote}, @code{gdbserver}
2d717e4f
DJ
17554enters multi-process mode. When the debugged program exits, or you
17555detach from it, @value{GDBN} stays connected to @code{gdbserver} even
17556though no program is running. The @code{run} and @code{attach}
17557commands instruct @code{gdbserver} to run or attach to a new program.
17558The @code{run} command uses @code{set remote exec-file} (@pxref{set
17559remote exec-file}) to select the program to run. Command line
17560arguments are supported, except for wildcard expansion and I/O
17561redirection (@pxref{Arguments}).
17562
d9b1a651 17563@cindex @option{--multi}, @code{gdbserver} option
2d717e4f
DJ
17564To start @code{gdbserver} without supplying an initial command to run
17565or process ID to attach, use the @option{--multi} command line option.
6e6c6f50 17566Then you can connect using @kbd{target extended-remote} and start
2d717e4f
DJ
17567the program you want to debug.
17568
03f2bd59
JK
17569In multi-process mode @code{gdbserver} does not automatically exit unless you
17570use the option @option{--once}. You can terminate it by using
17571@code{monitor exit} (@pxref{Monitor Commands for gdbserver}). Note that the
17572conditions under which @code{gdbserver} terminates depend on how @value{GDBN}
17573connects to it (@kbd{target remote} or @kbd{target extended-remote}). The
17574@option{--multi} option to @code{gdbserver} has no influence on that.
17575
17576@subsubsection TCP port allocation lifecycle of @code{gdbserver}
17577
17578This section applies only when @code{gdbserver} is run to listen on a TCP port.
17579
17580@code{gdbserver} normally terminates after all of its debugged processes have
17581terminated in @kbd{target remote} mode. On the other hand, for @kbd{target
17582extended-remote}, @code{gdbserver} stays running even with no processes left.
17583@value{GDBN} normally terminates the spawned debugged process on its exit,
17584which normally also terminates @code{gdbserver} in the @kbd{target remote}
17585mode. Therefore, when the connection drops unexpectedly, and @value{GDBN}
17586cannot ask @code{gdbserver} to kill its debugged processes, @code{gdbserver}
17587stays running even in the @kbd{target remote} mode.
17588
17589When @code{gdbserver} stays running, @value{GDBN} can connect to it again later.
17590Such reconnecting is useful for features like @ref{disconnected tracing}. For
17591completeness, at most one @value{GDBN} can be connected at a time.
17592
17593@cindex @option{--once}, @code{gdbserver} option
17594By default, @code{gdbserver} keeps the listening TCP port open, so that
17595additional connections are possible. However, if you start @code{gdbserver}
17596with the @option{--once} option, it will stop listening for any further
17597connection attempts after connecting to the first @value{GDBN} session. This
17598means no further connections to @code{gdbserver} will be possible after the
17599first one. It also means @code{gdbserver} will terminate after the first
17600connection with remote @value{GDBN} has closed, even for unexpectedly closed
17601connections and even in the @kbd{target extended-remote} mode. The
17602@option{--once} option allows reusing the same port number for connecting to
17603multiple instances of @code{gdbserver} running on the same host, since each
17604instance closes its port after the first connection.
2d717e4f
DJ
17605
17606@subsubsection Other Command-Line Arguments for @code{gdbserver}
17607
d9b1a651 17608@cindex @option{--debug}, @code{gdbserver} option
62709adf 17609The @option{--debug} option tells @code{gdbserver} to display extra
d9b1a651
EZ
17610status information about the debugging process.
17611@cindex @option{--remote-debug}, @code{gdbserver} option
17612The @option{--remote-debug} option tells @code{gdbserver} to display
62709adf
PA
17613remote protocol debug output. These options are intended for
17614@code{gdbserver} development and for bug reports to the developers.
2d717e4f 17615
d9b1a651 17616@cindex @option{--wrapper}, @code{gdbserver} option
ccd213ac
DJ
17617The @option{--wrapper} option specifies a wrapper to launch programs
17618for debugging. The option should be followed by the name of the
17619wrapper, then any command-line arguments to pass to the wrapper, then
17620@kbd{--} indicating the end of the wrapper arguments.
17621
17622@code{gdbserver} runs the specified wrapper program with a combined
17623command line including the wrapper arguments, then the name of the
17624program to debug, then any arguments to the program. The wrapper
17625runs until it executes your program, and then @value{GDBN} gains control.
17626
17627You can use any program that eventually calls @code{execve} with
17628its arguments as a wrapper. Several standard Unix utilities do
17629this, e.g.@: @code{env} and @code{nohup}. Any Unix shell script ending
17630with @code{exec "$@@"} will also work.
17631
17632For example, you can use @code{env} to pass an environment variable to
17633the debugged program, without setting the variable in @code{gdbserver}'s
17634environment:
17635
17636@smallexample
17637$ gdbserver --wrapper env LD_PRELOAD=libtest.so -- :2222 ./testprog
17638@end smallexample
17639
2d717e4f
DJ
17640@subsection Connecting to @code{gdbserver}
17641
17642Run @value{GDBN} on the host system.
17643
17644First make sure you have the necessary symbol files. Load symbols for
f822c95b
DJ
17645your application using the @code{file} command before you connect. Use
17646@code{set sysroot} to locate target libraries (unless your @value{GDBN}
2d717e4f 17647was compiled with the correct sysroot using @code{--with-sysroot}).
f822c95b
DJ
17648
17649The symbol file and target libraries must exactly match the executable
17650and libraries on the target, with one exception: the files on the host
17651system should not be stripped, even if the files on the target system
17652are. Mismatched or missing files will lead to confusing results
17653during debugging. On @sc{gnu}/Linux targets, mismatched or missing
17654files may also prevent @code{gdbserver} from debugging multi-threaded
17655programs.
17656
79a6e687 17657Connect to your target (@pxref{Connecting,,Connecting to a Remote Target}).
6f05cf9f
AC
17658For TCP connections, you must start up @code{gdbserver} prior to using
17659the @code{target remote} command. Otherwise you may get an error whose
17660text depends on the host system, but which usually looks something like
2d717e4f 17661@samp{Connection refused}. Don't use the @code{load}
397ca115 17662command in @value{GDBN} when using @code{gdbserver}, since the program is
f822c95b 17663already on the target.
07f31aa6 17664
79a6e687 17665@subsection Monitor Commands for @code{gdbserver}
c74d0ad8 17666@cindex monitor commands, for @code{gdbserver}
2d717e4f 17667@anchor{Monitor Commands for gdbserver}
c74d0ad8
DJ
17668
17669During a @value{GDBN} session using @code{gdbserver}, you can use the
17670@code{monitor} command to send special requests to @code{gdbserver}.
2d717e4f 17671Here are the available commands.
c74d0ad8
DJ
17672
17673@table @code
17674@item monitor help
17675List the available monitor commands.
17676
17677@item monitor set debug 0
17678@itemx monitor set debug 1
17679Disable or enable general debugging messages.
17680
17681@item monitor set remote-debug 0
17682@itemx monitor set remote-debug 1
17683Disable or enable specific debugging messages associated with the remote
17684protocol (@pxref{Remote Protocol}).
17685
cdbfd419
PP
17686@item monitor set libthread-db-search-path [PATH]
17687@cindex gdbserver, search path for @code{libthread_db}
17688When this command is issued, @var{path} is a colon-separated list of
17689directories to search for @code{libthread_db} (@pxref{Threads,,set
17690libthread-db-search-path}). If you omit @var{path},
84e578fb 17691@samp{libthread-db-search-path} will be reset to its default value.
cdbfd419 17692
98a5dd13
DE
17693The special entry @samp{$pdir} for @samp{libthread-db-search-path} is
17694not supported in @code{gdbserver}.
17695
2d717e4f
DJ
17696@item monitor exit
17697Tell gdbserver to exit immediately. This command should be followed by
17698@code{disconnect} to close the debugging session. @code{gdbserver} will
17699detach from any attached processes and kill any processes it created.
17700Use @code{monitor exit} to terminate @code{gdbserver} at the end
17701of a multi-process mode debug session.
17702
c74d0ad8
DJ
17703@end table
17704
fa593d66
PA
17705@subsection Tracepoints support in @code{gdbserver}
17706@cindex tracepoints support in @code{gdbserver}
17707
0fb4aa4b
PA
17708On some targets, @code{gdbserver} supports tracepoints, fast
17709tracepoints and static tracepoints.
fa593d66 17710
0fb4aa4b 17711For fast or static tracepoints to work, a special library called the
fa593d66
PA
17712@dfn{in-process agent} (IPA), must be loaded in the inferior process.
17713This library is built and distributed as an integral part of
0fb4aa4b
PA
17714@code{gdbserver}. In addition, support for static tracepoints
17715requires building the in-process agent library with static tracepoints
17716support. At present, the UST (LTTng Userspace Tracer,
17717@url{http://lttng.org/ust}) tracing engine is supported. This support
17718is automatically available if UST development headers are found in the
17719standard include path when @code{gdbserver} is built, or if
17720@code{gdbserver} was explicitly configured using @option{--with-ust}
17721to point at such headers. You can explicitly disable the support
17722using @option{--with-ust=no}.
fa593d66
PA
17723
17724There are several ways to load the in-process agent in your program:
17725
17726@table @code
17727@item Specifying it as dependency at link time
17728
17729You can link your program dynamically with the in-process agent
17730library. On most systems, this is accomplished by adding
17731@code{-linproctrace} to the link command.
17732
17733@item Using the system's preloading mechanisms
17734
17735You can force loading the in-process agent at startup time by using
17736your system's support for preloading shared libraries. Many Unixes
17737support the concept of preloading user defined libraries. In most
17738cases, you do that by specifying @code{LD_PRELOAD=libinproctrace.so}
17739in the environment. See also the description of @code{gdbserver}'s
17740@option{--wrapper} command line option.
17741
17742@item Using @value{GDBN} to force loading the agent at run time
17743
17744On some systems, you can force the inferior to load a shared library,
17745by calling a dynamic loader function in the inferior that takes care
17746of dynamically looking up and loading a shared library. On most Unix
17747systems, the function is @code{dlopen}. You'll use the @code{call}
17748command for that. For example:
17749
17750@smallexample
17751(@value{GDBP}) call dlopen ("libinproctrace.so", ...)
17752@end smallexample
17753
17754Note that on most Unix systems, for the @code{dlopen} function to be
17755available, the program needs to be linked with @code{-ldl}.
17756@end table
17757
17758On systems that have a userspace dynamic loader, like most Unix
17759systems, when you connect to @code{gdbserver} using @code{target
17760remote}, you'll find that the program is stopped at the dynamic
17761loader's entry point, and no shared library has been loaded in the
17762program's address space yet, including the in-process agent. In that
0fb4aa4b
PA
17763case, before being able to use any of the fast or static tracepoints
17764features, you need to let the loader run and load the shared
17765libraries. The simplest way to do that is to run the program to the
17766main procedure. E.g., if debugging a C or C@t{++} program, start
fa593d66
PA
17767@code{gdbserver} like so:
17768
17769@smallexample
17770$ gdbserver :9999 myprogram
17771@end smallexample
17772
17773Start GDB and connect to @code{gdbserver} like so, and run to main:
17774
17775@smallexample
17776$ gdb myprogram
17777(@value{GDBP}) target remote myhost:9999
177780x00007f215893ba60 in ?? () from /lib64/ld-linux-x86-64.so.2
17779(@value{GDBP}) b main
17780(@value{GDBP}) continue
17781@end smallexample
17782
17783The in-process tracing agent library should now be loaded into the
17784process; you can confirm it with the @code{info sharedlibrary}
17785command, which will list @file{libinproctrace.so} as loaded in the
0fb4aa4b
PA
17786process. You are now ready to install fast tracepoints, list static
17787tracepoint markers, probe static tracepoints markers, and start
fa593d66
PA
17788tracing.
17789
79a6e687
BW
17790@node Remote Configuration
17791@section Remote Configuration
501eef12 17792
9c16f35a
EZ
17793@kindex set remote
17794@kindex show remote
17795This section documents the configuration options available when
17796debugging remote programs. For the options related to the File I/O
fc320d37 17797extensions of the remote protocol, see @ref{system,
9c16f35a 17798system-call-allowed}.
501eef12
AC
17799
17800@table @code
9c16f35a 17801@item set remoteaddresssize @var{bits}
d3e8051b 17802@cindex address size for remote targets
9c16f35a
EZ
17803@cindex bits in remote address
17804Set the maximum size of address in a memory packet to the specified
17805number of bits. @value{GDBN} will mask off the address bits above
17806that number, when it passes addresses to the remote target. The
17807default value is the number of bits in the target's address.
17808
17809@item show remoteaddresssize
17810Show the current value of remote address size in bits.
17811
17812@item set remotebaud @var{n}
17813@cindex baud rate for remote targets
17814Set the baud rate for the remote serial I/O to @var{n} baud. The
17815value is used to set the speed of the serial port used for debugging
17816remote targets.
17817
17818@item show remotebaud
17819Show the current speed of the remote connection.
17820
17821@item set remotebreak
17822@cindex interrupt remote programs
17823@cindex BREAK signal instead of Ctrl-C
9a6253be 17824@anchor{set remotebreak}
9c16f35a 17825If set to on, @value{GDBN} sends a @code{BREAK} signal to the remote
c8aa23ab 17826when you type @kbd{Ctrl-c} to interrupt the program running
9a7a1b36 17827on the remote. If set to off, @value{GDBN} sends the @samp{Ctrl-C}
9c16f35a
EZ
17828character instead. The default is off, since most remote systems
17829expect to see @samp{Ctrl-C} as the interrupt signal.
17830
17831@item show remotebreak
17832Show whether @value{GDBN} sends @code{BREAK} or @samp{Ctrl-C} to
17833interrupt the remote program.
17834
23776285
MR
17835@item set remoteflow on
17836@itemx set remoteflow off
17837@kindex set remoteflow
17838Enable or disable hardware flow control (@code{RTS}/@code{CTS})
17839on the serial port used to communicate to the remote target.
17840
17841@item show remoteflow
17842@kindex show remoteflow
17843Show the current setting of hardware flow control.
17844
9c16f35a
EZ
17845@item set remotelogbase @var{base}
17846Set the base (a.k.a.@: radix) of logging serial protocol
17847communications to @var{base}. Supported values of @var{base} are:
17848@code{ascii}, @code{octal}, and @code{hex}. The default is
17849@code{ascii}.
17850
17851@item show remotelogbase
17852Show the current setting of the radix for logging remote serial
17853protocol.
17854
17855@item set remotelogfile @var{file}
17856@cindex record serial communications on file
17857Record remote serial communications on the named @var{file}. The
17858default is not to record at all.
17859
17860@item show remotelogfile.
17861Show the current setting of the file name on which to record the
17862serial communications.
17863
17864@item set remotetimeout @var{num}
17865@cindex timeout for serial communications
17866@cindex remote timeout
17867Set the timeout limit to wait for the remote target to respond to
17868@var{num} seconds. The default is 2 seconds.
17869
17870@item show remotetimeout
17871Show the current number of seconds to wait for the remote target
17872responses.
17873
17874@cindex limit hardware breakpoints and watchpoints
17875@cindex remote target, limit break- and watchpoints
501eef12
AC
17876@anchor{set remote hardware-watchpoint-limit}
17877@anchor{set remote hardware-breakpoint-limit}
17878@item set remote hardware-watchpoint-limit @var{limit}
17879@itemx set remote hardware-breakpoint-limit @var{limit}
17880Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or
17881watchpoints. A limit of -1, the default, is treated as unlimited.
2d717e4f 17882
480a3f21
PW
17883@cindex limit hardware watchpoints length
17884@cindex remote target, limit watchpoints length
17885@anchor{set remote hardware-watchpoint-length-limit}
17886@item set remote hardware-watchpoint-length-limit @var{limit}
17887Restrict @value{GDBN} to using @var{limit} bytes for the maximum length of
17888a remote hardware watchpoint. A limit of -1, the default, is treated
17889as unlimited.
17890
17891@item show remote hardware-watchpoint-length-limit
17892Show the current limit (in bytes) of the maximum length of
17893a remote hardware watchpoint.
17894
2d717e4f
DJ
17895@item set remote exec-file @var{filename}
17896@itemx show remote exec-file
17897@anchor{set remote exec-file}
17898@cindex executable file, for remote target
17899Select the file used for @code{run} with @code{target
17900extended-remote}. This should be set to a filename valid on the
17901target system. If it is not set, the target will use a default
17902filename (e.g.@: the last program run).
84603566 17903
9a7071a8
JB
17904@item set remote interrupt-sequence
17905@cindex interrupt remote programs
17906@cindex select Ctrl-C, BREAK or BREAK-g
17907Allow the user to select one of @samp{Ctrl-C}, a @code{BREAK} or
17908@samp{BREAK-g} as the
17909sequence to the remote target in order to interrupt the execution.
17910@samp{Ctrl-C} is a default. Some system prefers @code{BREAK} which
17911is high level of serial line for some certain time.
17912Linux kernel prefers @samp{BREAK-g}, a.k.a Magic SysRq g.
17913It is @code{BREAK} signal followed by character @code{g}.
17914
17915@item show interrupt-sequence
17916Show which of @samp{Ctrl-C}, @code{BREAK} or @code{BREAK-g}
17917is sent by @value{GDBN} to interrupt the remote program.
17918@code{BREAK-g} is BREAK signal followed by @code{g} and
17919also known as Magic SysRq g.
17920
17921@item set remote interrupt-on-connect
17922@cindex send interrupt-sequence on start
17923Specify whether interrupt-sequence is sent to remote target when
17924@value{GDBN} connects to it. This is mostly needed when you debug
17925Linux kernel. Linux kernel expects @code{BREAK} followed by @code{g}
17926which is known as Magic SysRq g in order to connect @value{GDBN}.
17927
17928@item show interrupt-on-connect
17929Show whether interrupt-sequence is sent
17930to remote target when @value{GDBN} connects to it.
17931
84603566
SL
17932@kindex set tcp
17933@kindex show tcp
17934@item set tcp auto-retry on
17935@cindex auto-retry, for remote TCP target
17936Enable auto-retry for remote TCP connections. This is useful if the remote
17937debugging agent is launched in parallel with @value{GDBN}; there is a race
17938condition because the agent may not become ready to accept the connection
17939before @value{GDBN} attempts to connect. When auto-retry is
17940enabled, if the initial attempt to connect fails, @value{GDBN} reattempts
17941to establish the connection using the timeout specified by
17942@code{set tcp connect-timeout}.
17943
17944@item set tcp auto-retry off
17945Do not auto-retry failed TCP connections.
17946
17947@item show tcp auto-retry
17948Show the current auto-retry setting.
17949
17950@item set tcp connect-timeout @var{seconds}
17951@cindex connection timeout, for remote TCP target
17952@cindex timeout, for remote target connection
17953Set the timeout for establishing a TCP connection to the remote target to
17954@var{seconds}. The timeout affects both polling to retry failed connections
17955(enabled by @code{set tcp auto-retry on}) and waiting for connections
17956that are merely slow to complete, and represents an approximate cumulative
17957value.
17958
17959@item show tcp connect-timeout
17960Show the current connection timeout setting.
501eef12
AC
17961@end table
17962
427c3a89
DJ
17963@cindex remote packets, enabling and disabling
17964The @value{GDBN} remote protocol autodetects the packets supported by
17965your debugging stub. If you need to override the autodetection, you
17966can use these commands to enable or disable individual packets. Each
17967packet can be set to @samp{on} (the remote target supports this
17968packet), @samp{off} (the remote target does not support this packet),
17969or @samp{auto} (detect remote target support for this packet). They
17970all default to @samp{auto}. For more information about each packet,
17971see @ref{Remote Protocol}.
17972
17973During normal use, you should not have to use any of these commands.
17974If you do, that may be a bug in your remote debugging stub, or a bug
17975in @value{GDBN}. You may want to report the problem to the
17976@value{GDBN} developers.
17977
cfa9d6d9
DJ
17978For each packet @var{name}, the command to enable or disable the
17979packet is @code{set remote @var{name}-packet}. The available settings
17980are:
427c3a89 17981
cfa9d6d9 17982@multitable @columnfractions 0.28 0.32 0.25
427c3a89
DJ
17983@item Command Name
17984@tab Remote Packet
17985@tab Related Features
17986
cfa9d6d9 17987@item @code{fetch-register}
427c3a89
DJ
17988@tab @code{p}
17989@tab @code{info registers}
17990
cfa9d6d9 17991@item @code{set-register}
427c3a89
DJ
17992@tab @code{P}
17993@tab @code{set}
17994
cfa9d6d9 17995@item @code{binary-download}
427c3a89
DJ
17996@tab @code{X}
17997@tab @code{load}, @code{set}
17998
cfa9d6d9 17999@item @code{read-aux-vector}
427c3a89
DJ
18000@tab @code{qXfer:auxv:read}
18001@tab @code{info auxv}
18002
cfa9d6d9 18003@item @code{symbol-lookup}
427c3a89
DJ
18004@tab @code{qSymbol}
18005@tab Detecting multiple threads
18006
2d717e4f
DJ
18007@item @code{attach}
18008@tab @code{vAttach}
18009@tab @code{attach}
18010
cfa9d6d9 18011@item @code{verbose-resume}
427c3a89
DJ
18012@tab @code{vCont}
18013@tab Stepping or resuming multiple threads
18014
2d717e4f
DJ
18015@item @code{run}
18016@tab @code{vRun}
18017@tab @code{run}
18018
cfa9d6d9 18019@item @code{software-breakpoint}
427c3a89
DJ
18020@tab @code{Z0}
18021@tab @code{break}
18022
cfa9d6d9 18023@item @code{hardware-breakpoint}
427c3a89
DJ
18024@tab @code{Z1}
18025@tab @code{hbreak}
18026
cfa9d6d9 18027@item @code{write-watchpoint}
427c3a89
DJ
18028@tab @code{Z2}
18029@tab @code{watch}
18030
cfa9d6d9 18031@item @code{read-watchpoint}
427c3a89
DJ
18032@tab @code{Z3}
18033@tab @code{rwatch}
18034
cfa9d6d9 18035@item @code{access-watchpoint}
427c3a89
DJ
18036@tab @code{Z4}
18037@tab @code{awatch}
18038
cfa9d6d9
DJ
18039@item @code{target-features}
18040@tab @code{qXfer:features:read}
18041@tab @code{set architecture}
18042
18043@item @code{library-info}
18044@tab @code{qXfer:libraries:read}
18045@tab @code{info sharedlibrary}
18046
18047@item @code{memory-map}
18048@tab @code{qXfer:memory-map:read}
18049@tab @code{info mem}
18050
0fb4aa4b
PA
18051@item @code{read-sdata-object}
18052@tab @code{qXfer:sdata:read}
18053@tab @code{print $_sdata}
18054
cfa9d6d9
DJ
18055@item @code{read-spu-object}
18056@tab @code{qXfer:spu:read}
18057@tab @code{info spu}
18058
18059@item @code{write-spu-object}
18060@tab @code{qXfer:spu:write}
18061@tab @code{info spu}
18062
4aa995e1
PA
18063@item @code{read-siginfo-object}
18064@tab @code{qXfer:siginfo:read}
18065@tab @code{print $_siginfo}
18066
18067@item @code{write-siginfo-object}
18068@tab @code{qXfer:siginfo:write}
18069@tab @code{set $_siginfo}
18070
dc146f7c
VP
18071@item @code{threads}
18072@tab @code{qXfer:threads:read}
18073@tab @code{info threads}
18074
cfa9d6d9 18075@item @code{get-thread-local-@*storage-address}
427c3a89
DJ
18076@tab @code{qGetTLSAddr}
18077@tab Displaying @code{__thread} variables
18078
711e434b
PM
18079@item @code{get-thread-information-block-address}
18080@tab @code{qGetTIBAddr}
18081@tab Display MS-Windows Thread Information Block.
18082
08388c79
DE
18083@item @code{search-memory}
18084@tab @code{qSearch:memory}
18085@tab @code{find}
18086
427c3a89
DJ
18087@item @code{supported-packets}
18088@tab @code{qSupported}
18089@tab Remote communications parameters
18090
cfa9d6d9 18091@item @code{pass-signals}
89be2091
DJ
18092@tab @code{QPassSignals}
18093@tab @code{handle @var{signal}}
18094
9b224c5e
PA
18095@item @code{program-signals}
18096@tab @code{QProgramSignals}
18097@tab @code{handle @var{signal}}
18098
a6b151f1
DJ
18099@item @code{hostio-close-packet}
18100@tab @code{vFile:close}
18101@tab @code{remote get}, @code{remote put}
18102
18103@item @code{hostio-open-packet}
18104@tab @code{vFile:open}
18105@tab @code{remote get}, @code{remote put}
18106
18107@item @code{hostio-pread-packet}
18108@tab @code{vFile:pread}
18109@tab @code{remote get}, @code{remote put}
18110
18111@item @code{hostio-pwrite-packet}
18112@tab @code{vFile:pwrite}
18113@tab @code{remote get}, @code{remote put}
18114
18115@item @code{hostio-unlink-packet}
18116@tab @code{vFile:unlink}
18117@tab @code{remote delete}
a6f3e723 18118
b9e7b9c3
UW
18119@item @code{hostio-readlink-packet}
18120@tab @code{vFile:readlink}
18121@tab Host I/O
18122
a6f3e723
SL
18123@item @code{noack-packet}
18124@tab @code{QStartNoAckMode}
18125@tab Packet acknowledgment
07e059b5
VP
18126
18127@item @code{osdata}
18128@tab @code{qXfer:osdata:read}
18129@tab @code{info os}
0b16c5cf
PA
18130
18131@item @code{query-attached}
18132@tab @code{qAttached}
18133@tab Querying remote process attach state.
b3b9301e
PA
18134
18135@item @code{traceframe-info}
18136@tab @code{qXfer:traceframe-info:read}
18137@tab Traceframe info
03583c20 18138
1e4d1764
YQ
18139@item @code{install-in-trace}
18140@tab @code{InstallInTrace}
18141@tab Install tracepoint in tracing
18142
03583c20
UW
18143@item @code{disable-randomization}
18144@tab @code{QDisableRandomization}
18145@tab @code{set disable-randomization}
83364271
LM
18146
18147@item @code{conditional-breakpoints-packet}
18148@tab @code{Z0 and Z1}
18149@tab @code{Support for target-side breakpoint condition evaluation}
427c3a89
DJ
18150@end multitable
18151
79a6e687
BW
18152@node Remote Stub
18153@section Implementing a Remote Stub
7a292a7a 18154
8e04817f
AC
18155@cindex debugging stub, example
18156@cindex remote stub, example
18157@cindex stub example, remote debugging
18158The stub files provided with @value{GDBN} implement the target side of the
18159communication protocol, and the @value{GDBN} side is implemented in the
18160@value{GDBN} source file @file{remote.c}. Normally, you can simply allow
18161these subroutines to communicate, and ignore the details. (If you're
18162implementing your own stub file, you can still ignore the details: start
18163with one of the existing stub files. @file{sparc-stub.c} is the best
18164organized, and therefore the easiest to read.)
18165
104c1213
JM
18166@cindex remote serial debugging, overview
18167To debug a program running on another machine (the debugging
18168@dfn{target} machine), you must first arrange for all the usual
18169prerequisites for the program to run by itself. For example, for a C
18170program, you need:
c906108c 18171
104c1213
JM
18172@enumerate
18173@item
18174A startup routine to set up the C runtime environment; these usually
18175have a name like @file{crt0}. The startup routine may be supplied by
18176your hardware supplier, or you may have to write your own.
96baa820 18177
5d161b24 18178@item
d4f3574e 18179A C subroutine library to support your program's
104c1213 18180subroutine calls, notably managing input and output.
96baa820 18181
104c1213
JM
18182@item
18183A way of getting your program to the other machine---for example, a
18184download program. These are often supplied by the hardware
18185manufacturer, but you may have to write your own from hardware
18186documentation.
18187@end enumerate
96baa820 18188
104c1213
JM
18189The next step is to arrange for your program to use a serial port to
18190communicate with the machine where @value{GDBN} is running (the @dfn{host}
18191machine). In general terms, the scheme looks like this:
96baa820 18192
104c1213
JM
18193@table @emph
18194@item On the host,
18195@value{GDBN} already understands how to use this protocol; when everything
18196else is set up, you can simply use the @samp{target remote} command
18197(@pxref{Targets,,Specifying a Debugging Target}).
18198
18199@item On the target,
18200you must link with your program a few special-purpose subroutines that
18201implement the @value{GDBN} remote serial protocol. The file containing these
18202subroutines is called a @dfn{debugging stub}.
18203
18204On certain remote targets, you can use an auxiliary program
18205@code{gdbserver} instead of linking a stub into your program.
79a6e687 18206@xref{Server,,Using the @code{gdbserver} Program}, for details.
104c1213 18207@end table
96baa820 18208
104c1213
JM
18209The debugging stub is specific to the architecture of the remote
18210machine; for example, use @file{sparc-stub.c} to debug programs on
18211@sc{sparc} boards.
96baa820 18212
104c1213
JM
18213@cindex remote serial stub list
18214These working remote stubs are distributed with @value{GDBN}:
96baa820 18215
104c1213
JM
18216@table @code
18217
18218@item i386-stub.c
41afff9a 18219@cindex @file{i386-stub.c}
104c1213
JM
18220@cindex Intel
18221@cindex i386
18222For Intel 386 and compatible architectures.
18223
18224@item m68k-stub.c
41afff9a 18225@cindex @file{m68k-stub.c}
104c1213
JM
18226@cindex Motorola 680x0
18227@cindex m680x0
18228For Motorola 680x0 architectures.
18229
18230@item sh-stub.c
41afff9a 18231@cindex @file{sh-stub.c}
172c2a43 18232@cindex Renesas
104c1213 18233@cindex SH
172c2a43 18234For Renesas SH architectures.
104c1213
JM
18235
18236@item sparc-stub.c
41afff9a 18237@cindex @file{sparc-stub.c}
104c1213
JM
18238@cindex Sparc
18239For @sc{sparc} architectures.
18240
18241@item sparcl-stub.c
41afff9a 18242@cindex @file{sparcl-stub.c}
104c1213
JM
18243@cindex Fujitsu
18244@cindex SparcLite
18245For Fujitsu @sc{sparclite} architectures.
18246
18247@end table
18248
18249The @file{README} file in the @value{GDBN} distribution may list other
18250recently added stubs.
18251
18252@menu
18253* Stub Contents:: What the stub can do for you
18254* Bootstrapping:: What you must do for the stub
18255* Debug Session:: Putting it all together
104c1213
JM
18256@end menu
18257
6d2ebf8b 18258@node Stub Contents
79a6e687 18259@subsection What the Stub Can Do for You
104c1213
JM
18260
18261@cindex remote serial stub
18262The debugging stub for your architecture supplies these three
18263subroutines:
18264
18265@table @code
18266@item set_debug_traps
4644b6e3 18267@findex set_debug_traps
104c1213
JM
18268@cindex remote serial stub, initialization
18269This routine arranges for @code{handle_exception} to run when your
2fb860fc
PA
18270program stops. You must call this subroutine explicitly in your
18271program's startup code.
104c1213
JM
18272
18273@item handle_exception
4644b6e3 18274@findex handle_exception
104c1213
JM
18275@cindex remote serial stub, main routine
18276This is the central workhorse, but your program never calls it
18277explicitly---the setup code arranges for @code{handle_exception} to
18278run when a trap is triggered.
18279
18280@code{handle_exception} takes control when your program stops during
18281execution (for example, on a breakpoint), and mediates communications
18282with @value{GDBN} on the host machine. This is where the communications
18283protocol is implemented; @code{handle_exception} acts as the @value{GDBN}
d4f3574e 18284representative on the target machine. It begins by sending summary
104c1213
JM
18285information on the state of your program, then continues to execute,
18286retrieving and transmitting any information @value{GDBN} needs, until you
18287execute a @value{GDBN} command that makes your program resume; at that point,
18288@code{handle_exception} returns control to your own code on the target
5d161b24 18289machine.
104c1213
JM
18290
18291@item breakpoint
18292@cindex @code{breakpoint} subroutine, remote
18293Use this auxiliary subroutine to make your program contain a
18294breakpoint. Depending on the particular situation, this may be the only
18295way for @value{GDBN} to get control. For instance, if your target
18296machine has some sort of interrupt button, you won't need to call this;
18297pressing the interrupt button transfers control to
18298@code{handle_exception}---in effect, to @value{GDBN}. On some machines,
18299simply receiving characters on the serial port may also trigger a trap;
18300again, in that situation, you don't need to call @code{breakpoint} from
18301your own program---simply running @samp{target remote} from the host
5d161b24 18302@value{GDBN} session gets control.
104c1213
JM
18303
18304Call @code{breakpoint} if none of these is true, or if you simply want
18305to make certain your program stops at a predetermined point for the
18306start of your debugging session.
18307@end table
18308
6d2ebf8b 18309@node Bootstrapping
79a6e687 18310@subsection What You Must Do for the Stub
104c1213
JM
18311
18312@cindex remote stub, support routines
18313The debugging stubs that come with @value{GDBN} are set up for a particular
18314chip architecture, but they have no information about the rest of your
18315debugging target machine.
18316
18317First of all you need to tell the stub how to communicate with the
18318serial port.
18319
18320@table @code
18321@item int getDebugChar()
4644b6e3 18322@findex getDebugChar
104c1213
JM
18323Write this subroutine to read a single character from the serial port.
18324It may be identical to @code{getchar} for your target system; a
18325different name is used to allow you to distinguish the two if you wish.
18326
18327@item void putDebugChar(int)
4644b6e3 18328@findex putDebugChar
104c1213 18329Write this subroutine to write a single character to the serial port.
5d161b24 18330It may be identical to @code{putchar} for your target system; a
104c1213
JM
18331different name is used to allow you to distinguish the two if you wish.
18332@end table
18333
18334@cindex control C, and remote debugging
18335@cindex interrupting remote targets
18336If you want @value{GDBN} to be able to stop your program while it is
18337running, you need to use an interrupt-driven serial driver, and arrange
18338for it to stop when it receives a @code{^C} (@samp{\003}, the control-C
18339character). That is the character which @value{GDBN} uses to tell the
18340remote system to stop.
18341
18342Getting the debugging target to return the proper status to @value{GDBN}
18343probably requires changes to the standard stub; one quick and dirty way
18344is to just execute a breakpoint instruction (the ``dirty'' part is that
18345@value{GDBN} reports a @code{SIGTRAP} instead of a @code{SIGINT}).
18346
18347Other routines you need to supply are:
18348
18349@table @code
18350@item void exceptionHandler (int @var{exception_number}, void *@var{exception_address})
4644b6e3 18351@findex exceptionHandler
104c1213
JM
18352Write this function to install @var{exception_address} in the exception
18353handling tables. You need to do this because the stub does not have any
18354way of knowing what the exception handling tables on your target system
18355are like (for example, the processor's table might be in @sc{rom},
18356containing entries which point to a table in @sc{ram}).
18357@var{exception_number} is the exception number which should be changed;
18358its meaning is architecture-dependent (for example, different numbers
18359might represent divide by zero, misaligned access, etc). When this
18360exception occurs, control should be transferred directly to
18361@var{exception_address}, and the processor state (stack, registers,
18362and so on) should be just as it is when a processor exception occurs. So if
18363you want to use a jump instruction to reach @var{exception_address}, it
18364should be a simple jump, not a jump to subroutine.
18365
18366For the 386, @var{exception_address} should be installed as an interrupt
18367gate so that interrupts are masked while the handler runs. The gate
18368should be at privilege level 0 (the most privileged level). The
18369@sc{sparc} and 68k stubs are able to mask interrupts themselves without
18370help from @code{exceptionHandler}.
18371
18372@item void flush_i_cache()
4644b6e3 18373@findex flush_i_cache
d4f3574e 18374On @sc{sparc} and @sc{sparclite} only, write this subroutine to flush the
104c1213
JM
18375instruction cache, if any, on your target machine. If there is no
18376instruction cache, this subroutine may be a no-op.
18377
18378On target machines that have instruction caches, @value{GDBN} requires this
18379function to make certain that the state of your program is stable.
18380@end table
18381
18382@noindent
18383You must also make sure this library routine is available:
18384
18385@table @code
18386@item void *memset(void *, int, int)
4644b6e3 18387@findex memset
104c1213
JM
18388This is the standard library function @code{memset} that sets an area of
18389memory to a known value. If you have one of the free versions of
18390@code{libc.a}, @code{memset} can be found there; otherwise, you must
18391either obtain it from your hardware manufacturer, or write your own.
18392@end table
18393
18394If you do not use the GNU C compiler, you may need other standard
18395library subroutines as well; this varies from one stub to another,
18396but in general the stubs are likely to use any of the common library
e22ea452 18397subroutines which @code{@value{NGCC}} generates as inline code.
104c1213
JM
18398
18399
6d2ebf8b 18400@node Debug Session
79a6e687 18401@subsection Putting it All Together
104c1213
JM
18402
18403@cindex remote serial debugging summary
18404In summary, when your program is ready to debug, you must follow these
18405steps.
18406
18407@enumerate
18408@item
6d2ebf8b 18409Make sure you have defined the supporting low-level routines
79a6e687 18410(@pxref{Bootstrapping,,What You Must Do for the Stub}):
104c1213
JM
18411@display
18412@code{getDebugChar}, @code{putDebugChar},
18413@code{flush_i_cache}, @code{memset}, @code{exceptionHandler}.
18414@end display
18415
18416@item
2fb860fc
PA
18417Insert these lines in your program's startup code, before the main
18418procedure is called:
104c1213 18419
474c8240 18420@smallexample
104c1213
JM
18421set_debug_traps();
18422breakpoint();
474c8240 18423@end smallexample
104c1213 18424
2fb860fc
PA
18425On some machines, when a breakpoint trap is raised, the hardware
18426automatically makes the PC point to the instruction after the
18427breakpoint. If your machine doesn't do that, you may need to adjust
18428@code{handle_exception} to arrange for it to return to the instruction
18429after the breakpoint on this first invocation, so that your program
18430doesn't keep hitting the initial breakpoint instead of making
18431progress.
18432
104c1213
JM
18433@item
18434For the 680x0 stub only, you need to provide a variable called
18435@code{exceptionHook}. Normally you just use:
18436
474c8240 18437@smallexample
104c1213 18438void (*exceptionHook)() = 0;
474c8240 18439@end smallexample
104c1213 18440
d4f3574e 18441@noindent
104c1213 18442but if before calling @code{set_debug_traps}, you set it to point to a
598ca718 18443function in your program, that function is called when
104c1213
JM
18444@code{@value{GDBN}} continues after stopping on a trap (for example, bus
18445error). The function indicated by @code{exceptionHook} is called with
18446one parameter: an @code{int} which is the exception number.
18447
18448@item
18449Compile and link together: your program, the @value{GDBN} debugging stub for
18450your target architecture, and the supporting subroutines.
18451
18452@item
18453Make sure you have a serial connection between your target machine and
18454the @value{GDBN} host, and identify the serial port on the host.
18455
18456@item
18457@c The "remote" target now provides a `load' command, so we should
18458@c document that. FIXME.
18459Download your program to your target machine (or get it there by
18460whatever means the manufacturer provides), and start it.
18461
18462@item
07f31aa6 18463Start @value{GDBN} on the host, and connect to the target
79a6e687 18464(@pxref{Connecting,,Connecting to a Remote Target}).
9db8d71f 18465
104c1213
JM
18466@end enumerate
18467
8e04817f
AC
18468@node Configurations
18469@chapter Configuration-Specific Information
104c1213 18470
8e04817f
AC
18471While nearly all @value{GDBN} commands are available for all native and
18472cross versions of the debugger, there are some exceptions. This chapter
18473describes things that are only available in certain configurations.
104c1213 18474
8e04817f
AC
18475There are three major categories of configurations: native
18476configurations, where the host and target are the same, embedded
18477operating system configurations, which are usually the same for several
18478different processor architectures, and bare embedded processors, which
18479are quite different from each other.
104c1213 18480
8e04817f
AC
18481@menu
18482* Native::
18483* Embedded OS::
18484* Embedded Processors::
18485* Architectures::
18486@end menu
104c1213 18487
8e04817f
AC
18488@node Native
18489@section Native
104c1213 18490
8e04817f
AC
18491This section describes details specific to particular native
18492configurations.
6cf7e474 18493
8e04817f
AC
18494@menu
18495* HP-UX:: HP-UX
7561d450 18496* BSD libkvm Interface:: Debugging BSD kernel memory images
8e04817f
AC
18497* SVR4 Process Information:: SVR4 process information
18498* DJGPP Native:: Features specific to the DJGPP port
78c47bea 18499* Cygwin Native:: Features specific to the Cygwin port
14d6dd68 18500* Hurd Native:: Features specific to @sc{gnu} Hurd
a80b95ba 18501* Darwin:: Features specific to Darwin
8e04817f 18502@end menu
6cf7e474 18503
8e04817f
AC
18504@node HP-UX
18505@subsection HP-UX
104c1213 18506
8e04817f
AC
18507On HP-UX systems, if you refer to a function or variable name that
18508begins with a dollar sign, @value{GDBN} searches for a user or system
18509name first, before it searches for a convenience variable.
104c1213 18510
9c16f35a 18511
7561d450
MK
18512@node BSD libkvm Interface
18513@subsection BSD libkvm Interface
18514
18515@cindex libkvm
18516@cindex kernel memory image
18517@cindex kernel crash dump
18518
18519BSD-derived systems (FreeBSD/NetBSD/OpenBSD) have a kernel memory
18520interface that provides a uniform interface for accessing kernel virtual
18521memory images, including live systems and crash dumps. @value{GDBN}
18522uses this interface to allow you to debug live kernels and kernel crash
18523dumps on many native BSD configurations. This is implemented as a
18524special @code{kvm} debugging target. For debugging a live system, load
18525the currently running kernel into @value{GDBN} and connect to the
18526@code{kvm} target:
18527
18528@smallexample
18529(@value{GDBP}) @b{target kvm}
18530@end smallexample
18531
18532For debugging crash dumps, provide the file name of the crash dump as an
18533argument:
18534
18535@smallexample
18536(@value{GDBP}) @b{target kvm /var/crash/bsd.0}
18537@end smallexample
18538
18539Once connected to the @code{kvm} target, the following commands are
18540available:
18541
18542@table @code
18543@kindex kvm
18544@item kvm pcb
721c2651 18545Set current context from the @dfn{Process Control Block} (PCB) address.
7561d450
MK
18546
18547@item kvm proc
18548Set current context from proc address. This command isn't available on
18549modern FreeBSD systems.
18550@end table
18551
8e04817f 18552@node SVR4 Process Information
79a6e687 18553@subsection SVR4 Process Information
60bf7e09
EZ
18554@cindex /proc
18555@cindex examine process image
18556@cindex process info via @file{/proc}
104c1213 18557
60bf7e09
EZ
18558Many versions of SVR4 and compatible systems provide a facility called
18559@samp{/proc} that can be used to examine the image of a running
18560process using file-system subroutines. If @value{GDBN} is configured
18561for an operating system with this facility, the command @code{info
18562proc} is available to report information about the process running
18563your program, or about any process running on your system. @code{info
18564proc} works only on SVR4 systems that include the @code{procfs} code.
18565This includes, as of this writing, @sc{gnu}/Linux, OSF/1 (Digital
18566Unix), Solaris, Irix, and Unixware, but not HP-UX, for example.
104c1213 18567
8e04817f
AC
18568@table @code
18569@kindex info proc
60bf7e09 18570@cindex process ID
8e04817f 18571@item info proc
60bf7e09
EZ
18572@itemx info proc @var{process-id}
18573Summarize available information about any running process. If a
18574process ID is specified by @var{process-id}, display information about
18575that process; otherwise display information about the program being
18576debugged. The summary includes the debugged process ID, the command
18577line used to invoke it, its current working directory, and its
18578executable file's absolute file name.
18579
18580On some systems, @var{process-id} can be of the form
18581@samp{[@var{pid}]/@var{tid}} which specifies a certain thread ID
18582within a process. If the optional @var{pid} part is missing, it means
18583a thread from the process being debugged (the leading @samp{/} still
18584needs to be present, or else @value{GDBN} will interpret the number as
18585a process ID rather than a thread ID).
6cf7e474 18586
8e04817f 18587@item info proc mappings
60bf7e09
EZ
18588@cindex memory address space mappings
18589Report the memory address space ranges accessible in the program, with
18590information on whether the process has read, write, or execute access
18591rights to each range. On @sc{gnu}/Linux systems, each memory range
18592includes the object file which is mapped to that range, instead of the
18593memory access rights to that range.
18594
18595@item info proc stat
18596@itemx info proc status
18597@cindex process detailed status information
18598These subcommands are specific to @sc{gnu}/Linux systems. They show
18599the process-related information, including the user ID and group ID;
18600how many threads are there in the process; its virtual memory usage;
18601the signals that are pending, blocked, and ignored; its TTY; its
18602consumption of system and user time; its stack size; its @samp{nice}
2eecc4ab 18603value; etc. For more information, see the @samp{proc} man page
60bf7e09
EZ
18604(type @kbd{man 5 proc} from your shell prompt).
18605
18606@item info proc all
18607Show all the information about the process described under all of the
18608above @code{info proc} subcommands.
18609
8e04817f
AC
18610@ignore
18611@comment These sub-options of 'info proc' were not included when
18612@comment procfs.c was re-written. Keep their descriptions around
18613@comment against the day when someone finds the time to put them back in.
18614@kindex info proc times
18615@item info proc times
18616Starting time, user CPU time, and system CPU time for your program and
18617its children.
6cf7e474 18618
8e04817f
AC
18619@kindex info proc id
18620@item info proc id
18621Report on the process IDs related to your program: its own process ID,
18622the ID of its parent, the process group ID, and the session ID.
8e04817f 18623@end ignore
721c2651
EZ
18624
18625@item set procfs-trace
18626@kindex set procfs-trace
18627@cindex @code{procfs} API calls
18628This command enables and disables tracing of @code{procfs} API calls.
18629
18630@item show procfs-trace
18631@kindex show procfs-trace
18632Show the current state of @code{procfs} API call tracing.
18633
18634@item set procfs-file @var{file}
18635@kindex set procfs-file
18636Tell @value{GDBN} to write @code{procfs} API trace to the named
18637@var{file}. @value{GDBN} appends the trace info to the previous
18638contents of the file. The default is to display the trace on the
18639standard output.
18640
18641@item show procfs-file
18642@kindex show procfs-file
18643Show the file to which @code{procfs} API trace is written.
18644
18645@item proc-trace-entry
18646@itemx proc-trace-exit
18647@itemx proc-untrace-entry
18648@itemx proc-untrace-exit
18649@kindex proc-trace-entry
18650@kindex proc-trace-exit
18651@kindex proc-untrace-entry
18652@kindex proc-untrace-exit
18653These commands enable and disable tracing of entries into and exits
18654from the @code{syscall} interface.
18655
18656@item info pidlist
18657@kindex info pidlist
18658@cindex process list, QNX Neutrino
18659For QNX Neutrino only, this command displays the list of all the
18660processes and all the threads within each process.
18661
18662@item info meminfo
18663@kindex info meminfo
18664@cindex mapinfo list, QNX Neutrino
18665For QNX Neutrino only, this command displays the list of all mapinfos.
8e04817f 18666@end table
104c1213 18667
8e04817f
AC
18668@node DJGPP Native
18669@subsection Features for Debugging @sc{djgpp} Programs
18670@cindex @sc{djgpp} debugging
18671@cindex native @sc{djgpp} debugging
18672@cindex MS-DOS-specific commands
104c1213 18673
514c4d71
EZ
18674@cindex DPMI
18675@sc{djgpp} is a port of the @sc{gnu} development tools to MS-DOS and
8e04817f
AC
18676MS-Windows. @sc{djgpp} programs are 32-bit protected-mode programs
18677that use the @dfn{DPMI} (DOS Protected-Mode Interface) API to run on
18678top of real-mode DOS systems and their emulations.
104c1213 18679
8e04817f
AC
18680@value{GDBN} supports native debugging of @sc{djgpp} programs, and
18681defines a few commands specific to the @sc{djgpp} port. This
18682subsection describes those commands.
104c1213 18683
8e04817f
AC
18684@table @code
18685@kindex info dos
18686@item info dos
18687This is a prefix of @sc{djgpp}-specific commands which print
18688information about the target system and important OS structures.
f1251bdd 18689
8e04817f
AC
18690@kindex sysinfo
18691@cindex MS-DOS system info
18692@cindex free memory information (MS-DOS)
18693@item info dos sysinfo
18694This command displays assorted information about the underlying
18695platform: the CPU type and features, the OS version and flavor, the
18696DPMI version, and the available conventional and DPMI memory.
104c1213 18697
8e04817f
AC
18698@cindex GDT
18699@cindex LDT
18700@cindex IDT
18701@cindex segment descriptor tables
18702@cindex descriptor tables display
18703@item info dos gdt
18704@itemx info dos ldt
18705@itemx info dos idt
18706These 3 commands display entries from, respectively, Global, Local,
18707and Interrupt Descriptor Tables (GDT, LDT, and IDT). The descriptor
18708tables are data structures which store a descriptor for each segment
18709that is currently in use. The segment's selector is an index into a
18710descriptor table; the table entry for that index holds the
18711descriptor's base address and limit, and its attributes and access
18712rights.
104c1213 18713
8e04817f
AC
18714A typical @sc{djgpp} program uses 3 segments: a code segment, a data
18715segment (used for both data and the stack), and a DOS segment (which
18716allows access to DOS/BIOS data structures and absolute addresses in
18717conventional memory). However, the DPMI host will usually define
18718additional segments in order to support the DPMI environment.
d4f3574e 18719
8e04817f
AC
18720@cindex garbled pointers
18721These commands allow to display entries from the descriptor tables.
18722Without an argument, all entries from the specified table are
18723displayed. An argument, which should be an integer expression, means
18724display a single entry whose index is given by the argument. For
18725example, here's a convenient way to display information about the
18726debugged program's data segment:
104c1213 18727
8e04817f
AC
18728@smallexample
18729@exdent @code{(@value{GDBP}) info dos ldt $ds}
18730@exdent @code{0x13f: base=0x11970000 limit=0x0009ffff 32-Bit Data (Read/Write, Exp-up)}
18731@end smallexample
104c1213 18732
8e04817f
AC
18733@noindent
18734This comes in handy when you want to see whether a pointer is outside
18735the data segment's limit (i.e.@: @dfn{garbled}).
104c1213 18736
8e04817f
AC
18737@cindex page tables display (MS-DOS)
18738@item info dos pde
18739@itemx info dos pte
18740These two commands display entries from, respectively, the Page
18741Directory and the Page Tables. Page Directories and Page Tables are
18742data structures which control how virtual memory addresses are mapped
18743into physical addresses. A Page Table includes an entry for every
18744page of memory that is mapped into the program's address space; there
18745may be several Page Tables, each one holding up to 4096 entries. A
18746Page Directory has up to 4096 entries, one each for every Page Table
18747that is currently in use.
104c1213 18748
8e04817f
AC
18749Without an argument, @kbd{info dos pde} displays the entire Page
18750Directory, and @kbd{info dos pte} displays all the entries in all of
18751the Page Tables. An argument, an integer expression, given to the
18752@kbd{info dos pde} command means display only that entry from the Page
18753Directory table. An argument given to the @kbd{info dos pte} command
18754means display entries from a single Page Table, the one pointed to by
18755the specified entry in the Page Directory.
104c1213 18756
8e04817f
AC
18757@cindex direct memory access (DMA) on MS-DOS
18758These commands are useful when your program uses @dfn{DMA} (Direct
18759Memory Access), which needs physical addresses to program the DMA
18760controller.
104c1213 18761
8e04817f 18762These commands are supported only with some DPMI servers.
104c1213 18763
8e04817f
AC
18764@cindex physical address from linear address
18765@item info dos address-pte @var{addr}
18766This command displays the Page Table entry for a specified linear
514c4d71
EZ
18767address. The argument @var{addr} is a linear address which should
18768already have the appropriate segment's base address added to it,
18769because this command accepts addresses which may belong to @emph{any}
18770segment. For example, here's how to display the Page Table entry for
18771the page where a variable @code{i} is stored:
104c1213 18772
b383017d 18773@smallexample
8e04817f
AC
18774@exdent @code{(@value{GDBP}) info dos address-pte __djgpp_base_address + (char *)&i}
18775@exdent @code{Page Table entry for address 0x11a00d30:}
b383017d 18776@exdent @code{Base=0x02698000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0xd30}
8e04817f 18777@end smallexample
104c1213 18778
8e04817f
AC
18779@noindent
18780This says that @code{i} is stored at offset @code{0xd30} from the page
514c4d71 18781whose physical base address is @code{0x02698000}, and shows all the
8e04817f 18782attributes of that page.
104c1213 18783
8e04817f
AC
18784Note that you must cast the addresses of variables to a @code{char *},
18785since otherwise the value of @code{__djgpp_base_address}, the base
18786address of all variables and functions in a @sc{djgpp} program, will
18787be added using the rules of C pointer arithmetics: if @code{i} is
18788declared an @code{int}, @value{GDBN} will add 4 times the value of
18789@code{__djgpp_base_address} to the address of @code{i}.
104c1213 18790
8e04817f
AC
18791Here's another example, it displays the Page Table entry for the
18792transfer buffer:
104c1213 18793
8e04817f
AC
18794@smallexample
18795@exdent @code{(@value{GDBP}) info dos address-pte *((unsigned *)&_go32_info_block + 3)}
18796@exdent @code{Page Table entry for address 0x29110:}
18797@exdent @code{Base=0x00029000 Dirty Acc. Not-Cached Write-Back Usr Read-Write +0x110}
18798@end smallexample
104c1213 18799
8e04817f
AC
18800@noindent
18801(The @code{+ 3} offset is because the transfer buffer's address is the
514c4d71
EZ
188023rd member of the @code{_go32_info_block} structure.) The output
18803clearly shows that this DPMI server maps the addresses in conventional
18804memory 1:1, i.e.@: the physical (@code{0x00029000} + @code{0x110}) and
18805linear (@code{0x29110}) addresses are identical.
104c1213 18806
8e04817f
AC
18807This command is supported only with some DPMI servers.
18808@end table
104c1213 18809
c45da7e6 18810@cindex DOS serial data link, remote debugging
a8f24a35
EZ
18811In addition to native debugging, the DJGPP port supports remote
18812debugging via a serial data link. The following commands are specific
18813to remote serial debugging in the DJGPP port of @value{GDBN}.
18814
18815@table @code
18816@kindex set com1base
18817@kindex set com1irq
18818@kindex set com2base
18819@kindex set com2irq
18820@kindex set com3base
18821@kindex set com3irq
18822@kindex set com4base
18823@kindex set com4irq
18824@item set com1base @var{addr}
18825This command sets the base I/O port address of the @file{COM1} serial
18826port.
18827
18828@item set com1irq @var{irq}
18829This command sets the @dfn{Interrupt Request} (@code{IRQ}) line to use
18830for the @file{COM1} serial port.
18831
18832There are similar commands @samp{set com2base}, @samp{set com3irq},
18833etc.@: for setting the port address and the @code{IRQ} lines for the
18834other 3 COM ports.
18835
18836@kindex show com1base
18837@kindex show com1irq
18838@kindex show com2base
18839@kindex show com2irq
18840@kindex show com3base
18841@kindex show com3irq
18842@kindex show com4base
18843@kindex show com4irq
18844The related commands @samp{show com1base}, @samp{show com1irq} etc.@:
18845display the current settings of the base address and the @code{IRQ}
18846lines used by the COM ports.
c45da7e6
EZ
18847
18848@item info serial
18849@kindex info serial
18850@cindex DOS serial port status
18851This command prints the status of the 4 DOS serial ports. For each
18852port, it prints whether it's active or not, its I/O base address and
18853IRQ number, whether it uses a 16550-style FIFO, its baudrate, and the
18854counts of various errors encountered so far.
a8f24a35
EZ
18855@end table
18856
18857
78c47bea 18858@node Cygwin Native
79a6e687 18859@subsection Features for Debugging MS Windows PE Executables
78c47bea
PM
18860@cindex MS Windows debugging
18861@cindex native Cygwin debugging
18862@cindex Cygwin-specific commands
18863
be448670 18864@value{GDBN} supports native debugging of MS Windows programs, including
cbb8f428
EZ
18865DLLs with and without symbolic debugging information.
18866
18867@cindex Ctrl-BREAK, MS-Windows
18868@cindex interrupt debuggee on MS-Windows
18869MS-Windows programs that call @code{SetConsoleMode} to switch off the
18870special meaning of the @samp{Ctrl-C} keystroke cannot be interrupted
18871by typing @kbd{C-c}. For this reason, @value{GDBN} on MS-Windows
18872supports @kbd{C-@key{BREAK}} as an alternative interrupt key
18873sequence, which can be used to interrupt the debuggee even if it
18874ignores @kbd{C-c}.
18875
18876There are various additional Cygwin-specific commands, described in
18877this section. Working with DLLs that have no debugging symbols is
18878described in @ref{Non-debug DLL Symbols}.
78c47bea
PM
18879
18880@table @code
18881@kindex info w32
18882@item info w32
db2e3e2e 18883This is a prefix of MS Windows-specific commands which print
78c47bea
PM
18884information about the target system and important OS structures.
18885
18886@item info w32 selector
18887This command displays information returned by
18888the Win32 API @code{GetThreadSelectorEntry} function.
18889It takes an optional argument that is evaluated to
18890a long value to give the information about this given selector.
18891Without argument, this command displays information
d3e8051b 18892about the six segment registers.
78c47bea 18893
711e434b
PM
18894@item info w32 thread-information-block
18895This command displays thread specific information stored in the
18896Thread Information Block (readable on the X86 CPU family using @code{$fs}
18897selector for 32-bit programs and @code{$gs} for 64-bit programs).
18898
78c47bea
PM
18899@kindex info dll
18900@item info dll
db2e3e2e 18901This is a Cygwin-specific alias of @code{info shared}.
78c47bea
PM
18902
18903@kindex dll-symbols
18904@item dll-symbols
18905This command loads symbols from a dll similarly to
18906add-sym command but without the need to specify a base address.
18907
be90c084 18908@kindex set cygwin-exceptions
e16b02ee
EZ
18909@cindex debugging the Cygwin DLL
18910@cindex Cygwin DLL, debugging
be90c084 18911@item set cygwin-exceptions @var{mode}
e16b02ee
EZ
18912If @var{mode} is @code{on}, @value{GDBN} will break on exceptions that
18913happen inside the Cygwin DLL. If @var{mode} is @code{off},
18914@value{GDBN} will delay recognition of exceptions, and may ignore some
18915exceptions which seem to be caused by internal Cygwin DLL
18916``bookkeeping''. This option is meant primarily for debugging the
18917Cygwin DLL itself; the default value is @code{off} to avoid annoying
18918@value{GDBN} users with false @code{SIGSEGV} signals.
be90c084
CF
18919
18920@kindex show cygwin-exceptions
18921@item show cygwin-exceptions
e16b02ee
EZ
18922Displays whether @value{GDBN} will break on exceptions that happen
18923inside the Cygwin DLL itself.
be90c084 18924
b383017d 18925@kindex set new-console
78c47bea 18926@item set new-console @var{mode}
b383017d 18927If @var{mode} is @code{on} the debuggee will
78c47bea 18928be started in a new console on next start.
e03e5e7b 18929If @var{mode} is @code{off}, the debuggee will
78c47bea
PM
18930be started in the same console as the debugger.
18931
18932@kindex show new-console
18933@item show new-console
18934Displays whether a new console is used
18935when the debuggee is started.
18936
18937@kindex set new-group
18938@item set new-group @var{mode}
18939This boolean value controls whether the debuggee should
18940start a new group or stay in the same group as the debugger.
18941This affects the way the Windows OS handles
c8aa23ab 18942@samp{Ctrl-C}.
78c47bea
PM
18943
18944@kindex show new-group
18945@item show new-group
18946Displays current value of new-group boolean.
18947
18948@kindex set debugevents
18949@item set debugevents
219eec71
EZ
18950This boolean value adds debug output concerning kernel events related
18951to the debuggee seen by the debugger. This includes events that
18952signal thread and process creation and exit, DLL loading and
18953unloading, console interrupts, and debugging messages produced by the
18954Windows @code{OutputDebugString} API call.
78c47bea
PM
18955
18956@kindex set debugexec
18957@item set debugexec
b383017d 18958This boolean value adds debug output concerning execute events
219eec71 18959(such as resume thread) seen by the debugger.
78c47bea
PM
18960
18961@kindex set debugexceptions
18962@item set debugexceptions
219eec71
EZ
18963This boolean value adds debug output concerning exceptions in the
18964debuggee seen by the debugger.
78c47bea
PM
18965
18966@kindex set debugmemory
18967@item set debugmemory
219eec71
EZ
18968This boolean value adds debug output concerning debuggee memory reads
18969and writes by the debugger.
78c47bea
PM
18970
18971@kindex set shell
18972@item set shell
18973This boolean values specifies whether the debuggee is called
18974via a shell or directly (default value is on).
18975
18976@kindex show shell
18977@item show shell
18978Displays if the debuggee will be started with a shell.
18979
18980@end table
18981
be448670 18982@menu
79a6e687 18983* Non-debug DLL Symbols:: Support for DLLs without debugging symbols
be448670
CF
18984@end menu
18985
79a6e687
BW
18986@node Non-debug DLL Symbols
18987@subsubsection Support for DLLs without Debugging Symbols
be448670
CF
18988@cindex DLLs with no debugging symbols
18989@cindex Minimal symbols and DLLs
18990
18991Very often on windows, some of the DLLs that your program relies on do
18992not include symbolic debugging information (for example,
db2e3e2e 18993@file{kernel32.dll}). When @value{GDBN} doesn't recognize any debugging
be448670 18994symbols in a DLL, it relies on the minimal amount of symbolic
db2e3e2e 18995information contained in the DLL's export table. This section
be448670
CF
18996describes working with such symbols, known internally to @value{GDBN} as
18997``minimal symbols''.
18998
18999Note that before the debugged program has started execution, no DLLs
db2e3e2e 19000will have been loaded. The easiest way around this problem is simply to
be448670 19001start the program --- either by setting a breakpoint or letting the
db2e3e2e 19002program run once to completion. It is also possible to force
be448670 19003@value{GDBN} to load a particular DLL before starting the executable ---
12c27660 19004see the shared library information in @ref{Files}, or the
db2e3e2e 19005@code{dll-symbols} command in @ref{Cygwin Native}. Currently,
be448670
CF
19006explicitly loading symbols from a DLL with no debugging information will
19007cause the symbol names to be duplicated in @value{GDBN}'s lookup table,
19008which may adversely affect symbol lookup performance.
19009
79a6e687 19010@subsubsection DLL Name Prefixes
be448670
CF
19011
19012In keeping with the naming conventions used by the Microsoft debugging
19013tools, DLL export symbols are made available with a prefix based on the
19014DLL name, for instance @code{KERNEL32!CreateFileA}. The plain name is
19015also entered into the symbol table, so @code{CreateFileA} is often
99e008fe 19016sufficient. In some cases there will be name clashes within a program
be448670
CF
19017(particularly if the executable itself includes full debugging symbols)
19018necessitating the use of the fully qualified name when referring to the
99e008fe 19019contents of the DLL. Use single-quotes around the name to avoid the
be448670
CF
19020exclamation mark (``!'') being interpreted as a language operator.
19021
19022Note that the internal name of the DLL may be all upper-case, even
99e008fe 19023though the file name of the DLL is lower-case, or vice-versa. Since
be448670
CF
19024symbols within @value{GDBN} are @emph{case-sensitive} this may cause
19025some confusion. If in doubt, try the @code{info functions} and
0869d01b
NR
19026@code{info variables} commands or even @code{maint print msymbols}
19027(@pxref{Symbols}). Here's an example:
be448670
CF
19028
19029@smallexample
f7dc1244 19030(@value{GDBP}) info function CreateFileA
be448670
CF
19031All functions matching regular expression "CreateFileA":
19032
19033Non-debugging symbols:
190340x77e885f4 CreateFileA
190350x77e885f4 KERNEL32!CreateFileA
19036@end smallexample
19037
19038@smallexample
f7dc1244 19039(@value{GDBP}) info function !
be448670
CF
19040All functions matching regular expression "!":
19041
19042Non-debugging symbols:
190430x6100114c cygwin1!__assert
190440x61004034 cygwin1!_dll_crt0@@0
190450x61004240 cygwin1!dll_crt0(per_process *)
19046[etc...]
19047@end smallexample
19048
79a6e687 19049@subsubsection Working with Minimal Symbols
be448670
CF
19050
19051Symbols extracted from a DLL's export table do not contain very much
19052type information. All that @value{GDBN} can do is guess whether a symbol
19053refers to a function or variable depending on the linker section that
19054contains the symbol. Also note that the actual contents of the memory
19055contained in a DLL are not available unless the program is running. This
19056means that you cannot examine the contents of a variable or disassemble
19057a function within a DLL without a running program.
19058
19059Variables are generally treated as pointers and dereferenced
19060automatically. For this reason, it is often necessary to prefix a
19061variable name with the address-of operator (``&'') and provide explicit
19062type information in the command. Here's an example of the type of
19063problem:
19064
19065@smallexample
f7dc1244 19066(@value{GDBP}) print 'cygwin1!__argv'
be448670
CF
19067$1 = 268572168
19068@end smallexample
19069
19070@smallexample
f7dc1244 19071(@value{GDBP}) x 'cygwin1!__argv'
be448670
CF
190720x10021610: "\230y\""
19073@end smallexample
19074
19075And two possible solutions:
19076
19077@smallexample
f7dc1244 19078(@value{GDBP}) print ((char **)'cygwin1!__argv')[0]
be448670
CF
19079$2 = 0x22fd98 "/cygdrive/c/mydirectory/myprogram"
19080@end smallexample
19081
19082@smallexample
f7dc1244 19083(@value{GDBP}) x/2x &'cygwin1!__argv'
be448670 190840x610c0aa8 <cygwin1!__argv>: 0x10021608 0x00000000
f7dc1244 19085(@value{GDBP}) x/x 0x10021608
be448670 190860x10021608: 0x0022fd98
f7dc1244 19087(@value{GDBP}) x/s 0x0022fd98
be448670
CF
190880x22fd98: "/cygdrive/c/mydirectory/myprogram"
19089@end smallexample
19090
19091Setting a break point within a DLL is possible even before the program
19092starts execution. However, under these circumstances, @value{GDBN} can't
19093examine the initial instructions of the function in order to skip the
19094function's frame set-up code. You can work around this by using ``*&''
19095to set the breakpoint at a raw memory address:
19096
19097@smallexample
f7dc1244 19098(@value{GDBP}) break *&'python22!PyOS_Readline'
be448670
CF
19099Breakpoint 1 at 0x1e04eff0
19100@end smallexample
19101
19102The author of these extensions is not entirely convinced that setting a
19103break point within a shared DLL like @file{kernel32.dll} is completely
19104safe.
19105
14d6dd68 19106@node Hurd Native
79a6e687 19107@subsection Commands Specific to @sc{gnu} Hurd Systems
14d6dd68
EZ
19108@cindex @sc{gnu} Hurd debugging
19109
19110This subsection describes @value{GDBN} commands specific to the
19111@sc{gnu} Hurd native debugging.
19112
19113@table @code
19114@item set signals
19115@itemx set sigs
19116@kindex set signals@r{, Hurd command}
19117@kindex set sigs@r{, Hurd command}
19118This command toggles the state of inferior signal interception by
19119@value{GDBN}. Mach exceptions, such as breakpoint traps, are not
19120affected by this command. @code{sigs} is a shorthand alias for
19121@code{signals}.
19122
19123@item show signals
19124@itemx show sigs
19125@kindex show signals@r{, Hurd command}
19126@kindex show sigs@r{, Hurd command}
19127Show the current state of intercepting inferior's signals.
19128
19129@item set signal-thread
19130@itemx set sigthread
19131@kindex set signal-thread
19132@kindex set sigthread
19133This command tells @value{GDBN} which thread is the @code{libc} signal
19134thread. That thread is run when a signal is delivered to a running
19135process. @code{set sigthread} is the shorthand alias of @code{set
19136signal-thread}.
19137
19138@item show signal-thread
19139@itemx show sigthread
19140@kindex show signal-thread
19141@kindex show sigthread
19142These two commands show which thread will run when the inferior is
19143delivered a signal.
19144
19145@item set stopped
19146@kindex set stopped@r{, Hurd command}
19147This commands tells @value{GDBN} that the inferior process is stopped,
19148as with the @code{SIGSTOP} signal. The stopped process can be
19149continued by delivering a signal to it.
19150
19151@item show stopped
19152@kindex show stopped@r{, Hurd command}
19153This command shows whether @value{GDBN} thinks the debuggee is
19154stopped.
19155
19156@item set exceptions
19157@kindex set exceptions@r{, Hurd command}
19158Use this command to turn off trapping of exceptions in the inferior.
19159When exception trapping is off, neither breakpoints nor
19160single-stepping will work. To restore the default, set exception
19161trapping on.
19162
19163@item show exceptions
19164@kindex show exceptions@r{, Hurd command}
19165Show the current state of trapping exceptions in the inferior.
19166
19167@item set task pause
19168@kindex set task@r{, Hurd commands}
19169@cindex task attributes (@sc{gnu} Hurd)
19170@cindex pause current task (@sc{gnu} Hurd)
19171This command toggles task suspension when @value{GDBN} has control.
19172Setting it to on takes effect immediately, and the task is suspended
19173whenever @value{GDBN} gets control. Setting it to off will take
19174effect the next time the inferior is continued. If this option is set
19175to off, you can use @code{set thread default pause on} or @code{set
19176thread pause on} (see below) to pause individual threads.
19177
19178@item show task pause
19179@kindex show task@r{, Hurd commands}
19180Show the current state of task suspension.
19181
19182@item set task detach-suspend-count
19183@cindex task suspend count
19184@cindex detach from task, @sc{gnu} Hurd
19185This command sets the suspend count the task will be left with when
19186@value{GDBN} detaches from it.
19187
19188@item show task detach-suspend-count
19189Show the suspend count the task will be left with when detaching.
19190
19191@item set task exception-port
19192@itemx set task excp
19193@cindex task exception port, @sc{gnu} Hurd
19194This command sets the task exception port to which @value{GDBN} will
19195forward exceptions. The argument should be the value of the @dfn{send
19196rights} of the task. @code{set task excp} is a shorthand alias.
19197
19198@item set noninvasive
19199@cindex noninvasive task options
19200This command switches @value{GDBN} to a mode that is the least
19201invasive as far as interfering with the inferior is concerned. This
19202is the same as using @code{set task pause}, @code{set exceptions}, and
19203@code{set signals} to values opposite to the defaults.
19204
19205@item info send-rights
19206@itemx info receive-rights
19207@itemx info port-rights
19208@itemx info port-sets
19209@itemx info dead-names
19210@itemx info ports
19211@itemx info psets
19212@cindex send rights, @sc{gnu} Hurd
19213@cindex receive rights, @sc{gnu} Hurd
19214@cindex port rights, @sc{gnu} Hurd
19215@cindex port sets, @sc{gnu} Hurd
19216@cindex dead names, @sc{gnu} Hurd
19217These commands display information about, respectively, send rights,
19218receive rights, port rights, port sets, and dead names of a task.
19219There are also shorthand aliases: @code{info ports} for @code{info
19220port-rights} and @code{info psets} for @code{info port-sets}.
19221
19222@item set thread pause
19223@kindex set thread@r{, Hurd command}
19224@cindex thread properties, @sc{gnu} Hurd
19225@cindex pause current thread (@sc{gnu} Hurd)
19226This command toggles current thread suspension when @value{GDBN} has
19227control. Setting it to on takes effect immediately, and the current
19228thread is suspended whenever @value{GDBN} gets control. Setting it to
19229off will take effect the next time the inferior is continued.
19230Normally, this command has no effect, since when @value{GDBN} has
19231control, the whole task is suspended. However, if you used @code{set
19232task pause off} (see above), this command comes in handy to suspend
19233only the current thread.
19234
19235@item show thread pause
19236@kindex show thread@r{, Hurd command}
19237This command shows the state of current thread suspension.
19238
19239@item set thread run
d3e8051b 19240This command sets whether the current thread is allowed to run.
14d6dd68
EZ
19241
19242@item show thread run
19243Show whether the current thread is allowed to run.
19244
19245@item set thread detach-suspend-count
19246@cindex thread suspend count, @sc{gnu} Hurd
19247@cindex detach from thread, @sc{gnu} Hurd
19248This command sets the suspend count @value{GDBN} will leave on a
19249thread when detaching. This number is relative to the suspend count
19250found by @value{GDBN} when it notices the thread; use @code{set thread
19251takeover-suspend-count} to force it to an absolute value.
19252
19253@item show thread detach-suspend-count
19254Show the suspend count @value{GDBN} will leave on the thread when
19255detaching.
19256
19257@item set thread exception-port
19258@itemx set thread excp
19259Set the thread exception port to which to forward exceptions. This
19260overrides the port set by @code{set task exception-port} (see above).
19261@code{set thread excp} is the shorthand alias.
19262
19263@item set thread takeover-suspend-count
19264Normally, @value{GDBN}'s thread suspend counts are relative to the
19265value @value{GDBN} finds when it notices each thread. This command
19266changes the suspend counts to be absolute instead.
19267
19268@item set thread default
19269@itemx show thread default
19270@cindex thread default settings, @sc{gnu} Hurd
19271Each of the above @code{set thread} commands has a @code{set thread
19272default} counterpart (e.g., @code{set thread default pause}, @code{set
19273thread default exception-port}, etc.). The @code{thread default}
19274variety of commands sets the default thread properties for all
19275threads; you can then change the properties of individual threads with
19276the non-default commands.
19277@end table
19278
a80b95ba
TG
19279@node Darwin
19280@subsection Darwin
19281@cindex Darwin
19282
19283@value{GDBN} provides the following commands specific to the Darwin target:
19284
19285@table @code
19286@item set debug darwin @var{num}
19287@kindex set debug darwin
19288When set to a non zero value, enables debugging messages specific to
19289the Darwin support. Higher values produce more verbose output.
19290
19291@item show debug darwin
19292@kindex show debug darwin
19293Show the current state of Darwin messages.
19294
19295@item set debug mach-o @var{num}
19296@kindex set debug mach-o
19297When set to a non zero value, enables debugging messages while
19298@value{GDBN} is reading Darwin object files. (@dfn{Mach-O} is the
19299file format used on Darwin for object and executable files.) Higher
19300values produce more verbose output. This is a command to diagnose
19301problems internal to @value{GDBN} and should not be needed in normal
19302usage.
19303
19304@item show debug mach-o
19305@kindex show debug mach-o
19306Show the current state of Mach-O file messages.
19307
19308@item set mach-exceptions on
19309@itemx set mach-exceptions off
19310@kindex set mach-exceptions
19311On Darwin, faults are first reported as a Mach exception and are then
19312mapped to a Posix signal. Use this command to turn on trapping of
19313Mach exceptions in the inferior. This might be sometimes useful to
19314better understand the cause of a fault. The default is off.
19315
19316@item show mach-exceptions
19317@kindex show mach-exceptions
19318Show the current state of exceptions trapping.
19319@end table
19320
a64548ea 19321
8e04817f
AC
19322@node Embedded OS
19323@section Embedded Operating Systems
104c1213 19324
8e04817f
AC
19325This section describes configurations involving the debugging of
19326embedded operating systems that are available for several different
19327architectures.
d4f3574e 19328
8e04817f
AC
19329@menu
19330* VxWorks:: Using @value{GDBN} with VxWorks
19331@end menu
104c1213 19332
8e04817f
AC
19333@value{GDBN} includes the ability to debug programs running on
19334various real-time operating systems.
104c1213 19335
8e04817f
AC
19336@node VxWorks
19337@subsection Using @value{GDBN} with VxWorks
104c1213 19338
8e04817f 19339@cindex VxWorks
104c1213 19340
8e04817f 19341@table @code
104c1213 19342
8e04817f
AC
19343@kindex target vxworks
19344@item target vxworks @var{machinename}
19345A VxWorks system, attached via TCP/IP. The argument @var{machinename}
19346is the target system's machine name or IP address.
104c1213 19347
8e04817f 19348@end table
104c1213 19349
8e04817f
AC
19350On VxWorks, @code{load} links @var{filename} dynamically on the
19351current target system as well as adding its symbols in @value{GDBN}.
104c1213 19352
8e04817f
AC
19353@value{GDBN} enables developers to spawn and debug tasks running on networked
19354VxWorks targets from a Unix host. Already-running tasks spawned from
19355the VxWorks shell can also be debugged. @value{GDBN} uses code that runs on
19356both the Unix host and on the VxWorks target. The program
19357@code{@value{GDBP}} is installed and executed on the Unix host. (It may be
19358installed with the name @code{vxgdb}, to distinguish it from a
19359@value{GDBN} for debugging programs on the host itself.)
104c1213 19360
8e04817f
AC
19361@table @code
19362@item VxWorks-timeout @var{args}
19363@kindex vxworks-timeout
19364All VxWorks-based targets now support the option @code{vxworks-timeout}.
19365This option is set by the user, and @var{args} represents the number of
19366seconds @value{GDBN} waits for responses to rpc's. You might use this if
19367your VxWorks target is a slow software simulator or is on the far side
19368of a thin network line.
19369@end table
104c1213 19370
8e04817f
AC
19371The following information on connecting to VxWorks was current when
19372this manual was produced; newer releases of VxWorks may use revised
19373procedures.
104c1213 19374
4644b6e3 19375@findex INCLUDE_RDB
8e04817f
AC
19376To use @value{GDBN} with VxWorks, you must rebuild your VxWorks kernel
19377to include the remote debugging interface routines in the VxWorks
19378library @file{rdb.a}. To do this, define @code{INCLUDE_RDB} in the
19379VxWorks configuration file @file{configAll.h} and rebuild your VxWorks
19380kernel. The resulting kernel contains @file{rdb.a}, and spawns the
19381source debugging task @code{tRdbTask} when VxWorks is booted. For more
19382information on configuring and remaking VxWorks, see the manufacturer's
19383manual.
19384@c VxWorks, see the @cite{VxWorks Programmer's Guide}.
104c1213 19385
8e04817f
AC
19386Once you have included @file{rdb.a} in your VxWorks system image and set
19387your Unix execution search path to find @value{GDBN}, you are ready to
19388run @value{GDBN}. From your Unix host, run @code{@value{GDBP}} (or
19389@code{vxgdb}, depending on your installation).
104c1213 19390
8e04817f 19391@value{GDBN} comes up showing the prompt:
104c1213 19392
474c8240 19393@smallexample
8e04817f 19394(vxgdb)
474c8240 19395@end smallexample
104c1213 19396
8e04817f
AC
19397@menu
19398* VxWorks Connection:: Connecting to VxWorks
19399* VxWorks Download:: VxWorks download
19400* VxWorks Attach:: Running tasks
19401@end menu
104c1213 19402
8e04817f
AC
19403@node VxWorks Connection
19404@subsubsection Connecting to VxWorks
104c1213 19405
8e04817f
AC
19406The @value{GDBN} command @code{target} lets you connect to a VxWorks target on the
19407network. To connect to a target whose host name is ``@code{tt}'', type:
104c1213 19408
474c8240 19409@smallexample
8e04817f 19410(vxgdb) target vxworks tt
474c8240 19411@end smallexample
104c1213 19412
8e04817f
AC
19413@need 750
19414@value{GDBN} displays messages like these:
104c1213 19415
8e04817f
AC
19416@smallexample
19417Attaching remote machine across net...
19418Connected to tt.
19419@end smallexample
104c1213 19420
8e04817f
AC
19421@need 1000
19422@value{GDBN} then attempts to read the symbol tables of any object modules
19423loaded into the VxWorks target since it was last booted. @value{GDBN} locates
19424these files by searching the directories listed in the command search
79a6e687 19425path (@pxref{Environment, ,Your Program's Environment}); if it fails
8e04817f 19426to find an object file, it displays a message such as:
5d161b24 19427
474c8240 19428@smallexample
8e04817f 19429prog.o: No such file or directory.
474c8240 19430@end smallexample
104c1213 19431
8e04817f
AC
19432When this happens, add the appropriate directory to the search path with
19433the @value{GDBN} command @code{path}, and execute the @code{target}
19434command again.
104c1213 19435
8e04817f 19436@node VxWorks Download
79a6e687 19437@subsubsection VxWorks Download
104c1213 19438
8e04817f
AC
19439@cindex download to VxWorks
19440If you have connected to the VxWorks target and you want to debug an
19441object that has not yet been loaded, you can use the @value{GDBN}
19442@code{load} command to download a file from Unix to VxWorks
19443incrementally. The object file given as an argument to the @code{load}
19444command is actually opened twice: first by the VxWorks target in order
19445to download the code, then by @value{GDBN} in order to read the symbol
19446table. This can lead to problems if the current working directories on
19447the two systems differ. If both systems have NFS mounted the same
19448filesystems, you can avoid these problems by using absolute paths.
19449Otherwise, it is simplest to set the working directory on both systems
19450to the directory in which the object file resides, and then to reference
19451the file by its name, without any path. For instance, a program
19452@file{prog.o} may reside in @file{@var{vxpath}/vw/demo/rdb} in VxWorks
19453and in @file{@var{hostpath}/vw/demo/rdb} on the host. To load this
19454program, type this on VxWorks:
104c1213 19455
474c8240 19456@smallexample
8e04817f 19457-> cd "@var{vxpath}/vw/demo/rdb"
474c8240 19458@end smallexample
104c1213 19459
8e04817f
AC
19460@noindent
19461Then, in @value{GDBN}, type:
104c1213 19462
474c8240 19463@smallexample
8e04817f
AC
19464(vxgdb) cd @var{hostpath}/vw/demo/rdb
19465(vxgdb) load prog.o
474c8240 19466@end smallexample
104c1213 19467
8e04817f 19468@value{GDBN} displays a response similar to this:
104c1213 19469
8e04817f
AC
19470@smallexample
19471Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
19472@end smallexample
104c1213 19473
8e04817f
AC
19474You can also use the @code{load} command to reload an object module
19475after editing and recompiling the corresponding source file. Note that
19476this makes @value{GDBN} delete all currently-defined breakpoints,
19477auto-displays, and convenience variables, and to clear the value
19478history. (This is necessary in order to preserve the integrity of
19479debugger's data structures that reference the target system's symbol
19480table.)
104c1213 19481
8e04817f 19482@node VxWorks Attach
79a6e687 19483@subsubsection Running Tasks
104c1213
JM
19484
19485@cindex running VxWorks tasks
19486You can also attach to an existing task using the @code{attach} command as
19487follows:
19488
474c8240 19489@smallexample
104c1213 19490(vxgdb) attach @var{task}
474c8240 19491@end smallexample
104c1213
JM
19492
19493@noindent
19494where @var{task} is the VxWorks hexadecimal task ID. The task can be running
19495or suspended when you attach to it. Running tasks are suspended at
19496the time of attachment.
19497
6d2ebf8b 19498@node Embedded Processors
104c1213
JM
19499@section Embedded Processors
19500
19501This section goes into details specific to particular embedded
19502configurations.
19503
c45da7e6
EZ
19504@cindex send command to simulator
19505Whenever a specific embedded processor has a simulator, @value{GDBN}
19506allows to send an arbitrary command to the simulator.
19507
19508@table @code
19509@item sim @var{command}
19510@kindex sim@r{, a command}
19511Send an arbitrary @var{command} string to the simulator. Consult the
19512documentation for the specific simulator in use for information about
19513acceptable commands.
19514@end table
19515
7d86b5d5 19516
104c1213 19517@menu
c45da7e6 19518* ARM:: ARM RDI
172c2a43 19519* M32R/D:: Renesas M32R/D
104c1213 19520* M68K:: Motorola M68K
08be9d71 19521* MicroBlaze:: Xilinx MicroBlaze
104c1213 19522* MIPS Embedded:: MIPS Embedded
a37295f9 19523* OpenRISC 1000:: OpenRisc 1000
4acd40f3 19524* PowerPC Embedded:: PowerPC Embedded
984359d2 19525* PA:: HP PA Embedded
104c1213
JM
19526* Sparclet:: Tsqware Sparclet
19527* Sparclite:: Fujitsu Sparclite
104c1213 19528* Z8000:: Zilog Z8000
a64548ea
EZ
19529* AVR:: Atmel AVR
19530* CRIS:: CRIS
19531* Super-H:: Renesas Super-H
104c1213
JM
19532@end menu
19533
6d2ebf8b 19534@node ARM
104c1213 19535@subsection ARM
c45da7e6 19536@cindex ARM RDI
104c1213
JM
19537
19538@table @code
8e04817f
AC
19539@kindex target rdi
19540@item target rdi @var{dev}
19541ARM Angel monitor, via RDI library interface to ADP protocol. You may
19542use this target to communicate with both boards running the Angel
19543monitor, or with the EmbeddedICE JTAG debug device.
19544
19545@kindex target rdp
19546@item target rdp @var{dev}
19547ARM Demon monitor.
19548
19549@end table
19550
e2f4edfd
EZ
19551@value{GDBN} provides the following ARM-specific commands:
19552
19553@table @code
19554@item set arm disassembler
19555@kindex set arm
19556This commands selects from a list of disassembly styles. The
19557@code{"std"} style is the standard style.
19558
19559@item show arm disassembler
19560@kindex show arm
19561Show the current disassembly style.
19562
19563@item set arm apcs32
19564@cindex ARM 32-bit mode
19565This command toggles ARM operation mode between 32-bit and 26-bit.
19566
19567@item show arm apcs32
19568Display the current usage of the ARM 32-bit mode.
19569
19570@item set arm fpu @var{fputype}
19571This command sets the ARM floating-point unit (FPU) type. The
19572argument @var{fputype} can be one of these:
19573
19574@table @code
19575@item auto
19576Determine the FPU type by querying the OS ABI.
19577@item softfpa
19578Software FPU, with mixed-endian doubles on little-endian ARM
19579processors.
19580@item fpa
19581GCC-compiled FPA co-processor.
19582@item softvfp
19583Software FPU with pure-endian doubles.
19584@item vfp
19585VFP co-processor.
19586@end table
19587
19588@item show arm fpu
19589Show the current type of the FPU.
19590
19591@item set arm abi
19592This command forces @value{GDBN} to use the specified ABI.
19593
19594@item show arm abi
19595Show the currently used ABI.
19596
0428b8f5
DJ
19597@item set arm fallback-mode (arm|thumb|auto)
19598@value{GDBN} uses the symbol table, when available, to determine
19599whether instructions are ARM or Thumb. This command controls
19600@value{GDBN}'s default behavior when the symbol table is not
19601available. The default is @samp{auto}, which causes @value{GDBN} to
19602use the current execution mode (from the @code{T} bit in the @code{CPSR}
19603register).
19604
19605@item show arm fallback-mode
19606Show the current fallback instruction mode.
19607
19608@item set arm force-mode (arm|thumb|auto)
19609This command overrides use of the symbol table to determine whether
19610instructions are ARM or Thumb. The default is @samp{auto}, which
19611causes @value{GDBN} to use the symbol table and then the setting
19612of @samp{set arm fallback-mode}.
19613
19614@item show arm force-mode
19615Show the current forced instruction mode.
19616
e2f4edfd
EZ
19617@item set debug arm
19618Toggle whether to display ARM-specific debugging messages from the ARM
19619target support subsystem.
19620
19621@item show debug arm
19622Show whether ARM-specific debugging messages are enabled.
19623@end table
19624
c45da7e6
EZ
19625The following commands are available when an ARM target is debugged
19626using the RDI interface:
19627
19628@table @code
19629@item rdilogfile @r{[}@var{file}@r{]}
19630@kindex rdilogfile
19631@cindex ADP (Angel Debugger Protocol) logging
19632Set the filename for the ADP (Angel Debugger Protocol) packet log.
19633With an argument, sets the log file to the specified @var{file}. With
19634no argument, show the current log file name. The default log file is
19635@file{rdi.log}.
19636
19637@item rdilogenable @r{[}@var{arg}@r{]}
19638@kindex rdilogenable
19639Control logging of ADP packets. With an argument of 1 or @code{"yes"}
19640enables logging, with an argument 0 or @code{"no"} disables it. With
19641no arguments displays the current setting. When logging is enabled,
19642ADP packets exchanged between @value{GDBN} and the RDI target device
19643are logged to a file.
19644
19645@item set rdiromatzero
19646@kindex set rdiromatzero
19647@cindex ROM at zero address, RDI
19648Tell @value{GDBN} whether the target has ROM at address 0. If on,
19649vector catching is disabled, so that zero address can be used. If off
19650(the default), vector catching is enabled. For this command to take
19651effect, it needs to be invoked prior to the @code{target rdi} command.
19652
19653@item show rdiromatzero
19654@kindex show rdiromatzero
19655Show the current setting of ROM at zero address.
19656
19657@item set rdiheartbeat
19658@kindex set rdiheartbeat
19659@cindex RDI heartbeat
19660Enable or disable RDI heartbeat packets. It is not recommended to
19661turn on this option, since it confuses ARM and EPI JTAG interface, as
19662well as the Angel monitor.
19663
19664@item show rdiheartbeat
19665@kindex show rdiheartbeat
19666Show the setting of RDI heartbeat packets.
19667@end table
19668
ee8e71d4
EZ
19669@table @code
19670@item target sim @r{[}@var{simargs}@r{]} @dots{}
19671The @value{GDBN} ARM simulator accepts the following optional arguments.
19672
19673@table @code
19674@item --swi-support=@var{type}
19675Tell the simulator which SWI interfaces to support.
19676@var{type} may be a comma separated list of the following values.
19677The default value is @code{all}.
19678
19679@table @code
19680@item none
19681@item demon
19682@item angel
19683@item redboot
19684@item all
19685@end table
19686@end table
19687@end table
e2f4edfd 19688
8e04817f 19689@node M32R/D
ba04e063 19690@subsection Renesas M32R/D and M32R/SDI
8e04817f
AC
19691
19692@table @code
8e04817f
AC
19693@kindex target m32r
19694@item target m32r @var{dev}
172c2a43 19695Renesas M32R/D ROM monitor.
8e04817f 19696
fb3e19c0
KI
19697@kindex target m32rsdi
19698@item target m32rsdi @var{dev}
19699Renesas M32R SDI server, connected via parallel port to the board.
721c2651
EZ
19700@end table
19701
19702The following @value{GDBN} commands are specific to the M32R monitor:
19703
19704@table @code
19705@item set download-path @var{path}
19706@kindex set download-path
19707@cindex find downloadable @sc{srec} files (M32R)
d3e8051b 19708Set the default path for finding downloadable @sc{srec} files.
721c2651
EZ
19709
19710@item show download-path
19711@kindex show download-path
19712Show the default path for downloadable @sc{srec} files.
fb3e19c0 19713
721c2651
EZ
19714@item set board-address @var{addr}
19715@kindex set board-address
19716@cindex M32-EVA target board address
19717Set the IP address for the M32R-EVA target board.
19718
19719@item show board-address
19720@kindex show board-address
19721Show the current IP address of the target board.
19722
19723@item set server-address @var{addr}
19724@kindex set server-address
19725@cindex download server address (M32R)
19726Set the IP address for the download server, which is the @value{GDBN}'s
19727host machine.
19728
19729@item show server-address
19730@kindex show server-address
19731Display the IP address of the download server.
19732
19733@item upload @r{[}@var{file}@r{]}
19734@kindex upload@r{, M32R}
19735Upload the specified @sc{srec} @var{file} via the monitor's Ethernet
19736upload capability. If no @var{file} argument is given, the current
19737executable file is uploaded.
19738
19739@item tload @r{[}@var{file}@r{]}
19740@kindex tload@r{, M32R}
19741Test the @code{upload} command.
8e04817f
AC
19742@end table
19743
ba04e063
EZ
19744The following commands are available for M32R/SDI:
19745
19746@table @code
19747@item sdireset
19748@kindex sdireset
19749@cindex reset SDI connection, M32R
19750This command resets the SDI connection.
19751
19752@item sdistatus
19753@kindex sdistatus
19754This command shows the SDI connection status.
19755
19756@item debug_chaos
19757@kindex debug_chaos
19758@cindex M32R/Chaos debugging
19759Instructs the remote that M32R/Chaos debugging is to be used.
19760
19761@item use_debug_dma
19762@kindex use_debug_dma
19763Instructs the remote to use the DEBUG_DMA method of accessing memory.
19764
19765@item use_mon_code
19766@kindex use_mon_code
19767Instructs the remote to use the MON_CODE method of accessing memory.
19768
19769@item use_ib_break
19770@kindex use_ib_break
19771Instructs the remote to set breakpoints by IB break.
19772
19773@item use_dbt_break
19774@kindex use_dbt_break
19775Instructs the remote to set breakpoints by DBT.
19776@end table
19777
8e04817f
AC
19778@node M68K
19779@subsection M68k
19780
7ce59000
DJ
19781The Motorola m68k configuration includes ColdFire support, and a
19782target command for the following ROM monitor.
8e04817f
AC
19783
19784@table @code
19785
8e04817f
AC
19786@kindex target dbug
19787@item target dbug @var{dev}
19788dBUG ROM monitor for Motorola ColdFire.
19789
8e04817f
AC
19790@end table
19791
08be9d71
ME
19792@node MicroBlaze
19793@subsection MicroBlaze
19794@cindex Xilinx MicroBlaze
19795@cindex XMD, Xilinx Microprocessor Debugger
19796
19797The MicroBlaze is a soft-core processor supported on various Xilinx
19798FPGAs, such as Spartan or Virtex series. Boards with these processors
19799usually have JTAG ports which connect to a host system running the Xilinx
19800Embedded Development Kit (EDK) or Software Development Kit (SDK).
19801This host system is used to download the configuration bitstream to
19802the target FPGA. The Xilinx Microprocessor Debugger (XMD) program
19803communicates with the target board using the JTAG interface and
19804presents a @code{gdbserver} interface to the board. By default
19805@code{xmd} uses port @code{1234}. (While it is possible to change
19806this default port, it requires the use of undocumented @code{xmd}
19807commands. Contact Xilinx support if you need to do this.)
19808
19809Use these GDB commands to connect to the MicroBlaze target processor.
19810
19811@table @code
19812@item target remote :1234
19813Use this command to connect to the target if you are running @value{GDBN}
19814on the same system as @code{xmd}.
19815
19816@item target remote @var{xmd-host}:1234
19817Use this command to connect to the target if it is connected to @code{xmd}
19818running on a different system named @var{xmd-host}.
19819
19820@item load
19821Use this command to download a program to the MicroBlaze target.
19822
19823@item set debug microblaze @var{n}
19824Enable MicroBlaze-specific debugging messages if non-zero.
19825
19826@item show debug microblaze @var{n}
19827Show MicroBlaze-specific debugging level.
19828@end table
19829
8e04817f 19830@node MIPS Embedded
eb17f351 19831@subsection @acronym{MIPS} Embedded
8e04817f 19832
eb17f351
EZ
19833@cindex @acronym{MIPS} boards
19834@value{GDBN} can use the @acronym{MIPS} remote debugging protocol to talk to a
19835@acronym{MIPS} board attached to a serial line. This is available when
cc30c4bd 19836you configure @value{GDBN} with @samp{--target=mips-elf}.
104c1213 19837
8e04817f
AC
19838@need 1000
19839Use these @value{GDBN} commands to specify the connection to your target board:
104c1213 19840
8e04817f
AC
19841@table @code
19842@item target mips @var{port}
19843@kindex target mips @var{port}
19844To run a program on the board, start up @code{@value{GDBP}} with the
19845name of your program as the argument. To connect to the board, use the
19846command @samp{target mips @var{port}}, where @var{port} is the name of
19847the serial port connected to the board. If the program has not already
19848been downloaded to the board, you may use the @code{load} command to
19849download it. You can then use all the usual @value{GDBN} commands.
104c1213 19850
8e04817f
AC
19851For example, this sequence connects to the target board through a serial
19852port, and loads and runs a program called @var{prog} through the
19853debugger:
104c1213 19854
474c8240 19855@smallexample
8e04817f
AC
19856host$ @value{GDBP} @var{prog}
19857@value{GDBN} is free software and @dots{}
19858(@value{GDBP}) target mips /dev/ttyb
19859(@value{GDBP}) load @var{prog}
19860(@value{GDBP}) run
474c8240 19861@end smallexample
104c1213 19862
8e04817f
AC
19863@item target mips @var{hostname}:@var{portnumber}
19864On some @value{GDBN} host configurations, you can specify a TCP
19865connection (for instance, to a serial line managed by a terminal
19866concentrator) instead of a serial port, using the syntax
19867@samp{@var{hostname}:@var{portnumber}}.
104c1213 19868
8e04817f
AC
19869@item target pmon @var{port}
19870@kindex target pmon @var{port}
19871PMON ROM monitor.
104c1213 19872
8e04817f
AC
19873@item target ddb @var{port}
19874@kindex target ddb @var{port}
19875NEC's DDB variant of PMON for Vr4300.
104c1213 19876
8e04817f
AC
19877@item target lsi @var{port}
19878@kindex target lsi @var{port}
19879LSI variant of PMON.
104c1213 19880
8e04817f
AC
19881@kindex target r3900
19882@item target r3900 @var{dev}
19883Densan DVE-R3900 ROM monitor for Toshiba R3900 Mips.
104c1213 19884
8e04817f
AC
19885@kindex target array
19886@item target array @var{dev}
19887Array Tech LSI33K RAID controller board.
104c1213 19888
8e04817f 19889@end table
104c1213 19890
104c1213 19891
8e04817f 19892@noindent
eb17f351 19893@value{GDBN} also supports these special commands for @acronym{MIPS} targets:
104c1213 19894
8e04817f 19895@table @code
8e04817f
AC
19896@item set mipsfpu double
19897@itemx set mipsfpu single
19898@itemx set mipsfpu none
a64548ea 19899@itemx set mipsfpu auto
8e04817f
AC
19900@itemx show mipsfpu
19901@kindex set mipsfpu
19902@kindex show mipsfpu
eb17f351
EZ
19903@cindex @acronym{MIPS} remote floating point
19904@cindex floating point, @acronym{MIPS} remote
19905If your target board does not support the @acronym{MIPS} floating point
8e04817f
AC
19906coprocessor, you should use the command @samp{set mipsfpu none} (if you
19907need this, you may wish to put the command in your @value{GDBN} init
19908file). This tells @value{GDBN} how to find the return value of
19909functions which return floating point values. It also allows
19910@value{GDBN} to avoid saving the floating point registers when calling
19911functions on the board. If you are using a floating point coprocessor
19912with only single precision floating point support, as on the @sc{r4650}
19913processor, use the command @samp{set mipsfpu single}. The default
19914double precision floating point coprocessor may be selected using
19915@samp{set mipsfpu double}.
104c1213 19916
8e04817f
AC
19917In previous versions the only choices were double precision or no
19918floating point, so @samp{set mipsfpu on} will select double precision
19919and @samp{set mipsfpu off} will select no floating point.
104c1213 19920
8e04817f
AC
19921As usual, you can inquire about the @code{mipsfpu} variable with
19922@samp{show mipsfpu}.
104c1213 19923
8e04817f
AC
19924@item set timeout @var{seconds}
19925@itemx set retransmit-timeout @var{seconds}
19926@itemx show timeout
19927@itemx show retransmit-timeout
eb17f351
EZ
19928@cindex @code{timeout}, @acronym{MIPS} protocol
19929@cindex @code{retransmit-timeout}, @acronym{MIPS} protocol
8e04817f
AC
19930@kindex set timeout
19931@kindex show timeout
19932@kindex set retransmit-timeout
19933@kindex show retransmit-timeout
eb17f351 19934You can control the timeout used while waiting for a packet, in the @acronym{MIPS}
8e04817f
AC
19935remote protocol, with the @code{set timeout @var{seconds}} command. The
19936default is 5 seconds. Similarly, you can control the timeout used while
a6f3e723 19937waiting for an acknowledgment of a packet with the @code{set
8e04817f
AC
19938retransmit-timeout @var{seconds}} command. The default is 3 seconds.
19939You can inspect both values with @code{show timeout} and @code{show
19940retransmit-timeout}. (These commands are @emph{only} available when
cc30c4bd 19941@value{GDBN} is configured for @samp{--target=mips-elf}.)
104c1213 19942
8e04817f
AC
19943The timeout set by @code{set timeout} does not apply when @value{GDBN}
19944is waiting for your program to stop. In that case, @value{GDBN} waits
19945forever because it has no way of knowing how long the program is going
19946to run before stopping.
ba04e063
EZ
19947
19948@item set syn-garbage-limit @var{num}
eb17f351
EZ
19949@kindex set syn-garbage-limit@r{, @acronym{MIPS} remote}
19950@cindex synchronize with remote @acronym{MIPS} target
ba04e063
EZ
19951Limit the maximum number of characters @value{GDBN} should ignore when
19952it tries to synchronize with the remote target. The default is 10
19953characters. Setting the limit to -1 means there's no limit.
19954
19955@item show syn-garbage-limit
eb17f351 19956@kindex show syn-garbage-limit@r{, @acronym{MIPS} remote}
ba04e063
EZ
19957Show the current limit on the number of characters to ignore when
19958trying to synchronize with the remote system.
19959
19960@item set monitor-prompt @var{prompt}
eb17f351 19961@kindex set monitor-prompt@r{, @acronym{MIPS} remote}
ba04e063
EZ
19962@cindex remote monitor prompt
19963Tell @value{GDBN} to expect the specified @var{prompt} string from the
19964remote monitor. The default depends on the target:
19965@table @asis
19966@item pmon target
19967@samp{PMON}
19968@item ddb target
19969@samp{NEC010}
19970@item lsi target
19971@samp{PMON>}
19972@end table
19973
19974@item show monitor-prompt
eb17f351 19975@kindex show monitor-prompt@r{, @acronym{MIPS} remote}
ba04e063
EZ
19976Show the current strings @value{GDBN} expects as the prompt from the
19977remote monitor.
19978
19979@item set monitor-warnings
eb17f351 19980@kindex set monitor-warnings@r{, @acronym{MIPS} remote}
ba04e063
EZ
19981Enable or disable monitor warnings about hardware breakpoints. This
19982has effect only for the @code{lsi} target. When on, @value{GDBN} will
19983display warning messages whose codes are returned by the @code{lsi}
19984PMON monitor for breakpoint commands.
19985
19986@item show monitor-warnings
eb17f351 19987@kindex show monitor-warnings@r{, @acronym{MIPS} remote}
ba04e063
EZ
19988Show the current setting of printing monitor warnings.
19989
19990@item pmon @var{command}
eb17f351 19991@kindex pmon@r{, @acronym{MIPS} remote}
ba04e063
EZ
19992@cindex send PMON command
19993This command allows sending an arbitrary @var{command} string to the
19994monitor. The monitor must be in debug mode for this to work.
8e04817f 19995@end table
104c1213 19996
a37295f9
MM
19997@node OpenRISC 1000
19998@subsection OpenRISC 1000
19999@cindex OpenRISC 1000
20000
20001@cindex or1k boards
20002See OR1k Architecture document (@uref{www.opencores.org}) for more information
20003about platform and commands.
20004
20005@table @code
20006
20007@kindex target jtag
20008@item target jtag jtag://@var{host}:@var{port}
20009
20010Connects to remote JTAG server.
20011JTAG remote server can be either an or1ksim or JTAG server,
20012connected via parallel port to the board.
20013
20014Example: @code{target jtag jtag://localhost:9999}
20015
20016@kindex or1ksim
20017@item or1ksim @var{command}
20018If connected to @code{or1ksim} OpenRISC 1000 Architectural
20019Simulator, proprietary commands can be executed.
20020
20021@kindex info or1k spr
20022@item info or1k spr
20023Displays spr groups.
20024
20025@item info or1k spr @var{group}
20026@itemx info or1k spr @var{groupno}
20027Displays register names in selected group.
20028
20029@item info or1k spr @var{group} @var{register}
20030@itemx info or1k spr @var{register}
20031@itemx info or1k spr @var{groupno} @var{registerno}
20032@itemx info or1k spr @var{registerno}
20033Shows information about specified spr register.
20034
20035@kindex spr
20036@item spr @var{group} @var{register} @var{value}
20037@itemx spr @var{register @var{value}}
20038@itemx spr @var{groupno} @var{registerno @var{value}}
20039@itemx spr @var{registerno @var{value}}
20040Writes @var{value} to specified spr register.
20041@end table
20042
20043Some implementations of OpenRISC 1000 Architecture also have hardware trace.
20044It is very similar to @value{GDBN} trace, except it does not interfere with normal
20045program execution and is thus much faster. Hardware breakpoints/watchpoint
20046triggers can be set using:
20047@table @code
20048@item $LEA/$LDATA
20049Load effective address/data
20050@item $SEA/$SDATA
20051Store effective address/data
20052@item $AEA/$ADATA
20053Access effective address ($SEA or $LEA) or data ($SDATA/$LDATA)
20054@item $FETCH
20055Fetch data
20056@end table
20057
20058When triggered, it can capture low level data, like: @code{PC}, @code{LSEA},
20059@code{LDATA}, @code{SDATA}, @code{READSPR}, @code{WRITESPR}, @code{INSTR}.
20060
20061@code{htrace} commands:
20062@cindex OpenRISC 1000 htrace
20063@table @code
20064@kindex hwatch
20065@item hwatch @var{conditional}
d3e8051b 20066Set hardware watchpoint on combination of Load/Store Effective Address(es)
a37295f9
MM
20067or Data. For example:
20068
20069@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
20070
20071@code{hwatch ($LEA == my_var) && ($LDATA < 50) || ($SEA == my_var) && ($SDATA >= 50)}
20072
4644b6e3 20073@kindex htrace
a37295f9
MM
20074@item htrace info
20075Display information about current HW trace configuration.
20076
a37295f9
MM
20077@item htrace trigger @var{conditional}
20078Set starting criteria for HW trace.
20079
a37295f9
MM
20080@item htrace qualifier @var{conditional}
20081Set acquisition qualifier for HW trace.
20082
a37295f9
MM
20083@item htrace stop @var{conditional}
20084Set HW trace stopping criteria.
20085
f153cc92 20086@item htrace record [@var{data}]*
a37295f9
MM
20087Selects the data to be recorded, when qualifier is met and HW trace was
20088triggered.
20089
a37295f9 20090@item htrace enable
a37295f9
MM
20091@itemx htrace disable
20092Enables/disables the HW trace.
20093
f153cc92 20094@item htrace rewind [@var{filename}]
a37295f9
MM
20095Clears currently recorded trace data.
20096
20097If filename is specified, new trace file is made and any newly collected data
20098will be written there.
20099
f153cc92 20100@item htrace print [@var{start} [@var{len}]]
a37295f9
MM
20101Prints trace buffer, using current record configuration.
20102
a37295f9
MM
20103@item htrace mode continuous
20104Set continuous trace mode.
20105
a37295f9
MM
20106@item htrace mode suspend
20107Set suspend trace mode.
20108
20109@end table
20110
4acd40f3
TJB
20111@node PowerPC Embedded
20112@subsection PowerPC Embedded
104c1213 20113
66b73624
TJB
20114@cindex DVC register
20115@value{GDBN} supports using the DVC (Data Value Compare) register to
20116implement in hardware simple hardware watchpoint conditions of the form:
20117
20118@smallexample
20119(@value{GDBP}) watch @var{ADDRESS|VARIABLE} \
20120 if @var{ADDRESS|VARIABLE} == @var{CONSTANT EXPRESSION}
20121@end smallexample
20122
e09342b5
TJB
20123The DVC register will be automatically used when @value{GDBN} detects
20124such pattern in a condition expression, and the created watchpoint uses one
20125debug register (either the @code{exact-watchpoints} option is on and the
20126variable is scalar, or the variable has a length of one byte). This feature
20127is available in native @value{GDBN} running on a Linux kernel version 2.6.34
20128or newer.
20129
20130When running on PowerPC embedded processors, @value{GDBN} automatically uses
20131ranged hardware watchpoints, unless the @code{exact-watchpoints} option is on,
20132in which case watchpoints using only one debug register are created when
20133watching variables of scalar types.
20134
20135You can create an artificial array to watch an arbitrary memory
20136region using one of the following commands (@pxref{Expressions}):
20137
20138@smallexample
20139(@value{GDBP}) watch *((char *) @var{address})@@@var{length}
20140(@value{GDBP}) watch @{char[@var{length}]@} @var{address}
20141@end smallexample
66b73624 20142
9c06b0b4
TJB
20143PowerPC embedded processors support masked watchpoints. See the discussion
20144about the @code{mask} argument in @ref{Set Watchpoints}.
20145
f1310107
TJB
20146@cindex ranged breakpoint
20147PowerPC embedded processors support hardware accelerated
20148@dfn{ranged breakpoints}. A ranged breakpoint stops execution of
20149the inferior whenever it executes an instruction at any address within
20150the range it specifies. To set a ranged breakpoint in @value{GDBN},
20151use the @code{break-range} command.
20152
55eddb0f
DJ
20153@value{GDBN} provides the following PowerPC-specific commands:
20154
104c1213 20155@table @code
f1310107
TJB
20156@kindex break-range
20157@item break-range @var{start-location}, @var{end-location}
20158Set a breakpoint for an address range.
20159@var{start-location} and @var{end-location} can specify a function name,
20160a line number, an offset of lines from the current line or from the start
20161location, or an address of an instruction (see @ref{Specify Location},
20162for a list of all the possible ways to specify a @var{location}.)
20163The breakpoint will stop execution of the inferior whenever it
20164executes an instruction at any address within the specified range,
20165(including @var{start-location} and @var{end-location}.)
20166
55eddb0f
DJ
20167@kindex set powerpc
20168@item set powerpc soft-float
20169@itemx show powerpc soft-float
20170Force @value{GDBN} to use (or not use) a software floating point calling
20171convention. By default, @value{GDBN} selects the calling convention based
20172on the selected architecture and the provided executable file.
20173
20174@item set powerpc vector-abi
20175@itemx show powerpc vector-abi
20176Force @value{GDBN} to use the specified calling convention for vector
20177arguments and return values. The valid options are @samp{auto};
20178@samp{generic}, to avoid vector registers even if they are present;
20179@samp{altivec}, to use AltiVec registers; and @samp{spe} to use SPE
20180registers. By default, @value{GDBN} selects the calling convention
20181based on the selected architecture and the provided executable file.
20182
e09342b5
TJB
20183@item set powerpc exact-watchpoints
20184@itemx show powerpc exact-watchpoints
20185Allow @value{GDBN} to use only one debug register when watching a variable
20186of scalar type, thus assuming that the variable is accessed through the
20187address of its first byte.
20188
8e04817f
AC
20189@kindex target dink32
20190@item target dink32 @var{dev}
20191DINK32 ROM monitor.
104c1213 20192
8e04817f
AC
20193@kindex target ppcbug
20194@item target ppcbug @var{dev}
20195@kindex target ppcbug1
20196@item target ppcbug1 @var{dev}
20197PPCBUG ROM monitor for PowerPC.
104c1213 20198
8e04817f
AC
20199@kindex target sds
20200@item target sds @var{dev}
20201SDS monitor, running on a PowerPC board (such as Motorola's ADS).
c45da7e6 20202@end table
8e04817f 20203
c45da7e6 20204@cindex SDS protocol
d52fb0e9 20205The following commands specific to the SDS protocol are supported
55eddb0f 20206by @value{GDBN}:
c45da7e6
EZ
20207
20208@table @code
20209@item set sdstimeout @var{nsec}
20210@kindex set sdstimeout
20211Set the timeout for SDS protocol reads to be @var{nsec} seconds. The
20212default is 2 seconds.
20213
20214@item show sdstimeout
20215@kindex show sdstimeout
20216Show the current value of the SDS timeout.
20217
20218@item sds @var{command}
20219@kindex sds@r{, a command}
20220Send the specified @var{command} string to the SDS monitor.
8e04817f
AC
20221@end table
20222
c45da7e6 20223
8e04817f
AC
20224@node PA
20225@subsection HP PA Embedded
104c1213
JM
20226
20227@table @code
20228
8e04817f
AC
20229@kindex target op50n
20230@item target op50n @var{dev}
20231OP50N monitor, running on an OKI HPPA board.
20232
20233@kindex target w89k
20234@item target w89k @var{dev}
20235W89K monitor, running on a Winbond HPPA board.
104c1213
JM
20236
20237@end table
20238
8e04817f
AC
20239@node Sparclet
20240@subsection Tsqware Sparclet
104c1213 20241
8e04817f
AC
20242@cindex Sparclet
20243
20244@value{GDBN} enables developers to debug tasks running on
20245Sparclet targets from a Unix host.
20246@value{GDBN} uses code that runs on
20247both the Unix host and on the Sparclet target. The program
20248@code{@value{GDBP}} is installed and executed on the Unix host.
104c1213 20249
8e04817f
AC
20250@table @code
20251@item remotetimeout @var{args}
20252@kindex remotetimeout
20253@value{GDBN} supports the option @code{remotetimeout}.
20254This option is set by the user, and @var{args} represents the number of
20255seconds @value{GDBN} waits for responses.
104c1213
JM
20256@end table
20257
8e04817f
AC
20258@cindex compiling, on Sparclet
20259When compiling for debugging, include the options @samp{-g} to get debug
20260information and @samp{-Ttext} to relocate the program to where you wish to
20261load it on the target. You may also want to add the options @samp{-n} or
20262@samp{-N} in order to reduce the size of the sections. Example:
104c1213 20263
474c8240 20264@smallexample
8e04817f 20265sparclet-aout-gcc prog.c -Ttext 0x12010000 -g -o prog -N
474c8240 20266@end smallexample
104c1213 20267
8e04817f 20268You can use @code{objdump} to verify that the addresses are what you intended:
104c1213 20269
474c8240 20270@smallexample
8e04817f 20271sparclet-aout-objdump --headers --syms prog
474c8240 20272@end smallexample
104c1213 20273
8e04817f
AC
20274@cindex running, on Sparclet
20275Once you have set
20276your Unix execution search path to find @value{GDBN}, you are ready to
20277run @value{GDBN}. From your Unix host, run @code{@value{GDBP}}
20278(or @code{sparclet-aout-gdb}, depending on your installation).
104c1213 20279
8e04817f
AC
20280@value{GDBN} comes up showing the prompt:
20281
474c8240 20282@smallexample
8e04817f 20283(gdbslet)
474c8240 20284@end smallexample
104c1213
JM
20285
20286@menu
8e04817f
AC
20287* Sparclet File:: Setting the file to debug
20288* Sparclet Connection:: Connecting to Sparclet
20289* Sparclet Download:: Sparclet download
20290* Sparclet Execution:: Running and debugging
104c1213
JM
20291@end menu
20292
8e04817f 20293@node Sparclet File
79a6e687 20294@subsubsection Setting File to Debug
104c1213 20295
8e04817f 20296The @value{GDBN} command @code{file} lets you choose with program to debug.
104c1213 20297
474c8240 20298@smallexample
8e04817f 20299(gdbslet) file prog
474c8240 20300@end smallexample
104c1213 20301
8e04817f
AC
20302@need 1000
20303@value{GDBN} then attempts to read the symbol table of @file{prog}.
20304@value{GDBN} locates
20305the file by searching the directories listed in the command search
20306path.
12c27660 20307If the file was compiled with debug information (option @samp{-g}), source
8e04817f
AC
20308files will be searched as well.
20309@value{GDBN} locates
20310the source files by searching the directories listed in the directory search
79a6e687 20311path (@pxref{Environment, ,Your Program's Environment}).
8e04817f
AC
20312If it fails
20313to find a file, it displays a message such as:
104c1213 20314
474c8240 20315@smallexample
8e04817f 20316prog: No such file or directory.
474c8240 20317@end smallexample
104c1213 20318
8e04817f
AC
20319When this happens, add the appropriate directories to the search paths with
20320the @value{GDBN} commands @code{path} and @code{dir}, and execute the
20321@code{target} command again.
104c1213 20322
8e04817f
AC
20323@node Sparclet Connection
20324@subsubsection Connecting to Sparclet
104c1213 20325
8e04817f
AC
20326The @value{GDBN} command @code{target} lets you connect to a Sparclet target.
20327To connect to a target on serial port ``@code{ttya}'', type:
104c1213 20328
474c8240 20329@smallexample
8e04817f
AC
20330(gdbslet) target sparclet /dev/ttya
20331Remote target sparclet connected to /dev/ttya
20332main () at ../prog.c:3
474c8240 20333@end smallexample
104c1213 20334
8e04817f
AC
20335@need 750
20336@value{GDBN} displays messages like these:
104c1213 20337
474c8240 20338@smallexample
8e04817f 20339Connected to ttya.
474c8240 20340@end smallexample
104c1213 20341
8e04817f 20342@node Sparclet Download
79a6e687 20343@subsubsection Sparclet Download
104c1213 20344
8e04817f
AC
20345@cindex download to Sparclet
20346Once connected to the Sparclet target,
20347you can use the @value{GDBN}
20348@code{load} command to download the file from the host to the target.
20349The file name and load offset should be given as arguments to the @code{load}
20350command.
20351Since the file format is aout, the program must be loaded to the starting
20352address. You can use @code{objdump} to find out what this value is. The load
20353offset is an offset which is added to the VMA (virtual memory address)
20354of each of the file's sections.
20355For instance, if the program
20356@file{prog} was linked to text address 0x1201000, with data at 0x12010160
20357and bss at 0x12010170, in @value{GDBN}, type:
104c1213 20358
474c8240 20359@smallexample
8e04817f
AC
20360(gdbslet) load prog 0x12010000
20361Loading section .text, size 0xdb0 vma 0x12010000
474c8240 20362@end smallexample
104c1213 20363
8e04817f
AC
20364If the code is loaded at a different address then what the program was linked
20365to, you may need to use the @code{section} and @code{add-symbol-file} commands
20366to tell @value{GDBN} where to map the symbol table.
20367
20368@node Sparclet Execution
79a6e687 20369@subsubsection Running and Debugging
8e04817f
AC
20370
20371@cindex running and debugging Sparclet programs
20372You can now begin debugging the task using @value{GDBN}'s execution control
20373commands, @code{b}, @code{step}, @code{run}, etc. See the @value{GDBN}
20374manual for the list of commands.
20375
474c8240 20376@smallexample
8e04817f
AC
20377(gdbslet) b main
20378Breakpoint 1 at 0x12010000: file prog.c, line 3.
20379(gdbslet) run
20380Starting program: prog
20381Breakpoint 1, main (argc=1, argv=0xeffff21c) at prog.c:3
203823 char *symarg = 0;
20383(gdbslet) step
203844 char *execarg = "hello!";
20385(gdbslet)
474c8240 20386@end smallexample
8e04817f
AC
20387
20388@node Sparclite
20389@subsection Fujitsu Sparclite
104c1213
JM
20390
20391@table @code
20392
8e04817f
AC
20393@kindex target sparclite
20394@item target sparclite @var{dev}
20395Fujitsu sparclite boards, used only for the purpose of loading.
20396You must use an additional command to debug the program.
20397For example: target remote @var{dev} using @value{GDBN} standard
20398remote protocol.
104c1213
JM
20399
20400@end table
20401
8e04817f
AC
20402@node Z8000
20403@subsection Zilog Z8000
104c1213 20404
8e04817f
AC
20405@cindex Z8000
20406@cindex simulator, Z8000
20407@cindex Zilog Z8000 simulator
104c1213 20408
8e04817f
AC
20409When configured for debugging Zilog Z8000 targets, @value{GDBN} includes
20410a Z8000 simulator.
20411
20412For the Z8000 family, @samp{target sim} simulates either the Z8002 (the
20413unsegmented variant of the Z8000 architecture) or the Z8001 (the
20414segmented variant). The simulator recognizes which architecture is
20415appropriate by inspecting the object code.
104c1213 20416
8e04817f
AC
20417@table @code
20418@item target sim @var{args}
20419@kindex sim
20420@kindex target sim@r{, with Z8000}
20421Debug programs on a simulated CPU. If the simulator supports setup
20422options, specify them via @var{args}.
104c1213
JM
20423@end table
20424
8e04817f
AC
20425@noindent
20426After specifying this target, you can debug programs for the simulated
20427CPU in the same style as programs for your host computer; use the
20428@code{file} command to load a new program image, the @code{run} command
20429to run your program, and so on.
20430
20431As well as making available all the usual machine registers
20432(@pxref{Registers, ,Registers}), the Z8000 simulator provides three
20433additional items of information as specially named registers:
104c1213
JM
20434
20435@table @code
20436
8e04817f
AC
20437@item cycles
20438Counts clock-ticks in the simulator.
104c1213 20439
8e04817f
AC
20440@item insts
20441Counts instructions run in the simulator.
104c1213 20442
8e04817f
AC
20443@item time
20444Execution time in 60ths of a second.
104c1213 20445
8e04817f 20446@end table
104c1213 20447
8e04817f
AC
20448You can refer to these values in @value{GDBN} expressions with the usual
20449conventions; for example, @w{@samp{b fputc if $cycles>5000}} sets a
20450conditional breakpoint that suspends only after at least 5000
20451simulated clock ticks.
104c1213 20452
a64548ea
EZ
20453@node AVR
20454@subsection Atmel AVR
20455@cindex AVR
20456
20457When configured for debugging the Atmel AVR, @value{GDBN} supports the
20458following AVR-specific commands:
20459
20460@table @code
20461@item info io_registers
20462@kindex info io_registers@r{, AVR}
20463@cindex I/O registers (Atmel AVR)
20464This command displays information about the AVR I/O registers. For
20465each register, @value{GDBN} prints its number and value.
20466@end table
20467
20468@node CRIS
20469@subsection CRIS
20470@cindex CRIS
20471
20472When configured for debugging CRIS, @value{GDBN} provides the
20473following CRIS-specific commands:
20474
20475@table @code
20476@item set cris-version @var{ver}
20477@cindex CRIS version
e22e55c9
OF
20478Set the current CRIS version to @var{ver}, either @samp{10} or @samp{32}.
20479The CRIS version affects register names and sizes. This command is useful in
20480case autodetection of the CRIS version fails.
a64548ea
EZ
20481
20482@item show cris-version
20483Show the current CRIS version.
20484
20485@item set cris-dwarf2-cfi
20486@cindex DWARF-2 CFI and CRIS
e22e55c9
OF
20487Set the usage of DWARF-2 CFI for CRIS debugging. The default is @samp{on}.
20488Change to @samp{off} when using @code{gcc-cris} whose version is below
20489@code{R59}.
a64548ea
EZ
20490
20491@item show cris-dwarf2-cfi
20492Show the current state of using DWARF-2 CFI.
e22e55c9
OF
20493
20494@item set cris-mode @var{mode}
20495@cindex CRIS mode
20496Set the current CRIS mode to @var{mode}. It should only be changed when
20497debugging in guru mode, in which case it should be set to
20498@samp{guru} (the default is @samp{normal}).
20499
20500@item show cris-mode
20501Show the current CRIS mode.
a64548ea
EZ
20502@end table
20503
20504@node Super-H
20505@subsection Renesas Super-H
20506@cindex Super-H
20507
20508For the Renesas Super-H processor, @value{GDBN} provides these
20509commands:
20510
20511@table @code
20512@item regs
20513@kindex regs@r{, Super-H}
2d4c29c5
TS
20514This command is deprecated, and @code{info all-registers} should be
20515used instead.
20516
a64548ea 20517Show the values of all Super-H registers.
c055b101
CV
20518
20519@item set sh calling-convention @var{convention}
20520@kindex set sh calling-convention
20521Set the calling-convention used when calling functions from @value{GDBN}.
20522Allowed values are @samp{gcc}, which is the default setting, and @samp{renesas}.
20523With the @samp{gcc} setting, functions are called using the @value{NGCC} calling
20524convention. If the DWARF-2 information of the called function specifies
20525that the function follows the Renesas calling convention, the function
20526is called using the Renesas calling convention. If the calling convention
20527is set to @samp{renesas}, the Renesas calling convention is always used,
20528regardless of the DWARF-2 information. This can be used to override the
20529default of @samp{gcc} if debug information is missing, or the compiler
20530does not emit the DWARF-2 calling convention entry for a function.
20531
20532@item show sh calling-convention
20533@kindex show sh calling-convention
20534Show the current calling convention setting.
20535
a64548ea
EZ
20536@end table
20537
20538
8e04817f
AC
20539@node Architectures
20540@section Architectures
104c1213 20541
8e04817f
AC
20542This section describes characteristics of architectures that affect
20543all uses of @value{GDBN} with the architecture, both native and cross.
104c1213 20544
8e04817f 20545@menu
9c16f35a 20546* i386::
8e04817f
AC
20547* Alpha::
20548* MIPS::
a64548ea 20549* HPPA:: HP PA architecture
23d964e7 20550* SPU:: Cell Broadband Engine SPU architecture
4acd40f3 20551* PowerPC::
8e04817f 20552@end menu
104c1213 20553
9c16f35a 20554@node i386
db2e3e2e 20555@subsection x86 Architecture-specific Issues
9c16f35a
EZ
20556
20557@table @code
20558@item set struct-convention @var{mode}
20559@kindex set struct-convention
20560@cindex struct return convention
20561@cindex struct/union returned in registers
20562Set the convention used by the inferior to return @code{struct}s and
20563@code{union}s from functions to @var{mode}. Possible values of
20564@var{mode} are @code{"pcc"}, @code{"reg"}, and @code{"default"} (the
20565default). @code{"default"} or @code{"pcc"} means that @code{struct}s
20566are returned on the stack, while @code{"reg"} means that a
20567@code{struct} or a @code{union} whose size is 1, 2, 4, or 8 bytes will
20568be returned in a register.
20569
20570@item show struct-convention
20571@kindex show struct-convention
20572Show the current setting of the convention to return @code{struct}s
20573from functions.
20574@end table
20575
8e04817f
AC
20576@node Alpha
20577@subsection Alpha
104c1213 20578
8e04817f 20579See the following section.
104c1213 20580
8e04817f 20581@node MIPS
eb17f351 20582@subsection @acronym{MIPS}
104c1213 20583
8e04817f 20584@cindex stack on Alpha
eb17f351 20585@cindex stack on @acronym{MIPS}
8e04817f 20586@cindex Alpha stack
eb17f351
EZ
20587@cindex @acronym{MIPS} stack
20588Alpha- and @acronym{MIPS}-based computers use an unusual stack frame, which
8e04817f
AC
20589sometimes requires @value{GDBN} to search backward in the object code to
20590find the beginning of a function.
104c1213 20591
eb17f351 20592@cindex response time, @acronym{MIPS} debugging
8e04817f
AC
20593To improve response time (especially for embedded applications, where
20594@value{GDBN} may be restricted to a slow serial line for this search)
20595you may want to limit the size of this search, using one of these
20596commands:
104c1213 20597
8e04817f 20598@table @code
eb17f351 20599@cindex @code{heuristic-fence-post} (Alpha, @acronym{MIPS})
8e04817f
AC
20600@item set heuristic-fence-post @var{limit}
20601Restrict @value{GDBN} to examining at most @var{limit} bytes in its
20602search for the beginning of a function. A value of @var{0} (the
20603default) means there is no limit. However, except for @var{0}, the
20604larger the limit the more bytes @code{heuristic-fence-post} must search
e2f4edfd
EZ
20605and therefore the longer it takes to run. You should only need to use
20606this command when debugging a stripped executable.
104c1213 20607
8e04817f
AC
20608@item show heuristic-fence-post
20609Display the current limit.
20610@end table
104c1213
JM
20611
20612@noindent
8e04817f 20613These commands are available @emph{only} when @value{GDBN} is configured
eb17f351 20614for debugging programs on Alpha or @acronym{MIPS} processors.
104c1213 20615
eb17f351 20616Several @acronym{MIPS}-specific commands are available when debugging @acronym{MIPS}
a64548ea
EZ
20617programs:
20618
20619@table @code
a64548ea
EZ
20620@item set mips abi @var{arg}
20621@kindex set mips abi
eb17f351
EZ
20622@cindex set ABI for @acronym{MIPS}
20623Tell @value{GDBN} which @acronym{MIPS} ABI is used by the inferior. Possible
a64548ea
EZ
20624values of @var{arg} are:
20625
20626@table @samp
20627@item auto
20628The default ABI associated with the current binary (this is the
20629default).
20630@item o32
20631@item o64
20632@item n32
20633@item n64
20634@item eabi32
20635@item eabi64
a64548ea
EZ
20636@end table
20637
20638@item show mips abi
20639@kindex show mips abi
eb17f351 20640Show the @acronym{MIPS} ABI used by @value{GDBN} to debug the inferior.
a64548ea 20641
4cc0665f
MR
20642@item set mips compression @var{arg}
20643@kindex set mips compression
20644@cindex code compression, @acronym{MIPS}
20645Tell @value{GDBN} which @acronym{MIPS} compressed
20646@acronym{ISA, Instruction Set Architecture} encoding is used by the
20647inferior. @value{GDBN} uses this for code disassembly and other
20648internal interpretation purposes. This setting is only referred to
20649when no executable has been associated with the debugging session or
20650the executable does not provide information about the encoding it uses.
20651Otherwise this setting is automatically updated from information
20652provided by the executable.
20653
20654Possible values of @var{arg} are @samp{mips16} and @samp{micromips}.
20655The default compressed @acronym{ISA} encoding is @samp{mips16}, as
20656executables containing @acronym{MIPS16} code frequently are not
20657identified as such.
20658
20659This setting is ``sticky''; that is, it retains its value across
20660debugging sessions until reset either explicitly with this command or
20661implicitly from an executable.
20662
20663The compiler and/or assembler typically add symbol table annotations to
20664identify functions compiled for the @acronym{MIPS16} or
20665@acronym{microMIPS} @acronym{ISA}s. If these function-scope annotations
20666are present, @value{GDBN} uses them in preference to the global
20667compressed @acronym{ISA} encoding setting.
20668
20669@item show mips compression
20670@kindex show mips compression
20671Show the @acronym{MIPS} compressed @acronym{ISA} encoding used by
20672@value{GDBN} to debug the inferior.
20673
a64548ea
EZ
20674@item set mipsfpu
20675@itemx show mipsfpu
20676@xref{MIPS Embedded, set mipsfpu}.
20677
20678@item set mips mask-address @var{arg}
20679@kindex set mips mask-address
eb17f351 20680@cindex @acronym{MIPS} addresses, masking
a64548ea 20681This command determines whether the most-significant 32 bits of 64-bit
eb17f351 20682@acronym{MIPS} addresses are masked off. The argument @var{arg} can be
a64548ea
EZ
20683@samp{on}, @samp{off}, or @samp{auto}. The latter is the default
20684setting, which lets @value{GDBN} determine the correct value.
20685
20686@item show mips mask-address
20687@kindex show mips mask-address
eb17f351 20688Show whether the upper 32 bits of @acronym{MIPS} addresses are masked off or
a64548ea
EZ
20689not.
20690
20691@item set remote-mips64-transfers-32bit-regs
20692@kindex set remote-mips64-transfers-32bit-regs
eb17f351
EZ
20693This command controls compatibility with 64-bit @acronym{MIPS} targets that
20694transfer data in 32-bit quantities. If you have an old @acronym{MIPS} 64 target
a64548ea
EZ
20695that transfers 32 bits for some registers, like @sc{sr} and @sc{fsr},
20696and 64 bits for other registers, set this option to @samp{on}.
20697
20698@item show remote-mips64-transfers-32bit-regs
20699@kindex show remote-mips64-transfers-32bit-regs
eb17f351 20700Show the current setting of compatibility with older @acronym{MIPS} 64 targets.
a64548ea
EZ
20701
20702@item set debug mips
20703@kindex set debug mips
eb17f351 20704This command turns on and off debugging messages for the @acronym{MIPS}-specific
a64548ea
EZ
20705target code in @value{GDBN}.
20706
20707@item show debug mips
20708@kindex show debug mips
eb17f351 20709Show the current setting of @acronym{MIPS} debugging messages.
a64548ea
EZ
20710@end table
20711
20712
20713@node HPPA
20714@subsection HPPA
20715@cindex HPPA support
20716
d3e8051b 20717When @value{GDBN} is debugging the HP PA architecture, it provides the
a64548ea
EZ
20718following special commands:
20719
20720@table @code
20721@item set debug hppa
20722@kindex set debug hppa
db2e3e2e 20723This command determines whether HPPA architecture-specific debugging
a64548ea
EZ
20724messages are to be displayed.
20725
20726@item show debug hppa
20727Show whether HPPA debugging messages are displayed.
20728
20729@item maint print unwind @var{address}
20730@kindex maint print unwind@r{, HPPA}
20731This command displays the contents of the unwind table entry at the
20732given @var{address}.
20733
20734@end table
20735
104c1213 20736
23d964e7
UW
20737@node SPU
20738@subsection Cell Broadband Engine SPU architecture
20739@cindex Cell Broadband Engine
20740@cindex SPU
20741
20742When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
20743it provides the following special commands:
20744
20745@table @code
20746@item info spu event
20747@kindex info spu
20748Display SPU event facility status. Shows current event mask
20749and pending event status.
20750
20751@item info spu signal
20752Display SPU signal notification facility status. Shows pending
20753signal-control word and signal notification mode of both signal
20754notification channels.
20755
20756@item info spu mailbox
20757Display SPU mailbox facility status. Shows all pending entries,
20758in order of processing, in each of the SPU Write Outbound,
20759SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
20760
20761@item info spu dma
20762Display MFC DMA status. Shows all pending commands in the MFC
20763DMA queue. For each entry, opcode, tag, class IDs, effective
20764and local store addresses and transfer size are shown.
20765
20766@item info spu proxydma
20767Display MFC Proxy-DMA status. Shows all pending commands in the MFC
20768Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
20769and local store addresses and transfer size are shown.
20770
20771@end table
20772
3285f3fe
UW
20773When @value{GDBN} is debugging a combined PowerPC/SPU application
20774on the Cell Broadband Engine, it provides in addition the following
20775special commands:
20776
20777@table @code
20778@item set spu stop-on-load @var{arg}
20779@kindex set spu
20780Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN}
20781will give control to the user when a new SPE thread enters its @code{main}
20782function. The default is @code{off}.
20783
20784@item show spu stop-on-load
20785@kindex show spu
20786Show whether to stop for new SPE threads.
20787
ff1a52c6
UW
20788@item set spu auto-flush-cache @var{arg}
20789Set whether to automatically flush the software-managed cache. When set to
20790@code{on}, @value{GDBN} will automatically cause the SPE software-managed
20791cache to be flushed whenever SPE execution stops. This provides a consistent
20792view of PowerPC memory that is accessed via the cache. If an application
20793does not use the software-managed cache, this option has no effect.
20794
20795@item show spu auto-flush-cache
20796Show whether to automatically flush the software-managed cache.
20797
3285f3fe
UW
20798@end table
20799
4acd40f3
TJB
20800@node PowerPC
20801@subsection PowerPC
20802@cindex PowerPC architecture
20803
20804When @value{GDBN} is debugging the PowerPC architecture, it provides a set of
20805pseudo-registers to enable inspection of 128-bit wide Decimal Floating Point
20806numbers stored in the floating point registers. These values must be stored
20807in two consecutive registers, always starting at an even register like
20808@code{f0} or @code{f2}.
20809
20810The pseudo-registers go from @code{$dl0} through @code{$dl15}, and are formed
20811by joining the even/odd register pairs @code{f0} and @code{f1} for @code{$dl0},
20812@code{f2} and @code{f3} for @code{$dl1} and so on.
20813
aeac0ff9 20814For POWER7 processors, @value{GDBN} provides a set of pseudo-registers, the 64-bit
677c5bb1
LM
20815wide Extended Floating Point Registers (@samp{f32} through @samp{f63}).
20816
23d964e7 20817
8e04817f
AC
20818@node Controlling GDB
20819@chapter Controlling @value{GDBN}
20820
20821You can alter the way @value{GDBN} interacts with you by using the
20822@code{set} command. For commands controlling how @value{GDBN} displays
79a6e687 20823data, see @ref{Print Settings, ,Print Settings}. Other settings are
8e04817f
AC
20824described here.
20825
20826@menu
20827* Prompt:: Prompt
20828* Editing:: Command editing
d620b259 20829* Command History:: Command history
8e04817f
AC
20830* Screen Size:: Screen size
20831* Numbers:: Numbers
1e698235 20832* ABI:: Configuring the current ABI
bf88dd68 20833* Auto-loading:: Automatically loading associated files
8e04817f
AC
20834* Messages/Warnings:: Optional warnings and messages
20835* Debugging Output:: Optional messages about internal happenings
14fb1bac 20836* Other Misc Settings:: Other Miscellaneous Settings
8e04817f
AC
20837@end menu
20838
20839@node Prompt
20840@section Prompt
104c1213 20841
8e04817f 20842@cindex prompt
104c1213 20843
8e04817f
AC
20844@value{GDBN} indicates its readiness to read a command by printing a string
20845called the @dfn{prompt}. This string is normally @samp{(@value{GDBP})}. You
20846can change the prompt string with the @code{set prompt} command. For
20847instance, when debugging @value{GDBN} with @value{GDBN}, it is useful to change
20848the prompt in one of the @value{GDBN} sessions so that you can always tell
20849which one you are talking to.
104c1213 20850
8e04817f
AC
20851@emph{Note:} @code{set prompt} does not add a space for you after the
20852prompt you set. This allows you to set a prompt which ends in a space
20853or a prompt that does not.
104c1213 20854
8e04817f
AC
20855@table @code
20856@kindex set prompt
20857@item set prompt @var{newprompt}
20858Directs @value{GDBN} to use @var{newprompt} as its prompt string henceforth.
104c1213 20859
8e04817f
AC
20860@kindex show prompt
20861@item show prompt
20862Prints a line of the form: @samp{Gdb's prompt is: @var{your-prompt}}
104c1213
JM
20863@end table
20864
fa3a4f15
PM
20865Versions of @value{GDBN} that ship with Python scripting enabled have
20866prompt extensions. The commands for interacting with these extensions
20867are:
20868
20869@table @code
20870@kindex set extended-prompt
20871@item set extended-prompt @var{prompt}
20872Set an extended prompt that allows for substitutions.
20873@xref{gdb.prompt}, for a list of escape sequences that can be used for
20874substitution. Any escape sequences specified as part of the prompt
20875string are replaced with the corresponding strings each time the prompt
20876is displayed.
20877
20878For example:
20879
20880@smallexample
20881set extended-prompt Current working directory: \w (gdb)
20882@end smallexample
20883
20884Note that when an extended-prompt is set, it takes control of the
20885@var{prompt_hook} hook. @xref{prompt_hook}, for further information.
20886
20887@kindex show extended-prompt
20888@item show extended-prompt
20889Prints the extended prompt. Any escape sequences specified as part of
20890the prompt string with @code{set extended-prompt}, are replaced with the
20891corresponding strings each time the prompt is displayed.
20892@end table
20893
8e04817f 20894@node Editing
79a6e687 20895@section Command Editing
8e04817f
AC
20896@cindex readline
20897@cindex command line editing
104c1213 20898
703663ab 20899@value{GDBN} reads its input commands via the @dfn{Readline} interface. This
8e04817f
AC
20900@sc{gnu} library provides consistent behavior for programs which provide a
20901command line interface to the user. Advantages are @sc{gnu} Emacs-style
20902or @dfn{vi}-style inline editing of commands, @code{csh}-like history
20903substitution, and a storage and recall of command history across
20904debugging sessions.
104c1213 20905
8e04817f
AC
20906You may control the behavior of command line editing in @value{GDBN} with the
20907command @code{set}.
104c1213 20908
8e04817f
AC
20909@table @code
20910@kindex set editing
20911@cindex editing
20912@item set editing
20913@itemx set editing on
20914Enable command line editing (enabled by default).
104c1213 20915
8e04817f
AC
20916@item set editing off
20917Disable command line editing.
104c1213 20918
8e04817f
AC
20919@kindex show editing
20920@item show editing
20921Show whether command line editing is enabled.
104c1213
JM
20922@end table
20923
39037522
TT
20924@ifset SYSTEM_READLINE
20925@xref{Command Line Editing, , , rluserman, GNU Readline Library},
20926@end ifset
20927@ifclear SYSTEM_READLINE
20928@xref{Command Line Editing},
20929@end ifclear
20930for more details about the Readline
703663ab
EZ
20931interface. Users unfamiliar with @sc{gnu} Emacs or @code{vi} are
20932encouraged to read that chapter.
20933
d620b259 20934@node Command History
79a6e687 20935@section Command History
703663ab 20936@cindex command history
8e04817f
AC
20937
20938@value{GDBN} can keep track of the commands you type during your
20939debugging sessions, so that you can be certain of precisely what
20940happened. Use these commands to manage the @value{GDBN} command
20941history facility.
104c1213 20942
703663ab 20943@value{GDBN} uses the @sc{gnu} History library, a part of the Readline
39037522
TT
20944package, to provide the history facility.
20945@ifset SYSTEM_READLINE
20946@xref{Using History Interactively, , , history, GNU History Library},
20947@end ifset
20948@ifclear SYSTEM_READLINE
20949@xref{Using History Interactively},
20950@end ifclear
20951for the detailed description of the History library.
703663ab 20952
d620b259 20953To issue a command to @value{GDBN} without affecting certain aspects of
9e6c4bd5
NR
20954the state which is seen by users, prefix it with @samp{server }
20955(@pxref{Server Prefix}). This
d620b259
NR
20956means that this command will not affect the command history, nor will it
20957affect @value{GDBN}'s notion of which command to repeat if @key{RET} is
20958pressed on a line by itself.
20959
20960@cindex @code{server}, command prefix
20961The server prefix does not affect the recording of values into the value
20962history; to print a value without recording it into the value history,
20963use the @code{output} command instead of the @code{print} command.
20964
703663ab
EZ
20965Here is the description of @value{GDBN} commands related to command
20966history.
20967
104c1213 20968@table @code
8e04817f
AC
20969@cindex history substitution
20970@cindex history file
20971@kindex set history filename
4644b6e3 20972@cindex @env{GDBHISTFILE}, environment variable
8e04817f
AC
20973@item set history filename @var{fname}
20974Set the name of the @value{GDBN} command history file to @var{fname}.
20975This is the file where @value{GDBN} reads an initial command history
20976list, and where it writes the command history from this session when it
20977exits. You can access this list through history expansion or through
20978the history command editing characters listed below. This file defaults
20979to the value of the environment variable @code{GDBHISTFILE}, or to
20980@file{./.gdb_history} (@file{./_gdb_history} on MS-DOS) if this variable
20981is not set.
104c1213 20982
9c16f35a
EZ
20983@cindex save command history
20984@kindex set history save
8e04817f
AC
20985@item set history save
20986@itemx set history save on
20987Record command history in a file, whose name may be specified with the
20988@code{set history filename} command. By default, this option is disabled.
104c1213 20989
8e04817f
AC
20990@item set history save off
20991Stop recording command history in a file.
104c1213 20992
8e04817f 20993@cindex history size
9c16f35a 20994@kindex set history size
6fc08d32 20995@cindex @env{HISTSIZE}, environment variable
8e04817f
AC
20996@item set history size @var{size}
20997Set the number of commands which @value{GDBN} keeps in its history list.
20998This defaults to the value of the environment variable
20999@code{HISTSIZE}, or to 256 if this variable is not set.
104c1213
JM
21000@end table
21001
8e04817f 21002History expansion assigns special meaning to the character @kbd{!}.
39037522
TT
21003@ifset SYSTEM_READLINE
21004@xref{Event Designators, , , history, GNU History Library},
21005@end ifset
21006@ifclear SYSTEM_READLINE
21007@xref{Event Designators},
21008@end ifclear
21009for more details.
8e04817f 21010
703663ab 21011@cindex history expansion, turn on/off
8e04817f
AC
21012Since @kbd{!} is also the logical not operator in C, history expansion
21013is off by default. If you decide to enable history expansion with the
21014@code{set history expansion on} command, you may sometimes need to
21015follow @kbd{!} (when it is used as logical not, in an expression) with
21016a space or a tab to prevent it from being expanded. The readline
21017history facilities do not attempt substitution on the strings
21018@kbd{!=} and @kbd{!(}, even when history expansion is enabled.
21019
21020The commands to control history expansion are:
104c1213
JM
21021
21022@table @code
8e04817f
AC
21023@item set history expansion on
21024@itemx set history expansion
703663ab 21025@kindex set history expansion
8e04817f 21026Enable history expansion. History expansion is off by default.
104c1213 21027
8e04817f
AC
21028@item set history expansion off
21029Disable history expansion.
104c1213 21030
8e04817f
AC
21031@c @group
21032@kindex show history
21033@item show history
21034@itemx show history filename
21035@itemx show history save
21036@itemx show history size
21037@itemx show history expansion
21038These commands display the state of the @value{GDBN} history parameters.
21039@code{show history} by itself displays all four states.
21040@c @end group
21041@end table
21042
21043@table @code
9c16f35a
EZ
21044@kindex show commands
21045@cindex show last commands
21046@cindex display command history
8e04817f
AC
21047@item show commands
21048Display the last ten commands in the command history.
104c1213 21049
8e04817f
AC
21050@item show commands @var{n}
21051Print ten commands centered on command number @var{n}.
21052
21053@item show commands +
21054Print ten commands just after the commands last printed.
104c1213
JM
21055@end table
21056
8e04817f 21057@node Screen Size
79a6e687 21058@section Screen Size
8e04817f
AC
21059@cindex size of screen
21060@cindex pauses in output
104c1213 21061
8e04817f
AC
21062Certain commands to @value{GDBN} may produce large amounts of
21063information output to the screen. To help you read all of it,
21064@value{GDBN} pauses and asks you for input at the end of each page of
21065output. Type @key{RET} when you want to continue the output, or @kbd{q}
21066to discard the remaining output. Also, the screen width setting
21067determines when to wrap lines of output. Depending on what is being
21068printed, @value{GDBN} tries to break the line at a readable place,
21069rather than simply letting it overflow onto the following line.
21070
21071Normally @value{GDBN} knows the size of the screen from the terminal
21072driver software. For example, on Unix @value{GDBN} uses the termcap data base
21073together with the value of the @code{TERM} environment variable and the
21074@code{stty rows} and @code{stty cols} settings. If this is not correct,
21075you can override it with the @code{set height} and @code{set
21076width} commands:
21077
21078@table @code
21079@kindex set height
21080@kindex set width
21081@kindex show width
21082@kindex show height
21083@item set height @var{lpp}
21084@itemx show height
21085@itemx set width @var{cpl}
21086@itemx show width
21087These @code{set} commands specify a screen height of @var{lpp} lines and
21088a screen width of @var{cpl} characters. The associated @code{show}
21089commands display the current settings.
104c1213 21090
8e04817f
AC
21091If you specify a height of zero lines, @value{GDBN} does not pause during
21092output no matter how long the output is. This is useful if output is to a
21093file or to an editor buffer.
104c1213 21094
8e04817f
AC
21095Likewise, you can specify @samp{set width 0} to prevent @value{GDBN}
21096from wrapping its output.
9c16f35a
EZ
21097
21098@item set pagination on
21099@itemx set pagination off
21100@kindex set pagination
21101Turn the output pagination on or off; the default is on. Turning
7c953934
TT
21102pagination off is the alternative to @code{set height 0}. Note that
21103running @value{GDBN} with the @option{--batch} option (@pxref{Mode
21104Options, -batch}) also automatically disables pagination.
9c16f35a
EZ
21105
21106@item show pagination
21107@kindex show pagination
21108Show the current pagination mode.
104c1213
JM
21109@end table
21110
8e04817f
AC
21111@node Numbers
21112@section Numbers
21113@cindex number representation
21114@cindex entering numbers
104c1213 21115
8e04817f
AC
21116You can always enter numbers in octal, decimal, or hexadecimal in
21117@value{GDBN} by the usual conventions: octal numbers begin with
21118@samp{0}, decimal numbers end with @samp{.}, and hexadecimal numbers
eb2dae08
EZ
21119begin with @samp{0x}. Numbers that neither begin with @samp{0} or
21120@samp{0x}, nor end with a @samp{.} are, by default, entered in base
2112110; likewise, the default display for numbers---when no particular
21122format is specified---is base 10. You can change the default base for
21123both input and output with the commands described below.
104c1213 21124
8e04817f
AC
21125@table @code
21126@kindex set input-radix
21127@item set input-radix @var{base}
21128Set the default base for numeric input. Supported choices
21129for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 21130specified either unambiguously or using the current input radix; for
8e04817f 21131example, any of
104c1213 21132
8e04817f 21133@smallexample
9c16f35a
EZ
21134set input-radix 012
21135set input-radix 10.
21136set input-radix 0xa
8e04817f 21137@end smallexample
104c1213 21138
8e04817f 21139@noindent
9c16f35a 21140sets the input base to decimal. On the other hand, @samp{set input-radix 10}
eb2dae08
EZ
21141leaves the input radix unchanged, no matter what it was, since
21142@samp{10}, being without any leading or trailing signs of its base, is
21143interpreted in the current radix. Thus, if the current radix is 16,
21144@samp{10} is interpreted in hex, i.e.@: as 16 decimal, which doesn't
21145change the radix.
104c1213 21146
8e04817f
AC
21147@kindex set output-radix
21148@item set output-radix @var{base}
21149Set the default base for numeric display. Supported choices
21150for @var{base} are decimal 8, 10, or 16. @var{base} must itself be
eb2dae08 21151specified either unambiguously or using the current input radix.
104c1213 21152
8e04817f
AC
21153@kindex show input-radix
21154@item show input-radix
21155Display the current default base for numeric input.
104c1213 21156
8e04817f
AC
21157@kindex show output-radix
21158@item show output-radix
21159Display the current default base for numeric display.
9c16f35a
EZ
21160
21161@item set radix @r{[}@var{base}@r{]}
21162@itemx show radix
21163@kindex set radix
21164@kindex show radix
21165These commands set and show the default base for both input and output
21166of numbers. @code{set radix} sets the radix of input and output to
21167the same base; without an argument, it resets the radix back to its
21168default value of 10.
21169
8e04817f 21170@end table
104c1213 21171
1e698235 21172@node ABI
79a6e687 21173@section Configuring the Current ABI
1e698235
DJ
21174
21175@value{GDBN} can determine the @dfn{ABI} (Application Binary Interface) of your
21176application automatically. However, sometimes you need to override its
21177conclusions. Use these commands to manage @value{GDBN}'s view of the
21178current ABI.
21179
98b45e30
DJ
21180@cindex OS ABI
21181@kindex set osabi
b4e9345d 21182@kindex show osabi
98b45e30
DJ
21183
21184One @value{GDBN} configuration can debug binaries for multiple operating
b383017d 21185system targets, either via remote debugging or native emulation.
98b45e30
DJ
21186@value{GDBN} will autodetect the @dfn{OS ABI} (Operating System ABI) in use,
21187but you can override its conclusion using the @code{set osabi} command.
21188One example where this is useful is in debugging of binaries which use
21189an alternate C library (e.g.@: @sc{uClibc} for @sc{gnu}/Linux) which does
21190not have the same identifying marks that the standard C library for your
21191platform provides.
21192
21193@table @code
21194@item show osabi
21195Show the OS ABI currently in use.
21196
21197@item set osabi
21198With no argument, show the list of registered available OS ABI's.
21199
21200@item set osabi @var{abi}
21201Set the current OS ABI to @var{abi}.
21202@end table
21203
1e698235 21204@cindex float promotion
1e698235
DJ
21205
21206Generally, the way that an argument of type @code{float} is passed to a
21207function depends on whether the function is prototyped. For a prototyped
21208(i.e.@: ANSI/ISO style) function, @code{float} arguments are passed unchanged,
21209according to the architecture's convention for @code{float}. For unprototyped
21210(i.e.@: K&R style) functions, @code{float} arguments are first promoted to type
21211@code{double} and then passed.
21212
21213Unfortunately, some forms of debug information do not reliably indicate whether
21214a function is prototyped. If @value{GDBN} calls a function that is not marked
21215as prototyped, it consults @kbd{set coerce-float-to-double}.
21216
21217@table @code
a8f24a35 21218@kindex set coerce-float-to-double
1e698235
DJ
21219@item set coerce-float-to-double
21220@itemx set coerce-float-to-double on
21221Arguments of type @code{float} will be promoted to @code{double} when passed
21222to an unprototyped function. This is the default setting.
21223
21224@item set coerce-float-to-double off
21225Arguments of type @code{float} will be passed directly to unprototyped
21226functions.
9c16f35a
EZ
21227
21228@kindex show coerce-float-to-double
21229@item show coerce-float-to-double
21230Show the current setting of promoting @code{float} to @code{double}.
1e698235
DJ
21231@end table
21232
f1212245
DJ
21233@kindex set cp-abi
21234@kindex show cp-abi
21235@value{GDBN} needs to know the ABI used for your program's C@t{++}
21236objects. The correct C@t{++} ABI depends on which C@t{++} compiler was
21237used to build your application. @value{GDBN} only fully supports
21238programs with a single C@t{++} ABI; if your program contains code using
21239multiple C@t{++} ABI's or if @value{GDBN} can not identify your
21240program's ABI correctly, you can tell @value{GDBN} which ABI to use.
21241Currently supported ABI's include ``gnu-v2'', for @code{g++} versions
21242before 3.0, ``gnu-v3'', for @code{g++} versions 3.0 and later, and
21243``hpaCC'' for the HP ANSI C@t{++} compiler. Other C@t{++} compilers may
21244use the ``gnu-v2'' or ``gnu-v3'' ABI's as well. The default setting is
21245``auto''.
21246
21247@table @code
21248@item show cp-abi
21249Show the C@t{++} ABI currently in use.
21250
21251@item set cp-abi
21252With no argument, show the list of supported C@t{++} ABI's.
21253
21254@item set cp-abi @var{abi}
21255@itemx set cp-abi auto
21256Set the current C@t{++} ABI to @var{abi}, or return to automatic detection.
21257@end table
21258
bf88dd68
JK
21259@node Auto-loading
21260@section Automatically loading associated files
21261@cindex auto-loading
21262
21263@value{GDBN} sometimes reads files with commands and settings automatically,
21264without being explicitly told so by the user. We call this feature
21265@dfn{auto-loading}. While auto-loading is useful for automatically adapting
21266@value{GDBN} to the needs of your project, it can sometimes produce unexpected
21267results or introduce security risks (e.g., if the file comes from untrusted
21268sources).
21269
c1668e4e
JK
21270Note that loading of these associated files (including the local @file{.gdbinit}
21271file) requires accordingly configured @code{auto-load safe-path}
21272(@pxref{Auto-loading safe path}).
21273
bf88dd68
JK
21274For these reasons, @value{GDBN} includes commands and options to let you
21275control when to auto-load files and which files should be auto-loaded.
21276
21277@table @code
21278@anchor{set auto-load off}
21279@kindex set auto-load off
21280@item set auto-load off
21281Globally disable loading of all auto-loaded files.
21282You may want to use this command with the @samp{-iex} option
21283(@pxref{Option -init-eval-command}) such as:
21284@smallexample
21285$ @kbd{gdb -iex "set auto-load off" untrusted-executable corefile}
21286@end smallexample
21287
21288Be aware that system init file (@pxref{System-wide configuration})
21289and init files from your home directory (@pxref{Home Directory Init File})
21290still get read (as they come from generally trusted directories).
21291To prevent @value{GDBN} from auto-loading even those init files, use the
21292@option{-nx} option (@pxref{Mode Options}), in addition to
21293@code{set auto-load no}.
21294
21295@anchor{show auto-load}
21296@kindex show auto-load
21297@item show auto-load
21298Show whether auto-loading of each specific @samp{auto-load} file(s) is enabled
21299or disabled.
21300
21301@smallexample
21302(gdb) show auto-load
21303gdb-scripts: Auto-loading of canned sequences of commands scripts is on.
21304libthread-db: Auto-loading of inferior specific libthread_db is on.
1ccacbcd
JK
21305local-gdbinit: Auto-loading of .gdbinit script from current directory
21306 is on.
bf88dd68 21307python-scripts: Auto-loading of Python scripts is on.
bccbefd2 21308safe-path: List of directories from which it is safe to auto-load files
1564a261 21309 is $debugdir:$datadir/auto-load.
7349ff92 21310scripts-directory: List of directories from which to load auto-loaded scripts
1564a261 21311 is $debugdir:$datadir/auto-load.
bf88dd68
JK
21312@end smallexample
21313
21314@anchor{info auto-load}
21315@kindex info auto-load
21316@item info auto-load
21317Print whether each specific @samp{auto-load} file(s) have been auto-loaded or
21318not.
21319
21320@smallexample
21321(gdb) info auto-load
21322gdb-scripts:
21323Loaded Script
21324Yes /home/user/gdb/gdb-gdb.gdb
21325libthread-db: No auto-loaded libthread-db.
1ccacbcd
JK
21326local-gdbinit: Local .gdbinit file "/home/user/gdb/.gdbinit" has been
21327 loaded.
bf88dd68
JK
21328python-scripts:
21329Loaded Script
21330Yes /home/user/gdb/gdb-gdb.py
21331@end smallexample
21332@end table
21333
21334These are various kinds of files @value{GDBN} can automatically load:
21335
21336@itemize @bullet
21337@item
21338@xref{objfile-gdb.py file}, controlled by @ref{set auto-load python-scripts}.
21339@item
21340@xref{objfile-gdb.gdb file}, controlled by @ref{set auto-load gdb-scripts}.
21341@item
21342@xref{dotdebug_gdb_scripts section},
21343controlled by @ref{set auto-load python-scripts}.
21344@item
21345@xref{Init File in the Current Directory},
21346controlled by @ref{set auto-load local-gdbinit}.
21347@item
21348@xref{libthread_db.so.1 file}, controlled by @ref{set auto-load libthread-db}.
21349@end itemize
21350
21351These are @value{GDBN} control commands for the auto-loading:
21352
21353@multitable @columnfractions .5 .5
21354@item @xref{set auto-load off}.
21355@tab Disable auto-loading globally.
21356@item @xref{show auto-load}.
21357@tab Show setting of all kinds of files.
21358@item @xref{info auto-load}.
21359@tab Show state of all kinds of files.
21360@item @xref{set auto-load gdb-scripts}.
21361@tab Control for @value{GDBN} command scripts.
21362@item @xref{show auto-load gdb-scripts}.
21363@tab Show setting of @value{GDBN} command scripts.
21364@item @xref{info auto-load gdb-scripts}.
21365@tab Show state of @value{GDBN} command scripts.
21366@item @xref{set auto-load python-scripts}.
21367@tab Control for @value{GDBN} Python scripts.
21368@item @xref{show auto-load python-scripts}.
21369@tab Show setting of @value{GDBN} Python scripts.
21370@item @xref{info auto-load python-scripts}.
21371@tab Show state of @value{GDBN} Python scripts.
7349ff92
JK
21372@item @xref{set auto-load scripts-directory}.
21373@tab Control for @value{GDBN} auto-loaded scripts location.
21374@item @xref{show auto-load scripts-directory}.
21375@tab Show @value{GDBN} auto-loaded scripts location.
bf88dd68
JK
21376@item @xref{set auto-load local-gdbinit}.
21377@tab Control for init file in the current directory.
21378@item @xref{show auto-load local-gdbinit}.
21379@tab Show setting of init file in the current directory.
21380@item @xref{info auto-load local-gdbinit}.
21381@tab Show state of init file in the current directory.
21382@item @xref{set auto-load libthread-db}.
21383@tab Control for thread debugging library.
21384@item @xref{show auto-load libthread-db}.
21385@tab Show setting of thread debugging library.
21386@item @xref{info auto-load libthread-db}.
21387@tab Show state of thread debugging library.
bccbefd2
JK
21388@item @xref{set auto-load safe-path}.
21389@tab Control directories trusted for automatic loading.
21390@item @xref{show auto-load safe-path}.
21391@tab Show directories trusted for automatic loading.
21392@item @xref{add-auto-load-safe-path}.
21393@tab Add directory trusted for automatic loading.
bf88dd68
JK
21394@end multitable
21395
21396@menu
21397* Init File in the Current Directory:: @samp{set/show/info auto-load local-gdbinit}
21398* libthread_db.so.1 file:: @samp{set/show/info auto-load libthread-db}
21399* objfile-gdb.gdb file:: @samp{set/show/info auto-load gdb-script}
bccbefd2 21400* Auto-loading safe path:: @samp{set/show/info auto-load safe-path}
4dc84fd1 21401* Auto-loading verbose mode:: @samp{set/show debug auto-load}
bf88dd68
JK
21402@xref{Python Auto-loading}.
21403@end menu
21404
21405@node Init File in the Current Directory
21406@subsection Automatically loading init file in the current directory
21407@cindex auto-loading init file in the current directory
21408
21409By default, @value{GDBN} reads and executes the canned sequences of commands
21410from init file (if any) in the current working directory,
21411see @ref{Init File in the Current Directory during Startup}.
21412
c1668e4e
JK
21413Note that loading of this local @file{.gdbinit} file also requires accordingly
21414configured @code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21415
bf88dd68
JK
21416@table @code
21417@anchor{set auto-load local-gdbinit}
21418@kindex set auto-load local-gdbinit
21419@item set auto-load local-gdbinit [on|off]
21420Enable or disable the auto-loading of canned sequences of commands
21421(@pxref{Sequences}) found in init file in the current directory.
21422
21423@anchor{show auto-load local-gdbinit}
21424@kindex show auto-load local-gdbinit
21425@item show auto-load local-gdbinit
21426Show whether auto-loading of canned sequences of commands from init file in the
21427current directory is enabled or disabled.
21428
21429@anchor{info auto-load local-gdbinit}
21430@kindex info auto-load local-gdbinit
21431@item info auto-load local-gdbinit
21432Print whether canned sequences of commands from init file in the
21433current directory have been auto-loaded.
21434@end table
21435
21436@node libthread_db.so.1 file
21437@subsection Automatically loading thread debugging library
21438@cindex auto-loading libthread_db.so.1
21439
21440This feature is currently present only on @sc{gnu}/Linux native hosts.
21441
21442@value{GDBN} reads in some cases thread debugging library from places specific
21443to the inferior (@pxref{set libthread-db-search-path}).
21444
21445The special @samp{libthread-db-search-path} entry @samp{$sdir} is processed
21446without checking this @samp{set auto-load libthread-db} switch as system
21447libraries have to be trusted in general. In all other cases of
21448@samp{libthread-db-search-path} entries @value{GDBN} checks first if @samp{set
21449auto-load libthread-db} is enabled before trying to open such thread debugging
21450library.
21451
c1668e4e
JK
21452Note that loading of this debugging library also requires accordingly configured
21453@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21454
bf88dd68
JK
21455@table @code
21456@anchor{set auto-load libthread-db}
21457@kindex set auto-load libthread-db
21458@item set auto-load libthread-db [on|off]
21459Enable or disable the auto-loading of inferior specific thread debugging library.
21460
21461@anchor{show auto-load libthread-db}
21462@kindex show auto-load libthread-db
21463@item show auto-load libthread-db
21464Show whether auto-loading of inferior specific thread debugging library is
21465enabled or disabled.
21466
21467@anchor{info auto-load libthread-db}
21468@kindex info auto-load libthread-db
21469@item info auto-load libthread-db
21470Print the list of all loaded inferior specific thread debugging libraries and
21471for each such library print list of inferior @var{pid}s using it.
21472@end table
21473
21474@node objfile-gdb.gdb file
21475@subsection The @file{@var{objfile}-gdb.gdb} file
21476@cindex auto-loading @file{@var{objfile}-gdb.gdb}
21477
21478@value{GDBN} tries to load an @file{@var{objfile}-gdb.gdb} file containing
21479canned sequences of commands (@pxref{Sequences}), as long as @samp{set
21480auto-load gdb-scripts} is set to @samp{on}.
21481
c1668e4e
JK
21482Note that loading of this script file also requires accordingly configured
21483@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
21484
bf88dd68
JK
21485For more background refer to the similar Python scripts auto-loading
21486description (@pxref{objfile-gdb.py file}).
21487
21488@table @code
21489@anchor{set auto-load gdb-scripts}
21490@kindex set auto-load gdb-scripts
21491@item set auto-load gdb-scripts [on|off]
21492Enable or disable the auto-loading of canned sequences of commands scripts.
21493
21494@anchor{show auto-load gdb-scripts}
21495@kindex show auto-load gdb-scripts
21496@item show auto-load gdb-scripts
21497Show whether auto-loading of canned sequences of commands scripts is enabled or
21498disabled.
21499
21500@anchor{info auto-load gdb-scripts}
21501@kindex info auto-load gdb-scripts
21502@cindex print list of auto-loaded canned sequences of commands scripts
21503@item info auto-load gdb-scripts [@var{regexp}]
21504Print the list of all canned sequences of commands scripts that @value{GDBN}
21505auto-loaded.
21506@end table
21507
21508If @var{regexp} is supplied only canned sequences of commands scripts with
21509matching names are printed.
21510
bccbefd2
JK
21511@node Auto-loading safe path
21512@subsection Security restriction for auto-loading
21513@cindex auto-loading safe-path
21514
21515As the files of inferior can come from untrusted source (such as submitted by
21516an application user) @value{GDBN} does not always load any files automatically.
21517@value{GDBN} provides the @samp{set auto-load safe-path} setting to list
21518directories trusted for loading files not explicitly requested by user.
202cbf1c 21519Each directory can also be a shell wildcard pattern.
bccbefd2
JK
21520
21521If the path is not set properly you will see a warning and the file will not
21522get loaded:
21523
21524@smallexample
21525$ ./gdb -q ./gdb
21526Reading symbols from /home/user/gdb/gdb...done.
21527warning: File "/home/user/gdb/gdb-gdb.gdb" auto-loading has been
1564a261
JK
21528 declined by your `auto-load safe-path' set
21529 to "$debugdir:$datadir/auto-load".
bccbefd2 21530warning: File "/home/user/gdb/gdb-gdb.py" auto-loading has been
1564a261
JK
21531 declined by your `auto-load safe-path' set
21532 to "$debugdir:$datadir/auto-load".
bccbefd2
JK
21533@end smallexample
21534
21535The list of trusted directories is controlled by the following commands:
21536
21537@table @code
21538@anchor{set auto-load safe-path}
21539@kindex set auto-load safe-path
af2c1515 21540@item set auto-load safe-path @r{[}@var{directories}@r{]}
bccbefd2
JK
21541Set the list of directories (and their subdirectories) trusted for automatic
21542loading and execution of scripts. You can also enter a specific trusted file.
202cbf1c
JK
21543Each directory can also be a shell wildcard pattern; wildcards do not match
21544directory separator - see @code{FNM_PATHNAME} for system function @code{fnmatch}
21545(@pxref{Wildcard Matching, fnmatch, , libc, GNU C Library Reference Manual}).
af2c1515
JK
21546If you omit @var{directories}, @samp{auto-load safe-path} will be reset to
21547its default value as specified during @value{GDBN} compilation.
21548
d9242c17 21549The list of directories uses path separator (@samp{:} on GNU and Unix
bccbefd2
JK
21550systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly
21551to the @env{PATH} environment variable.
21552
21553@anchor{show auto-load safe-path}
21554@kindex show auto-load safe-path
21555@item show auto-load safe-path
21556Show the list of directories trusted for automatic loading and execution of
21557scripts.
21558
21559@anchor{add-auto-load-safe-path}
21560@kindex add-auto-load-safe-path
21561@item add-auto-load-safe-path
21562Add an entry (or list of entries) the list of directories trusted for automatic
21563loading and execution of scripts. Multiple entries may be delimited by the
d9242c17 21564host platform path separator in use.
bccbefd2
JK
21565@end table
21566
7349ff92 21567This variable defaults to what @code{--with-auto-load-dir} has been configured
1564a261
JK
21568to (@pxref{with-auto-load-dir}). @file{$debugdir} and @file{$datadir}
21569substitution applies the same as for @ref{set auto-load scripts-directory}.
21570The default @code{set auto-load safe-path} value can be also overriden by
21571@value{GDBN} configuration option @option{--with-auto-load-safe-path}.
6dea1fbd 21572
6dea1fbd
JK
21573Setting this variable to @file{/} disables this security protection,
21574corresponding @value{GDBN} configuration option is
21575@option{--without-auto-load-safe-path}.
bccbefd2
JK
21576This variable is supposed to be set to the system directories writable by the
21577system superuser only. Users can add their source directories in init files in
21578their home directories (@pxref{Home Directory Init File}). See also deprecated
21579init file in the current directory
21580(@pxref{Init File in the Current Directory during Startup}).
21581
21582To force @value{GDBN} to load the files it declined to load in the previous
21583example, you could use one of the following ways:
21584
0511cc75
JK
21585@table @asis
21586@item @file{~/.gdbinit}: @samp{add-auto-load-safe-path ~/src/gdb}
bccbefd2
JK
21587Specify this trusted directory (or a file) as additional component of the list.
21588You have to specify also any existing directories displayed by
21589by @samp{show auto-load safe-path} (such as @samp{/usr:/bin} in this example).
21590
174bb630 21591@item @kbd{gdb -iex "set auto-load safe-path /usr:/bin:~/src/gdb" @dots{}}
bccbefd2
JK
21592Specify this directory as in the previous case but just for a single
21593@value{GDBN} session.
21594
af2c1515 21595@item @kbd{gdb -iex "set auto-load safe-path /" @dots{}}
bccbefd2
JK
21596Disable auto-loading safety for a single @value{GDBN} session.
21597This assumes all the files you debug during this @value{GDBN} session will come
21598from trusted sources.
21599
21600@item @kbd{./configure --without-auto-load-safe-path}
21601During compilation of @value{GDBN} you may disable any auto-loading safety.
21602This assumes all the files you will ever debug with this @value{GDBN} come from
21603trusted sources.
0511cc75 21604@end table
bccbefd2
JK
21605
21606On the other hand you can also explicitly forbid automatic files loading which
21607also suppresses any such warning messages:
21608
0511cc75 21609@table @asis
174bb630 21610@item @kbd{gdb -iex "set auto-load no" @dots{}}
bccbefd2
JK
21611You can use @value{GDBN} command-line option for a single @value{GDBN} session.
21612
0511cc75 21613@item @file{~/.gdbinit}: @samp{set auto-load no}
bccbefd2
JK
21614Disable auto-loading globally for the user
21615(@pxref{Home Directory Init File}). While it is improbable, you could also
21616use system init file instead (@pxref{System-wide configuration}).
0511cc75 21617@end table
bccbefd2
JK
21618
21619This setting applies to the file names as entered by user. If no entry matches
21620@value{GDBN} tries as a last resort to also resolve all the file names into
21621their canonical form (typically resolving symbolic links) and compare the
21622entries again. @value{GDBN} already canonicalizes most of the filenames on its
21623own before starting the comparison so a canonical form of directories is
21624recommended to be entered.
21625
4dc84fd1
JK
21626@node Auto-loading verbose mode
21627@subsection Displaying files tried for auto-load
21628@cindex auto-loading verbose mode
21629
21630For better visibility of all the file locations where you can place scripts to
21631be auto-loaded with inferior --- or to protect yourself against accidental
21632execution of untrusted scripts --- @value{GDBN} provides a feature for printing
21633all the files attempted to be loaded. Both existing and non-existing files may
21634be printed.
21635
21636For example the list of directories from which it is safe to auto-load files
21637(@pxref{Auto-loading safe path}) applies also to canonicalized filenames which
21638may not be too obvious while setting it up.
21639
21640@smallexample
0070f25a 21641(gdb) set debug auto-load on
4dc84fd1
JK
21642(gdb) file ~/src/t/true
21643auto-load: Loading canned sequences of commands script "/tmp/true-gdb.gdb"
21644 for objfile "/tmp/true".
21645auto-load: Updating directories of "/usr:/opt".
21646auto-load: Using directory "/usr".
21647auto-load: Using directory "/opt".
21648warning: File "/tmp/true-gdb.gdb" auto-loading has been declined
21649 by your `auto-load safe-path' set to "/usr:/opt".
21650@end smallexample
21651
21652@table @code
21653@anchor{set debug auto-load}
21654@kindex set debug auto-load
21655@item set debug auto-load [on|off]
21656Set whether to print the filenames attempted to be auto-loaded.
21657
21658@anchor{show debug auto-load}
21659@kindex show debug auto-load
21660@item show debug auto-load
21661Show whether printing of the filenames attempted to be auto-loaded is turned
21662on or off.
21663@end table
21664
8e04817f 21665@node Messages/Warnings
79a6e687 21666@section Optional Warnings and Messages
104c1213 21667
9c16f35a
EZ
21668@cindex verbose operation
21669@cindex optional warnings
8e04817f
AC
21670By default, @value{GDBN} is silent about its inner workings. If you are
21671running on a slow machine, you may want to use the @code{set verbose}
21672command. This makes @value{GDBN} tell you when it does a lengthy
21673internal operation, so you will not think it has crashed.
104c1213 21674
8e04817f
AC
21675Currently, the messages controlled by @code{set verbose} are those
21676which announce that the symbol table for a source file is being read;
79a6e687 21677see @code{symbol-file} in @ref{Files, ,Commands to Specify Files}.
104c1213 21678
8e04817f
AC
21679@table @code
21680@kindex set verbose
21681@item set verbose on
21682Enables @value{GDBN} output of certain informational messages.
104c1213 21683
8e04817f
AC
21684@item set verbose off
21685Disables @value{GDBN} output of certain informational messages.
104c1213 21686
8e04817f
AC
21687@kindex show verbose
21688@item show verbose
21689Displays whether @code{set verbose} is on or off.
21690@end table
104c1213 21691
8e04817f
AC
21692By default, if @value{GDBN} encounters bugs in the symbol table of an
21693object file, it is silent; but if you are debugging a compiler, you may
79a6e687
BW
21694find this information useful (@pxref{Symbol Errors, ,Errors Reading
21695Symbol Files}).
104c1213 21696
8e04817f 21697@table @code
104c1213 21698
8e04817f
AC
21699@kindex set complaints
21700@item set complaints @var{limit}
21701Permits @value{GDBN} to output @var{limit} complaints about each type of
21702unusual symbols before becoming silent about the problem. Set
21703@var{limit} to zero to suppress all complaints; set it to a large number
21704to prevent complaints from being suppressed.
104c1213 21705
8e04817f
AC
21706@kindex show complaints
21707@item show complaints
21708Displays how many symbol complaints @value{GDBN} is permitted to produce.
104c1213 21709
8e04817f 21710@end table
104c1213 21711
d837706a 21712@anchor{confirmation requests}
8e04817f
AC
21713By default, @value{GDBN} is cautious, and asks what sometimes seems to be a
21714lot of stupid questions to confirm certain commands. For example, if
21715you try to run a program which is already running:
104c1213 21716
474c8240 21717@smallexample
8e04817f
AC
21718(@value{GDBP}) run
21719The program being debugged has been started already.
21720Start it from the beginning? (y or n)
474c8240 21721@end smallexample
104c1213 21722
8e04817f
AC
21723If you are willing to unflinchingly face the consequences of your own
21724commands, you can disable this ``feature'':
104c1213 21725
8e04817f 21726@table @code
104c1213 21727
8e04817f
AC
21728@kindex set confirm
21729@cindex flinching
21730@cindex confirmation
21731@cindex stupid questions
21732@item set confirm off
7c953934
TT
21733Disables confirmation requests. Note that running @value{GDBN} with
21734the @option{--batch} option (@pxref{Mode Options, -batch}) also
21735automatically disables confirmation requests.
104c1213 21736
8e04817f
AC
21737@item set confirm on
21738Enables confirmation requests (the default).
104c1213 21739
8e04817f
AC
21740@kindex show confirm
21741@item show confirm
21742Displays state of confirmation requests.
21743
21744@end table
104c1213 21745
16026cd7
AS
21746@cindex command tracing
21747If you need to debug user-defined commands or sourced files you may find it
21748useful to enable @dfn{command tracing}. In this mode each command will be
21749printed as it is executed, prefixed with one or more @samp{+} symbols, the
21750quantity denoting the call depth of each command.
21751
21752@table @code
21753@kindex set trace-commands
21754@cindex command scripts, debugging
21755@item set trace-commands on
21756Enable command tracing.
21757@item set trace-commands off
21758Disable command tracing.
21759@item show trace-commands
21760Display the current state of command tracing.
21761@end table
21762
8e04817f 21763@node Debugging Output
79a6e687 21764@section Optional Messages about Internal Happenings
4644b6e3
EZ
21765@cindex optional debugging messages
21766
da316a69
EZ
21767@value{GDBN} has commands that enable optional debugging messages from
21768various @value{GDBN} subsystems; normally these commands are of
21769interest to @value{GDBN} maintainers, or when reporting a bug. This
21770section documents those commands.
21771
104c1213 21772@table @code
a8f24a35
EZ
21773@kindex set exec-done-display
21774@item set exec-done-display
21775Turns on or off the notification of asynchronous commands'
21776completion. When on, @value{GDBN} will print a message when an
21777asynchronous command finishes its execution. The default is off.
21778@kindex show exec-done-display
21779@item show exec-done-display
21780Displays the current setting of asynchronous command completion
21781notification.
4644b6e3
EZ
21782@kindex set debug
21783@cindex gdbarch debugging info
a8f24a35 21784@cindex architecture debugging info
8e04817f 21785@item set debug arch
a8f24a35 21786Turns on or off display of gdbarch debugging info. The default is off
4644b6e3 21787@kindex show debug
8e04817f
AC
21788@item show debug arch
21789Displays the current state of displaying gdbarch debugging info.
721c2651
EZ
21790@item set debug aix-thread
21791@cindex AIX threads
21792Display debugging messages about inner workings of the AIX thread
21793module.
21794@item show debug aix-thread
21795Show the current state of AIX thread debugging info display.
900e11f9
JK
21796@item set debug check-physname
21797@cindex physname
21798Check the results of the ``physname'' computation. When reading DWARF
21799debugging information for C@t{++}, @value{GDBN} attempts to compute
21800each entity's name. @value{GDBN} can do this computation in two
21801different ways, depending on exactly what information is present.
21802When enabled, this setting causes @value{GDBN} to compute the names
21803both ways and display any discrepancies.
21804@item show debug check-physname
21805Show the current state of ``physname'' checking.
d97bc12b
DE
21806@item set debug dwarf2-die
21807@cindex DWARF2 DIEs
21808Dump DWARF2 DIEs after they are read in.
21809The value is the number of nesting levels to print.
21810A value of zero turns off the display.
21811@item show debug dwarf2-die
21812Show the current state of DWARF2 DIE debugging.
45cfd468
DE
21813@item set debug dwarf2-read
21814@cindex DWARF2 Reading
21815Turns on or off display of debugging messages related to reading
21816DWARF debug info. The default is off.
21817@item show debug dwarf2-read
21818Show the current state of DWARF2 reader debugging.
237fc4c9
PA
21819@item set debug displaced
21820@cindex displaced stepping debugging info
21821Turns on or off display of @value{GDBN} debugging info for the
21822displaced stepping support. The default is off.
21823@item show debug displaced
21824Displays the current state of displaying @value{GDBN} debugging info
21825related to displaced stepping.
8e04817f 21826@item set debug event
4644b6e3 21827@cindex event debugging info
a8f24a35 21828Turns on or off display of @value{GDBN} event debugging info. The
8e04817f 21829default is off.
8e04817f
AC
21830@item show debug event
21831Displays the current state of displaying @value{GDBN} event debugging
21832info.
8e04817f 21833@item set debug expression
4644b6e3 21834@cindex expression debugging info
721c2651
EZ
21835Turns on or off display of debugging info about @value{GDBN}
21836expression parsing. The default is off.
8e04817f 21837@item show debug expression
721c2651
EZ
21838Displays the current state of displaying debugging info about
21839@value{GDBN} expression parsing.
7453dc06 21840@item set debug frame
4644b6e3 21841@cindex frame debugging info
7453dc06
AC
21842Turns on or off display of @value{GDBN} frame debugging info. The
21843default is off.
7453dc06
AC
21844@item show debug frame
21845Displays the current state of displaying @value{GDBN} frame debugging
21846info.
cbe54154
PA
21847@item set debug gnu-nat
21848@cindex @sc{gnu}/Hurd debug messages
21849Turns on or off debugging messages from the @sc{gnu}/Hurd debug support.
21850@item show debug gnu-nat
21851Show the current state of @sc{gnu}/Hurd debugging messages.
30e91e0b
RC
21852@item set debug infrun
21853@cindex inferior debugging info
21854Turns on or off display of @value{GDBN} debugging info for running the inferior.
21855The default is off. @file{infrun.c} contains GDB's runtime state machine used
21856for implementing operations such as single-stepping the inferior.
21857@item show debug infrun
21858Displays the current state of @value{GDBN} inferior debugging.
a255712f
PP
21859@item set debug jit
21860@cindex just-in-time compilation, debugging messages
21861Turns on or off debugging messages from JIT debug support.
21862@item show debug jit
21863Displays the current state of @value{GDBN} JIT debugging.
da316a69
EZ
21864@item set debug lin-lwp
21865@cindex @sc{gnu}/Linux LWP debug messages
21866@cindex Linux lightweight processes
721c2651 21867Turns on or off debugging messages from the Linux LWP debug support.
da316a69
EZ
21868@item show debug lin-lwp
21869Show the current state of Linux LWP debugging messages.
2b4855ab 21870@item set debug observer
4644b6e3 21871@cindex observer debugging info
2b4855ab
AC
21872Turns on or off display of @value{GDBN} observer debugging. This
21873includes info such as the notification of observable events.
2b4855ab
AC
21874@item show debug observer
21875Displays the current state of observer debugging.
8e04817f 21876@item set debug overload
4644b6e3 21877@cindex C@t{++} overload debugging info
8e04817f 21878Turns on or off display of @value{GDBN} C@t{++} overload debugging
359df76b 21879info. This includes info such as ranking of functions, etc. The default
8e04817f 21880is off.
8e04817f
AC
21881@item show debug overload
21882Displays the current state of displaying @value{GDBN} C@t{++} overload
21883debugging info.
92981e24
TT
21884@cindex expression parser, debugging info
21885@cindex debug expression parser
21886@item set debug parser
21887Turns on or off the display of expression parser debugging output.
21888Internally, this sets the @code{yydebug} variable in the expression
21889parser. @xref{Tracing, , Tracing Your Parser, bison, Bison}, for
21890details. The default is off.
21891@item show debug parser
21892Show the current state of expression parser debugging.
8e04817f
AC
21893@cindex packets, reporting on stdout
21894@cindex serial connections, debugging
605a56cb
DJ
21895@cindex debug remote protocol
21896@cindex remote protocol debugging
21897@cindex display remote packets
8e04817f
AC
21898@item set debug remote
21899Turns on or off display of reports on all packets sent back and forth across
21900the serial line to the remote machine. The info is printed on the
21901@value{GDBN} standard output stream. The default is off.
8e04817f
AC
21902@item show debug remote
21903Displays the state of display of remote packets.
8e04817f
AC
21904@item set debug serial
21905Turns on or off display of @value{GDBN} serial debugging info. The
21906default is off.
8e04817f
AC
21907@item show debug serial
21908Displays the current state of displaying @value{GDBN} serial debugging
21909info.
c45da7e6
EZ
21910@item set debug solib-frv
21911@cindex FR-V shared-library debugging
21912Turns on or off debugging messages for FR-V shared-library code.
21913@item show debug solib-frv
21914Display the current state of FR-V shared-library code debugging
21915messages.
45cfd468
DE
21916@item set debug symtab-create
21917@cindex symbol table creation
21918Turns on or off display of debugging messages related to symbol table creation.
21919The default is off.
21920@item show debug symtab-create
21921Show the current state of symbol table creation debugging.
8e04817f 21922@item set debug target
4644b6e3 21923@cindex target debugging info
8e04817f
AC
21924Turns on or off display of @value{GDBN} target debugging info. This info
21925includes what is going on at the target level of GDB, as it happens. The
701b08bb
DJ
21926default is 0. Set it to 1 to track events, and to 2 to also track the
21927value of large memory transfers. Changes to this flag do not take effect
21928until the next time you connect to a target or use the @code{run} command.
8e04817f
AC
21929@item show debug target
21930Displays the current state of displaying @value{GDBN} target debugging
21931info.
75feb17d
DJ
21932@item set debug timestamp
21933@cindex timestampping debugging info
21934Turns on or off display of timestamps with @value{GDBN} debugging info.
21935When enabled, seconds and microseconds are displayed before each debugging
21936message.
21937@item show debug timestamp
21938Displays the current state of displaying timestamps with @value{GDBN}
21939debugging info.
c45da7e6 21940@item set debugvarobj
4644b6e3 21941@cindex variable object debugging info
8e04817f
AC
21942Turns on or off display of @value{GDBN} variable object debugging
21943info. The default is off.
c45da7e6 21944@item show debugvarobj
8e04817f
AC
21945Displays the current state of displaying @value{GDBN} variable object
21946debugging info.
e776119f
DJ
21947@item set debug xml
21948@cindex XML parser debugging
21949Turns on or off debugging messages for built-in XML parsers.
21950@item show debug xml
21951Displays the current state of XML debugging messages.
8e04817f 21952@end table
104c1213 21953
14fb1bac
JB
21954@node Other Misc Settings
21955@section Other Miscellaneous Settings
21956@cindex miscellaneous settings
21957
21958@table @code
21959@kindex set interactive-mode
21960@item set interactive-mode
7bfc9434
JB
21961If @code{on}, forces @value{GDBN} to assume that GDB was started
21962in a terminal. In practice, this means that @value{GDBN} should wait
21963for the user to answer queries generated by commands entered at
21964the command prompt. If @code{off}, forces @value{GDBN} to operate
21965in the opposite mode, and it uses the default answers to all queries.
21966If @code{auto} (the default), @value{GDBN} tries to determine whether
21967its standard input is a terminal, and works in interactive-mode if it
21968is, non-interactively otherwise.
14fb1bac
JB
21969
21970In the vast majority of cases, the debugger should be able to guess
21971correctly which mode should be used. But this setting can be useful
21972in certain specific cases, such as running a MinGW @value{GDBN}
21973inside a cygwin window.
21974
21975@kindex show interactive-mode
21976@item show interactive-mode
21977Displays whether the debugger is operating in interactive mode or not.
21978@end table
21979
d57a3c85
TJB
21980@node Extending GDB
21981@chapter Extending @value{GDBN}
21982@cindex extending GDB
21983
5a56e9c5
DE
21984@value{GDBN} provides three mechanisms for extension. The first is based
21985on composition of @value{GDBN} commands, the second is based on the
21986Python scripting language, and the third is for defining new aliases of
21987existing commands.
d57a3c85 21988
5a56e9c5 21989To facilitate the use of the first two extensions, @value{GDBN} is capable
95433b34
JB
21990of evaluating the contents of a file. When doing so, @value{GDBN}
21991can recognize which scripting language is being used by looking at
21992the filename extension. Files with an unrecognized filename extension
21993are always treated as a @value{GDBN} Command Files.
21994@xref{Command Files,, Command files}.
21995
21996You can control how @value{GDBN} evaluates these files with the following
21997setting:
21998
21999@table @code
22000@kindex set script-extension
22001@kindex show script-extension
22002@item set script-extension off
22003All scripts are always evaluated as @value{GDBN} Command Files.
22004
22005@item set script-extension soft
22006The debugger determines the scripting language based on filename
22007extension. If this scripting language is supported, @value{GDBN}
22008evaluates the script using that language. Otherwise, it evaluates
22009the file as a @value{GDBN} Command File.
22010
22011@item set script-extension strict
22012The debugger determines the scripting language based on filename
22013extension, and evaluates the script using that language. If the
22014language is not supported, then the evaluation fails.
22015
22016@item show script-extension
22017Display the current value of the @code{script-extension} option.
22018
22019@end table
22020
d57a3c85
TJB
22021@menu
22022* Sequences:: Canned Sequences of Commands
22023* Python:: Scripting @value{GDBN} using Python
5a56e9c5 22024* Aliases:: Creating new spellings of existing commands
d57a3c85
TJB
22025@end menu
22026
8e04817f 22027@node Sequences
d57a3c85 22028@section Canned Sequences of Commands
104c1213 22029
8e04817f 22030Aside from breakpoint commands (@pxref{Break Commands, ,Breakpoint
79a6e687 22031Command Lists}), @value{GDBN} provides two ways to store sequences of
8e04817f
AC
22032commands for execution as a unit: user-defined commands and command
22033files.
104c1213 22034
8e04817f 22035@menu
fcc73fe3
EZ
22036* Define:: How to define your own commands
22037* Hooks:: Hooks for user-defined commands
22038* Command Files:: How to write scripts of commands to be stored in a file
22039* Output:: Commands for controlled output
8e04817f 22040@end menu
104c1213 22041
8e04817f 22042@node Define
d57a3c85 22043@subsection User-defined Commands
104c1213 22044
8e04817f 22045@cindex user-defined command
fcc73fe3 22046@cindex arguments, to user-defined commands
8e04817f
AC
22047A @dfn{user-defined command} is a sequence of @value{GDBN} commands to
22048which you assign a new name as a command. This is done with the
22049@code{define} command. User commands may accept up to 10 arguments
22050separated by whitespace. Arguments are accessed within the user command
c03c782f 22051via @code{$arg0@dots{}$arg9}. A trivial example:
104c1213 22052
8e04817f
AC
22053@smallexample
22054define adder
22055 print $arg0 + $arg1 + $arg2
c03c782f 22056end
8e04817f 22057@end smallexample
104c1213
JM
22058
22059@noindent
8e04817f 22060To execute the command use:
104c1213 22061
8e04817f
AC
22062@smallexample
22063adder 1 2 3
22064@end smallexample
104c1213 22065
8e04817f
AC
22066@noindent
22067This defines the command @code{adder}, which prints the sum of
22068its three arguments. Note the arguments are text substitutions, so they may
22069reference variables, use complex expressions, or even perform inferior
22070functions calls.
104c1213 22071
fcc73fe3
EZ
22072@cindex argument count in user-defined commands
22073@cindex how many arguments (user-defined commands)
c03c782f
AS
22074In addition, @code{$argc} may be used to find out how many arguments have
22075been passed. This expands to a number in the range 0@dots{}10.
22076
22077@smallexample
22078define adder
22079 if $argc == 2
22080 print $arg0 + $arg1
22081 end
22082 if $argc == 3
22083 print $arg0 + $arg1 + $arg2
22084 end
22085end
22086@end smallexample
22087
104c1213 22088@table @code
104c1213 22089
8e04817f
AC
22090@kindex define
22091@item define @var{commandname}
22092Define a command named @var{commandname}. If there is already a command
22093by that name, you are asked to confirm that you want to redefine it.
adb483fe
DJ
22094@var{commandname} may be a bare command name consisting of letters,
22095numbers, dashes, and underscores. It may also start with any predefined
22096prefix command. For example, @samp{define target my-target} creates
22097a user-defined @samp{target my-target} command.
104c1213 22098
8e04817f
AC
22099The definition of the command is made up of other @value{GDBN} command lines,
22100which are given following the @code{define} command. The end of these
22101commands is marked by a line containing @code{end}.
104c1213 22102
8e04817f 22103@kindex document
ca91424e 22104@kindex end@r{ (user-defined commands)}
8e04817f
AC
22105@item document @var{commandname}
22106Document the user-defined command @var{commandname}, so that it can be
22107accessed by @code{help}. The command @var{commandname} must already be
22108defined. This command reads lines of documentation just as @code{define}
22109reads the lines of the command definition, ending with @code{end}.
22110After the @code{document} command is finished, @code{help} on command
22111@var{commandname} displays the documentation you have written.
104c1213 22112
8e04817f
AC
22113You may use the @code{document} command again to change the
22114documentation of a command. Redefining the command with @code{define}
22115does not change the documentation.
104c1213 22116
c45da7e6
EZ
22117@kindex dont-repeat
22118@cindex don't repeat command
22119@item dont-repeat
22120Used inside a user-defined command, this tells @value{GDBN} that this
22121command should not be repeated when the user hits @key{RET}
22122(@pxref{Command Syntax, repeat last command}).
22123
8e04817f
AC
22124@kindex help user-defined
22125@item help user-defined
7d74f244
DE
22126List all user-defined commands and all python commands defined in class
22127COMAND_USER. The first line of the documentation or docstring is
22128included (if any).
104c1213 22129
8e04817f
AC
22130@kindex show user
22131@item show user
22132@itemx show user @var{commandname}
22133Display the @value{GDBN} commands used to define @var{commandname} (but
22134not its documentation). If no @var{commandname} is given, display the
22135definitions for all user-defined commands.
7d74f244 22136This does not work for user-defined python commands.
104c1213 22137
fcc73fe3 22138@cindex infinite recursion in user-defined commands
20f01a46
DH
22139@kindex show max-user-call-depth
22140@kindex set max-user-call-depth
22141@item show max-user-call-depth
5ca0cb28
DH
22142@itemx set max-user-call-depth
22143The value of @code{max-user-call-depth} controls how many recursion
3f94c067 22144levels are allowed in user-defined commands before @value{GDBN} suspects an
5ca0cb28 22145infinite recursion and aborts the command.
7d74f244 22146This does not apply to user-defined python commands.
104c1213
JM
22147@end table
22148
fcc73fe3
EZ
22149In addition to the above commands, user-defined commands frequently
22150use control flow commands, described in @ref{Command Files}.
22151
8e04817f
AC
22152When user-defined commands are executed, the
22153commands of the definition are not printed. An error in any command
22154stops execution of the user-defined command.
104c1213 22155
8e04817f
AC
22156If used interactively, commands that would ask for confirmation proceed
22157without asking when used inside a user-defined command. Many @value{GDBN}
22158commands that normally print messages to say what they are doing omit the
22159messages when used in a user-defined command.
104c1213 22160
8e04817f 22161@node Hooks
d57a3c85 22162@subsection User-defined Command Hooks
8e04817f
AC
22163@cindex command hooks
22164@cindex hooks, for commands
22165@cindex hooks, pre-command
104c1213 22166
8e04817f 22167@kindex hook
8e04817f
AC
22168You may define @dfn{hooks}, which are a special kind of user-defined
22169command. Whenever you run the command @samp{foo}, if the user-defined
22170command @samp{hook-foo} exists, it is executed (with no arguments)
22171before that command.
104c1213 22172
8e04817f
AC
22173@cindex hooks, post-command
22174@kindex hookpost
8e04817f
AC
22175A hook may also be defined which is run after the command you executed.
22176Whenever you run the command @samp{foo}, if the user-defined command
22177@samp{hookpost-foo} exists, it is executed (with no arguments) after
22178that command. Post-execution hooks may exist simultaneously with
22179pre-execution hooks, for the same command.
104c1213 22180
8e04817f 22181It is valid for a hook to call the command which it hooks. If this
9f1c6395 22182occurs, the hook is not re-executed, thereby avoiding infinite recursion.
104c1213 22183
8e04817f
AC
22184@c It would be nice if hookpost could be passed a parameter indicating
22185@c if the command it hooks executed properly or not. FIXME!
104c1213 22186
8e04817f
AC
22187@kindex stop@r{, a pseudo-command}
22188In addition, a pseudo-command, @samp{stop} exists. Defining
22189(@samp{hook-stop}) makes the associated commands execute every time
22190execution stops in your program: before breakpoint commands are run,
22191displays are printed, or the stack frame is printed.
104c1213 22192
8e04817f
AC
22193For example, to ignore @code{SIGALRM} signals while
22194single-stepping, but treat them normally during normal execution,
22195you could define:
104c1213 22196
474c8240 22197@smallexample
8e04817f
AC
22198define hook-stop
22199handle SIGALRM nopass
22200end
104c1213 22201
8e04817f
AC
22202define hook-run
22203handle SIGALRM pass
22204end
104c1213 22205
8e04817f 22206define hook-continue
d3e8051b 22207handle SIGALRM pass
8e04817f 22208end
474c8240 22209@end smallexample
104c1213 22210
d3e8051b 22211As a further example, to hook at the beginning and end of the @code{echo}
b383017d 22212command, and to add extra text to the beginning and end of the message,
8e04817f 22213you could define:
104c1213 22214
474c8240 22215@smallexample
8e04817f
AC
22216define hook-echo
22217echo <<<---
22218end
104c1213 22219
8e04817f
AC
22220define hookpost-echo
22221echo --->>>\n
22222end
104c1213 22223
8e04817f
AC
22224(@value{GDBP}) echo Hello World
22225<<<---Hello World--->>>
22226(@value{GDBP})
104c1213 22227
474c8240 22228@end smallexample
104c1213 22229
8e04817f
AC
22230You can define a hook for any single-word command in @value{GDBN}, but
22231not for command aliases; you should define a hook for the basic command
c1468174 22232name, e.g.@: @code{backtrace} rather than @code{bt}.
8e04817f
AC
22233@c FIXME! So how does Joe User discover whether a command is an alias
22234@c or not?
adb483fe
DJ
22235You can hook a multi-word command by adding @code{hook-} or
22236@code{hookpost-} to the last word of the command, e.g.@:
22237@samp{define target hook-remote} to add a hook to @samp{target remote}.
22238
8e04817f
AC
22239If an error occurs during the execution of your hook, execution of
22240@value{GDBN} commands stops and @value{GDBN} issues a prompt
22241(before the command that you actually typed had a chance to run).
104c1213 22242
8e04817f
AC
22243If you try to define a hook which does not match any known command, you
22244get a warning from the @code{define} command.
c906108c 22245
8e04817f 22246@node Command Files
d57a3c85 22247@subsection Command Files
c906108c 22248
8e04817f 22249@cindex command files
fcc73fe3 22250@cindex scripting commands
6fc08d32
EZ
22251A command file for @value{GDBN} is a text file made of lines that are
22252@value{GDBN} commands. Comments (lines starting with @kbd{#}) may
22253also be included. An empty line in a command file does nothing; it
22254does not mean to repeat the last command, as it would from the
22255terminal.
c906108c 22256
6fc08d32 22257You can request the execution of a command file with the @code{source}
95433b34
JB
22258command. Note that the @code{source} command is also used to evaluate
22259scripts that are not Command Files. The exact behavior can be configured
22260using the @code{script-extension} setting.
22261@xref{Extending GDB,, Extending GDB}.
c906108c 22262
8e04817f
AC
22263@table @code
22264@kindex source
ca91424e 22265@cindex execute commands from a file
3f7b2faa 22266@item source [-s] [-v] @var{filename}
8e04817f 22267Execute the command file @var{filename}.
c906108c
SS
22268@end table
22269
fcc73fe3
EZ
22270The lines in a command file are generally executed sequentially,
22271unless the order of execution is changed by one of the
22272@emph{flow-control commands} described below. The commands are not
a71ec265
DH
22273printed as they are executed. An error in any command terminates
22274execution of the command file and control is returned to the console.
c906108c 22275
08001717
DE
22276@value{GDBN} first searches for @var{filename} in the current directory.
22277If the file is not found there, and @var{filename} does not specify a
22278directory, then @value{GDBN} also looks for the file on the source search path
22279(specified with the @samp{directory} command);
22280except that @file{$cdir} is not searched because the compilation directory
22281is not relevant to scripts.
4b505b12 22282
3f7b2faa
DE
22283If @code{-s} is specified, then @value{GDBN} searches for @var{filename}
22284on the search path even if @var{filename} specifies a directory.
22285The search is done by appending @var{filename} to each element of the
22286search path. So, for example, if @var{filename} is @file{mylib/myscript}
22287and the search path contains @file{/home/user} then @value{GDBN} will
22288look for the script @file{/home/user/mylib/myscript}.
22289The search is also done if @var{filename} is an absolute path.
22290For example, if @var{filename} is @file{/tmp/myscript} and
22291the search path contains @file{/home/user} then @value{GDBN} will
22292look for the script @file{/home/user/tmp/myscript}.
22293For DOS-like systems, if @var{filename} contains a drive specification,
22294it is stripped before concatenation. For example, if @var{filename} is
22295@file{d:myscript} and the search path contains @file{c:/tmp} then @value{GDBN}
22296will look for the script @file{c:/tmp/myscript}.
22297
16026cd7
AS
22298If @code{-v}, for verbose mode, is given then @value{GDBN} displays
22299each command as it is executed. The option must be given before
22300@var{filename}, and is interpreted as part of the filename anywhere else.
22301
8e04817f
AC
22302Commands that would ask for confirmation if used interactively proceed
22303without asking when used in a command file. Many @value{GDBN} commands that
22304normally print messages to say what they are doing omit the messages
22305when called from command files.
c906108c 22306
8e04817f
AC
22307@value{GDBN} also accepts command input from standard input. In this
22308mode, normal output goes to standard output and error output goes to
22309standard error. Errors in a command file supplied on standard input do
6fc08d32 22310not terminate execution of the command file---execution continues with
8e04817f 22311the next command.
c906108c 22312
474c8240 22313@smallexample
8e04817f 22314gdb < cmds > log 2>&1
474c8240 22315@end smallexample
c906108c 22316
8e04817f
AC
22317(The syntax above will vary depending on the shell used.) This example
22318will execute commands from the file @file{cmds}. All output and errors
22319would be directed to @file{log}.
c906108c 22320
fcc73fe3
EZ
22321Since commands stored on command files tend to be more general than
22322commands typed interactively, they frequently need to deal with
22323complicated situations, such as different or unexpected values of
22324variables and symbols, changes in how the program being debugged is
22325built, etc. @value{GDBN} provides a set of flow-control commands to
22326deal with these complexities. Using these commands, you can write
22327complex scripts that loop over data structures, execute commands
22328conditionally, etc.
22329
22330@table @code
22331@kindex if
22332@kindex else
22333@item if
22334@itemx else
22335This command allows to include in your script conditionally executed
22336commands. The @code{if} command takes a single argument, which is an
22337expression to evaluate. It is followed by a series of commands that
22338are executed only if the expression is true (its value is nonzero).
22339There can then optionally be an @code{else} line, followed by a series
22340of commands that are only executed if the expression was false. The
22341end of the list is marked by a line containing @code{end}.
22342
22343@kindex while
22344@item while
22345This command allows to write loops. Its syntax is similar to
22346@code{if}: the command takes a single argument, which is an expression
22347to evaluate, and must be followed by the commands to execute, one per
22348line, terminated by an @code{end}. These commands are called the
22349@dfn{body} of the loop. The commands in the body of @code{while} are
22350executed repeatedly as long as the expression evaluates to true.
22351
22352@kindex loop_break
22353@item loop_break
22354This command exits the @code{while} loop in whose body it is included.
22355Execution of the script continues after that @code{while}s @code{end}
22356line.
22357
22358@kindex loop_continue
22359@item loop_continue
22360This command skips the execution of the rest of the body of commands
22361in the @code{while} loop in whose body it is included. Execution
22362branches to the beginning of the @code{while} loop, where it evaluates
22363the controlling expression.
ca91424e
EZ
22364
22365@kindex end@r{ (if/else/while commands)}
22366@item end
22367Terminate the block of commands that are the body of @code{if},
22368@code{else}, or @code{while} flow-control commands.
fcc73fe3
EZ
22369@end table
22370
22371
8e04817f 22372@node Output
d57a3c85 22373@subsection Commands for Controlled Output
c906108c 22374
8e04817f
AC
22375During the execution of a command file or a user-defined command, normal
22376@value{GDBN} output is suppressed; the only output that appears is what is
22377explicitly printed by the commands in the definition. This section
22378describes three commands useful for generating exactly the output you
22379want.
c906108c
SS
22380
22381@table @code
8e04817f
AC
22382@kindex echo
22383@item echo @var{text}
22384@c I do not consider backslash-space a standard C escape sequence
22385@c because it is not in ANSI.
22386Print @var{text}. Nonprinting characters can be included in
22387@var{text} using C escape sequences, such as @samp{\n} to print a
22388newline. @strong{No newline is printed unless you specify one.}
22389In addition to the standard C escape sequences, a backslash followed
22390by a space stands for a space. This is useful for displaying a
22391string with spaces at the beginning or the end, since leading and
22392trailing spaces are otherwise trimmed from all arguments.
22393To print @samp{@w{ }and foo =@w{ }}, use the command
22394@samp{echo \@w{ }and foo = \@w{ }}.
c906108c 22395
8e04817f
AC
22396A backslash at the end of @var{text} can be used, as in C, to continue
22397the command onto subsequent lines. For example,
c906108c 22398
474c8240 22399@smallexample
8e04817f
AC
22400echo This is some text\n\
22401which is continued\n\
22402onto several lines.\n
474c8240 22403@end smallexample
c906108c 22404
8e04817f 22405produces the same output as
c906108c 22406
474c8240 22407@smallexample
8e04817f
AC
22408echo This is some text\n
22409echo which is continued\n
22410echo onto several lines.\n
474c8240 22411@end smallexample
c906108c 22412
8e04817f
AC
22413@kindex output
22414@item output @var{expression}
22415Print the value of @var{expression} and nothing but that value: no
22416newlines, no @samp{$@var{nn} = }. The value is not entered in the
22417value history either. @xref{Expressions, ,Expressions}, for more information
22418on expressions.
c906108c 22419
8e04817f
AC
22420@item output/@var{fmt} @var{expression}
22421Print the value of @var{expression} in format @var{fmt}. You can use
22422the same formats as for @code{print}. @xref{Output Formats,,Output
79a6e687 22423Formats}, for more information.
c906108c 22424
8e04817f 22425@kindex printf
82160952
EZ
22426@item printf @var{template}, @var{expressions}@dots{}
22427Print the values of one or more @var{expressions} under the control of
22428the string @var{template}. To print several values, make
22429@var{expressions} be a comma-separated list of individual expressions,
22430which may be either numbers or pointers. Their values are printed as
22431specified by @var{template}, exactly as a C program would do by
22432executing the code below:
c906108c 22433
474c8240 22434@smallexample
82160952 22435printf (@var{template}, @var{expressions}@dots{});
474c8240 22436@end smallexample
c906108c 22437
82160952
EZ
22438As in @code{C} @code{printf}, ordinary characters in @var{template}
22439are printed verbatim, while @dfn{conversion specification} introduced
22440by the @samp{%} character cause subsequent @var{expressions} to be
22441evaluated, their values converted and formatted according to type and
22442style information encoded in the conversion specifications, and then
22443printed.
22444
8e04817f 22445For example, you can print two values in hex like this:
c906108c 22446
8e04817f
AC
22447@smallexample
22448printf "foo, bar-foo = 0x%x, 0x%x\n", foo, bar-foo
22449@end smallexample
c906108c 22450
82160952
EZ
22451@code{printf} supports all the standard @code{C} conversion
22452specifications, including the flags and modifiers between the @samp{%}
22453character and the conversion letter, with the following exceptions:
22454
22455@itemize @bullet
22456@item
22457The argument-ordering modifiers, such as @samp{2$}, are not supported.
22458
22459@item
22460The modifier @samp{*} is not supported for specifying precision or
22461width.
22462
22463@item
22464The @samp{'} flag (for separation of digits into groups according to
22465@code{LC_NUMERIC'}) is not supported.
22466
22467@item
22468The type modifiers @samp{hh}, @samp{j}, @samp{t}, and @samp{z} are not
22469supported.
22470
22471@item
22472The conversion letter @samp{n} (as in @samp{%n}) is not supported.
22473
22474@item
22475The conversion letters @samp{a} and @samp{A} are not supported.
22476@end itemize
22477
22478@noindent
22479Note that the @samp{ll} type modifier is supported only if the
22480underlying @code{C} implementation used to build @value{GDBN} supports
22481the @code{long long int} type, and the @samp{L} type modifier is
22482supported only if @code{long double} type is available.
22483
22484As in @code{C}, @code{printf} supports simple backslash-escape
22485sequences, such as @code{\n}, @samp{\t}, @samp{\\}, @samp{\"},
22486@samp{\a}, and @samp{\f}, that consist of backslash followed by a
22487single character. Octal and hexadecimal escape sequences are not
22488supported.
1a619819
LM
22489
22490Additionally, @code{printf} supports conversion specifications for DFP
0aea4bf3
LM
22491(@dfn{Decimal Floating Point}) types using the following length modifiers
22492together with a floating point specifier.
1a619819
LM
22493letters:
22494
22495@itemize @bullet
22496@item
22497@samp{H} for printing @code{Decimal32} types.
22498
22499@item
22500@samp{D} for printing @code{Decimal64} types.
22501
22502@item
22503@samp{DD} for printing @code{Decimal128} types.
22504@end itemize
22505
22506If the underlying @code{C} implementation used to build @value{GDBN} has
0aea4bf3 22507support for the three length modifiers for DFP types, other modifiers
3b784c4f 22508such as width and precision will also be available for @value{GDBN} to use.
1a619819
LM
22509
22510In case there is no such @code{C} support, no additional modifiers will be
22511available and the value will be printed in the standard way.
22512
22513Here's an example of printing DFP types using the above conversion letters:
22514@smallexample
0aea4bf3 22515printf "D32: %Hf - D64: %Df - D128: %DDf\n",1.2345df,1.2E10dd,1.2E1dl
1a619819
LM
22516@end smallexample
22517
f1421989
HZ
22518@kindex eval
22519@item eval @var{template}, @var{expressions}@dots{}
22520Convert the values of one or more @var{expressions} under the control of
22521the string @var{template} to a command line, and call it.
22522
c906108c
SS
22523@end table
22524
d57a3c85
TJB
22525@node Python
22526@section Scripting @value{GDBN} using Python
22527@cindex python scripting
22528@cindex scripting with python
22529
22530You can script @value{GDBN} using the @uref{http://www.python.org/,
22531Python programming language}. This feature is available only if
22532@value{GDBN} was configured using @option{--with-python}.
22533
9279c692
JB
22534@cindex python directory
22535Python scripts used by @value{GDBN} should be installed in
22536@file{@var{data-directory}/python}, where @var{data-directory} is
9eeee977
DE
22537the data directory as determined at @value{GDBN} startup (@pxref{Data Files}).
22538This directory, known as the @dfn{python directory},
9279c692
JB
22539is automatically added to the Python Search Path in order to allow
22540the Python interpreter to locate all scripts installed at this location.
22541
5e239b84
PM
22542Additionally, @value{GDBN} commands and convenience functions which
22543are written in Python and are located in the
22544@file{@var{data-directory}/python/gdb/command} or
22545@file{@var{data-directory}/python/gdb/function} directories are
22546automatically imported when @value{GDBN} starts.
22547
d57a3c85
TJB
22548@menu
22549* Python Commands:: Accessing Python from @value{GDBN}.
22550* Python API:: Accessing @value{GDBN} from Python.
bf88dd68 22551* Python Auto-loading:: Automatically loading Python code.
0e3509db 22552* Python modules:: Python modules provided by @value{GDBN}.
d57a3c85
TJB
22553@end menu
22554
22555@node Python Commands
22556@subsection Python Commands
22557@cindex python commands
22558@cindex commands to access python
22559
22560@value{GDBN} provides one command for accessing the Python interpreter,
22561and one related setting:
22562
22563@table @code
22564@kindex python
22565@item python @r{[}@var{code}@r{]}
22566The @code{python} command can be used to evaluate Python code.
22567
22568If given an argument, the @code{python} command will evaluate the
22569argument as a Python command. For example:
22570
22571@smallexample
22572(@value{GDBP}) python print 23
2257323
22574@end smallexample
22575
22576If you do not provide an argument to @code{python}, it will act as a
22577multi-line command, like @code{define}. In this case, the Python
22578script is made up of subsequent command lines, given after the
22579@code{python} command. This command list is terminated using a line
22580containing @code{end}. For example:
22581
22582@smallexample
22583(@value{GDBP}) python
22584Type python script
22585End with a line saying just "end".
22586>print 23
22587>end
2258823
22589@end smallexample
22590
713389e0
PM
22591@kindex set python print-stack
22592@item set python print-stack
80b6e756
PM
22593By default, @value{GDBN} will print only the message component of a
22594Python exception when an error occurs in a Python script. This can be
22595controlled using @code{set python print-stack}: if @code{full}, then
22596full Python stack printing is enabled; if @code{none}, then Python stack
22597and message printing is disabled; if @code{message}, the default, only
22598the message component of the error is printed.
d57a3c85
TJB
22599@end table
22600
95433b34
JB
22601It is also possible to execute a Python script from the @value{GDBN}
22602interpreter:
22603
22604@table @code
22605@item source @file{script-name}
22606The script name must end with @samp{.py} and @value{GDBN} must be configured
22607to recognize the script language based on filename extension using
22608the @code{script-extension} setting. @xref{Extending GDB, ,Extending GDB}.
22609
22610@item python execfile ("script-name")
22611This method is based on the @code{execfile} Python built-in function,
22612and thus is always available.
22613@end table
22614
d57a3c85
TJB
22615@node Python API
22616@subsection Python API
22617@cindex python api
22618@cindex programming in python
22619
22620@cindex python stdout
22621@cindex python pagination
22622At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
22623@code{sys.stderr} to print using @value{GDBN}'s output-paging streams.
22624A Python program which outputs to one of these streams may have its
22625output interrupted by the user (@pxref{Screen Size}). In this
22626situation, a Python @code{KeyboardInterrupt} exception is thrown.
22627
22628@menu
22629* Basic Python:: Basic Python Functions.
06e65f44
TT
22630* Exception Handling:: How Python exceptions are translated.
22631* Values From Inferior:: Python representation of values.
4c374409
JK
22632* Types In Python:: Python representation of types.
22633* Pretty Printing API:: Pretty-printing values.
a6bac58e 22634* Selecting Pretty-Printers:: How GDB chooses a pretty-printer.
7b51bc51 22635* Writing a Pretty-Printer:: Writing a Pretty-Printer.
595939de 22636* Inferiors In Python:: Python representation of inferiors (processes)
505500db 22637* Events In Python:: Listening for events from @value{GDBN}.
595939de 22638* Threads In Python:: Accessing inferior threads from Python.
d8906c6f 22639* Commands In Python:: Implementing new commands in Python.
d7b32ed3 22640* Parameters In Python:: Adding new @value{GDBN} parameters.
bc3b79fd 22641* Functions In Python:: Writing new convenience functions.
fa33c3cd 22642* Progspaces In Python:: Program spaces.
89c73ade 22643* Objfiles In Python:: Object files.
f3e9a817
PM
22644* Frames In Python:: Accessing inferior stack frames from Python.
22645* Blocks In Python:: Accessing frame blocks from Python.
22646* Symbols In Python:: Python representation of symbols.
22647* Symbol Tables In Python:: Python representation of symbol tables.
adc36818 22648* Breakpoints In Python:: Manipulating breakpoints using Python.
cc72b2a2
KP
22649* Finish Breakpoints in Python:: Setting Breakpoints on function return
22650 using Python.
984359d2 22651* Lazy Strings In Python:: Python representation of lazy strings.
d57a3c85
TJB
22652@end menu
22653
22654@node Basic Python
22655@subsubsection Basic Python
22656
22657@cindex python functions
22658@cindex python module
22659@cindex gdb module
22660@value{GDBN} introduces a new Python module, named @code{gdb}. All
22661methods and classes added by @value{GDBN} are placed in this module.
22662@value{GDBN} automatically @code{import}s the @code{gdb} module for
22663use in all scripts evaluated by the @code{python} command.
22664
9279c692 22665@findex gdb.PYTHONDIR
d812018b 22666@defvar gdb.PYTHONDIR
9279c692
JB
22667A string containing the python directory (@pxref{Python}).
22668@end defvar
22669
d57a3c85 22670@findex gdb.execute
d812018b 22671@defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]})
d57a3c85
TJB
22672Evaluate @var{command}, a string, as a @value{GDBN} CLI command.
22673If a GDB exception happens while @var{command} runs, it is
22674translated as described in @ref{Exception Handling,,Exception Handling}.
12453b93
TJB
22675
22676@var{from_tty} specifies whether @value{GDBN} ought to consider this
22677command as having originated from the user invoking it interactively.
22678It must be a boolean value. If omitted, it defaults to @code{False}.
bc9f0842
TT
22679
22680By default, any output produced by @var{command} is sent to
22681@value{GDBN}'s standard output. If the @var{to_string} parameter is
22682@code{True}, then output will be collected by @code{gdb.execute} and
22683returned as a string. The default is @code{False}, in which case the
5da1313b
JK
22684return value is @code{None}. If @var{to_string} is @code{True}, the
22685@value{GDBN} virtual terminal will be temporarily set to unlimited width
22686and height, and its pagination will be disabled; @pxref{Screen Size}.
d57a3c85
TJB
22687@end defun
22688
adc36818 22689@findex gdb.breakpoints
d812018b 22690@defun gdb.breakpoints ()
adc36818
PM
22691Return a sequence holding all of @value{GDBN}'s breakpoints.
22692@xref{Breakpoints In Python}, for more information.
22693@end defun
22694
8f500870 22695@findex gdb.parameter
d812018b 22696@defun gdb.parameter (parameter)
d57a3c85
TJB
22697Return the value of a @value{GDBN} parameter. @var{parameter} is a
22698string naming the parameter to look up; @var{parameter} may contain
22699spaces if the parameter has a multi-part name. For example,
22700@samp{print object} is a valid parameter name.
22701
22702If the named parameter does not exist, this function throws a
621c8364
TT
22703@code{gdb.error} (@pxref{Exception Handling}). Otherwise, the
22704parameter's value is converted to a Python value of the appropriate
22705type, and returned.
d57a3c85
TJB
22706@end defun
22707
08c637de 22708@findex gdb.history
d812018b 22709@defun gdb.history (number)
08c637de
TJB
22710Return a value from @value{GDBN}'s value history (@pxref{Value
22711History}). @var{number} indicates which history element to return.
22712If @var{number} is negative, then @value{GDBN} will take its absolute value
22713and count backward from the last element (i.e., the most recent element) to
22714find the value to return. If @var{number} is zero, then @value{GDBN} will
a0c36267 22715return the most recent element. If the element specified by @var{number}
621c8364 22716doesn't exist in the value history, a @code{gdb.error} exception will be
08c637de
TJB
22717raised.
22718
22719If no exception is raised, the return value is always an instance of
22720@code{gdb.Value} (@pxref{Values From Inferior}).
22721@end defun
22722
57a1d736 22723@findex gdb.parse_and_eval
d812018b 22724@defun gdb.parse_and_eval (expression)
57a1d736
TT
22725Parse @var{expression} as an expression in the current language,
22726evaluate it, and return the result as a @code{gdb.Value}.
22727@var{expression} must be a string.
22728
22729This function can be useful when implementing a new command
22730(@pxref{Commands In Python}), as it provides a way to parse the
22731command's argument as an expression. It is also useful simply to
22732compute values, for example, it is the only way to get the value of a
22733convenience variable (@pxref{Convenience Vars}) as a @code{gdb.Value}.
22734@end defun
22735
7efc75aa
SCR
22736@findex gdb.find_pc_line
22737@defun gdb.find_pc_line (pc)
22738Return the @code{gdb.Symtab_and_line} object corresponding to the
22739@var{pc} value. @xref{Symbol Tables In Python}. If an invalid
22740value of @var{pc} is passed as an argument, then the @code{symtab} and
22741@code{line} attributes of the returned @code{gdb.Symtab_and_line} object
22742will be @code{None} and 0 respectively.
22743@end defun
22744
ca5c20b6 22745@findex gdb.post_event
d812018b 22746@defun gdb.post_event (event)
ca5c20b6
PM
22747Put @var{event}, a callable object taking no arguments, into
22748@value{GDBN}'s internal event queue. This callable will be invoked at
22749some later point, during @value{GDBN}'s event processing. Events
22750posted using @code{post_event} will be run in the order in which they
22751were posted; however, there is no way to know when they will be
22752processed relative to other events inside @value{GDBN}.
22753
22754@value{GDBN} is not thread-safe. If your Python program uses multiple
22755threads, you must be careful to only call @value{GDBN}-specific
22756functions in the main @value{GDBN} thread. @code{post_event} ensures
22757this. For example:
22758
22759@smallexample
22760(@value{GDBP}) python
22761>import threading
22762>
22763>class Writer():
22764> def __init__(self, message):
22765> self.message = message;
22766> def __call__(self):
22767> gdb.write(self.message)
22768>
22769>class MyThread1 (threading.Thread):
22770> def run (self):
22771> gdb.post_event(Writer("Hello "))
22772>
22773>class MyThread2 (threading.Thread):
22774> def run (self):
22775> gdb.post_event(Writer("World\n"))
22776>
22777>MyThread1().start()
22778>MyThread2().start()
22779>end
22780(@value{GDBP}) Hello World
22781@end smallexample
22782@end defun
22783
99c3dc11 22784@findex gdb.write
d812018b 22785@defun gdb.write (string @r{[}, stream{]})
99c3dc11
PM
22786Print a string to @value{GDBN}'s paginated output stream. The
22787optional @var{stream} determines the stream to print to. The default
22788stream is @value{GDBN}'s standard output stream. Possible stream
22789values are:
22790
22791@table @code
22792@findex STDOUT
22793@findex gdb.STDOUT
d812018b 22794@item gdb.STDOUT
99c3dc11
PM
22795@value{GDBN}'s standard output stream.
22796
22797@findex STDERR
22798@findex gdb.STDERR
d812018b 22799@item gdb.STDERR
99c3dc11
PM
22800@value{GDBN}'s standard error stream.
22801
22802@findex STDLOG
22803@findex gdb.STDLOG
d812018b 22804@item gdb.STDLOG
99c3dc11
PM
22805@value{GDBN}'s log stream (@pxref{Logging Output}).
22806@end table
22807
d57a3c85 22808Writing to @code{sys.stdout} or @code{sys.stderr} will automatically
99c3dc11
PM
22809call this function and will automatically direct the output to the
22810relevant stream.
d57a3c85
TJB
22811@end defun
22812
22813@findex gdb.flush
d812018b 22814@defun gdb.flush ()
99c3dc11
PM
22815Flush the buffer of a @value{GDBN} paginated stream so that the
22816contents are displayed immediately. @value{GDBN} will flush the
22817contents of a stream automatically when it encounters a newline in the
22818buffer. The optional @var{stream} determines the stream to flush. The
22819default stream is @value{GDBN}'s standard output stream. Possible
22820stream values are:
22821
22822@table @code
22823@findex STDOUT
22824@findex gdb.STDOUT
d812018b 22825@item gdb.STDOUT
99c3dc11
PM
22826@value{GDBN}'s standard output stream.
22827
22828@findex STDERR
22829@findex gdb.STDERR
d812018b 22830@item gdb.STDERR
99c3dc11
PM
22831@value{GDBN}'s standard error stream.
22832
22833@findex STDLOG
22834@findex gdb.STDLOG
d812018b 22835@item gdb.STDLOG
99c3dc11
PM
22836@value{GDBN}'s log stream (@pxref{Logging Output}).
22837
22838@end table
22839
22840Flushing @code{sys.stdout} or @code{sys.stderr} will automatically
22841call this function for the relevant stream.
d57a3c85
TJB
22842@end defun
22843
f870a310 22844@findex gdb.target_charset
d812018b 22845@defun gdb.target_charset ()
f870a310
TT
22846Return the name of the current target character set (@pxref{Character
22847Sets}). This differs from @code{gdb.parameter('target-charset')} in
22848that @samp{auto} is never returned.
22849@end defun
22850
22851@findex gdb.target_wide_charset
d812018b 22852@defun gdb.target_wide_charset ()
f870a310
TT
22853Return the name of the current target wide character set
22854(@pxref{Character Sets}). This differs from
22855@code{gdb.parameter('target-wide-charset')} in that @samp{auto} is
22856never returned.
22857@end defun
22858
cb2e07a6 22859@findex gdb.solib_name
d812018b 22860@defun gdb.solib_name (address)
cb2e07a6
PM
22861Return the name of the shared library holding the given @var{address}
22862as a string, or @code{None}.
22863@end defun
22864
22865@findex gdb.decode_line
d812018b 22866@defun gdb.decode_line @r{[}expression@r{]}
cb2e07a6
PM
22867Return locations of the line specified by @var{expression}, or of the
22868current line if no argument was given. This function returns a Python
22869tuple containing two elements. The first element contains a string
22870holding any unparsed section of @var{expression} (or @code{None} if
22871the expression has been fully parsed). The second element contains
22872either @code{None} or another tuple that contains all the locations
22873that match the expression represented as @code{gdb.Symtab_and_line}
22874objects (@pxref{Symbol Tables In Python}). If @var{expression} is
22875provided, it is decoded the way that @value{GDBN}'s inbuilt
22876@code{break} or @code{edit} commands do (@pxref{Specify Location}).
22877@end defun
22878
d812018b 22879@defun gdb.prompt_hook (current_prompt)
fa3a4f15
PM
22880@anchor{prompt_hook}
22881
d17b6f81
PM
22882If @var{prompt_hook} is callable, @value{GDBN} will call the method
22883assigned to this operation before a prompt is displayed by
22884@value{GDBN}.
22885
22886The parameter @code{current_prompt} contains the current @value{GDBN}
22887prompt. This method must return a Python string, or @code{None}. If
22888a string is returned, the @value{GDBN} prompt will be set to that
22889string. If @code{None} is returned, @value{GDBN} will continue to use
22890the current prompt.
22891
22892Some prompts cannot be substituted in @value{GDBN}. Secondary prompts
22893such as those used by readline for command input, and annotation
22894related prompts are prohibited from being changed.
d812018b 22895@end defun
d17b6f81 22896
d57a3c85
TJB
22897@node Exception Handling
22898@subsubsection Exception Handling
22899@cindex python exceptions
22900@cindex exceptions, python
22901
22902When executing the @code{python} command, Python exceptions
22903uncaught within the Python code are translated to calls to
22904@value{GDBN} error-reporting mechanism. If the command that called
22905@code{python} does not handle the error, @value{GDBN} will
22906terminate it and print an error message containing the Python
22907exception name, the associated value, and the Python call stack
22908backtrace at the point where the exception was raised. Example:
22909
22910@smallexample
22911(@value{GDBP}) python print foo
22912Traceback (most recent call last):
22913 File "<string>", line 1, in <module>
22914NameError: name 'foo' is not defined
22915@end smallexample
22916
621c8364
TT
22917@value{GDBN} errors that happen in @value{GDBN} commands invoked by
22918Python code are converted to Python exceptions. The type of the
22919Python exception depends on the error.
22920
22921@ftable @code
22922@item gdb.error
22923This is the base class for most exceptions generated by @value{GDBN}.
22924It is derived from @code{RuntimeError}, for compatibility with earlier
22925versions of @value{GDBN}.
22926
22927If an error occurring in @value{GDBN} does not fit into some more
22928specific category, then the generated exception will have this type.
22929
22930@item gdb.MemoryError
22931This is a subclass of @code{gdb.error} which is thrown when an
22932operation tried to access invalid memory in the inferior.
22933
22934@item KeyboardInterrupt
22935User interrupt (via @kbd{C-c} or by typing @kbd{q} at a pagination
22936prompt) is translated to a Python @code{KeyboardInterrupt} exception.
22937@end ftable
22938
22939In all cases, your exception handler will see the @value{GDBN} error
22940message as its value and the Python call stack backtrace at the Python
22941statement closest to where the @value{GDBN} error occured as the
d57a3c85
TJB
22942traceback.
22943
07ca107c
DE
22944@findex gdb.GdbError
22945When implementing @value{GDBN} commands in Python via @code{gdb.Command},
22946it is useful to be able to throw an exception that doesn't cause a
22947traceback to be printed. For example, the user may have invoked the
22948command incorrectly. Use the @code{gdb.GdbError} exception
22949to handle this case. Example:
22950
22951@smallexample
22952(gdb) python
22953>class HelloWorld (gdb.Command):
22954> """Greet the whole world."""
22955> def __init__ (self):
7d74f244 22956> super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
07ca107c
DE
22957> def invoke (self, args, from_tty):
22958> argv = gdb.string_to_argv (args)
22959> if len (argv) != 0:
22960> raise gdb.GdbError ("hello-world takes no arguments")
22961> print "Hello, World!"
22962>HelloWorld ()
22963>end
22964(gdb) hello-world 42
22965hello-world takes no arguments
22966@end smallexample
22967
a08702d6
TJB
22968@node Values From Inferior
22969@subsubsection Values From Inferior
22970@cindex values from inferior, with Python
22971@cindex python, working with values from inferior
22972
22973@cindex @code{gdb.Value}
22974@value{GDBN} provides values it obtains from the inferior program in
22975an object of type @code{gdb.Value}. @value{GDBN} uses this object
22976for its internal bookkeeping of the inferior's values, and for
22977fetching values when necessary.
22978
22979Inferior values that are simple scalars can be used directly in
22980Python expressions that are valid for the value's data type. Here's
22981an example for an integer or floating-point value @code{some_val}:
22982
22983@smallexample
22984bar = some_val + 2
22985@end smallexample
22986
22987@noindent
22988As result of this, @code{bar} will also be a @code{gdb.Value} object
22989whose values are of the same type as those of @code{some_val}.
22990
22991Inferior values that are structures or instances of some class can
22992be accessed using the Python @dfn{dictionary syntax}. For example, if
22993@code{some_val} is a @code{gdb.Value} instance holding a structure, you
22994can access its @code{foo} element with:
22995
22996@smallexample
22997bar = some_val['foo']
22998@end smallexample
22999
23000Again, @code{bar} will also be a @code{gdb.Value} object.
23001
5374244e
PM
23002A @code{gdb.Value} that represents a function can be executed via
23003inferior function call. Any arguments provided to the call must match
23004the function's prototype, and must be provided in the order specified
23005by that prototype.
23006
23007For example, @code{some_val} is a @code{gdb.Value} instance
23008representing a function that takes two integers as arguments. To
23009execute this function, call it like so:
23010
23011@smallexample
23012result = some_val (10,20)
23013@end smallexample
23014
23015Any values returned from a function call will be stored as a
23016@code{gdb.Value}.
23017
c0c6f777 23018The following attributes are provided:
a08702d6 23019
def2b000 23020@table @code
d812018b 23021@defvar Value.address
c0c6f777
TJB
23022If this object is addressable, this read-only attribute holds a
23023@code{gdb.Value} object representing the address. Otherwise,
23024this attribute holds @code{None}.
d812018b 23025@end defvar
c0c6f777 23026
def2b000 23027@cindex optimized out value in Python
d812018b 23028@defvar Value.is_optimized_out
def2b000
TJB
23029This read-only boolean attribute is true if the compiler optimized out
23030this value, thus it is not available for fetching from the inferior.
d812018b 23031@end defvar
2c74e833 23032
d812018b 23033@defvar Value.type
2c74e833 23034The type of this @code{gdb.Value}. The value of this attribute is a
44592cc4 23035@code{gdb.Type} object (@pxref{Types In Python}).
d812018b 23036@end defvar
03f17ccf 23037
d812018b 23038@defvar Value.dynamic_type
03f17ccf 23039The dynamic type of this @code{gdb.Value}. This uses C@t{++} run-time
fccd1d1e
EZ
23040type information (@acronym{RTTI}) to determine the dynamic type of the
23041value. If this value is of class type, it will return the class in
23042which the value is embedded, if any. If this value is of pointer or
23043reference to a class type, it will compute the dynamic type of the
23044referenced object, and return a pointer or reference to that type,
23045respectively. In all other cases, it will return the value's static
23046type.
23047
23048Note that this feature will only work when debugging a C@t{++} program
23049that includes @acronym{RTTI} for the object in question. Otherwise,
23050it will just return the static type of the value as in @kbd{ptype foo}
23051(@pxref{Symbols, ptype}).
d812018b 23052@end defvar
22dbab46
PK
23053
23054@defvar Value.is_lazy
23055The value of this read-only boolean attribute is @code{True} if this
23056@code{gdb.Value} has not yet been fetched from the inferior.
23057@value{GDBN} does not fetch values until necessary, for efficiency.
23058For example:
23059
23060@smallexample
23061myval = gdb.parse_and_eval ('somevar')
23062@end smallexample
23063
23064The value of @code{somevar} is not fetched at this time. It will be
23065fetched when the value is needed, or when the @code{fetch_lazy}
23066method is invoked.
23067@end defvar
def2b000
TJB
23068@end table
23069
23070The following methods are provided:
23071
23072@table @code
d812018b 23073@defun Value.__init__ (@var{val})
e8467610
TT
23074Many Python values can be converted directly to a @code{gdb.Value} via
23075this object initializer. Specifically:
23076
23077@table @asis
23078@item Python boolean
23079A Python boolean is converted to the boolean type from the current
23080language.
23081
23082@item Python integer
23083A Python integer is converted to the C @code{long} type for the
23084current architecture.
23085
23086@item Python long
23087A Python long is converted to the C @code{long long} type for the
23088current architecture.
23089
23090@item Python float
23091A Python float is converted to the C @code{double} type for the
23092current architecture.
23093
23094@item Python string
23095A Python string is converted to a target string, using the current
23096target encoding.
23097
23098@item @code{gdb.Value}
23099If @code{val} is a @code{gdb.Value}, then a copy of the value is made.
23100
23101@item @code{gdb.LazyString}
23102If @code{val} is a @code{gdb.LazyString} (@pxref{Lazy Strings In
23103Python}), then the lazy string's @code{value} method is called, and
23104its result is used.
23105@end table
d812018b 23106@end defun
e8467610 23107
d812018b 23108@defun Value.cast (type)
14ff2235
PM
23109Return a new instance of @code{gdb.Value} that is the result of
23110casting this instance to the type described by @var{type}, which must
23111be a @code{gdb.Type} object. If the cast cannot be performed for some
23112reason, this method throws an exception.
d812018b 23113@end defun
14ff2235 23114
d812018b 23115@defun Value.dereference ()
def2b000
TJB
23116For pointer data types, this method returns a new @code{gdb.Value} object
23117whose contents is the object pointed to by the pointer. For example, if
23118@code{foo} is a C pointer to an @code{int}, declared in your C program as
a08702d6
TJB
23119
23120@smallexample
23121int *foo;
23122@end smallexample
23123
23124@noindent
23125then you can use the corresponding @code{gdb.Value} to access what
23126@code{foo} points to like this:
23127
23128@smallexample
23129bar = foo.dereference ()
23130@end smallexample
23131
23132The result @code{bar} will be a @code{gdb.Value} object holding the
23133value pointed to by @code{foo}.
7b282c5a
SCR
23134
23135A similar function @code{Value.referenced_value} exists which also
23136returns @code{gdb.Value} objects corresonding to the values pointed to
23137by pointer values (and additionally, values referenced by reference
23138values). However, the behavior of @code{Value.dereference}
23139differs from @code{Value.referenced_value} by the fact that the
23140behavior of @code{Value.dereference} is identical to applying the C
23141unary operator @code{*} on a given value. For example, consider a
23142reference to a pointer @code{ptrref}, declared in your C@t{++} program
23143as
23144
23145@smallexample
23146typedef int *intptr;
23147...
23148int val = 10;
23149intptr ptr = &val;
23150intptr &ptrref = ptr;
23151@end smallexample
23152
23153Though @code{ptrref} is a reference value, one can apply the method
23154@code{Value.dereference} to the @code{gdb.Value} object corresponding
23155to it and obtain a @code{gdb.Value} which is identical to that
23156corresponding to @code{val}. However, if you apply the method
23157@code{Value.referenced_value}, the result would be a @code{gdb.Value}
23158object identical to that corresponding to @code{ptr}.
23159
23160@smallexample
23161py_ptrref = gdb.parse_and_eval ("ptrref")
23162py_val = py_ptrref.dereference ()
23163py_ptr = py_ptrref.referenced_value ()
23164@end smallexample
23165
23166The @code{gdb.Value} object @code{py_val} is identical to that
23167corresponding to @code{val}, and @code{py_ptr} is identical to that
23168corresponding to @code{ptr}. In general, @code{Value.dereference} can
23169be applied whenever the C unary operator @code{*} can be applied
23170to the corresponding C value. For those cases where applying both
23171@code{Value.dereference} and @code{Value.referenced_value} is allowed,
23172the results obtained need not be identical (as we have seen in the above
23173example). The results are however identical when applied on
23174@code{gdb.Value} objects corresponding to pointers (@code{gdb.Value}
23175objects with type code @code{TYPE_CODE_PTR}) in a C/C@t{++} program.
23176@end defun
23177
23178@defun Value.referenced_value ()
23179For pointer or reference data types, this method returns a new
23180@code{gdb.Value} object corresponding to the value referenced by the
23181pointer/reference value. For pointer data types,
23182@code{Value.dereference} and @code{Value.referenced_value} produce
23183identical results. The difference between these methods is that
23184@code{Value.dereference} cannot get the values referenced by reference
23185values. For example, consider a reference to an @code{int}, declared
23186in your C@t{++} program as
23187
23188@smallexample
23189int val = 10;
23190int &ref = val;
23191@end smallexample
23192
23193@noindent
23194then applying @code{Value.dereference} to the @code{gdb.Value} object
23195corresponding to @code{ref} will result in an error, while applying
23196@code{Value.referenced_value} will result in a @code{gdb.Value} object
23197identical to that corresponding to @code{val}.
23198
23199@smallexample
23200py_ref = gdb.parse_and_eval ("ref")
23201er_ref = py_ref.dereference () # Results in error
23202py_val = py_ref.referenced_value () # Returns the referenced value
23203@end smallexample
23204
23205The @code{gdb.Value} object @code{py_val} is identical to that
23206corresponding to @code{val}.
d812018b 23207@end defun
a08702d6 23208
d812018b 23209@defun Value.dynamic_cast (type)
f9ffd4bb
TT
23210Like @code{Value.cast}, but works as if the C@t{++} @code{dynamic_cast}
23211operator were used. Consult a C@t{++} reference for details.
d812018b 23212@end defun
f9ffd4bb 23213
d812018b 23214@defun Value.reinterpret_cast (type)
f9ffd4bb
TT
23215Like @code{Value.cast}, but works as if the C@t{++} @code{reinterpret_cast}
23216operator were used. Consult a C@t{++} reference for details.
d812018b 23217@end defun
f9ffd4bb 23218
d812018b 23219@defun Value.string (@r{[}encoding@r{[}, errors@r{[}, length@r{]]]})
b6cb8e7d
TJB
23220If this @code{gdb.Value} represents a string, then this method
23221converts the contents to a Python string. Otherwise, this method will
23222throw an exception.
23223
23224Strings are recognized in a language-specific way; whether a given
23225@code{gdb.Value} represents a string is determined by the current
23226language.
23227
23228For C-like languages, a value is a string if it is a pointer to or an
23229array of characters or ints. The string is assumed to be terminated
fbb8f299
PM
23230by a zero of the appropriate width. However if the optional length
23231argument is given, the string will be converted to that given length,
23232ignoring any embedded zeros that the string may contain.
b6cb8e7d
TJB
23233
23234If the optional @var{encoding} argument is given, it must be a string
23235naming the encoding of the string in the @code{gdb.Value}, such as
23236@code{"ascii"}, @code{"iso-8859-6"} or @code{"utf-8"}. It accepts
23237the same encodings as the corresponding argument to Python's
23238@code{string.decode} method, and the Python codec machinery will be used
23239to convert the string. If @var{encoding} is not given, or if
23240@var{encoding} is the empty string, then either the @code{target-charset}
23241(@pxref{Character Sets}) will be used, or a language-specific encoding
23242will be used, if the current language is able to supply one.
23243
23244The optional @var{errors} argument is the same as the corresponding
23245argument to Python's @code{string.decode} method.
fbb8f299
PM
23246
23247If the optional @var{length} argument is given, the string will be
23248fetched and converted to the given length.
d812018b 23249@end defun
be759fcf 23250
d812018b 23251@defun Value.lazy_string (@r{[}encoding @r{[}, length@r{]]})
be759fcf
PM
23252If this @code{gdb.Value} represents a string, then this method
23253converts the contents to a @code{gdb.LazyString} (@pxref{Lazy Strings
23254In Python}). Otherwise, this method will throw an exception.
23255
23256If the optional @var{encoding} argument is given, it must be a string
23257naming the encoding of the @code{gdb.LazyString}. Some examples are:
23258@samp{ascii}, @samp{iso-8859-6} or @samp{utf-8}. If the
23259@var{encoding} argument is an encoding that @value{GDBN} does
23260recognize, @value{GDBN} will raise an error.
23261
23262When a lazy string is printed, the @value{GDBN} encoding machinery is
23263used to convert the string during printing. If the optional
23264@var{encoding} argument is not provided, or is an empty string,
23265@value{GDBN} will automatically select the encoding most suitable for
23266the string type. For further information on encoding in @value{GDBN}
23267please see @ref{Character Sets}.
23268
23269If the optional @var{length} argument is given, the string will be
23270fetched and encoded to the length of characters specified. If
23271the @var{length} argument is not provided, the string will be fetched
23272and encoded until a null of appropriate width is found.
d812018b 23273@end defun
22dbab46
PK
23274
23275@defun Value.fetch_lazy ()
23276If the @code{gdb.Value} object is currently a lazy value
23277(@code{gdb.Value.is_lazy} is @code{True}), then the value is
23278fetched from the inferior. Any errors that occur in the process
23279will produce a Python exception.
23280
23281If the @code{gdb.Value} object is not a lazy value, this method
23282has no effect.
23283
23284This method does not return a value.
23285@end defun
23286
def2b000 23287@end table
b6cb8e7d 23288
2c74e833
TT
23289@node Types In Python
23290@subsubsection Types In Python
23291@cindex types in Python
23292@cindex Python, working with types
23293
23294@tindex gdb.Type
23295@value{GDBN} represents types from the inferior using the class
23296@code{gdb.Type}.
23297
23298The following type-related functions are available in the @code{gdb}
23299module:
23300
23301@findex gdb.lookup_type
d812018b 23302@defun gdb.lookup_type (name @r{[}, block@r{]})
2c74e833
TT
23303This function looks up a type by name. @var{name} is the name of the
23304type to look up. It must be a string.
23305
5107b149
PM
23306If @var{block} is given, then @var{name} is looked up in that scope.
23307Otherwise, it is searched for globally.
23308
2c74e833
TT
23309Ordinarily, this function will return an instance of @code{gdb.Type}.
23310If the named type cannot be found, it will throw an exception.
23311@end defun
23312
a73bb892
PK
23313If the type is a structure or class type, or an enum type, the fields
23314of that type can be accessed using the Python @dfn{dictionary syntax}.
23315For example, if @code{some_type} is a @code{gdb.Type} instance holding
23316a structure type, you can access its @code{foo} field with:
23317
23318@smallexample
23319bar = some_type['foo']
23320@end smallexample
23321
23322@code{bar} will be a @code{gdb.Field} object; see below under the
23323description of the @code{Type.fields} method for a description of the
23324@code{gdb.Field} class.
23325
2c74e833
TT
23326An instance of @code{Type} has the following attributes:
23327
23328@table @code
d812018b 23329@defvar Type.code
2c74e833
TT
23330The type code for this type. The type code will be one of the
23331@code{TYPE_CODE_} constants defined below.
d812018b 23332@end defvar
2c74e833 23333
d812018b 23334@defvar Type.sizeof
2c74e833
TT
23335The size of this type, in target @code{char} units. Usually, a
23336target's @code{char} type will be an 8-bit byte. However, on some
23337unusual platforms, this type may have a different size.
d812018b 23338@end defvar
2c74e833 23339
d812018b 23340@defvar Type.tag
2c74e833
TT
23341The tag name for this type. The tag name is the name after
23342@code{struct}, @code{union}, or @code{enum} in C and C@t{++}; not all
23343languages have this concept. If this type has no tag name, then
23344@code{None} is returned.
d812018b 23345@end defvar
2c74e833
TT
23346@end table
23347
23348The following methods are provided:
23349
23350@table @code
d812018b 23351@defun Type.fields ()
2c74e833
TT
23352For structure and union types, this method returns the fields. Range
23353types have two fields, the minimum and maximum values. Enum types
23354have one field per enum constant. Function and method types have one
23355field per parameter. The base types of C@t{++} classes are also
23356represented as fields. If the type has no fields, or does not fit
23357into one of these categories, an empty sequence will be returned.
23358
a73bb892 23359Each field is a @code{gdb.Field} object, with some pre-defined attributes:
2c74e833
TT
23360@table @code
23361@item bitpos
23362This attribute is not available for @code{static} fields (as in
23363C@t{++} or Java). For non-@code{static} fields, the value is the bit
a9f54f60
TT
23364position of the field. For @code{enum} fields, the value is the
23365enumeration member's integer representation.
2c74e833
TT
23366
23367@item name
23368The name of the field, or @code{None} for anonymous fields.
23369
23370@item artificial
23371This is @code{True} if the field is artificial, usually meaning that
23372it was provided by the compiler and not the user. This attribute is
23373always provided, and is @code{False} if the field is not artificial.
23374
bfd31e71
PM
23375@item is_base_class
23376This is @code{True} if the field represents a base class of a C@t{++}
23377structure. This attribute is always provided, and is @code{False}
23378if the field is not a base class of the type that is the argument of
23379@code{fields}, or if that type was not a C@t{++} class.
23380
2c74e833
TT
23381@item bitsize
23382If the field is packed, or is a bitfield, then this will have a
23383non-zero value, which is the size of the field in bits. Otherwise,
23384this will be zero; in this case the field's size is given by its type.
23385
23386@item type
23387The type of the field. This is usually an instance of @code{Type},
23388but it can be @code{None} in some situations.
23389@end table
d812018b 23390@end defun
2c74e833 23391
d812018b 23392@defun Type.array (@var{n1} @r{[}, @var{n2}@r{]})
702c2711
TT
23393Return a new @code{gdb.Type} object which represents an array of this
23394type. If one argument is given, it is the inclusive upper bound of
23395the array; in this case the lower bound is zero. If two arguments are
23396given, the first argument is the lower bound of the array, and the
23397second argument is the upper bound of the array. An array's length
23398must not be negative, but the bounds can be.
d812018b 23399@end defun
702c2711 23400
a72c3253
DE
23401@defun Type.vector (@var{n1} @r{[}, @var{n2}@r{]})
23402Return a new @code{gdb.Type} object which represents a vector of this
23403type. If one argument is given, it is the inclusive upper bound of
23404the vector; in this case the lower bound is zero. If two arguments are
23405given, the first argument is the lower bound of the vector, and the
23406second argument is the upper bound of the vector. A vector's length
23407must not be negative, but the bounds can be.
23408
23409The difference between an @code{array} and a @code{vector} is that
23410arrays behave like in C: when used in expressions they decay to a pointer
23411to the first element whereas vectors are treated as first class values.
23412@end defun
23413
d812018b 23414@defun Type.const ()
2c74e833
TT
23415Return a new @code{gdb.Type} object which represents a
23416@code{const}-qualified variant of this type.
d812018b 23417@end defun
2c74e833 23418
d812018b 23419@defun Type.volatile ()
2c74e833
TT
23420Return a new @code{gdb.Type} object which represents a
23421@code{volatile}-qualified variant of this type.
d812018b 23422@end defun
2c74e833 23423
d812018b 23424@defun Type.unqualified ()
2c74e833
TT
23425Return a new @code{gdb.Type} object which represents an unqualified
23426variant of this type. That is, the result is neither @code{const} nor
23427@code{volatile}.
d812018b 23428@end defun
2c74e833 23429
d812018b 23430@defun Type.range ()
361ae042
PM
23431Return a Python @code{Tuple} object that contains two elements: the
23432low bound of the argument type and the high bound of that type. If
23433the type does not have a range, @value{GDBN} will raise a
621c8364 23434@code{gdb.error} exception (@pxref{Exception Handling}).
d812018b 23435@end defun
361ae042 23436
d812018b 23437@defun Type.reference ()
2c74e833
TT
23438Return a new @code{gdb.Type} object which represents a reference to this
23439type.
d812018b 23440@end defun
2c74e833 23441
d812018b 23442@defun Type.pointer ()
7a6973ad
TT
23443Return a new @code{gdb.Type} object which represents a pointer to this
23444type.
d812018b 23445@end defun
7a6973ad 23446
d812018b 23447@defun Type.strip_typedefs ()
2c74e833
TT
23448Return a new @code{gdb.Type} that represents the real type,
23449after removing all layers of typedefs.
d812018b 23450@end defun
2c74e833 23451
d812018b 23452@defun Type.target ()
2c74e833
TT
23453Return a new @code{gdb.Type} object which represents the target type
23454of this type.
23455
23456For a pointer type, the target type is the type of the pointed-to
23457object. For an array type (meaning C-like arrays), the target type is
23458the type of the elements of the array. For a function or method type,
23459the target type is the type of the return value. For a complex type,
23460the target type is the type of the elements. For a typedef, the
23461target type is the aliased type.
23462
23463If the type does not have a target, this method will throw an
23464exception.
d812018b 23465@end defun
2c74e833 23466
d812018b 23467@defun Type.template_argument (n @r{[}, block@r{]})
2c74e833
TT
23468If this @code{gdb.Type} is an instantiation of a template, this will
23469return a new @code{gdb.Type} which represents the type of the
23470@var{n}th template argument.
23471
23472If this @code{gdb.Type} is not a template type, this will throw an
23473exception. Ordinarily, only C@t{++} code will have template types.
23474
5107b149
PM
23475If @var{block} is given, then @var{name} is looked up in that scope.
23476Otherwise, it is searched for globally.
d812018b 23477@end defun
2c74e833
TT
23478@end table
23479
23480
23481Each type has a code, which indicates what category this type falls
23482into. The available type categories are represented by constants
23483defined in the @code{gdb} module:
23484
23485@table @code
23486@findex TYPE_CODE_PTR
23487@findex gdb.TYPE_CODE_PTR
d812018b 23488@item gdb.TYPE_CODE_PTR
2c74e833
TT
23489The type is a pointer.
23490
23491@findex TYPE_CODE_ARRAY
23492@findex gdb.TYPE_CODE_ARRAY
d812018b 23493@item gdb.TYPE_CODE_ARRAY
2c74e833
TT
23494The type is an array.
23495
23496@findex TYPE_CODE_STRUCT
23497@findex gdb.TYPE_CODE_STRUCT
d812018b 23498@item gdb.TYPE_CODE_STRUCT
2c74e833
TT
23499The type is a structure.
23500
23501@findex TYPE_CODE_UNION
23502@findex gdb.TYPE_CODE_UNION
d812018b 23503@item gdb.TYPE_CODE_UNION
2c74e833
TT
23504The type is a union.
23505
23506@findex TYPE_CODE_ENUM
23507@findex gdb.TYPE_CODE_ENUM
d812018b 23508@item gdb.TYPE_CODE_ENUM
2c74e833
TT
23509The type is an enum.
23510
23511@findex TYPE_CODE_FLAGS
23512@findex gdb.TYPE_CODE_FLAGS
d812018b 23513@item gdb.TYPE_CODE_FLAGS
2c74e833
TT
23514A bit flags type, used for things such as status registers.
23515
23516@findex TYPE_CODE_FUNC
23517@findex gdb.TYPE_CODE_FUNC
d812018b 23518@item gdb.TYPE_CODE_FUNC
2c74e833
TT
23519The type is a function.
23520
23521@findex TYPE_CODE_INT
23522@findex gdb.TYPE_CODE_INT
d812018b 23523@item gdb.TYPE_CODE_INT
2c74e833
TT
23524The type is an integer type.
23525
23526@findex TYPE_CODE_FLT
23527@findex gdb.TYPE_CODE_FLT
d812018b 23528@item gdb.TYPE_CODE_FLT
2c74e833
TT
23529A floating point type.
23530
23531@findex TYPE_CODE_VOID
23532@findex gdb.TYPE_CODE_VOID
d812018b 23533@item gdb.TYPE_CODE_VOID
2c74e833
TT
23534The special type @code{void}.
23535
23536@findex TYPE_CODE_SET
23537@findex gdb.TYPE_CODE_SET
d812018b 23538@item gdb.TYPE_CODE_SET
2c74e833
TT
23539A Pascal set type.
23540
23541@findex TYPE_CODE_RANGE
23542@findex gdb.TYPE_CODE_RANGE
d812018b 23543@item gdb.TYPE_CODE_RANGE
2c74e833
TT
23544A range type, that is, an integer type with bounds.
23545
23546@findex TYPE_CODE_STRING
23547@findex gdb.TYPE_CODE_STRING
d812018b 23548@item gdb.TYPE_CODE_STRING
2c74e833
TT
23549A string type. Note that this is only used for certain languages with
23550language-defined string types; C strings are not represented this way.
23551
23552@findex TYPE_CODE_BITSTRING
23553@findex gdb.TYPE_CODE_BITSTRING
d812018b 23554@item gdb.TYPE_CODE_BITSTRING
2c74e833
TT
23555A string of bits.
23556
23557@findex TYPE_CODE_ERROR
23558@findex gdb.TYPE_CODE_ERROR
d812018b 23559@item gdb.TYPE_CODE_ERROR
2c74e833
TT
23560An unknown or erroneous type.
23561
23562@findex TYPE_CODE_METHOD
23563@findex gdb.TYPE_CODE_METHOD
d812018b 23564@item gdb.TYPE_CODE_METHOD
2c74e833
TT
23565A method type, as found in C@t{++} or Java.
23566
23567@findex TYPE_CODE_METHODPTR
23568@findex gdb.TYPE_CODE_METHODPTR
d812018b 23569@item gdb.TYPE_CODE_METHODPTR
2c74e833
TT
23570A pointer-to-member-function.
23571
23572@findex TYPE_CODE_MEMBERPTR
23573@findex gdb.TYPE_CODE_MEMBERPTR
d812018b 23574@item gdb.TYPE_CODE_MEMBERPTR
2c74e833
TT
23575A pointer-to-member.
23576
23577@findex TYPE_CODE_REF
23578@findex gdb.TYPE_CODE_REF
d812018b 23579@item gdb.TYPE_CODE_REF
2c74e833
TT
23580A reference type.
23581
23582@findex TYPE_CODE_CHAR
23583@findex gdb.TYPE_CODE_CHAR
d812018b 23584@item gdb.TYPE_CODE_CHAR
2c74e833
TT
23585A character type.
23586
23587@findex TYPE_CODE_BOOL
23588@findex gdb.TYPE_CODE_BOOL
d812018b 23589@item gdb.TYPE_CODE_BOOL
2c74e833
TT
23590A boolean type.
23591
23592@findex TYPE_CODE_COMPLEX
23593@findex gdb.TYPE_CODE_COMPLEX
d812018b 23594@item gdb.TYPE_CODE_COMPLEX
2c74e833
TT
23595A complex float type.
23596
23597@findex TYPE_CODE_TYPEDEF
23598@findex gdb.TYPE_CODE_TYPEDEF
d812018b 23599@item gdb.TYPE_CODE_TYPEDEF
2c74e833
TT
23600A typedef to some other type.
23601
23602@findex TYPE_CODE_NAMESPACE
23603@findex gdb.TYPE_CODE_NAMESPACE
d812018b 23604@item gdb.TYPE_CODE_NAMESPACE
2c74e833
TT
23605A C@t{++} namespace.
23606
23607@findex TYPE_CODE_DECFLOAT
23608@findex gdb.TYPE_CODE_DECFLOAT
d812018b 23609@item gdb.TYPE_CODE_DECFLOAT
2c74e833
TT
23610A decimal floating point type.
23611
23612@findex TYPE_CODE_INTERNAL_FUNCTION
23613@findex gdb.TYPE_CODE_INTERNAL_FUNCTION
d812018b 23614@item gdb.TYPE_CODE_INTERNAL_FUNCTION
2c74e833
TT
23615A function internal to @value{GDBN}. This is the type used to represent
23616convenience functions.
23617@end table
23618
0e3509db
DE
23619Further support for types is provided in the @code{gdb.types}
23620Python module (@pxref{gdb.types}).
23621
4c374409
JK
23622@node Pretty Printing API
23623@subsubsection Pretty Printing API
a6bac58e 23624
4c374409 23625An example output is provided (@pxref{Pretty Printing}).
a6bac58e
TT
23626
23627A pretty-printer is just an object that holds a value and implements a
23628specific interface, defined here.
23629
d812018b 23630@defun pretty_printer.children (self)
a6bac58e
TT
23631@value{GDBN} will call this method on a pretty-printer to compute the
23632children of the pretty-printer's value.
23633
23634This method must return an object conforming to the Python iterator
23635protocol. Each item returned by the iterator must be a tuple holding
23636two elements. The first element is the ``name'' of the child; the
23637second element is the child's value. The value can be any Python
23638object which is convertible to a @value{GDBN} value.
23639
23640This method is optional. If it does not exist, @value{GDBN} will act
23641as though the value has no children.
d812018b 23642@end defun
a6bac58e 23643
d812018b 23644@defun pretty_printer.display_hint (self)
a6bac58e
TT
23645The CLI may call this method and use its result to change the
23646formatting of a value. The result will also be supplied to an MI
23647consumer as a @samp{displayhint} attribute of the variable being
23648printed.
23649
23650This method is optional. If it does exist, this method must return a
23651string.
23652
23653Some display hints are predefined by @value{GDBN}:
23654
23655@table @samp
23656@item array
23657Indicate that the object being printed is ``array-like''. The CLI
23658uses this to respect parameters such as @code{set print elements} and
23659@code{set print array}.
23660
23661@item map
23662Indicate that the object being printed is ``map-like'', and that the
23663children of this value can be assumed to alternate between keys and
23664values.
23665
23666@item string
23667Indicate that the object being printed is ``string-like''. If the
23668printer's @code{to_string} method returns a Python string of some
23669kind, then @value{GDBN} will call its internal language-specific
23670string-printing function to format the string. For the CLI this means
23671adding quotation marks, possibly escaping some characters, respecting
23672@code{set print elements}, and the like.
23673@end table
d812018b 23674@end defun
a6bac58e 23675
d812018b 23676@defun pretty_printer.to_string (self)
a6bac58e
TT
23677@value{GDBN} will call this method to display the string
23678representation of the value passed to the object's constructor.
23679
23680When printing from the CLI, if the @code{to_string} method exists,
23681then @value{GDBN} will prepend its result to the values returned by
23682@code{children}. Exactly how this formatting is done is dependent on
23683the display hint, and may change as more hints are added. Also,
23684depending on the print settings (@pxref{Print Settings}), the CLI may
23685print just the result of @code{to_string} in a stack trace, omitting
23686the result of @code{children}.
23687
23688If this method returns a string, it is printed verbatim.
23689
23690Otherwise, if this method returns an instance of @code{gdb.Value},
23691then @value{GDBN} prints this value. This may result in a call to
23692another pretty-printer.
23693
23694If instead the method returns a Python value which is convertible to a
23695@code{gdb.Value}, then @value{GDBN} performs the conversion and prints
23696the resulting value. Again, this may result in a call to another
23697pretty-printer. Python scalars (integers, floats, and booleans) and
23698strings are convertible to @code{gdb.Value}; other types are not.
23699
79f283fe
PM
23700Finally, if this method returns @code{None} then no further operations
23701are peformed in this method and nothing is printed.
23702
a6bac58e 23703If the result is not one of these types, an exception is raised.
d812018b 23704@end defun
a6bac58e 23705
464b3efb
TT
23706@value{GDBN} provides a function which can be used to look up the
23707default pretty-printer for a @code{gdb.Value}:
23708
23709@findex gdb.default_visualizer
d812018b 23710@defun gdb.default_visualizer (value)
464b3efb
TT
23711This function takes a @code{gdb.Value} object as an argument. If a
23712pretty-printer for this value exists, then it is returned. If no such
23713printer exists, then this returns @code{None}.
23714@end defun
23715
a6bac58e
TT
23716@node Selecting Pretty-Printers
23717@subsubsection Selecting Pretty-Printers
23718
23719The Python list @code{gdb.pretty_printers} contains an array of
967cf477 23720functions or callable objects that have been registered via addition
7b51bc51
DE
23721as a pretty-printer. Printers in this list are called @code{global}
23722printers, they're available when debugging all inferiors.
fa33c3cd 23723Each @code{gdb.Progspace} contains a @code{pretty_printers} attribute.
a6bac58e
TT
23724Each @code{gdb.Objfile} also contains a @code{pretty_printers}
23725attribute.
23726
7b51bc51 23727Each function on these lists is passed a single @code{gdb.Value}
a6bac58e 23728argument and should return a pretty-printer object conforming to the
4c374409 23729interface definition above (@pxref{Pretty Printing API}). If a function
a6bac58e
TT
23730cannot create a pretty-printer for the value, it should return
23731@code{None}.
23732
23733@value{GDBN} first checks the @code{pretty_printers} attribute of each
fa33c3cd 23734@code{gdb.Objfile} in the current program space and iteratively calls
7b51bc51
DE
23735each enabled lookup routine in the list for that @code{gdb.Objfile}
23736until it receives a pretty-printer object.
fa33c3cd
DE
23737If no pretty-printer is found in the objfile lists, @value{GDBN} then
23738searches the pretty-printer list of the current program space,
967cf477 23739calling each enabled function until an object is returned.
a6bac58e 23740After these lists have been exhausted, it tries the global
967cf477 23741@code{gdb.pretty_printers} list, again calling each enabled function until an
a6bac58e
TT
23742object is returned.
23743
23744The order in which the objfiles are searched is not specified. For a
23745given list, functions are always invoked from the head of the list,
23746and iterated over sequentially until the end of the list, or a printer
23747object is returned.
23748
7b51bc51
DE
23749For various reasons a pretty-printer may not work.
23750For example, the underlying data structure may have changed and
23751the pretty-printer is out of date.
23752
23753The consequences of a broken pretty-printer are severe enough that
23754@value{GDBN} provides support for enabling and disabling individual
23755printers. For example, if @code{print frame-arguments} is on,
23756a backtrace can become highly illegible if any argument is printed
23757with a broken printer.
23758
23759Pretty-printers are enabled and disabled by attaching an @code{enabled}
23760attribute to the registered function or callable object. If this attribute
23761is present and its value is @code{False}, the printer is disabled, otherwise
23762the printer is enabled.
23763
23764@node Writing a Pretty-Printer
23765@subsubsection Writing a Pretty-Printer
23766@cindex writing a pretty-printer
23767
23768A pretty-printer consists of two parts: a lookup function to detect
23769if the type is supported, and the printer itself.
23770
a6bac58e 23771Here is an example showing how a @code{std::string} printer might be
7b51bc51
DE
23772written. @xref{Pretty Printing API}, for details on the API this class
23773must provide.
a6bac58e
TT
23774
23775@smallexample
7b51bc51 23776class StdStringPrinter(object):
a6bac58e
TT
23777 "Print a std::string"
23778
7b51bc51 23779 def __init__(self, val):
a6bac58e
TT
23780 self.val = val
23781
7b51bc51 23782 def to_string(self):
a6bac58e
TT
23783 return self.val['_M_dataplus']['_M_p']
23784
7b51bc51 23785 def display_hint(self):
a6bac58e
TT
23786 return 'string'
23787@end smallexample
23788
23789And here is an example showing how a lookup function for the printer
23790example above might be written.
23791
23792@smallexample
7b51bc51 23793def str_lookup_function(val):
a6bac58e 23794 lookup_tag = val.type.tag
a6bac58e
TT
23795 if lookup_tag == None:
23796 return None
7b51bc51
DE
23797 regex = re.compile("^std::basic_string<char,.*>$")
23798 if regex.match(lookup_tag):
23799 return StdStringPrinter(val)
a6bac58e
TT
23800 return None
23801@end smallexample
23802
23803The example lookup function extracts the value's type, and attempts to
23804match it to a type that it can pretty-print. If it is a type the
23805printer can pretty-print, it will return a printer object. If not, it
23806returns @code{None}.
23807
23808We recommend that you put your core pretty-printers into a Python
23809package. If your pretty-printers are for use with a library, we
23810further recommend embedding a version number into the package name.
23811This practice will enable @value{GDBN} to load multiple versions of
23812your pretty-printers at the same time, because they will have
23813different names.
23814
bf88dd68 23815You should write auto-loaded code (@pxref{Python Auto-loading}) such that it
a6bac58e
TT
23816can be evaluated multiple times without changing its meaning. An
23817ideal auto-load file will consist solely of @code{import}s of your
23818printer modules, followed by a call to a register pretty-printers with
23819the current objfile.
23820
23821Taken as a whole, this approach will scale nicely to multiple
23822inferiors, each potentially using a different library version.
23823Embedding a version number in the Python package name will ensure that
23824@value{GDBN} is able to load both sets of printers simultaneously.
23825Then, because the search for pretty-printers is done by objfile, and
23826because your auto-loaded code took care to register your library's
23827printers with a specific objfile, @value{GDBN} will find the correct
23828printers for the specific version of the library used by each
23829inferior.
23830
4c374409 23831To continue the @code{std::string} example (@pxref{Pretty Printing API}),
a6bac58e
TT
23832this code might appear in @code{gdb.libstdcxx.v6}:
23833
23834@smallexample
7b51bc51 23835def register_printers(objfile):
ae6f0d5b 23836 objfile.pretty_printers.append(str_lookup_function)
a6bac58e
TT
23837@end smallexample
23838
23839@noindent
23840And then the corresponding contents of the auto-load file would be:
23841
23842@smallexample
23843import gdb.libstdcxx.v6
7b51bc51 23844gdb.libstdcxx.v6.register_printers(gdb.current_objfile())
a6bac58e
TT
23845@end smallexample
23846
7b51bc51
DE
23847The previous example illustrates a basic pretty-printer.
23848There are a few things that can be improved on.
23849The printer doesn't have a name, making it hard to identify in a
23850list of installed printers. The lookup function has a name, but
23851lookup functions can have arbitrary, even identical, names.
967cf477 23852
7b51bc51
DE
23853Second, the printer only handles one type, whereas a library typically has
23854several types. One could install a lookup function for each desired type
23855in the library, but one could also have a single lookup function recognize
23856several types. The latter is the conventional way this is handled.
23857If a pretty-printer can handle multiple data types, then its
23858@dfn{subprinters} are the printers for the individual data types.
967cf477 23859
7b51bc51
DE
23860The @code{gdb.printing} module provides a formal way of solving these
23861problems (@pxref{gdb.printing}).
23862Here is another example that handles multiple types.
967cf477 23863
7b51bc51
DE
23864These are the types we are going to pretty-print:
23865
23866@smallexample
23867struct foo @{ int a, b; @};
23868struct bar @{ struct foo x, y; @};
23869@end smallexample
23870
23871Here are the printers:
23872
23873@smallexample
23874class fooPrinter:
23875 """Print a foo object."""
23876
23877 def __init__(self, val):
23878 self.val = val
23879
23880 def to_string(self):
23881 return ("a=<" + str(self.val["a"]) +
23882 "> b=<" + str(self.val["b"]) + ">")
23883
23884class barPrinter:
23885 """Print a bar object."""
23886
23887 def __init__(self, val):
23888 self.val = val
23889
23890 def to_string(self):
23891 return ("x=<" + str(self.val["x"]) +
23892 "> y=<" + str(self.val["y"]) + ">")
23893@end smallexample
23894
23895This example doesn't need a lookup function, that is handled by the
23896@code{gdb.printing} module. Instead a function is provided to build up
23897the object that handles the lookup.
23898
23899@smallexample
23900import gdb.printing
23901
23902def build_pretty_printer():
23903 pp = gdb.printing.RegexpCollectionPrettyPrinter(
23904 "my_library")
23905 pp.add_printer('foo', '^foo$', fooPrinter)
23906 pp.add_printer('bar', '^bar$', barPrinter)
23907 return pp
23908@end smallexample
23909
23910And here is the autoload support:
23911
23912@smallexample
23913import gdb.printing
23914import my_library
23915gdb.printing.register_pretty_printer(
23916 gdb.current_objfile(),
23917 my_library.build_pretty_printer())
23918@end smallexample
23919
23920Finally, when this printer is loaded into @value{GDBN}, here is the
23921corresponding output of @samp{info pretty-printer}:
23922
23923@smallexample
23924(gdb) info pretty-printer
23925my_library.so:
23926 my_library
23927 foo
23928 bar
23929@end smallexample
967cf477 23930
595939de
PM
23931@node Inferiors In Python
23932@subsubsection Inferiors In Python
505500db 23933@cindex inferiors in Python
595939de
PM
23934
23935@findex gdb.Inferior
23936Programs which are being run under @value{GDBN} are called inferiors
23937(@pxref{Inferiors and Programs}). Python scripts can access
23938information about and manipulate inferiors controlled by @value{GDBN}
23939via objects of the @code{gdb.Inferior} class.
23940
23941The following inferior-related functions are available in the @code{gdb}
23942module:
23943
d812018b 23944@defun gdb.inferiors ()
595939de
PM
23945Return a tuple containing all inferior objects.
23946@end defun
23947
d812018b 23948@defun gdb.selected_inferior ()
2aa48337
KP
23949Return an object representing the current inferior.
23950@end defun
23951
595939de
PM
23952A @code{gdb.Inferior} object has the following attributes:
23953
23954@table @code
d812018b 23955@defvar Inferior.num
595939de 23956ID of inferior, as assigned by GDB.
d812018b 23957@end defvar
595939de 23958
d812018b 23959@defvar Inferior.pid
595939de
PM
23960Process ID of the inferior, as assigned by the underlying operating
23961system.
d812018b 23962@end defvar
595939de 23963
d812018b 23964@defvar Inferior.was_attached
595939de
PM
23965Boolean signaling whether the inferior was created using `attach', or
23966started by @value{GDBN} itself.
d812018b 23967@end defvar
595939de
PM
23968@end table
23969
23970A @code{gdb.Inferior} object has the following methods:
23971
23972@table @code
d812018b 23973@defun Inferior.is_valid ()
29703da4
PM
23974Returns @code{True} if the @code{gdb.Inferior} object is valid,
23975@code{False} if not. A @code{gdb.Inferior} object will become invalid
23976if the inferior no longer exists within @value{GDBN}. All other
23977@code{gdb.Inferior} methods will throw an exception if it is invalid
23978at the time the method is called.
d812018b 23979@end defun
29703da4 23980
d812018b 23981@defun Inferior.threads ()
595939de
PM
23982This method returns a tuple holding all the threads which are valid
23983when it is called. If there are no valid threads, the method will
23984return an empty tuple.
d812018b 23985@end defun
595939de 23986
2678e2af 23987@findex Inferior.read_memory
d812018b 23988@defun Inferior.read_memory (address, length)
595939de
PM
23989Read @var{length} bytes of memory from the inferior, starting at
23990@var{address}. Returns a buffer object, which behaves much like an array
2678e2af
YQ
23991or a string. It can be modified and given to the
23992@code{Inferior.write_memory} function.
d812018b 23993@end defun
595939de 23994
2678e2af 23995@findex Inferior.write_memory
d812018b 23996@defun Inferior.write_memory (address, buffer @r{[}, length@r{]})
595939de
PM
23997Write the contents of @var{buffer} to the inferior, starting at
23998@var{address}. The @var{buffer} parameter must be a Python object
23999which supports the buffer protocol, i.e., a string, an array or the
2678e2af 24000object returned from @code{Inferior.read_memory}. If given, @var{length}
595939de 24001determines the number of bytes from @var{buffer} to be written.
d812018b 24002@end defun
595939de
PM
24003
24004@findex gdb.search_memory
d812018b 24005@defun Inferior.search_memory (address, length, pattern)
595939de
PM
24006Search a region of the inferior memory starting at @var{address} with
24007the given @var{length} using the search pattern supplied in
24008@var{pattern}. The @var{pattern} parameter must be a Python object
24009which supports the buffer protocol, i.e., a string, an array or the
24010object returned from @code{gdb.read_memory}. Returns a Python @code{Long}
24011containing the address where the pattern was found, or @code{None} if
24012the pattern could not be found.
d812018b 24013@end defun
595939de
PM
24014@end table
24015
505500db
SW
24016@node Events In Python
24017@subsubsection Events In Python
24018@cindex inferior events in Python
24019
24020@value{GDBN} provides a general event facility so that Python code can be
24021notified of various state changes, particularly changes that occur in
24022the inferior.
24023
24024An @dfn{event} is just an object that describes some state change. The
24025type of the object and its attributes will vary depending on the details
24026of the change. All the existing events are described below.
24027
24028In order to be notified of an event, you must register an event handler
24029with an @dfn{event registry}. An event registry is an object in the
24030@code{gdb.events} module which dispatches particular events. A registry
24031provides methods to register and unregister event handlers:
24032
24033@table @code
d812018b 24034@defun EventRegistry.connect (object)
505500db
SW
24035Add the given callable @var{object} to the registry. This object will be
24036called when an event corresponding to this registry occurs.
d812018b 24037@end defun
505500db 24038
d812018b 24039@defun EventRegistry.disconnect (object)
505500db
SW
24040Remove the given @var{object} from the registry. Once removed, the object
24041will no longer receive notifications of events.
d812018b 24042@end defun
505500db
SW
24043@end table
24044
24045Here is an example:
24046
24047@smallexample
24048def exit_handler (event):
24049 print "event type: exit"
24050 print "exit code: %d" % (event.exit_code)
24051
24052gdb.events.exited.connect (exit_handler)
24053@end smallexample
24054
24055In the above example we connect our handler @code{exit_handler} to the
24056registry @code{events.exited}. Once connected, @code{exit_handler} gets
24057called when the inferior exits. The argument @dfn{event} in this example is
24058of type @code{gdb.ExitedEvent}. As you can see in the example the
24059@code{ExitedEvent} object has an attribute which indicates the exit code of
24060the inferior.
24061
24062The following is a listing of the event registries that are available and
24063details of the events they emit:
24064
24065@table @code
24066
24067@item events.cont
24068Emits @code{gdb.ThreadEvent}.
24069
24070Some events can be thread specific when @value{GDBN} is running in non-stop
24071mode. When represented in Python, these events all extend
24072@code{gdb.ThreadEvent}. Note, this event is not emitted directly; instead,
24073events which are emitted by this or other modules might extend this event.
24074Examples of these events are @code{gdb.BreakpointEvent} and
24075@code{gdb.ContinueEvent}.
24076
24077@table @code
d812018b 24078@defvar ThreadEvent.inferior_thread
505500db
SW
24079In non-stop mode this attribute will be set to the specific thread which was
24080involved in the emitted event. Otherwise, it will be set to @code{None}.
d812018b 24081@end defvar
505500db
SW
24082@end table
24083
24084Emits @code{gdb.ContinueEvent} which extends @code{gdb.ThreadEvent}.
24085
24086This event indicates that the inferior has been continued after a stop. For
24087inherited attribute refer to @code{gdb.ThreadEvent} above.
24088
24089@item events.exited
24090Emits @code{events.ExitedEvent} which indicates that the inferior has exited.
cb6be26b 24091@code{events.ExitedEvent} has two attributes:
505500db 24092@table @code
d812018b 24093@defvar ExitedEvent.exit_code
cb6be26b
KP
24094An integer representing the exit code, if available, which the inferior
24095has returned. (The exit code could be unavailable if, for example,
24096@value{GDBN} detaches from the inferior.) If the exit code is unavailable,
24097the attribute does not exist.
24098@end defvar
24099@defvar ExitedEvent inferior
24100A reference to the inferior which triggered the @code{exited} event.
d812018b 24101@end defvar
505500db
SW
24102@end table
24103
24104@item events.stop
24105Emits @code{gdb.StopEvent} which extends @code{gdb.ThreadEvent}.
24106
24107Indicates that the inferior has stopped. All events emitted by this registry
24108extend StopEvent. As a child of @code{gdb.ThreadEvent}, @code{gdb.StopEvent}
24109will indicate the stopped thread when @value{GDBN} is running in non-stop
24110mode. Refer to @code{gdb.ThreadEvent} above for more details.
24111
24112Emits @code{gdb.SignalEvent} which extends @code{gdb.StopEvent}.
24113
24114This event indicates that the inferior or one of its threads has received as
24115signal. @code{gdb.SignalEvent} has the following attributes:
24116
24117@table @code
d812018b 24118@defvar SignalEvent.stop_signal
505500db
SW
24119A string representing the signal received by the inferior. A list of possible
24120signal values can be obtained by running the command @code{info signals} in
24121the @value{GDBN} command prompt.
d812018b 24122@end defvar
505500db
SW
24123@end table
24124
24125Also emits @code{gdb.BreakpointEvent} which extends @code{gdb.StopEvent}.
24126
6839b47f
KP
24127@code{gdb.BreakpointEvent} event indicates that one or more breakpoints have
24128been hit, and has the following attributes:
505500db
SW
24129
24130@table @code
d812018b 24131@defvar BreakpointEvent.breakpoints
6839b47f
KP
24132A sequence containing references to all the breakpoints (type
24133@code{gdb.Breakpoint}) that were hit.
505500db 24134@xref{Breakpoints In Python}, for details of the @code{gdb.Breakpoint} object.
d812018b
PK
24135@end defvar
24136@defvar BreakpointEvent.breakpoint
6839b47f
KP
24137A reference to the first breakpoint that was hit.
24138This function is maintained for backward compatibility and is now deprecated
d812018b
PK
24139in favor of the @code{gdb.BreakpointEvent.breakpoints} attribute.
24140@end defvar
505500db
SW
24141@end table
24142
20c168b5
KP
24143@item events.new_objfile
24144Emits @code{gdb.NewObjFileEvent} which indicates that a new object file has
24145been loaded by @value{GDBN}. @code{gdb.NewObjFileEvent} has one attribute:
24146
24147@table @code
24148@defvar NewObjFileEvent.new_objfile
24149A reference to the object file (@code{gdb.Objfile}) which has been loaded.
24150@xref{Objfiles In Python}, for details of the @code{gdb.Objfile} object.
24151@end defvar
24152@end table
24153
505500db
SW
24154@end table
24155
595939de
PM
24156@node Threads In Python
24157@subsubsection Threads In Python
24158@cindex threads in python
24159
24160@findex gdb.InferiorThread
24161Python scripts can access information about, and manipulate inferior threads
24162controlled by @value{GDBN}, via objects of the @code{gdb.InferiorThread} class.
24163
24164The following thread-related functions are available in the @code{gdb}
24165module:
24166
24167@findex gdb.selected_thread
d812018b 24168@defun gdb.selected_thread ()
595939de
PM
24169This function returns the thread object for the selected thread. If there
24170is no selected thread, this will return @code{None}.
24171@end defun
24172
24173A @code{gdb.InferiorThread} object has the following attributes:
24174
24175@table @code
d812018b 24176@defvar InferiorThread.name
4694da01
TT
24177The name of the thread. If the user specified a name using
24178@code{thread name}, then this returns that name. Otherwise, if an
24179OS-supplied name is available, then it is returned. Otherwise, this
24180returns @code{None}.
24181
24182This attribute can be assigned to. The new value must be a string
24183object, which sets the new name, or @code{None}, which removes any
24184user-specified thread name.
d812018b 24185@end defvar
4694da01 24186
d812018b 24187@defvar InferiorThread.num
595939de 24188ID of the thread, as assigned by GDB.
d812018b 24189@end defvar
595939de 24190
d812018b 24191@defvar InferiorThread.ptid
595939de
PM
24192ID of the thread, as assigned by the operating system. This attribute is a
24193tuple containing three integers. The first is the Process ID (PID); the second
24194is the Lightweight Process ID (LWPID), and the third is the Thread ID (TID).
24195Either the LWPID or TID may be 0, which indicates that the operating system
24196does not use that identifier.
d812018b 24197@end defvar
595939de
PM
24198@end table
24199
24200A @code{gdb.InferiorThread} object has the following methods:
24201
dc3b15be 24202@table @code
d812018b 24203@defun InferiorThread.is_valid ()
29703da4
PM
24204Returns @code{True} if the @code{gdb.InferiorThread} object is valid,
24205@code{False} if not. A @code{gdb.InferiorThread} object will become
24206invalid if the thread exits, or the inferior that the thread belongs
24207is deleted. All other @code{gdb.InferiorThread} methods will throw an
24208exception if it is invalid at the time the method is called.
d812018b 24209@end defun
29703da4 24210
d812018b 24211@defun InferiorThread.switch ()
595939de
PM
24212This changes @value{GDBN}'s currently selected thread to the one represented
24213by this object.
d812018b 24214@end defun
595939de 24215
d812018b 24216@defun InferiorThread.is_stopped ()
595939de 24217Return a Boolean indicating whether the thread is stopped.
d812018b 24218@end defun
595939de 24219
d812018b 24220@defun InferiorThread.is_running ()
595939de 24221Return a Boolean indicating whether the thread is running.
d812018b 24222@end defun
595939de 24223
d812018b 24224@defun InferiorThread.is_exited ()
595939de 24225Return a Boolean indicating whether the thread is exited.
d812018b 24226@end defun
595939de
PM
24227@end table
24228
d8906c6f
TJB
24229@node Commands In Python
24230@subsubsection Commands In Python
24231
24232@cindex commands in python
24233@cindex python commands
d8906c6f
TJB
24234You can implement new @value{GDBN} CLI commands in Python. A CLI
24235command is implemented using an instance of the @code{gdb.Command}
24236class, most commonly using a subclass.
24237
f05e2e1d 24238@defun Command.__init__ (name, @var{command_class} @r{[}, @var{completer_class} @r{[}, @var{prefix}@r{]]})
d8906c6f
TJB
24239The object initializer for @code{Command} registers the new command
24240with @value{GDBN}. This initializer is normally invoked from the
24241subclass' own @code{__init__} method.
24242
24243@var{name} is the name of the command. If @var{name} consists of
24244multiple words, then the initial words are looked for as prefix
24245commands. In this case, if one of the prefix commands does not exist,
24246an exception is raised.
24247
24248There is no support for multi-line commands.
24249
cc924cad 24250@var{command_class} should be one of the @samp{COMMAND_} constants
d8906c6f
TJB
24251defined below. This argument tells @value{GDBN} how to categorize the
24252new command in the help system.
24253
cc924cad 24254@var{completer_class} is an optional argument. If given, it should be
d8906c6f
TJB
24255one of the @samp{COMPLETE_} constants defined below. This argument
24256tells @value{GDBN} how to perform completion for this command. If not
24257given, @value{GDBN} will attempt to complete using the object's
24258@code{complete} method (see below); if no such method is found, an
24259error will occur when completion is attempted.
24260
24261@var{prefix} is an optional argument. If @code{True}, then the new
24262command is a prefix command; sub-commands of this command may be
24263registered.
24264
24265The help text for the new command is taken from the Python
24266documentation string for the command's class, if there is one. If no
24267documentation string is provided, the default value ``This command is
24268not documented.'' is used.
d812018b 24269@end defun
d8906c6f 24270
a0c36267 24271@cindex don't repeat Python command
d812018b 24272@defun Command.dont_repeat ()
d8906c6f
TJB
24273By default, a @value{GDBN} command is repeated when the user enters a
24274blank line at the command prompt. A command can suppress this
24275behavior by invoking the @code{dont_repeat} method. This is similar
24276to the user command @code{dont-repeat}, see @ref{Define, dont-repeat}.
d812018b 24277@end defun
d8906c6f 24278
d812018b 24279@defun Command.invoke (argument, from_tty)
d8906c6f
TJB
24280This method is called by @value{GDBN} when this command is invoked.
24281
24282@var{argument} is a string. It is the argument to the command, after
24283leading and trailing whitespace has been stripped.
24284
24285@var{from_tty} is a boolean argument. When true, this means that the
24286command was entered by the user at the terminal; when false it means
24287that the command came from elsewhere.
24288
24289If this method throws an exception, it is turned into a @value{GDBN}
24290@code{error} call. Otherwise, the return value is ignored.
07ca107c
DE
24291
24292@findex gdb.string_to_argv
24293To break @var{argument} up into an argv-like string use
24294@code{gdb.string_to_argv}. This function behaves identically to
24295@value{GDBN}'s internal argument lexer @code{buildargv}.
24296It is recommended to use this for consistency.
24297Arguments are separated by spaces and may be quoted.
24298Example:
24299
24300@smallexample
24301print gdb.string_to_argv ("1 2\ \\\"3 '4 \"5' \"6 '7\"")
24302['1', '2 "3', '4 "5', "6 '7"]
24303@end smallexample
24304
d812018b 24305@end defun
d8906c6f 24306
a0c36267 24307@cindex completion of Python commands
d812018b 24308@defun Command.complete (text, word)
d8906c6f
TJB
24309This method is called by @value{GDBN} when the user attempts
24310completion on this command. All forms of completion are handled by
a0c36267
EZ
24311this method, that is, the @key{TAB} and @key{M-?} key bindings
24312(@pxref{Completion}), and the @code{complete} command (@pxref{Help,
24313complete}).
d8906c6f
TJB
24314
24315The arguments @var{text} and @var{word} are both strings. @var{text}
24316holds the complete command line up to the cursor's location.
24317@var{word} holds the last word of the command line; this is computed
24318using a word-breaking heuristic.
24319
24320The @code{complete} method can return several values:
24321@itemize @bullet
24322@item
24323If the return value is a sequence, the contents of the sequence are
24324used as the completions. It is up to @code{complete} to ensure that the
24325contents actually do complete the word. A zero-length sequence is
24326allowed, it means that there were no completions available. Only
24327string elements of the sequence are used; other elements in the
24328sequence are ignored.
24329
24330@item
24331If the return value is one of the @samp{COMPLETE_} constants defined
24332below, then the corresponding @value{GDBN}-internal completion
24333function is invoked, and its result is used.
24334
24335@item
24336All other results are treated as though there were no available
24337completions.
24338@end itemize
d812018b 24339@end defun
d8906c6f 24340
d8906c6f
TJB
24341When a new command is registered, it must be declared as a member of
24342some general class of commands. This is used to classify top-level
24343commands in the on-line help system; note that prefix commands are not
24344listed under their own category but rather that of their top-level
24345command. The available classifications are represented by constants
24346defined in the @code{gdb} module:
24347
24348@table @code
24349@findex COMMAND_NONE
24350@findex gdb.COMMAND_NONE
d812018b 24351@item gdb.COMMAND_NONE
d8906c6f
TJB
24352The command does not belong to any particular class. A command in
24353this category will not be displayed in any of the help categories.
24354
24355@findex COMMAND_RUNNING
24356@findex gdb.COMMAND_RUNNING
d812018b 24357@item gdb.COMMAND_RUNNING
d8906c6f
TJB
24358The command is related to running the inferior. For example,
24359@code{start}, @code{step}, and @code{continue} are in this category.
a0c36267 24360Type @kbd{help running} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24361commands in this category.
24362
24363@findex COMMAND_DATA
24364@findex gdb.COMMAND_DATA
d812018b 24365@item gdb.COMMAND_DATA
d8906c6f
TJB
24366The command is related to data or variables. For example,
24367@code{call}, @code{find}, and @code{print} are in this category. Type
a0c36267 24368@kbd{help data} at the @value{GDBN} prompt to see a list of commands
d8906c6f
TJB
24369in this category.
24370
24371@findex COMMAND_STACK
24372@findex gdb.COMMAND_STACK
d812018b 24373@item gdb.COMMAND_STACK
d8906c6f
TJB
24374The command has to do with manipulation of the stack. For example,
24375@code{backtrace}, @code{frame}, and @code{return} are in this
a0c36267 24376category. Type @kbd{help stack} at the @value{GDBN} prompt to see a
d8906c6f
TJB
24377list of commands in this category.
24378
24379@findex COMMAND_FILES
24380@findex gdb.COMMAND_FILES
d812018b 24381@item gdb.COMMAND_FILES
d8906c6f
TJB
24382This class is used for file-related commands. For example,
24383@code{file}, @code{list} and @code{section} are in this category.
a0c36267 24384Type @kbd{help files} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24385commands in this category.
24386
24387@findex COMMAND_SUPPORT
24388@findex gdb.COMMAND_SUPPORT
d812018b 24389@item gdb.COMMAND_SUPPORT
d8906c6f
TJB
24390This should be used for ``support facilities'', generally meaning
24391things that are useful to the user when interacting with @value{GDBN},
24392but not related to the state of the inferior. For example,
24393@code{help}, @code{make}, and @code{shell} are in this category. Type
a0c36267 24394@kbd{help support} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24395commands in this category.
24396
24397@findex COMMAND_STATUS
24398@findex gdb.COMMAND_STATUS
d812018b 24399@item gdb.COMMAND_STATUS
d8906c6f
TJB
24400The command is an @samp{info}-related command, that is, related to the
24401state of @value{GDBN} itself. For example, @code{info}, @code{macro},
a0c36267 24402and @code{show} are in this category. Type @kbd{help status} at the
d8906c6f
TJB
24403@value{GDBN} prompt to see a list of commands in this category.
24404
24405@findex COMMAND_BREAKPOINTS
24406@findex gdb.COMMAND_BREAKPOINTS
d812018b 24407@item gdb.COMMAND_BREAKPOINTS
d8906c6f 24408The command has to do with breakpoints. For example, @code{break},
a0c36267 24409@code{clear}, and @code{delete} are in this category. Type @kbd{help
d8906c6f
TJB
24410breakpoints} at the @value{GDBN} prompt to see a list of commands in
24411this category.
24412
24413@findex COMMAND_TRACEPOINTS
24414@findex gdb.COMMAND_TRACEPOINTS
d812018b 24415@item gdb.COMMAND_TRACEPOINTS
d8906c6f
TJB
24416The command has to do with tracepoints. For example, @code{trace},
24417@code{actions}, and @code{tfind} are in this category. Type
a0c36267 24418@kbd{help tracepoints} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24419commands in this category.
24420
7d74f244
DE
24421@findex COMMAND_USER
24422@findex gdb.COMMAND_USER
24423@item gdb.COMMAND_USER
24424The command is a general purpose command for the user, and typically
24425does not fit in one of the other categories.
24426Type @kbd{help user-defined} at the @value{GDBN} prompt to see
24427a list of commands in this category, as well as the list of gdb macros
24428(@pxref{Sequences}).
24429
d8906c6f
TJB
24430@findex COMMAND_OBSCURE
24431@findex gdb.COMMAND_OBSCURE
d812018b 24432@item gdb.COMMAND_OBSCURE
d8906c6f
TJB
24433The command is only used in unusual circumstances, or is not of
24434general interest to users. For example, @code{checkpoint},
a0c36267 24435@code{fork}, and @code{stop} are in this category. Type @kbd{help
d8906c6f
TJB
24436obscure} at the @value{GDBN} prompt to see a list of commands in this
24437category.
24438
24439@findex COMMAND_MAINTENANCE
24440@findex gdb.COMMAND_MAINTENANCE
d812018b 24441@item gdb.COMMAND_MAINTENANCE
d8906c6f
TJB
24442The command is only useful to @value{GDBN} maintainers. The
24443@code{maintenance} and @code{flushregs} commands are in this category.
a0c36267 24444Type @kbd{help internals} at the @value{GDBN} prompt to see a list of
d8906c6f
TJB
24445commands in this category.
24446@end table
24447
d8906c6f
TJB
24448A new command can use a predefined completion function, either by
24449specifying it via an argument at initialization, or by returning it
24450from the @code{complete} method. These predefined completion
24451constants are all defined in the @code{gdb} module:
24452
24453@table @code
24454@findex COMPLETE_NONE
24455@findex gdb.COMPLETE_NONE
d812018b 24456@item gdb.COMPLETE_NONE
d8906c6f
TJB
24457This constant means that no completion should be done.
24458
24459@findex COMPLETE_FILENAME
24460@findex gdb.COMPLETE_FILENAME
d812018b 24461@item gdb.COMPLETE_FILENAME
d8906c6f
TJB
24462This constant means that filename completion should be performed.
24463
24464@findex COMPLETE_LOCATION
24465@findex gdb.COMPLETE_LOCATION
d812018b 24466@item gdb.COMPLETE_LOCATION
d8906c6f
TJB
24467This constant means that location completion should be done.
24468@xref{Specify Location}.
24469
24470@findex COMPLETE_COMMAND
24471@findex gdb.COMPLETE_COMMAND
d812018b 24472@item gdb.COMPLETE_COMMAND
d8906c6f
TJB
24473This constant means that completion should examine @value{GDBN}
24474command names.
24475
24476@findex COMPLETE_SYMBOL
24477@findex gdb.COMPLETE_SYMBOL
d812018b 24478@item gdb.COMPLETE_SYMBOL
d8906c6f
TJB
24479This constant means that completion should be done using symbol names
24480as the source.
24481@end table
24482
24483The following code snippet shows how a trivial CLI command can be
24484implemented in Python:
24485
24486@smallexample
24487class HelloWorld (gdb.Command):
24488 """Greet the whole world."""
24489
24490 def __init__ (self):
7d74f244 24491 super (HelloWorld, self).__init__ ("hello-world", gdb.COMMAND_USER)
d8906c6f
TJB
24492
24493 def invoke (self, arg, from_tty):
24494 print "Hello, World!"
24495
24496HelloWorld ()
24497@end smallexample
24498
24499The last line instantiates the class, and is necessary to trigger the
24500registration of the command with @value{GDBN}. Depending on how the
24501Python code is read into @value{GDBN}, you may need to import the
24502@code{gdb} module explicitly.
24503
d7b32ed3
PM
24504@node Parameters In Python
24505@subsubsection Parameters In Python
24506
24507@cindex parameters in python
24508@cindex python parameters
24509@tindex gdb.Parameter
24510@tindex Parameter
24511You can implement new @value{GDBN} parameters using Python. A new
24512parameter is implemented as an instance of the @code{gdb.Parameter}
24513class.
24514
24515Parameters are exposed to the user via the @code{set} and
24516@code{show} commands. @xref{Help}.
24517
24518There are many parameters that already exist and can be set in
24519@value{GDBN}. Two examples are: @code{set follow fork} and
24520@code{set charset}. Setting these parameters influences certain
24521behavior in @value{GDBN}. Similarly, you can define parameters that
24522can be used to influence behavior in custom Python scripts and commands.
24523
d812018b 24524@defun Parameter.__init__ (name, @var{command-class}, @var{parameter-class} @r{[}, @var{enum-sequence}@r{]})
d7b32ed3
PM
24525The object initializer for @code{Parameter} registers the new
24526parameter with @value{GDBN}. This initializer is normally invoked
24527from the subclass' own @code{__init__} method.
24528
24529@var{name} is the name of the new parameter. If @var{name} consists
24530of multiple words, then the initial words are looked for as prefix
24531parameters. An example of this can be illustrated with the
24532@code{set print} set of parameters. If @var{name} is
24533@code{print foo}, then @code{print} will be searched as the prefix
24534parameter. In this case the parameter can subsequently be accessed in
24535@value{GDBN} as @code{set print foo}.
24536
24537If @var{name} consists of multiple words, and no prefix parameter group
24538can be found, an exception is raised.
24539
24540@var{command-class} should be one of the @samp{COMMAND_} constants
24541(@pxref{Commands In Python}). This argument tells @value{GDBN} how to
24542categorize the new parameter in the help system.
24543
24544@var{parameter-class} should be one of the @samp{PARAM_} constants
24545defined below. This argument tells @value{GDBN} the type of the new
24546parameter; this information is used for input validation and
24547completion.
24548
24549If @var{parameter-class} is @code{PARAM_ENUM}, then
24550@var{enum-sequence} must be a sequence of strings. These strings
24551represent the possible values for the parameter.
24552
24553If @var{parameter-class} is not @code{PARAM_ENUM}, then the presence
24554of a fourth argument will cause an exception to be thrown.
24555
24556The help text for the new parameter is taken from the Python
24557documentation string for the parameter's class, if there is one. If
24558there is no documentation string, a default value is used.
d812018b 24559@end defun
d7b32ed3 24560
d812018b 24561@defvar Parameter.set_doc
d7b32ed3
PM
24562If this attribute exists, and is a string, then its value is used as
24563the help text for this parameter's @code{set} command. The value is
24564examined when @code{Parameter.__init__} is invoked; subsequent changes
24565have no effect.
d812018b 24566@end defvar
d7b32ed3 24567
d812018b 24568@defvar Parameter.show_doc
d7b32ed3
PM
24569If this attribute exists, and is a string, then its value is used as
24570the help text for this parameter's @code{show} command. The value is
24571examined when @code{Parameter.__init__} is invoked; subsequent changes
24572have no effect.
d812018b 24573@end defvar
d7b32ed3 24574
d812018b 24575@defvar Parameter.value
d7b32ed3
PM
24576The @code{value} attribute holds the underlying value of the
24577parameter. It can be read and assigned to just as any other
24578attribute. @value{GDBN} does validation when assignments are made.
d812018b 24579@end defvar
d7b32ed3 24580
ecec24e6
PM
24581There are two methods that should be implemented in any
24582@code{Parameter} class. These are:
24583
d812018b 24584@defun Parameter.get_set_string (self)
ecec24e6
PM
24585@value{GDBN} will call this method when a @var{parameter}'s value has
24586been changed via the @code{set} API (for example, @kbd{set foo off}).
24587The @code{value} attribute has already been populated with the new
24588value and may be used in output. This method must return a string.
d812018b 24589@end defun
ecec24e6 24590
d812018b 24591@defun Parameter.get_show_string (self, svalue)
ecec24e6
PM
24592@value{GDBN} will call this method when a @var{parameter}'s
24593@code{show} API has been invoked (for example, @kbd{show foo}). The
24594argument @code{svalue} receives the string representation of the
24595current value. This method must return a string.
d812018b 24596@end defun
d7b32ed3
PM
24597
24598When a new parameter is defined, its type must be specified. The
24599available types are represented by constants defined in the @code{gdb}
24600module:
24601
24602@table @code
24603@findex PARAM_BOOLEAN
24604@findex gdb.PARAM_BOOLEAN
d812018b 24605@item gdb.PARAM_BOOLEAN
d7b32ed3
PM
24606The value is a plain boolean. The Python boolean values, @code{True}
24607and @code{False} are the only valid values.
24608
24609@findex PARAM_AUTO_BOOLEAN
24610@findex gdb.PARAM_AUTO_BOOLEAN
d812018b 24611@item gdb.PARAM_AUTO_BOOLEAN
d7b32ed3
PM
24612The value has three possible states: true, false, and @samp{auto}. In
24613Python, true and false are represented using boolean constants, and
24614@samp{auto} is represented using @code{None}.
24615
24616@findex PARAM_UINTEGER
24617@findex gdb.PARAM_UINTEGER
d812018b 24618@item gdb.PARAM_UINTEGER
d7b32ed3
PM
24619The value is an unsigned integer. The value of 0 should be
24620interpreted to mean ``unlimited''.
24621
24622@findex PARAM_INTEGER
24623@findex gdb.PARAM_INTEGER
d812018b 24624@item gdb.PARAM_INTEGER
d7b32ed3
PM
24625The value is a signed integer. The value of 0 should be interpreted
24626to mean ``unlimited''.
24627
24628@findex PARAM_STRING
24629@findex gdb.PARAM_STRING
d812018b 24630@item gdb.PARAM_STRING
d7b32ed3
PM
24631The value is a string. When the user modifies the string, any escape
24632sequences, such as @samp{\t}, @samp{\f}, and octal escapes, are
24633translated into corresponding characters and encoded into the current
24634host charset.
24635
24636@findex PARAM_STRING_NOESCAPE
24637@findex gdb.PARAM_STRING_NOESCAPE
d812018b 24638@item gdb.PARAM_STRING_NOESCAPE
d7b32ed3
PM
24639The value is a string. When the user modifies the string, escapes are
24640passed through untranslated.
24641
24642@findex PARAM_OPTIONAL_FILENAME
24643@findex gdb.PARAM_OPTIONAL_FILENAME
d812018b 24644@item gdb.PARAM_OPTIONAL_FILENAME
d7b32ed3
PM
24645The value is a either a filename (a string), or @code{None}.
24646
24647@findex PARAM_FILENAME
24648@findex gdb.PARAM_FILENAME
d812018b 24649@item gdb.PARAM_FILENAME
d7b32ed3
PM
24650The value is a filename. This is just like
24651@code{PARAM_STRING_NOESCAPE}, but uses file names for completion.
24652
24653@findex PARAM_ZINTEGER
24654@findex gdb.PARAM_ZINTEGER
d812018b 24655@item gdb.PARAM_ZINTEGER
d7b32ed3
PM
24656The value is an integer. This is like @code{PARAM_INTEGER}, except 0
24657is interpreted as itself.
24658
24659@findex PARAM_ENUM
24660@findex gdb.PARAM_ENUM
d812018b 24661@item gdb.PARAM_ENUM
d7b32ed3
PM
24662The value is a string, which must be one of a collection string
24663constants provided when the parameter is created.
24664@end table
24665
bc3b79fd
TJB
24666@node Functions In Python
24667@subsubsection Writing new convenience functions
24668
24669@cindex writing convenience functions
24670@cindex convenience functions in python
24671@cindex python convenience functions
24672@tindex gdb.Function
24673@tindex Function
24674You can implement new convenience functions (@pxref{Convenience Vars})
24675in Python. A convenience function is an instance of a subclass of the
24676class @code{gdb.Function}.
24677
d812018b 24678@defun Function.__init__ (name)
bc3b79fd
TJB
24679The initializer for @code{Function} registers the new function with
24680@value{GDBN}. The argument @var{name} is the name of the function,
24681a string. The function will be visible to the user as a convenience
24682variable of type @code{internal function}, whose name is the same as
24683the given @var{name}.
24684
24685The documentation for the new function is taken from the documentation
24686string for the new class.
d812018b 24687@end defun
bc3b79fd 24688
d812018b 24689@defun Function.invoke (@var{*args})
bc3b79fd
TJB
24690When a convenience function is evaluated, its arguments are converted
24691to instances of @code{gdb.Value}, and then the function's
24692@code{invoke} method is called. Note that @value{GDBN} does not
24693predetermine the arity of convenience functions. Instead, all
24694available arguments are passed to @code{invoke}, following the
24695standard Python calling convention. In particular, a convenience
24696function can have default values for parameters without ill effect.
24697
24698The return value of this method is used as its value in the enclosing
24699expression. If an ordinary Python value is returned, it is converted
24700to a @code{gdb.Value} following the usual rules.
d812018b 24701@end defun
bc3b79fd
TJB
24702
24703The following code snippet shows how a trivial convenience function can
24704be implemented in Python:
24705
24706@smallexample
24707class Greet (gdb.Function):
24708 """Return string to greet someone.
24709Takes a name as argument."""
24710
24711 def __init__ (self):
24712 super (Greet, self).__init__ ("greet")
24713
24714 def invoke (self, name):
24715 return "Hello, %s!" % name.string ()
24716
24717Greet ()
24718@end smallexample
24719
24720The last line instantiates the class, and is necessary to trigger the
24721registration of the function with @value{GDBN}. Depending on how the
24722Python code is read into @value{GDBN}, you may need to import the
24723@code{gdb} module explicitly.
24724
fa33c3cd
DE
24725@node Progspaces In Python
24726@subsubsection Program Spaces In Python
24727
24728@cindex progspaces in python
24729@tindex gdb.Progspace
24730@tindex Progspace
24731A program space, or @dfn{progspace}, represents a symbolic view
24732of an address space.
24733It consists of all of the objfiles of the program.
24734@xref{Objfiles In Python}.
24735@xref{Inferiors and Programs, program spaces}, for more details
24736about program spaces.
24737
24738The following progspace-related functions are available in the
24739@code{gdb} module:
24740
24741@findex gdb.current_progspace
d812018b 24742@defun gdb.current_progspace ()
fa33c3cd
DE
24743This function returns the program space of the currently selected inferior.
24744@xref{Inferiors and Programs}.
24745@end defun
24746
24747@findex gdb.progspaces
d812018b 24748@defun gdb.progspaces ()
fa33c3cd
DE
24749Return a sequence of all the progspaces currently known to @value{GDBN}.
24750@end defun
24751
24752Each progspace is represented by an instance of the @code{gdb.Progspace}
24753class.
24754
d812018b 24755@defvar Progspace.filename
fa33c3cd 24756The file name of the progspace as a string.
d812018b 24757@end defvar
fa33c3cd 24758
d812018b 24759@defvar Progspace.pretty_printers
fa33c3cd
DE
24760The @code{pretty_printers} attribute is a list of functions. It is
24761used to look up pretty-printers. A @code{Value} is passed to each
24762function in order; if the function returns @code{None}, then the
24763search continues. Otherwise, the return value should be an object
4c374409 24764which is used to format the value. @xref{Pretty Printing API}, for more
fa33c3cd 24765information.
d812018b 24766@end defvar
fa33c3cd 24767
89c73ade
TT
24768@node Objfiles In Python
24769@subsubsection Objfiles In Python
24770
24771@cindex objfiles in python
24772@tindex gdb.Objfile
24773@tindex Objfile
24774@value{GDBN} loads symbols for an inferior from various
24775symbol-containing files (@pxref{Files}). These include the primary
24776executable file, any shared libraries used by the inferior, and any
24777separate debug info files (@pxref{Separate Debug Files}).
24778@value{GDBN} calls these symbol-containing files @dfn{objfiles}.
24779
24780The following objfile-related functions are available in the
24781@code{gdb} module:
24782
24783@findex gdb.current_objfile
d812018b 24784@defun gdb.current_objfile ()
bf88dd68 24785When auto-loading a Python script (@pxref{Python Auto-loading}), @value{GDBN}
89c73ade
TT
24786sets the ``current objfile'' to the corresponding objfile. This
24787function returns the current objfile. If there is no current objfile,
24788this function returns @code{None}.
24789@end defun
24790
24791@findex gdb.objfiles
d812018b 24792@defun gdb.objfiles ()
89c73ade
TT
24793Return a sequence of all the objfiles current known to @value{GDBN}.
24794@xref{Objfiles In Python}.
24795@end defun
24796
24797Each objfile is represented by an instance of the @code{gdb.Objfile}
24798class.
24799
d812018b 24800@defvar Objfile.filename
89c73ade 24801The file name of the objfile as a string.
d812018b 24802@end defvar
89c73ade 24803
d812018b 24804@defvar Objfile.pretty_printers
89c73ade
TT
24805The @code{pretty_printers} attribute is a list of functions. It is
24806used to look up pretty-printers. A @code{Value} is passed to each
24807function in order; if the function returns @code{None}, then the
24808search continues. Otherwise, the return value should be an object
4c374409 24809which is used to format the value. @xref{Pretty Printing API}, for more
a6bac58e 24810information.
d812018b 24811@end defvar
89c73ade 24812
29703da4
PM
24813A @code{gdb.Objfile} object has the following methods:
24814
d812018b 24815@defun Objfile.is_valid ()
29703da4
PM
24816Returns @code{True} if the @code{gdb.Objfile} object is valid,
24817@code{False} if not. A @code{gdb.Objfile} object can become invalid
24818if the object file it refers to is not loaded in @value{GDBN} any
24819longer. All other @code{gdb.Objfile} methods will throw an exception
24820if it is invalid at the time the method is called.
d812018b 24821@end defun
29703da4 24822
f8f6f20b 24823@node Frames In Python
f3e9a817 24824@subsubsection Accessing inferior stack frames from Python.
f8f6f20b
TJB
24825
24826@cindex frames in python
24827When the debugged program stops, @value{GDBN} is able to analyze its call
24828stack (@pxref{Frames,,Stack frames}). The @code{gdb.Frame} class
24829represents a frame in the stack. A @code{gdb.Frame} object is only valid
24830while its corresponding frame exists in the inferior's stack. If you try
621c8364
TT
24831to use an invalid frame object, @value{GDBN} will throw a @code{gdb.error}
24832exception (@pxref{Exception Handling}).
f8f6f20b
TJB
24833
24834Two @code{gdb.Frame} objects can be compared for equality with the @code{==}
24835operator, like:
24836
24837@smallexample
24838(@value{GDBP}) python print gdb.newest_frame() == gdb.selected_frame ()
24839True
24840@end smallexample
24841
24842The following frame-related functions are available in the @code{gdb} module:
24843
24844@findex gdb.selected_frame
d812018b 24845@defun gdb.selected_frame ()
f8f6f20b
TJB
24846Return the selected frame object. (@pxref{Selection,,Selecting a Frame}).
24847@end defun
24848
d8e22779 24849@findex gdb.newest_frame
d812018b 24850@defun gdb.newest_frame ()
d8e22779
TT
24851Return the newest frame object for the selected thread.
24852@end defun
24853
d812018b 24854@defun gdb.frame_stop_reason_string (reason)
f8f6f20b
TJB
24855Return a string explaining the reason why @value{GDBN} stopped unwinding
24856frames, as expressed by the given @var{reason} code (an integer, see the
24857@code{unwind_stop_reason} method further down in this section).
24858@end defun
24859
24860A @code{gdb.Frame} object has the following methods:
24861
24862@table @code
d812018b 24863@defun Frame.is_valid ()
f8f6f20b
TJB
24864Returns true if the @code{gdb.Frame} object is valid, false if not.
24865A frame object can become invalid if the frame it refers to doesn't
24866exist anymore in the inferior. All @code{gdb.Frame} methods will throw
24867an exception if it is invalid at the time the method is called.
d812018b 24868@end defun
f8f6f20b 24869
d812018b 24870@defun Frame.name ()
f8f6f20b
TJB
24871Returns the function name of the frame, or @code{None} if it can't be
24872obtained.
d812018b 24873@end defun
f8f6f20b 24874
d812018b 24875@defun Frame.type ()
ccfc3d6e
TT
24876Returns the type of the frame. The value can be one of:
24877@table @code
24878@item gdb.NORMAL_FRAME
24879An ordinary stack frame.
24880
24881@item gdb.DUMMY_FRAME
24882A fake stack frame that was created by @value{GDBN} when performing an
24883inferior function call.
24884
24885@item gdb.INLINE_FRAME
24886A frame representing an inlined function. The function was inlined
24887into a @code{gdb.NORMAL_FRAME} that is older than this one.
24888
111c6489
JK
24889@item gdb.TAILCALL_FRAME
24890A frame representing a tail call. @xref{Tail Call Frames}.
24891
ccfc3d6e
TT
24892@item gdb.SIGTRAMP_FRAME
24893A signal trampoline frame. This is the frame created by the OS when
24894it calls into a signal handler.
24895
24896@item gdb.ARCH_FRAME
24897A fake stack frame representing a cross-architecture call.
24898
24899@item gdb.SENTINEL_FRAME
24900This is like @code{gdb.NORMAL_FRAME}, but it is only used for the
24901newest frame.
24902@end table
d812018b 24903@end defun
f8f6f20b 24904
d812018b 24905@defun Frame.unwind_stop_reason ()
f8f6f20b
TJB
24906Return an integer representing the reason why it's not possible to find
24907more frames toward the outermost frame. Use
24908@code{gdb.frame_stop_reason_string} to convert the value returned by this
a7fc3f37
KP
24909function to a string. The value can be one of:
24910
24911@table @code
24912@item gdb.FRAME_UNWIND_NO_REASON
24913No particular reason (older frames should be available).
24914
24915@item gdb.FRAME_UNWIND_NULL_ID
24916The previous frame's analyzer returns an invalid result.
24917
24918@item gdb.FRAME_UNWIND_OUTERMOST
24919This frame is the outermost.
24920
24921@item gdb.FRAME_UNWIND_UNAVAILABLE
24922Cannot unwind further, because that would require knowing the
24923values of registers or memory that have not been collected.
24924
24925@item gdb.FRAME_UNWIND_INNER_ID
24926This frame ID looks like it ought to belong to a NEXT frame,
24927but we got it for a PREV frame. Normally, this is a sign of
24928unwinder failure. It could also indicate stack corruption.
24929
24930@item gdb.FRAME_UNWIND_SAME_ID
24931This frame has the same ID as the previous one. That means
24932that unwinding further would almost certainly give us another
24933frame with exactly the same ID, so break the chain. Normally,
24934this is a sign of unwinder failure. It could also indicate
24935stack corruption.
24936
24937@item gdb.FRAME_UNWIND_NO_SAVED_PC
24938The frame unwinder did not find any saved PC, but we needed
24939one to unwind further.
2231f1fb
KP
24940
24941@item gdb.FRAME_UNWIND_FIRST_ERROR
24942Any stop reason greater or equal to this value indicates some kind
24943of error. This special value facilitates writing code that tests
24944for errors in unwinding in a way that will work correctly even if
24945the list of the other values is modified in future @value{GDBN}
24946versions. Using it, you could write:
24947@smallexample
24948reason = gdb.selected_frame().unwind_stop_reason ()
24949reason_str = gdb.frame_stop_reason_string (reason)
24950if reason >= gdb.FRAME_UNWIND_FIRST_ERROR:
24951 print "An error occured: %s" % reason_str
24952@end smallexample
a7fc3f37
KP
24953@end table
24954
d812018b 24955@end defun
f8f6f20b 24956
d812018b 24957@defun Frame.pc ()
f8f6f20b 24958Returns the frame's resume address.
d812018b 24959@end defun
f8f6f20b 24960
d812018b 24961@defun Frame.block ()
f3e9a817 24962Return the frame's code block. @xref{Blocks In Python}.
d812018b 24963@end defun
f3e9a817 24964
d812018b 24965@defun Frame.function ()
f3e9a817
PM
24966Return the symbol for the function corresponding to this frame.
24967@xref{Symbols In Python}.
d812018b 24968@end defun
f3e9a817 24969
d812018b 24970@defun Frame.older ()
f8f6f20b 24971Return the frame that called this frame.
d812018b 24972@end defun
f8f6f20b 24973
d812018b 24974@defun Frame.newer ()
f8f6f20b 24975Return the frame called by this frame.
d812018b 24976@end defun
f8f6f20b 24977
d812018b 24978@defun Frame.find_sal ()
f3e9a817
PM
24979Return the frame's symtab and line object.
24980@xref{Symbol Tables In Python}.
d812018b 24981@end defun
f3e9a817 24982
d812018b 24983@defun Frame.read_var (variable @r{[}, block@r{]})
dc00d89f
PM
24984Return the value of @var{variable} in this frame. If the optional
24985argument @var{block} is provided, search for the variable from that
24986block; otherwise start at the frame's current block (which is
24987determined by the frame's current program counter). @var{variable}
24988must be a string or a @code{gdb.Symbol} object. @var{block} must be a
24989@code{gdb.Block} object.
d812018b 24990@end defun
f3e9a817 24991
d812018b 24992@defun Frame.select ()
f3e9a817
PM
24993Set this frame to be the selected frame. @xref{Stack, ,Examining the
24994Stack}.
d812018b 24995@end defun
f3e9a817
PM
24996@end table
24997
24998@node Blocks In Python
24999@subsubsection Accessing frame blocks from Python.
25000
25001@cindex blocks in python
25002@tindex gdb.Block
25003
25004Within each frame, @value{GDBN} maintains information on each block
25005stored in that frame. These blocks are organized hierarchically, and
25006are represented individually in Python as a @code{gdb.Block}.
25007Please see @ref{Frames In Python}, for a more in-depth discussion on
25008frames. Furthermore, see @ref{Stack, ,Examining the Stack}, for more
25009detailed technical information on @value{GDBN}'s book-keeping of the
25010stack.
25011
bdb1994d 25012A @code{gdb.Block} is iterable. The iterator returns the symbols
56af09aa
SCR
25013(@pxref{Symbols In Python}) local to the block. Python programs
25014should not assume that a specific block object will always contain a
25015given symbol, since changes in @value{GDBN} features and
25016infrastructure may cause symbols move across blocks in a symbol
25017table.
bdb1994d 25018
f3e9a817
PM
25019The following block-related functions are available in the @code{gdb}
25020module:
25021
25022@findex gdb.block_for_pc
d812018b 25023@defun gdb.block_for_pc (pc)
f3e9a817
PM
25024Return the @code{gdb.Block} containing the given @var{pc} value. If the
25025block cannot be found for the @var{pc} value specified, the function
25026will return @code{None}.
25027@end defun
25028
29703da4
PM
25029A @code{gdb.Block} object has the following methods:
25030
25031@table @code
d812018b 25032@defun Block.is_valid ()
29703da4
PM
25033Returns @code{True} if the @code{gdb.Block} object is valid,
25034@code{False} if not. A block object can become invalid if the block it
25035refers to doesn't exist anymore in the inferior. All other
25036@code{gdb.Block} methods will throw an exception if it is invalid at
bdb1994d
TT
25037the time the method is called. The block's validity is also checked
25038during iteration over symbols of the block.
d812018b 25039@end defun
29703da4
PM
25040@end table
25041
f3e9a817
PM
25042A @code{gdb.Block} object has the following attributes:
25043
25044@table @code
d812018b 25045@defvar Block.start
f3e9a817 25046The start address of the block. This attribute is not writable.
d812018b 25047@end defvar
f3e9a817 25048
d812018b 25049@defvar Block.end
f3e9a817 25050The end address of the block. This attribute is not writable.
d812018b 25051@end defvar
f3e9a817 25052
d812018b 25053@defvar Block.function
f3e9a817
PM
25054The name of the block represented as a @code{gdb.Symbol}. If the
25055block is not named, then this attribute holds @code{None}. This
25056attribute is not writable.
d812018b 25057@end defvar
f3e9a817 25058
d812018b 25059@defvar Block.superblock
f3e9a817
PM
25060The block containing this block. If this parent block does not exist,
25061this attribute holds @code{None}. This attribute is not writable.
d812018b 25062@end defvar
9df2fbc4
PM
25063
25064@defvar Block.global_block
25065The global block associated with this block. This attribute is not
25066writable.
25067@end defvar
25068
25069@defvar Block.static_block
25070The static block associated with this block. This attribute is not
25071writable.
25072@end defvar
25073
25074@defvar Block.is_global
25075@code{True} if the @code{gdb.Block} object is a global block,
25076@code{False} if not. This attribute is not
25077writable.
25078@end defvar
25079
25080@defvar Block.is_static
25081@code{True} if the @code{gdb.Block} object is a static block,
25082@code{False} if not. This attribute is not writable.
25083@end defvar
f3e9a817
PM
25084@end table
25085
25086@node Symbols In Python
25087@subsubsection Python representation of Symbols.
25088
25089@cindex symbols in python
25090@tindex gdb.Symbol
25091
25092@value{GDBN} represents every variable, function and type as an
25093entry in a symbol table. @xref{Symbols, ,Examining the Symbol Table}.
25094Similarly, Python represents these symbols in @value{GDBN} with the
25095@code{gdb.Symbol} object.
25096
25097The following symbol-related functions are available in the @code{gdb}
25098module:
25099
25100@findex gdb.lookup_symbol
d812018b 25101@defun gdb.lookup_symbol (name @r{[}, block @r{[}, domain@r{]]})
f3e9a817
PM
25102This function searches for a symbol by name. The search scope can be
25103restricted to the parameters defined in the optional domain and block
25104arguments.
25105
25106@var{name} is the name of the symbol. It must be a string. The
25107optional @var{block} argument restricts the search to symbols visible
25108in that @var{block}. The @var{block} argument must be a
6e6fbe60
DE
25109@code{gdb.Block} object. If omitted, the block for the current frame
25110is used. The optional @var{domain} argument restricts
f3e9a817
PM
25111the search to the domain type. The @var{domain} argument must be a
25112domain constant defined in the @code{gdb} module and described later
25113in this chapter.
6e6fbe60
DE
25114
25115The result is a tuple of two elements.
25116The first element is a @code{gdb.Symbol} object or @code{None} if the symbol
25117is not found.
25118If the symbol is found, the second element is @code{True} if the symbol
82809774 25119is a field of a method's object (e.g., @code{this} in C@t{++}),
6e6fbe60
DE
25120otherwise it is @code{False}.
25121If the symbol is not found, the second element is @code{False}.
25122@end defun
25123
25124@findex gdb.lookup_global_symbol
d812018b 25125@defun gdb.lookup_global_symbol (name @r{[}, domain@r{]})
6e6fbe60
DE
25126This function searches for a global symbol by name.
25127The search scope can be restricted to by the domain argument.
25128
25129@var{name} is the name of the symbol. It must be a string.
25130The optional @var{domain} argument restricts the search to the domain type.
25131The @var{domain} argument must be a domain constant defined in the @code{gdb}
25132module and described later in this chapter.
25133
25134The result is a @code{gdb.Symbol} object or @code{None} if the symbol
25135is not found.
f3e9a817
PM
25136@end defun
25137
25138A @code{gdb.Symbol} object has the following attributes:
25139
25140@table @code
d812018b 25141@defvar Symbol.type
457e09f0
DE
25142The type of the symbol or @code{None} if no type is recorded.
25143This attribute is represented as a @code{gdb.Type} object.
25144@xref{Types In Python}. This attribute is not writable.
d812018b 25145@end defvar
457e09f0 25146
d812018b 25147@defvar Symbol.symtab
f3e9a817
PM
25148The symbol table in which the symbol appears. This attribute is
25149represented as a @code{gdb.Symtab} object. @xref{Symbol Tables In
25150Python}. This attribute is not writable.
d812018b 25151@end defvar
f3e9a817 25152
64e7d9dd
TT
25153@defvar Symbol.line
25154The line number in the source code at which the symbol was defined.
25155This is an integer.
25156@end defvar
25157
d812018b 25158@defvar Symbol.name
f3e9a817 25159The name of the symbol as a string. This attribute is not writable.
d812018b 25160@end defvar
f3e9a817 25161
d812018b 25162@defvar Symbol.linkage_name
f3e9a817
PM
25163The name of the symbol, as used by the linker (i.e., may be mangled).
25164This attribute is not writable.
d812018b 25165@end defvar
f3e9a817 25166
d812018b 25167@defvar Symbol.print_name
f3e9a817
PM
25168The name of the symbol in a form suitable for output. This is either
25169@code{name} or @code{linkage_name}, depending on whether the user
25170asked @value{GDBN} to display demangled or mangled names.
d812018b 25171@end defvar
f3e9a817 25172
d812018b 25173@defvar Symbol.addr_class
f3e9a817
PM
25174The address class of the symbol. This classifies how to find the value
25175of a symbol. Each address class is a constant defined in the
25176@code{gdb} module and described later in this chapter.
d812018b 25177@end defvar
f3e9a817 25178
f0823d2c
TT
25179@defvar Symbol.needs_frame
25180This is @code{True} if evaluating this symbol's value requires a frame
25181(@pxref{Frames In Python}) and @code{False} otherwise. Typically,
25182local variables will require a frame, but other symbols will not.
035d1e5b 25183@end defvar
f0823d2c 25184
d812018b 25185@defvar Symbol.is_argument
f3e9a817 25186@code{True} if the symbol is an argument of a function.
d812018b 25187@end defvar
f3e9a817 25188
d812018b 25189@defvar Symbol.is_constant
f3e9a817 25190@code{True} if the symbol is a constant.
d812018b 25191@end defvar
f3e9a817 25192
d812018b 25193@defvar Symbol.is_function
f3e9a817 25194@code{True} if the symbol is a function or a method.
d812018b 25195@end defvar
f3e9a817 25196
d812018b 25197@defvar Symbol.is_variable
f3e9a817 25198@code{True} if the symbol is a variable.
d812018b 25199@end defvar
f3e9a817
PM
25200@end table
25201
29703da4
PM
25202A @code{gdb.Symbol} object has the following methods:
25203
25204@table @code
d812018b 25205@defun Symbol.is_valid ()
29703da4
PM
25206Returns @code{True} if the @code{gdb.Symbol} object is valid,
25207@code{False} if not. A @code{gdb.Symbol} object can become invalid if
25208the symbol it refers to does not exist in @value{GDBN} any longer.
25209All other @code{gdb.Symbol} methods will throw an exception if it is
25210invalid at the time the method is called.
d812018b 25211@end defun
f0823d2c
TT
25212
25213@defun Symbol.value (@r{[}frame@r{]})
25214Compute the value of the symbol, as a @code{gdb.Value}. For
25215functions, this computes the address of the function, cast to the
25216appropriate type. If the symbol requires a frame in order to compute
25217its value, then @var{frame} must be given. If @var{frame} is not
25218given, or if @var{frame} is invalid, then this method will throw an
25219exception.
25220@end defun
29703da4
PM
25221@end table
25222
f3e9a817
PM
25223The available domain categories in @code{gdb.Symbol} are represented
25224as constants in the @code{gdb} module:
25225
25226@table @code
25227@findex SYMBOL_UNDEF_DOMAIN
25228@findex gdb.SYMBOL_UNDEF_DOMAIN
d812018b 25229@item gdb.SYMBOL_UNDEF_DOMAIN
f3e9a817
PM
25230This is used when a domain has not been discovered or none of the
25231following domains apply. This usually indicates an error either
25232in the symbol information or in @value{GDBN}'s handling of symbols.
25233@findex SYMBOL_VAR_DOMAIN
25234@findex gdb.SYMBOL_VAR_DOMAIN
d812018b 25235@item gdb.SYMBOL_VAR_DOMAIN
f3e9a817
PM
25236This domain contains variables, function names, typedef names and enum
25237type values.
25238@findex SYMBOL_STRUCT_DOMAIN
25239@findex gdb.SYMBOL_STRUCT_DOMAIN
d812018b 25240@item gdb.SYMBOL_STRUCT_DOMAIN
f3e9a817
PM
25241This domain holds struct, union and enum type names.
25242@findex SYMBOL_LABEL_DOMAIN
25243@findex gdb.SYMBOL_LABEL_DOMAIN
d812018b 25244@item gdb.SYMBOL_LABEL_DOMAIN
f3e9a817
PM
25245This domain contains names of labels (for gotos).
25246@findex SYMBOL_VARIABLES_DOMAIN
25247@findex gdb.SYMBOL_VARIABLES_DOMAIN
d812018b 25248@item gdb.SYMBOL_VARIABLES_DOMAIN
f3e9a817
PM
25249This domain holds a subset of the @code{SYMBOLS_VAR_DOMAIN}; it
25250contains everything minus functions and types.
25251@findex SYMBOL_FUNCTIONS_DOMAIN
25252@findex gdb.SYMBOL_FUNCTIONS_DOMAIN
d812018b 25253@item gdb.SYMBOL_FUNCTION_DOMAIN
f3e9a817
PM
25254This domain contains all functions.
25255@findex SYMBOL_TYPES_DOMAIN
25256@findex gdb.SYMBOL_TYPES_DOMAIN
d812018b 25257@item gdb.SYMBOL_TYPES_DOMAIN
f3e9a817
PM
25258This domain contains all types.
25259@end table
25260
25261The available address class categories in @code{gdb.Symbol} are represented
25262as constants in the @code{gdb} module:
25263
25264@table @code
25265@findex SYMBOL_LOC_UNDEF
25266@findex gdb.SYMBOL_LOC_UNDEF
d812018b 25267@item gdb.SYMBOL_LOC_UNDEF
f3e9a817
PM
25268If this is returned by address class, it indicates an error either in
25269the symbol information or in @value{GDBN}'s handling of symbols.
25270@findex SYMBOL_LOC_CONST
25271@findex gdb.SYMBOL_LOC_CONST
d812018b 25272@item gdb.SYMBOL_LOC_CONST
f3e9a817
PM
25273Value is constant int.
25274@findex SYMBOL_LOC_STATIC
25275@findex gdb.SYMBOL_LOC_STATIC
d812018b 25276@item gdb.SYMBOL_LOC_STATIC
f3e9a817
PM
25277Value is at a fixed address.
25278@findex SYMBOL_LOC_REGISTER
25279@findex gdb.SYMBOL_LOC_REGISTER
d812018b 25280@item gdb.SYMBOL_LOC_REGISTER
f3e9a817
PM
25281Value is in a register.
25282@findex SYMBOL_LOC_ARG
25283@findex gdb.SYMBOL_LOC_ARG
d812018b 25284@item gdb.SYMBOL_LOC_ARG
f3e9a817
PM
25285Value is an argument. This value is at the offset stored within the
25286symbol inside the frame's argument list.
25287@findex SYMBOL_LOC_REF_ARG
25288@findex gdb.SYMBOL_LOC_REF_ARG
d812018b 25289@item gdb.SYMBOL_LOC_REF_ARG
f3e9a817
PM
25290Value address is stored in the frame's argument list. Just like
25291@code{LOC_ARG} except that the value's address is stored at the
25292offset, not the value itself.
25293@findex SYMBOL_LOC_REGPARM_ADDR
25294@findex gdb.SYMBOL_LOC_REGPARM_ADDR
d812018b 25295@item gdb.SYMBOL_LOC_REGPARM_ADDR
f3e9a817
PM
25296Value is a specified register. Just like @code{LOC_REGISTER} except
25297the register holds the address of the argument instead of the argument
25298itself.
25299@findex SYMBOL_LOC_LOCAL
25300@findex gdb.SYMBOL_LOC_LOCAL
d812018b 25301@item gdb.SYMBOL_LOC_LOCAL
f3e9a817
PM
25302Value is a local variable.
25303@findex SYMBOL_LOC_TYPEDEF
25304@findex gdb.SYMBOL_LOC_TYPEDEF
d812018b 25305@item gdb.SYMBOL_LOC_TYPEDEF
f3e9a817
PM
25306Value not used. Symbols in the domain @code{SYMBOL_STRUCT_DOMAIN} all
25307have this class.
25308@findex SYMBOL_LOC_BLOCK
25309@findex gdb.SYMBOL_LOC_BLOCK
d812018b 25310@item gdb.SYMBOL_LOC_BLOCK
f3e9a817
PM
25311Value is a block.
25312@findex SYMBOL_LOC_CONST_BYTES
25313@findex gdb.SYMBOL_LOC_CONST_BYTES
d812018b 25314@item gdb.SYMBOL_LOC_CONST_BYTES
f3e9a817
PM
25315Value is a byte-sequence.
25316@findex SYMBOL_LOC_UNRESOLVED
25317@findex gdb.SYMBOL_LOC_UNRESOLVED
d812018b 25318@item gdb.SYMBOL_LOC_UNRESOLVED
f3e9a817
PM
25319Value is at a fixed address, but the address of the variable has to be
25320determined from the minimal symbol table whenever the variable is
25321referenced.
25322@findex SYMBOL_LOC_OPTIMIZED_OUT
25323@findex gdb.SYMBOL_LOC_OPTIMIZED_OUT
d812018b 25324@item gdb.SYMBOL_LOC_OPTIMIZED_OUT
f3e9a817
PM
25325The value does not actually exist in the program.
25326@findex SYMBOL_LOC_COMPUTED
25327@findex gdb.SYMBOL_LOC_COMPUTED
d812018b 25328@item gdb.SYMBOL_LOC_COMPUTED
f3e9a817
PM
25329The value's address is a computed location.
25330@end table
25331
25332@node Symbol Tables In Python
25333@subsubsection Symbol table representation in Python.
25334
25335@cindex symbol tables in python
25336@tindex gdb.Symtab
25337@tindex gdb.Symtab_and_line
25338
25339Access to symbol table data maintained by @value{GDBN} on the inferior
25340is exposed to Python via two objects: @code{gdb.Symtab_and_line} and
25341@code{gdb.Symtab}. Symbol table and line data for a frame is returned
25342from the @code{find_sal} method in @code{gdb.Frame} object.
25343@xref{Frames In Python}.
25344
25345For more information on @value{GDBN}'s symbol table management, see
25346@ref{Symbols, ,Examining the Symbol Table}, for more information.
25347
25348A @code{gdb.Symtab_and_line} object has the following attributes:
25349
25350@table @code
d812018b 25351@defvar Symtab_and_line.symtab
f3e9a817
PM
25352The symbol table object (@code{gdb.Symtab}) for this frame.
25353This attribute is not writable.
d812018b 25354@end defvar
f3e9a817 25355
d812018b 25356@defvar Symtab_and_line.pc
3c15d565
SCR
25357Indicates the start of the address range occupied by code for the
25358current source line. This attribute is not writable.
d812018b 25359@end defvar
f3e9a817 25360
ee0bf529
SCR
25361@defvar Symtab_and_line.last
25362Indicates the end of the address range occupied by code for the current
25363source line. This attribute is not writable.
25364@end defvar
25365
d812018b 25366@defvar Symtab_and_line.line
f3e9a817
PM
25367Indicates the current line number for this object. This
25368attribute is not writable.
d812018b 25369@end defvar
f3e9a817
PM
25370@end table
25371
29703da4
PM
25372A @code{gdb.Symtab_and_line} object has the following methods:
25373
25374@table @code
d812018b 25375@defun Symtab_and_line.is_valid ()
29703da4
PM
25376Returns @code{True} if the @code{gdb.Symtab_and_line} object is valid,
25377@code{False} if not. A @code{gdb.Symtab_and_line} object can become
25378invalid if the Symbol table and line object it refers to does not
25379exist in @value{GDBN} any longer. All other
25380@code{gdb.Symtab_and_line} methods will throw an exception if it is
25381invalid at the time the method is called.
d812018b 25382@end defun
29703da4
PM
25383@end table
25384
f3e9a817
PM
25385A @code{gdb.Symtab} object has the following attributes:
25386
25387@table @code
d812018b 25388@defvar Symtab.filename
f3e9a817 25389The symbol table's source filename. This attribute is not writable.
d812018b 25390@end defvar
f3e9a817 25391
d812018b 25392@defvar Symtab.objfile
f3e9a817
PM
25393The symbol table's backing object file. @xref{Objfiles In Python}.
25394This attribute is not writable.
d812018b 25395@end defvar
f3e9a817
PM
25396@end table
25397
29703da4 25398A @code{gdb.Symtab} object has the following methods:
f3e9a817
PM
25399
25400@table @code
d812018b 25401@defun Symtab.is_valid ()
29703da4
PM
25402Returns @code{True} if the @code{gdb.Symtab} object is valid,
25403@code{False} if not. A @code{gdb.Symtab} object can become invalid if
25404the symbol table it refers to does not exist in @value{GDBN} any
25405longer. All other @code{gdb.Symtab} methods will throw an exception
25406if it is invalid at the time the method is called.
d812018b 25407@end defun
29703da4 25408
d812018b 25409@defun Symtab.fullname ()
f3e9a817 25410Return the symbol table's source absolute file name.
d812018b 25411@end defun
a20ee7a4
SCR
25412
25413@defun Symtab.global_block ()
25414Return the global block of the underlying symbol table.
25415@xref{Blocks In Python}.
25416@end defun
25417
25418@defun Symtab.static_block ()
25419Return the static block of the underlying symbol table.
25420@xref{Blocks In Python}.
25421@end defun
f8f6f20b
TJB
25422@end table
25423
adc36818
PM
25424@node Breakpoints In Python
25425@subsubsection Manipulating breakpoints using Python
25426
25427@cindex breakpoints in python
25428@tindex gdb.Breakpoint
25429
25430Python code can manipulate breakpoints via the @code{gdb.Breakpoint}
25431class.
25432
d812018b 25433@defun Breakpoint.__init__ (spec @r{[}, type @r{[}, wp_class @r{[},internal@r{]]]})
adc36818
PM
25434Create a new breakpoint. @var{spec} is a string naming the
25435location of the breakpoint, or an expression that defines a
25436watchpoint. The contents can be any location recognized by the
25437@code{break} command, or in the case of a watchpoint, by the @code{watch}
25438command. The optional @var{type} denotes the breakpoint to create
25439from the types defined later in this chapter. This argument can be
d812018b
PK
25440either: @code{gdb.BP_BREAKPOINT} or @code{gdb.BP_WATCHPOINT}. @var{type}
25441defaults to @code{gdb.BP_BREAKPOINT}. The optional @var{internal} argument
84f4c1fe
PM
25442allows the breakpoint to become invisible to the user. The breakpoint
25443will neither be reported when created, nor will it be listed in the
25444output from @code{info breakpoints} (but will be listed with the
25445@code{maint info breakpoints} command). The optional @var{wp_class}
adc36818 25446argument defines the class of watchpoint to create, if @var{type} is
d812018b
PK
25447@code{gdb.BP_WATCHPOINT}. If a watchpoint class is not provided, it is
25448assumed to be a @code{gdb.WP_WRITE} class.
25449@end defun
adc36818 25450
d812018b 25451@defun Breakpoint.stop (self)
7371cf6d
PM
25452The @code{gdb.Breakpoint} class can be sub-classed and, in
25453particular, you may choose to implement the @code{stop} method.
25454If this method is defined as a sub-class of @code{gdb.Breakpoint},
25455it will be called when the inferior reaches any location of a
25456breakpoint which instantiates that sub-class. If the method returns
25457@code{True}, the inferior will be stopped at the location of the
25458breakpoint, otherwise the inferior will continue.
25459
25460If there are multiple breakpoints at the same location with a
25461@code{stop} method, each one will be called regardless of the
25462return status of the previous. This ensures that all @code{stop}
25463methods have a chance to execute at that location. In this scenario
25464if one of the methods returns @code{True} but the others return
25465@code{False}, the inferior will still be stopped.
25466
99f5279d
PM
25467You should not alter the execution state of the inferior (i.e.@:, step,
25468next, etc.), alter the current frame context (i.e.@:, change the current
25469active frame), or alter, add or delete any breakpoint. As a general
25470rule, you should not alter any data within @value{GDBN} or the inferior
25471at this time.
25472
7371cf6d
PM
25473Example @code{stop} implementation:
25474
25475@smallexample
25476class MyBreakpoint (gdb.Breakpoint):
25477 def stop (self):
25478 inf_val = gdb.parse_and_eval("foo")
25479 if inf_val == 3:
25480 return True
25481 return False
25482@end smallexample
d812018b 25483@end defun
7371cf6d 25484
adc36818
PM
25485The available watchpoint types represented by constants are defined in the
25486@code{gdb} module:
25487
25488@table @code
25489@findex WP_READ
25490@findex gdb.WP_READ
d812018b 25491@item gdb.WP_READ
adc36818
PM
25492Read only watchpoint.
25493
25494@findex WP_WRITE
25495@findex gdb.WP_WRITE
d812018b 25496@item gdb.WP_WRITE
adc36818
PM
25497Write only watchpoint.
25498
25499@findex WP_ACCESS
25500@findex gdb.WP_ACCESS
d812018b 25501@item gdb.WP_ACCESS
adc36818
PM
25502Read/Write watchpoint.
25503@end table
25504
d812018b 25505@defun Breakpoint.is_valid ()
adc36818
PM
25506Return @code{True} if this @code{Breakpoint} object is valid,
25507@code{False} otherwise. A @code{Breakpoint} object can become invalid
25508if the user deletes the breakpoint. In this case, the object still
25509exists, but the underlying breakpoint does not. In the cases of
25510watchpoint scope, the watchpoint remains valid even if execution of the
25511inferior leaves the scope of that watchpoint.
d812018b 25512@end defun
adc36818 25513
d812018b 25514@defun Breakpoint.delete
94b6973e
PM
25515Permanently deletes the @value{GDBN} breakpoint. This also
25516invalidates the Python @code{Breakpoint} object. Any further access
25517to this object's attributes or methods will raise an error.
d812018b 25518@end defun
94b6973e 25519
d812018b 25520@defvar Breakpoint.enabled
adc36818
PM
25521This attribute is @code{True} if the breakpoint is enabled, and
25522@code{False} otherwise. This attribute is writable.
d812018b 25523@end defvar
adc36818 25524
d812018b 25525@defvar Breakpoint.silent
adc36818
PM
25526This attribute is @code{True} if the breakpoint is silent, and
25527@code{False} otherwise. This attribute is writable.
25528
25529Note that a breakpoint can also be silent if it has commands and the
25530first command is @code{silent}. This is not reported by the
25531@code{silent} attribute.
d812018b 25532@end defvar
adc36818 25533
d812018b 25534@defvar Breakpoint.thread
adc36818
PM
25535If the breakpoint is thread-specific, this attribute holds the thread
25536id. If the breakpoint is not thread-specific, this attribute is
25537@code{None}. This attribute is writable.
d812018b 25538@end defvar
adc36818 25539
d812018b 25540@defvar Breakpoint.task
adc36818
PM
25541If the breakpoint is Ada task-specific, this attribute holds the Ada task
25542id. If the breakpoint is not task-specific (or the underlying
25543language is not Ada), this attribute is @code{None}. This attribute
25544is writable.
d812018b 25545@end defvar
adc36818 25546
d812018b 25547@defvar Breakpoint.ignore_count
adc36818
PM
25548This attribute holds the ignore count for the breakpoint, an integer.
25549This attribute is writable.
d812018b 25550@end defvar
adc36818 25551
d812018b 25552@defvar Breakpoint.number
adc36818
PM
25553This attribute holds the breakpoint's number --- the identifier used by
25554the user to manipulate the breakpoint. This attribute is not writable.
d812018b 25555@end defvar
adc36818 25556
d812018b 25557@defvar Breakpoint.type
adc36818
PM
25558This attribute holds the breakpoint's type --- the identifier used to
25559determine the actual breakpoint type or use-case. This attribute is not
25560writable.
d812018b 25561@end defvar
adc36818 25562
d812018b 25563@defvar Breakpoint.visible
84f4c1fe
PM
25564This attribute tells whether the breakpoint is visible to the user
25565when set, or when the @samp{info breakpoints} command is run. This
25566attribute is not writable.
d812018b 25567@end defvar
84f4c1fe 25568
adc36818
PM
25569The available types are represented by constants defined in the @code{gdb}
25570module:
25571
25572@table @code
25573@findex BP_BREAKPOINT
25574@findex gdb.BP_BREAKPOINT
d812018b 25575@item gdb.BP_BREAKPOINT
adc36818
PM
25576Normal code breakpoint.
25577
25578@findex BP_WATCHPOINT
25579@findex gdb.BP_WATCHPOINT
d812018b 25580@item gdb.BP_WATCHPOINT
adc36818
PM
25581Watchpoint breakpoint.
25582
25583@findex BP_HARDWARE_WATCHPOINT
25584@findex gdb.BP_HARDWARE_WATCHPOINT
d812018b 25585@item gdb.BP_HARDWARE_WATCHPOINT
adc36818
PM
25586Hardware assisted watchpoint.
25587
25588@findex BP_READ_WATCHPOINT
25589@findex gdb.BP_READ_WATCHPOINT
d812018b 25590@item gdb.BP_READ_WATCHPOINT
adc36818
PM
25591Hardware assisted read watchpoint.
25592
25593@findex BP_ACCESS_WATCHPOINT
25594@findex gdb.BP_ACCESS_WATCHPOINT
d812018b 25595@item gdb.BP_ACCESS_WATCHPOINT
adc36818
PM
25596Hardware assisted access watchpoint.
25597@end table
25598
d812018b 25599@defvar Breakpoint.hit_count
adc36818
PM
25600This attribute holds the hit count for the breakpoint, an integer.
25601This attribute is writable, but currently it can only be set to zero.
d812018b 25602@end defvar
adc36818 25603
d812018b 25604@defvar Breakpoint.location
adc36818
PM
25605This attribute holds the location of the breakpoint, as specified by
25606the user. It is a string. If the breakpoint does not have a location
25607(that is, it is a watchpoint) the attribute's value is @code{None}. This
25608attribute is not writable.
d812018b 25609@end defvar
adc36818 25610
d812018b 25611@defvar Breakpoint.expression
adc36818
PM
25612This attribute holds a breakpoint expression, as specified by
25613the user. It is a string. If the breakpoint does not have an
25614expression (the breakpoint is not a watchpoint) the attribute's value
25615is @code{None}. This attribute is not writable.
d812018b 25616@end defvar
adc36818 25617
d812018b 25618@defvar Breakpoint.condition
adc36818
PM
25619This attribute holds the condition of the breakpoint, as specified by
25620the user. It is a string. If there is no condition, this attribute's
25621value is @code{None}. This attribute is writable.
d812018b 25622@end defvar
adc36818 25623
d812018b 25624@defvar Breakpoint.commands
adc36818
PM
25625This attribute holds the commands attached to the breakpoint. If
25626there are commands, this attribute's value is a string holding all the
25627commands, separated by newlines. If there are no commands, this
25628attribute is @code{None}. This attribute is not writable.
d812018b 25629@end defvar
adc36818 25630
cc72b2a2
KP
25631@node Finish Breakpoints in Python
25632@subsubsection Finish Breakpoints
25633
25634@cindex python finish breakpoints
25635@tindex gdb.FinishBreakpoint
25636
25637A finish breakpoint is a temporary breakpoint set at the return address of
25638a frame, based on the @code{finish} command. @code{gdb.FinishBreakpoint}
25639extends @code{gdb.Breakpoint}. The underlying breakpoint will be disabled
25640and deleted when the execution will run out of the breakpoint scope (i.e.@:
25641@code{Breakpoint.stop} or @code{FinishBreakpoint.out_of_scope} triggered).
25642Finish breakpoints are thread specific and must be create with the right
25643thread selected.
25644
25645@defun FinishBreakpoint.__init__ (@r{[}frame@r{]} @r{[}, internal@r{]})
25646Create a finish breakpoint at the return address of the @code{gdb.Frame}
25647object @var{frame}. If @var{frame} is not provided, this defaults to the
25648newest frame. The optional @var{internal} argument allows the breakpoint to
25649become invisible to the user. @xref{Breakpoints In Python}, for further
25650details about this argument.
25651@end defun
25652
25653@defun FinishBreakpoint.out_of_scope (self)
25654In some circumstances (e.g.@: @code{longjmp}, C@t{++} exceptions, @value{GDBN}
25655@code{return} command, @dots{}), a function may not properly terminate, and
25656thus never hit the finish breakpoint. When @value{GDBN} notices such a
25657situation, the @code{out_of_scope} callback will be triggered.
25658
25659You may want to sub-class @code{gdb.FinishBreakpoint} and override this
25660method:
25661
25662@smallexample
25663class MyFinishBreakpoint (gdb.FinishBreakpoint)
25664 def stop (self):
25665 print "normal finish"
25666 return True
25667
25668 def out_of_scope ():
25669 print "abnormal finish"
25670@end smallexample
25671@end defun
25672
25673@defvar FinishBreakpoint.return_value
25674When @value{GDBN} is stopped at a finish breakpoint and the frame
25675used to build the @code{gdb.FinishBreakpoint} object had debug symbols, this
25676attribute will contain a @code{gdb.Value} object corresponding to the return
25677value of the function. The value will be @code{None} if the function return
25678type is @code{void} or if the return value was not computable. This attribute
25679is not writable.
25680@end defvar
25681
be759fcf
PM
25682@node Lazy Strings In Python
25683@subsubsection Python representation of lazy strings.
25684
25685@cindex lazy strings in python
25686@tindex gdb.LazyString
25687
25688A @dfn{lazy string} is a string whose contents is not retrieved or
25689encoded until it is needed.
25690
25691A @code{gdb.LazyString} is represented in @value{GDBN} as an
25692@code{address} that points to a region of memory, an @code{encoding}
25693that will be used to encode that region of memory, and a @code{length}
25694to delimit the region of memory that represents the string. The
25695difference between a @code{gdb.LazyString} and a string wrapped within
25696a @code{gdb.Value} is that a @code{gdb.LazyString} will be treated
25697differently by @value{GDBN} when printing. A @code{gdb.LazyString} is
25698retrieved and encoded during printing, while a @code{gdb.Value}
25699wrapping a string is immediately retrieved and encoded on creation.
25700
25701A @code{gdb.LazyString} object has the following functions:
25702
d812018b 25703@defun LazyString.value ()
be759fcf
PM
25704Convert the @code{gdb.LazyString} to a @code{gdb.Value}. This value
25705will point to the string in memory, but will lose all the delayed
25706retrieval, encoding and handling that @value{GDBN} applies to a
25707@code{gdb.LazyString}.
d812018b 25708@end defun
be759fcf 25709
d812018b 25710@defvar LazyString.address
be759fcf
PM
25711This attribute holds the address of the string. This attribute is not
25712writable.
d812018b 25713@end defvar
be759fcf 25714
d812018b 25715@defvar LazyString.length
be759fcf
PM
25716This attribute holds the length of the string in characters. If the
25717length is -1, then the string will be fetched and encoded up to the
25718first null of appropriate width. This attribute is not writable.
d812018b 25719@end defvar
be759fcf 25720
d812018b 25721@defvar LazyString.encoding
be759fcf
PM
25722This attribute holds the encoding that will be applied to the string
25723when the string is printed by @value{GDBN}. If the encoding is not
25724set, or contains an empty string, then @value{GDBN} will select the
25725most appropriate encoding when the string is printed. This attribute
25726is not writable.
d812018b 25727@end defvar
be759fcf 25728
d812018b 25729@defvar LazyString.type
be759fcf
PM
25730This attribute holds the type that is represented by the lazy string's
25731type. For a lazy string this will always be a pointer type. To
25732resolve this to the lazy string's character type, use the type's
25733@code{target} method. @xref{Types In Python}. This attribute is not
25734writable.
d812018b 25735@end defvar
be759fcf 25736
bf88dd68
JK
25737@node Python Auto-loading
25738@subsection Python Auto-loading
25739@cindex Python auto-loading
8a1ea21f
DE
25740
25741When a new object file is read (for example, due to the @code{file}
25742command, or because the inferior has loaded a shared library),
25743@value{GDBN} will look for Python support scripts in several ways:
3708f05e
JK
25744@file{@var{objfile}-gdb.py} (@pxref{objfile-gdb.py file})
25745and @code{.debug_gdb_scripts} section
25746(@pxref{dotdebug_gdb_scripts section}).
8a1ea21f
DE
25747
25748The auto-loading feature is useful for supplying application-specific
25749debugging commands and scripts.
25750
dbaefcf7
DE
25751Auto-loading can be enabled or disabled,
25752and the list of auto-loaded scripts can be printed.
8a1ea21f
DE
25753
25754@table @code
bf88dd68
JK
25755@anchor{set auto-load python-scripts}
25756@kindex set auto-load python-scripts
25757@item set auto-load python-scripts [on|off]
a86caf66 25758Enable or disable the auto-loading of Python scripts.
8a1ea21f 25759
bf88dd68
JK
25760@anchor{show auto-load python-scripts}
25761@kindex show auto-load python-scripts
25762@item show auto-load python-scripts
a86caf66 25763Show whether auto-loading of Python scripts is enabled or disabled.
dbaefcf7 25764
bf88dd68
JK
25765@anchor{info auto-load python-scripts}
25766@kindex info auto-load python-scripts
25767@cindex print list of auto-loaded Python scripts
25768@item info auto-load python-scripts [@var{regexp}]
25769Print the list of all Python scripts that @value{GDBN} auto-loaded.
75fc9810 25770
bf88dd68 25771Also printed is the list of Python scripts that were mentioned in
75fc9810 25772the @code{.debug_gdb_scripts} section and were not found
8e0583c8 25773(@pxref{dotdebug_gdb_scripts section}).
75fc9810
DE
25774This is useful because their names are not printed when @value{GDBN}
25775tries to load them and fails. There may be many of them, and printing
25776an error message for each one is problematic.
25777
bf88dd68 25778If @var{regexp} is supplied only Python scripts with matching names are printed.
dbaefcf7 25779
75fc9810
DE
25780Example:
25781
dbaefcf7 25782@smallexample
bf88dd68 25783(gdb) info auto-load python-scripts
bccbefd2
JK
25784Loaded Script
25785Yes py-section-script.py
25786 full name: /tmp/py-section-script.py
25787No my-foo-pretty-printers.py
dbaefcf7 25788@end smallexample
8a1ea21f
DE
25789@end table
25790
25791When reading an auto-loaded file, @value{GDBN} sets the
25792@dfn{current objfile}. This is available via the @code{gdb.current_objfile}
25793function (@pxref{Objfiles In Python}). This can be useful for
25794registering objfile-specific pretty-printers.
25795
3708f05e
JK
25796@menu
25797* objfile-gdb.py file:: The @file{@var{objfile}-gdb.py} file
25798* dotdebug_gdb_scripts section:: The @code{.debug_gdb_scripts} section
25799* Which flavor to choose?::
25800@end menu
25801
8a1ea21f
DE
25802@node objfile-gdb.py file
25803@subsubsection The @file{@var{objfile}-gdb.py} file
25804@cindex @file{@var{objfile}-gdb.py}
25805
25806When a new object file is read, @value{GDBN} looks for
7349ff92 25807a file named @file{@var{objfile}-gdb.py} (we call it @var{script-name} below),
8a1ea21f
DE
25808where @var{objfile} is the object file's real name, formed by ensuring
25809that the file name is absolute, following all symlinks, and resolving
25810@code{.} and @code{..} components. If this file exists and is
25811readable, @value{GDBN} will evaluate it as a Python script.
25812
1564a261 25813If this file does not exist, then @value{GDBN} will look for
c1668e4e
JK
25814@var{script-name} file in all of the directories as specified below.
25815
25816Note that loading of this script file also requires accordingly configured
25817@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
7349ff92
JK
25818
25819@table @code
25820@anchor{set auto-load scripts-directory}
25821@kindex set auto-load scripts-directory
25822@item set auto-load scripts-directory @r{[}@var{directories}@r{]}
25823Control @value{GDBN} auto-loaded scripts location. Multiple directory entries
25824may be delimited by the host platform path separator in use
25825(@samp{:} on Unix, @samp{;} on MS-Windows and MS-DOS).
25826
25827Each entry here needs to be covered also by the security setting
25828@code{set auto-load safe-path} (@pxref{set auto-load safe-path}).
25829
25830@anchor{with-auto-load-dir}
1564a261
JK
25831This variable defaults to @file{$debugdir:$datadir/auto-load}. The default
25832@code{set auto-load safe-path} value can be also overriden by @value{GDBN}
25833configuration option @option{--with-auto-load-dir}.
25834
25835Any reference to @file{$debugdir} will get replaced by
25836@var{debug-file-directory} value (@pxref{Separate Debug Files}) and any
25837reference to @file{$datadir} will get replaced by @var{data-directory} which is
25838determined at @value{GDBN} startup (@pxref{Data Files}). @file{$debugdir} and
25839@file{$datadir} must be placed as a directory component --- either alone or
25840delimited by @file{/} or @file{\} directory separators, depending on the host
25841platform.
7349ff92
JK
25842
25843The list of directories uses path separator (@samp{:} on GNU and Unix
25844systems, @samp{;} on MS-Windows and MS-DOS) to separate directories, similarly
25845to the @env{PATH} environment variable.
25846
25847@anchor{show auto-load scripts-directory}
25848@kindex show auto-load scripts-directory
25849@item show auto-load scripts-directory
25850Show @value{GDBN} auto-loaded scripts location.
25851@end table
8a1ea21f
DE
25852
25853@value{GDBN} does not track which files it has already auto-loaded this way.
25854@value{GDBN} will load the associated script every time the corresponding
25855@var{objfile} is opened.
25856So your @file{-gdb.py} file should be careful to avoid errors if it
25857is evaluated more than once.
25858
8e0583c8 25859@node dotdebug_gdb_scripts section
8a1ea21f
DE
25860@subsubsection The @code{.debug_gdb_scripts} section
25861@cindex @code{.debug_gdb_scripts} section
25862
25863For systems using file formats like ELF and COFF,
25864when @value{GDBN} loads a new object file
25865it will look for a special section named @samp{.debug_gdb_scripts}.
25866If this section exists, its contents is a list of names of scripts to load.
25867
25868@value{GDBN} will look for each specified script file first in the
25869current directory and then along the source search path
25870(@pxref{Source Path, ,Specifying Source Directories}),
25871except that @file{$cdir} is not searched, since the compilation
25872directory is not relevant to scripts.
25873
25874Entries can be placed in section @code{.debug_gdb_scripts} with,
25875for example, this GCC macro:
25876
25877@example
a3a7127e 25878/* Note: The "MS" section flags are to remove duplicates. */
8a1ea21f
DE
25879#define DEFINE_GDB_SCRIPT(script_name) \
25880 asm("\
25881.pushsection \".debug_gdb_scripts\", \"MS\",@@progbits,1\n\
25882.byte 1\n\
25883.asciz \"" script_name "\"\n\
25884.popsection \n\
25885");
25886@end example
25887
25888@noindent
25889Then one can reference the macro in a header or source file like this:
25890
25891@example
25892DEFINE_GDB_SCRIPT ("my-app-scripts.py")
25893@end example
25894
25895The script name may include directories if desired.
25896
c1668e4e
JK
25897Note that loading of this script file also requires accordingly configured
25898@code{auto-load safe-path} (@pxref{Auto-loading safe path}).
25899
8a1ea21f
DE
25900If the macro is put in a header, any application or library
25901using this header will get a reference to the specified script.
25902
25903@node Which flavor to choose?
25904@subsubsection Which flavor to choose?
25905
25906Given the multiple ways of auto-loading Python scripts, it might not always
25907be clear which one to choose. This section provides some guidance.
25908
25909Benefits of the @file{-gdb.py} way:
25910
25911@itemize @bullet
25912@item
25913Can be used with file formats that don't support multiple sections.
25914
25915@item
25916Ease of finding scripts for public libraries.
25917
25918Scripts specified in the @code{.debug_gdb_scripts} section are searched for
25919in the source search path.
25920For publicly installed libraries, e.g., @file{libstdc++}, there typically
25921isn't a source directory in which to find the script.
25922
25923@item
25924Doesn't require source code additions.
25925@end itemize
25926
25927Benefits of the @code{.debug_gdb_scripts} way:
25928
25929@itemize @bullet
25930@item
25931Works with static linking.
25932
25933Scripts for libraries done the @file{-gdb.py} way require an objfile to
25934trigger their loading. When an application is statically linked the only
25935objfile available is the executable, and it is cumbersome to attach all the
25936scripts from all the input libraries to the executable's @file{-gdb.py} script.
25937
25938@item
25939Works with classes that are entirely inlined.
25940
25941Some classes can be entirely inlined, and thus there may not be an associated
25942shared library to attach a @file{-gdb.py} script to.
25943
25944@item
25945Scripts needn't be copied out of the source tree.
25946
25947In some circumstances, apps can be built out of large collections of internal
25948libraries, and the build infrastructure necessary to install the
25949@file{-gdb.py} scripts in a place where @value{GDBN} can find them is
25950cumbersome. It may be easier to specify the scripts in the
25951@code{.debug_gdb_scripts} section as relative paths, and add a path to the
25952top of the source tree to the source search path.
25953@end itemize
25954
0e3509db
DE
25955@node Python modules
25956@subsection Python modules
25957@cindex python modules
25958
fa3a4f15 25959@value{GDBN} comes with several modules to assist writing Python code.
0e3509db
DE
25960
25961@menu
7b51bc51 25962* gdb.printing:: Building and registering pretty-printers.
0e3509db 25963* gdb.types:: Utilities for working with types.
fa3a4f15 25964* gdb.prompt:: Utilities for prompt value substitution.
0e3509db
DE
25965@end menu
25966
7b51bc51
DE
25967@node gdb.printing
25968@subsubsection gdb.printing
25969@cindex gdb.printing
25970
25971This module provides a collection of utilities for working with
25972pretty-printers.
25973
25974@table @code
25975@item PrettyPrinter (@var{name}, @var{subprinters}=None)
25976This class specifies the API that makes @samp{info pretty-printer},
25977@samp{enable pretty-printer} and @samp{disable pretty-printer} work.
25978Pretty-printers should generally inherit from this class.
25979
25980@item SubPrettyPrinter (@var{name})
25981For printers that handle multiple types, this class specifies the
25982corresponding API for the subprinters.
25983
25984@item RegexpCollectionPrettyPrinter (@var{name})
25985Utility class for handling multiple printers, all recognized via
25986regular expressions.
25987@xref{Writing a Pretty-Printer}, for an example.
25988
cafec441
TT
25989@item FlagEnumerationPrinter (@var{name})
25990A pretty-printer which handles printing of @code{enum} values. Unlike
25991@value{GDBN}'s built-in @code{enum} printing, this printer attempts to
25992work properly when there is some overlap between the enumeration
25993constants. @var{name} is the name of the printer and also the name of
25994the @code{enum} type to look up.
25995
9c15afc4 25996@item register_pretty_printer (@var{obj}, @var{printer}, @var{replace}=False)
7b51bc51 25997Register @var{printer} with the pretty-printer list of @var{obj}.
9c15afc4
DE
25998If @var{replace} is @code{True} then any existing copy of the printer
25999is replaced. Otherwise a @code{RuntimeError} exception is raised
26000if a printer with the same name already exists.
7b51bc51
DE
26001@end table
26002
0e3509db
DE
26003@node gdb.types
26004@subsubsection gdb.types
7b51bc51 26005@cindex gdb.types
0e3509db
DE
26006
26007This module provides a collection of utilities for working with
26008@code{gdb.Types} objects.
26009
26010@table @code
26011@item get_basic_type (@var{type})
26012Return @var{type} with const and volatile qualifiers stripped,
26013and with typedefs and C@t{++} references converted to the underlying type.
26014
26015C@t{++} example:
26016
26017@smallexample
26018typedef const int const_int;
26019const_int foo (3);
26020const_int& foo_ref (foo);
26021int main () @{ return 0; @}
26022@end smallexample
26023
26024Then in gdb:
26025
26026@smallexample
26027(gdb) start
26028(gdb) python import gdb.types
26029(gdb) python foo_ref = gdb.parse_and_eval("foo_ref")
26030(gdb) python print gdb.types.get_basic_type(foo_ref.type)
26031int
26032@end smallexample
26033
26034@item has_field (@var{type}, @var{field})
26035Return @code{True} if @var{type}, assumed to be a type with fields
26036(e.g., a structure or union), has field @var{field}.
26037
26038@item make_enum_dict (@var{enum_type})
26039Return a Python @code{dictionary} type produced from @var{enum_type}.
5110b5df 26040
0aaaf063 26041@item deep_items (@var{type})
5110b5df
PK
26042Returns a Python iterator similar to the standard
26043@code{gdb.Type.iteritems} method, except that the iterator returned
0aaaf063 26044by @code{deep_items} will recursively traverse anonymous struct or
5110b5df
PK
26045union fields. For example:
26046
26047@smallexample
26048struct A
26049@{
26050 int a;
26051 union @{
26052 int b0;
26053 int b1;
26054 @};
26055@};
26056@end smallexample
26057
26058@noindent
26059Then in @value{GDBN}:
26060@smallexample
26061(@value{GDBP}) python import gdb.types
26062(@value{GDBP}) python struct_a = gdb.lookup_type("struct A")
26063(@value{GDBP}) python print struct_a.keys ()
26064@{['a', '']@}
0aaaf063 26065(@value{GDBP}) python print [k for k,v in gdb.types.deep_items(struct_a)]
5110b5df
PK
26066@{['a', 'b0', 'b1']@}
26067@end smallexample
26068
0e3509db 26069@end table
fa3a4f15
PM
26070
26071@node gdb.prompt
26072@subsubsection gdb.prompt
26073@cindex gdb.prompt
26074
26075This module provides a method for prompt value-substitution.
26076
26077@table @code
26078@item substitute_prompt (@var{string})
26079Return @var{string} with escape sequences substituted by values. Some
26080escape sequences take arguments. You can specify arguments inside
26081``@{@}'' immediately following the escape sequence.
26082
26083The escape sequences you can pass to this function are:
26084
26085@table @code
26086@item \\
26087Substitute a backslash.
26088@item \e
26089Substitute an ESC character.
26090@item \f
26091Substitute the selected frame; an argument names a frame parameter.
26092@item \n
26093Substitute a newline.
26094@item \p
26095Substitute a parameter's value; the argument names the parameter.
26096@item \r
26097Substitute a carriage return.
26098@item \t
26099Substitute the selected thread; an argument names a thread parameter.
26100@item \v
26101Substitute the version of GDB.
26102@item \w
26103Substitute the current working directory.
26104@item \[
26105Begin a sequence of non-printing characters. These sequences are
26106typically used with the ESC character, and are not counted in the string
26107length. Example: ``\[\e[0;34m\](gdb)\[\e[0m\]'' will return a
26108blue-colored ``(gdb)'' prompt where the length is five.
26109@item \]
26110End a sequence of non-printing characters.
26111@end table
26112
26113For example:
26114
26115@smallexample
26116substitute_prompt (``frame: \f,
26117 print arguments: \p@{print frame-arguments@}'')
26118@end smallexample
26119
26120@exdent will return the string:
26121
26122@smallexample
26123"frame: main, print arguments: scalars"
26124@end smallexample
26125@end table
0e3509db 26126
5a56e9c5
DE
26127@node Aliases
26128@section Creating new spellings of existing commands
26129@cindex aliases for commands
26130
26131It is often useful to define alternate spellings of existing commands.
26132For example, if a new @value{GDBN} command defined in Python has
26133a long name to type, it is handy to have an abbreviated version of it
26134that involves less typing.
26135
26136@value{GDBN} itself uses aliases. For example @samp{s} is an alias
26137of the @samp{step} command even though it is otherwise an ambiguous
26138abbreviation of other commands like @samp{set} and @samp{show}.
26139
26140Aliases are also used to provide shortened or more common versions
26141of multi-word commands. For example, @value{GDBN} provides the
26142@samp{tty} alias of the @samp{set inferior-tty} command.
26143
26144You can define a new alias with the @samp{alias} command.
26145
26146@table @code
26147
26148@kindex alias
26149@item alias [-a] [--] @var{ALIAS} = @var{COMMAND}
26150
26151@end table
26152
26153@var{ALIAS} specifies the name of the new alias.
26154Each word of @var{ALIAS} must consist of letters, numbers, dashes and
26155underscores.
26156
26157@var{COMMAND} specifies the name of an existing command
26158that is being aliased.
26159
26160The @samp{-a} option specifies that the new alias is an abbreviation
26161of the command. Abbreviations are not shown in command
26162lists displayed by the @samp{help} command.
26163
26164The @samp{--} option specifies the end of options,
26165and is useful when @var{ALIAS} begins with a dash.
26166
26167Here is a simple example showing how to make an abbreviation
26168of a command so that there is less to type.
26169Suppose you were tired of typing @samp{disas}, the current
26170shortest unambiguous abbreviation of the @samp{disassemble} command
26171and you wanted an even shorter version named @samp{di}.
26172The following will accomplish this.
26173
26174@smallexample
26175(gdb) alias -a di = disas
26176@end smallexample
26177
26178Note that aliases are different from user-defined commands.
26179With a user-defined command, you also need to write documentation
26180for it with the @samp{document} command.
26181An alias automatically picks up the documentation of the existing command.
26182
26183Here is an example where we make @samp{elms} an abbreviation of
26184@samp{elements} in the @samp{set print elements} command.
26185This is to show that you can make an abbreviation of any part
26186of a command.
26187
26188@smallexample
26189(gdb) alias -a set print elms = set print elements
26190(gdb) alias -a show print elms = show print elements
26191(gdb) set p elms 20
26192(gdb) show p elms
26193Limit on string chars or array elements to print is 200.
26194@end smallexample
26195
26196Note that if you are defining an alias of a @samp{set} command,
26197and you want to have an alias for the corresponding @samp{show}
26198command, then you need to define the latter separately.
26199
26200Unambiguously abbreviated commands are allowed in @var{COMMAND} and
26201@var{ALIAS}, just as they are normally.
26202
26203@smallexample
26204(gdb) alias -a set pr elms = set p ele
26205@end smallexample
26206
26207Finally, here is an example showing the creation of a one word
26208alias for a more complex command.
26209This creates alias @samp{spe} of the command @samp{set print elements}.
26210
26211@smallexample
26212(gdb) alias spe = set print elements
26213(gdb) spe 20
26214@end smallexample
26215
21c294e6
AC
26216@node Interpreters
26217@chapter Command Interpreters
26218@cindex command interpreters
26219
26220@value{GDBN} supports multiple command interpreters, and some command
26221infrastructure to allow users or user interface writers to switch
26222between interpreters or run commands in other interpreters.
26223
26224@value{GDBN} currently supports two command interpreters, the console
26225interpreter (sometimes called the command-line interpreter or @sc{cli})
26226and the machine interface interpreter (or @sc{gdb/mi}). This manual
26227describes both of these interfaces in great detail.
26228
26229By default, @value{GDBN} will start with the console interpreter.
26230However, the user may choose to start @value{GDBN} with another
26231interpreter by specifying the @option{-i} or @option{--interpreter}
26232startup options. Defined interpreters include:
26233
26234@table @code
26235@item console
26236@cindex console interpreter
26237The traditional console or command-line interpreter. This is the most often
26238used interpreter with @value{GDBN}. With no interpreter specified at runtime,
26239@value{GDBN} will use this interpreter.
26240
26241@item mi
26242@cindex mi interpreter
26243The newest @sc{gdb/mi} interface (currently @code{mi2}). Used primarily
26244by programs wishing to use @value{GDBN} as a backend for a debugger GUI
26245or an IDE. For more information, see @ref{GDB/MI, ,The @sc{gdb/mi}
26246Interface}.
26247
26248@item mi2
26249@cindex mi2 interpreter
26250The current @sc{gdb/mi} interface.
26251
26252@item mi1
26253@cindex mi1 interpreter
26254The @sc{gdb/mi} interface included in @value{GDBN} 5.1, 5.2, and 5.3.
26255
26256@end table
26257
26258@cindex invoke another interpreter
26259The interpreter being used by @value{GDBN} may not be dynamically
26260switched at runtime. Although possible, this could lead to a very
26261precarious situation. Consider an IDE using @sc{gdb/mi}. If a user
26262enters the command "interpreter-set console" in a console view,
26263@value{GDBN} would switch to using the console interpreter, rendering
26264the IDE inoperable!
26265
26266@kindex interpreter-exec
26267Although you may only choose a single interpreter at startup, you may execute
26268commands in any interpreter from the current interpreter using the appropriate
26269command. If you are running the console interpreter, simply use the
26270@code{interpreter-exec} command:
26271
26272@smallexample
26273interpreter-exec mi "-data-list-register-names"
26274@end smallexample
26275
26276@sc{gdb/mi} has a similar command, although it is only available in versions of
26277@value{GDBN} which support @sc{gdb/mi} version 2 (or greater).
26278
8e04817f
AC
26279@node TUI
26280@chapter @value{GDBN} Text User Interface
26281@cindex TUI
d0d5df6f 26282@cindex Text User Interface
c906108c 26283
8e04817f
AC
26284@menu
26285* TUI Overview:: TUI overview
26286* TUI Keys:: TUI key bindings
7cf36c78 26287* TUI Single Key Mode:: TUI single key mode
db2e3e2e 26288* TUI Commands:: TUI-specific commands
8e04817f
AC
26289* TUI Configuration:: TUI configuration variables
26290@end menu
c906108c 26291
46ba6afa 26292The @value{GDBN} Text User Interface (TUI) is a terminal
d0d5df6f
AC
26293interface which uses the @code{curses} library to show the source
26294file, the assembly output, the program registers and @value{GDBN}
46ba6afa
BW
26295commands in separate text windows. The TUI mode is supported only
26296on platforms where a suitable version of the @code{curses} library
26297is available.
d0d5df6f 26298
46ba6afa 26299The TUI mode is enabled by default when you invoke @value{GDBN} as
217bff3e 26300@samp{@value{GDBP} -tui}.
46ba6afa
BW
26301You can also switch in and out of TUI mode while @value{GDBN} runs by
26302using various TUI commands and key bindings, such as @kbd{C-x C-a}.
26303@xref{TUI Keys, ,TUI Key Bindings}.
c906108c 26304
8e04817f 26305@node TUI Overview
79a6e687 26306@section TUI Overview
c906108c 26307
46ba6afa 26308In TUI mode, @value{GDBN} can display several text windows:
c906108c 26309
8e04817f
AC
26310@table @emph
26311@item command
26312This window is the @value{GDBN} command window with the @value{GDBN}
46ba6afa
BW
26313prompt and the @value{GDBN} output. The @value{GDBN} input is still
26314managed using readline.
c906108c 26315
8e04817f
AC
26316@item source
26317The source window shows the source file of the program. The current
46ba6afa 26318line and active breakpoints are displayed in this window.
c906108c 26319
8e04817f
AC
26320@item assembly
26321The assembly window shows the disassembly output of the program.
c906108c 26322
8e04817f 26323@item register
46ba6afa
BW
26324This window shows the processor registers. Registers are highlighted
26325when their values change.
c906108c
SS
26326@end table
26327
269c21fe 26328The source and assembly windows show the current program position
46ba6afa
BW
26329by highlighting the current line and marking it with a @samp{>} marker.
26330Breakpoints are indicated with two markers. The first marker
269c21fe
SC
26331indicates the breakpoint type:
26332
26333@table @code
26334@item B
26335Breakpoint which was hit at least once.
26336
26337@item b
26338Breakpoint which was never hit.
26339
26340@item H
26341Hardware breakpoint which was hit at least once.
26342
26343@item h
26344Hardware breakpoint which was never hit.
269c21fe
SC
26345@end table
26346
26347The second marker indicates whether the breakpoint is enabled or not:
26348
26349@table @code
26350@item +
26351Breakpoint is enabled.
26352
26353@item -
26354Breakpoint is disabled.
269c21fe
SC
26355@end table
26356
46ba6afa
BW
26357The source, assembly and register windows are updated when the current
26358thread changes, when the frame changes, or when the program counter
26359changes.
26360
26361These windows are not all visible at the same time. The command
26362window is always visible. The others can be arranged in several
26363layouts:
c906108c 26364
8e04817f
AC
26365@itemize @bullet
26366@item
46ba6afa 26367source only,
2df3850c 26368
8e04817f 26369@item
46ba6afa 26370assembly only,
8e04817f
AC
26371
26372@item
46ba6afa 26373source and assembly,
8e04817f
AC
26374
26375@item
46ba6afa 26376source and registers, or
c906108c 26377
8e04817f 26378@item
46ba6afa 26379assembly and registers.
8e04817f 26380@end itemize
c906108c 26381
46ba6afa 26382A status line above the command window shows the following information:
b7bb15bc
SC
26383
26384@table @emph
26385@item target
46ba6afa 26386Indicates the current @value{GDBN} target.
b7bb15bc
SC
26387(@pxref{Targets, ,Specifying a Debugging Target}).
26388
26389@item process
46ba6afa 26390Gives the current process or thread number.
b7bb15bc
SC
26391When no process is being debugged, this field is set to @code{No process}.
26392
26393@item function
26394Gives the current function name for the selected frame.
26395The name is demangled if demangling is turned on (@pxref{Print Settings}).
46ba6afa 26396When there is no symbol corresponding to the current program counter,
b7bb15bc
SC
26397the string @code{??} is displayed.
26398
26399@item line
26400Indicates the current line number for the selected frame.
46ba6afa 26401When the current line number is not known, the string @code{??} is displayed.
b7bb15bc
SC
26402
26403@item pc
26404Indicates the current program counter address.
b7bb15bc
SC
26405@end table
26406
8e04817f
AC
26407@node TUI Keys
26408@section TUI Key Bindings
26409@cindex TUI key bindings
c906108c 26410
8e04817f 26411The TUI installs several key bindings in the readline keymaps
39037522
TT
26412@ifset SYSTEM_READLINE
26413(@pxref{Command Line Editing, , , rluserman, GNU Readline Library}).
26414@end ifset
26415@ifclear SYSTEM_READLINE
26416(@pxref{Command Line Editing}).
26417@end ifclear
26418The following key bindings are installed for both TUI mode and the
26419@value{GDBN} standard mode.
c906108c 26420
8e04817f
AC
26421@table @kbd
26422@kindex C-x C-a
26423@item C-x C-a
26424@kindex C-x a
26425@itemx C-x a
26426@kindex C-x A
26427@itemx C-x A
46ba6afa
BW
26428Enter or leave the TUI mode. When leaving the TUI mode,
26429the curses window management stops and @value{GDBN} operates using
26430its standard mode, writing on the terminal directly. When reentering
26431the TUI mode, control is given back to the curses windows.
8e04817f 26432The screen is then refreshed.
c906108c 26433
8e04817f
AC
26434@kindex C-x 1
26435@item C-x 1
26436Use a TUI layout with only one window. The layout will
26437either be @samp{source} or @samp{assembly}. When the TUI mode
26438is not active, it will switch to the TUI mode.
2df3850c 26439
8e04817f 26440Think of this key binding as the Emacs @kbd{C-x 1} binding.
c906108c 26441
8e04817f
AC
26442@kindex C-x 2
26443@item C-x 2
26444Use a TUI layout with at least two windows. When the current
46ba6afa 26445layout already has two windows, the next layout with two windows is used.
8e04817f
AC
26446When a new layout is chosen, one window will always be common to the
26447previous layout and the new one.
c906108c 26448
8e04817f 26449Think of it as the Emacs @kbd{C-x 2} binding.
2df3850c 26450
72ffddc9
SC
26451@kindex C-x o
26452@item C-x o
26453Change the active window. The TUI associates several key bindings
46ba6afa 26454(like scrolling and arrow keys) with the active window. This command
72ffddc9
SC
26455gives the focus to the next TUI window.
26456
26457Think of it as the Emacs @kbd{C-x o} binding.
26458
7cf36c78
SC
26459@kindex C-x s
26460@item C-x s
46ba6afa
BW
26461Switch in and out of the TUI SingleKey mode that binds single
26462keys to @value{GDBN} commands (@pxref{TUI Single Key Mode}).
c906108c
SS
26463@end table
26464
46ba6afa 26465The following key bindings only work in the TUI mode:
5d161b24 26466
46ba6afa 26467@table @asis
8e04817f 26468@kindex PgUp
46ba6afa 26469@item @key{PgUp}
8e04817f 26470Scroll the active window one page up.
c906108c 26471
8e04817f 26472@kindex PgDn
46ba6afa 26473@item @key{PgDn}
8e04817f 26474Scroll the active window one page down.
c906108c 26475
8e04817f 26476@kindex Up
46ba6afa 26477@item @key{Up}
8e04817f 26478Scroll the active window one line up.
c906108c 26479
8e04817f 26480@kindex Down
46ba6afa 26481@item @key{Down}
8e04817f 26482Scroll the active window one line down.
c906108c 26483
8e04817f 26484@kindex Left
46ba6afa 26485@item @key{Left}
8e04817f 26486Scroll the active window one column left.
c906108c 26487
8e04817f 26488@kindex Right
46ba6afa 26489@item @key{Right}
8e04817f 26490Scroll the active window one column right.
c906108c 26491
8e04817f 26492@kindex C-L
46ba6afa 26493@item @kbd{C-L}
8e04817f 26494Refresh the screen.
8e04817f 26495@end table
c906108c 26496
46ba6afa
BW
26497Because the arrow keys scroll the active window in the TUI mode, they
26498are not available for their normal use by readline unless the command
26499window has the focus. When another window is active, you must use
26500other readline key bindings such as @kbd{C-p}, @kbd{C-n}, @kbd{C-b}
26501and @kbd{C-f} to control the command window.
8e04817f 26502
7cf36c78
SC
26503@node TUI Single Key Mode
26504@section TUI Single Key Mode
26505@cindex TUI single key mode
26506
46ba6afa
BW
26507The TUI also provides a @dfn{SingleKey} mode, which binds several
26508frequently used @value{GDBN} commands to single keys. Type @kbd{C-x s} to
26509switch into this mode, where the following key bindings are used:
7cf36c78
SC
26510
26511@table @kbd
26512@kindex c @r{(SingleKey TUI key)}
26513@item c
26514continue
26515
26516@kindex d @r{(SingleKey TUI key)}
26517@item d
26518down
26519
26520@kindex f @r{(SingleKey TUI key)}
26521@item f
26522finish
26523
26524@kindex n @r{(SingleKey TUI key)}
26525@item n
26526next
26527
26528@kindex q @r{(SingleKey TUI key)}
26529@item q
46ba6afa 26530exit the SingleKey mode.
7cf36c78
SC
26531
26532@kindex r @r{(SingleKey TUI key)}
26533@item r
26534run
26535
26536@kindex s @r{(SingleKey TUI key)}
26537@item s
26538step
26539
26540@kindex u @r{(SingleKey TUI key)}
26541@item u
26542up
26543
26544@kindex v @r{(SingleKey TUI key)}
26545@item v
26546info locals
26547
26548@kindex w @r{(SingleKey TUI key)}
26549@item w
26550where
7cf36c78
SC
26551@end table
26552
26553Other keys temporarily switch to the @value{GDBN} command prompt.
26554The key that was pressed is inserted in the editing buffer so that
26555it is possible to type most @value{GDBN} commands without interaction
46ba6afa
BW
26556with the TUI SingleKey mode. Once the command is entered the TUI
26557SingleKey mode is restored. The only way to permanently leave
7f9087cb 26558this mode is by typing @kbd{q} or @kbd{C-x s}.
7cf36c78
SC
26559
26560
8e04817f 26561@node TUI Commands
db2e3e2e 26562@section TUI-specific Commands
8e04817f
AC
26563@cindex TUI commands
26564
26565The TUI has specific commands to control the text windows.
46ba6afa
BW
26566These commands are always available, even when @value{GDBN} is not in
26567the TUI mode. When @value{GDBN} is in the standard mode, most
26568of these commands will automatically switch to the TUI mode.
c906108c 26569
ff12863f
PA
26570Note that if @value{GDBN}'s @code{stdout} is not connected to a
26571terminal, or @value{GDBN} has been started with the machine interface
26572interpreter (@pxref{GDB/MI, ,The @sc{gdb/mi} Interface}), most of
26573these commands will fail with an error, because it would not be
26574possible or desirable to enable curses window management.
26575
c906108c 26576@table @code
3d757584
SC
26577@item info win
26578@kindex info win
26579List and give the size of all displayed windows.
26580
8e04817f 26581@item layout next
4644b6e3 26582@kindex layout
8e04817f 26583Display the next layout.
2df3850c 26584
8e04817f 26585@item layout prev
8e04817f 26586Display the previous layout.
c906108c 26587
8e04817f 26588@item layout src
8e04817f 26589Display the source window only.
c906108c 26590
8e04817f 26591@item layout asm
8e04817f 26592Display the assembly window only.
c906108c 26593
8e04817f 26594@item layout split
8e04817f 26595Display the source and assembly window.
c906108c 26596
8e04817f 26597@item layout regs
8e04817f
AC
26598Display the register window together with the source or assembly window.
26599
46ba6afa 26600@item focus next
8e04817f 26601@kindex focus
46ba6afa
BW
26602Make the next window active for scrolling.
26603
26604@item focus prev
26605Make the previous window active for scrolling.
26606
26607@item focus src
26608Make the source window active for scrolling.
26609
26610@item focus asm
26611Make the assembly window active for scrolling.
26612
26613@item focus regs
26614Make the register window active for scrolling.
26615
26616@item focus cmd
26617Make the command window active for scrolling.
c906108c 26618
8e04817f
AC
26619@item refresh
26620@kindex refresh
7f9087cb 26621Refresh the screen. This is similar to typing @kbd{C-L}.
c906108c 26622
6a1b180d
SC
26623@item tui reg float
26624@kindex tui reg
26625Show the floating point registers in the register window.
26626
26627@item tui reg general
26628Show the general registers in the register window.
26629
26630@item tui reg next
26631Show the next register group. The list of register groups as well as
26632their order is target specific. The predefined register groups are the
26633following: @code{general}, @code{float}, @code{system}, @code{vector},
26634@code{all}, @code{save}, @code{restore}.
26635
26636@item tui reg system
26637Show the system registers in the register window.
26638
8e04817f
AC
26639@item update
26640@kindex update
26641Update the source window and the current execution point.
c906108c 26642
8e04817f
AC
26643@item winheight @var{name} +@var{count}
26644@itemx winheight @var{name} -@var{count}
26645@kindex winheight
26646Change the height of the window @var{name} by @var{count}
26647lines. Positive counts increase the height, while negative counts
26648decrease it.
2df3850c 26649
46ba6afa
BW
26650@item tabset @var{nchars}
26651@kindex tabset
c45da7e6 26652Set the width of tab stops to be @var{nchars} characters.
c906108c
SS
26653@end table
26654
8e04817f 26655@node TUI Configuration
79a6e687 26656@section TUI Configuration Variables
8e04817f 26657@cindex TUI configuration variables
c906108c 26658
46ba6afa 26659Several configuration variables control the appearance of TUI windows.
c906108c 26660
8e04817f
AC
26661@table @code
26662@item set tui border-kind @var{kind}
26663@kindex set tui border-kind
26664Select the border appearance for the source, assembly and register windows.
26665The possible values are the following:
26666@table @code
26667@item space
26668Use a space character to draw the border.
c906108c 26669
8e04817f 26670@item ascii
46ba6afa 26671Use @sc{ascii} characters @samp{+}, @samp{-} and @samp{|} to draw the border.
c906108c 26672
8e04817f
AC
26673@item acs
26674Use the Alternate Character Set to draw the border. The border is
26675drawn using character line graphics if the terminal supports them.
8e04817f 26676@end table
c78b4128 26677
8e04817f
AC
26678@item set tui border-mode @var{mode}
26679@kindex set tui border-mode
46ba6afa
BW
26680@itemx set tui active-border-mode @var{mode}
26681@kindex set tui active-border-mode
26682Select the display attributes for the borders of the inactive windows
26683or the active window. The @var{mode} can be one of the following:
8e04817f
AC
26684@table @code
26685@item normal
26686Use normal attributes to display the border.
c906108c 26687
8e04817f
AC
26688@item standout
26689Use standout mode.
c906108c 26690
8e04817f
AC
26691@item reverse
26692Use reverse video mode.
c906108c 26693
8e04817f
AC
26694@item half
26695Use half bright mode.
c906108c 26696
8e04817f
AC
26697@item half-standout
26698Use half bright and standout mode.
c906108c 26699
8e04817f
AC
26700@item bold
26701Use extra bright or bold mode.
c78b4128 26702
8e04817f
AC
26703@item bold-standout
26704Use extra bright or bold and standout mode.
8e04817f 26705@end table
8e04817f 26706@end table
c78b4128 26707
8e04817f
AC
26708@node Emacs
26709@chapter Using @value{GDBN} under @sc{gnu} Emacs
c78b4128 26710
8e04817f
AC
26711@cindex Emacs
26712@cindex @sc{gnu} Emacs
26713A special interface allows you to use @sc{gnu} Emacs to view (and
26714edit) the source files for the program you are debugging with
26715@value{GDBN}.
c906108c 26716
8e04817f
AC
26717To use this interface, use the command @kbd{M-x gdb} in Emacs. Give the
26718executable file you want to debug as an argument. This command starts
26719@value{GDBN} as a subprocess of Emacs, with input and output through a newly
26720created Emacs buffer.
26721@c (Do not use the @code{-tui} option to run @value{GDBN} from Emacs.)
c906108c 26722
5e252a2e 26723Running @value{GDBN} under Emacs can be just like running @value{GDBN} normally except for two
8e04817f 26724things:
c906108c 26725
8e04817f
AC
26726@itemize @bullet
26727@item
5e252a2e
NR
26728All ``terminal'' input and output goes through an Emacs buffer, called
26729the GUD buffer.
c906108c 26730
8e04817f
AC
26731This applies both to @value{GDBN} commands and their output, and to the input
26732and output done by the program you are debugging.
bf0184be 26733
8e04817f
AC
26734This is useful because it means that you can copy the text of previous
26735commands and input them again; you can even use parts of the output
26736in this way.
bf0184be 26737
8e04817f
AC
26738All the facilities of Emacs' Shell mode are available for interacting
26739with your program. In particular, you can send signals the usual
26740way---for example, @kbd{C-c C-c} for an interrupt, @kbd{C-c C-z} for a
26741stop.
bf0184be
ND
26742
26743@item
8e04817f 26744@value{GDBN} displays source code through Emacs.
bf0184be 26745
8e04817f
AC
26746Each time @value{GDBN} displays a stack frame, Emacs automatically finds the
26747source file for that frame and puts an arrow (@samp{=>}) at the
26748left margin of the current line. Emacs uses a separate buffer for
26749source display, and splits the screen to show both your @value{GDBN} session
26750and the source.
bf0184be 26751
8e04817f
AC
26752Explicit @value{GDBN} @code{list} or search commands still produce output as
26753usual, but you probably have no reason to use them from Emacs.
5e252a2e
NR
26754@end itemize
26755
26756We call this @dfn{text command mode}. Emacs 22.1, and later, also uses
26757a graphical mode, enabled by default, which provides further buffers
26758that can control the execution and describe the state of your program.
26759@xref{GDB Graphical Interface,,, Emacs, The @sc{gnu} Emacs Manual}.
c906108c 26760
64fabec2
AC
26761If you specify an absolute file name when prompted for the @kbd{M-x
26762gdb} argument, then Emacs sets your current working directory to where
26763your program resides. If you only specify the file name, then Emacs
7a9dd1b2 26764sets your current working directory to the directory associated
64fabec2
AC
26765with the previous buffer. In this case, @value{GDBN} may find your
26766program by searching your environment's @code{PATH} variable, but on
26767some operating systems it might not find the source. So, although the
26768@value{GDBN} input and output session proceeds normally, the auxiliary
26769buffer does not display the current source and line of execution.
26770
26771The initial working directory of @value{GDBN} is printed on the top
5e252a2e
NR
26772line of the GUD buffer and this serves as a default for the commands
26773that specify files for @value{GDBN} to operate on. @xref{Files,
26774,Commands to Specify Files}.
64fabec2
AC
26775
26776By default, @kbd{M-x gdb} calls the program called @file{gdb}. If you
26777need to call @value{GDBN} by a different name (for example, if you
26778keep several configurations around, with different names) you can
26779customize the Emacs variable @code{gud-gdb-command-name} to run the
26780one you want.
8e04817f 26781
5e252a2e 26782In the GUD buffer, you can use these special Emacs commands in
8e04817f 26783addition to the standard Shell mode commands:
c906108c 26784
8e04817f
AC
26785@table @kbd
26786@item C-h m
5e252a2e 26787Describe the features of Emacs' GUD Mode.
c906108c 26788
64fabec2 26789@item C-c C-s
8e04817f
AC
26790Execute to another source line, like the @value{GDBN} @code{step} command; also
26791update the display window to show the current file and location.
c906108c 26792
64fabec2 26793@item C-c C-n
8e04817f
AC
26794Execute to next source line in this function, skipping all function
26795calls, like the @value{GDBN} @code{next} command. Then update the display window
26796to show the current file and location.
c906108c 26797
64fabec2 26798@item C-c C-i
8e04817f
AC
26799Execute one instruction, like the @value{GDBN} @code{stepi} command; update
26800display window accordingly.
c906108c 26801
8e04817f
AC
26802@item C-c C-f
26803Execute until exit from the selected stack frame, like the @value{GDBN}
26804@code{finish} command.
c906108c 26805
64fabec2 26806@item C-c C-r
8e04817f
AC
26807Continue execution of your program, like the @value{GDBN} @code{continue}
26808command.
b433d00b 26809
64fabec2 26810@item C-c <
8e04817f
AC
26811Go up the number of frames indicated by the numeric argument
26812(@pxref{Arguments, , Numeric Arguments, Emacs, The @sc{gnu} Emacs Manual}),
26813like the @value{GDBN} @code{up} command.
b433d00b 26814
64fabec2 26815@item C-c >
8e04817f
AC
26816Go down the number of frames indicated by the numeric argument, like the
26817@value{GDBN} @code{down} command.
8e04817f 26818@end table
c906108c 26819
7f9087cb 26820In any source file, the Emacs command @kbd{C-x @key{SPC}} (@code{gud-break})
8e04817f 26821tells @value{GDBN} to set a breakpoint on the source line point is on.
c906108c 26822
5e252a2e
NR
26823In text command mode, if you type @kbd{M-x speedbar}, Emacs displays a
26824separate frame which shows a backtrace when the GUD buffer is current.
26825Move point to any frame in the stack and type @key{RET} to make it
26826become the current frame and display the associated source in the
26827source buffer. Alternatively, click @kbd{Mouse-2} to make the
26828selected frame become the current one. In graphical mode, the
26829speedbar displays watch expressions.
64fabec2 26830
8e04817f
AC
26831If you accidentally delete the source-display buffer, an easy way to get
26832it back is to type the command @code{f} in the @value{GDBN} buffer, to
26833request a frame display; when you run under Emacs, this recreates
26834the source buffer if necessary to show you the context of the current
26835frame.
c906108c 26836
8e04817f
AC
26837The source files displayed in Emacs are in ordinary Emacs buffers
26838which are visiting the source files in the usual way. You can edit
26839the files with these buffers if you wish; but keep in mind that @value{GDBN}
26840communicates with Emacs in terms of line numbers. If you add or
26841delete lines from the text, the line numbers that @value{GDBN} knows cease
26842to correspond properly with the code.
b383017d 26843
5e252a2e
NR
26844A more detailed description of Emacs' interaction with @value{GDBN} is
26845given in the Emacs manual (@pxref{Debuggers,,, Emacs, The @sc{gnu}
26846Emacs Manual}).
c906108c 26847
8e04817f
AC
26848@c The following dropped because Epoch is nonstandard. Reactivate
26849@c if/when v19 does something similar. ---doc@cygnus.com 19dec1990
26850@ignore
26851@kindex Emacs Epoch environment
26852@kindex Epoch
26853@kindex inspect
c906108c 26854
8e04817f
AC
26855Version 18 of @sc{gnu} Emacs has a built-in window system
26856called the @code{epoch}
26857environment. Users of this environment can use a new command,
26858@code{inspect} which performs identically to @code{print} except that
26859each value is printed in its own window.
26860@end ignore
c906108c 26861
922fbb7b
AC
26862
26863@node GDB/MI
26864@chapter The @sc{gdb/mi} Interface
26865
26866@unnumberedsec Function and Purpose
26867
26868@cindex @sc{gdb/mi}, its purpose
6b5e8c01
NR
26869@sc{gdb/mi} is a line based machine oriented text interface to
26870@value{GDBN} and is activated by specifying using the
26871@option{--interpreter} command line option (@pxref{Mode Options}). It
26872is specifically intended to support the development of systems which
26873use the debugger as just one small component of a larger system.
922fbb7b
AC
26874
26875This chapter is a specification of the @sc{gdb/mi} interface. It is written
26876in the form of a reference manual.
26877
26878Note that @sc{gdb/mi} is still under construction, so some of the
af6eff6f
NR
26879features described below are incomplete and subject to change
26880(@pxref{GDB/MI Development and Front Ends, , @sc{gdb/mi} Development and Front Ends}).
922fbb7b
AC
26881
26882@unnumberedsec Notation and Terminology
26883
26884@cindex notational conventions, for @sc{gdb/mi}
26885This chapter uses the following notation:
26886
26887@itemize @bullet
26888@item
26889@code{|} separates two alternatives.
26890
26891@item
26892@code{[ @var{something} ]} indicates that @var{something} is optional:
26893it may or may not be given.
26894
26895@item
26896@code{( @var{group} )*} means that @var{group} inside the parentheses
26897may repeat zero or more times.
26898
26899@item
26900@code{( @var{group} )+} means that @var{group} inside the parentheses
26901may repeat one or more times.
26902
26903@item
26904@code{"@var{string}"} means a literal @var{string}.
26905@end itemize
26906
26907@ignore
26908@heading Dependencies
26909@end ignore
26910
922fbb7b 26911@menu
c3b108f7 26912* GDB/MI General Design::
922fbb7b
AC
26913* GDB/MI Command Syntax::
26914* GDB/MI Compatibility with CLI::
af6eff6f 26915* GDB/MI Development and Front Ends::
922fbb7b 26916* GDB/MI Output Records::
ef21caaf 26917* GDB/MI Simple Examples::
922fbb7b 26918* GDB/MI Command Description Format::
ef21caaf 26919* GDB/MI Breakpoint Commands::
a2c02241
NR
26920* GDB/MI Program Context::
26921* GDB/MI Thread Commands::
5d77fe44 26922* GDB/MI Ada Tasking Commands::
a2c02241
NR
26923* GDB/MI Program Execution::
26924* GDB/MI Stack Manipulation::
26925* GDB/MI Variable Objects::
922fbb7b 26926* GDB/MI Data Manipulation::
a2c02241
NR
26927* GDB/MI Tracepoint Commands::
26928* GDB/MI Symbol Query::
351ff01a 26929* GDB/MI File Commands::
922fbb7b
AC
26930@ignore
26931* GDB/MI Kod Commands::
26932* GDB/MI Memory Overlay Commands::
26933* GDB/MI Signal Handling Commands::
26934@end ignore
922fbb7b 26935* GDB/MI Target Manipulation::
a6b151f1 26936* GDB/MI File Transfer Commands::
ef21caaf 26937* GDB/MI Miscellaneous Commands::
922fbb7b
AC
26938@end menu
26939
c3b108f7
VP
26940@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
26941@node GDB/MI General Design
26942@section @sc{gdb/mi} General Design
26943@cindex GDB/MI General Design
26944
26945Interaction of a @sc{GDB/MI} frontend with @value{GDBN} involves three
26946parts---commands sent to @value{GDBN}, responses to those commands
26947and notifications. Each command results in exactly one response,
26948indicating either successful completion of the command, or an error.
26949For the commands that do not resume the target, the response contains the
26950requested information. For the commands that resume the target, the
26951response only indicates whether the target was successfully resumed.
26952Notifications is the mechanism for reporting changes in the state of the
26953target, or in @value{GDBN} state, that cannot conveniently be associated with
26954a command and reported as part of that command response.
26955
26956The important examples of notifications are:
26957@itemize @bullet
26958
26959@item
26960Exec notifications. These are used to report changes in
26961target state---when a target is resumed, or stopped. It would not
26962be feasible to include this information in response of resuming
26963commands, because one resume commands can result in multiple events in
26964different threads. Also, quite some time may pass before any event
26965happens in the target, while a frontend needs to know whether the resuming
26966command itself was successfully executed.
26967
26968@item
26969Console output, and status notifications. Console output
26970notifications are used to report output of CLI commands, as well as
26971diagnostics for other commands. Status notifications are used to
26972report the progress of a long-running operation. Naturally, including
26973this information in command response would mean no output is produced
26974until the command is finished, which is undesirable.
26975
26976@item
26977General notifications. Commands may have various side effects on
26978the @value{GDBN} or target state beyond their official purpose. For example,
26979a command may change the selected thread. Although such changes can
26980be included in command response, using notification allows for more
26981orthogonal frontend design.
26982
26983@end itemize
26984
26985There's no guarantee that whenever an MI command reports an error,
26986@value{GDBN} or the target are in any specific state, and especially,
26987the state is not reverted to the state before the MI command was
26988processed. Therefore, whenever an MI command results in an error,
26989we recommend that the frontend refreshes all the information shown in
26990the user interface.
26991
508094de
NR
26992
26993@menu
26994* Context management::
26995* Asynchronous and non-stop modes::
26996* Thread groups::
26997@end menu
26998
26999@node Context management
c3b108f7
VP
27000@subsection Context management
27001
27002In most cases when @value{GDBN} accesses the target, this access is
27003done in context of a specific thread and frame (@pxref{Frames}).
27004Often, even when accessing global data, the target requires that a thread
27005be specified. The CLI interface maintains the selected thread and frame,
27006and supplies them to target on each command. This is convenient,
27007because a command line user would not want to specify that information
27008explicitly on each command, and because user interacts with
27009@value{GDBN} via a single terminal, so no confusion is possible as
27010to what thread and frame are the current ones.
27011
27012In the case of MI, the concept of selected thread and frame is less
27013useful. First, a frontend can easily remember this information
27014itself. Second, a graphical frontend can have more than one window,
27015each one used for debugging a different thread, and the frontend might
27016want to access additional threads for internal purposes. This
27017increases the risk that by relying on implicitly selected thread, the
27018frontend may be operating on a wrong one. Therefore, each MI command
27019should explicitly specify which thread and frame to operate on. To
27020make it possible, each MI command accepts the @samp{--thread} and
27021@samp{--frame} options, the value to each is @value{GDBN} identifier
27022for thread and frame to operate on.
27023
27024Usually, each top-level window in a frontend allows the user to select
27025a thread and a frame, and remembers the user selection for further
27026operations. However, in some cases @value{GDBN} may suggest that the
27027current thread be changed. For example, when stopping on a breakpoint
27028it is reasonable to switch to the thread where breakpoint is hit. For
27029another example, if the user issues the CLI @samp{thread} command via
27030the frontend, it is desirable to change the frontend's selected thread to the
27031one specified by user. @value{GDBN} communicates the suggestion to
27032change current thread using the @samp{=thread-selected} notification.
27033No such notification is available for the selected frame at the moment.
27034
27035Note that historically, MI shares the selected thread with CLI, so
27036frontends used the @code{-thread-select} to execute commands in the
27037right context. However, getting this to work right is cumbersome. The
27038simplest way is for frontend to emit @code{-thread-select} command
27039before every command. This doubles the number of commands that need
27040to be sent. The alternative approach is to suppress @code{-thread-select}
27041if the selected thread in @value{GDBN} is supposed to be identical to the
27042thread the frontend wants to operate on. However, getting this
27043optimization right can be tricky. In particular, if the frontend
27044sends several commands to @value{GDBN}, and one of the commands changes the
27045selected thread, then the behaviour of subsequent commands will
27046change. So, a frontend should either wait for response from such
27047problematic commands, or explicitly add @code{-thread-select} for
27048all subsequent commands. No frontend is known to do this exactly
27049right, so it is suggested to just always pass the @samp{--thread} and
27050@samp{--frame} options.
27051
508094de 27052@node Asynchronous and non-stop modes
c3b108f7
VP
27053@subsection Asynchronous command execution and non-stop mode
27054
27055On some targets, @value{GDBN} is capable of processing MI commands
27056even while the target is running. This is called @dfn{asynchronous
27057command execution} (@pxref{Background Execution}). The frontend may
27058specify a preferrence for asynchronous execution using the
27059@code{-gdb-set target-async 1} command, which should be emitted before
27060either running the executable or attaching to the target. After the
27061frontend has started the executable or attached to the target, it can
27062find if asynchronous execution is enabled using the
27063@code{-list-target-features} command.
27064
27065Even if @value{GDBN} can accept a command while target is running,
27066many commands that access the target do not work when the target is
27067running. Therefore, asynchronous command execution is most useful
27068when combined with non-stop mode (@pxref{Non-Stop Mode}). Then,
27069it is possible to examine the state of one thread, while other threads
27070are running.
27071
27072When a given thread is running, MI commands that try to access the
27073target in the context of that thread may not work, or may work only on
27074some targets. In particular, commands that try to operate on thread's
27075stack will not work, on any target. Commands that read memory, or
27076modify breakpoints, may work or not work, depending on the target. Note
27077that even commands that operate on global state, such as @code{print},
27078@code{set}, and breakpoint commands, still access the target in the
27079context of a specific thread, so frontend should try to find a
27080stopped thread and perform the operation on that thread (using the
27081@samp{--thread} option).
27082
27083Which commands will work in the context of a running thread is
27084highly target dependent. However, the two commands
27085@code{-exec-interrupt}, to stop a thread, and @code{-thread-info},
27086to find the state of a thread, will always work.
27087
508094de 27088@node Thread groups
c3b108f7
VP
27089@subsection Thread groups
27090@value{GDBN} may be used to debug several processes at the same time.
27091On some platfroms, @value{GDBN} may support debugging of several
27092hardware systems, each one having several cores with several different
27093processes running on each core. This section describes the MI
27094mechanism to support such debugging scenarios.
27095
27096The key observation is that regardless of the structure of the
27097target, MI can have a global list of threads, because most commands that
27098accept the @samp{--thread} option do not need to know what process that
27099thread belongs to. Therefore, it is not necessary to introduce
27100neither additional @samp{--process} option, nor an notion of the
27101current process in the MI interface. The only strictly new feature
27102that is required is the ability to find how the threads are grouped
27103into processes.
27104
27105To allow the user to discover such grouping, and to support arbitrary
27106hierarchy of machines/cores/processes, MI introduces the concept of a
27107@dfn{thread group}. Thread group is a collection of threads and other
27108thread groups. A thread group always has a string identifier, a type,
27109and may have additional attributes specific to the type. A new
27110command, @code{-list-thread-groups}, returns the list of top-level
27111thread groups, which correspond to processes that @value{GDBN} is
27112debugging at the moment. By passing an identifier of a thread group
27113to the @code{-list-thread-groups} command, it is possible to obtain
27114the members of specific thread group.
27115
27116To allow the user to easily discover processes, and other objects, he
27117wishes to debug, a concept of @dfn{available thread group} is
27118introduced. Available thread group is an thread group that
27119@value{GDBN} is not debugging, but that can be attached to, using the
27120@code{-target-attach} command. The list of available top-level thread
27121groups can be obtained using @samp{-list-thread-groups --available}.
27122In general, the content of a thread group may be only retrieved only
27123after attaching to that thread group.
27124
a79b8f6e
VP
27125Thread groups are related to inferiors (@pxref{Inferiors and
27126Programs}). Each inferior corresponds to a thread group of a special
27127type @samp{process}, and some additional operations are permitted on
27128such thread groups.
27129
922fbb7b
AC
27130@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27131@node GDB/MI Command Syntax
27132@section @sc{gdb/mi} Command Syntax
27133
27134@menu
27135* GDB/MI Input Syntax::
27136* GDB/MI Output Syntax::
922fbb7b
AC
27137@end menu
27138
27139@node GDB/MI Input Syntax
27140@subsection @sc{gdb/mi} Input Syntax
27141
27142@cindex input syntax for @sc{gdb/mi}
27143@cindex @sc{gdb/mi}, input syntax
27144@table @code
27145@item @var{command} @expansion{}
27146@code{@var{cli-command} | @var{mi-command}}
27147
27148@item @var{cli-command} @expansion{}
27149@code{[ @var{token} ] @var{cli-command} @var{nl}}, where
27150@var{cli-command} is any existing @value{GDBN} CLI command.
27151
27152@item @var{mi-command} @expansion{}
27153@code{[ @var{token} ] "-" @var{operation} ( " " @var{option} )*
27154@code{[} " --" @code{]} ( " " @var{parameter} )* @var{nl}}
27155
27156@item @var{token} @expansion{}
27157"any sequence of digits"
27158
27159@item @var{option} @expansion{}
27160@code{"-" @var{parameter} [ " " @var{parameter} ]}
27161
27162@item @var{parameter} @expansion{}
27163@code{@var{non-blank-sequence} | @var{c-string}}
27164
27165@item @var{operation} @expansion{}
27166@emph{any of the operations described in this chapter}
27167
27168@item @var{non-blank-sequence} @expansion{}
27169@emph{anything, provided it doesn't contain special characters such as
27170"-", @var{nl}, """ and of course " "}
27171
27172@item @var{c-string} @expansion{}
27173@code{""" @var{seven-bit-iso-c-string-content} """}
27174
27175@item @var{nl} @expansion{}
27176@code{CR | CR-LF}
27177@end table
27178
27179@noindent
27180Notes:
27181
27182@itemize @bullet
27183@item
27184The CLI commands are still handled by the @sc{mi} interpreter; their
27185output is described below.
27186
27187@item
27188The @code{@var{token}}, when present, is passed back when the command
27189finishes.
27190
27191@item
27192Some @sc{mi} commands accept optional arguments as part of the parameter
27193list. Each option is identified by a leading @samp{-} (dash) and may be
27194followed by an optional argument parameter. Options occur first in the
27195parameter list and can be delimited from normal parameters using
27196@samp{--} (this is useful when some parameters begin with a dash).
27197@end itemize
27198
27199Pragmatics:
27200
27201@itemize @bullet
27202@item
27203We want easy access to the existing CLI syntax (for debugging).
27204
27205@item
27206We want it to be easy to spot a @sc{mi} operation.
27207@end itemize
27208
27209@node GDB/MI Output Syntax
27210@subsection @sc{gdb/mi} Output Syntax
27211
27212@cindex output syntax of @sc{gdb/mi}
27213@cindex @sc{gdb/mi}, output syntax
27214The output from @sc{gdb/mi} consists of zero or more out-of-band records
27215followed, optionally, by a single result record. This result record
27216is for the most recent command. The sequence of output records is
594fe323 27217terminated by @samp{(gdb)}.
922fbb7b
AC
27218
27219If an input command was prefixed with a @code{@var{token}} then the
27220corresponding output for that command will also be prefixed by that same
27221@var{token}.
27222
27223@table @code
27224@item @var{output} @expansion{}
594fe323 27225@code{( @var{out-of-band-record} )* [ @var{result-record} ] "(gdb)" @var{nl}}
922fbb7b
AC
27226
27227@item @var{result-record} @expansion{}
27228@code{ [ @var{token} ] "^" @var{result-class} ( "," @var{result} )* @var{nl}}
27229
27230@item @var{out-of-band-record} @expansion{}
27231@code{@var{async-record} | @var{stream-record}}
27232
27233@item @var{async-record} @expansion{}
27234@code{@var{exec-async-output} | @var{status-async-output} | @var{notify-async-output}}
27235
27236@item @var{exec-async-output} @expansion{}
27237@code{[ @var{token} ] "*" @var{async-output}}
27238
27239@item @var{status-async-output} @expansion{}
27240@code{[ @var{token} ] "+" @var{async-output}}
27241
27242@item @var{notify-async-output} @expansion{}
27243@code{[ @var{token} ] "=" @var{async-output}}
27244
27245@item @var{async-output} @expansion{}
27246@code{@var{async-class} ( "," @var{result} )* @var{nl}}
27247
27248@item @var{result-class} @expansion{}
27249@code{"done" | "running" | "connected" | "error" | "exit"}
27250
27251@item @var{async-class} @expansion{}
27252@code{"stopped" | @var{others}} (where @var{others} will be added
27253depending on the needs---this is still in development).
27254
27255@item @var{result} @expansion{}
27256@code{ @var{variable} "=" @var{value}}
27257
27258@item @var{variable} @expansion{}
27259@code{ @var{string} }
27260
27261@item @var{value} @expansion{}
27262@code{ @var{const} | @var{tuple} | @var{list} }
27263
27264@item @var{const} @expansion{}
27265@code{@var{c-string}}
27266
27267@item @var{tuple} @expansion{}
27268@code{ "@{@}" | "@{" @var{result} ( "," @var{result} )* "@}" }
27269
27270@item @var{list} @expansion{}
27271@code{ "[]" | "[" @var{value} ( "," @var{value} )* "]" | "["
27272@var{result} ( "," @var{result} )* "]" }
27273
27274@item @var{stream-record} @expansion{}
27275@code{@var{console-stream-output} | @var{target-stream-output} | @var{log-stream-output}}
27276
27277@item @var{console-stream-output} @expansion{}
27278@code{"~" @var{c-string}}
27279
27280@item @var{target-stream-output} @expansion{}
27281@code{"@@" @var{c-string}}
27282
27283@item @var{log-stream-output} @expansion{}
27284@code{"&" @var{c-string}}
27285
27286@item @var{nl} @expansion{}
27287@code{CR | CR-LF}
27288
27289@item @var{token} @expansion{}
27290@emph{any sequence of digits}.
27291@end table
27292
27293@noindent
27294Notes:
27295
27296@itemize @bullet
27297@item
27298All output sequences end in a single line containing a period.
27299
27300@item
721c02de
VP
27301The @code{@var{token}} is from the corresponding request. Note that
27302for all async output, while the token is allowed by the grammar and
27303may be output by future versions of @value{GDBN} for select async
27304output messages, it is generally omitted. Frontends should treat
27305all async output as reporting general changes in the state of the
27306target and there should be no need to associate async output to any
27307prior command.
922fbb7b
AC
27308
27309@item
27310@cindex status output in @sc{gdb/mi}
27311@var{status-async-output} contains on-going status information about the
27312progress of a slow operation. It can be discarded. All status output is
27313prefixed by @samp{+}.
27314
27315@item
27316@cindex async output in @sc{gdb/mi}
27317@var{exec-async-output} contains asynchronous state change on the target
27318(stopped, started, disappeared). All async output is prefixed by
27319@samp{*}.
27320
27321@item
27322@cindex notify output in @sc{gdb/mi}
27323@var{notify-async-output} contains supplementary information that the
27324client should handle (e.g., a new breakpoint information). All notify
27325output is prefixed by @samp{=}.
27326
27327@item
27328@cindex console output in @sc{gdb/mi}
27329@var{console-stream-output} is output that should be displayed as is in the
27330console. It is the textual response to a CLI command. All the console
27331output is prefixed by @samp{~}.
27332
27333@item
27334@cindex target output in @sc{gdb/mi}
27335@var{target-stream-output} is the output produced by the target program.
27336All the target output is prefixed by @samp{@@}.
27337
27338@item
27339@cindex log output in @sc{gdb/mi}
27340@var{log-stream-output} is output text coming from @value{GDBN}'s internals, for
27341instance messages that should be displayed as part of an error log. All
27342the log output is prefixed by @samp{&}.
27343
27344@item
27345@cindex list output in @sc{gdb/mi}
27346New @sc{gdb/mi} commands should only output @var{lists} containing
27347@var{values}.
27348
27349
27350@end itemize
27351
27352@xref{GDB/MI Stream Records, , @sc{gdb/mi} Stream Records}, for more
27353details about the various output records.
27354
922fbb7b
AC
27355@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27356@node GDB/MI Compatibility with CLI
27357@section @sc{gdb/mi} Compatibility with CLI
27358
27359@cindex compatibility, @sc{gdb/mi} and CLI
27360@cindex @sc{gdb/mi}, compatibility with CLI
922fbb7b 27361
a2c02241
NR
27362For the developers convenience CLI commands can be entered directly,
27363but there may be some unexpected behaviour. For example, commands
27364that query the user will behave as if the user replied yes, breakpoint
27365command lists are not executed and some CLI commands, such as
27366@code{if}, @code{when} and @code{define}, prompt for further input with
27367@samp{>}, which is not valid MI output.
ef21caaf
NR
27368
27369This feature may be removed at some stage in the future and it is
a2c02241
NR
27370recommended that front ends use the @code{-interpreter-exec} command
27371(@pxref{-interpreter-exec}).
922fbb7b 27372
af6eff6f
NR
27373@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27374@node GDB/MI Development and Front Ends
27375@section @sc{gdb/mi} Development and Front Ends
27376@cindex @sc{gdb/mi} development
27377
27378The application which takes the MI output and presents the state of the
27379program being debugged to the user is called a @dfn{front end}.
27380
27381Although @sc{gdb/mi} is still incomplete, it is currently being used
27382by a variety of front ends to @value{GDBN}. This makes it difficult
27383to introduce new functionality without breaking existing usage. This
27384section tries to minimize the problems by describing how the protocol
27385might change.
27386
27387Some changes in MI need not break a carefully designed front end, and
27388for these the MI version will remain unchanged. The following is a
27389list of changes that may occur within one level, so front ends should
27390parse MI output in a way that can handle them:
27391
27392@itemize @bullet
27393@item
27394New MI commands may be added.
27395
27396@item
27397New fields may be added to the output of any MI command.
27398
36ece8b3
NR
27399@item
27400The range of values for fields with specified values, e.g.,
9f708cb2 27401@code{in_scope} (@pxref{-var-update}) may be extended.
36ece8b3 27402
af6eff6f
NR
27403@c The format of field's content e.g type prefix, may change so parse it
27404@c at your own risk. Yes, in general?
27405
27406@c The order of fields may change? Shouldn't really matter but it might
27407@c resolve inconsistencies.
27408@end itemize
27409
27410If the changes are likely to break front ends, the MI version level
27411will be increased by one. This will allow the front end to parse the
27412output according to the MI version. Apart from mi0, new versions of
27413@value{GDBN} will not support old versions of MI and it will be the
27414responsibility of the front end to work with the new one.
27415
27416@c Starting with mi3, add a new command -mi-version that prints the MI
27417@c version?
27418
27419The best way to avoid unexpected changes in MI that might break your front
27420end is to make your project known to @value{GDBN} developers and
7a9a6b69 27421follow development on @email{gdb@@sourceware.org} and
fa0f268d 27422@email{gdb-patches@@sourceware.org}.
af6eff6f
NR
27423@cindex mailing lists
27424
922fbb7b
AC
27425@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27426@node GDB/MI Output Records
27427@section @sc{gdb/mi} Output Records
27428
27429@menu
27430* GDB/MI Result Records::
27431* GDB/MI Stream Records::
82f68b1c 27432* GDB/MI Async Records::
c3b108f7 27433* GDB/MI Frame Information::
dc146f7c 27434* GDB/MI Thread Information::
4368ebeb 27435* GDB/MI Ada Exception Information::
922fbb7b
AC
27436@end menu
27437
27438@node GDB/MI Result Records
27439@subsection @sc{gdb/mi} Result Records
27440
27441@cindex result records in @sc{gdb/mi}
27442@cindex @sc{gdb/mi}, result records
27443In addition to a number of out-of-band notifications, the response to a
27444@sc{gdb/mi} command includes one of the following result indications:
27445
27446@table @code
27447@findex ^done
27448@item "^done" [ "," @var{results} ]
27449The synchronous operation was successful, @code{@var{results}} are the return
27450values.
27451
27452@item "^running"
27453@findex ^running
8e9c5e02
VP
27454This result record is equivalent to @samp{^done}. Historically, it
27455was output instead of @samp{^done} if the command has resumed the
27456target. This behaviour is maintained for backward compatibility, but
27457all frontends should treat @samp{^done} and @samp{^running}
27458identically and rely on the @samp{*running} output record to determine
27459which threads are resumed.
922fbb7b 27460
ef21caaf
NR
27461@item "^connected"
27462@findex ^connected
3f94c067 27463@value{GDBN} has connected to a remote target.
ef21caaf 27464
922fbb7b
AC
27465@item "^error" "," @var{c-string}
27466@findex ^error
27467The operation failed. The @code{@var{c-string}} contains the corresponding
27468error message.
ef21caaf
NR
27469
27470@item "^exit"
27471@findex ^exit
3f94c067 27472@value{GDBN} has terminated.
ef21caaf 27473
922fbb7b
AC
27474@end table
27475
27476@node GDB/MI Stream Records
27477@subsection @sc{gdb/mi} Stream Records
27478
27479@cindex @sc{gdb/mi}, stream records
27480@cindex stream records in @sc{gdb/mi}
27481@value{GDBN} internally maintains a number of output streams: the console, the
27482target, and the log. The output intended for each of these streams is
27483funneled through the @sc{gdb/mi} interface using @dfn{stream records}.
27484
27485Each stream record begins with a unique @dfn{prefix character} which
27486identifies its stream (@pxref{GDB/MI Output Syntax, , @sc{gdb/mi} Output
27487Syntax}). In addition to the prefix, each stream record contains a
27488@code{@var{string-output}}. This is either raw text (with an implicit new
27489line) or a quoted C string (which does not contain an implicit newline).
27490
27491@table @code
27492@item "~" @var{string-output}
27493The console output stream contains text that should be displayed in the
27494CLI console window. It contains the textual responses to CLI commands.
27495
27496@item "@@" @var{string-output}
27497The target output stream contains any textual output from the running
ef21caaf
NR
27498target. This is only present when GDB's event loop is truly
27499asynchronous, which is currently only the case for remote targets.
922fbb7b
AC
27500
27501@item "&" @var{string-output}
27502The log stream contains debugging messages being produced by @value{GDBN}'s
27503internals.
27504@end table
27505
82f68b1c
VP
27506@node GDB/MI Async Records
27507@subsection @sc{gdb/mi} Async Records
922fbb7b 27508
82f68b1c
VP
27509@cindex async records in @sc{gdb/mi}
27510@cindex @sc{gdb/mi}, async records
27511@dfn{Async} records are used to notify the @sc{gdb/mi} client of
922fbb7b 27512additional changes that have occurred. Those changes can either be a
82f68b1c 27513consequence of @sc{gdb/mi} commands (e.g., a breakpoint modified) or a result of
922fbb7b
AC
27514target activity (e.g., target stopped).
27515
8eb41542 27516The following is the list of possible async records:
922fbb7b
AC
27517
27518@table @code
034dad6f 27519
e1ac3328
VP
27520@item *running,thread-id="@var{thread}"
27521The target is now running. The @var{thread} field tells which
27522specific thread is now running, and can be @samp{all} if all threads
27523are running. The frontend should assume that no interaction with a
27524running thread is possible after this notification is produced.
27525The frontend should not assume that this notification is output
27526only once for any command. @value{GDBN} may emit this notification
27527several times, either for different threads, because it cannot resume
27528all threads together, or even for a single thread, if the thread must
27529be stepped though some code before letting it run freely.
27530
dc146f7c 27531@item *stopped,reason="@var{reason}",thread-id="@var{id}",stopped-threads="@var{stopped}",core="@var{core}"
82f68b1c
VP
27532The target has stopped. The @var{reason} field can have one of the
27533following values:
034dad6f
BR
27534
27535@table @code
27536@item breakpoint-hit
27537A breakpoint was reached.
27538@item watchpoint-trigger
27539A watchpoint was triggered.
27540@item read-watchpoint-trigger
27541A read watchpoint was triggered.
27542@item access-watchpoint-trigger
27543An access watchpoint was triggered.
27544@item function-finished
27545An -exec-finish or similar CLI command was accomplished.
27546@item location-reached
27547An -exec-until or similar CLI command was accomplished.
27548@item watchpoint-scope
27549A watchpoint has gone out of scope.
27550@item end-stepping-range
27551An -exec-next, -exec-next-instruction, -exec-step, -exec-step-instruction or
27552similar CLI command was accomplished.
27553@item exited-signalled
27554The inferior exited because of a signal.
27555@item exited
27556The inferior exited.
27557@item exited-normally
27558The inferior exited normally.
27559@item signal-received
27560A signal was received by the inferior.
36dfb11c
TT
27561@item solib-event
27562The inferior has stopped due to a library being loaded or unloaded.
edcc5120
TT
27563This can happen when @code{stop-on-solib-events} (@pxref{Files}) is
27564set or when a @code{catch load} or @code{catch unload} catchpoint is
27565in use (@pxref{Set Catchpoints}).
36dfb11c
TT
27566@item fork
27567The inferior has forked. This is reported when @code{catch fork}
27568(@pxref{Set Catchpoints}) has been used.
27569@item vfork
27570The inferior has vforked. This is reported in when @code{catch vfork}
27571(@pxref{Set Catchpoints}) has been used.
27572@item syscall-entry
27573The inferior entered a system call. This is reported when @code{catch
27574syscall} (@pxref{Set Catchpoints}) has been used.
27575@item syscall-entry
27576The inferior returned from a system call. This is reported when
27577@code{catch syscall} (@pxref{Set Catchpoints}) has been used.
27578@item exec
27579The inferior called @code{exec}. This is reported when @code{catch exec}
27580(@pxref{Set Catchpoints}) has been used.
922fbb7b
AC
27581@end table
27582
c3b108f7
VP
27583The @var{id} field identifies the thread that directly caused the stop
27584-- for example by hitting a breakpoint. Depending on whether all-stop
27585mode is in effect (@pxref{All-Stop Mode}), @value{GDBN} may either
27586stop all threads, or only the thread that directly triggered the stop.
27587If all threads are stopped, the @var{stopped} field will have the
27588value of @code{"all"}. Otherwise, the value of the @var{stopped}
27589field will be a list of thread identifiers. Presently, this list will
27590always include a single thread, but frontend should be prepared to see
dc146f7c
VP
27591several threads in the list. The @var{core} field reports the
27592processor core on which the stop event has happened. This field may be absent
27593if such information is not available.
c3b108f7 27594
a79b8f6e
VP
27595@item =thread-group-added,id="@var{id}"
27596@itemx =thread-group-removed,id="@var{id}"
27597A thread group was either added or removed. The @var{id} field
27598contains the @value{GDBN} identifier of the thread group. When a thread
27599group is added, it generally might not be associated with a running
27600process. When a thread group is removed, its id becomes invalid and
27601cannot be used in any way.
27602
27603@item =thread-group-started,id="@var{id}",pid="@var{pid}"
27604A thread group became associated with a running program,
27605either because the program was just started or the thread group
27606was attached to a program. The @var{id} field contains the
27607@value{GDBN} identifier of the thread group. The @var{pid} field
27608contains process identifier, specific to the operating system.
27609
8cf64490 27610@item =thread-group-exited,id="@var{id}"[,exit-code="@var{code}"]
a79b8f6e
VP
27611A thread group is no longer associated with a running program,
27612either because the program has exited, or because it was detached
c3b108f7 27613from. The @var{id} field contains the @value{GDBN} identifier of the
8cf64490
TT
27614thread group. @var{code} is the exit code of the inferior; it exists
27615only when the inferior exited with some code.
c3b108f7
VP
27616
27617@item =thread-created,id="@var{id}",group-id="@var{gid}"
27618@itemx =thread-exited,id="@var{id}",group-id="@var{gid}"
82f68b1c 27619A thread either was created, or has exited. The @var{id} field
c3b108f7
VP
27620contains the @value{GDBN} identifier of the thread. The @var{gid}
27621field identifies the thread group this thread belongs to.
66bb093b
VP
27622
27623@item =thread-selected,id="@var{id}"
27624Informs that the selected thread was changed as result of the last
27625command. This notification is not emitted as result of @code{-thread-select}
27626command but is emitted whenever an MI command that is not documented
27627to change the selected thread actually changes it. In particular,
27628invoking, directly or indirectly (via user-defined command), the CLI
27629@code{thread} command, will generate this notification.
27630
27631We suggest that in response to this notification, front ends
27632highlight the selected thread and cause subsequent commands to apply to
27633that thread.
27634
c86cf029
VP
27635@item =library-loaded,...
27636Reports that a new library file was loaded by the program. This
27637notification has 4 fields---@var{id}, @var{target-name},
134eb42c 27638@var{host-name}, and @var{symbols-loaded}. The @var{id} field is an
c86cf029
VP
27639opaque identifier of the library. For remote debugging case,
27640@var{target-name} and @var{host-name} fields give the name of the
134eb42c
VP
27641library file on the target, and on the host respectively. For native
27642debugging, both those fields have the same value. The
f1cbe1d3
TT
27643@var{symbols-loaded} field is emitted only for backward compatibility
27644and should not be relied on to convey any useful information. The
27645@var{thread-group} field, if present, specifies the id of the thread
27646group in whose context the library was loaded. If the field is
27647absent, it means the library was loaded in the context of all present
27648thread groups.
c86cf029
VP
27649
27650@item =library-unloaded,...
134eb42c 27651Reports that a library was unloaded by the program. This notification
c86cf029 27652has 3 fields---@var{id}, @var{target-name} and @var{host-name} with
a79b8f6e
VP
27653the same meaning as for the @code{=library-loaded} notification.
27654The @var{thread-group} field, if present, specifies the id of the
27655thread group in whose context the library was unloaded. If the field is
27656absent, it means the library was unloaded in the context of all present
27657thread groups.
c86cf029 27658
8d3788bd
VP
27659@item =breakpoint-created,bkpt=@{...@}
27660@itemx =breakpoint-modified,bkpt=@{...@}
d9f08f52 27661@itemx =breakpoint-deleted,id=@var{number}
8d3788bd
VP
27662Reports that a breakpoint was created, modified, or deleted,
27663respectively. Only user-visible breakpoints are reported to the MI
27664user.
27665
27666The @var{bkpt} argument is of the same form as returned by the various
d9f08f52
YQ
27667breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The
27668@var{number} is the ordinal number of the breakpoint.
8d3788bd
VP
27669
27670Note that if a breakpoint is emitted in the result record of a
27671command, then it will not also be emitted in an async record.
27672
5b9afe8a
YQ
27673@item =cmd-param-changed,param=@var{param},value=@var{value}
27674Reports that a parameter of the command @code{set @var{param}} is
27675changed to @var{value}. In the multi-word @code{set} command,
27676the @var{param} is the whole parameter list to @code{set} command.
27677For example, In command @code{set check type on}, @var{param}
27678is @code{check type} and @var{value} is @code{on}.
82f68b1c
VP
27679@end table
27680
c3b108f7
VP
27681@node GDB/MI Frame Information
27682@subsection @sc{gdb/mi} Frame Information
27683
27684Response from many MI commands includes an information about stack
27685frame. This information is a tuple that may have the following
27686fields:
27687
27688@table @code
27689@item level
27690The level of the stack frame. The innermost frame has the level of
27691zero. This field is always present.
27692
27693@item func
27694The name of the function corresponding to the frame. This field may
27695be absent if @value{GDBN} is unable to determine the function name.
27696
27697@item addr
27698The code address for the frame. This field is always present.
27699
27700@item file
27701The name of the source files that correspond to the frame's code
27702address. This field may be absent.
27703
27704@item line
27705The source line corresponding to the frames' code address. This field
27706may be absent.
27707
27708@item from
27709The name of the binary file (either executable or shared library) the
27710corresponds to the frame's code address. This field may be absent.
27711
27712@end table
82f68b1c 27713
dc146f7c
VP
27714@node GDB/MI Thread Information
27715@subsection @sc{gdb/mi} Thread Information
27716
27717Whenever @value{GDBN} has to report an information about a thread, it
27718uses a tuple with the following fields:
27719
27720@table @code
27721@item id
27722The numeric id assigned to the thread by @value{GDBN}. This field is
27723always present.
27724
27725@item target-id
27726Target-specific string identifying the thread. This field is always present.
27727
27728@item details
27729Additional information about the thread provided by the target.
27730It is supposed to be human-readable and not interpreted by the
27731frontend. This field is optional.
27732
27733@item state
27734Either @samp{stopped} or @samp{running}, depending on whether the
27735thread is presently running. This field is always present.
27736
27737@item core
27738The value of this field is an integer number of the processor core the
27739thread was last seen on. This field is optional.
27740@end table
27741
956a9fb9
JB
27742@node GDB/MI Ada Exception Information
27743@subsection @sc{gdb/mi} Ada Exception Information
27744
27745Whenever a @code{*stopped} record is emitted because the program
27746stopped after hitting an exception catchpoint (@pxref{Set Catchpoints}),
27747@value{GDBN} provides the name of the exception that was raised via
27748the @code{exception-name} field.
922fbb7b 27749
ef21caaf
NR
27750@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27751@node GDB/MI Simple Examples
27752@section Simple Examples of @sc{gdb/mi} Interaction
27753@cindex @sc{gdb/mi}, simple examples
27754
27755This subsection presents several simple examples of interaction using
27756the @sc{gdb/mi} interface. In these examples, @samp{->} means that the
27757following line is passed to @sc{gdb/mi} as input, while @samp{<-} means
27758the output received from @sc{gdb/mi}.
27759
d3e8051b 27760Note the line breaks shown in the examples are here only for
ef21caaf
NR
27761readability, they don't appear in the real output.
27762
79a6e687 27763@subheading Setting a Breakpoint
ef21caaf
NR
27764
27765Setting a breakpoint generates synchronous output which contains detailed
27766information of the breakpoint.
27767
27768@smallexample
27769-> -break-insert main
27770<- ^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27771 enabled="y",addr="0x08048564",func="main",file="myprog.c",
27772 fullname="/home/nickrob/myprog.c",line="68",times="0"@}
27773<- (gdb)
27774@end smallexample
27775
27776@subheading Program Execution
27777
27778Program execution generates asynchronous records and MI gives the
27779reason that execution stopped.
27780
27781@smallexample
27782-> -exec-run
27783<- ^running
27784<- (gdb)
a47ec5fe 27785<- *stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
ef21caaf
NR
27786 frame=@{addr="0x08048564",func="main",
27787 args=[@{name="argc",value="1"@},@{name="argv",value="0xbfc4d4d4"@}],
27788 file="myprog.c",fullname="/home/nickrob/myprog.c",line="68"@}
27789<- (gdb)
27790-> -exec-continue
27791<- ^running
27792<- (gdb)
27793<- *stopped,reason="exited-normally"
27794<- (gdb)
27795@end smallexample
27796
3f94c067 27797@subheading Quitting @value{GDBN}
ef21caaf 27798
3f94c067 27799Quitting @value{GDBN} just prints the result class @samp{^exit}.
ef21caaf
NR
27800
27801@smallexample
27802-> (gdb)
27803<- -gdb-exit
27804<- ^exit
27805@end smallexample
27806
a6b29f87
VP
27807Please note that @samp{^exit} is printed immediately, but it might
27808take some time for @value{GDBN} to actually exit. During that time, @value{GDBN}
27809performs necessary cleanups, including killing programs being debugged
27810or disconnecting from debug hardware, so the frontend should wait till
27811@value{GDBN} exits and should only forcibly kill @value{GDBN} if it
27812fails to exit in reasonable time.
27813
a2c02241 27814@subheading A Bad Command
ef21caaf
NR
27815
27816Here's what happens if you pass a non-existent command:
27817
27818@smallexample
27819-> -rubbish
27820<- ^error,msg="Undefined MI command: rubbish"
594fe323 27821<- (gdb)
ef21caaf
NR
27822@end smallexample
27823
27824
922fbb7b
AC
27825@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27826@node GDB/MI Command Description Format
27827@section @sc{gdb/mi} Command Description Format
27828
27829The remaining sections describe blocks of commands. Each block of
27830commands is laid out in a fashion similar to this section.
27831
922fbb7b
AC
27832@subheading Motivation
27833
27834The motivation for this collection of commands.
27835
27836@subheading Introduction
27837
27838A brief introduction to this collection of commands as a whole.
27839
27840@subheading Commands
27841
27842For each command in the block, the following is described:
27843
27844@subsubheading Synopsis
27845
27846@smallexample
27847 -command @var{args}@dots{}
27848@end smallexample
27849
922fbb7b
AC
27850@subsubheading Result
27851
265eeb58 27852@subsubheading @value{GDBN} Command
922fbb7b 27853
265eeb58 27854The corresponding @value{GDBN} CLI command(s), if any.
922fbb7b
AC
27855
27856@subsubheading Example
27857
ef21caaf
NR
27858Example(s) formatted for readability. Some of the described commands have
27859not been implemented yet and these are labeled N.A.@: (not available).
27860
27861
922fbb7b 27862@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ef21caaf
NR
27863@node GDB/MI Breakpoint Commands
27864@section @sc{gdb/mi} Breakpoint Commands
922fbb7b
AC
27865
27866@cindex breakpoint commands for @sc{gdb/mi}
27867@cindex @sc{gdb/mi}, breakpoint commands
27868This section documents @sc{gdb/mi} commands for manipulating
27869breakpoints.
27870
27871@subheading The @code{-break-after} Command
27872@findex -break-after
27873
27874@subsubheading Synopsis
27875
27876@smallexample
27877 -break-after @var{number} @var{count}
27878@end smallexample
27879
27880The breakpoint number @var{number} is not in effect until it has been
27881hit @var{count} times. To see how this is reflected in the output of
27882the @samp{-break-list} command, see the description of the
27883@samp{-break-list} command below.
27884
27885@subsubheading @value{GDBN} Command
27886
27887The corresponding @value{GDBN} command is @samp{ignore}.
27888
27889@subsubheading Example
27890
27891@smallexample
594fe323 27892(gdb)
922fbb7b 27893-break-insert main
a47ec5fe
AR
27894^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27895enabled="y",addr="0x000100d0",func="main",file="hello.c",
948d5102 27896fullname="/home/foo/hello.c",line="5",times="0"@}
594fe323 27897(gdb)
922fbb7b
AC
27898-break-after 1 3
27899~
27900^done
594fe323 27901(gdb)
922fbb7b
AC
27902-break-list
27903^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27904hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27905@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27906@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27907@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27908@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27909@{width="40",alignment="2",col_name="what",colhdr="What"@}],
27910body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
27911addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27912line="5",times="0",ignore="3"@}]@}
594fe323 27913(gdb)
922fbb7b
AC
27914@end smallexample
27915
27916@ignore
27917@subheading The @code{-break-catch} Command
27918@findex -break-catch
48cb2d85 27919@end ignore
922fbb7b
AC
27920
27921@subheading The @code{-break-commands} Command
27922@findex -break-commands
922fbb7b 27923
48cb2d85
VP
27924@subsubheading Synopsis
27925
27926@smallexample
27927 -break-commands @var{number} [ @var{command1} ... @var{commandN} ]
27928@end smallexample
27929
27930Specifies the CLI commands that should be executed when breakpoint
27931@var{number} is hit. The parameters @var{command1} to @var{commandN}
27932are the commands. If no command is specified, any previously-set
27933commands are cleared. @xref{Break Commands}. Typical use of this
27934functionality is tracing a program, that is, printing of values of
27935some variables whenever breakpoint is hit and then continuing.
27936
27937@subsubheading @value{GDBN} Command
27938
27939The corresponding @value{GDBN} command is @samp{commands}.
27940
27941@subsubheading Example
27942
27943@smallexample
27944(gdb)
27945-break-insert main
27946^done,bkpt=@{number="1",type="breakpoint",disp="keep",
27947enabled="y",addr="0x000100d0",func="main",file="hello.c",
27948fullname="/home/foo/hello.c",line="5",times="0"@}
27949(gdb)
27950-break-commands 1 "print v" "continue"
27951^done
27952(gdb)
27953@end smallexample
922fbb7b
AC
27954
27955@subheading The @code{-break-condition} Command
27956@findex -break-condition
27957
27958@subsubheading Synopsis
27959
27960@smallexample
27961 -break-condition @var{number} @var{expr}
27962@end smallexample
27963
27964Breakpoint @var{number} will stop the program only if the condition in
27965@var{expr} is true. The condition becomes part of the
27966@samp{-break-list} output (see the description of the @samp{-break-list}
27967command below).
27968
27969@subsubheading @value{GDBN} Command
27970
27971The corresponding @value{GDBN} command is @samp{condition}.
27972
27973@subsubheading Example
27974
27975@smallexample
594fe323 27976(gdb)
922fbb7b
AC
27977-break-condition 1 1
27978^done
594fe323 27979(gdb)
922fbb7b
AC
27980-break-list
27981^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
27982hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
27983@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
27984@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
27985@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
27986@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
27987@{width="40",alignment="2",col_name="what",colhdr="What"@}],
27988body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
27989addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
27990line="5",cond="1",times="0",ignore="3"@}]@}
594fe323 27991(gdb)
922fbb7b
AC
27992@end smallexample
27993
27994@subheading The @code{-break-delete} Command
27995@findex -break-delete
27996
27997@subsubheading Synopsis
27998
27999@smallexample
28000 -break-delete ( @var{breakpoint} )+
28001@end smallexample
28002
28003Delete the breakpoint(s) whose number(s) are specified in the argument
28004list. This is obviously reflected in the breakpoint list.
28005
79a6e687 28006@subsubheading @value{GDBN} Command
922fbb7b
AC
28007
28008The corresponding @value{GDBN} command is @samp{delete}.
28009
28010@subsubheading Example
28011
28012@smallexample
594fe323 28013(gdb)
922fbb7b
AC
28014-break-delete 1
28015^done
594fe323 28016(gdb)
922fbb7b
AC
28017-break-list
28018^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
28019hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28020@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28021@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28022@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28023@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28024@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28025body=[]@}
594fe323 28026(gdb)
922fbb7b
AC
28027@end smallexample
28028
28029@subheading The @code{-break-disable} Command
28030@findex -break-disable
28031
28032@subsubheading Synopsis
28033
28034@smallexample
28035 -break-disable ( @var{breakpoint} )+
28036@end smallexample
28037
28038Disable the named @var{breakpoint}(s). The field @samp{enabled} in the
28039break list is now set to @samp{n} for the named @var{breakpoint}(s).
28040
28041@subsubheading @value{GDBN} Command
28042
28043The corresponding @value{GDBN} command is @samp{disable}.
28044
28045@subsubheading Example
28046
28047@smallexample
594fe323 28048(gdb)
922fbb7b
AC
28049-break-disable 2
28050^done
594fe323 28051(gdb)
922fbb7b
AC
28052-break-list
28053^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28054hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28055@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28056@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28057@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28058@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28059@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28060body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="n",
948d5102
NR
28061addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28062line="5",times="0"@}]@}
594fe323 28063(gdb)
922fbb7b
AC
28064@end smallexample
28065
28066@subheading The @code{-break-enable} Command
28067@findex -break-enable
28068
28069@subsubheading Synopsis
28070
28071@smallexample
28072 -break-enable ( @var{breakpoint} )+
28073@end smallexample
28074
28075Enable (previously disabled) @var{breakpoint}(s).
28076
28077@subsubheading @value{GDBN} Command
28078
28079The corresponding @value{GDBN} command is @samp{enable}.
28080
28081@subsubheading Example
28082
28083@smallexample
594fe323 28084(gdb)
922fbb7b
AC
28085-break-enable 2
28086^done
594fe323 28087(gdb)
922fbb7b
AC
28088-break-list
28089^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28090hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28091@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28092@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28093@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28094@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28095@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28096body=[bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28097addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",
28098line="5",times="0"@}]@}
594fe323 28099(gdb)
922fbb7b
AC
28100@end smallexample
28101
28102@subheading The @code{-break-info} Command
28103@findex -break-info
28104
28105@subsubheading Synopsis
28106
28107@smallexample
28108 -break-info @var{breakpoint}
28109@end smallexample
28110
28111@c REDUNDANT???
28112Get information about a single breakpoint.
28113
79a6e687 28114@subsubheading @value{GDBN} Command
922fbb7b
AC
28115
28116The corresponding @value{GDBN} command is @samp{info break @var{breakpoint}}.
28117
28118@subsubheading Example
28119N.A.
28120
28121@subheading The @code{-break-insert} Command
28122@findex -break-insert
28123
28124@subsubheading Synopsis
28125
28126@smallexample
18148017 28127 -break-insert [ -t ] [ -h ] [ -f ] [ -d ] [ -a ]
922fbb7b 28128 [ -c @var{condition} ] [ -i @var{ignore-count} ]
472a2379 28129 [ -p @var{thread-id} ] [ @var{location} ]
922fbb7b
AC
28130@end smallexample
28131
28132@noindent
afe8ab22 28133If specified, @var{location}, can be one of:
922fbb7b
AC
28134
28135@itemize @bullet
28136@item function
28137@c @item +offset
28138@c @item -offset
28139@c @item linenum
28140@item filename:linenum
28141@item filename:function
28142@item *address
28143@end itemize
28144
28145The possible optional parameters of this command are:
28146
28147@table @samp
28148@item -t
948d5102 28149Insert a temporary breakpoint.
922fbb7b
AC
28150@item -h
28151Insert a hardware breakpoint.
afe8ab22
VP
28152@item -f
28153If @var{location} cannot be parsed (for example if it
28154refers to unknown files or functions), create a pending
28155breakpoint. Without this flag, @value{GDBN} will report
28156an error, and won't create a breakpoint, if @var{location}
28157cannot be parsed.
41447f92
VP
28158@item -d
28159Create a disabled breakpoint.
18148017
VP
28160@item -a
28161Create a tracepoint. @xref{Tracepoints}. When this parameter
28162is used together with @samp{-h}, a fast tracepoint is created.
472a2379
KS
28163@item -c @var{condition}
28164Make the breakpoint conditional on @var{condition}.
28165@item -i @var{ignore-count}
28166Initialize the @var{ignore-count}.
28167@item -p @var{thread-id}
28168Restrict the breakpoint to the specified @var{thread-id}.
922fbb7b
AC
28169@end table
28170
28171@subsubheading Result
28172
28173The result is in the form:
28174
28175@smallexample
948d5102
NR
28176^done,bkpt=@{number="@var{number}",type="@var{type}",disp="del"|"keep",
28177enabled="y"|"n",addr="@var{hex}",func="@var{funcname}",file="@var{filename}",
ef21caaf
NR
28178fullname="@var{full_filename}",line="@var{lineno}",[thread="@var{threadno},]
28179times="@var{times}"@}
922fbb7b
AC
28180@end smallexample
28181
28182@noindent
948d5102
NR
28183where @var{number} is the @value{GDBN} number for this breakpoint,
28184@var{funcname} is the name of the function where the breakpoint was
28185inserted, @var{filename} is the name of the source file which contains
28186this function, @var{lineno} is the source line number within that file
28187and @var{times} the number of times that the breakpoint has been hit
28188(always 0 for -break-insert but may be greater for -break-info or -break-list
28189which use the same output).
922fbb7b
AC
28190
28191Note: this format is open to change.
28192@c An out-of-band breakpoint instead of part of the result?
28193
28194@subsubheading @value{GDBN} Command
28195
28196The corresponding @value{GDBN} commands are @samp{break}, @samp{tbreak},
496ee73e 28197@samp{hbreak}, and @samp{thbreak}. @c and @samp{rbreak}.
922fbb7b
AC
28198
28199@subsubheading Example
28200
28201@smallexample
594fe323 28202(gdb)
922fbb7b 28203-break-insert main
948d5102
NR
28204^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",
28205fullname="/home/foo/recursive2.c,line="4",times="0"@}
594fe323 28206(gdb)
922fbb7b 28207-break-insert -t foo
948d5102
NR
28208^done,bkpt=@{number="2",addr="0x00010774",file="recursive2.c",
28209fullname="/home/foo/recursive2.c,line="11",times="0"@}
594fe323 28210(gdb)
922fbb7b
AC
28211-break-list
28212^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28213hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28214@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28215@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28216@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28217@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28218@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28219body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28220addr="0x0001072c", func="main",file="recursive2.c",
28221fullname="/home/foo/recursive2.c,"line="4",times="0"@},
922fbb7b 28222bkpt=@{number="2",type="breakpoint",disp="del",enabled="y",
948d5102
NR
28223addr="0x00010774",func="foo",file="recursive2.c",
28224fullname="/home/foo/recursive2.c",line="11",times="0"@}]@}
594fe323 28225(gdb)
496ee73e
KS
28226@c -break-insert -r foo.*
28227@c ~int foo(int, int);
28228@c ^done,bkpt=@{number="3",addr="0x00010774",file="recursive2.c,
28229@c "fullname="/home/foo/recursive2.c",line="11",times="0"@}
28230@c (gdb)
922fbb7b
AC
28231@end smallexample
28232
28233@subheading The @code{-break-list} Command
28234@findex -break-list
28235
28236@subsubheading Synopsis
28237
28238@smallexample
28239 -break-list
28240@end smallexample
28241
28242Displays the list of inserted breakpoints, showing the following fields:
28243
28244@table @samp
28245@item Number
28246number of the breakpoint
28247@item Type
28248type of the breakpoint: @samp{breakpoint} or @samp{watchpoint}
28249@item Disposition
28250should the breakpoint be deleted or disabled when it is hit: @samp{keep}
28251or @samp{nokeep}
28252@item Enabled
28253is the breakpoint enabled or no: @samp{y} or @samp{n}
28254@item Address
28255memory location at which the breakpoint is set
28256@item What
28257logical location of the breakpoint, expressed by function name, file
28258name, line number
28259@item Times
28260number of times the breakpoint has been hit
28261@end table
28262
28263If there are no breakpoints or watchpoints, the @code{BreakpointTable}
28264@code{body} field is an empty list.
28265
28266@subsubheading @value{GDBN} Command
28267
28268The corresponding @value{GDBN} command is @samp{info break}.
28269
28270@subsubheading Example
28271
28272@smallexample
594fe323 28273(gdb)
922fbb7b
AC
28274-break-list
28275^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28276hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28277@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28278@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28279@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28280@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28281@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28282body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28283addr="0x000100d0",func="main",file="hello.c",line="5",times="0"@},
28284bkpt=@{number="2",type="breakpoint",disp="keep",enabled="y",
948d5102
NR
28285addr="0x00010114",func="foo",file="hello.c",fullname="/home/foo/hello.c",
28286line="13",times="0"@}]@}
594fe323 28287(gdb)
922fbb7b
AC
28288@end smallexample
28289
28290Here's an example of the result when there are no breakpoints:
28291
28292@smallexample
594fe323 28293(gdb)
922fbb7b
AC
28294-break-list
28295^done,BreakpointTable=@{nr_rows="0",nr_cols="6",
28296hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28297@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28298@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28299@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28300@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28301@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28302body=[]@}
594fe323 28303(gdb)
922fbb7b
AC
28304@end smallexample
28305
18148017
VP
28306@subheading The @code{-break-passcount} Command
28307@findex -break-passcount
28308
28309@subsubheading Synopsis
28310
28311@smallexample
28312 -break-passcount @var{tracepoint-number} @var{passcount}
28313@end smallexample
28314
28315Set the passcount for tracepoint @var{tracepoint-number} to
28316@var{passcount}. If the breakpoint referred to by @var{tracepoint-number}
28317is not a tracepoint, error is emitted. This corresponds to CLI
28318command @samp{passcount}.
28319
922fbb7b
AC
28320@subheading The @code{-break-watch} Command
28321@findex -break-watch
28322
28323@subsubheading Synopsis
28324
28325@smallexample
28326 -break-watch [ -a | -r ]
28327@end smallexample
28328
28329Create a watchpoint. With the @samp{-a} option it will create an
d3e8051b 28330@dfn{access} watchpoint, i.e., a watchpoint that triggers either on a
922fbb7b 28331read from or on a write to the memory location. With the @samp{-r}
d3e8051b 28332option, the watchpoint created is a @dfn{read} watchpoint, i.e., it will
922fbb7b
AC
28333trigger only when the memory location is accessed for reading. Without
28334either of the options, the watchpoint created is a regular watchpoint,
d3e8051b 28335i.e., it will trigger when the memory location is accessed for writing.
79a6e687 28336@xref{Set Watchpoints, , Setting Watchpoints}.
922fbb7b
AC
28337
28338Note that @samp{-break-list} will report a single list of watchpoints and
28339breakpoints inserted.
28340
28341@subsubheading @value{GDBN} Command
28342
28343The corresponding @value{GDBN} commands are @samp{watch}, @samp{awatch}, and
28344@samp{rwatch}.
28345
28346@subsubheading Example
28347
28348Setting a watchpoint on a variable in the @code{main} function:
28349
28350@smallexample
594fe323 28351(gdb)
922fbb7b
AC
28352-break-watch x
28353^done,wpt=@{number="2",exp="x"@}
594fe323 28354(gdb)
922fbb7b
AC
28355-exec-continue
28356^running
0869d01b
NR
28357(gdb)
28358*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="x"@},
922fbb7b 28359value=@{old="-268439212",new="55"@},
76ff342d 28360frame=@{func="main",args=[],file="recursive2.c",
948d5102 28361fullname="/home/foo/bar/recursive2.c",line="5"@}
594fe323 28362(gdb)
922fbb7b
AC
28363@end smallexample
28364
28365Setting a watchpoint on a variable local to a function. @value{GDBN} will stop
28366the program execution twice: first for the variable changing value, then
28367for the watchpoint going out of scope.
28368
28369@smallexample
594fe323 28370(gdb)
922fbb7b
AC
28371-break-watch C
28372^done,wpt=@{number="5",exp="C"@}
594fe323 28373(gdb)
922fbb7b
AC
28374-exec-continue
28375^running
0869d01b
NR
28376(gdb)
28377*stopped,reason="watchpoint-trigger",
922fbb7b
AC
28378wpt=@{number="5",exp="C"@},value=@{old="-276895068",new="3"@},
28379frame=@{func="callee4",args=[],
76ff342d
DJ
28380file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28381fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 28382(gdb)
922fbb7b
AC
28383-exec-continue
28384^running
0869d01b
NR
28385(gdb)
28386*stopped,reason="watchpoint-scope",wpnum="5",
922fbb7b
AC
28387frame=@{func="callee3",args=[@{name="strarg",
28388value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
28389file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28390fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 28391(gdb)
922fbb7b
AC
28392@end smallexample
28393
28394Listing breakpoints and watchpoints, at different points in the program
28395execution. Note that once the watchpoint goes out of scope, it is
28396deleted.
28397
28398@smallexample
594fe323 28399(gdb)
922fbb7b
AC
28400-break-watch C
28401^done,wpt=@{number="2",exp="C"@}
594fe323 28402(gdb)
922fbb7b
AC
28403-break-list
28404^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28405hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28406@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28407@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28408@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28409@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28410@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28411body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28412addr="0x00010734",func="callee4",
948d5102
NR
28413file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28414fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c"line="8",times="1"@},
922fbb7b
AC
28415bkpt=@{number="2",type="watchpoint",disp="keep",
28416enabled="y",addr="",what="C",times="0"@}]@}
594fe323 28417(gdb)
922fbb7b
AC
28418-exec-continue
28419^running
0869d01b
NR
28420(gdb)
28421*stopped,reason="watchpoint-trigger",wpt=@{number="2",exp="C"@},
922fbb7b
AC
28422value=@{old="-276895068",new="3"@},
28423frame=@{func="callee4",args=[],
76ff342d
DJ
28424file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28425fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="13"@}
594fe323 28426(gdb)
922fbb7b
AC
28427-break-list
28428^done,BreakpointTable=@{nr_rows="2",nr_cols="6",
28429hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28430@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28431@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28432@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28433@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28434@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28435body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28436addr="0x00010734",func="callee4",
948d5102
NR
28437file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28438fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",times="1"@},
922fbb7b
AC
28439bkpt=@{number="2",type="watchpoint",disp="keep",
28440enabled="y",addr="",what="C",times="-5"@}]@}
594fe323 28441(gdb)
922fbb7b
AC
28442-exec-continue
28443^running
28444^done,reason="watchpoint-scope",wpnum="2",
28445frame=@{func="callee3",args=[@{name="strarg",
28446value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
28447file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28448fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 28449(gdb)
922fbb7b
AC
28450-break-list
28451^done,BreakpointTable=@{nr_rows="1",nr_cols="6",
28452hdr=[@{width="3",alignment="-1",col_name="number",colhdr="Num"@},
28453@{width="14",alignment="-1",col_name="type",colhdr="Type"@},
28454@{width="4",alignment="-1",col_name="disp",colhdr="Disp"@},
28455@{width="3",alignment="-1",col_name="enabled",colhdr="Enb"@},
28456@{width="10",alignment="-1",col_name="addr",colhdr="Address"@},
28457@{width="40",alignment="2",col_name="what",colhdr="What"@}],
28458body=[bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
28459addr="0x00010734",func="callee4",
948d5102
NR
28460file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
28461fullname="/home/foo/devo/gdb/testsuite/gdb.mi/basics.c",line="8",
28462times="1"@}]@}
594fe323 28463(gdb)
922fbb7b
AC
28464@end smallexample
28465
28466@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
28467@node GDB/MI Program Context
28468@section @sc{gdb/mi} Program Context
922fbb7b 28469
a2c02241
NR
28470@subheading The @code{-exec-arguments} Command
28471@findex -exec-arguments
922fbb7b 28472
922fbb7b
AC
28473
28474@subsubheading Synopsis
28475
28476@smallexample
a2c02241 28477 -exec-arguments @var{args}
922fbb7b
AC
28478@end smallexample
28479
a2c02241
NR
28480Set the inferior program arguments, to be used in the next
28481@samp{-exec-run}.
922fbb7b 28482
a2c02241 28483@subsubheading @value{GDBN} Command
922fbb7b 28484
a2c02241 28485The corresponding @value{GDBN} command is @samp{set args}.
922fbb7b 28486
a2c02241 28487@subsubheading Example
922fbb7b 28488
fbc5282e
MK
28489@smallexample
28490(gdb)
28491-exec-arguments -v word
28492^done
28493(gdb)
28494@end smallexample
922fbb7b 28495
a2c02241 28496
9901a55b 28497@ignore
a2c02241
NR
28498@subheading The @code{-exec-show-arguments} Command
28499@findex -exec-show-arguments
28500
28501@subsubheading Synopsis
28502
28503@smallexample
28504 -exec-show-arguments
28505@end smallexample
28506
28507Print the arguments of the program.
922fbb7b
AC
28508
28509@subsubheading @value{GDBN} Command
28510
a2c02241 28511The corresponding @value{GDBN} command is @samp{show args}.
922fbb7b
AC
28512
28513@subsubheading Example
a2c02241 28514N.A.
9901a55b 28515@end ignore
922fbb7b 28516
922fbb7b 28517
a2c02241
NR
28518@subheading The @code{-environment-cd} Command
28519@findex -environment-cd
922fbb7b 28520
a2c02241 28521@subsubheading Synopsis
922fbb7b
AC
28522
28523@smallexample
a2c02241 28524 -environment-cd @var{pathdir}
922fbb7b
AC
28525@end smallexample
28526
a2c02241 28527Set @value{GDBN}'s working directory.
922fbb7b 28528
a2c02241 28529@subsubheading @value{GDBN} Command
922fbb7b 28530
a2c02241
NR
28531The corresponding @value{GDBN} command is @samp{cd}.
28532
28533@subsubheading Example
922fbb7b
AC
28534
28535@smallexample
594fe323 28536(gdb)
a2c02241
NR
28537-environment-cd /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
28538^done
594fe323 28539(gdb)
922fbb7b
AC
28540@end smallexample
28541
28542
a2c02241
NR
28543@subheading The @code{-environment-directory} Command
28544@findex -environment-directory
922fbb7b
AC
28545
28546@subsubheading Synopsis
28547
28548@smallexample
a2c02241 28549 -environment-directory [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
28550@end smallexample
28551
a2c02241
NR
28552Add directories @var{pathdir} to beginning of search path for source files.
28553If the @samp{-r} option is used, the search path is reset to the default
28554search path. If directories @var{pathdir} are supplied in addition to the
28555@samp{-r} option, the search path is first reset and then addition
28556occurs as normal.
28557Multiple directories may be specified, separated by blanks. Specifying
28558multiple directories in a single command
28559results in the directories added to the beginning of the
28560search path in the same order they were presented in the command.
28561If blanks are needed as
28562part of a directory name, double-quotes should be used around
28563the name. In the command output, the path will show up separated
d3e8051b 28564by the system directory-separator character. The directory-separator
a2c02241
NR
28565character must not be used
28566in any directory name.
28567If no directories are specified, the current search path is displayed.
922fbb7b
AC
28568
28569@subsubheading @value{GDBN} Command
28570
a2c02241 28571The corresponding @value{GDBN} command is @samp{dir}.
922fbb7b
AC
28572
28573@subsubheading Example
28574
922fbb7b 28575@smallexample
594fe323 28576(gdb)
a2c02241
NR
28577-environment-directory /kwikemart/marge/ezannoni/flathead-dev/devo/gdb
28578^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 28579(gdb)
a2c02241
NR
28580-environment-directory ""
28581^done,source-path="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb:$cdir:$cwd"
594fe323 28582(gdb)
a2c02241
NR
28583-environment-directory -r /home/jjohnstn/src/gdb /usr/src
28584^done,source-path="/home/jjohnstn/src/gdb:/usr/src:$cdir:$cwd"
594fe323 28585(gdb)
a2c02241
NR
28586-environment-directory -r
28587^done,source-path="$cdir:$cwd"
594fe323 28588(gdb)
922fbb7b
AC
28589@end smallexample
28590
28591
a2c02241
NR
28592@subheading The @code{-environment-path} Command
28593@findex -environment-path
922fbb7b
AC
28594
28595@subsubheading Synopsis
28596
28597@smallexample
a2c02241 28598 -environment-path [ -r ] [ @var{pathdir} ]+
922fbb7b
AC
28599@end smallexample
28600
a2c02241
NR
28601Add directories @var{pathdir} to beginning of search path for object files.
28602If the @samp{-r} option is used, the search path is reset to the original
28603search path that existed at gdb start-up. If directories @var{pathdir} are
28604supplied in addition to the
28605@samp{-r} option, the search path is first reset and then addition
28606occurs as normal.
28607Multiple directories may be specified, separated by blanks. Specifying
28608multiple directories in a single command
28609results in the directories added to the beginning of the
28610search path in the same order they were presented in the command.
28611If blanks are needed as
28612part of a directory name, double-quotes should be used around
28613the name. In the command output, the path will show up separated
d3e8051b 28614by the system directory-separator character. The directory-separator
a2c02241
NR
28615character must not be used
28616in any directory name.
28617If no directories are specified, the current path is displayed.
28618
922fbb7b
AC
28619
28620@subsubheading @value{GDBN} Command
28621
a2c02241 28622The corresponding @value{GDBN} command is @samp{path}.
922fbb7b
AC
28623
28624@subsubheading Example
28625
922fbb7b 28626@smallexample
594fe323 28627(gdb)
a2c02241
NR
28628-environment-path
28629^done,path="/usr/bin"
594fe323 28630(gdb)
a2c02241
NR
28631-environment-path /kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb /bin
28632^done,path="/kwikemart/marge/ezannoni/flathead-dev/ppc-eabi/gdb:/bin:/usr/bin"
594fe323 28633(gdb)
a2c02241
NR
28634-environment-path -r /usr/local/bin
28635^done,path="/usr/local/bin:/usr/bin"
594fe323 28636(gdb)
922fbb7b
AC
28637@end smallexample
28638
28639
a2c02241
NR
28640@subheading The @code{-environment-pwd} Command
28641@findex -environment-pwd
922fbb7b
AC
28642
28643@subsubheading Synopsis
28644
28645@smallexample
a2c02241 28646 -environment-pwd
922fbb7b
AC
28647@end smallexample
28648
a2c02241 28649Show the current working directory.
922fbb7b 28650
79a6e687 28651@subsubheading @value{GDBN} Command
922fbb7b 28652
a2c02241 28653The corresponding @value{GDBN} command is @samp{pwd}.
922fbb7b
AC
28654
28655@subsubheading Example
28656
922fbb7b 28657@smallexample
594fe323 28658(gdb)
a2c02241
NR
28659-environment-pwd
28660^done,cwd="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb"
594fe323 28661(gdb)
922fbb7b
AC
28662@end smallexample
28663
a2c02241
NR
28664@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28665@node GDB/MI Thread Commands
28666@section @sc{gdb/mi} Thread Commands
28667
28668
28669@subheading The @code{-thread-info} Command
28670@findex -thread-info
922fbb7b
AC
28671
28672@subsubheading Synopsis
28673
28674@smallexample
8e8901c5 28675 -thread-info [ @var{thread-id} ]
922fbb7b
AC
28676@end smallexample
28677
8e8901c5
VP
28678Reports information about either a specific thread, if
28679the @var{thread-id} parameter is present, or about all
28680threads. When printing information about all threads,
28681also reports the current thread.
28682
79a6e687 28683@subsubheading @value{GDBN} Command
922fbb7b 28684
8e8901c5
VP
28685The @samp{info thread} command prints the same information
28686about all threads.
922fbb7b 28687
4694da01 28688@subsubheading Result
922fbb7b 28689
4694da01
TT
28690The result is a list of threads. The following attributes are
28691defined for a given thread:
28692
28693@table @samp
28694@item current
28695This field exists only for the current thread. It has the value @samp{*}.
28696
28697@item id
28698The identifier that @value{GDBN} uses to refer to the thread.
28699
28700@item target-id
28701The identifier that the target uses to refer to the thread.
28702
28703@item details
28704Extra information about the thread, in a target-specific format. This
28705field is optional.
28706
28707@item name
28708The name of the thread. If the user specified a name using the
28709@code{thread name} command, then this name is given. Otherwise, if
28710@value{GDBN} can extract the thread name from the target, then that
28711name is given. If @value{GDBN} cannot find the thread name, then this
28712field is omitted.
28713
28714@item frame
28715The stack frame currently executing in the thread.
922fbb7b 28716
4694da01
TT
28717@item state
28718The thread's state. The @samp{state} field may have the following
28719values:
c3b108f7
VP
28720
28721@table @code
28722@item stopped
28723The thread is stopped. Frame information is available for stopped
28724threads.
28725
28726@item running
28727The thread is running. There's no frame information for running
28728threads.
28729
28730@end table
28731
4694da01
TT
28732@item core
28733If @value{GDBN} can find the CPU core on which this thread is running,
28734then this field is the core identifier. This field is optional.
28735
28736@end table
28737
28738@subsubheading Example
28739
28740@smallexample
28741-thread-info
28742^done,threads=[
28743@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
28744 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",
28745 args=[]@},state="running"@},
28746@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
28747 frame=@{level="0",addr="0x0804891f",func="foo",
28748 args=[@{name="i",value="10"@}],
28749 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},
28750 state="running"@}],
28751current-thread-id="1"
28752(gdb)
28753@end smallexample
28754
a2c02241
NR
28755@subheading The @code{-thread-list-ids} Command
28756@findex -thread-list-ids
922fbb7b 28757
a2c02241 28758@subsubheading Synopsis
922fbb7b 28759
a2c02241
NR
28760@smallexample
28761 -thread-list-ids
28762@end smallexample
922fbb7b 28763
a2c02241
NR
28764Produces a list of the currently known @value{GDBN} thread ids. At the
28765end of the list it also prints the total number of such threads.
922fbb7b 28766
c3b108f7
VP
28767This command is retained for historical reasons, the
28768@code{-thread-info} command should be used instead.
28769
922fbb7b
AC
28770@subsubheading @value{GDBN} Command
28771
a2c02241 28772Part of @samp{info threads} supplies the same information.
922fbb7b
AC
28773
28774@subsubheading Example
28775
922fbb7b 28776@smallexample
594fe323 28777(gdb)
a2c02241
NR
28778-thread-list-ids
28779^done,thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
592375cd 28780current-thread-id="1",number-of-threads="3"
594fe323 28781(gdb)
922fbb7b
AC
28782@end smallexample
28783
a2c02241
NR
28784
28785@subheading The @code{-thread-select} Command
28786@findex -thread-select
922fbb7b
AC
28787
28788@subsubheading Synopsis
28789
28790@smallexample
a2c02241 28791 -thread-select @var{threadnum}
922fbb7b
AC
28792@end smallexample
28793
a2c02241
NR
28794Make @var{threadnum} the current thread. It prints the number of the new
28795current thread, and the topmost frame for that thread.
922fbb7b 28796
c3b108f7
VP
28797This command is deprecated in favor of explicitly using the
28798@samp{--thread} option to each command.
28799
922fbb7b
AC
28800@subsubheading @value{GDBN} Command
28801
a2c02241 28802The corresponding @value{GDBN} command is @samp{thread}.
922fbb7b
AC
28803
28804@subsubheading Example
922fbb7b
AC
28805
28806@smallexample
594fe323 28807(gdb)
a2c02241
NR
28808-exec-next
28809^running
594fe323 28810(gdb)
a2c02241
NR
28811*stopped,reason="end-stepping-range",thread-id="2",line="187",
28812file="../../../devo/gdb/testsuite/gdb.threads/linux-dp.c"
594fe323 28813(gdb)
a2c02241
NR
28814-thread-list-ids
28815^done,
28816thread-ids=@{thread-id="3",thread-id="2",thread-id="1"@},
28817number-of-threads="3"
594fe323 28818(gdb)
a2c02241
NR
28819-thread-select 3
28820^done,new-thread-id="3",
28821frame=@{level="0",func="vprintf",
28822args=[@{name="format",value="0x8048e9c \"%*s%c %d %c\\n\""@},
28823@{name="arg",value="0x2"@}],file="vprintf.c",line="31"@}
594fe323 28824(gdb)
922fbb7b
AC
28825@end smallexample
28826
5d77fe44
JB
28827@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28828@node GDB/MI Ada Tasking Commands
28829@section @sc{gdb/mi} Ada Tasking Commands
28830
28831@subheading The @code{-ada-task-info} Command
28832@findex -ada-task-info
28833
28834@subsubheading Synopsis
28835
28836@smallexample
28837 -ada-task-info [ @var{task-id} ]
28838@end smallexample
28839
28840Reports information about either a specific Ada task, if the
28841@var{task-id} parameter is present, or about all Ada tasks.
28842
28843@subsubheading @value{GDBN} Command
28844
28845The @samp{info tasks} command prints the same information
28846about all Ada tasks (@pxref{Ada Tasks}).
28847
28848@subsubheading Result
28849
28850The result is a table of Ada tasks. The following columns are
28851defined for each Ada task:
28852
28853@table @samp
28854@item current
28855This field exists only for the current thread. It has the value @samp{*}.
28856
28857@item id
28858The identifier that @value{GDBN} uses to refer to the Ada task.
28859
28860@item task-id
28861The identifier that the target uses to refer to the Ada task.
28862
28863@item thread-id
28864The identifier of the thread corresponding to the Ada task.
28865
28866This field should always exist, as Ada tasks are always implemented
28867on top of a thread. But if @value{GDBN} cannot find this corresponding
28868thread for any reason, the field is omitted.
28869
28870@item parent-id
28871This field exists only when the task was created by another task.
28872In this case, it provides the ID of the parent task.
28873
28874@item priority
28875The base priority of the task.
28876
28877@item state
28878The current state of the task. For a detailed description of the
28879possible states, see @ref{Ada Tasks}.
28880
28881@item name
28882The name of the task.
28883
28884@end table
28885
28886@subsubheading Example
28887
28888@smallexample
28889-ada-task-info
28890^done,tasks=@{nr_rows="3",nr_cols="8",
28891hdr=[@{width="1",alignment="-1",col_name="current",colhdr=""@},
28892@{width="3",alignment="1",col_name="id",colhdr="ID"@},
28893@{width="9",alignment="1",col_name="task-id",colhdr="TID"@},
28894@{width="4",alignment="1",col_name="thread-id",colhdr=""@},
28895@{width="4",alignment="1",col_name="parent-id",colhdr="P-ID"@},
28896@{width="3",alignment="1",col_name="priority",colhdr="Pri"@},
28897@{width="22",alignment="-1",col_name="state",colhdr="State"@},
28898@{width="1",alignment="2",col_name="name",colhdr="Name"@}],
28899body=[@{current="*",id="1",task-id=" 644010",thread-id="1",priority="48",
28900state="Child Termination Wait",name="main_task"@}]@}
28901(gdb)
28902@end smallexample
28903
a2c02241
NR
28904@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28905@node GDB/MI Program Execution
28906@section @sc{gdb/mi} Program Execution
922fbb7b 28907
ef21caaf 28908These are the asynchronous commands which generate the out-of-band
3f94c067 28909record @samp{*stopped}. Currently @value{GDBN} only really executes
ef21caaf
NR
28910asynchronously with remote targets and this interaction is mimicked in
28911other cases.
922fbb7b 28912
922fbb7b
AC
28913@subheading The @code{-exec-continue} Command
28914@findex -exec-continue
28915
28916@subsubheading Synopsis
28917
28918@smallexample
540aa8e7 28919 -exec-continue [--reverse] [--all|--thread-group N]
922fbb7b
AC
28920@end smallexample
28921
540aa8e7
MS
28922Resumes the execution of the inferior program, which will continue
28923to execute until it reaches a debugger stop event. If the
28924@samp{--reverse} option is specified, execution resumes in reverse until
28925it reaches a stop event. Stop events may include
28926@itemize @bullet
28927@item
28928breakpoints or watchpoints
28929@item
28930signals or exceptions
28931@item
28932the end of the process (or its beginning under @samp{--reverse})
28933@item
28934the end or beginning of a replay log if one is being used.
28935@end itemize
28936In all-stop mode (@pxref{All-Stop
28937Mode}), may resume only one thread, or all threads, depending on the
28938value of the @samp{scheduler-locking} variable. If @samp{--all} is
a79b8f6e 28939specified, all threads (in all inferiors) will be resumed. The @samp{--all} option is
540aa8e7
MS
28940ignored in all-stop mode. If the @samp{--thread-group} options is
28941specified, then all threads in that thread group are resumed.
922fbb7b
AC
28942
28943@subsubheading @value{GDBN} Command
28944
28945The corresponding @value{GDBN} corresponding is @samp{continue}.
28946
28947@subsubheading Example
28948
28949@smallexample
28950-exec-continue
28951^running
594fe323 28952(gdb)
922fbb7b 28953@@Hello world
a47ec5fe
AR
28954*stopped,reason="breakpoint-hit",disp="keep",bkptno="2",frame=@{
28955func="foo",args=[],file="hello.c",fullname="/home/foo/bar/hello.c",
28956line="13"@}
594fe323 28957(gdb)
922fbb7b
AC
28958@end smallexample
28959
28960
28961@subheading The @code{-exec-finish} Command
28962@findex -exec-finish
28963
28964@subsubheading Synopsis
28965
28966@smallexample
540aa8e7 28967 -exec-finish [--reverse]
922fbb7b
AC
28968@end smallexample
28969
ef21caaf
NR
28970Resumes the execution of the inferior program until the current
28971function is exited. Displays the results returned by the function.
540aa8e7
MS
28972If the @samp{--reverse} option is specified, resumes the reverse
28973execution of the inferior program until the point where current
28974function was called.
922fbb7b
AC
28975
28976@subsubheading @value{GDBN} Command
28977
28978The corresponding @value{GDBN} command is @samp{finish}.
28979
28980@subsubheading Example
28981
28982Function returning @code{void}.
28983
28984@smallexample
28985-exec-finish
28986^running
594fe323 28987(gdb)
922fbb7b
AC
28988@@hello from foo
28989*stopped,reason="function-finished",frame=@{func="main",args=[],
948d5102 28990file="hello.c",fullname="/home/foo/bar/hello.c",line="7"@}
594fe323 28991(gdb)
922fbb7b
AC
28992@end smallexample
28993
28994Function returning other than @code{void}. The name of the internal
28995@value{GDBN} variable storing the result is printed, together with the
28996value itself.
28997
28998@smallexample
28999-exec-finish
29000^running
594fe323 29001(gdb)
922fbb7b
AC
29002*stopped,reason="function-finished",frame=@{addr="0x000107b0",func="foo",
29003args=[@{name="a",value="1"],@{name="b",value="9"@}@},
948d5102 29004file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
922fbb7b 29005gdb-result-var="$1",return-value="0"
594fe323 29006(gdb)
922fbb7b
AC
29007@end smallexample
29008
29009
29010@subheading The @code{-exec-interrupt} Command
29011@findex -exec-interrupt
29012
29013@subsubheading Synopsis
29014
29015@smallexample
c3b108f7 29016 -exec-interrupt [--all|--thread-group N]
922fbb7b
AC
29017@end smallexample
29018
ef21caaf
NR
29019Interrupts the background execution of the target. Note how the token
29020associated with the stop message is the one for the execution command
29021that has been interrupted. The token for the interrupt itself only
29022appears in the @samp{^done} output. If the user is trying to
922fbb7b
AC
29023interrupt a non-running program, an error message will be printed.
29024
c3b108f7
VP
29025Note that when asynchronous execution is enabled, this command is
29026asynchronous just like other execution commands. That is, first the
29027@samp{^done} response will be printed, and the target stop will be
29028reported after that using the @samp{*stopped} notification.
29029
29030In non-stop mode, only the context thread is interrupted by default.
a79b8f6e
VP
29031All threads (in all inferiors) will be interrupted if the
29032@samp{--all} option is specified. If the @samp{--thread-group}
29033option is specified, all threads in that group will be interrupted.
c3b108f7 29034
922fbb7b
AC
29035@subsubheading @value{GDBN} Command
29036
29037The corresponding @value{GDBN} command is @samp{interrupt}.
29038
29039@subsubheading Example
29040
29041@smallexample
594fe323 29042(gdb)
922fbb7b
AC
29043111-exec-continue
29044111^running
29045
594fe323 29046(gdb)
922fbb7b
AC
29047222-exec-interrupt
29048222^done
594fe323 29049(gdb)
922fbb7b 29050111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
76ff342d 29051frame=@{addr="0x00010140",func="foo",args=[],file="try.c",
948d5102 29052fullname="/home/foo/bar/try.c",line="13"@}
594fe323 29053(gdb)
922fbb7b 29054
594fe323 29055(gdb)
922fbb7b
AC
29056-exec-interrupt
29057^error,msg="mi_cmd_exec_interrupt: Inferior not executing."
594fe323 29058(gdb)
922fbb7b
AC
29059@end smallexample
29060
83eba9b7
VP
29061@subheading The @code{-exec-jump} Command
29062@findex -exec-jump
29063
29064@subsubheading Synopsis
29065
29066@smallexample
29067 -exec-jump @var{location}
29068@end smallexample
29069
29070Resumes execution of the inferior program at the location specified by
29071parameter. @xref{Specify Location}, for a description of the
29072different forms of @var{location}.
29073
29074@subsubheading @value{GDBN} Command
29075
29076The corresponding @value{GDBN} command is @samp{jump}.
29077
29078@subsubheading Example
29079
29080@smallexample
29081-exec-jump foo.c:10
29082*running,thread-id="all"
29083^running
29084@end smallexample
29085
922fbb7b
AC
29086
29087@subheading The @code{-exec-next} Command
29088@findex -exec-next
29089
29090@subsubheading Synopsis
29091
29092@smallexample
540aa8e7 29093 -exec-next [--reverse]
922fbb7b
AC
29094@end smallexample
29095
ef21caaf
NR
29096Resumes execution of the inferior program, stopping when the beginning
29097of the next source line is reached.
922fbb7b 29098
540aa8e7
MS
29099If the @samp{--reverse} option is specified, resumes reverse execution
29100of the inferior program, stopping at the beginning of the previous
29101source line. If you issue this command on the first line of a
29102function, it will take you back to the caller of that function, to the
29103source line where the function was called.
29104
29105
922fbb7b
AC
29106@subsubheading @value{GDBN} Command
29107
29108The corresponding @value{GDBN} command is @samp{next}.
29109
29110@subsubheading Example
29111
29112@smallexample
29113-exec-next
29114^running
594fe323 29115(gdb)
922fbb7b 29116*stopped,reason="end-stepping-range",line="8",file="hello.c"
594fe323 29117(gdb)
922fbb7b
AC
29118@end smallexample
29119
29120
29121@subheading The @code{-exec-next-instruction} Command
29122@findex -exec-next-instruction
29123
29124@subsubheading Synopsis
29125
29126@smallexample
540aa8e7 29127 -exec-next-instruction [--reverse]
922fbb7b
AC
29128@end smallexample
29129
ef21caaf
NR
29130Executes one machine instruction. If the instruction is a function
29131call, continues until the function returns. If the program stops at an
29132instruction in the middle of a source line, the address will be
29133printed as well.
922fbb7b 29134
540aa8e7
MS
29135If the @samp{--reverse} option is specified, resumes reverse execution
29136of the inferior program, stopping at the previous instruction. If the
29137previously executed instruction was a return from another function,
29138it will continue to execute in reverse until the call to that function
29139(from the current stack frame) is reached.
29140
922fbb7b
AC
29141@subsubheading @value{GDBN} Command
29142
29143The corresponding @value{GDBN} command is @samp{nexti}.
29144
29145@subsubheading Example
29146
29147@smallexample
594fe323 29148(gdb)
922fbb7b
AC
29149-exec-next-instruction
29150^running
29151
594fe323 29152(gdb)
922fbb7b
AC
29153*stopped,reason="end-stepping-range",
29154addr="0x000100d4",line="5",file="hello.c"
594fe323 29155(gdb)
922fbb7b
AC
29156@end smallexample
29157
29158
29159@subheading The @code{-exec-return} Command
29160@findex -exec-return
29161
29162@subsubheading Synopsis
29163
29164@smallexample
29165 -exec-return
29166@end smallexample
29167
29168Makes current function return immediately. Doesn't execute the inferior.
29169Displays the new current frame.
29170
29171@subsubheading @value{GDBN} Command
29172
29173The corresponding @value{GDBN} command is @samp{return}.
29174
29175@subsubheading Example
29176
29177@smallexample
594fe323 29178(gdb)
922fbb7b
AC
29179200-break-insert callee4
29180200^done,bkpt=@{number="1",addr="0x00010734",
29181file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 29182(gdb)
922fbb7b
AC
29183000-exec-run
29184000^running
594fe323 29185(gdb)
a47ec5fe 29186000*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
922fbb7b 29187frame=@{func="callee4",args=[],
76ff342d
DJ
29188file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29189fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@}
594fe323 29190(gdb)
922fbb7b
AC
29191205-break-delete
29192205^done
594fe323 29193(gdb)
922fbb7b
AC
29194111-exec-return
29195111^done,frame=@{level="0",func="callee3",
29196args=[@{name="strarg",
29197value="0x11940 \"A string argument.\""@}],
76ff342d
DJ
29198file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29199fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="18"@}
594fe323 29200(gdb)
922fbb7b
AC
29201@end smallexample
29202
29203
29204@subheading The @code{-exec-run} Command
29205@findex -exec-run
29206
29207@subsubheading Synopsis
29208
29209@smallexample
a79b8f6e 29210 -exec-run [--all | --thread-group N]
922fbb7b
AC
29211@end smallexample
29212
ef21caaf
NR
29213Starts execution of the inferior from the beginning. The inferior
29214executes until either a breakpoint is encountered or the program
29215exits. In the latter case the output will include an exit code, if
29216the program has exited exceptionally.
922fbb7b 29217
a79b8f6e
VP
29218When no option is specified, the current inferior is started. If the
29219@samp{--thread-group} option is specified, it should refer to a thread
29220group of type @samp{process}, and that thread group will be started.
29221If the @samp{--all} option is specified, then all inferiors will be started.
29222
922fbb7b
AC
29223@subsubheading @value{GDBN} Command
29224
29225The corresponding @value{GDBN} command is @samp{run}.
29226
ef21caaf 29227@subsubheading Examples
922fbb7b
AC
29228
29229@smallexample
594fe323 29230(gdb)
922fbb7b
AC
29231-break-insert main
29232^done,bkpt=@{number="1",addr="0x0001072c",file="recursive2.c",line="4"@}
594fe323 29233(gdb)
922fbb7b
AC
29234-exec-run
29235^running
594fe323 29236(gdb)
a47ec5fe 29237*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",
76ff342d 29238frame=@{func="main",args=[],file="recursive2.c",
948d5102 29239fullname="/home/foo/bar/recursive2.c",line="4"@}
594fe323 29240(gdb)
922fbb7b
AC
29241@end smallexample
29242
ef21caaf
NR
29243@noindent
29244Program exited normally:
29245
29246@smallexample
594fe323 29247(gdb)
ef21caaf
NR
29248-exec-run
29249^running
594fe323 29250(gdb)
ef21caaf
NR
29251x = 55
29252*stopped,reason="exited-normally"
594fe323 29253(gdb)
ef21caaf
NR
29254@end smallexample
29255
29256@noindent
29257Program exited exceptionally:
29258
29259@smallexample
594fe323 29260(gdb)
ef21caaf
NR
29261-exec-run
29262^running
594fe323 29263(gdb)
ef21caaf
NR
29264x = 55
29265*stopped,reason="exited",exit-code="01"
594fe323 29266(gdb)
ef21caaf
NR
29267@end smallexample
29268
29269Another way the program can terminate is if it receives a signal such as
29270@code{SIGINT}. In this case, @sc{gdb/mi} displays this:
29271
29272@smallexample
594fe323 29273(gdb)
ef21caaf
NR
29274*stopped,reason="exited-signalled",signal-name="SIGINT",
29275signal-meaning="Interrupt"
29276@end smallexample
29277
922fbb7b 29278
a2c02241
NR
29279@c @subheading -exec-signal
29280
29281
29282@subheading The @code{-exec-step} Command
29283@findex -exec-step
922fbb7b
AC
29284
29285@subsubheading Synopsis
29286
29287@smallexample
540aa8e7 29288 -exec-step [--reverse]
922fbb7b
AC
29289@end smallexample
29290
a2c02241
NR
29291Resumes execution of the inferior program, stopping when the beginning
29292of the next source line is reached, if the next source line is not a
29293function call. If it is, stop at the first instruction of the called
540aa8e7
MS
29294function. If the @samp{--reverse} option is specified, resumes reverse
29295execution of the inferior program, stopping at the beginning of the
29296previously executed source line.
922fbb7b
AC
29297
29298@subsubheading @value{GDBN} Command
29299
a2c02241 29300The corresponding @value{GDBN} command is @samp{step}.
922fbb7b
AC
29301
29302@subsubheading Example
29303
29304Stepping into a function:
29305
29306@smallexample
29307-exec-step
29308^running
594fe323 29309(gdb)
922fbb7b
AC
29310*stopped,reason="end-stepping-range",
29311frame=@{func="foo",args=[@{name="a",value="10"@},
76ff342d 29312@{name="b",value="0"@}],file="recursive2.c",
948d5102 29313fullname="/home/foo/bar/recursive2.c",line="11"@}
594fe323 29314(gdb)
922fbb7b
AC
29315@end smallexample
29316
29317Regular stepping:
29318
29319@smallexample
29320-exec-step
29321^running
594fe323 29322(gdb)
922fbb7b 29323*stopped,reason="end-stepping-range",line="14",file="recursive2.c"
594fe323 29324(gdb)
922fbb7b
AC
29325@end smallexample
29326
29327
29328@subheading The @code{-exec-step-instruction} Command
29329@findex -exec-step-instruction
29330
29331@subsubheading Synopsis
29332
29333@smallexample
540aa8e7 29334 -exec-step-instruction [--reverse]
922fbb7b
AC
29335@end smallexample
29336
540aa8e7
MS
29337Resumes the inferior which executes one machine instruction. If the
29338@samp{--reverse} option is specified, resumes reverse execution of the
29339inferior program, stopping at the previously executed instruction.
29340The output, once @value{GDBN} has stopped, will vary depending on
29341whether we have stopped in the middle of a source line or not. In the
29342former case, the address at which the program stopped will be printed
29343as well.
922fbb7b
AC
29344
29345@subsubheading @value{GDBN} Command
29346
29347The corresponding @value{GDBN} command is @samp{stepi}.
29348
29349@subsubheading Example
29350
29351@smallexample
594fe323 29352(gdb)
922fbb7b
AC
29353-exec-step-instruction
29354^running
29355
594fe323 29356(gdb)
922fbb7b 29357*stopped,reason="end-stepping-range",
76ff342d 29358frame=@{func="foo",args=[],file="try.c",
948d5102 29359fullname="/home/foo/bar/try.c",line="10"@}
594fe323 29360(gdb)
922fbb7b
AC
29361-exec-step-instruction
29362^running
29363
594fe323 29364(gdb)
922fbb7b 29365*stopped,reason="end-stepping-range",
76ff342d 29366frame=@{addr="0x000100f4",func="foo",args=[],file="try.c",
948d5102 29367fullname="/home/foo/bar/try.c",line="10"@}
594fe323 29368(gdb)
922fbb7b
AC
29369@end smallexample
29370
29371
29372@subheading The @code{-exec-until} Command
29373@findex -exec-until
29374
29375@subsubheading Synopsis
29376
29377@smallexample
29378 -exec-until [ @var{location} ]
29379@end smallexample
29380
ef21caaf
NR
29381Executes the inferior until the @var{location} specified in the
29382argument is reached. If there is no argument, the inferior executes
29383until a source line greater than the current one is reached. The
29384reason for stopping in this case will be @samp{location-reached}.
922fbb7b
AC
29385
29386@subsubheading @value{GDBN} Command
29387
29388The corresponding @value{GDBN} command is @samp{until}.
29389
29390@subsubheading Example
29391
29392@smallexample
594fe323 29393(gdb)
922fbb7b
AC
29394-exec-until recursive2.c:6
29395^running
594fe323 29396(gdb)
922fbb7b
AC
29397x = 55
29398*stopped,reason="location-reached",frame=@{func="main",args=[],
948d5102 29399file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="6"@}
594fe323 29400(gdb)
922fbb7b
AC
29401@end smallexample
29402
29403@ignore
29404@subheading -file-clear
29405Is this going away????
29406@end ignore
29407
351ff01a 29408@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
29409@node GDB/MI Stack Manipulation
29410@section @sc{gdb/mi} Stack Manipulation Commands
351ff01a 29411
922fbb7b 29412
a2c02241
NR
29413@subheading The @code{-stack-info-frame} Command
29414@findex -stack-info-frame
922fbb7b
AC
29415
29416@subsubheading Synopsis
29417
29418@smallexample
a2c02241 29419 -stack-info-frame
922fbb7b
AC
29420@end smallexample
29421
a2c02241 29422Get info on the selected frame.
922fbb7b
AC
29423
29424@subsubheading @value{GDBN} Command
29425
a2c02241
NR
29426The corresponding @value{GDBN} command is @samp{info frame} or @samp{frame}
29427(without arguments).
922fbb7b
AC
29428
29429@subsubheading Example
29430
29431@smallexample
594fe323 29432(gdb)
a2c02241
NR
29433-stack-info-frame
29434^done,frame=@{level="1",addr="0x0001076c",func="callee3",
29435file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29436fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
594fe323 29437(gdb)
922fbb7b
AC
29438@end smallexample
29439
a2c02241
NR
29440@subheading The @code{-stack-info-depth} Command
29441@findex -stack-info-depth
922fbb7b
AC
29442
29443@subsubheading Synopsis
29444
29445@smallexample
a2c02241 29446 -stack-info-depth [ @var{max-depth} ]
922fbb7b
AC
29447@end smallexample
29448
a2c02241
NR
29449Return the depth of the stack. If the integer argument @var{max-depth}
29450is specified, do not count beyond @var{max-depth} frames.
922fbb7b
AC
29451
29452@subsubheading @value{GDBN} Command
29453
a2c02241 29454There's no equivalent @value{GDBN} command.
922fbb7b
AC
29455
29456@subsubheading Example
29457
a2c02241
NR
29458For a stack with frame levels 0 through 11:
29459
922fbb7b 29460@smallexample
594fe323 29461(gdb)
a2c02241
NR
29462-stack-info-depth
29463^done,depth="12"
594fe323 29464(gdb)
a2c02241
NR
29465-stack-info-depth 4
29466^done,depth="4"
594fe323 29467(gdb)
a2c02241
NR
29468-stack-info-depth 12
29469^done,depth="12"
594fe323 29470(gdb)
a2c02241
NR
29471-stack-info-depth 11
29472^done,depth="11"
594fe323 29473(gdb)
a2c02241
NR
29474-stack-info-depth 13
29475^done,depth="12"
594fe323 29476(gdb)
922fbb7b
AC
29477@end smallexample
29478
a2c02241
NR
29479@subheading The @code{-stack-list-arguments} Command
29480@findex -stack-list-arguments
922fbb7b
AC
29481
29482@subsubheading Synopsis
29483
29484@smallexample
3afae151 29485 -stack-list-arguments @var{print-values}
a2c02241 29486 [ @var{low-frame} @var{high-frame} ]
922fbb7b
AC
29487@end smallexample
29488
a2c02241
NR
29489Display a list of the arguments for the frames between @var{low-frame}
29490and @var{high-frame} (inclusive). If @var{low-frame} and
2f1acb09
VP
29491@var{high-frame} are not provided, list the arguments for the whole
29492call stack. If the two arguments are equal, show the single frame
29493at the corresponding level. It is an error if @var{low-frame} is
29494larger than the actual number of frames. On the other hand,
29495@var{high-frame} may be larger than the actual number of frames, in
29496which case only existing frames will be returned.
a2c02241 29497
3afae151
VP
29498If @var{print-values} is 0 or @code{--no-values}, print only the names of
29499the variables; if it is 1 or @code{--all-values}, print also their
29500values; and if it is 2 or @code{--simple-values}, print the name,
29501type and value for simple data types, and the name and type for arrays,
29502structures and unions.
922fbb7b 29503
b3372f91
VP
29504Use of this command to obtain arguments in a single frame is
29505deprecated in favor of the @samp{-stack-list-variables} command.
29506
922fbb7b
AC
29507@subsubheading @value{GDBN} Command
29508
a2c02241
NR
29509@value{GDBN} does not have an equivalent command. @code{gdbtk} has a
29510@samp{gdb_get_args} command which partially overlaps with the
29511functionality of @samp{-stack-list-arguments}.
922fbb7b
AC
29512
29513@subsubheading Example
922fbb7b 29514
a2c02241 29515@smallexample
594fe323 29516(gdb)
a2c02241
NR
29517-stack-list-frames
29518^done,
29519stack=[
29520frame=@{level="0",addr="0x00010734",func="callee4",
29521file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29522fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
29523frame=@{level="1",addr="0x0001076c",func="callee3",
29524file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29525fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@},
29526frame=@{level="2",addr="0x0001078c",func="callee2",
29527file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29528fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"@},
29529frame=@{level="3",addr="0x000107b4",func="callee1",
29530file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29531fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
29532frame=@{level="4",addr="0x000107e0",func="main",
29533file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
29534fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
594fe323 29535(gdb)
a2c02241
NR
29536-stack-list-arguments 0
29537^done,
29538stack-args=[
29539frame=@{level="0",args=[]@},
29540frame=@{level="1",args=[name="strarg"]@},
29541frame=@{level="2",args=[name="intarg",name="strarg"]@},
29542frame=@{level="3",args=[name="intarg",name="strarg",name="fltarg"]@},
29543frame=@{level="4",args=[]@}]
594fe323 29544(gdb)
a2c02241
NR
29545-stack-list-arguments 1
29546^done,
29547stack-args=[
29548frame=@{level="0",args=[]@},
29549frame=@{level="1",
29550 args=[@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
29551frame=@{level="2",args=[
29552@{name="intarg",value="2"@},
29553@{name="strarg",value="0x11940 \"A string argument.\""@}]@},
29554@{frame=@{level="3",args=[
29555@{name="intarg",value="2"@},
29556@{name="strarg",value="0x11940 \"A string argument.\""@},
29557@{name="fltarg",value="3.5"@}]@},
29558frame=@{level="4",args=[]@}]
594fe323 29559(gdb)
a2c02241
NR
29560-stack-list-arguments 0 2 2
29561^done,stack-args=[frame=@{level="2",args=[name="intarg",name="strarg"]@}]
594fe323 29562(gdb)
a2c02241
NR
29563-stack-list-arguments 1 2 2
29564^done,stack-args=[frame=@{level="2",
29565args=[@{name="intarg",value="2"@},
29566@{name="strarg",value="0x11940 \"A string argument.\""@}]@}]
594fe323 29567(gdb)
a2c02241
NR
29568@end smallexample
29569
29570@c @subheading -stack-list-exception-handlers
922fbb7b 29571
a2c02241
NR
29572
29573@subheading The @code{-stack-list-frames} Command
29574@findex -stack-list-frames
1abaf70c
BR
29575
29576@subsubheading Synopsis
29577
29578@smallexample
a2c02241 29579 -stack-list-frames [ @var{low-frame} @var{high-frame} ]
1abaf70c
BR
29580@end smallexample
29581
a2c02241
NR
29582List the frames currently on the stack. For each frame it displays the
29583following info:
29584
29585@table @samp
29586@item @var{level}
d3e8051b 29587The frame number, 0 being the topmost frame, i.e., the innermost function.
a2c02241
NR
29588@item @var{addr}
29589The @code{$pc} value for that frame.
29590@item @var{func}
29591Function name.
29592@item @var{file}
29593File name of the source file where the function lives.
7d288aaa
TT
29594@item @var{fullname}
29595The full file name of the source file where the function lives.
a2c02241
NR
29596@item @var{line}
29597Line number corresponding to the @code{$pc}.
7d288aaa
TT
29598@item @var{from}
29599The shared library where this function is defined. This is only given
29600if the frame's function is not known.
a2c02241
NR
29601@end table
29602
29603If invoked without arguments, this command prints a backtrace for the
29604whole stack. If given two integer arguments, it shows the frames whose
29605levels are between the two arguments (inclusive). If the two arguments
2ab1eb7a
VP
29606are equal, it shows the single frame at the corresponding level. It is
29607an error if @var{low-frame} is larger than the actual number of
a5451f4e 29608frames. On the other hand, @var{high-frame} may be larger than the
2ab1eb7a 29609actual number of frames, in which case only existing frames will be returned.
1abaf70c
BR
29610
29611@subsubheading @value{GDBN} Command
29612
a2c02241 29613The corresponding @value{GDBN} commands are @samp{backtrace} and @samp{where}.
1abaf70c
BR
29614
29615@subsubheading Example
29616
a2c02241
NR
29617Full stack backtrace:
29618
1abaf70c 29619@smallexample
594fe323 29620(gdb)
a2c02241
NR
29621-stack-list-frames
29622^done,stack=
29623[frame=@{level="0",addr="0x0001076c",func="foo",
29624 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="11"@},
29625frame=@{level="1",addr="0x000107a4",func="foo",
29626 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29627frame=@{level="2",addr="0x000107a4",func="foo",
29628 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29629frame=@{level="3",addr="0x000107a4",func="foo",
29630 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29631frame=@{level="4",addr="0x000107a4",func="foo",
29632 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29633frame=@{level="5",addr="0x000107a4",func="foo",
29634 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29635frame=@{level="6",addr="0x000107a4",func="foo",
29636 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29637frame=@{level="7",addr="0x000107a4",func="foo",
29638 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29639frame=@{level="8",addr="0x000107a4",func="foo",
29640 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29641frame=@{level="9",addr="0x000107a4",func="foo",
29642 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29643frame=@{level="10",addr="0x000107a4",func="foo",
29644 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29645frame=@{level="11",addr="0x00010738",func="main",
29646 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="4"@}]
594fe323 29647(gdb)
1abaf70c
BR
29648@end smallexample
29649
a2c02241 29650Show frames between @var{low_frame} and @var{high_frame}:
1abaf70c 29651
a2c02241 29652@smallexample
594fe323 29653(gdb)
a2c02241
NR
29654-stack-list-frames 3 5
29655^done,stack=
29656[frame=@{level="3",addr="0x000107a4",func="foo",
29657 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29658frame=@{level="4",addr="0x000107a4",func="foo",
29659 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@},
29660frame=@{level="5",addr="0x000107a4",func="foo",
29661 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 29662(gdb)
a2c02241 29663@end smallexample
922fbb7b 29664
a2c02241 29665Show a single frame:
922fbb7b
AC
29666
29667@smallexample
594fe323 29668(gdb)
a2c02241
NR
29669-stack-list-frames 3 3
29670^done,stack=
29671[frame=@{level="3",addr="0x000107a4",func="foo",
29672 file="recursive2.c",fullname="/home/foo/bar/recursive2.c",line="14"@}]
594fe323 29673(gdb)
922fbb7b
AC
29674@end smallexample
29675
922fbb7b 29676
a2c02241
NR
29677@subheading The @code{-stack-list-locals} Command
29678@findex -stack-list-locals
57c22c6c 29679
a2c02241 29680@subsubheading Synopsis
922fbb7b
AC
29681
29682@smallexample
a2c02241 29683 -stack-list-locals @var{print-values}
922fbb7b
AC
29684@end smallexample
29685
a2c02241
NR
29686Display the local variable names for the selected frame. If
29687@var{print-values} is 0 or @code{--no-values}, print only the names of
29688the variables; if it is 1 or @code{--all-values}, print also their
29689values; and if it is 2 or @code{--simple-values}, print the name,
3afae151 29690type and value for simple data types, and the name and type for arrays,
a2c02241
NR
29691structures and unions. In this last case, a frontend can immediately
29692display the value of simple data types and create variable objects for
d3e8051b 29693other data types when the user wishes to explore their values in
a2c02241 29694more detail.
922fbb7b 29695
b3372f91
VP
29696This command is deprecated in favor of the
29697@samp{-stack-list-variables} command.
29698
922fbb7b
AC
29699@subsubheading @value{GDBN} Command
29700
a2c02241 29701@samp{info locals} in @value{GDBN}, @samp{gdb_get_locals} in @code{gdbtk}.
922fbb7b
AC
29702
29703@subsubheading Example
922fbb7b
AC
29704
29705@smallexample
594fe323 29706(gdb)
a2c02241
NR
29707-stack-list-locals 0
29708^done,locals=[name="A",name="B",name="C"]
594fe323 29709(gdb)
a2c02241
NR
29710-stack-list-locals --all-values
29711^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
29712 @{name="C",value="@{1, 2, 3@}"@}]
29713-stack-list-locals --simple-values
29714^done,locals=[@{name="A",type="int",value="1"@},
29715 @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
594fe323 29716(gdb)
922fbb7b
AC
29717@end smallexample
29718
b3372f91
VP
29719@subheading The @code{-stack-list-variables} Command
29720@findex -stack-list-variables
29721
29722@subsubheading Synopsis
29723
29724@smallexample
29725 -stack-list-variables @var{print-values}
29726@end smallexample
29727
29728Display the names of local variables and function arguments for the selected frame. If
29729@var{print-values} is 0 or @code{--no-values}, print only the names of
29730the variables; if it is 1 or @code{--all-values}, print also their
29731values; and if it is 2 or @code{--simple-values}, print the name,
3afae151 29732type and value for simple data types, and the name and type for arrays,
b3372f91
VP
29733structures and unions.
29734
29735@subsubheading Example
29736
29737@smallexample
29738(gdb)
29739-stack-list-variables --thread 1 --frame 0 --all-values
4f412fd0 29740^done,variables=[@{name="x",value="11"@},@{name="s",value="@{a = 1, b = 2@}"@}]
b3372f91
VP
29741(gdb)
29742@end smallexample
29743
922fbb7b 29744
a2c02241
NR
29745@subheading The @code{-stack-select-frame} Command
29746@findex -stack-select-frame
922fbb7b
AC
29747
29748@subsubheading Synopsis
29749
29750@smallexample
a2c02241 29751 -stack-select-frame @var{framenum}
922fbb7b
AC
29752@end smallexample
29753
a2c02241
NR
29754Change the selected frame. Select a different frame @var{framenum} on
29755the stack.
922fbb7b 29756
c3b108f7
VP
29757This command in deprecated in favor of passing the @samp{--frame}
29758option to every command.
29759
922fbb7b
AC
29760@subsubheading @value{GDBN} Command
29761
a2c02241
NR
29762The corresponding @value{GDBN} commands are @samp{frame}, @samp{up},
29763@samp{down}, @samp{select-frame}, @samp{up-silent}, and @samp{down-silent}.
922fbb7b
AC
29764
29765@subsubheading Example
29766
29767@smallexample
594fe323 29768(gdb)
a2c02241 29769-stack-select-frame 2
922fbb7b 29770^done
594fe323 29771(gdb)
922fbb7b
AC
29772@end smallexample
29773
29774@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a2c02241
NR
29775@node GDB/MI Variable Objects
29776@section @sc{gdb/mi} Variable Objects
922fbb7b 29777
a1b5960f 29778@ignore
922fbb7b 29779
a2c02241 29780@subheading Motivation for Variable Objects in @sc{gdb/mi}
922fbb7b 29781
a2c02241
NR
29782For the implementation of a variable debugger window (locals, watched
29783expressions, etc.), we are proposing the adaptation of the existing code
29784used by @code{Insight}.
922fbb7b 29785
a2c02241 29786The two main reasons for that are:
922fbb7b 29787
a2c02241
NR
29788@enumerate 1
29789@item
29790It has been proven in practice (it is already on its second generation).
922fbb7b 29791
a2c02241
NR
29792@item
29793It will shorten development time (needless to say how important it is
29794now).
29795@end enumerate
922fbb7b 29796
a2c02241
NR
29797The original interface was designed to be used by Tcl code, so it was
29798slightly changed so it could be used through @sc{gdb/mi}. This section
29799describes the @sc{gdb/mi} operations that will be available and gives some
29800hints about their use.
922fbb7b 29801
a2c02241
NR
29802@emph{Note}: In addition to the set of operations described here, we
29803expect the @sc{gui} implementation of a variable window to require, at
29804least, the following operations:
922fbb7b 29805
a2c02241
NR
29806@itemize @bullet
29807@item @code{-gdb-show} @code{output-radix}
29808@item @code{-stack-list-arguments}
29809@item @code{-stack-list-locals}
29810@item @code{-stack-select-frame}
29811@end itemize
922fbb7b 29812
a1b5960f
VP
29813@end ignore
29814
c8b2f53c 29815@subheading Introduction to Variable Objects
922fbb7b 29816
a2c02241 29817@cindex variable objects in @sc{gdb/mi}
c8b2f53c
VP
29818
29819Variable objects are "object-oriented" MI interface for examining and
29820changing values of expressions. Unlike some other MI interfaces that
29821work with expressions, variable objects are specifically designed for
29822simple and efficient presentation in the frontend. A variable object
29823is identified by string name. When a variable object is created, the
29824frontend specifies the expression for that variable object. The
29825expression can be a simple variable, or it can be an arbitrary complex
29826expression, and can even involve CPU registers. After creating a
29827variable object, the frontend can invoke other variable object
29828operations---for example to obtain or change the value of a variable
29829object, or to change display format.
29830
29831Variable objects have hierarchical tree structure. Any variable object
29832that corresponds to a composite type, such as structure in C, has
29833a number of child variable objects, for example corresponding to each
29834element of a structure. A child variable object can itself have
29835children, recursively. Recursion ends when we reach
25d5ea92
VP
29836leaf variable objects, which always have built-in types. Child variable
29837objects are created only by explicit request, so if a frontend
29838is not interested in the children of a particular variable object, no
29839child will be created.
c8b2f53c
VP
29840
29841For a leaf variable object it is possible to obtain its value as a
29842string, or set the value from a string. String value can be also
29843obtained for a non-leaf variable object, but it's generally a string
29844that only indicates the type of the object, and does not list its
29845contents. Assignment to a non-leaf variable object is not allowed.
29846
29847A frontend does not need to read the values of all variable objects each time
29848the program stops. Instead, MI provides an update command that lists all
29849variable objects whose values has changed since the last update
29850operation. This considerably reduces the amount of data that must
25d5ea92
VP
29851be transferred to the frontend. As noted above, children variable
29852objects are created on demand, and only leaf variable objects have a
29853real value. As result, gdb will read target memory only for leaf
29854variables that frontend has created.
29855
29856The automatic update is not always desirable. For example, a frontend
29857might want to keep a value of some expression for future reference,
29858and never update it. For another example, fetching memory is
29859relatively slow for embedded targets, so a frontend might want
29860to disable automatic update for the variables that are either not
29861visible on the screen, or ``closed''. This is possible using so
29862called ``frozen variable objects''. Such variable objects are never
29863implicitly updated.
922fbb7b 29864
c3b108f7
VP
29865Variable objects can be either @dfn{fixed} or @dfn{floating}. For the
29866fixed variable object, the expression is parsed when the variable
29867object is created, including associating identifiers to specific
29868variables. The meaning of expression never changes. For a floating
29869variable object the values of variables whose names appear in the
29870expressions are re-evaluated every time in the context of the current
29871frame. Consider this example:
29872
29873@smallexample
29874void do_work(...)
29875@{
29876 struct work_state state;
29877
29878 if (...)
29879 do_work(...);
29880@}
29881@end smallexample
29882
29883If a fixed variable object for the @code{state} variable is created in
7a9dd1b2 29884this function, and we enter the recursive call, the variable
c3b108f7
VP
29885object will report the value of @code{state} in the top-level
29886@code{do_work} invocation. On the other hand, a floating variable
29887object will report the value of @code{state} in the current frame.
29888
29889If an expression specified when creating a fixed variable object
29890refers to a local variable, the variable object becomes bound to the
29891thread and frame in which the variable object is created. When such
29892variable object is updated, @value{GDBN} makes sure that the
29893thread/frame combination the variable object is bound to still exists,
29894and re-evaluates the variable object in context of that thread/frame.
29895
a2c02241
NR
29896The following is the complete set of @sc{gdb/mi} operations defined to
29897access this functionality:
922fbb7b 29898
a2c02241
NR
29899@multitable @columnfractions .4 .6
29900@item @strong{Operation}
29901@tab @strong{Description}
922fbb7b 29902
0cc7d26f
TT
29903@item @code{-enable-pretty-printing}
29904@tab enable Python-based pretty-printing
a2c02241
NR
29905@item @code{-var-create}
29906@tab create a variable object
29907@item @code{-var-delete}
22d8a470 29908@tab delete the variable object and/or its children
a2c02241
NR
29909@item @code{-var-set-format}
29910@tab set the display format of this variable
29911@item @code{-var-show-format}
29912@tab show the display format of this variable
29913@item @code{-var-info-num-children}
29914@tab tells how many children this object has
29915@item @code{-var-list-children}
29916@tab return a list of the object's children
29917@item @code{-var-info-type}
29918@tab show the type of this variable object
29919@item @code{-var-info-expression}
02142340
VP
29920@tab print parent-relative expression that this variable object represents
29921@item @code{-var-info-path-expression}
29922@tab print full expression that this variable object represents
a2c02241
NR
29923@item @code{-var-show-attributes}
29924@tab is this variable editable? does it exist here?
29925@item @code{-var-evaluate-expression}
29926@tab get the value of this variable
29927@item @code{-var-assign}
29928@tab set the value of this variable
29929@item @code{-var-update}
29930@tab update the variable and its children
25d5ea92
VP
29931@item @code{-var-set-frozen}
29932@tab set frozeness attribute
0cc7d26f
TT
29933@item @code{-var-set-update-range}
29934@tab set range of children to display on update
a2c02241 29935@end multitable
922fbb7b 29936
a2c02241
NR
29937In the next subsection we describe each operation in detail and suggest
29938how it can be used.
922fbb7b 29939
a2c02241 29940@subheading Description And Use of Operations on Variable Objects
922fbb7b 29941
0cc7d26f
TT
29942@subheading The @code{-enable-pretty-printing} Command
29943@findex -enable-pretty-printing
29944
29945@smallexample
29946-enable-pretty-printing
29947@end smallexample
29948
29949@value{GDBN} allows Python-based visualizers to affect the output of the
29950MI variable object commands. However, because there was no way to
29951implement this in a fully backward-compatible way, a front end must
29952request that this functionality be enabled.
29953
29954Once enabled, this feature cannot be disabled.
29955
29956Note that if Python support has not been compiled into @value{GDBN},
29957this command will still succeed (and do nothing).
29958
f43030c4
TT
29959This feature is currently (as of @value{GDBN} 7.0) experimental, and
29960may work differently in future versions of @value{GDBN}.
29961
a2c02241
NR
29962@subheading The @code{-var-create} Command
29963@findex -var-create
ef21caaf 29964
a2c02241 29965@subsubheading Synopsis
ef21caaf 29966
a2c02241
NR
29967@smallexample
29968 -var-create @{@var{name} | "-"@}
c3b108f7 29969 @{@var{frame-addr} | "*" | "@@"@} @var{expression}
a2c02241
NR
29970@end smallexample
29971
29972This operation creates a variable object, which allows the monitoring of
29973a variable, the result of an expression, a memory cell or a CPU
29974register.
ef21caaf 29975
a2c02241
NR
29976The @var{name} parameter is the string by which the object can be
29977referenced. It must be unique. If @samp{-} is specified, the varobj
29978system will generate a string ``varNNNNNN'' automatically. It will be
c3b108f7 29979unique provided that one does not specify @var{name} of that format.
a2c02241 29980The command fails if a duplicate name is found.
ef21caaf 29981
a2c02241
NR
29982The frame under which the expression should be evaluated can be
29983specified by @var{frame-addr}. A @samp{*} indicates that the current
c3b108f7
VP
29984frame should be used. A @samp{@@} indicates that a floating variable
29985object must be created.
922fbb7b 29986
a2c02241
NR
29987@var{expression} is any expression valid on the current language set (must not
29988begin with a @samp{*}), or one of the following:
922fbb7b 29989
a2c02241
NR
29990@itemize @bullet
29991@item
29992@samp{*@var{addr}}, where @var{addr} is the address of a memory cell
922fbb7b 29993
a2c02241
NR
29994@item
29995@samp{*@var{addr}-@var{addr}} --- a memory address range (TBD)
922fbb7b 29996
a2c02241
NR
29997@item
29998@samp{$@var{regname}} --- a CPU register name
29999@end itemize
922fbb7b 30000
0cc7d26f
TT
30001@cindex dynamic varobj
30002A varobj's contents may be provided by a Python-based pretty-printer. In this
30003case the varobj is known as a @dfn{dynamic varobj}. Dynamic varobjs
30004have slightly different semantics in some cases. If the
30005@code{-enable-pretty-printing} command is not sent, then @value{GDBN}
30006will never create a dynamic varobj. This ensures backward
30007compatibility for existing clients.
30008
a2c02241 30009@subsubheading Result
922fbb7b 30010
0cc7d26f
TT
30011This operation returns attributes of the newly-created varobj. These
30012are:
30013
30014@table @samp
30015@item name
30016The name of the varobj.
30017
30018@item numchild
30019The number of children of the varobj. This number is not necessarily
30020reliable for a dynamic varobj. Instead, you must examine the
30021@samp{has_more} attribute.
30022
30023@item value
30024The varobj's scalar value. For a varobj whose type is some sort of
30025aggregate (e.g., a @code{struct}), or for a dynamic varobj, this value
30026will not be interesting.
30027
30028@item type
30029The varobj's type. This is a string representation of the type, as
8264ba82
AG
30030would be printed by the @value{GDBN} CLI. If @samp{print object}
30031(@pxref{Print Settings, set print object}) is set to @code{on}, the
30032@emph{actual} (derived) type of the object is shown rather than the
30033@emph{declared} one.
0cc7d26f
TT
30034
30035@item thread-id
30036If a variable object is bound to a specific thread, then this is the
30037thread's identifier.
30038
30039@item has_more
30040For a dynamic varobj, this indicates whether there appear to be any
30041children available. For a non-dynamic varobj, this will be 0.
30042
30043@item dynamic
30044This attribute will be present and have the value @samp{1} if the
30045varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30046then this attribute will not be present.
30047
30048@item displayhint
30049A dynamic varobj can supply a display hint to the front end. The
30050value comes directly from the Python pretty-printer object's
4c374409 30051@code{display_hint} method. @xref{Pretty Printing API}.
0cc7d26f
TT
30052@end table
30053
30054Typical output will look like this:
922fbb7b
AC
30055
30056@smallexample
0cc7d26f
TT
30057 name="@var{name}",numchild="@var{N}",type="@var{type}",thread-id="@var{M}",
30058 has_more="@var{has_more}"
dcaaae04
NR
30059@end smallexample
30060
a2c02241
NR
30061
30062@subheading The @code{-var-delete} Command
30063@findex -var-delete
922fbb7b
AC
30064
30065@subsubheading Synopsis
30066
30067@smallexample
22d8a470 30068 -var-delete [ -c ] @var{name}
922fbb7b
AC
30069@end smallexample
30070
a2c02241 30071Deletes a previously created variable object and all of its children.
22d8a470 30072With the @samp{-c} option, just deletes the children.
922fbb7b 30073
a2c02241 30074Returns an error if the object @var{name} is not found.
922fbb7b 30075
922fbb7b 30076
a2c02241
NR
30077@subheading The @code{-var-set-format} Command
30078@findex -var-set-format
922fbb7b 30079
a2c02241 30080@subsubheading Synopsis
922fbb7b
AC
30081
30082@smallexample
a2c02241 30083 -var-set-format @var{name} @var{format-spec}
922fbb7b
AC
30084@end smallexample
30085
a2c02241
NR
30086Sets the output format for the value of the object @var{name} to be
30087@var{format-spec}.
30088
de051565 30089@anchor{-var-set-format}
a2c02241
NR
30090The syntax for the @var{format-spec} is as follows:
30091
30092@smallexample
30093 @var{format-spec} @expansion{}
30094 @{binary | decimal | hexadecimal | octal | natural@}
30095@end smallexample
30096
c8b2f53c
VP
30097The natural format is the default format choosen automatically
30098based on the variable type (like decimal for an @code{int}, hex
30099for pointers, etc.).
30100
30101For a variable with children, the format is set only on the
30102variable itself, and the children are not affected.
a2c02241
NR
30103
30104@subheading The @code{-var-show-format} Command
30105@findex -var-show-format
922fbb7b
AC
30106
30107@subsubheading Synopsis
30108
30109@smallexample
a2c02241 30110 -var-show-format @var{name}
922fbb7b
AC
30111@end smallexample
30112
a2c02241 30113Returns the format used to display the value of the object @var{name}.
922fbb7b 30114
a2c02241
NR
30115@smallexample
30116 @var{format} @expansion{}
30117 @var{format-spec}
30118@end smallexample
922fbb7b 30119
922fbb7b 30120
a2c02241
NR
30121@subheading The @code{-var-info-num-children} Command
30122@findex -var-info-num-children
30123
30124@subsubheading Synopsis
30125
30126@smallexample
30127 -var-info-num-children @var{name}
30128@end smallexample
30129
30130Returns the number of children of a variable object @var{name}:
30131
30132@smallexample
30133 numchild=@var{n}
30134@end smallexample
30135
0cc7d26f
TT
30136Note that this number is not completely reliable for a dynamic varobj.
30137It will return the current number of children, but more children may
30138be available.
30139
a2c02241
NR
30140
30141@subheading The @code{-var-list-children} Command
30142@findex -var-list-children
30143
30144@subsubheading Synopsis
30145
30146@smallexample
0cc7d26f 30147 -var-list-children [@var{print-values}] @var{name} [@var{from} @var{to}]
a2c02241 30148@end smallexample
b569d230 30149@anchor{-var-list-children}
a2c02241
NR
30150
30151Return a list of the children of the specified variable object and
30152create variable objects for them, if they do not already exist. With
f5011d11 30153a single argument or if @var{print-values} has a value of 0 or
a2c02241
NR
30154@code{--no-values}, print only the names of the variables; if
30155@var{print-values} is 1 or @code{--all-values}, also print their
30156values; and if it is 2 or @code{--simple-values} print the name and
30157value for simple data types and just the name for arrays, structures
30158and unions.
922fbb7b 30159
0cc7d26f
TT
30160@var{from} and @var{to}, if specified, indicate the range of children
30161to report. If @var{from} or @var{to} is less than zero, the range is
30162reset and all children will be reported. Otherwise, children starting
30163at @var{from} (zero-based) and up to and excluding @var{to} will be
30164reported.
30165
30166If a child range is requested, it will only affect the current call to
30167@code{-var-list-children}, but not future calls to @code{-var-update}.
30168For this, you must instead use @code{-var-set-update-range}. The
30169intent of this approach is to enable a front end to implement any
30170update approach it likes; for example, scrolling a view may cause the
30171front end to request more children with @code{-var-list-children}, and
30172then the front end could call @code{-var-set-update-range} with a
30173different range to ensure that future updates are restricted to just
30174the visible items.
30175
b569d230
EZ
30176For each child the following results are returned:
30177
30178@table @var
30179
30180@item name
30181Name of the variable object created for this child.
30182
30183@item exp
30184The expression to be shown to the user by the front end to designate this child.
30185For example this may be the name of a structure member.
30186
0cc7d26f
TT
30187For a dynamic varobj, this value cannot be used to form an
30188expression. There is no way to do this at all with a dynamic varobj.
30189
b569d230
EZ
30190For C/C@t{++} structures there are several pseudo children returned to
30191designate access qualifiers. For these pseudo children @var{exp} is
30192@samp{public}, @samp{private}, or @samp{protected}. In this case the
30193type and value are not present.
30194
0cc7d26f
TT
30195A dynamic varobj will not report the access qualifying
30196pseudo-children, regardless of the language. This information is not
30197available at all with a dynamic varobj.
30198
b569d230 30199@item numchild
0cc7d26f
TT
30200Number of children this child has. For a dynamic varobj, this will be
302010.
b569d230
EZ
30202
30203@item type
8264ba82
AG
30204The type of the child. If @samp{print object}
30205(@pxref{Print Settings, set print object}) is set to @code{on}, the
30206@emph{actual} (derived) type of the object is shown rather than the
30207@emph{declared} one.
b569d230
EZ
30208
30209@item value
30210If values were requested, this is the value.
30211
30212@item thread-id
30213If this variable object is associated with a thread, this is the thread id.
30214Otherwise this result is not present.
30215
30216@item frozen
30217If the variable object is frozen, this variable will be present with a value of 1.
30218@end table
30219
0cc7d26f
TT
30220The result may have its own attributes:
30221
30222@table @samp
30223@item displayhint
30224A dynamic varobj can supply a display hint to the front end. The
30225value comes directly from the Python pretty-printer object's
4c374409 30226@code{display_hint} method. @xref{Pretty Printing API}.
0cc7d26f
TT
30227
30228@item has_more
30229This is an integer attribute which is nonzero if there are children
30230remaining after the end of the selected range.
30231@end table
30232
922fbb7b
AC
30233@subsubheading Example
30234
30235@smallexample
594fe323 30236(gdb)
a2c02241 30237 -var-list-children n
b569d230 30238 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 30239 numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
594fe323 30240(gdb)
a2c02241 30241 -var-list-children --all-values n
b569d230 30242 ^done,numchild=@var{n},children=[child=@{name=@var{name},exp=@var{exp},
a2c02241 30243 numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
922fbb7b
AC
30244@end smallexample
30245
922fbb7b 30246
a2c02241
NR
30247@subheading The @code{-var-info-type} Command
30248@findex -var-info-type
922fbb7b 30249
a2c02241
NR
30250@subsubheading Synopsis
30251
30252@smallexample
30253 -var-info-type @var{name}
30254@end smallexample
30255
30256Returns the type of the specified variable @var{name}. The type is
30257returned as a string in the same format as it is output by the
30258@value{GDBN} CLI:
30259
30260@smallexample
30261 type=@var{typename}
30262@end smallexample
30263
30264
30265@subheading The @code{-var-info-expression} Command
30266@findex -var-info-expression
922fbb7b
AC
30267
30268@subsubheading Synopsis
30269
30270@smallexample
a2c02241 30271 -var-info-expression @var{name}
922fbb7b
AC
30272@end smallexample
30273
02142340
VP
30274Returns a string that is suitable for presenting this
30275variable object in user interface. The string is generally
30276not valid expression in the current language, and cannot be evaluated.
30277
30278For example, if @code{a} is an array, and variable object
30279@code{A} was created for @code{a}, then we'll get this output:
922fbb7b 30280
a2c02241 30281@smallexample
02142340
VP
30282(gdb) -var-info-expression A.1
30283^done,lang="C",exp="1"
a2c02241 30284@end smallexample
922fbb7b 30285
a2c02241 30286@noindent
02142340
VP
30287Here, the values of @code{lang} can be @code{@{"C" | "C++" | "Java"@}}.
30288
30289Note that the output of the @code{-var-list-children} command also
30290includes those expressions, so the @code{-var-info-expression} command
30291is of limited use.
30292
30293@subheading The @code{-var-info-path-expression} Command
30294@findex -var-info-path-expression
30295
30296@subsubheading Synopsis
30297
30298@smallexample
30299 -var-info-path-expression @var{name}
30300@end smallexample
30301
30302Returns an expression that can be evaluated in the current
30303context and will yield the same value that a variable object has.
30304Compare this with the @code{-var-info-expression} command, which
30305result can be used only for UI presentation. Typical use of
30306the @code{-var-info-path-expression} command is creating a
30307watchpoint from a variable object.
30308
0cc7d26f
TT
30309This command is currently not valid for children of a dynamic varobj,
30310and will give an error when invoked on one.
30311
02142340
VP
30312For example, suppose @code{C} is a C@t{++} class, derived from class
30313@code{Base}, and that the @code{Base} class has a member called
30314@code{m_size}. Assume a variable @code{c} is has the type of
30315@code{C} and a variable object @code{C} was created for variable
30316@code{c}. Then, we'll get this output:
30317@smallexample
30318(gdb) -var-info-path-expression C.Base.public.m_size
30319^done,path_expr=((Base)c).m_size)
30320@end smallexample
922fbb7b 30321
a2c02241
NR
30322@subheading The @code{-var-show-attributes} Command
30323@findex -var-show-attributes
922fbb7b 30324
a2c02241 30325@subsubheading Synopsis
922fbb7b 30326
a2c02241
NR
30327@smallexample
30328 -var-show-attributes @var{name}
30329@end smallexample
922fbb7b 30330
a2c02241 30331List attributes of the specified variable object @var{name}:
922fbb7b
AC
30332
30333@smallexample
a2c02241 30334 status=@var{attr} [ ( ,@var{attr} )* ]
922fbb7b
AC
30335@end smallexample
30336
a2c02241
NR
30337@noindent
30338where @var{attr} is @code{@{ @{ editable | noneditable @} | TBD @}}.
30339
30340@subheading The @code{-var-evaluate-expression} Command
30341@findex -var-evaluate-expression
30342
30343@subsubheading Synopsis
30344
30345@smallexample
de051565 30346 -var-evaluate-expression [-f @var{format-spec}] @var{name}
a2c02241
NR
30347@end smallexample
30348
30349Evaluates the expression that is represented by the specified variable
de051565
MK
30350object and returns its value as a string. The format of the string
30351can be specified with the @samp{-f} option. The possible values of
30352this option are the same as for @code{-var-set-format}
30353(@pxref{-var-set-format}). If the @samp{-f} option is not specified,
30354the current display format will be used. The current display format
30355can be changed using the @code{-var-set-format} command.
a2c02241
NR
30356
30357@smallexample
30358 value=@var{value}
30359@end smallexample
30360
30361Note that one must invoke @code{-var-list-children} for a variable
30362before the value of a child variable can be evaluated.
30363
30364@subheading The @code{-var-assign} Command
30365@findex -var-assign
30366
30367@subsubheading Synopsis
30368
30369@smallexample
30370 -var-assign @var{name} @var{expression}
30371@end smallexample
30372
30373Assigns the value of @var{expression} to the variable object specified
30374by @var{name}. The object must be @samp{editable}. If the variable's
30375value is altered by the assign, the variable will show up in any
30376subsequent @code{-var-update} list.
30377
30378@subsubheading Example
922fbb7b
AC
30379
30380@smallexample
594fe323 30381(gdb)
a2c02241
NR
30382-var-assign var1 3
30383^done,value="3"
594fe323 30384(gdb)
a2c02241
NR
30385-var-update *
30386^done,changelist=[@{name="var1",in_scope="true",type_changed="false"@}]
594fe323 30387(gdb)
922fbb7b
AC
30388@end smallexample
30389
a2c02241
NR
30390@subheading The @code{-var-update} Command
30391@findex -var-update
30392
30393@subsubheading Synopsis
30394
30395@smallexample
30396 -var-update [@var{print-values}] @{@var{name} | "*"@}
30397@end smallexample
30398
c8b2f53c
VP
30399Reevaluate the expressions corresponding to the variable object
30400@var{name} and all its direct and indirect children, and return the
36ece8b3
NR
30401list of variable objects whose values have changed; @var{name} must
30402be a root variable object. Here, ``changed'' means that the result of
30403@code{-var-evaluate-expression} before and after the
30404@code{-var-update} is different. If @samp{*} is used as the variable
9f708cb2
VP
30405object names, all existing variable objects are updated, except
30406for frozen ones (@pxref{-var-set-frozen}). The option
36ece8b3 30407@var{print-values} determines whether both names and values, or just
de051565 30408names are printed. The possible values of this option are the same
36ece8b3
NR
30409as for @code{-var-list-children} (@pxref{-var-list-children}). It is
30410recommended to use the @samp{--all-values} option, to reduce the
30411number of MI commands needed on each program stop.
c8b2f53c 30412
c3b108f7
VP
30413With the @samp{*} parameter, if a variable object is bound to a
30414currently running thread, it will not be updated, without any
30415diagnostic.
a2c02241 30416
0cc7d26f
TT
30417If @code{-var-set-update-range} was previously used on a varobj, then
30418only the selected range of children will be reported.
922fbb7b 30419
0cc7d26f
TT
30420@code{-var-update} reports all the changed varobjs in a tuple named
30421@samp{changelist}.
30422
30423Each item in the change list is itself a tuple holding:
30424
30425@table @samp
30426@item name
30427The name of the varobj.
30428
30429@item value
30430If values were requested for this update, then this field will be
30431present and will hold the value of the varobj.
922fbb7b 30432
0cc7d26f 30433@item in_scope
9f708cb2 30434@anchor{-var-update}
0cc7d26f 30435This field is a string which may take one of three values:
36ece8b3
NR
30436
30437@table @code
30438@item "true"
30439The variable object's current value is valid.
30440
30441@item "false"
30442The variable object does not currently hold a valid value but it may
30443hold one in the future if its associated expression comes back into
30444scope.
30445
30446@item "invalid"
30447The variable object no longer holds a valid value.
30448This can occur when the executable file being debugged has changed,
30449either through recompilation or by using the @value{GDBN} @code{file}
30450command. The front end should normally choose to delete these variable
30451objects.
30452@end table
30453
30454In the future new values may be added to this list so the front should
30455be prepared for this possibility. @xref{GDB/MI Development and Front Ends, ,@sc{GDB/MI} Development and Front Ends}.
30456
0cc7d26f
TT
30457@item type_changed
30458This is only present if the varobj is still valid. If the type
30459changed, then this will be the string @samp{true}; otherwise it will
30460be @samp{false}.
30461
7191c139
JB
30462When a varobj's type changes, its children are also likely to have
30463become incorrect. Therefore, the varobj's children are automatically
30464deleted when this attribute is @samp{true}. Also, the varobj's update
30465range, when set using the @code{-var-set-update-range} command, is
30466unset.
30467
0cc7d26f
TT
30468@item new_type
30469If the varobj's type changed, then this field will be present and will
30470hold the new type.
30471
30472@item new_num_children
30473For a dynamic varobj, if the number of children changed, or if the
30474type changed, this will be the new number of children.
30475
30476The @samp{numchild} field in other varobj responses is generally not
30477valid for a dynamic varobj -- it will show the number of children that
30478@value{GDBN} knows about, but because dynamic varobjs lazily
30479instantiate their children, this will not reflect the number of
30480children which may be available.
30481
30482The @samp{new_num_children} attribute only reports changes to the
30483number of children known by @value{GDBN}. This is the only way to
30484detect whether an update has removed children (which necessarily can
30485only happen at the end of the update range).
30486
30487@item displayhint
30488The display hint, if any.
30489
30490@item has_more
30491This is an integer value, which will be 1 if there are more children
30492available outside the varobj's update range.
30493
30494@item dynamic
30495This attribute will be present and have the value @samp{1} if the
30496varobj is a dynamic varobj. If the varobj is not a dynamic varobj,
30497then this attribute will not be present.
30498
30499@item new_children
30500If new children were added to a dynamic varobj within the selected
30501update range (as set by @code{-var-set-update-range}), then they will
30502be listed in this attribute.
30503@end table
30504
30505@subsubheading Example
30506
30507@smallexample
30508(gdb)
30509-var-assign var1 3
30510^done,value="3"
30511(gdb)
30512-var-update --all-values var1
30513^done,changelist=[@{name="var1",value="3",in_scope="true",
30514type_changed="false"@}]
30515(gdb)
30516@end smallexample
30517
25d5ea92
VP
30518@subheading The @code{-var-set-frozen} Command
30519@findex -var-set-frozen
9f708cb2 30520@anchor{-var-set-frozen}
25d5ea92
VP
30521
30522@subsubheading Synopsis
30523
30524@smallexample
9f708cb2 30525 -var-set-frozen @var{name} @var{flag}
25d5ea92
VP
30526@end smallexample
30527
9f708cb2 30528Set the frozenness flag on the variable object @var{name}. The
25d5ea92 30529@var{flag} parameter should be either @samp{1} to make the variable
9f708cb2 30530frozen or @samp{0} to make it unfrozen. If a variable object is
25d5ea92 30531frozen, then neither itself, nor any of its children, are
9f708cb2 30532implicitly updated by @code{-var-update} of
25d5ea92
VP
30533a parent variable or by @code{-var-update *}. Only
30534@code{-var-update} of the variable itself will update its value and
30535values of its children. After a variable object is unfrozen, it is
30536implicitly updated by all subsequent @code{-var-update} operations.
30537Unfreezing a variable does not update it, only subsequent
30538@code{-var-update} does.
30539
30540@subsubheading Example
30541
30542@smallexample
30543(gdb)
30544-var-set-frozen V 1
30545^done
30546(gdb)
30547@end smallexample
30548
0cc7d26f
TT
30549@subheading The @code{-var-set-update-range} command
30550@findex -var-set-update-range
30551@anchor{-var-set-update-range}
30552
30553@subsubheading Synopsis
30554
30555@smallexample
30556 -var-set-update-range @var{name} @var{from} @var{to}
30557@end smallexample
30558
30559Set the range of children to be returned by future invocations of
30560@code{-var-update}.
30561
30562@var{from} and @var{to} indicate the range of children to report. If
30563@var{from} or @var{to} is less than zero, the range is reset and all
30564children will be reported. Otherwise, children starting at @var{from}
30565(zero-based) and up to and excluding @var{to} will be reported.
30566
30567@subsubheading Example
30568
30569@smallexample
30570(gdb)
30571-var-set-update-range V 1 2
30572^done
30573@end smallexample
30574
b6313243
TT
30575@subheading The @code{-var-set-visualizer} command
30576@findex -var-set-visualizer
30577@anchor{-var-set-visualizer}
30578
30579@subsubheading Synopsis
30580
30581@smallexample
30582 -var-set-visualizer @var{name} @var{visualizer}
30583@end smallexample
30584
30585Set a visualizer for the variable object @var{name}.
30586
30587@var{visualizer} is the visualizer to use. The special value
30588@samp{None} means to disable any visualizer in use.
30589
30590If not @samp{None}, @var{visualizer} must be a Python expression.
30591This expression must evaluate to a callable object which accepts a
30592single argument. @value{GDBN} will call this object with the value of
30593the varobj @var{name} as an argument (this is done so that the same
30594Python pretty-printing code can be used for both the CLI and MI).
30595When called, this object must return an object which conforms to the
4c374409 30596pretty-printing interface (@pxref{Pretty Printing API}).
b6313243
TT
30597
30598The pre-defined function @code{gdb.default_visualizer} may be used to
30599select a visualizer by following the built-in process
30600(@pxref{Selecting Pretty-Printers}). This is done automatically when
30601a varobj is created, and so ordinarily is not needed.
30602
30603This feature is only available if Python support is enabled. The MI
30604command @code{-list-features} (@pxref{GDB/MI Miscellaneous Commands})
30605can be used to check this.
30606
30607@subsubheading Example
30608
30609Resetting the visualizer:
30610
30611@smallexample
30612(gdb)
30613-var-set-visualizer V None
30614^done
30615@end smallexample
30616
30617Reselecting the default (type-based) visualizer:
30618
30619@smallexample
30620(gdb)
30621-var-set-visualizer V gdb.default_visualizer
30622^done
30623@end smallexample
30624
30625Suppose @code{SomeClass} is a visualizer class. A lambda expression
30626can be used to instantiate this class for a varobj:
30627
30628@smallexample
30629(gdb)
30630-var-set-visualizer V "lambda val: SomeClass()"
30631^done
30632@end smallexample
25d5ea92 30633
a2c02241
NR
30634@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30635@node GDB/MI Data Manipulation
30636@section @sc{gdb/mi} Data Manipulation
922fbb7b 30637
a2c02241
NR
30638@cindex data manipulation, in @sc{gdb/mi}
30639@cindex @sc{gdb/mi}, data manipulation
30640This section describes the @sc{gdb/mi} commands that manipulate data:
30641examine memory and registers, evaluate expressions, etc.
30642
30643@c REMOVED FROM THE INTERFACE.
30644@c @subheading -data-assign
30645@c Change the value of a program variable. Plenty of side effects.
79a6e687 30646@c @subsubheading GDB Command
a2c02241
NR
30647@c set variable
30648@c @subsubheading Example
30649@c N.A.
30650
30651@subheading The @code{-data-disassemble} Command
30652@findex -data-disassemble
922fbb7b
AC
30653
30654@subsubheading Synopsis
30655
30656@smallexample
a2c02241
NR
30657 -data-disassemble
30658 [ -s @var{start-addr} -e @var{end-addr} ]
30659 | [ -f @var{filename} -l @var{linenum} [ -n @var{lines} ] ]
30660 -- @var{mode}
922fbb7b
AC
30661@end smallexample
30662
a2c02241
NR
30663@noindent
30664Where:
30665
30666@table @samp
30667@item @var{start-addr}
30668is the beginning address (or @code{$pc})
30669@item @var{end-addr}
30670is the end address
30671@item @var{filename}
30672is the name of the file to disassemble
30673@item @var{linenum}
30674is the line number to disassemble around
30675@item @var{lines}
d3e8051b 30676is the number of disassembly lines to be produced. If it is -1,
a2c02241
NR
30677the whole function will be disassembled, in case no @var{end-addr} is
30678specified. If @var{end-addr} is specified as a non-zero value, and
30679@var{lines} is lower than the number of disassembly lines between
30680@var{start-addr} and @var{end-addr}, only @var{lines} lines are
30681displayed; if @var{lines} is higher than the number of lines between
30682@var{start-addr} and @var{end-addr}, only the lines up to @var{end-addr}
30683are displayed.
30684@item @var{mode}
b716877b
AB
30685is either 0 (meaning only disassembly), 1 (meaning mixed source and
30686disassembly), 2 (meaning disassembly with raw opcodes), or 3 (meaning
30687mixed source and disassembly with raw opcodes).
a2c02241
NR
30688@end table
30689
30690@subsubheading Result
30691
30692The output for each instruction is composed of four fields:
30693
30694@itemize @bullet
30695@item Address
30696@item Func-name
30697@item Offset
30698@item Instruction
30699@end itemize
30700
30701Note that whatever included in the instruction field, is not manipulated
d3e8051b 30702directly by @sc{gdb/mi}, i.e., it is not possible to adjust its format.
922fbb7b
AC
30703
30704@subsubheading @value{GDBN} Command
30705
a2c02241 30706There's no direct mapping from this command to the CLI.
922fbb7b
AC
30707
30708@subsubheading Example
30709
a2c02241
NR
30710Disassemble from the current value of @code{$pc} to @code{$pc + 20}:
30711
922fbb7b 30712@smallexample
594fe323 30713(gdb)
a2c02241
NR
30714-data-disassemble -s $pc -e "$pc + 20" -- 0
30715^done,
30716asm_insns=[
30717@{address="0x000107c0",func-name="main",offset="4",
30718inst="mov 2, %o0"@},
30719@{address="0x000107c4",func-name="main",offset="8",
30720inst="sethi %hi(0x11800), %o2"@},
30721@{address="0x000107c8",func-name="main",offset="12",
30722inst="or %o2, 0x140, %o1\t! 0x11940 <_lib_version+8>"@},
30723@{address="0x000107cc",func-name="main",offset="16",
30724inst="sethi %hi(0x11800), %o2"@},
30725@{address="0x000107d0",func-name="main",offset="20",
30726inst="or %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
594fe323 30727(gdb)
a2c02241
NR
30728@end smallexample
30729
30730Disassemble the whole @code{main} function. Line 32 is part of
30731@code{main}.
30732
30733@smallexample
30734-data-disassemble -f basics.c -l 32 -- 0
30735^done,asm_insns=[
30736@{address="0x000107bc",func-name="main",offset="0",
30737inst="save %sp, -112, %sp"@},
30738@{address="0x000107c0",func-name="main",offset="4",
30739inst="mov 2, %o0"@},
30740@{address="0x000107c4",func-name="main",offset="8",
30741inst="sethi %hi(0x11800), %o2"@},
30742[@dots{}]
30743@{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
30744@{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
594fe323 30745(gdb)
922fbb7b
AC
30746@end smallexample
30747
a2c02241 30748Disassemble 3 instructions from the start of @code{main}:
922fbb7b 30749
a2c02241 30750@smallexample
594fe323 30751(gdb)
a2c02241
NR
30752-data-disassemble -f basics.c -l 32 -n 3 -- 0
30753^done,asm_insns=[
30754@{address="0x000107bc",func-name="main",offset="0",
30755inst="save %sp, -112, %sp"@},
30756@{address="0x000107c0",func-name="main",offset="4",
30757inst="mov 2, %o0"@},
30758@{address="0x000107c4",func-name="main",offset="8",
30759inst="sethi %hi(0x11800), %o2"@}]
594fe323 30760(gdb)
a2c02241
NR
30761@end smallexample
30762
30763Disassemble 3 instructions from the start of @code{main} in mixed mode:
30764
30765@smallexample
594fe323 30766(gdb)
a2c02241
NR
30767-data-disassemble -f basics.c -l 32 -n 3 -- 1
30768^done,asm_insns=[
30769src_and_asm_line=@{line="31",
30770file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
30771 testsuite/gdb.mi/basics.c",line_asm_insn=[
30772@{address="0x000107bc",func-name="main",offset="0",
30773inst="save %sp, -112, %sp"@}]@},
30774src_and_asm_line=@{line="32",
30775file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
30776 testsuite/gdb.mi/basics.c",line_asm_insn=[
30777@{address="0x000107c0",func-name="main",offset="4",
30778inst="mov 2, %o0"@},
30779@{address="0x000107c4",func-name="main",offset="8",
30780inst="sethi %hi(0x11800), %o2"@}]@}]
594fe323 30781(gdb)
a2c02241
NR
30782@end smallexample
30783
30784
30785@subheading The @code{-data-evaluate-expression} Command
30786@findex -data-evaluate-expression
922fbb7b
AC
30787
30788@subsubheading Synopsis
30789
30790@smallexample
a2c02241 30791 -data-evaluate-expression @var{expr}
922fbb7b
AC
30792@end smallexample
30793
a2c02241
NR
30794Evaluate @var{expr} as an expression. The expression could contain an
30795inferior function call. The function call will execute synchronously.
30796If the expression contains spaces, it must be enclosed in double quotes.
922fbb7b
AC
30797
30798@subsubheading @value{GDBN} Command
30799
a2c02241
NR
30800The corresponding @value{GDBN} commands are @samp{print}, @samp{output}, and
30801@samp{call}. In @code{gdbtk} only, there's a corresponding
30802@samp{gdb_eval} command.
922fbb7b
AC
30803
30804@subsubheading Example
30805
a2c02241
NR
30806In the following example, the numbers that precede the commands are the
30807@dfn{tokens} described in @ref{GDB/MI Command Syntax, ,@sc{gdb/mi}
30808Command Syntax}. Notice how @sc{gdb/mi} returns the same tokens in its
30809output.
30810
922fbb7b 30811@smallexample
a2c02241
NR
30812211-data-evaluate-expression A
30813211^done,value="1"
594fe323 30814(gdb)
a2c02241
NR
30815311-data-evaluate-expression &A
30816311^done,value="0xefffeb7c"
594fe323 30817(gdb)
a2c02241
NR
30818411-data-evaluate-expression A+3
30819411^done,value="4"
594fe323 30820(gdb)
a2c02241
NR
30821511-data-evaluate-expression "A + 3"
30822511^done,value="4"
594fe323 30823(gdb)
a2c02241 30824@end smallexample
922fbb7b
AC
30825
30826
a2c02241
NR
30827@subheading The @code{-data-list-changed-registers} Command
30828@findex -data-list-changed-registers
922fbb7b
AC
30829
30830@subsubheading Synopsis
30831
30832@smallexample
a2c02241 30833 -data-list-changed-registers
922fbb7b
AC
30834@end smallexample
30835
a2c02241 30836Display a list of the registers that have changed.
922fbb7b
AC
30837
30838@subsubheading @value{GDBN} Command
30839
a2c02241
NR
30840@value{GDBN} doesn't have a direct analog for this command; @code{gdbtk}
30841has the corresponding command @samp{gdb_changed_register_list}.
922fbb7b
AC
30842
30843@subsubheading Example
922fbb7b 30844
a2c02241 30845On a PPC MBX board:
922fbb7b
AC
30846
30847@smallexample
594fe323 30848(gdb)
a2c02241
NR
30849-exec-continue
30850^running
922fbb7b 30851
594fe323 30852(gdb)
a47ec5fe
AR
30853*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",frame=@{
30854func="main",args=[],file="try.c",fullname="/home/foo/bar/try.c",
30855line="5"@}
594fe323 30856(gdb)
a2c02241
NR
30857-data-list-changed-registers
30858^done,changed-registers=["0","1","2","4","5","6","7","8","9",
30859"10","11","13","14","15","16","17","18","19","20","21","22","23",
30860"24","25","26","27","28","30","31","64","65","66","67","69"]
594fe323 30861(gdb)
a2c02241 30862@end smallexample
922fbb7b
AC
30863
30864
a2c02241
NR
30865@subheading The @code{-data-list-register-names} Command
30866@findex -data-list-register-names
922fbb7b
AC
30867
30868@subsubheading Synopsis
30869
30870@smallexample
a2c02241 30871 -data-list-register-names [ ( @var{regno} )+ ]
922fbb7b
AC
30872@end smallexample
30873
a2c02241
NR
30874Show a list of register names for the current target. If no arguments
30875are given, it shows a list of the names of all the registers. If
30876integer numbers are given as arguments, it will print a list of the
30877names of the registers corresponding to the arguments. To ensure
30878consistency between a register name and its number, the output list may
30879include empty register names.
922fbb7b
AC
30880
30881@subsubheading @value{GDBN} Command
30882
a2c02241
NR
30883@value{GDBN} does not have a command which corresponds to
30884@samp{-data-list-register-names}. In @code{gdbtk} there is a
30885corresponding command @samp{gdb_regnames}.
922fbb7b
AC
30886
30887@subsubheading Example
922fbb7b 30888
a2c02241
NR
30889For the PPC MBX board:
30890@smallexample
594fe323 30891(gdb)
a2c02241
NR
30892-data-list-register-names
30893^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7",
30894"r8","r9","r10","r11","r12","r13","r14","r15","r16","r17","r18",
30895"r19","r20","r21","r22","r23","r24","r25","r26","r27","r28","r29",
30896"r30","r31","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9",
30897"f10","f11","f12","f13","f14","f15","f16","f17","f18","f19","f20",
30898"f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31",
30899"", "pc","ps","cr","lr","ctr","xer"]
594fe323 30900(gdb)
a2c02241
NR
30901-data-list-register-names 1 2 3
30902^done,register-names=["r1","r2","r3"]
594fe323 30903(gdb)
a2c02241 30904@end smallexample
922fbb7b 30905
a2c02241
NR
30906@subheading The @code{-data-list-register-values} Command
30907@findex -data-list-register-values
922fbb7b
AC
30908
30909@subsubheading Synopsis
30910
30911@smallexample
a2c02241 30912 -data-list-register-values @var{fmt} [ ( @var{regno} )*]
922fbb7b
AC
30913@end smallexample
30914
a2c02241
NR
30915Display the registers' contents. @var{fmt} is the format according to
30916which the registers' contents are to be returned, followed by an optional
30917list of numbers specifying the registers to display. A missing list of
30918numbers indicates that the contents of all the registers must be returned.
30919
30920Allowed formats for @var{fmt} are:
30921
30922@table @code
30923@item x
30924Hexadecimal
30925@item o
30926Octal
30927@item t
30928Binary
30929@item d
30930Decimal
30931@item r
30932Raw
30933@item N
30934Natural
30935@end table
922fbb7b
AC
30936
30937@subsubheading @value{GDBN} Command
30938
a2c02241
NR
30939The corresponding @value{GDBN} commands are @samp{info reg}, @samp{info
30940all-reg}, and (in @code{gdbtk}) @samp{gdb_fetch_registers}.
922fbb7b
AC
30941
30942@subsubheading Example
922fbb7b 30943
a2c02241
NR
30944For a PPC MBX board (note: line breaks are for readability only, they
30945don't appear in the actual output):
30946
30947@smallexample
594fe323 30948(gdb)
a2c02241
NR
30949-data-list-register-values r 64 65
30950^done,register-values=[@{number="64",value="0xfe00a300"@},
30951@{number="65",value="0x00029002"@}]
594fe323 30952(gdb)
a2c02241
NR
30953-data-list-register-values x
30954^done,register-values=[@{number="0",value="0xfe0043c8"@},
30955@{number="1",value="0x3fff88"@},@{number="2",value="0xfffffffe"@},
30956@{number="3",value="0x0"@},@{number="4",value="0xa"@},
30957@{number="5",value="0x3fff68"@},@{number="6",value="0x3fff58"@},
30958@{number="7",value="0xfe011e98"@},@{number="8",value="0x2"@},
30959@{number="9",value="0xfa202820"@},@{number="10",value="0xfa202808"@},
30960@{number="11",value="0x1"@},@{number="12",value="0x0"@},
30961@{number="13",value="0x4544"@},@{number="14",value="0xffdfffff"@},
30962@{number="15",value="0xffffffff"@},@{number="16",value="0xfffffeff"@},
30963@{number="17",value="0xefffffed"@},@{number="18",value="0xfffffffe"@},
30964@{number="19",value="0xffffffff"@},@{number="20",value="0xffffffff"@},
30965@{number="21",value="0xffffffff"@},@{number="22",value="0xfffffff7"@},
30966@{number="23",value="0xffffffff"@},@{number="24",value="0xffffffff"@},
30967@{number="25",value="0xffffffff"@},@{number="26",value="0xfffffffb"@},
30968@{number="27",value="0xffffffff"@},@{number="28",value="0xf7bfffff"@},
30969@{number="29",value="0x0"@},@{number="30",value="0xfe010000"@},
30970@{number="31",value="0x0"@},@{number="32",value="0x0"@},
30971@{number="33",value="0x0"@},@{number="34",value="0x0"@},
30972@{number="35",value="0x0"@},@{number="36",value="0x0"@},
30973@{number="37",value="0x0"@},@{number="38",value="0x0"@},
30974@{number="39",value="0x0"@},@{number="40",value="0x0"@},
30975@{number="41",value="0x0"@},@{number="42",value="0x0"@},
30976@{number="43",value="0x0"@},@{number="44",value="0x0"@},
30977@{number="45",value="0x0"@},@{number="46",value="0x0"@},
30978@{number="47",value="0x0"@},@{number="48",value="0x0"@},
30979@{number="49",value="0x0"@},@{number="50",value="0x0"@},
30980@{number="51",value="0x0"@},@{number="52",value="0x0"@},
30981@{number="53",value="0x0"@},@{number="54",value="0x0"@},
30982@{number="55",value="0x0"@},@{number="56",value="0x0"@},
30983@{number="57",value="0x0"@},@{number="58",value="0x0"@},
30984@{number="59",value="0x0"@},@{number="60",value="0x0"@},
30985@{number="61",value="0x0"@},@{number="62",value="0x0"@},
30986@{number="63",value="0x0"@},@{number="64",value="0xfe00a300"@},
30987@{number="65",value="0x29002"@},@{number="66",value="0x202f04b5"@},
30988@{number="67",value="0xfe0043b0"@},@{number="68",value="0xfe00b3e4"@},
30989@{number="69",value="0x20002b03"@}]
594fe323 30990(gdb)
a2c02241 30991@end smallexample
922fbb7b 30992
a2c02241
NR
30993
30994@subheading The @code{-data-read-memory} Command
30995@findex -data-read-memory
922fbb7b 30996
8dedea02
VP
30997This command is deprecated, use @code{-data-read-memory-bytes} instead.
30998
922fbb7b
AC
30999@subsubheading Synopsis
31000
31001@smallexample
a2c02241
NR
31002 -data-read-memory [ -o @var{byte-offset} ]
31003 @var{address} @var{word-format} @var{word-size}
31004 @var{nr-rows} @var{nr-cols} [ @var{aschar} ]
922fbb7b
AC
31005@end smallexample
31006
a2c02241
NR
31007@noindent
31008where:
922fbb7b 31009
a2c02241
NR
31010@table @samp
31011@item @var{address}
31012An expression specifying the address of the first memory word to be
31013read. Complex expressions containing embedded white space should be
31014quoted using the C convention.
922fbb7b 31015
a2c02241
NR
31016@item @var{word-format}
31017The format to be used to print the memory words. The notation is the
31018same as for @value{GDBN}'s @code{print} command (@pxref{Output Formats,
79a6e687 31019,Output Formats}).
922fbb7b 31020
a2c02241
NR
31021@item @var{word-size}
31022The size of each memory word in bytes.
922fbb7b 31023
a2c02241
NR
31024@item @var{nr-rows}
31025The number of rows in the output table.
922fbb7b 31026
a2c02241
NR
31027@item @var{nr-cols}
31028The number of columns in the output table.
922fbb7b 31029
a2c02241
NR
31030@item @var{aschar}
31031If present, indicates that each row should include an @sc{ascii} dump. The
31032value of @var{aschar} is used as a padding character when a byte is not a
31033member of the printable @sc{ascii} character set (printable @sc{ascii}
31034characters are those whose code is between 32 and 126, inclusively).
922fbb7b 31035
a2c02241
NR
31036@item @var{byte-offset}
31037An offset to add to the @var{address} before fetching memory.
31038@end table
922fbb7b 31039
a2c02241
NR
31040This command displays memory contents as a table of @var{nr-rows} by
31041@var{nr-cols} words, each word being @var{word-size} bytes. In total,
31042@code{@var{nr-rows} * @var{nr-cols} * @var{word-size}} bytes are read
31043(returned as @samp{total-bytes}). Should less than the requested number
31044of bytes be returned by the target, the missing words are identified
31045using @samp{N/A}. The number of bytes read from the target is returned
31046in @samp{nr-bytes} and the starting address used to read memory in
31047@samp{addr}.
31048
31049The address of the next/previous row or page is available in
31050@samp{next-row} and @samp{prev-row}, @samp{next-page} and
31051@samp{prev-page}.
922fbb7b
AC
31052
31053@subsubheading @value{GDBN} Command
31054
a2c02241
NR
31055The corresponding @value{GDBN} command is @samp{x}. @code{gdbtk} has
31056@samp{gdb_get_mem} memory read command.
922fbb7b
AC
31057
31058@subsubheading Example
32e7087d 31059
a2c02241
NR
31060Read six bytes of memory starting at @code{bytes+6} but then offset by
31061@code{-6} bytes. Format as three rows of two columns. One byte per
31062word. Display each word in hex.
32e7087d
JB
31063
31064@smallexample
594fe323 31065(gdb)
a2c02241
NR
310669-data-read-memory -o -6 -- bytes+6 x 1 3 2
310679^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
31068next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
31069prev-page="0x0000138a",memory=[
31070@{addr="0x00001390",data=["0x00","0x01"]@},
31071@{addr="0x00001392",data=["0x02","0x03"]@},
31072@{addr="0x00001394",data=["0x04","0x05"]@}]
594fe323 31073(gdb)
32e7087d
JB
31074@end smallexample
31075
a2c02241
NR
31076Read two bytes of memory starting at address @code{shorts + 64} and
31077display as a single word formatted in decimal.
32e7087d 31078
32e7087d 31079@smallexample
594fe323 31080(gdb)
a2c02241
NR
310815-data-read-memory shorts+64 d 2 1 1
310825^done,addr="0x00001510",nr-bytes="2",total-bytes="2",
31083next-row="0x00001512",prev-row="0x0000150e",
31084next-page="0x00001512",prev-page="0x0000150e",memory=[
31085@{addr="0x00001510",data=["128"]@}]
594fe323 31086(gdb)
32e7087d
JB
31087@end smallexample
31088
a2c02241
NR
31089Read thirty two bytes of memory starting at @code{bytes+16} and format
31090as eight rows of four columns. Include a string encoding with @samp{x}
31091used as the non-printable character.
922fbb7b
AC
31092
31093@smallexample
594fe323 31094(gdb)
a2c02241
NR
310954-data-read-memory bytes+16 x 1 8 4 x
310964^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
31097next-row="0x000013c0",prev-row="0x0000139c",
31098next-page="0x000013c0",prev-page="0x00001380",memory=[
31099@{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"@},
31100@{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"@},
31101@{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"@},
31102@{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"@},
31103@{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !\"#"@},
31104@{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&'"@},
31105@{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"@},
31106@{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"@}]
594fe323 31107(gdb)
922fbb7b
AC
31108@end smallexample
31109
8dedea02
VP
31110@subheading The @code{-data-read-memory-bytes} Command
31111@findex -data-read-memory-bytes
31112
31113@subsubheading Synopsis
31114
31115@smallexample
31116 -data-read-memory-bytes [ -o @var{byte-offset} ]
31117 @var{address} @var{count}
31118@end smallexample
31119
31120@noindent
31121where:
31122
31123@table @samp
31124@item @var{address}
31125An expression specifying the address of the first memory word to be
31126read. Complex expressions containing embedded white space should be
31127quoted using the C convention.
31128
31129@item @var{count}
31130The number of bytes to read. This should be an integer literal.
31131
31132@item @var{byte-offset}
31133The offsets in bytes relative to @var{address} at which to start
31134reading. This should be an integer literal. This option is provided
31135so that a frontend is not required to first evaluate address and then
31136perform address arithmetics itself.
31137
31138@end table
31139
31140This command attempts to read all accessible memory regions in the
31141specified range. First, all regions marked as unreadable in the memory
31142map (if one is defined) will be skipped. @xref{Memory Region
31143Attributes}. Second, @value{GDBN} will attempt to read the remaining
31144regions. For each one, if reading full region results in an errors,
31145@value{GDBN} will try to read a subset of the region.
31146
31147In general, every single byte in the region may be readable or not,
31148and the only way to read every readable byte is to try a read at
31149every address, which is not practical. Therefore, @value{GDBN} will
31150attempt to read all accessible bytes at either beginning or the end
31151of the region, using a binary division scheme. This heuristic works
31152well for reading accross a memory map boundary. Note that if a region
31153has a readable range that is neither at the beginning or the end,
31154@value{GDBN} will not read it.
31155
31156The result record (@pxref{GDB/MI Result Records}) that is output of
31157the command includes a field named @samp{memory} whose content is a
31158list of tuples. Each tuple represent a successfully read memory block
31159and has the following fields:
31160
31161@table @code
31162@item begin
31163The start address of the memory block, as hexadecimal literal.
31164
31165@item end
31166The end address of the memory block, as hexadecimal literal.
31167
31168@item offset
31169The offset of the memory block, as hexadecimal literal, relative to
31170the start address passed to @code{-data-read-memory-bytes}.
31171
31172@item contents
31173The contents of the memory block, in hex.
31174
31175@end table
31176
31177
31178
31179@subsubheading @value{GDBN} Command
31180
31181The corresponding @value{GDBN} command is @samp{x}.
31182
31183@subsubheading Example
31184
31185@smallexample
31186(gdb)
31187-data-read-memory-bytes &a 10
31188^done,memory=[@{begin="0xbffff154",offset="0x00000000",
31189 end="0xbffff15e",
31190 contents="01000000020000000300"@}]
31191(gdb)
31192@end smallexample
31193
31194
31195@subheading The @code{-data-write-memory-bytes} Command
31196@findex -data-write-memory-bytes
31197
31198@subsubheading Synopsis
31199
31200@smallexample
31201 -data-write-memory-bytes @var{address} @var{contents}
31202@end smallexample
31203
31204@noindent
31205where:
31206
31207@table @samp
31208@item @var{address}
31209An expression specifying the address of the first memory word to be
31210read. Complex expressions containing embedded white space should be
31211quoted using the C convention.
31212
31213@item @var{contents}
31214The hex-encoded bytes to write.
31215
31216@end table
31217
31218@subsubheading @value{GDBN} Command
31219
31220There's no corresponding @value{GDBN} command.
31221
31222@subsubheading Example
31223
31224@smallexample
31225(gdb)
31226-data-write-memory-bytes &a "aabbccdd"
31227^done
31228(gdb)
31229@end smallexample
31230
31231
a2c02241
NR
31232@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31233@node GDB/MI Tracepoint Commands
31234@section @sc{gdb/mi} Tracepoint Commands
922fbb7b 31235
18148017
VP
31236The commands defined in this section implement MI support for
31237tracepoints. For detailed introduction, see @ref{Tracepoints}.
31238
31239@subheading The @code{-trace-find} Command
31240@findex -trace-find
31241
31242@subsubheading Synopsis
31243
31244@smallexample
31245 -trace-find @var{mode} [@var{parameters}@dots{}]
31246@end smallexample
31247
31248Find a trace frame using criteria defined by @var{mode} and
31249@var{parameters}. The following table lists permissible
31250modes and their parameters. For details of operation, see @ref{tfind}.
31251
31252@table @samp
31253
31254@item none
31255No parameters are required. Stops examining trace frames.
31256
31257@item frame-number
31258An integer is required as parameter. Selects tracepoint frame with
31259that index.
31260
31261@item tracepoint-number
31262An integer is required as parameter. Finds next
31263trace frame that corresponds to tracepoint with the specified number.
31264
31265@item pc
31266An address is required as parameter. Finds
31267next trace frame that corresponds to any tracepoint at the specified
31268address.
31269
31270@item pc-inside-range
31271Two addresses are required as parameters. Finds next trace
31272frame that corresponds to a tracepoint at an address inside the
31273specified range. Both bounds are considered to be inside the range.
31274
31275@item pc-outside-range
31276Two addresses are required as parameters. Finds
31277next trace frame that corresponds to a tracepoint at an address outside
31278the specified range. Both bounds are considered to be inside the range.
31279
31280@item line
31281Line specification is required as parameter. @xref{Specify Location}.
31282Finds next trace frame that corresponds to a tracepoint at
31283the specified location.
31284
31285@end table
31286
31287If @samp{none} was passed as @var{mode}, the response does not
31288have fields. Otherwise, the response may have the following fields:
31289
31290@table @samp
31291@item found
31292This field has either @samp{0} or @samp{1} as the value, depending
31293on whether a matching tracepoint was found.
31294
31295@item traceframe
31296The index of the found traceframe. This field is present iff
31297the @samp{found} field has value of @samp{1}.
31298
31299@item tracepoint
31300The index of the found tracepoint. This field is present iff
31301the @samp{found} field has value of @samp{1}.
31302
31303@item frame
31304The information about the frame corresponding to the found trace
31305frame. This field is present only if a trace frame was found.
cd64ee31 31306@xref{GDB/MI Frame Information}, for description of this field.
18148017
VP
31307
31308@end table
31309
7d13fe92
SS
31310@subsubheading @value{GDBN} Command
31311
31312The corresponding @value{GDBN} command is @samp{tfind}.
31313
18148017
VP
31314@subheading -trace-define-variable
31315@findex -trace-define-variable
31316
31317@subsubheading Synopsis
31318
31319@smallexample
31320 -trace-define-variable @var{name} [ @var{value} ]
31321@end smallexample
31322
31323Create trace variable @var{name} if it does not exist. If
31324@var{value} is specified, sets the initial value of the specified
31325trace variable to that value. Note that the @var{name} should start
31326with the @samp{$} character.
31327
7d13fe92
SS
31328@subsubheading @value{GDBN} Command
31329
31330The corresponding @value{GDBN} command is @samp{tvariable}.
31331
18148017
VP
31332@subheading -trace-list-variables
31333@findex -trace-list-variables
922fbb7b 31334
18148017 31335@subsubheading Synopsis
922fbb7b 31336
18148017
VP
31337@smallexample
31338 -trace-list-variables
31339@end smallexample
922fbb7b 31340
18148017
VP
31341Return a table of all defined trace variables. Each element of the
31342table has the following fields:
922fbb7b 31343
18148017
VP
31344@table @samp
31345@item name
31346The name of the trace variable. This field is always present.
922fbb7b 31347
18148017
VP
31348@item initial
31349The initial value. This is a 64-bit signed integer. This
31350field is always present.
922fbb7b 31351
18148017
VP
31352@item current
31353The value the trace variable has at the moment. This is a 64-bit
31354signed integer. This field is absent iff current value is
31355not defined, for example if the trace was never run, or is
31356presently running.
922fbb7b 31357
18148017 31358@end table
922fbb7b 31359
7d13fe92
SS
31360@subsubheading @value{GDBN} Command
31361
31362The corresponding @value{GDBN} command is @samp{tvariables}.
31363
18148017 31364@subsubheading Example
922fbb7b 31365
18148017
VP
31366@smallexample
31367(gdb)
31368-trace-list-variables
31369^done,trace-variables=@{nr_rows="1",nr_cols="3",
31370hdr=[@{width="15",alignment="-1",col_name="name",colhdr="Name"@},
31371 @{width="11",alignment="-1",col_name="initial",colhdr="Initial"@},
31372 @{width="11",alignment="-1",col_name="current",colhdr="Current"@}],
31373body=[variable=@{name="$trace_timestamp",initial="0"@}
31374 variable=@{name="$foo",initial="10",current="15"@}]@}
31375(gdb)
31376@end smallexample
922fbb7b 31377
18148017
VP
31378@subheading -trace-save
31379@findex -trace-save
922fbb7b 31380
18148017
VP
31381@subsubheading Synopsis
31382
31383@smallexample
31384 -trace-save [-r ] @var{filename}
31385@end smallexample
31386
31387Saves the collected trace data to @var{filename}. Without the
31388@samp{-r} option, the data is downloaded from the target and saved
31389in a local file. With the @samp{-r} option the target is asked
31390to perform the save.
31391
7d13fe92
SS
31392@subsubheading @value{GDBN} Command
31393
31394The corresponding @value{GDBN} command is @samp{tsave}.
31395
18148017
VP
31396
31397@subheading -trace-start
31398@findex -trace-start
31399
31400@subsubheading Synopsis
31401
31402@smallexample
31403 -trace-start
31404@end smallexample
922fbb7b 31405
18148017
VP
31406Starts a tracing experiments. The result of this command does not
31407have any fields.
922fbb7b 31408
7d13fe92
SS
31409@subsubheading @value{GDBN} Command
31410
31411The corresponding @value{GDBN} command is @samp{tstart}.
31412
18148017
VP
31413@subheading -trace-status
31414@findex -trace-status
922fbb7b 31415
18148017
VP
31416@subsubheading Synopsis
31417
31418@smallexample
31419 -trace-status
31420@end smallexample
31421
a97153c7 31422Obtains the status of a tracing experiment. The result may include
18148017
VP
31423the following fields:
31424
31425@table @samp
31426
31427@item supported
31428May have a value of either @samp{0}, when no tracing operations are
31429supported, @samp{1}, when all tracing operations are supported, or
31430@samp{file} when examining trace file. In the latter case, examining
31431of trace frame is possible but new tracing experiement cannot be
31432started. This field is always present.
31433
31434@item running
31435May have a value of either @samp{0} or @samp{1} depending on whether
31436tracing experiement is in progress on target. This field is present
31437if @samp{supported} field is not @samp{0}.
31438
31439@item stop-reason
31440Report the reason why the tracing was stopped last time. This field
31441may be absent iff tracing was never stopped on target yet. The
31442value of @samp{request} means the tracing was stopped as result of
31443the @code{-trace-stop} command. The value of @samp{overflow} means
31444the tracing buffer is full. The value of @samp{disconnection} means
31445tracing was automatically stopped when @value{GDBN} has disconnected.
31446The value of @samp{passcount} means tracing was stopped when a
31447tracepoint was passed a maximal number of times for that tracepoint.
31448This field is present if @samp{supported} field is not @samp{0}.
31449
31450@item stopping-tracepoint
31451The number of tracepoint whose passcount as exceeded. This field is
31452present iff the @samp{stop-reason} field has the value of
31453@samp{passcount}.
31454
31455@item frames
87290684
SS
31456@itemx frames-created
31457The @samp{frames} field is a count of the total number of trace frames
31458in the trace buffer, while @samp{frames-created} is the total created
31459during the run, including ones that were discarded, such as when a
31460circular trace buffer filled up. Both fields are optional.
18148017
VP
31461
31462@item buffer-size
31463@itemx buffer-free
31464These fields tell the current size of the tracing buffer and the
87290684 31465remaining space. These fields are optional.
18148017 31466
a97153c7
PA
31467@item circular
31468The value of the circular trace buffer flag. @code{1} means that the
31469trace buffer is circular and old trace frames will be discarded if
31470necessary to make room, @code{0} means that the trace buffer is linear
31471and may fill up.
31472
31473@item disconnected
31474The value of the disconnected tracing flag. @code{1} means that
31475tracing will continue after @value{GDBN} disconnects, @code{0} means
31476that the trace run will stop.
31477
18148017
VP
31478@end table
31479
7d13fe92
SS
31480@subsubheading @value{GDBN} Command
31481
31482The corresponding @value{GDBN} command is @samp{tstatus}.
31483
18148017
VP
31484@subheading -trace-stop
31485@findex -trace-stop
31486
31487@subsubheading Synopsis
31488
31489@smallexample
31490 -trace-stop
31491@end smallexample
922fbb7b 31492
18148017
VP
31493Stops a tracing experiment. The result of this command has the same
31494fields as @code{-trace-status}, except that the @samp{supported} and
31495@samp{running} fields are not output.
922fbb7b 31496
7d13fe92
SS
31497@subsubheading @value{GDBN} Command
31498
31499The corresponding @value{GDBN} command is @samp{tstop}.
31500
922fbb7b 31501
a2c02241
NR
31502@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31503@node GDB/MI Symbol Query
31504@section @sc{gdb/mi} Symbol Query Commands
922fbb7b
AC
31505
31506
9901a55b 31507@ignore
a2c02241
NR
31508@subheading The @code{-symbol-info-address} Command
31509@findex -symbol-info-address
922fbb7b
AC
31510
31511@subsubheading Synopsis
31512
31513@smallexample
a2c02241 31514 -symbol-info-address @var{symbol}
922fbb7b
AC
31515@end smallexample
31516
a2c02241 31517Describe where @var{symbol} is stored.
922fbb7b
AC
31518
31519@subsubheading @value{GDBN} Command
31520
a2c02241 31521The corresponding @value{GDBN} command is @samp{info address}.
922fbb7b
AC
31522
31523@subsubheading Example
31524N.A.
31525
31526
a2c02241
NR
31527@subheading The @code{-symbol-info-file} Command
31528@findex -symbol-info-file
922fbb7b
AC
31529
31530@subsubheading Synopsis
31531
31532@smallexample
a2c02241 31533 -symbol-info-file
922fbb7b
AC
31534@end smallexample
31535
a2c02241 31536Show the file for the symbol.
922fbb7b 31537
a2c02241 31538@subsubheading @value{GDBN} Command
922fbb7b 31539
a2c02241
NR
31540There's no equivalent @value{GDBN} command. @code{gdbtk} has
31541@samp{gdb_find_file}.
922fbb7b
AC
31542
31543@subsubheading Example
31544N.A.
31545
31546
a2c02241
NR
31547@subheading The @code{-symbol-info-function} Command
31548@findex -symbol-info-function
922fbb7b
AC
31549
31550@subsubheading Synopsis
31551
31552@smallexample
a2c02241 31553 -symbol-info-function
922fbb7b
AC
31554@end smallexample
31555
a2c02241 31556Show which function the symbol lives in.
922fbb7b
AC
31557
31558@subsubheading @value{GDBN} Command
31559
a2c02241 31560@samp{gdb_get_function} in @code{gdbtk}.
922fbb7b
AC
31561
31562@subsubheading Example
31563N.A.
31564
31565
a2c02241
NR
31566@subheading The @code{-symbol-info-line} Command
31567@findex -symbol-info-line
922fbb7b
AC
31568
31569@subsubheading Synopsis
31570
31571@smallexample
a2c02241 31572 -symbol-info-line
922fbb7b
AC
31573@end smallexample
31574
a2c02241 31575Show the core addresses of the code for a source line.
922fbb7b 31576
a2c02241 31577@subsubheading @value{GDBN} Command
922fbb7b 31578
a2c02241
NR
31579The corresponding @value{GDBN} command is @samp{info line}.
31580@code{gdbtk} has the @samp{gdb_get_line} and @samp{gdb_get_file} commands.
922fbb7b
AC
31581
31582@subsubheading Example
a2c02241 31583N.A.
922fbb7b
AC
31584
31585
a2c02241
NR
31586@subheading The @code{-symbol-info-symbol} Command
31587@findex -symbol-info-symbol
07f31aa6
DJ
31588
31589@subsubheading Synopsis
31590
a2c02241
NR
31591@smallexample
31592 -symbol-info-symbol @var{addr}
31593@end smallexample
07f31aa6 31594
a2c02241 31595Describe what symbol is at location @var{addr}.
07f31aa6 31596
a2c02241 31597@subsubheading @value{GDBN} Command
07f31aa6 31598
a2c02241 31599The corresponding @value{GDBN} command is @samp{info symbol}.
07f31aa6
DJ
31600
31601@subsubheading Example
a2c02241 31602N.A.
07f31aa6
DJ
31603
31604
a2c02241
NR
31605@subheading The @code{-symbol-list-functions} Command
31606@findex -symbol-list-functions
922fbb7b
AC
31607
31608@subsubheading Synopsis
31609
31610@smallexample
a2c02241 31611 -symbol-list-functions
922fbb7b
AC
31612@end smallexample
31613
a2c02241 31614List the functions in the executable.
922fbb7b
AC
31615
31616@subsubheading @value{GDBN} Command
31617
a2c02241
NR
31618@samp{info functions} in @value{GDBN}, @samp{gdb_listfunc} and
31619@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
31620
31621@subsubheading Example
a2c02241 31622N.A.
9901a55b 31623@end ignore
922fbb7b
AC
31624
31625
a2c02241
NR
31626@subheading The @code{-symbol-list-lines} Command
31627@findex -symbol-list-lines
922fbb7b
AC
31628
31629@subsubheading Synopsis
31630
31631@smallexample
a2c02241 31632 -symbol-list-lines @var{filename}
922fbb7b
AC
31633@end smallexample
31634
a2c02241
NR
31635Print the list of lines that contain code and their associated program
31636addresses for the given source filename. The entries are sorted in
31637ascending PC order.
922fbb7b
AC
31638
31639@subsubheading @value{GDBN} Command
31640
a2c02241 31641There is no corresponding @value{GDBN} command.
922fbb7b
AC
31642
31643@subsubheading Example
a2c02241 31644@smallexample
594fe323 31645(gdb)
a2c02241
NR
31646-symbol-list-lines basics.c
31647^done,lines=[@{pc="0x08048554",line="7"@},@{pc="0x0804855a",line="8"@}]
594fe323 31648(gdb)
a2c02241 31649@end smallexample
922fbb7b
AC
31650
31651
9901a55b 31652@ignore
a2c02241
NR
31653@subheading The @code{-symbol-list-types} Command
31654@findex -symbol-list-types
922fbb7b
AC
31655
31656@subsubheading Synopsis
31657
31658@smallexample
a2c02241 31659 -symbol-list-types
922fbb7b
AC
31660@end smallexample
31661
a2c02241 31662List all the type names.
922fbb7b
AC
31663
31664@subsubheading @value{GDBN} Command
31665
a2c02241
NR
31666The corresponding commands are @samp{info types} in @value{GDBN},
31667@samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
31668
31669@subsubheading Example
31670N.A.
31671
31672
a2c02241
NR
31673@subheading The @code{-symbol-list-variables} Command
31674@findex -symbol-list-variables
922fbb7b
AC
31675
31676@subsubheading Synopsis
31677
31678@smallexample
a2c02241 31679 -symbol-list-variables
922fbb7b
AC
31680@end smallexample
31681
a2c02241 31682List all the global and static variable names.
922fbb7b
AC
31683
31684@subsubheading @value{GDBN} Command
31685
a2c02241 31686@samp{info variables} in @value{GDBN}, @samp{gdb_search} in @code{gdbtk}.
922fbb7b
AC
31687
31688@subsubheading Example
31689N.A.
31690
31691
a2c02241
NR
31692@subheading The @code{-symbol-locate} Command
31693@findex -symbol-locate
922fbb7b
AC
31694
31695@subsubheading Synopsis
31696
31697@smallexample
a2c02241 31698 -symbol-locate
922fbb7b
AC
31699@end smallexample
31700
922fbb7b
AC
31701@subsubheading @value{GDBN} Command
31702
a2c02241 31703@samp{gdb_loc} in @code{gdbtk}.
922fbb7b
AC
31704
31705@subsubheading Example
31706N.A.
31707
31708
a2c02241
NR
31709@subheading The @code{-symbol-type} Command
31710@findex -symbol-type
922fbb7b
AC
31711
31712@subsubheading Synopsis
31713
31714@smallexample
a2c02241 31715 -symbol-type @var{variable}
922fbb7b
AC
31716@end smallexample
31717
a2c02241 31718Show type of @var{variable}.
922fbb7b 31719
a2c02241 31720@subsubheading @value{GDBN} Command
922fbb7b 31721
a2c02241
NR
31722The corresponding @value{GDBN} command is @samp{ptype}, @code{gdbtk} has
31723@samp{gdb_obj_variable}.
31724
31725@subsubheading Example
31726N.A.
9901a55b 31727@end ignore
a2c02241
NR
31728
31729
31730@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31731@node GDB/MI File Commands
31732@section @sc{gdb/mi} File Commands
31733
31734This section describes the GDB/MI commands to specify executable file names
31735and to read in and obtain symbol table information.
31736
31737@subheading The @code{-file-exec-and-symbols} Command
31738@findex -file-exec-and-symbols
31739
31740@subsubheading Synopsis
922fbb7b
AC
31741
31742@smallexample
a2c02241 31743 -file-exec-and-symbols @var{file}
922fbb7b
AC
31744@end smallexample
31745
a2c02241
NR
31746Specify the executable file to be debugged. This file is the one from
31747which the symbol table is also read. If no file is specified, the
31748command clears the executable and symbol information. If breakpoints
31749are set when using this command with no arguments, @value{GDBN} will produce
31750error messages. Otherwise, no output is produced, except a completion
31751notification.
31752
922fbb7b
AC
31753@subsubheading @value{GDBN} Command
31754
a2c02241 31755The corresponding @value{GDBN} command is @samp{file}.
922fbb7b
AC
31756
31757@subsubheading Example
31758
31759@smallexample
594fe323 31760(gdb)
a2c02241
NR
31761-file-exec-and-symbols /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
31762^done
594fe323 31763(gdb)
922fbb7b
AC
31764@end smallexample
31765
922fbb7b 31766
a2c02241
NR
31767@subheading The @code{-file-exec-file} Command
31768@findex -file-exec-file
922fbb7b
AC
31769
31770@subsubheading Synopsis
31771
31772@smallexample
a2c02241 31773 -file-exec-file @var{file}
922fbb7b
AC
31774@end smallexample
31775
a2c02241
NR
31776Specify the executable file to be debugged. Unlike
31777@samp{-file-exec-and-symbols}, the symbol table is @emph{not} read
31778from this file. If used without argument, @value{GDBN} clears the information
31779about the executable file. No output is produced, except a completion
31780notification.
922fbb7b 31781
a2c02241
NR
31782@subsubheading @value{GDBN} Command
31783
31784The corresponding @value{GDBN} command is @samp{exec-file}.
922fbb7b
AC
31785
31786@subsubheading Example
a2c02241
NR
31787
31788@smallexample
594fe323 31789(gdb)
a2c02241
NR
31790-file-exec-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
31791^done
594fe323 31792(gdb)
a2c02241 31793@end smallexample
922fbb7b
AC
31794
31795
9901a55b 31796@ignore
a2c02241
NR
31797@subheading The @code{-file-list-exec-sections} Command
31798@findex -file-list-exec-sections
922fbb7b
AC
31799
31800@subsubheading Synopsis
31801
31802@smallexample
a2c02241 31803 -file-list-exec-sections
922fbb7b
AC
31804@end smallexample
31805
a2c02241
NR
31806List the sections of the current executable file.
31807
922fbb7b
AC
31808@subsubheading @value{GDBN} Command
31809
a2c02241
NR
31810The @value{GDBN} command @samp{info file} shows, among the rest, the same
31811information as this command. @code{gdbtk} has a corresponding command
31812@samp{gdb_load_info}.
922fbb7b
AC
31813
31814@subsubheading Example
31815N.A.
9901a55b 31816@end ignore
922fbb7b
AC
31817
31818
a2c02241
NR
31819@subheading The @code{-file-list-exec-source-file} Command
31820@findex -file-list-exec-source-file
922fbb7b
AC
31821
31822@subsubheading Synopsis
31823
31824@smallexample
a2c02241 31825 -file-list-exec-source-file
922fbb7b
AC
31826@end smallexample
31827
a2c02241 31828List the line number, the current source file, and the absolute path
44288b44
NR
31829to the current source file for the current executable. The macro
31830information field has a value of @samp{1} or @samp{0} depending on
31831whether or not the file includes preprocessor macro information.
922fbb7b
AC
31832
31833@subsubheading @value{GDBN} Command
31834
a2c02241 31835The @value{GDBN} equivalent is @samp{info source}
922fbb7b
AC
31836
31837@subsubheading Example
31838
922fbb7b 31839@smallexample
594fe323 31840(gdb)
a2c02241 31841123-file-list-exec-source-file
44288b44 31842123^done,line="1",file="foo.c",fullname="/home/bar/foo.c,macro-info="1"
594fe323 31843(gdb)
922fbb7b
AC
31844@end smallexample
31845
31846
a2c02241
NR
31847@subheading The @code{-file-list-exec-source-files} Command
31848@findex -file-list-exec-source-files
922fbb7b
AC
31849
31850@subsubheading Synopsis
31851
31852@smallexample
a2c02241 31853 -file-list-exec-source-files
922fbb7b
AC
31854@end smallexample
31855
a2c02241
NR
31856List the source files for the current executable.
31857
3f94c067
BW
31858It will always output the filename, but only when @value{GDBN} can find
31859the absolute file name of a source file, will it output the fullname.
922fbb7b
AC
31860
31861@subsubheading @value{GDBN} Command
31862
a2c02241
NR
31863The @value{GDBN} equivalent is @samp{info sources}.
31864@code{gdbtk} has an analogous command @samp{gdb_listfiles}.
922fbb7b
AC
31865
31866@subsubheading Example
922fbb7b 31867@smallexample
594fe323 31868(gdb)
a2c02241
NR
31869-file-list-exec-source-files
31870^done,files=[
31871@{file=foo.c,fullname=/home/foo.c@},
31872@{file=/home/bar.c,fullname=/home/bar.c@},
31873@{file=gdb_could_not_find_fullpath.c@}]
594fe323 31874(gdb)
922fbb7b
AC
31875@end smallexample
31876
9901a55b 31877@ignore
a2c02241
NR
31878@subheading The @code{-file-list-shared-libraries} Command
31879@findex -file-list-shared-libraries
922fbb7b 31880
a2c02241 31881@subsubheading Synopsis
922fbb7b 31882
a2c02241
NR
31883@smallexample
31884 -file-list-shared-libraries
31885@end smallexample
922fbb7b 31886
a2c02241 31887List the shared libraries in the program.
922fbb7b 31888
a2c02241 31889@subsubheading @value{GDBN} Command
922fbb7b 31890
a2c02241 31891The corresponding @value{GDBN} command is @samp{info shared}.
922fbb7b 31892
a2c02241
NR
31893@subsubheading Example
31894N.A.
922fbb7b
AC
31895
31896
a2c02241
NR
31897@subheading The @code{-file-list-symbol-files} Command
31898@findex -file-list-symbol-files
922fbb7b 31899
a2c02241 31900@subsubheading Synopsis
922fbb7b 31901
a2c02241
NR
31902@smallexample
31903 -file-list-symbol-files
31904@end smallexample
922fbb7b 31905
a2c02241 31906List symbol files.
922fbb7b 31907
a2c02241 31908@subsubheading @value{GDBN} Command
922fbb7b 31909
a2c02241 31910The corresponding @value{GDBN} command is @samp{info file} (part of it).
922fbb7b 31911
a2c02241
NR
31912@subsubheading Example
31913N.A.
9901a55b 31914@end ignore
922fbb7b 31915
922fbb7b 31916
a2c02241
NR
31917@subheading The @code{-file-symbol-file} Command
31918@findex -file-symbol-file
922fbb7b 31919
a2c02241 31920@subsubheading Synopsis
922fbb7b 31921
a2c02241
NR
31922@smallexample
31923 -file-symbol-file @var{file}
31924@end smallexample
922fbb7b 31925
a2c02241
NR
31926Read symbol table info from the specified @var{file} argument. When
31927used without arguments, clears @value{GDBN}'s symbol table info. No output is
31928produced, except for a completion notification.
922fbb7b 31929
a2c02241 31930@subsubheading @value{GDBN} Command
922fbb7b 31931
a2c02241 31932The corresponding @value{GDBN} command is @samp{symbol-file}.
922fbb7b 31933
a2c02241 31934@subsubheading Example
922fbb7b 31935
a2c02241 31936@smallexample
594fe323 31937(gdb)
a2c02241
NR
31938-file-symbol-file /kwikemart/marge/ezannoni/TRUNK/mbx/hello.mbx
31939^done
594fe323 31940(gdb)
a2c02241 31941@end smallexample
922fbb7b 31942
a2c02241 31943@ignore
a2c02241
NR
31944@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31945@node GDB/MI Memory Overlay Commands
31946@section @sc{gdb/mi} Memory Overlay Commands
922fbb7b 31947
a2c02241 31948The memory overlay commands are not implemented.
922fbb7b 31949
a2c02241 31950@c @subheading -overlay-auto
922fbb7b 31951
a2c02241 31952@c @subheading -overlay-list-mapping-state
922fbb7b 31953
a2c02241 31954@c @subheading -overlay-list-overlays
922fbb7b 31955
a2c02241 31956@c @subheading -overlay-map
922fbb7b 31957
a2c02241 31958@c @subheading -overlay-off
922fbb7b 31959
a2c02241 31960@c @subheading -overlay-on
922fbb7b 31961
a2c02241 31962@c @subheading -overlay-unmap
922fbb7b 31963
a2c02241
NR
31964@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31965@node GDB/MI Signal Handling Commands
31966@section @sc{gdb/mi} Signal Handling Commands
922fbb7b 31967
a2c02241 31968Signal handling commands are not implemented.
922fbb7b 31969
a2c02241 31970@c @subheading -signal-handle
922fbb7b 31971
a2c02241 31972@c @subheading -signal-list-handle-actions
922fbb7b 31973
a2c02241
NR
31974@c @subheading -signal-list-signal-types
31975@end ignore
922fbb7b 31976
922fbb7b 31977
a2c02241
NR
31978@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31979@node GDB/MI Target Manipulation
31980@section @sc{gdb/mi} Target Manipulation Commands
922fbb7b
AC
31981
31982
a2c02241
NR
31983@subheading The @code{-target-attach} Command
31984@findex -target-attach
922fbb7b
AC
31985
31986@subsubheading Synopsis
31987
31988@smallexample
c3b108f7 31989 -target-attach @var{pid} | @var{gid} | @var{file}
922fbb7b
AC
31990@end smallexample
31991
c3b108f7
VP
31992Attach to a process @var{pid} or a file @var{file} outside of
31993@value{GDBN}, or a thread group @var{gid}. If attaching to a thread
31994group, the id previously returned by
31995@samp{-list-thread-groups --available} must be used.
922fbb7b 31996
79a6e687 31997@subsubheading @value{GDBN} Command
922fbb7b 31998
a2c02241 31999The corresponding @value{GDBN} command is @samp{attach}.
922fbb7b 32000
a2c02241 32001@subsubheading Example
b56e7235
VP
32002@smallexample
32003(gdb)
32004-target-attach 34
32005=thread-created,id="1"
5ae4183a 32006*stopped,thread-id="1",frame=@{addr="0xb7f7e410",func="bar",args=[]@}
b56e7235
VP
32007^done
32008(gdb)
32009@end smallexample
a2c02241 32010
9901a55b 32011@ignore
a2c02241
NR
32012@subheading The @code{-target-compare-sections} Command
32013@findex -target-compare-sections
922fbb7b
AC
32014
32015@subsubheading Synopsis
32016
32017@smallexample
a2c02241 32018 -target-compare-sections [ @var{section} ]
922fbb7b
AC
32019@end smallexample
32020
a2c02241
NR
32021Compare data of section @var{section} on target to the exec file.
32022Without the argument, all sections are compared.
922fbb7b 32023
a2c02241 32024@subsubheading @value{GDBN} Command
922fbb7b 32025
a2c02241 32026The @value{GDBN} equivalent is @samp{compare-sections}.
922fbb7b 32027
a2c02241
NR
32028@subsubheading Example
32029N.A.
9901a55b 32030@end ignore
a2c02241
NR
32031
32032
32033@subheading The @code{-target-detach} Command
32034@findex -target-detach
922fbb7b
AC
32035
32036@subsubheading Synopsis
32037
32038@smallexample
c3b108f7 32039 -target-detach [ @var{pid} | @var{gid} ]
922fbb7b
AC
32040@end smallexample
32041
a2c02241 32042Detach from the remote target which normally resumes its execution.
c3b108f7
VP
32043If either @var{pid} or @var{gid} is specified, detaches from either
32044the specified process, or specified thread group. There's no output.
a2c02241 32045
79a6e687 32046@subsubheading @value{GDBN} Command
a2c02241
NR
32047
32048The corresponding @value{GDBN} command is @samp{detach}.
32049
32050@subsubheading Example
922fbb7b
AC
32051
32052@smallexample
594fe323 32053(gdb)
a2c02241
NR
32054-target-detach
32055^done
594fe323 32056(gdb)
922fbb7b
AC
32057@end smallexample
32058
32059
a2c02241
NR
32060@subheading The @code{-target-disconnect} Command
32061@findex -target-disconnect
922fbb7b
AC
32062
32063@subsubheading Synopsis
32064
123dc839 32065@smallexample
a2c02241 32066 -target-disconnect
123dc839 32067@end smallexample
922fbb7b 32068
a2c02241
NR
32069Disconnect from the remote target. There's no output and the target is
32070generally not resumed.
32071
79a6e687 32072@subsubheading @value{GDBN} Command
a2c02241
NR
32073
32074The corresponding @value{GDBN} command is @samp{disconnect}.
bc8ced35
NR
32075
32076@subsubheading Example
922fbb7b
AC
32077
32078@smallexample
594fe323 32079(gdb)
a2c02241
NR
32080-target-disconnect
32081^done
594fe323 32082(gdb)
922fbb7b
AC
32083@end smallexample
32084
32085
a2c02241
NR
32086@subheading The @code{-target-download} Command
32087@findex -target-download
922fbb7b
AC
32088
32089@subsubheading Synopsis
32090
32091@smallexample
a2c02241 32092 -target-download
922fbb7b
AC
32093@end smallexample
32094
a2c02241
NR
32095Loads the executable onto the remote target.
32096It prints out an update message every half second, which includes the fields:
32097
32098@table @samp
32099@item section
32100The name of the section.
32101@item section-sent
32102The size of what has been sent so far for that section.
32103@item section-size
32104The size of the section.
32105@item total-sent
32106The total size of what was sent so far (the current and the previous sections).
32107@item total-size
32108The size of the overall executable to download.
32109@end table
32110
32111@noindent
32112Each message is sent as status record (@pxref{GDB/MI Output Syntax, ,
32113@sc{gdb/mi} Output Syntax}).
32114
32115In addition, it prints the name and size of the sections, as they are
32116downloaded. These messages include the following fields:
32117
32118@table @samp
32119@item section
32120The name of the section.
32121@item section-size
32122The size of the section.
32123@item total-size
32124The size of the overall executable to download.
32125@end table
32126
32127@noindent
32128At the end, a summary is printed.
32129
32130@subsubheading @value{GDBN} Command
32131
32132The corresponding @value{GDBN} command is @samp{load}.
32133
32134@subsubheading Example
32135
32136Note: each status message appears on a single line. Here the messages
32137have been broken down so that they can fit onto a page.
922fbb7b
AC
32138
32139@smallexample
594fe323 32140(gdb)
a2c02241
NR
32141-target-download
32142+download,@{section=".text",section-size="6668",total-size="9880"@}
32143+download,@{section=".text",section-sent="512",section-size="6668",
32144total-sent="512",total-size="9880"@}
32145+download,@{section=".text",section-sent="1024",section-size="6668",
32146total-sent="1024",total-size="9880"@}
32147+download,@{section=".text",section-sent="1536",section-size="6668",
32148total-sent="1536",total-size="9880"@}
32149+download,@{section=".text",section-sent="2048",section-size="6668",
32150total-sent="2048",total-size="9880"@}
32151+download,@{section=".text",section-sent="2560",section-size="6668",
32152total-sent="2560",total-size="9880"@}
32153+download,@{section=".text",section-sent="3072",section-size="6668",
32154total-sent="3072",total-size="9880"@}
32155+download,@{section=".text",section-sent="3584",section-size="6668",
32156total-sent="3584",total-size="9880"@}
32157+download,@{section=".text",section-sent="4096",section-size="6668",
32158total-sent="4096",total-size="9880"@}
32159+download,@{section=".text",section-sent="4608",section-size="6668",
32160total-sent="4608",total-size="9880"@}
32161+download,@{section=".text",section-sent="5120",section-size="6668",
32162total-sent="5120",total-size="9880"@}
32163+download,@{section=".text",section-sent="5632",section-size="6668",
32164total-sent="5632",total-size="9880"@}
32165+download,@{section=".text",section-sent="6144",section-size="6668",
32166total-sent="6144",total-size="9880"@}
32167+download,@{section=".text",section-sent="6656",section-size="6668",
32168total-sent="6656",total-size="9880"@}
32169+download,@{section=".init",section-size="28",total-size="9880"@}
32170+download,@{section=".fini",section-size="28",total-size="9880"@}
32171+download,@{section=".data",section-size="3156",total-size="9880"@}
32172+download,@{section=".data",section-sent="512",section-size="3156",
32173total-sent="7236",total-size="9880"@}
32174+download,@{section=".data",section-sent="1024",section-size="3156",
32175total-sent="7748",total-size="9880"@}
32176+download,@{section=".data",section-sent="1536",section-size="3156",
32177total-sent="8260",total-size="9880"@}
32178+download,@{section=".data",section-sent="2048",section-size="3156",
32179total-sent="8772",total-size="9880"@}
32180+download,@{section=".data",section-sent="2560",section-size="3156",
32181total-sent="9284",total-size="9880"@}
32182+download,@{section=".data",section-sent="3072",section-size="3156",
32183total-sent="9796",total-size="9880"@}
32184^done,address="0x10004",load-size="9880",transfer-rate="6586",
32185write-rate="429"
594fe323 32186(gdb)
922fbb7b
AC
32187@end smallexample
32188
32189
9901a55b 32190@ignore
a2c02241
NR
32191@subheading The @code{-target-exec-status} Command
32192@findex -target-exec-status
922fbb7b
AC
32193
32194@subsubheading Synopsis
32195
32196@smallexample
a2c02241 32197 -target-exec-status
922fbb7b
AC
32198@end smallexample
32199
a2c02241
NR
32200Provide information on the state of the target (whether it is running or
32201not, for instance).
922fbb7b 32202
a2c02241 32203@subsubheading @value{GDBN} Command
922fbb7b 32204
a2c02241
NR
32205There's no equivalent @value{GDBN} command.
32206
32207@subsubheading Example
32208N.A.
922fbb7b 32209
a2c02241
NR
32210
32211@subheading The @code{-target-list-available-targets} Command
32212@findex -target-list-available-targets
922fbb7b
AC
32213
32214@subsubheading Synopsis
32215
32216@smallexample
a2c02241 32217 -target-list-available-targets
922fbb7b
AC
32218@end smallexample
32219
a2c02241 32220List the possible targets to connect to.
922fbb7b 32221
a2c02241 32222@subsubheading @value{GDBN} Command
922fbb7b 32223
a2c02241 32224The corresponding @value{GDBN} command is @samp{help target}.
922fbb7b 32225
a2c02241
NR
32226@subsubheading Example
32227N.A.
32228
32229
32230@subheading The @code{-target-list-current-targets} Command
32231@findex -target-list-current-targets
922fbb7b
AC
32232
32233@subsubheading Synopsis
32234
32235@smallexample
a2c02241 32236 -target-list-current-targets
922fbb7b
AC
32237@end smallexample
32238
a2c02241 32239Describe the current target.
922fbb7b 32240
a2c02241 32241@subsubheading @value{GDBN} Command
922fbb7b 32242
a2c02241
NR
32243The corresponding information is printed by @samp{info file} (among
32244other things).
922fbb7b 32245
a2c02241
NR
32246@subsubheading Example
32247N.A.
32248
32249
32250@subheading The @code{-target-list-parameters} Command
32251@findex -target-list-parameters
922fbb7b
AC
32252
32253@subsubheading Synopsis
32254
32255@smallexample
a2c02241 32256 -target-list-parameters
922fbb7b
AC
32257@end smallexample
32258
a2c02241 32259@c ????
9901a55b 32260@end ignore
a2c02241
NR
32261
32262@subsubheading @value{GDBN} Command
32263
32264No equivalent.
922fbb7b
AC
32265
32266@subsubheading Example
a2c02241
NR
32267N.A.
32268
32269
32270@subheading The @code{-target-select} Command
32271@findex -target-select
32272
32273@subsubheading Synopsis
922fbb7b
AC
32274
32275@smallexample
a2c02241 32276 -target-select @var{type} @var{parameters @dots{}}
922fbb7b
AC
32277@end smallexample
32278
a2c02241 32279Connect @value{GDBN} to the remote target. This command takes two args:
922fbb7b 32280
a2c02241
NR
32281@table @samp
32282@item @var{type}
75c99385 32283The type of target, for instance @samp{remote}, etc.
a2c02241
NR
32284@item @var{parameters}
32285Device names, host names and the like. @xref{Target Commands, ,
79a6e687 32286Commands for Managing Targets}, for more details.
a2c02241
NR
32287@end table
32288
32289The output is a connection notification, followed by the address at
32290which the target program is, in the following form:
922fbb7b
AC
32291
32292@smallexample
a2c02241
NR
32293^connected,addr="@var{address}",func="@var{function name}",
32294 args=[@var{arg list}]
922fbb7b
AC
32295@end smallexample
32296
a2c02241
NR
32297@subsubheading @value{GDBN} Command
32298
32299The corresponding @value{GDBN} command is @samp{target}.
265eeb58
NR
32300
32301@subsubheading Example
922fbb7b 32302
265eeb58 32303@smallexample
594fe323 32304(gdb)
75c99385 32305-target-select remote /dev/ttya
a2c02241 32306^connected,addr="0xfe00a300",func="??",args=[]
594fe323 32307(gdb)
265eeb58 32308@end smallexample
ef21caaf 32309
a6b151f1
DJ
32310@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32311@node GDB/MI File Transfer Commands
32312@section @sc{gdb/mi} File Transfer Commands
32313
32314
32315@subheading The @code{-target-file-put} Command
32316@findex -target-file-put
32317
32318@subsubheading Synopsis
32319
32320@smallexample
32321 -target-file-put @var{hostfile} @var{targetfile}
32322@end smallexample
32323
32324Copy file @var{hostfile} from the host system (the machine running
32325@value{GDBN}) to @var{targetfile} on the target system.
32326
32327@subsubheading @value{GDBN} Command
32328
32329The corresponding @value{GDBN} command is @samp{remote put}.
32330
32331@subsubheading Example
32332
32333@smallexample
32334(gdb)
32335-target-file-put localfile remotefile
32336^done
32337(gdb)
32338@end smallexample
32339
32340
1763a388 32341@subheading The @code{-target-file-get} Command
a6b151f1
DJ
32342@findex -target-file-get
32343
32344@subsubheading Synopsis
32345
32346@smallexample
32347 -target-file-get @var{targetfile} @var{hostfile}
32348@end smallexample
32349
32350Copy file @var{targetfile} from the target system to @var{hostfile}
32351on the host system.
32352
32353@subsubheading @value{GDBN} Command
32354
32355The corresponding @value{GDBN} command is @samp{remote get}.
32356
32357@subsubheading Example
32358
32359@smallexample
32360(gdb)
32361-target-file-get remotefile localfile
32362^done
32363(gdb)
32364@end smallexample
32365
32366
32367@subheading The @code{-target-file-delete} Command
32368@findex -target-file-delete
32369
32370@subsubheading Synopsis
32371
32372@smallexample
32373 -target-file-delete @var{targetfile}
32374@end smallexample
32375
32376Delete @var{targetfile} from the target system.
32377
32378@subsubheading @value{GDBN} Command
32379
32380The corresponding @value{GDBN} command is @samp{remote delete}.
32381
32382@subsubheading Example
32383
32384@smallexample
32385(gdb)
32386-target-file-delete remotefile
32387^done
32388(gdb)
32389@end smallexample
32390
32391
ef21caaf
NR
32392@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32393@node GDB/MI Miscellaneous Commands
32394@section Miscellaneous @sc{gdb/mi} Commands
32395
32396@c @subheading -gdb-complete
32397
32398@subheading The @code{-gdb-exit} Command
32399@findex -gdb-exit
32400
32401@subsubheading Synopsis
32402
32403@smallexample
32404 -gdb-exit
32405@end smallexample
32406
32407Exit @value{GDBN} immediately.
32408
32409@subsubheading @value{GDBN} Command
32410
32411Approximately corresponds to @samp{quit}.
32412
32413@subsubheading Example
32414
32415@smallexample
594fe323 32416(gdb)
ef21caaf
NR
32417-gdb-exit
32418^exit
32419@end smallexample
32420
a2c02241 32421
9901a55b 32422@ignore
a2c02241
NR
32423@subheading The @code{-exec-abort} Command
32424@findex -exec-abort
32425
32426@subsubheading Synopsis
32427
32428@smallexample
32429 -exec-abort
32430@end smallexample
32431
32432Kill the inferior running program.
32433
32434@subsubheading @value{GDBN} Command
32435
32436The corresponding @value{GDBN} command is @samp{kill}.
32437
32438@subsubheading Example
32439N.A.
9901a55b 32440@end ignore
a2c02241
NR
32441
32442
ef21caaf
NR
32443@subheading The @code{-gdb-set} Command
32444@findex -gdb-set
32445
32446@subsubheading Synopsis
32447
32448@smallexample
32449 -gdb-set
32450@end smallexample
32451
32452Set an internal @value{GDBN} variable.
32453@c IS THIS A DOLLAR VARIABLE? OR SOMETHING LIKE ANNOTATE ?????
32454
32455@subsubheading @value{GDBN} Command
32456
32457The corresponding @value{GDBN} command is @samp{set}.
32458
32459@subsubheading Example
32460
32461@smallexample
594fe323 32462(gdb)
ef21caaf
NR
32463-gdb-set $foo=3
32464^done
594fe323 32465(gdb)
ef21caaf
NR
32466@end smallexample
32467
32468
32469@subheading The @code{-gdb-show} Command
32470@findex -gdb-show
32471
32472@subsubheading Synopsis
32473
32474@smallexample
32475 -gdb-show
32476@end smallexample
32477
32478Show the current value of a @value{GDBN} variable.
32479
79a6e687 32480@subsubheading @value{GDBN} Command
ef21caaf
NR
32481
32482The corresponding @value{GDBN} command is @samp{show}.
32483
32484@subsubheading Example
32485
32486@smallexample
594fe323 32487(gdb)
ef21caaf
NR
32488-gdb-show annotate
32489^done,value="0"
594fe323 32490(gdb)
ef21caaf
NR
32491@end smallexample
32492
32493@c @subheading -gdb-source
32494
32495
32496@subheading The @code{-gdb-version} Command
32497@findex -gdb-version
32498
32499@subsubheading Synopsis
32500
32501@smallexample
32502 -gdb-version
32503@end smallexample
32504
32505Show version information for @value{GDBN}. Used mostly in testing.
32506
32507@subsubheading @value{GDBN} Command
32508
32509The @value{GDBN} equivalent is @samp{show version}. @value{GDBN} by
32510default shows this information when you start an interactive session.
32511
32512@subsubheading Example
32513
32514@c This example modifies the actual output from GDB to avoid overfull
32515@c box in TeX.
32516@smallexample
594fe323 32517(gdb)
ef21caaf
NR
32518-gdb-version
32519~GNU gdb 5.2.1
32520~Copyright 2000 Free Software Foundation, Inc.
32521~GDB is free software, covered by the GNU General Public License, and
32522~you are welcome to change it and/or distribute copies of it under
32523~ certain conditions.
32524~Type "show copying" to see the conditions.
32525~There is absolutely no warranty for GDB. Type "show warranty" for
32526~ details.
32527~This GDB was configured as
32528 "--host=sparc-sun-solaris2.5.1 --target=ppc-eabi".
32529^done
594fe323 32530(gdb)
ef21caaf
NR
32531@end smallexample
32532
084344da
VP
32533@subheading The @code{-list-features} Command
32534@findex -list-features
32535
32536Returns a list of particular features of the MI protocol that
32537this version of gdb implements. A feature can be a command,
32538or a new field in an output of some command, or even an
32539important bugfix. While a frontend can sometimes detect presence
32540of a feature at runtime, it is easier to perform detection at debugger
32541startup.
32542
32543The command returns a list of strings, with each string naming an
32544available feature. Each returned string is just a name, it does not
32545have any internal structure. The list of possible feature names
32546is given below.
32547
32548Example output:
32549
32550@smallexample
32551(gdb) -list-features
32552^done,result=["feature1","feature2"]
32553@end smallexample
32554
32555The current list of features is:
32556
30e026bb
VP
32557@table @samp
32558@item frozen-varobjs
a05336a1
JB
32559Indicates support for the @code{-var-set-frozen} command, as well
32560as possible presense of the @code{frozen} field in the output
30e026bb
VP
32561of @code{-varobj-create}.
32562@item pending-breakpoints
a05336a1
JB
32563Indicates support for the @option{-f} option to the @code{-break-insert}
32564command.
b6313243 32565@item python
a05336a1 32566Indicates Python scripting support, Python-based
b6313243
TT
32567pretty-printing commands, and possible presence of the
32568@samp{display_hint} field in the output of @code{-var-list-children}
30e026bb 32569@item thread-info
a05336a1 32570Indicates support for the @code{-thread-info} command.
8dedea02 32571@item data-read-memory-bytes
a05336a1 32572Indicates support for the @code{-data-read-memory-bytes} and the
8dedea02 32573@code{-data-write-memory-bytes} commands.
39c4d40a
TT
32574@item breakpoint-notifications
32575Indicates that changes to breakpoints and breakpoints created via the
32576CLI will be announced via async records.
5d77fe44
JB
32577@item ada-task-info
32578Indicates support for the @code{-ada-task-info} command.
30e026bb 32579@end table
084344da 32580
c6ebd6cf
VP
32581@subheading The @code{-list-target-features} Command
32582@findex -list-target-features
32583
32584Returns a list of particular features that are supported by the
32585target. Those features affect the permitted MI commands, but
32586unlike the features reported by the @code{-list-features} command, the
32587features depend on which target GDB is using at the moment. Whenever
32588a target can change, due to commands such as @code{-target-select},
32589@code{-target-attach} or @code{-exec-run}, the list of target features
32590may change, and the frontend should obtain it again.
32591Example output:
32592
32593@smallexample
32594(gdb) -list-features
32595^done,result=["async"]
32596@end smallexample
32597
32598The current list of features is:
32599
32600@table @samp
32601@item async
32602Indicates that the target is capable of asynchronous command
32603execution, which means that @value{GDBN} will accept further commands
32604while the target is running.
32605
f75d858b
MK
32606@item reverse
32607Indicates that the target is capable of reverse execution.
32608@xref{Reverse Execution}, for more information.
32609
c6ebd6cf
VP
32610@end table
32611
c3b108f7
VP
32612@subheading The @code{-list-thread-groups} Command
32613@findex -list-thread-groups
32614
32615@subheading Synopsis
32616
32617@smallexample
dc146f7c 32618-list-thread-groups [ --available ] [ --recurse 1 ] [ @var{group} ... ]
c3b108f7
VP
32619@end smallexample
32620
dc146f7c
VP
32621Lists thread groups (@pxref{Thread groups}). When a single thread
32622group is passed as the argument, lists the children of that group.
32623When several thread group are passed, lists information about those
32624thread groups. Without any parameters, lists information about all
32625top-level thread groups.
32626
32627Normally, thread groups that are being debugged are reported.
32628With the @samp{--available} option, @value{GDBN} reports thread groups
32629available on the target.
32630
32631The output of this command may have either a @samp{threads} result or
32632a @samp{groups} result. The @samp{thread} result has a list of tuples
32633as value, with each tuple describing a thread (@pxref{GDB/MI Thread
32634Information}). The @samp{groups} result has a list of tuples as value,
32635each tuple describing a thread group. If top-level groups are
32636requested (that is, no parameter is passed), or when several groups
32637are passed, the output always has a @samp{groups} result. The format
32638of the @samp{group} result is described below.
32639
32640To reduce the number of roundtrips it's possible to list thread groups
32641together with their children, by passing the @samp{--recurse} option
32642and the recursion depth. Presently, only recursion depth of 1 is
32643permitted. If this option is present, then every reported thread group
32644will also include its children, either as @samp{group} or
32645@samp{threads} field.
32646
32647In general, any combination of option and parameters is permitted, with
32648the following caveats:
32649
32650@itemize @bullet
32651@item
32652When a single thread group is passed, the output will typically
32653be the @samp{threads} result. Because threads may not contain
32654anything, the @samp{recurse} option will be ignored.
32655
32656@item
32657When the @samp{--available} option is passed, limited information may
32658be available. In particular, the list of threads of a process might
32659be inaccessible. Further, specifying specific thread groups might
32660not give any performance advantage over listing all thread groups.
32661The frontend should assume that @samp{-list-thread-groups --available}
32662is always an expensive operation and cache the results.
32663
32664@end itemize
32665
32666The @samp{groups} result is a list of tuples, where each tuple may
32667have the following fields:
32668
32669@table @code
32670@item id
32671Identifier of the thread group. This field is always present.
a79b8f6e
VP
32672The identifier is an opaque string; frontends should not try to
32673convert it to an integer, even though it might look like one.
dc146f7c
VP
32674
32675@item type
32676The type of the thread group. At present, only @samp{process} is a
32677valid type.
32678
32679@item pid
32680The target-specific process identifier. This field is only present
a79b8f6e 32681for thread groups of type @samp{process} and only if the process exists.
c3b108f7 32682
dc146f7c
VP
32683@item num_children
32684The number of children this thread group has. This field may be
32685absent for an available thread group.
32686
32687@item threads
32688This field has a list of tuples as value, each tuple describing a
32689thread. It may be present if the @samp{--recurse} option is
32690specified, and it's actually possible to obtain the threads.
32691
32692@item cores
32693This field is a list of integers, each identifying a core that one
32694thread of the group is running on. This field may be absent if
32695such information is not available.
32696
a79b8f6e
VP
32697@item executable
32698The name of the executable file that corresponds to this thread group.
32699The field is only present for thread groups of type @samp{process},
32700and only if there is a corresponding executable file.
32701
dc146f7c 32702@end table
c3b108f7
VP
32703
32704@subheading Example
32705
32706@smallexample
32707@value{GDBP}
32708-list-thread-groups
32709^done,groups=[@{id="17",type="process",pid="yyy",num_children="2"@}]
32710-list-thread-groups 17
32711^done,threads=[@{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",
32712 frame=@{level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]@},state="running"@},
32713@{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",
32714 frame=@{level="0",addr="0x0804891f",func="foo",args=[@{name="i",value="10"@}],
32715 file="/tmp/a.c",fullname="/tmp/a.c",line="158"@},state="running"@}]]
dc146f7c
VP
32716-list-thread-groups --available
32717^done,groups=[@{id="17",type="process",pid="yyy",num_children="2",cores=[1,2]@}]
32718-list-thread-groups --available --recurse 1
32719 ^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
32720 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
32721 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},..]
32722-list-thread-groups --available --recurse 1 17 18
32723^done,groups=[@{id="17", types="process",pid="yyy",num_children="2",cores=[1,2],
32724 threads=[@{id="1",target-id="Thread 0xb7e14b90",cores=[1]@},
32725 @{id="2",target-id="Thread 0xb7e14b90",cores=[2]@}]@},...]
c3b108f7 32726@end smallexample
c6ebd6cf 32727
f3e0e960
SS
32728@subheading The @code{-info-os} Command
32729@findex -info-os
32730
32731@subsubheading Synopsis
32732
32733@smallexample
32734-info-os [ @var{type} ]
32735@end smallexample
32736
32737If no argument is supplied, the command returns a table of available
32738operating-system-specific information types. If one of these types is
32739supplied as an argument @var{type}, then the command returns a table
32740of data of that type.
32741
32742The types of information available depend on the target operating
32743system.
32744
32745@subsubheading @value{GDBN} Command
32746
32747The corresponding @value{GDBN} command is @samp{info os}.
32748
32749@subsubheading Example
32750
32751When run on a @sc{gnu}/Linux system, the output will look something
32752like this:
32753
32754@smallexample
32755@value{GDBP}
32756-info-os
71caed83 32757^done,OSDataTable=@{nr_rows="9",nr_cols="3",
f3e0e960 32758hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="Type"@},
71caed83
SS
32759 @{width="10",alignment="-1",col_name="col1",colhdr="Description"@},
32760 @{width="10",alignment="-1",col_name="col2",colhdr="Title"@}],
32761body=[item=@{col0="processes",col1="Listing of all processes",
32762 col2="Processes"@},
32763 item=@{col0="procgroups",col1="Listing of all process groups",
32764 col2="Process groups"@},
32765 item=@{col0="threads",col1="Listing of all threads",
32766 col2="Threads"@},
32767 item=@{col0="files",col1="Listing of all file descriptors",
32768 col2="File descriptors"@},
32769 item=@{col0="sockets",col1="Listing of all internet-domain sockets",
32770 col2="Sockets"@},
32771 item=@{col0="shm",col1="Listing of all shared-memory regions",
32772 col2="Shared-memory regions"@},
32773 item=@{col0="semaphores",col1="Listing of all semaphores",
32774 col2="Semaphores"@},
32775 item=@{col0="msg",col1="Listing of all message queues",
32776 col2="Message queues"@},
32777 item=@{col0="modules",col1="Listing of all loaded kernel modules",
32778 col2="Kernel modules"@}]@}
f3e0e960
SS
32779@value{GDBP}
32780-info-os processes
32781^done,OSDataTable=@{nr_rows="190",nr_cols="4",
32782hdr=[@{width="10",alignment="-1",col_name="col0",colhdr="pid"@},
32783 @{width="10",alignment="-1",col_name="col1",colhdr="user"@},
32784 @{width="10",alignment="-1",col_name="col2",colhdr="command"@},
32785 @{width="10",alignment="-1",col_name="col3",colhdr="cores"@}],
32786body=[item=@{col0="1",col1="root",col2="/sbin/init",col3="0"@},
32787 item=@{col0="2",col1="root",col2="[kthreadd]",col3="1"@},
32788 item=@{col0="3",col1="root",col2="[ksoftirqd/0]",col3="0"@},
32789 ...
32790 item=@{col0="26446",col1="stan",col2="bash",col3="0"@},
32791 item=@{col0="28152",col1="stan",col2="bash",col3="1"@}]@}
32792(gdb)
32793@end smallexample
a79b8f6e 32794
71caed83
SS
32795(Note that the MI output here includes a @code{"Title"} column that
32796does not appear in command-line @code{info os}; this column is useful
32797for MI clients that want to enumerate the types of data, such as in a
32798popup menu, but is needless clutter on the command line, and
32799@code{info os} omits it.)
32800
a79b8f6e
VP
32801@subheading The @code{-add-inferior} Command
32802@findex -add-inferior
32803
32804@subheading Synopsis
32805
32806@smallexample
32807-add-inferior
32808@end smallexample
32809
32810Creates a new inferior (@pxref{Inferiors and Programs}). The created
32811inferior is not associated with any executable. Such association may
32812be established with the @samp{-file-exec-and-symbols} command
32813(@pxref{GDB/MI File Commands}). The command response has a single
32814field, @samp{thread-group}, whose value is the identifier of the
32815thread group corresponding to the new inferior.
32816
32817@subheading Example
32818
32819@smallexample
32820@value{GDBP}
32821-add-inferior
32822^done,thread-group="i3"
32823@end smallexample
32824
ef21caaf
NR
32825@subheading The @code{-interpreter-exec} Command
32826@findex -interpreter-exec
32827
32828@subheading Synopsis
32829
32830@smallexample
32831-interpreter-exec @var{interpreter} @var{command}
32832@end smallexample
a2c02241 32833@anchor{-interpreter-exec}
ef21caaf
NR
32834
32835Execute the specified @var{command} in the given @var{interpreter}.
32836
32837@subheading @value{GDBN} Command
32838
32839The corresponding @value{GDBN} command is @samp{interpreter-exec}.
32840
32841@subheading Example
32842
32843@smallexample
594fe323 32844(gdb)
ef21caaf
NR
32845-interpreter-exec console "break main"
32846&"During symbol reading, couldn't parse type; debugger out of date?.\n"
32847&"During symbol reading, bad structure-type format.\n"
32848~"Breakpoint 1 at 0x8074fc6: file ../../src/gdb/main.c, line 743.\n"
32849^done
594fe323 32850(gdb)
ef21caaf
NR
32851@end smallexample
32852
32853@subheading The @code{-inferior-tty-set} Command
32854@findex -inferior-tty-set
32855
32856@subheading Synopsis
32857
32858@smallexample
32859-inferior-tty-set /dev/pts/1
32860@end smallexample
32861
32862Set terminal for future runs of the program being debugged.
32863
32864@subheading @value{GDBN} Command
32865
32866The corresponding @value{GDBN} command is @samp{set inferior-tty} /dev/pts/1.
32867
32868@subheading Example
32869
32870@smallexample
594fe323 32871(gdb)
ef21caaf
NR
32872-inferior-tty-set /dev/pts/1
32873^done
594fe323 32874(gdb)
ef21caaf
NR
32875@end smallexample
32876
32877@subheading The @code{-inferior-tty-show} Command
32878@findex -inferior-tty-show
32879
32880@subheading Synopsis
32881
32882@smallexample
32883-inferior-tty-show
32884@end smallexample
32885
32886Show terminal for future runs of program being debugged.
32887
32888@subheading @value{GDBN} Command
32889
32890The corresponding @value{GDBN} command is @samp{show inferior-tty}.
32891
32892@subheading Example
32893
32894@smallexample
594fe323 32895(gdb)
ef21caaf
NR
32896-inferior-tty-set /dev/pts/1
32897^done
594fe323 32898(gdb)
ef21caaf
NR
32899-inferior-tty-show
32900^done,inferior_tty_terminal="/dev/pts/1"
594fe323 32901(gdb)
ef21caaf 32902@end smallexample
922fbb7b 32903
a4eefcd8
NR
32904@subheading The @code{-enable-timings} Command
32905@findex -enable-timings
32906
32907@subheading Synopsis
32908
32909@smallexample
32910-enable-timings [yes | no]
32911@end smallexample
32912
32913Toggle the printing of the wallclock, user and system times for an MI
32914command as a field in its output. This command is to help frontend
32915developers optimize the performance of their code. No argument is
32916equivalent to @samp{yes}.
32917
32918@subheading @value{GDBN} Command
32919
32920No equivalent.
32921
32922@subheading Example
32923
32924@smallexample
32925(gdb)
32926-enable-timings
32927^done
32928(gdb)
32929-break-insert main
32930^done,bkpt=@{number="1",type="breakpoint",disp="keep",enabled="y",
32931addr="0x080484ed",func="main",file="myprog.c",
32932fullname="/home/nickrob/myprog.c",line="73",times="0"@},
32933time=@{wallclock="0.05185",user="0.00800",system="0.00000"@}
32934(gdb)
32935-enable-timings no
32936^done
32937(gdb)
32938-exec-run
32939^running
32940(gdb)
a47ec5fe 32941*stopped,reason="breakpoint-hit",disp="keep",bkptno="1",thread-id="0",
a4eefcd8
NR
32942frame=@{addr="0x080484ed",func="main",args=[@{name="argc",value="1"@},
32943@{name="argv",value="0xbfb60364"@}],file="myprog.c",
32944fullname="/home/nickrob/myprog.c",line="73"@}
32945(gdb)
32946@end smallexample
32947
922fbb7b
AC
32948@node Annotations
32949@chapter @value{GDBN} Annotations
32950
086432e2
AC
32951This chapter describes annotations in @value{GDBN}. Annotations were
32952designed to interface @value{GDBN} to graphical user interfaces or other
32953similar programs which want to interact with @value{GDBN} at a
922fbb7b
AC
32954relatively high level.
32955
d3e8051b 32956The annotation mechanism has largely been superseded by @sc{gdb/mi}
086432e2
AC
32957(@pxref{GDB/MI}).
32958
922fbb7b
AC
32959@ignore
32960This is Edition @value{EDITION}, @value{DATE}.
32961@end ignore
32962
32963@menu
32964* Annotations Overview:: What annotations are; the general syntax.
9e6c4bd5 32965* Server Prefix:: Issuing a command without affecting user state.
922fbb7b
AC
32966* Prompting:: Annotations marking @value{GDBN}'s need for input.
32967* Errors:: Annotations for error messages.
922fbb7b
AC
32968* Invalidation:: Some annotations describe things now invalid.
32969* Annotations for Running::
32970 Whether the program is running, how it stopped, etc.
32971* Source Annotations:: Annotations describing source code.
922fbb7b
AC
32972@end menu
32973
32974@node Annotations Overview
32975@section What is an Annotation?
32976@cindex annotations
32977
922fbb7b
AC
32978Annotations start with a newline character, two @samp{control-z}
32979characters, and the name of the annotation. If there is no additional
32980information associated with this annotation, the name of the annotation
32981is followed immediately by a newline. If there is additional
32982information, the name of the annotation is followed by a space, the
32983additional information, and a newline. The additional information
32984cannot contain newline characters.
32985
32986Any output not beginning with a newline and two @samp{control-z}
32987characters denotes literal output from @value{GDBN}. Currently there is
32988no need for @value{GDBN} to output a newline followed by two
32989@samp{control-z} characters, but if there was such a need, the
32990annotations could be extended with an @samp{escape} annotation which
32991means those three characters as output.
32992
086432e2
AC
32993The annotation @var{level}, which is specified using the
32994@option{--annotate} command line option (@pxref{Mode Options}), controls
32995how much information @value{GDBN} prints together with its prompt,
32996values of expressions, source lines, and other types of output. Level 0
d3e8051b 32997is for no annotations, level 1 is for use when @value{GDBN} is run as a
086432e2
AC
32998subprocess of @sc{gnu} Emacs, level 3 is the maximum annotation suitable
32999for programs that control @value{GDBN}, and level 2 annotations have
33000been made obsolete (@pxref{Limitations, , Limitations of the Annotation
09d4efe1
EZ
33001Interface, annotate, GDB's Obsolete Annotations}).
33002
33003@table @code
33004@kindex set annotate
33005@item set annotate @var{level}
e09f16f9 33006The @value{GDBN} command @code{set annotate} sets the level of
09d4efe1 33007annotations to the specified @var{level}.
9c16f35a
EZ
33008
33009@item show annotate
33010@kindex show annotate
33011Show the current annotation level.
09d4efe1
EZ
33012@end table
33013
33014This chapter describes level 3 annotations.
086432e2 33015
922fbb7b
AC
33016A simple example of starting up @value{GDBN} with annotations is:
33017
33018@smallexample
086432e2
AC
33019$ @kbd{gdb --annotate=3}
33020GNU gdb 6.0
33021Copyright 2003 Free Software Foundation, Inc.
922fbb7b
AC
33022GDB is free software, covered by the GNU General Public License,
33023and you are welcome to change it and/or distribute copies of it
33024under certain conditions.
33025Type "show copying" to see the conditions.
33026There is absolutely no warranty for GDB. Type "show warranty"
33027for details.
086432e2 33028This GDB was configured as "i386-pc-linux-gnu"
922fbb7b
AC
33029
33030^Z^Zpre-prompt
f7dc1244 33031(@value{GDBP})
922fbb7b 33032^Z^Zprompt
086432e2 33033@kbd{quit}
922fbb7b
AC
33034
33035^Z^Zpost-prompt
b383017d 33036$
922fbb7b
AC
33037@end smallexample
33038
33039Here @samp{quit} is input to @value{GDBN}; the rest is output from
33040@value{GDBN}. The three lines beginning @samp{^Z^Z} (where @samp{^Z}
33041denotes a @samp{control-z} character) are annotations; the rest is
33042output from @value{GDBN}.
33043
9e6c4bd5
NR
33044@node Server Prefix
33045@section The Server Prefix
33046@cindex server prefix
33047
33048If you prefix a command with @samp{server } then it will not affect
33049the command history, nor will it affect @value{GDBN}'s notion of which
33050command to repeat if @key{RET} is pressed on a line by itself. This
33051means that commands can be run behind a user's back by a front-end in
33052a transparent manner.
33053
d837706a
NR
33054The @code{server } prefix does not affect the recording of values into
33055the value history; to print a value without recording it into the
33056value history, use the @code{output} command instead of the
33057@code{print} command.
33058
33059Using this prefix also disables confirmation requests
33060(@pxref{confirmation requests}).
9e6c4bd5 33061
922fbb7b
AC
33062@node Prompting
33063@section Annotation for @value{GDBN} Input
33064
33065@cindex annotations for prompts
33066When @value{GDBN} prompts for input, it annotates this fact so it is possible
33067to know when to send output, when the output from a given command is
33068over, etc.
33069
33070Different kinds of input each have a different @dfn{input type}. Each
33071input type has three annotations: a @code{pre-} annotation, which
33072denotes the beginning of any prompt which is being output, a plain
33073annotation, which denotes the end of the prompt, and then a @code{post-}
33074annotation which denotes the end of any echo which may (or may not) be
33075associated with the input. For example, the @code{prompt} input type
33076features the following annotations:
33077
33078@smallexample
33079^Z^Zpre-prompt
33080^Z^Zprompt
33081^Z^Zpost-prompt
33082@end smallexample
33083
33084The input types are
33085
33086@table @code
e5ac9b53
EZ
33087@findex pre-prompt annotation
33088@findex prompt annotation
33089@findex post-prompt annotation
922fbb7b
AC
33090@item prompt
33091When @value{GDBN} is prompting for a command (the main @value{GDBN} prompt).
33092
e5ac9b53
EZ
33093@findex pre-commands annotation
33094@findex commands annotation
33095@findex post-commands annotation
922fbb7b
AC
33096@item commands
33097When @value{GDBN} prompts for a set of commands, like in the @code{commands}
33098command. The annotations are repeated for each command which is input.
33099
e5ac9b53
EZ
33100@findex pre-overload-choice annotation
33101@findex overload-choice annotation
33102@findex post-overload-choice annotation
922fbb7b
AC
33103@item overload-choice
33104When @value{GDBN} wants the user to select between various overloaded functions.
33105
e5ac9b53
EZ
33106@findex pre-query annotation
33107@findex query annotation
33108@findex post-query annotation
922fbb7b
AC
33109@item query
33110When @value{GDBN} wants the user to confirm a potentially dangerous operation.
33111
e5ac9b53
EZ
33112@findex pre-prompt-for-continue annotation
33113@findex prompt-for-continue annotation
33114@findex post-prompt-for-continue annotation
922fbb7b
AC
33115@item prompt-for-continue
33116When @value{GDBN} is asking the user to press return to continue. Note: Don't
33117expect this to work well; instead use @code{set height 0} to disable
33118prompting. This is because the counting of lines is buggy in the
33119presence of annotations.
33120@end table
33121
33122@node Errors
33123@section Errors
33124@cindex annotations for errors, warnings and interrupts
33125
e5ac9b53 33126@findex quit annotation
922fbb7b
AC
33127@smallexample
33128^Z^Zquit
33129@end smallexample
33130
33131This annotation occurs right before @value{GDBN} responds to an interrupt.
33132
e5ac9b53 33133@findex error annotation
922fbb7b
AC
33134@smallexample
33135^Z^Zerror
33136@end smallexample
33137
33138This annotation occurs right before @value{GDBN} responds to an error.
33139
33140Quit and error annotations indicate that any annotations which @value{GDBN} was
33141in the middle of may end abruptly. For example, if a
33142@code{value-history-begin} annotation is followed by a @code{error}, one
33143cannot expect to receive the matching @code{value-history-end}. One
33144cannot expect not to receive it either, however; an error annotation
33145does not necessarily mean that @value{GDBN} is immediately returning all the way
33146to the top level.
33147
e5ac9b53 33148@findex error-begin annotation
922fbb7b
AC
33149A quit or error annotation may be preceded by
33150
33151@smallexample
33152^Z^Zerror-begin
33153@end smallexample
33154
33155Any output between that and the quit or error annotation is the error
33156message.
33157
33158Warning messages are not yet annotated.
33159@c If we want to change that, need to fix warning(), type_error(),
33160@c range_error(), and possibly other places.
33161
922fbb7b
AC
33162@node Invalidation
33163@section Invalidation Notices
33164
33165@cindex annotations for invalidation messages
33166The following annotations say that certain pieces of state may have
33167changed.
33168
33169@table @code
e5ac9b53 33170@findex frames-invalid annotation
922fbb7b
AC
33171@item ^Z^Zframes-invalid
33172
33173The frames (for example, output from the @code{backtrace} command) may
33174have changed.
33175
e5ac9b53 33176@findex breakpoints-invalid annotation
922fbb7b
AC
33177@item ^Z^Zbreakpoints-invalid
33178
33179The breakpoints may have changed. For example, the user just added or
33180deleted a breakpoint.
33181@end table
33182
33183@node Annotations for Running
33184@section Running the Program
33185@cindex annotations for running programs
33186
e5ac9b53
EZ
33187@findex starting annotation
33188@findex stopping annotation
922fbb7b 33189When the program starts executing due to a @value{GDBN} command such as
b383017d 33190@code{step} or @code{continue},
922fbb7b
AC
33191
33192@smallexample
33193^Z^Zstarting
33194@end smallexample
33195
b383017d 33196is output. When the program stops,
922fbb7b
AC
33197
33198@smallexample
33199^Z^Zstopped
33200@end smallexample
33201
33202is output. Before the @code{stopped} annotation, a variety of
33203annotations describe how the program stopped.
33204
33205@table @code
e5ac9b53 33206@findex exited annotation
922fbb7b
AC
33207@item ^Z^Zexited @var{exit-status}
33208The program exited, and @var{exit-status} is the exit status (zero for
33209successful exit, otherwise nonzero).
33210
e5ac9b53
EZ
33211@findex signalled annotation
33212@findex signal-name annotation
33213@findex signal-name-end annotation
33214@findex signal-string annotation
33215@findex signal-string-end annotation
922fbb7b
AC
33216@item ^Z^Zsignalled
33217The program exited with a signal. After the @code{^Z^Zsignalled}, the
33218annotation continues:
33219
33220@smallexample
33221@var{intro-text}
33222^Z^Zsignal-name
33223@var{name}
33224^Z^Zsignal-name-end
33225@var{middle-text}
33226^Z^Zsignal-string
33227@var{string}
33228^Z^Zsignal-string-end
33229@var{end-text}
33230@end smallexample
33231
33232@noindent
33233where @var{name} is the name of the signal, such as @code{SIGILL} or
33234@code{SIGSEGV}, and @var{string} is the explanation of the signal, such
33235as @code{Illegal Instruction} or @code{Segmentation fault}.
33236@var{intro-text}, @var{middle-text}, and @var{end-text} are for the
33237user's benefit and have no particular format.
33238
e5ac9b53 33239@findex signal annotation
922fbb7b
AC
33240@item ^Z^Zsignal
33241The syntax of this annotation is just like @code{signalled}, but @value{GDBN} is
33242just saying that the program received the signal, not that it was
33243terminated with it.
33244
e5ac9b53 33245@findex breakpoint annotation
922fbb7b
AC
33246@item ^Z^Zbreakpoint @var{number}
33247The program hit breakpoint number @var{number}.
33248
e5ac9b53 33249@findex watchpoint annotation
922fbb7b
AC
33250@item ^Z^Zwatchpoint @var{number}
33251The program hit watchpoint number @var{number}.
33252@end table
33253
33254@node Source Annotations
33255@section Displaying Source
33256@cindex annotations for source display
33257
e5ac9b53 33258@findex source annotation
922fbb7b
AC
33259The following annotation is used instead of displaying source code:
33260
33261@smallexample
33262^Z^Zsource @var{filename}:@var{line}:@var{character}:@var{middle}:@var{addr}
33263@end smallexample
33264
33265where @var{filename} is an absolute file name indicating which source
33266file, @var{line} is the line number within that file (where 1 is the
33267first line in the file), @var{character} is the character position
33268within the file (where 0 is the first character in the file) (for most
33269debug formats this will necessarily point to the beginning of a line),
33270@var{middle} is @samp{middle} if @var{addr} is in the middle of the
33271line, or @samp{beg} if @var{addr} is at the beginning of the line, and
33272@var{addr} is the address in the target program associated with the
33273source which is being displayed. @var{addr} is in the form @samp{0x}
33274followed by one or more lowercase hex digits (note that this does not
33275depend on the language).
33276
4efc6507
DE
33277@node JIT Interface
33278@chapter JIT Compilation Interface
33279@cindex just-in-time compilation
33280@cindex JIT compilation interface
33281
33282This chapter documents @value{GDBN}'s @dfn{just-in-time} (JIT) compilation
33283interface. A JIT compiler is a program or library that generates native
33284executable code at runtime and executes it, usually in order to achieve good
33285performance while maintaining platform independence.
33286
33287Programs that use JIT compilation are normally difficult to debug because
33288portions of their code are generated at runtime, instead of being loaded from
33289object files, which is where @value{GDBN} normally finds the program's symbols
33290and debug information. In order to debug programs that use JIT compilation,
33291@value{GDBN} has an interface that allows the program to register in-memory
33292symbol files with @value{GDBN} at runtime.
33293
33294If you are using @value{GDBN} to debug a program that uses this interface, then
33295it should work transparently so long as you have not stripped the binary. If
33296you are developing a JIT compiler, then the interface is documented in the rest
33297of this chapter. At this time, the only known client of this interface is the
33298LLVM JIT.
33299
33300Broadly speaking, the JIT interface mirrors the dynamic loader interface. The
33301JIT compiler communicates with @value{GDBN} by writing data into a global
33302variable and calling a fuction at a well-known symbol. When @value{GDBN}
33303attaches, it reads a linked list of symbol files from the global variable to
33304find existing code, and puts a breakpoint in the function so that it can find
33305out about additional code.
33306
33307@menu
33308* Declarations:: Relevant C struct declarations
33309* Registering Code:: Steps to register code
33310* Unregistering Code:: Steps to unregister code
f85b53f8 33311* Custom Debug Info:: Emit debug information in a custom format
4efc6507
DE
33312@end menu
33313
33314@node Declarations
33315@section JIT Declarations
33316
33317These are the relevant struct declarations that a C program should include to
33318implement the interface:
33319
33320@smallexample
33321typedef enum
33322@{
33323 JIT_NOACTION = 0,
33324 JIT_REGISTER_FN,
33325 JIT_UNREGISTER_FN
33326@} jit_actions_t;
33327
33328struct jit_code_entry
33329@{
33330 struct jit_code_entry *next_entry;
33331 struct jit_code_entry *prev_entry;
33332 const char *symfile_addr;
33333 uint64_t symfile_size;
33334@};
33335
33336struct jit_descriptor
33337@{
33338 uint32_t version;
33339 /* This type should be jit_actions_t, but we use uint32_t
33340 to be explicit about the bitwidth. */
33341 uint32_t action_flag;
33342 struct jit_code_entry *relevant_entry;
33343 struct jit_code_entry *first_entry;
33344@};
33345
33346/* GDB puts a breakpoint in this function. */
33347void __attribute__((noinline)) __jit_debug_register_code() @{ @};
33348
33349/* Make sure to specify the version statically, because the
33350 debugger may check the version before we can set it. */
33351struct jit_descriptor __jit_debug_descriptor = @{ 1, 0, 0, 0 @};
33352@end smallexample
33353
33354If the JIT is multi-threaded, then it is important that the JIT synchronize any
33355modifications to this global data properly, which can easily be done by putting
33356a global mutex around modifications to these structures.
33357
33358@node Registering Code
33359@section Registering Code
33360
33361To register code with @value{GDBN}, the JIT should follow this protocol:
33362
33363@itemize @bullet
33364@item
33365Generate an object file in memory with symbols and other desired debug
33366information. The file must include the virtual addresses of the sections.
33367
33368@item
33369Create a code entry for the file, which gives the start and size of the symbol
33370file.
33371
33372@item
33373Add it to the linked list in the JIT descriptor.
33374
33375@item
33376Point the relevant_entry field of the descriptor at the entry.
33377
33378@item
33379Set @code{action_flag} to @code{JIT_REGISTER} and call
33380@code{__jit_debug_register_code}.
33381@end itemize
33382
33383When @value{GDBN} is attached and the breakpoint fires, @value{GDBN} uses the
33384@code{relevant_entry} pointer so it doesn't have to walk the list looking for
33385new code. However, the linked list must still be maintained in order to allow
33386@value{GDBN} to attach to a running process and still find the symbol files.
33387
33388@node Unregistering Code
33389@section Unregistering Code
33390
33391If code is freed, then the JIT should use the following protocol:
33392
33393@itemize @bullet
33394@item
33395Remove the code entry corresponding to the code from the linked list.
33396
33397@item
33398Point the @code{relevant_entry} field of the descriptor at the code entry.
33399
33400@item
33401Set @code{action_flag} to @code{JIT_UNREGISTER} and call
33402@code{__jit_debug_register_code}.
33403@end itemize
33404
33405If the JIT frees or recompiles code without unregistering it, then @value{GDBN}
33406and the JIT will leak the memory used for the associated symbol files.
33407
f85b53f8
SD
33408@node Custom Debug Info
33409@section Custom Debug Info
33410@cindex custom JIT debug info
33411@cindex JIT debug info reader
33412
33413Generating debug information in platform-native file formats (like ELF
33414or COFF) may be an overkill for JIT compilers; especially if all the
33415debug info is used for is displaying a meaningful backtrace. The
33416issue can be resolved by having the JIT writers decide on a debug info
33417format and also provide a reader that parses the debug info generated
33418by the JIT compiler. This section gives a brief overview on writing
33419such a parser. More specific details can be found in the source file
33420@file{gdb/jit-reader.in}, which is also installed as a header at
33421@file{@var{includedir}/gdb/jit-reader.h} for easy inclusion.
33422
33423The reader is implemented as a shared object (so this functionality is
33424not available on platforms which don't allow loading shared objects at
33425runtime). Two @value{GDBN} commands, @code{jit-reader-load} and
33426@code{jit-reader-unload} are provided, to be used to load and unload
33427the readers from a preconfigured directory. Once loaded, the shared
33428object is used the parse the debug information emitted by the JIT
33429compiler.
33430
33431@menu
33432* Using JIT Debug Info Readers:: How to use supplied readers correctly
33433* Writing JIT Debug Info Readers:: Creating a debug-info reader
33434@end menu
33435
33436@node Using JIT Debug Info Readers
33437@subsection Using JIT Debug Info Readers
33438@kindex jit-reader-load
33439@kindex jit-reader-unload
33440
33441Readers can be loaded and unloaded using the @code{jit-reader-load}
33442and @code{jit-reader-unload} commands.
33443
33444@table @code
33445@item jit-reader-load @var{reader-name}
33446Load the JIT reader named @var{reader-name}. On a UNIX system, this
33447will usually load @file{@var{libdir}/gdb/@var{reader-name}}, where
33448@var{libdir} is the system library directory, usually
33449@file{/usr/local/lib}. Only one reader can be active at a time;
33450trying to load a second reader when one is already loaded will result
33451in @value{GDBN} reporting an error. A new JIT reader can be loaded by
33452first unloading the current one using @code{jit-reader-load} and then
33453invoking @code{jit-reader-load}.
33454
33455@item jit-reader-unload
33456Unload the currently loaded JIT reader.
33457
33458@end table
33459
33460@node Writing JIT Debug Info Readers
33461@subsection Writing JIT Debug Info Readers
33462@cindex writing JIT debug info readers
33463
33464As mentioned, a reader is essentially a shared object conforming to a
33465certain ABI. This ABI is described in @file{jit-reader.h}.
33466
33467@file{jit-reader.h} defines the structures, macros and functions
33468required to write a reader. It is installed (along with
33469@value{GDBN}), in @file{@var{includedir}/gdb} where @var{includedir} is
33470the system include directory.
33471
33472Readers need to be released under a GPL compatible license. A reader
33473can be declared as released under such a license by placing the macro
33474@code{GDB_DECLARE_GPL_COMPATIBLE_READER} in a source file.
33475
33476The entry point for readers is the symbol @code{gdb_init_reader},
33477which is expected to be a function with the prototype
33478
33479@findex gdb_init_reader
33480@smallexample
33481extern struct gdb_reader_funcs *gdb_init_reader (void);
33482@end smallexample
33483
33484@cindex @code{struct gdb_reader_funcs}
33485
33486@code{struct gdb_reader_funcs} contains a set of pointers to callback
33487functions. These functions are executed to read the debug info
33488generated by the JIT compiler (@code{read}), to unwind stack frames
33489(@code{unwind}) and to create canonical frame IDs
33490(@code{get_Frame_id}). It also has a callback that is called when the
33491reader is being unloaded (@code{destroy}). The struct looks like this
33492
33493@smallexample
33494struct gdb_reader_funcs
33495@{
33496 /* Must be set to GDB_READER_INTERFACE_VERSION. */
33497 int reader_version;
33498
33499 /* For use by the reader. */
33500 void *priv_data;
33501
33502 gdb_read_debug_info *read;
33503 gdb_unwind_frame *unwind;
33504 gdb_get_frame_id *get_frame_id;
33505 gdb_destroy_reader *destroy;
33506@};
33507@end smallexample
33508
33509@cindex @code{struct gdb_symbol_callbacks}
33510@cindex @code{struct gdb_unwind_callbacks}
33511
33512The callbacks are provided with another set of callbacks by
33513@value{GDBN} to do their job. For @code{read}, these callbacks are
33514passed in a @code{struct gdb_symbol_callbacks} and for @code{unwind}
33515and @code{get_frame_id}, in a @code{struct gdb_unwind_callbacks}.
33516@code{struct gdb_symbol_callbacks} has callbacks to create new object
33517files and new symbol tables inside those object files. @code{struct
33518gdb_unwind_callbacks} has callbacks to read registers off the current
33519frame and to write out the values of the registers in the previous
33520frame. Both have a callback (@code{target_read}) to read bytes off the
33521target's address space.
33522
d1feda86
YQ
33523@node In-Process Agent
33524@chapter In-Process Agent
33525@cindex debugging agent
33526The traditional debugging model is conceptually low-speed, but works fine,
33527because most bugs can be reproduced in debugging-mode execution. However,
33528as multi-core or many-core processors are becoming mainstream, and
33529multi-threaded programs become more and more popular, there should be more
33530and more bugs that only manifest themselves at normal-mode execution, for
33531example, thread races, because debugger's interference with the program's
33532timing may conceal the bugs. On the other hand, in some applications,
33533it is not feasible for the debugger to interrupt the program's execution
33534long enough for the developer to learn anything helpful about its behavior.
33535If the program's correctness depends on its real-time behavior, delays
33536introduced by a debugger might cause the program to fail, even when the
33537code itself is correct. It is useful to be able to observe the program's
33538behavior without interrupting it.
33539
33540Therefore, traditional debugging model is too intrusive to reproduce
33541some bugs. In order to reduce the interference with the program, we can
33542reduce the number of operations performed by debugger. The
33543@dfn{In-Process Agent}, a shared library, is running within the same
33544process with inferior, and is able to perform some debugging operations
33545itself. As a result, debugger is only involved when necessary, and
33546performance of debugging can be improved accordingly. Note that
33547interference with program can be reduced but can't be removed completely,
33548because the in-process agent will still stop or slow down the program.
33549
33550The in-process agent can interpret and execute Agent Expressions
33551(@pxref{Agent Expressions}) during performing debugging operations. The
33552agent expressions can be used for different purposes, such as collecting
33553data in tracepoints, and condition evaluation in breakpoints.
33554
33555@anchor{Control Agent}
33556You can control whether the in-process agent is used as an aid for
33557debugging with the following commands:
33558
33559@table @code
33560@kindex set agent on
33561@item set agent on
33562Causes the in-process agent to perform some operations on behalf of the
33563debugger. Just which operations requested by the user will be done
33564by the in-process agent depends on the its capabilities. For example,
33565if you request to evaluate breakpoint conditions in the in-process agent,
33566and the in-process agent has such capability as well, then breakpoint
33567conditions will be evaluated in the in-process agent.
33568
33569@kindex set agent off
33570@item set agent off
33571Disables execution of debugging operations by the in-process agent. All
33572of the operations will be performed by @value{GDBN}.
33573
33574@kindex show agent
33575@item show agent
33576Display the current setting of execution of debugging operations by
33577the in-process agent.
33578@end table
33579
16bdd41f
YQ
33580@menu
33581* In-Process Agent Protocol::
33582@end menu
33583
33584@node In-Process Agent Protocol
33585@section In-Process Agent Protocol
33586@cindex in-process agent protocol
33587
33588The in-process agent is able to communicate with both @value{GDBN} and
33589GDBserver (@pxref{In-Process Agent}). This section documents the protocol
33590used for communications between @value{GDBN} or GDBserver and the IPA.
33591In general, @value{GDBN} or GDBserver sends commands
33592(@pxref{IPA Protocol Commands}) and data to in-process agent, and then
33593in-process agent replies back with the return result of the command, or
33594some other information. The data sent to in-process agent is composed
33595of primitive data types, such as 4-byte or 8-byte type, and composite
33596types, which are called objects (@pxref{IPA Protocol Objects}).
33597
33598@menu
33599* IPA Protocol Objects::
33600* IPA Protocol Commands::
33601@end menu
33602
33603@node IPA Protocol Objects
33604@subsection IPA Protocol Objects
33605@cindex ipa protocol objects
33606
33607The commands sent to and results received from agent may contain some
33608complex data types called @dfn{objects}.
33609
33610The in-process agent is running on the same machine with @value{GDBN}
33611or GDBserver, so it doesn't have to handle as much differences between
33612two ends as remote protocol (@pxref{Remote Protocol}) tries to handle.
33613However, there are still some differences of two ends in two processes:
33614
33615@enumerate
33616@item
33617word size. On some 64-bit machines, @value{GDBN} or GDBserver can be
33618compiled as a 64-bit executable, while in-process agent is a 32-bit one.
33619@item
33620ABI. Some machines may have multiple types of ABI, @value{GDBN} or
33621GDBserver is compiled with one, and in-process agent is compiled with
33622the other one.
33623@end enumerate
33624
33625Here are the IPA Protocol Objects:
33626
33627@enumerate
33628@item
33629agent expression object. It represents an agent expression
33630(@pxref{Agent Expressions}).
33631@anchor{agent expression object}
33632@item
33633tracepoint action object. It represents a tracepoint action
33634(@pxref{Tracepoint Actions,,Tracepoint Action Lists}) to collect registers,
33635memory, static trace data and to evaluate expression.
33636@anchor{tracepoint action object}
33637@item
33638tracepoint object. It represents a tracepoint (@pxref{Tracepoints}).
33639@anchor{tracepoint object}
33640
33641@end enumerate
33642
33643The following table describes important attributes of each IPA protocol
33644object:
33645
33646@multitable @columnfractions .30 .20 .50
33647@headitem Name @tab Size @tab Description
33648@item @emph{agent expression object} @tab @tab
33649@item length @tab 4 @tab length of bytes code
33650@item byte code @tab @var{length} @tab contents of byte code
33651@item @emph{tracepoint action for collecting memory} @tab @tab
33652@item 'M' @tab 1 @tab type of tracepoint action
33653@item addr @tab 8 @tab if @var{basereg} is @samp{-1}, @var{addr} is the
33654address of the lowest byte to collect, otherwise @var{addr} is the offset
33655of @var{basereg} for memory collecting.
33656@item len @tab 8 @tab length of memory for collecting
33657@item basereg @tab 4 @tab the register number containing the starting
33658memory address for collecting.
33659@item @emph{tracepoint action for collecting registers} @tab @tab
33660@item 'R' @tab 1 @tab type of tracepoint action
33661@item @emph{tracepoint action for collecting static trace data} @tab @tab
33662@item 'L' @tab 1 @tab type of tracepoint action
33663@item @emph{tracepoint action for expression evaluation} @tab @tab
33664@item 'X' @tab 1 @tab type of tracepoint action
33665@item agent expression @tab length of @tab @ref{agent expression object}
33666@item @emph{tracepoint object} @tab @tab
33667@item number @tab 4 @tab number of tracepoint
33668@item address @tab 8 @tab address of tracepoint inserted on
33669@item type @tab 4 @tab type of tracepoint
33670@item enabled @tab 1 @tab enable or disable of tracepoint
33671@item step_count @tab 8 @tab step
33672@item pass_count @tab 8 @tab pass
33673@item numactions @tab 4 @tab number of tracepoint actions
33674@item hit count @tab 8 @tab hit count
33675@item trace frame usage @tab 8 @tab trace frame usage
33676@item compiled_cond @tab 8 @tab compiled condition
33677@item orig_size @tab 8 @tab orig size
33678@item condition @tab 4 if condition is NULL otherwise length of
33679@ref{agent expression object}
33680@tab zero if condition is NULL, otherwise is
33681@ref{agent expression object}
33682@item actions @tab variable
33683@tab numactions number of @ref{tracepoint action object}
33684@end multitable
33685
33686@node IPA Protocol Commands
33687@subsection IPA Protocol Commands
33688@cindex ipa protocol commands
33689
33690The spaces in each command are delimiters to ease reading this commands
33691specification. They don't exist in real commands.
33692
33693@table @samp
33694
33695@item FastTrace:@var{tracepoint_object} @var{gdb_jump_pad_head}
33696Installs a new fast tracepoint described by @var{tracepoint_object}
33697(@pxref{tracepoint object}). @var{gdb_jump_pad_head}, 8-byte long, is the
33698head of @dfn{jumppad}, which is used to jump to data collection routine
33699in IPA finally.
33700
33701Replies:
33702@table @samp
33703@item OK @var{target_address} @var{gdb_jump_pad_head} @var{fjump_size} @var{fjump}
33704@var{target_address} is address of tracepoint in the inferior.
33705@var{gdb_jump_pad_head} is updated head of jumppad. Both of
33706@var{target_address} and @var{gdb_jump_pad_head} are 8-byte long.
33707@var{fjump} contains a sequence of instructions jump to jumppad entry.
33708@var{fjump_size}, 4-byte long, is the size of @var{fjump}.
33709@item E @var{NN}
33710for an error
33711
33712@end table
33713
7255706c
YQ
33714@item close
33715Closes the in-process agent. This command is sent when @value{GDBN} or GDBserver
33716is about to kill inferiors.
33717
16bdd41f
YQ
33718@item qTfSTM
33719@xref{qTfSTM}.
33720@item qTsSTM
33721@xref{qTsSTM}.
33722@item qTSTMat
33723@xref{qTSTMat}.
33724@item probe_marker_at:@var{address}
33725Asks in-process agent to probe the marker at @var{address}.
33726
33727Replies:
33728@table @samp
33729@item E @var{NN}
33730for an error
33731@end table
33732@item unprobe_marker_at:@var{address}
33733Asks in-process agent to unprobe the marker at @var{address}.
33734@end table
33735
8e04817f
AC
33736@node GDB Bugs
33737@chapter Reporting Bugs in @value{GDBN}
33738@cindex bugs in @value{GDBN}
33739@cindex reporting bugs in @value{GDBN}
c906108c 33740
8e04817f 33741Your bug reports play an essential role in making @value{GDBN} reliable.
c906108c 33742
8e04817f
AC
33743Reporting a bug may help you by bringing a solution to your problem, or it
33744may not. But in any case the principal function of a bug report is to help
33745the entire community by making the next version of @value{GDBN} work better. Bug
33746reports are your contribution to the maintenance of @value{GDBN}.
c906108c 33747
8e04817f
AC
33748In order for a bug report to serve its purpose, you must include the
33749information that enables us to fix the bug.
c4555f82
SC
33750
33751@menu
8e04817f
AC
33752* Bug Criteria:: Have you found a bug?
33753* Bug Reporting:: How to report bugs
c4555f82
SC
33754@end menu
33755
8e04817f 33756@node Bug Criteria
79a6e687 33757@section Have You Found a Bug?
8e04817f 33758@cindex bug criteria
c4555f82 33759
8e04817f 33760If you are not sure whether you have found a bug, here are some guidelines:
c4555f82
SC
33761
33762@itemize @bullet
8e04817f
AC
33763@cindex fatal signal
33764@cindex debugger crash
33765@cindex crash of debugger
c4555f82 33766@item
8e04817f
AC
33767If the debugger gets a fatal signal, for any input whatever, that is a
33768@value{GDBN} bug. Reliable debuggers never crash.
33769
33770@cindex error on valid input
33771@item
33772If @value{GDBN} produces an error message for valid input, that is a
33773bug. (Note that if you're cross debugging, the problem may also be
33774somewhere in the connection to the target.)
c4555f82 33775
8e04817f 33776@cindex invalid input
c4555f82 33777@item
8e04817f
AC
33778If @value{GDBN} does not produce an error message for invalid input,
33779that is a bug. However, you should note that your idea of
33780``invalid input'' might be our idea of ``an extension'' or ``support
33781for traditional practice''.
33782
33783@item
33784If you are an experienced user of debugging tools, your suggestions
33785for improvement of @value{GDBN} are welcome in any case.
c4555f82
SC
33786@end itemize
33787
8e04817f 33788@node Bug Reporting
79a6e687 33789@section How to Report Bugs
8e04817f
AC
33790@cindex bug reports
33791@cindex @value{GDBN} bugs, reporting
33792
33793A number of companies and individuals offer support for @sc{gnu} products.
33794If you obtained @value{GDBN} from a support organization, we recommend you
33795contact that organization first.
33796
33797You can find contact information for many support companies and
33798individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
33799distribution.
33800@c should add a web page ref...
33801
c16158bc
JM
33802@ifset BUGURL
33803@ifset BUGURL_DEFAULT
129188f6 33804In any event, we also recommend that you submit bug reports for
d3e8051b 33805@value{GDBN}. The preferred method is to submit them directly using
129188f6
AC
33806@uref{http://www.gnu.org/software/gdb/bugs/, @value{GDBN}'s Bugs web
33807page}. Alternatively, the @email{bug-gdb@@gnu.org, e-mail gateway} can
33808be used.
8e04817f
AC
33809
33810@strong{Do not send bug reports to @samp{info-gdb}, or to
33811@samp{help-gdb}, or to any newsgroups.} Most users of @value{GDBN} do
33812not want to receive bug reports. Those that do have arranged to receive
33813@samp{bug-gdb}.
33814
33815The mailing list @samp{bug-gdb} has a newsgroup @samp{gnu.gdb.bug} which
33816serves as a repeater. The mailing list and the newsgroup carry exactly
33817the same messages. Often people think of posting bug reports to the
33818newsgroup instead of mailing them. This appears to work, but it has one
33819problem which can be crucial: a newsgroup posting often lacks a mail
33820path back to the sender. Thus, if we need to ask for more information,
33821we may be unable to reach you. For this reason, it is better to send
33822bug reports to the mailing list.
c16158bc
JM
33823@end ifset
33824@ifclear BUGURL_DEFAULT
33825In any event, we also recommend that you submit bug reports for
33826@value{GDBN} to @value{BUGURL}.
33827@end ifclear
33828@end ifset
c4555f82 33829
8e04817f
AC
33830The fundamental principle of reporting bugs usefully is this:
33831@strong{report all the facts}. If you are not sure whether to state a
33832fact or leave it out, state it!
c4555f82 33833
8e04817f
AC
33834Often people omit facts because they think they know what causes the
33835problem and assume that some details do not matter. Thus, you might
33836assume that the name of the variable you use in an example does not matter.
33837Well, probably it does not, but one cannot be sure. Perhaps the bug is a
33838stray memory reference which happens to fetch from the location where that
33839name is stored in memory; perhaps, if the name were different, the contents
33840of that location would fool the debugger into doing the right thing despite
33841the bug. Play it safe and give a specific, complete example. That is the
33842easiest thing for you to do, and the most helpful.
c4555f82 33843
8e04817f
AC
33844Keep in mind that the purpose of a bug report is to enable us to fix the
33845bug. It may be that the bug has been reported previously, but neither
33846you nor we can know that unless your bug report is complete and
33847self-contained.
c4555f82 33848
8e04817f
AC
33849Sometimes people give a few sketchy facts and ask, ``Does this ring a
33850bell?'' Those bug reports are useless, and we urge everyone to
33851@emph{refuse to respond to them} except to chide the sender to report
33852bugs properly.
33853
33854To enable us to fix the bug, you should include all these things:
c4555f82
SC
33855
33856@itemize @bullet
33857@item
8e04817f
AC
33858The version of @value{GDBN}. @value{GDBN} announces it if you start
33859with no arguments; you can also print it at any time using @code{show
33860version}.
c4555f82 33861
8e04817f
AC
33862Without this, we will not know whether there is any point in looking for
33863the bug in the current version of @value{GDBN}.
c4555f82
SC
33864
33865@item
8e04817f
AC
33866The type of machine you are using, and the operating system name and
33867version number.
c4555f82
SC
33868
33869@item
c1468174 33870What compiler (and its version) was used to compile @value{GDBN}---e.g.@:
8e04817f 33871``@value{GCC}--2.8.1''.
c4555f82
SC
33872
33873@item
8e04817f 33874What compiler (and its version) was used to compile the program you are
c1468174 33875debugging---e.g.@: ``@value{GCC}--2.8.1'', or ``HP92453-01 A.10.32.03 HP
3f94c067
BW
33876C Compiler''. For @value{NGCC}, you can say @kbd{@value{GCC} --version}
33877to get this information; for other compilers, see the documentation for
33878those compilers.
c4555f82 33879
8e04817f
AC
33880@item
33881The command arguments you gave the compiler to compile your example and
33882observe the bug. For example, did you use @samp{-O}? To guarantee
33883you will not omit something important, list them all. A copy of the
33884Makefile (or the output from make) is sufficient.
c4555f82 33885
8e04817f
AC
33886If we were to try to guess the arguments, we would probably guess wrong
33887and then we might not encounter the bug.
c4555f82 33888
8e04817f
AC
33889@item
33890A complete input script, and all necessary source files, that will
33891reproduce the bug.
c4555f82 33892
8e04817f
AC
33893@item
33894A description of what behavior you observe that you believe is
33895incorrect. For example, ``It gets a fatal signal.''
c4555f82 33896
8e04817f
AC
33897Of course, if the bug is that @value{GDBN} gets a fatal signal, then we
33898will certainly notice it. But if the bug is incorrect output, we might
33899not notice unless it is glaringly wrong. You might as well not give us
33900a chance to make a mistake.
c4555f82 33901
8e04817f
AC
33902Even if the problem you experience is a fatal signal, you should still
33903say so explicitly. Suppose something strange is going on, such as, your
33904copy of @value{GDBN} is out of synch, or you have encountered a bug in
33905the C library on your system. (This has happened!) Your copy might
33906crash and ours would not. If you told us to expect a crash, then when
33907ours fails to crash, we would know that the bug was not happening for
33908us. If you had not told us to expect a crash, then we would not be able
33909to draw any conclusion from our observations.
c4555f82 33910
e0c07bf0
MC
33911@pindex script
33912@cindex recording a session script
33913To collect all this information, you can use a session recording program
33914such as @command{script}, which is available on many Unix systems.
33915Just run your @value{GDBN} session inside @command{script} and then
33916include the @file{typescript} file with your bug report.
33917
33918Another way to record a @value{GDBN} session is to run @value{GDBN}
33919inside Emacs and then save the entire buffer to a file.
33920
8e04817f
AC
33921@item
33922If you wish to suggest changes to the @value{GDBN} source, send us context
33923diffs. If you even discuss something in the @value{GDBN} source, refer to
33924it by context, not by line number.
c4555f82 33925
8e04817f
AC
33926The line numbers in our development sources will not match those in your
33927sources. Your line numbers would convey no useful information to us.
c4555f82 33928
8e04817f 33929@end itemize
c4555f82 33930
8e04817f 33931Here are some things that are not necessary:
c4555f82 33932
8e04817f
AC
33933@itemize @bullet
33934@item
33935A description of the envelope of the bug.
c4555f82 33936
8e04817f
AC
33937Often people who encounter a bug spend a lot of time investigating
33938which changes to the input file will make the bug go away and which
33939changes will not affect it.
c4555f82 33940
8e04817f
AC
33941This is often time consuming and not very useful, because the way we
33942will find the bug is by running a single example under the debugger
33943with breakpoints, not by pure deduction from a series of examples.
33944We recommend that you save your time for something else.
c4555f82 33945
8e04817f
AC
33946Of course, if you can find a simpler example to report @emph{instead}
33947of the original one, that is a convenience for us. Errors in the
33948output will be easier to spot, running under the debugger will take
33949less time, and so on.
c4555f82 33950
8e04817f
AC
33951However, simplification is not vital; if you do not want to do this,
33952report the bug anyway and send us the entire test case you used.
c4555f82 33953
8e04817f
AC
33954@item
33955A patch for the bug.
c4555f82 33956
8e04817f
AC
33957A patch for the bug does help us if it is a good one. But do not omit
33958the necessary information, such as the test case, on the assumption that
33959a patch is all we need. We might see problems with your patch and decide
33960to fix the problem another way, or we might not understand it at all.
c4555f82 33961
8e04817f
AC
33962Sometimes with a program as complicated as @value{GDBN} it is very hard to
33963construct an example that will make the program follow a certain path
33964through the code. If you do not send us the example, we will not be able
33965to construct one, so we will not be able to verify that the bug is fixed.
c4555f82 33966
8e04817f
AC
33967And if we cannot understand what bug you are trying to fix, or why your
33968patch should be an improvement, we will not install it. A test case will
33969help us to understand.
c4555f82 33970
8e04817f
AC
33971@item
33972A guess about what the bug is or what it depends on.
c4555f82 33973
8e04817f
AC
33974Such guesses are usually wrong. Even we cannot guess right about such
33975things without first using the debugger to find the facts.
33976@end itemize
c4555f82 33977
8e04817f
AC
33978@c The readline documentation is distributed with the readline code
33979@c and consists of the two following files:
cc88a640
JK
33980@c rluser.texi
33981@c hsuser.texi
8e04817f
AC
33982@c Use -I with makeinfo to point to the appropriate directory,
33983@c environment var TEXINPUTS with TeX.
39037522 33984@ifclear SYSTEM_READLINE
5bdf8622 33985@include rluser.texi
cc88a640 33986@include hsuser.texi
39037522 33987@end ifclear
c4555f82 33988
4ceed123
JB
33989@node In Memoriam
33990@appendix In Memoriam
33991
9ed350ad
JB
33992The @value{GDBN} project mourns the loss of the following long-time
33993contributors:
4ceed123
JB
33994
33995@table @code
33996@item Fred Fish
9ed350ad
JB
33997Fred was a long-standing contributor to @value{GDBN} (1991-2006), and
33998to Free Software in general. Outside of @value{GDBN}, he was known in
33999the Amiga world for his series of Fish Disks, and the GeekGadget project.
4ceed123
JB
34000
34001@item Michael Snyder
9ed350ad
JB
34002Michael was one of the Global Maintainers of the @value{GDBN} project,
34003with contributions recorded as early as 1996, until 2011. In addition
34004to his day to day participation, he was a large driving force behind
34005adding Reverse Debugging to @value{GDBN}.
4ceed123
JB
34006@end table
34007
34008Beyond their technical contributions to the project, they were also
34009enjoyable members of the Free Software Community. We will miss them.
c4555f82 34010
8e04817f
AC
34011@node Formatting Documentation
34012@appendix Formatting Documentation
c4555f82 34013
8e04817f
AC
34014@cindex @value{GDBN} reference card
34015@cindex reference card
34016The @value{GDBN} 4 release includes an already-formatted reference card, ready
34017for printing with PostScript or Ghostscript, in the @file{gdb}
34018subdirectory of the main source directory@footnote{In
34019@file{gdb-@value{GDBVN}/gdb/refcard.ps} of the version @value{GDBVN}
34020release.}. If you can use PostScript or Ghostscript with your printer,
34021you can print the reference card immediately with @file{refcard.ps}.
c4555f82 34022
8e04817f
AC
34023The release also includes the source for the reference card. You
34024can format it, using @TeX{}, by typing:
c4555f82 34025
474c8240 34026@smallexample
8e04817f 34027make refcard.dvi
474c8240 34028@end smallexample
c4555f82 34029
8e04817f
AC
34030The @value{GDBN} reference card is designed to print in @dfn{landscape}
34031mode on US ``letter'' size paper;
34032that is, on a sheet 11 inches wide by 8.5 inches
34033high. You will need to specify this form of printing as an option to
34034your @sc{dvi} output program.
c4555f82 34035
8e04817f 34036@cindex documentation
c4555f82 34037
8e04817f
AC
34038All the documentation for @value{GDBN} comes as part of the machine-readable
34039distribution. The documentation is written in Texinfo format, which is
34040a documentation system that uses a single source file to produce both
34041on-line information and a printed manual. You can use one of the Info
34042formatting commands to create the on-line version of the documentation
34043and @TeX{} (or @code{texi2roff}) to typeset the printed version.
c4555f82 34044
8e04817f
AC
34045@value{GDBN} includes an already formatted copy of the on-line Info
34046version of this manual in the @file{gdb} subdirectory. The main Info
34047file is @file{gdb-@value{GDBVN}/gdb/gdb.info}, and it refers to
34048subordinate files matching @samp{gdb.info*} in the same directory. If
34049necessary, you can print out these files, or read them with any editor;
34050but they are easier to read using the @code{info} subsystem in @sc{gnu}
34051Emacs or the standalone @code{info} program, available as part of the
34052@sc{gnu} Texinfo distribution.
c4555f82 34053
8e04817f
AC
34054If you want to format these Info files yourself, you need one of the
34055Info formatting programs, such as @code{texinfo-format-buffer} or
34056@code{makeinfo}.
c4555f82 34057
8e04817f
AC
34058If you have @code{makeinfo} installed, and are in the top level
34059@value{GDBN} source directory (@file{gdb-@value{GDBVN}}, in the case of
34060version @value{GDBVN}), you can make the Info file by typing:
c4555f82 34061
474c8240 34062@smallexample
8e04817f
AC
34063cd gdb
34064make gdb.info
474c8240 34065@end smallexample
c4555f82 34066
8e04817f
AC
34067If you want to typeset and print copies of this manual, you need @TeX{},
34068a program to print its @sc{dvi} output files, and @file{texinfo.tex}, the
34069Texinfo definitions file.
c4555f82 34070
8e04817f
AC
34071@TeX{} is a typesetting program; it does not print files directly, but
34072produces output files called @sc{dvi} files. To print a typeset
34073document, you need a program to print @sc{dvi} files. If your system
34074has @TeX{} installed, chances are it has such a program. The precise
34075command to use depends on your system; @kbd{lpr -d} is common; another
34076(for PostScript devices) is @kbd{dvips}. The @sc{dvi} print command may
34077require a file name without any extension or a @samp{.dvi} extension.
c4555f82 34078
8e04817f
AC
34079@TeX{} also requires a macro definitions file called
34080@file{texinfo.tex}. This file tells @TeX{} how to typeset a document
34081written in Texinfo format. On its own, @TeX{} cannot either read or
34082typeset a Texinfo file. @file{texinfo.tex} is distributed with GDB
34083and is located in the @file{gdb-@var{version-number}/texinfo}
34084directory.
c4555f82 34085
8e04817f 34086If you have @TeX{} and a @sc{dvi} printer program installed, you can
d3e8051b 34087typeset and print this manual. First switch to the @file{gdb}
8e04817f
AC
34088subdirectory of the main source directory (for example, to
34089@file{gdb-@value{GDBVN}/gdb}) and type:
c4555f82 34090
474c8240 34091@smallexample
8e04817f 34092make gdb.dvi
474c8240 34093@end smallexample
c4555f82 34094
8e04817f 34095Then give @file{gdb.dvi} to your @sc{dvi} printing program.
c4555f82 34096
8e04817f
AC
34097@node Installing GDB
34098@appendix Installing @value{GDBN}
8e04817f 34099@cindex installation
c4555f82 34100
7fa2210b
DJ
34101@menu
34102* Requirements:: Requirements for building @value{GDBN}
db2e3e2e 34103* Running Configure:: Invoking the @value{GDBN} @file{configure} script
7fa2210b
DJ
34104* Separate Objdir:: Compiling @value{GDBN} in another directory
34105* Config Names:: Specifying names for hosts and targets
34106* Configure Options:: Summary of options for configure
098b41a6 34107* System-wide configuration:: Having a system-wide init file
7fa2210b
DJ
34108@end menu
34109
34110@node Requirements
79a6e687 34111@section Requirements for Building @value{GDBN}
7fa2210b
DJ
34112@cindex building @value{GDBN}, requirements for
34113
34114Building @value{GDBN} requires various tools and packages to be available.
34115Other packages will be used only if they are found.
34116
79a6e687 34117@heading Tools/Packages Necessary for Building @value{GDBN}
7fa2210b
DJ
34118@table @asis
34119@item ISO C90 compiler
34120@value{GDBN} is written in ISO C90. It should be buildable with any
34121working C90 compiler, e.g.@: GCC.
34122
34123@end table
34124
79a6e687 34125@heading Tools/Packages Optional for Building @value{GDBN}
7fa2210b
DJ
34126@table @asis
34127@item Expat
123dc839 34128@anchor{Expat}
7fa2210b
DJ
34129@value{GDBN} can use the Expat XML parsing library. This library may be
34130included with your operating system distribution; if it is not, you
34131can get the latest version from @url{http://expat.sourceforge.net}.
db2e3e2e 34132The @file{configure} script will search for this library in several
7fa2210b
DJ
34133standard locations; if it is installed in an unusual path, you can
34134use the @option{--with-libexpat-prefix} option to specify its location.
34135
9cceb671
DJ
34136Expat is used for:
34137
34138@itemize @bullet
34139@item
34140Remote protocol memory maps (@pxref{Memory Map Format})
34141@item
34142Target descriptions (@pxref{Target Descriptions})
34143@item
2268b414
JK
34144Remote shared library lists (@xref{Library List Format},
34145or alternatively @pxref{Library List Format for SVR4 Targets})
9cceb671
DJ
34146@item
34147MS-Windows shared libraries (@pxref{Shared Libraries})
b3b9301e
PA
34148@item
34149Traceframe info (@pxref{Traceframe Info Format})
9cceb671 34150@end itemize
7fa2210b 34151
31fffb02
CS
34152@item zlib
34153@cindex compressed debug sections
34154@value{GDBN} will use the @samp{zlib} library, if available, to read
34155compressed debug sections. Some linkers, such as GNU gold, are capable
34156of producing binaries with compressed debug sections. If @value{GDBN}
34157is compiled with @samp{zlib}, it will be able to read the debug
34158information in such binaries.
34159
34160The @samp{zlib} library is likely included with your operating system
34161distribution; if it is not, you can get the latest version from
34162@url{http://zlib.net}.
34163
6c7a06a3
TT
34164@item iconv
34165@value{GDBN}'s features related to character sets (@pxref{Character
34166Sets}) require a functioning @code{iconv} implementation. If you are
34167on a GNU system, then this is provided by the GNU C Library. Some
34168other systems also provide a working @code{iconv}.
34169
478aac75
DE
34170If @value{GDBN} is using the @code{iconv} program which is installed
34171in a non-standard place, you will need to tell @value{GDBN} where to find it.
34172This is done with @option{--with-iconv-bin} which specifies the
34173directory that contains the @code{iconv} program.
34174
34175On systems without @code{iconv}, you can install GNU Libiconv. If you
6c7a06a3
TT
34176have previously installed Libiconv, you can use the
34177@option{--with-libiconv-prefix} option to configure.
34178
34179@value{GDBN}'s top-level @file{configure} and @file{Makefile} will
34180arrange to build Libiconv if a directory named @file{libiconv} appears
34181in the top-most source directory. If Libiconv is built this way, and
34182if the operating system does not provide a suitable @code{iconv}
34183implementation, then the just-built library will automatically be used
34184by @value{GDBN}. One easy way to set this up is to download GNU
34185Libiconv, unpack it, and then rename the directory holding the
34186Libiconv source code to @samp{libiconv}.
7fa2210b
DJ
34187@end table
34188
34189@node Running Configure
db2e3e2e 34190@section Invoking the @value{GDBN} @file{configure} Script
7fa2210b 34191@cindex configuring @value{GDBN}
db2e3e2e 34192@value{GDBN} comes with a @file{configure} script that automates the process
8e04817f
AC
34193of preparing @value{GDBN} for installation; you can then use @code{make} to
34194build the @code{gdb} program.
34195@iftex
34196@c irrelevant in info file; it's as current as the code it lives with.
34197@footnote{If you have a more recent version of @value{GDBN} than @value{GDBVN},
34198look at the @file{README} file in the sources; we may have improved the
34199installation procedures since publishing this manual.}
34200@end iftex
c4555f82 34201
8e04817f
AC
34202The @value{GDBN} distribution includes all the source code you need for
34203@value{GDBN} in a single directory, whose name is usually composed by
34204appending the version number to @samp{gdb}.
c4555f82 34205
8e04817f
AC
34206For example, the @value{GDBN} version @value{GDBVN} distribution is in the
34207@file{gdb-@value{GDBVN}} directory. That directory contains:
c4555f82 34208
8e04817f
AC
34209@table @code
34210@item gdb-@value{GDBVN}/configure @r{(and supporting files)}
34211script for configuring @value{GDBN} and all its supporting libraries
c4555f82 34212
8e04817f
AC
34213@item gdb-@value{GDBVN}/gdb
34214the source specific to @value{GDBN} itself
c4555f82 34215
8e04817f
AC
34216@item gdb-@value{GDBVN}/bfd
34217source for the Binary File Descriptor library
c906108c 34218
8e04817f
AC
34219@item gdb-@value{GDBVN}/include
34220@sc{gnu} include files
c906108c 34221
8e04817f
AC
34222@item gdb-@value{GDBVN}/libiberty
34223source for the @samp{-liberty} free software library
c906108c 34224
8e04817f
AC
34225@item gdb-@value{GDBVN}/opcodes
34226source for the library of opcode tables and disassemblers
c906108c 34227
8e04817f
AC
34228@item gdb-@value{GDBVN}/readline
34229source for the @sc{gnu} command-line interface
c906108c 34230
8e04817f
AC
34231@item gdb-@value{GDBVN}/glob
34232source for the @sc{gnu} filename pattern-matching subroutine
c906108c 34233
8e04817f
AC
34234@item gdb-@value{GDBVN}/mmalloc
34235source for the @sc{gnu} memory-mapped malloc package
34236@end table
c906108c 34237
db2e3e2e 34238The simplest way to configure and build @value{GDBN} is to run @file{configure}
8e04817f
AC
34239from the @file{gdb-@var{version-number}} source directory, which in
34240this example is the @file{gdb-@value{GDBVN}} directory.
c906108c 34241
8e04817f 34242First switch to the @file{gdb-@var{version-number}} source directory
db2e3e2e 34243if you are not already in it; then run @file{configure}. Pass the
8e04817f
AC
34244identifier for the platform on which @value{GDBN} will run as an
34245argument.
c906108c 34246
8e04817f 34247For example:
c906108c 34248
474c8240 34249@smallexample
8e04817f
AC
34250cd gdb-@value{GDBVN}
34251./configure @var{host}
34252make
474c8240 34253@end smallexample
c906108c 34254
8e04817f
AC
34255@noindent
34256where @var{host} is an identifier such as @samp{sun4} or
34257@samp{decstation}, that identifies the platform where @value{GDBN} will run.
db2e3e2e 34258(You can often leave off @var{host}; @file{configure} tries to guess the
8e04817f 34259correct value by examining your system.)
c906108c 34260
8e04817f
AC
34261Running @samp{configure @var{host}} and then running @code{make} builds the
34262@file{bfd}, @file{readline}, @file{mmalloc}, and @file{libiberty}
34263libraries, then @code{gdb} itself. The configured source files, and the
34264binaries, are left in the corresponding source directories.
c906108c 34265
8e04817f 34266@need 750
db2e3e2e 34267@file{configure} is a Bourne-shell (@code{/bin/sh}) script; if your
8e04817f
AC
34268system does not recognize this automatically when you run a different
34269shell, you may need to run @code{sh} on it explicitly:
c906108c 34270
474c8240 34271@smallexample
8e04817f 34272sh configure @var{host}
474c8240 34273@end smallexample
c906108c 34274
db2e3e2e 34275If you run @file{configure} from a directory that contains source
8e04817f 34276directories for multiple libraries or programs, such as the
db2e3e2e
BW
34277@file{gdb-@value{GDBVN}} source directory for version @value{GDBVN},
34278@file{configure}
8e04817f
AC
34279creates configuration files for every directory level underneath (unless
34280you tell it not to, with the @samp{--norecursion} option).
34281
db2e3e2e 34282You should run the @file{configure} script from the top directory in the
94e91d6d 34283source tree, the @file{gdb-@var{version-number}} directory. If you run
db2e3e2e 34284@file{configure} from one of the subdirectories, you will configure only
94e91d6d 34285that subdirectory. That is usually not what you want. In particular,
db2e3e2e 34286if you run the first @file{configure} from the @file{gdb} subdirectory
94e91d6d
MC
34287of the @file{gdb-@var{version-number}} directory, you will omit the
34288configuration of @file{bfd}, @file{readline}, and other sibling
34289directories of the @file{gdb} subdirectory. This leads to build errors
34290about missing include files such as @file{bfd/bfd.h}.
c906108c 34291
8e04817f
AC
34292You can install @code{@value{GDBP}} anywhere; it has no hardwired paths.
34293However, you should make sure that the shell on your path (named by
34294the @samp{SHELL} environment variable) is publicly readable. Remember
34295that @value{GDBN} uses the shell to start your program---some systems refuse to
34296let @value{GDBN} debug child processes whose programs are not readable.
c906108c 34297
8e04817f 34298@node Separate Objdir
79a6e687 34299@section Compiling @value{GDBN} in Another Directory
c906108c 34300
8e04817f
AC
34301If you want to run @value{GDBN} versions for several host or target machines,
34302you need a different @code{gdb} compiled for each combination of
db2e3e2e 34303host and target. @file{configure} is designed to make this easy by
8e04817f
AC
34304allowing you to generate each configuration in a separate subdirectory,
34305rather than in the source directory. If your @code{make} program
34306handles the @samp{VPATH} feature (@sc{gnu} @code{make} does), running
34307@code{make} in each of these directories builds the @code{gdb}
34308program specified there.
c906108c 34309
db2e3e2e 34310To build @code{gdb} in a separate directory, run @file{configure}
8e04817f 34311with the @samp{--srcdir} option to specify where to find the source.
db2e3e2e
BW
34312(You also need to specify a path to find @file{configure}
34313itself from your working directory. If the path to @file{configure}
8e04817f
AC
34314would be the same as the argument to @samp{--srcdir}, you can leave out
34315the @samp{--srcdir} option; it is assumed.)
c906108c 34316
8e04817f
AC
34317For example, with version @value{GDBVN}, you can build @value{GDBN} in a
34318separate directory for a Sun 4 like this:
c906108c 34319
474c8240 34320@smallexample
8e04817f
AC
34321@group
34322cd gdb-@value{GDBVN}
34323mkdir ../gdb-sun4
34324cd ../gdb-sun4
34325../gdb-@value{GDBVN}/configure sun4
34326make
34327@end group
474c8240 34328@end smallexample
c906108c 34329
db2e3e2e 34330When @file{configure} builds a configuration using a remote source
8e04817f
AC
34331directory, it creates a tree for the binaries with the same structure
34332(and using the same names) as the tree under the source directory. In
34333the example, you'd find the Sun 4 library @file{libiberty.a} in the
34334directory @file{gdb-sun4/libiberty}, and @value{GDBN} itself in
34335@file{gdb-sun4/gdb}.
c906108c 34336
94e91d6d
MC
34337Make sure that your path to the @file{configure} script has just one
34338instance of @file{gdb} in it. If your path to @file{configure} looks
34339like @file{../gdb-@value{GDBVN}/gdb/configure}, you are configuring only
34340one subdirectory of @value{GDBN}, not the whole package. This leads to
34341build errors about missing include files such as @file{bfd/bfd.h}.
34342
8e04817f
AC
34343One popular reason to build several @value{GDBN} configurations in separate
34344directories is to configure @value{GDBN} for cross-compiling (where
34345@value{GDBN} runs on one machine---the @dfn{host}---while debugging
34346programs that run on another machine---the @dfn{target}).
34347You specify a cross-debugging target by
db2e3e2e 34348giving the @samp{--target=@var{target}} option to @file{configure}.
c906108c 34349
8e04817f
AC
34350When you run @code{make} to build a program or library, you must run
34351it in a configured directory---whatever directory you were in when you
db2e3e2e 34352called @file{configure} (or one of its subdirectories).
c906108c 34353
db2e3e2e 34354The @code{Makefile} that @file{configure} generates in each source
8e04817f
AC
34355directory also runs recursively. If you type @code{make} in a source
34356directory such as @file{gdb-@value{GDBVN}} (or in a separate configured
34357directory configured with @samp{--srcdir=@var{dirname}/gdb-@value{GDBVN}}), you
34358will build all the required libraries, and then build GDB.
c906108c 34359
8e04817f
AC
34360When you have multiple hosts or targets configured in separate
34361directories, you can run @code{make} on them in parallel (for example,
34362if they are NFS-mounted on each of the hosts); they will not interfere
34363with each other.
c906108c 34364
8e04817f 34365@node Config Names
79a6e687 34366@section Specifying Names for Hosts and Targets
c906108c 34367
db2e3e2e 34368The specifications used for hosts and targets in the @file{configure}
8e04817f
AC
34369script are based on a three-part naming scheme, but some short predefined
34370aliases are also supported. The full naming scheme encodes three pieces
34371of information in the following pattern:
c906108c 34372
474c8240 34373@smallexample
8e04817f 34374@var{architecture}-@var{vendor}-@var{os}
474c8240 34375@end smallexample
c906108c 34376
8e04817f
AC
34377For example, you can use the alias @code{sun4} as a @var{host} argument,
34378or as the value for @var{target} in a @code{--target=@var{target}}
34379option. The equivalent full name is @samp{sparc-sun-sunos4}.
c906108c 34380
db2e3e2e 34381The @file{configure} script accompanying @value{GDBN} does not provide
8e04817f 34382any query facility to list all supported host and target names or
db2e3e2e 34383aliases. @file{configure} calls the Bourne shell script
8e04817f
AC
34384@code{config.sub} to map abbreviations to full names; you can read the
34385script, if you wish, or you can use it to test your guesses on
34386abbreviations---for example:
c906108c 34387
8e04817f
AC
34388@smallexample
34389% sh config.sub i386-linux
34390i386-pc-linux-gnu
34391% sh config.sub alpha-linux
34392alpha-unknown-linux-gnu
34393% sh config.sub hp9k700
34394hppa1.1-hp-hpux
34395% sh config.sub sun4
34396sparc-sun-sunos4.1.1
34397% sh config.sub sun3
34398m68k-sun-sunos4.1.1
34399% sh config.sub i986v
34400Invalid configuration `i986v': machine `i986v' not recognized
34401@end smallexample
c906108c 34402
8e04817f
AC
34403@noindent
34404@code{config.sub} is also distributed in the @value{GDBN} source
34405directory (@file{gdb-@value{GDBVN}}, for version @value{GDBVN}).
d700128c 34406
8e04817f 34407@node Configure Options
db2e3e2e 34408@section @file{configure} Options
c906108c 34409
db2e3e2e
BW
34410Here is a summary of the @file{configure} options and arguments that
34411are most often useful for building @value{GDBN}. @file{configure} also has
8e04817f 34412several other options not listed here. @inforef{What Configure
db2e3e2e 34413Does,,configure.info}, for a full explanation of @file{configure}.
c906108c 34414
474c8240 34415@smallexample
8e04817f
AC
34416configure @r{[}--help@r{]}
34417 @r{[}--prefix=@var{dir}@r{]}
34418 @r{[}--exec-prefix=@var{dir}@r{]}
34419 @r{[}--srcdir=@var{dirname}@r{]}
34420 @r{[}--norecursion@r{]} @r{[}--rm@r{]}
34421 @r{[}--target=@var{target}@r{]}
34422 @var{host}
474c8240 34423@end smallexample
c906108c 34424
8e04817f
AC
34425@noindent
34426You may introduce options with a single @samp{-} rather than
34427@samp{--} if you prefer; but you may abbreviate option names if you use
34428@samp{--}.
c906108c 34429
8e04817f
AC
34430@table @code
34431@item --help
db2e3e2e 34432Display a quick summary of how to invoke @file{configure}.
c906108c 34433
8e04817f
AC
34434@item --prefix=@var{dir}
34435Configure the source to install programs and files under directory
34436@file{@var{dir}}.
c906108c 34437
8e04817f
AC
34438@item --exec-prefix=@var{dir}
34439Configure the source to install programs under directory
34440@file{@var{dir}}.
c906108c 34441
8e04817f
AC
34442@c avoid splitting the warning from the explanation:
34443@need 2000
34444@item --srcdir=@var{dirname}
34445@strong{Warning: using this option requires @sc{gnu} @code{make}, or another
34446@code{make} that implements the @code{VPATH} feature.}@*
34447Use this option to make configurations in directories separate from the
34448@value{GDBN} source directories. Among other things, you can use this to
34449build (or maintain) several configurations simultaneously, in separate
db2e3e2e 34450directories. @file{configure} writes configuration-specific files in
8e04817f 34451the current directory, but arranges for them to use the source in the
db2e3e2e 34452directory @var{dirname}. @file{configure} creates directories under
8e04817f
AC
34453the working directory in parallel to the source directories below
34454@var{dirname}.
c906108c 34455
8e04817f 34456@item --norecursion
db2e3e2e 34457Configure only the directory level where @file{configure} is executed; do not
8e04817f 34458propagate configuration to subdirectories.
c906108c 34459
8e04817f
AC
34460@item --target=@var{target}
34461Configure @value{GDBN} for cross-debugging programs running on the specified
34462@var{target}. Without this option, @value{GDBN} is configured to debug
34463programs that run on the same machine (@var{host}) as @value{GDBN} itself.
c906108c 34464
8e04817f 34465There is no convenient way to generate a list of all available targets.
c906108c 34466
8e04817f
AC
34467@item @var{host} @dots{}
34468Configure @value{GDBN} to run on the specified @var{host}.
c906108c 34469
8e04817f
AC
34470There is no convenient way to generate a list of all available hosts.
34471@end table
c906108c 34472
8e04817f
AC
34473There are many other options available as well, but they are generally
34474needed for special purposes only.
c906108c 34475
098b41a6
JG
34476@node System-wide configuration
34477@section System-wide configuration and settings
34478@cindex system-wide init file
34479
34480@value{GDBN} can be configured to have a system-wide init file;
34481this file will be read and executed at startup (@pxref{Startup, , What
34482@value{GDBN} does during startup}).
34483
34484Here is the corresponding configure option:
34485
34486@table @code
34487@item --with-system-gdbinit=@var{file}
34488Specify that the default location of the system-wide init file is
34489@var{file}.
34490@end table
34491
34492If @value{GDBN} has been configured with the option @option{--prefix=$prefix},
34493it may be subject to relocation. Two possible cases:
34494
34495@itemize @bullet
34496@item
34497If the default location of this init file contains @file{$prefix},
34498it will be subject to relocation. Suppose that the configure options
34499are @option{--prefix=$prefix --with-system-gdbinit=$prefix/etc/gdbinit};
34500if @value{GDBN} is moved from @file{$prefix} to @file{$install}, the system
34501init file is looked for as @file{$install/etc/gdbinit} instead of
34502@file{$prefix/etc/gdbinit}.
34503
34504@item
34505By contrast, if the default location does not contain the prefix,
34506it will not be relocated. E.g.@: if @value{GDBN} has been configured with
34507@option{--prefix=/usr/local --with-system-gdbinit=/usr/share/gdb/gdbinit},
34508then @value{GDBN} will always look for @file{/usr/share/gdb/gdbinit},
34509wherever @value{GDBN} is installed.
34510@end itemize
34511
8e04817f
AC
34512@node Maintenance Commands
34513@appendix Maintenance Commands
34514@cindex maintenance commands
34515@cindex internal commands
c906108c 34516
8e04817f 34517In addition to commands intended for @value{GDBN} users, @value{GDBN}
09d4efe1
EZ
34518includes a number of commands intended for @value{GDBN} developers,
34519that are not documented elsewhere in this manual. These commands are
da316a69
EZ
34520provided here for reference. (For commands that turn on debugging
34521messages, see @ref{Debugging Output}.)
c906108c 34522
8e04817f 34523@table @code
09d4efe1 34524@kindex maint agent
782b2b07 34525@kindex maint agent-eval
f77cc5f0
HZ
34526@item maint agent @r{[}-at @var{location}@r{,}@r{]} @var{expression}
34527@itemx maint agent-eval @r{[}-at @var{location}@r{,}@r{]} @var{expression}
09d4efe1
EZ
34528Translate the given @var{expression} into remote agent bytecodes.
34529This command is useful for debugging the Agent Expression mechanism
782b2b07
SS
34530(@pxref{Agent Expressions}). The @samp{agent} version produces an
34531expression useful for data collection, such as by tracepoints, while
34532@samp{maint agent-eval} produces an expression that evaluates directly
34533to a result. For instance, a collection expression for @code{globa +
34534globb} will include bytecodes to record four bytes of memory at each
34535of the addresses of @code{globa} and @code{globb}, while discarding
34536the result of the addition, while an evaluation expression will do the
34537addition and return the sum.
f77cc5f0
HZ
34538If @code{-at} is given, generate remote agent bytecode for @var{location}.
34539If not, generate remote agent bytecode for current frame PC address.
09d4efe1 34540
d3ce09f5
SS
34541@kindex maint agent-printf
34542@item maint agent-printf @var{format},@var{expr},...
34543Translate the given format string and list of argument expressions
34544into remote agent bytecodes and display them as a disassembled list.
34545This command is useful for debugging the agent version of dynamic
34546printf (@pxref{Dynamic Printf}.
34547
8e04817f
AC
34548@kindex maint info breakpoints
34549@item @anchor{maint info breakpoints}maint info breakpoints
34550Using the same format as @samp{info breakpoints}, display both the
34551breakpoints you've set explicitly, and those @value{GDBN} is using for
34552internal purposes. Internal breakpoints are shown with negative
34553breakpoint numbers. The type column identifies what kind of breakpoint
34554is shown:
c906108c 34555
8e04817f
AC
34556@table @code
34557@item breakpoint
34558Normal, explicitly set breakpoint.
c906108c 34559
8e04817f
AC
34560@item watchpoint
34561Normal, explicitly set watchpoint.
c906108c 34562
8e04817f
AC
34563@item longjmp
34564Internal breakpoint, used to handle correctly stepping through
34565@code{longjmp} calls.
c906108c 34566
8e04817f
AC
34567@item longjmp resume
34568Internal breakpoint at the target of a @code{longjmp}.
c906108c 34569
8e04817f
AC
34570@item until
34571Temporary internal breakpoint used by the @value{GDBN} @code{until} command.
c906108c 34572
8e04817f
AC
34573@item finish
34574Temporary internal breakpoint used by the @value{GDBN} @code{finish} command.
c906108c 34575
8e04817f
AC
34576@item shlib events
34577Shared library events.
c906108c 34578
8e04817f 34579@end table
c906108c 34580
d6b28940
TT
34581@kindex maint info bfds
34582@item maint info bfds
34583This prints information about each @code{bfd} object that is known to
34584@value{GDBN}. @xref{Top, , BFD, bfd, The Binary File Descriptor Library}.
34585
fff08868
HZ
34586@kindex set displaced-stepping
34587@kindex show displaced-stepping
237fc4c9
PA
34588@cindex displaced stepping support
34589@cindex out-of-line single-stepping
fff08868
HZ
34590@item set displaced-stepping
34591@itemx show displaced-stepping
237fc4c9 34592Control whether or not @value{GDBN} will do @dfn{displaced stepping}
fff08868
HZ
34593if the target supports it. Displaced stepping is a way to single-step
34594over breakpoints without removing them from the inferior, by executing
34595an out-of-line copy of the instruction that was originally at the
34596breakpoint location. It is also known as out-of-line single-stepping.
34597
34598@table @code
34599@item set displaced-stepping on
34600If the target architecture supports it, @value{GDBN} will use
34601displaced stepping to step over breakpoints.
34602
34603@item set displaced-stepping off
34604@value{GDBN} will not use displaced stepping to step over breakpoints,
34605even if such is supported by the target architecture.
34606
34607@cindex non-stop mode, and @samp{set displaced-stepping}
34608@item set displaced-stepping auto
34609This is the default mode. @value{GDBN} will use displaced stepping
34610only if non-stop mode is active (@pxref{Non-Stop Mode}) and the target
34611architecture supports displaced stepping.
34612@end table
237fc4c9 34613
09d4efe1
EZ
34614@kindex maint check-symtabs
34615@item maint check-symtabs
34616Check the consistency of psymtabs and symtabs.
34617
34618@kindex maint cplus first_component
34619@item maint cplus first_component @var{name}
34620Print the first C@t{++} class/namespace component of @var{name}.
34621
34622@kindex maint cplus namespace
34623@item maint cplus namespace
34624Print the list of possible C@t{++} namespaces.
34625
34626@kindex maint demangle
34627@item maint demangle @var{name}
d3e8051b 34628Demangle a C@t{++} or Objective-C mangled @var{name}.
09d4efe1
EZ
34629
34630@kindex maint deprecate
34631@kindex maint undeprecate
34632@cindex deprecated commands
34633@item maint deprecate @var{command} @r{[}@var{replacement}@r{]}
34634@itemx maint undeprecate @var{command}
34635Deprecate or undeprecate the named @var{command}. Deprecated commands
34636cause @value{GDBN} to issue a warning when you use them. The optional
34637argument @var{replacement} says which newer command should be used in
34638favor of the deprecated one; if it is given, @value{GDBN} will mention
34639the replacement as part of the warning.
34640
34641@kindex maint dump-me
34642@item maint dump-me
721c2651 34643@cindex @code{SIGQUIT} signal, dump core of @value{GDBN}
09d4efe1 34644Cause a fatal signal in the debugger and force it to dump its core.
721c2651
EZ
34645This is supported only on systems which support aborting a program
34646with the @code{SIGQUIT} signal.
09d4efe1 34647
8d30a00d
AC
34648@kindex maint internal-error
34649@kindex maint internal-warning
09d4efe1
EZ
34650@item maint internal-error @r{[}@var{message-text}@r{]}
34651@itemx maint internal-warning @r{[}@var{message-text}@r{]}
8d30a00d
AC
34652Cause @value{GDBN} to call the internal function @code{internal_error}
34653or @code{internal_warning} and hence behave as though an internal error
34654or internal warning has been detected. In addition to reporting the
34655internal problem, these functions give the user the opportunity to
34656either quit @value{GDBN} or create a core file of the current
34657@value{GDBN} session.
34658
09d4efe1
EZ
34659These commands take an optional parameter @var{message-text} that is
34660used as the text of the error or warning message.
34661
d3e8051b 34662Here's an example of using @code{internal-error}:
09d4efe1 34663
8d30a00d 34664@smallexample
f7dc1244 34665(@value{GDBP}) @kbd{maint internal-error testing, 1, 2}
8d30a00d
AC
34666@dots{}/maint.c:121: internal-error: testing, 1, 2
34667A problem internal to GDB has been detected. Further
34668debugging may prove unreliable.
34669Quit this debugging session? (y or n) @kbd{n}
34670Create a core file? (y or n) @kbd{n}
f7dc1244 34671(@value{GDBP})
8d30a00d
AC
34672@end smallexample
34673
3c16cced
PA
34674@cindex @value{GDBN} internal error
34675@cindex internal errors, control of @value{GDBN} behavior
34676
34677@kindex maint set internal-error
34678@kindex maint show internal-error
34679@kindex maint set internal-warning
34680@kindex maint show internal-warning
34681@item maint set internal-error @var{action} [ask|yes|no]
34682@itemx maint show internal-error @var{action}
34683@itemx maint set internal-warning @var{action} [ask|yes|no]
34684@itemx maint show internal-warning @var{action}
34685When @value{GDBN} reports an internal problem (error or warning) it
34686gives the user the opportunity to both quit @value{GDBN} and create a
34687core file of the current @value{GDBN} session. These commands let you
34688override the default behaviour for each particular @var{action},
34689described in the table below.
34690
34691@table @samp
34692@item quit
34693You can specify that @value{GDBN} should always (yes) or never (no)
34694quit. The default is to ask the user what to do.
34695
34696@item corefile
34697You can specify that @value{GDBN} should always (yes) or never (no)
34698create a core file. The default is to ask the user what to do.
34699@end table
34700
09d4efe1
EZ
34701@kindex maint packet
34702@item maint packet @var{text}
34703If @value{GDBN} is talking to an inferior via the serial protocol,
34704then this command sends the string @var{text} to the inferior, and
34705displays the response packet. @value{GDBN} supplies the initial
34706@samp{$} character, the terminating @samp{#} character, and the
34707checksum.
34708
34709@kindex maint print architecture
34710@item maint print architecture @r{[}@var{file}@r{]}
34711Print the entire architecture configuration. The optional argument
34712@var{file} names the file where the output goes.
8d30a00d 34713
81adfced
DJ
34714@kindex maint print c-tdesc
34715@item maint print c-tdesc
34716Print the current target description (@pxref{Target Descriptions}) as
34717a C source file. The created source file can be used in @value{GDBN}
34718when an XML parser is not available to parse the description.
34719
00905d52
AC
34720@kindex maint print dummy-frames
34721@item maint print dummy-frames
00905d52
AC
34722Prints the contents of @value{GDBN}'s internal dummy-frame stack.
34723
34724@smallexample
f7dc1244 34725(@value{GDBP}) @kbd{b add}
00905d52 34726@dots{}
f7dc1244 34727(@value{GDBP}) @kbd{print add(2,3)}
00905d52
AC
34728Breakpoint 2, add (a=2, b=3) at @dots{}
3472958 return (a + b);
34730The program being debugged stopped while in a function called from GDB.
34731@dots{}
f7dc1244 34732(@value{GDBP}) @kbd{maint print dummy-frames}
00905d52
AC
347330x1a57c80: pc=0x01014068 fp=0x0200bddc sp=0x0200bdd6
34734 top=0x0200bdd4 id=@{stack=0x200bddc,code=0x101405c@}
34735 call_lo=0x01014000 call_hi=0x01014001
f7dc1244 34736(@value{GDBP})
00905d52
AC
34737@end smallexample
34738
34739Takes an optional file parameter.
34740
0680b120
AC
34741@kindex maint print registers
34742@kindex maint print raw-registers
34743@kindex maint print cooked-registers
617073a9 34744@kindex maint print register-groups
c21236dc 34745@kindex maint print remote-registers
09d4efe1
EZ
34746@item maint print registers @r{[}@var{file}@r{]}
34747@itemx maint print raw-registers @r{[}@var{file}@r{]}
34748@itemx maint print cooked-registers @r{[}@var{file}@r{]}
34749@itemx maint print register-groups @r{[}@var{file}@r{]}
c21236dc 34750@itemx maint print remote-registers @r{[}@var{file}@r{]}
0680b120
AC
34751Print @value{GDBN}'s internal register data structures.
34752
617073a9 34753The command @code{maint print raw-registers} includes the contents of
c21236dc
PA
34754the raw register cache; the command @code{maint print
34755cooked-registers} includes the (cooked) value of all registers,
34756including registers which aren't available on the target nor visible
34757to user; the command @code{maint print register-groups} includes the
34758groups that each register is a member of; and the command @code{maint
34759print remote-registers} includes the remote target's register numbers
34760and offsets in the `G' packets. @xref{Registers,, Registers, gdbint,
617073a9 34761@value{GDBN} Internals}.
0680b120 34762
09d4efe1
EZ
34763These commands take an optional parameter, a file name to which to
34764write the information.
0680b120 34765
617073a9 34766@kindex maint print reggroups
09d4efe1
EZ
34767@item maint print reggroups @r{[}@var{file}@r{]}
34768Print @value{GDBN}'s internal register group data structures. The
34769optional argument @var{file} tells to what file to write the
34770information.
617073a9 34771
09d4efe1 34772The register groups info looks like this:
617073a9
AC
34773
34774@smallexample
f7dc1244 34775(@value{GDBP}) @kbd{maint print reggroups}
b383017d
RM
34776 Group Type
34777 general user
34778 float user
34779 all user
34780 vector user
34781 system user
34782 save internal
34783 restore internal
617073a9
AC
34784@end smallexample
34785
09d4efe1
EZ
34786@kindex flushregs
34787@item flushregs
34788This command forces @value{GDBN} to flush its internal register cache.
34789
34790@kindex maint print objfiles
34791@cindex info for known object files
34792@item maint print objfiles
34793Print a dump of all known object files. For each object file, this
34794command prints its name, address in memory, and all of its psymtabs
34795and symtabs.
34796
8a1ea21f
DE
34797@kindex maint print section-scripts
34798@cindex info for known .debug_gdb_scripts-loaded scripts
34799@item maint print section-scripts [@var{regexp}]
34800Print a dump of scripts specified in the @code{.debug_gdb_section} section.
34801If @var{regexp} is specified, only print scripts loaded by object files
34802matching @var{regexp}.
34803For each script, this command prints its name as specified in the objfile,
34804and the full path if known.
8e0583c8 34805@xref{dotdebug_gdb_scripts section}.
8a1ea21f 34806
09d4efe1
EZ
34807@kindex maint print statistics
34808@cindex bcache statistics
34809@item maint print statistics
34810This command prints, for each object file in the program, various data
34811about that object file followed by the byte cache (@dfn{bcache})
34812statistics for the object file. The objfile data includes the number
d3e8051b 34813of minimal, partial, full, and stabs symbols, the number of types
09d4efe1
EZ
34814defined by the objfile, the number of as yet unexpanded psym tables,
34815the number of line tables and string tables, and the amount of memory
34816used by the various tables. The bcache statistics include the counts,
34817sizes, and counts of duplicates of all and unique objects, max,
34818average, and median entry size, total memory used and its overhead and
34819savings, and various measures of the hash table size and chain
34820lengths.
34821
c7ba131e
JB
34822@kindex maint print target-stack
34823@cindex target stack description
34824@item maint print target-stack
34825A @dfn{target} is an interface between the debugger and a particular
34826kind of file or process. Targets can be stacked in @dfn{strata},
34827so that more than one target can potentially respond to a request.
34828In particular, memory accesses will walk down the stack of targets
34829until they find a target that is interested in handling that particular
34830address.
34831
34832This command prints a short description of each layer that was pushed on
34833the @dfn{target stack}, starting from the top layer down to the bottom one.
34834
09d4efe1
EZ
34835@kindex maint print type
34836@cindex type chain of a data type
34837@item maint print type @var{expr}
34838Print the type chain for a type specified by @var{expr}. The argument
34839can be either a type name or a symbol. If it is a symbol, the type of
34840that symbol is described. The type chain produced by this command is
34841a recursive definition of the data type as stored in @value{GDBN}'s
34842data structures, including its flags and contained types.
34843
9eae7c52
TT
34844@kindex maint set dwarf2 always-disassemble
34845@kindex maint show dwarf2 always-disassemble
34846@item maint set dwarf2 always-disassemble
34847@item maint show dwarf2 always-disassemble
34848Control the behavior of @code{info address} when using DWARF debugging
34849information.
34850
34851The default is @code{off}, which means that @value{GDBN} should try to
34852describe a variable's location in an easily readable format. When
34853@code{on}, @value{GDBN} will instead display the DWARF location
34854expression in an assembly-like format. Note that some locations are
34855too complex for @value{GDBN} to describe simply; in this case you will
34856always see the disassembly form.
34857
34858Here is an example of the resulting disassembly:
34859
34860@smallexample
34861(gdb) info addr argc
34862Symbol "argc" is a complex DWARF expression:
34863 1: DW_OP_fbreg 0
34864@end smallexample
34865
34866For more information on these expressions, see
34867@uref{http://www.dwarfstd.org/, the DWARF standard}.
34868
09d4efe1
EZ
34869@kindex maint set dwarf2 max-cache-age
34870@kindex maint show dwarf2 max-cache-age
34871@item maint set dwarf2 max-cache-age
34872@itemx maint show dwarf2 max-cache-age
34873Control the DWARF 2 compilation unit cache.
34874
34875@cindex DWARF 2 compilation units cache
34876In object files with inter-compilation-unit references, such as those
34877produced by the GCC option @samp{-feliminate-dwarf2-dups}, the DWARF 2
34878reader needs to frequently refer to previously read compilation units.
34879This setting controls how long a compilation unit will remain in the
34880cache if it is not referenced. A higher limit means that cached
34881compilation units will be stored in memory longer, and more total
34882memory will be used. Setting it to zero disables caching, which will
34883slow down @value{GDBN} startup, but reduce memory consumption.
34884
e7ba9c65
DJ
34885@kindex maint set profile
34886@kindex maint show profile
34887@cindex profiling GDB
34888@item maint set profile
34889@itemx maint show profile
34890Control profiling of @value{GDBN}.
34891
34892Profiling will be disabled until you use the @samp{maint set profile}
34893command to enable it. When you enable profiling, the system will begin
34894collecting timing and execution count data; when you disable profiling or
34895exit @value{GDBN}, the results will be written to a log file. Remember that
34896if you use profiling, @value{GDBN} will overwrite the profiling log file
34897(often called @file{gmon.out}). If you have a record of important profiling
34898data in a @file{gmon.out} file, be sure to move it to a safe location.
34899
34900Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
b383017d 34901compiled with the @samp{-pg} compiler option.
e7ba9c65 34902
cbe54154
PA
34903@kindex maint set show-debug-regs
34904@kindex maint show show-debug-regs
eac35c4e 34905@cindex hardware debug registers
cbe54154
PA
34906@item maint set show-debug-regs
34907@itemx maint show show-debug-regs
eac35c4e 34908Control whether to show variables that mirror the hardware debug
09d4efe1 34909registers. Use @code{ON} to enable, @code{OFF} to disable. If
3f94c067 34910enabled, the debug registers values are shown when @value{GDBN} inserts or
09d4efe1
EZ
34911removes a hardware breakpoint or watchpoint, and when the inferior
34912triggers a hardware-assisted breakpoint or watchpoint.
34913
711e434b
PM
34914@kindex maint set show-all-tib
34915@kindex maint show show-all-tib
34916@item maint set show-all-tib
34917@itemx maint show show-all-tib
34918Control whether to show all non zero areas within a 1k block starting
34919at thread local base, when using the @samp{info w32 thread-information-block}
34920command.
34921
09d4efe1
EZ
34922@kindex maint space
34923@cindex memory used by commands
34924@item maint space
34925Control whether to display memory usage for each command. If set to a
34926nonzero value, @value{GDBN} will display how much memory each command
34927took, following the command's own output. This can also be requested
34928by invoking @value{GDBN} with the @option{--statistics} command-line
34929switch (@pxref{Mode Options}).
34930
34931@kindex maint time
34932@cindex time of command execution
34933@item maint time
0a1c4d10
DE
34934Control whether to display the execution time of @value{GDBN} for each command.
34935If set to a nonzero value, @value{GDBN} will display how much time it
09d4efe1 34936took to execute each command, following the command's own output.
0a1c4d10
DE
34937Both CPU time and wallclock time are printed.
34938Printing both is useful when trying to determine whether the cost is
34939CPU or, e.g., disk/network, latency.
34940Note that the CPU time printed is for @value{GDBN} only, it does not include
34941the execution time of the inferior because there's no mechanism currently
34942to compute how much time was spent by @value{GDBN} and how much time was
34943spent by the program been debugged.
09d4efe1
EZ
34944This can also be requested by invoking @value{GDBN} with the
34945@option{--statistics} command-line switch (@pxref{Mode Options}).
34946
34947@kindex maint translate-address
34948@item maint translate-address @r{[}@var{section}@r{]} @var{addr}
34949Find the symbol stored at the location specified by the address
34950@var{addr} and an optional section name @var{section}. If found,
34951@value{GDBN} prints the name of the closest symbol and an offset from
34952the symbol's location to the specified address. This is similar to
34953the @code{info address} command (@pxref{Symbols}), except that this
34954command also allows to find symbols in other sections.
ae038cb0 34955
c14c28ba
PP
34956If section was not specified, the section in which the symbol was found
34957is also printed. For dynamically linked executables, the name of
34958executable or shared library containing the symbol is printed as well.
34959
8e04817f 34960@end table
c906108c 34961
9c16f35a
EZ
34962The following command is useful for non-interactive invocations of
34963@value{GDBN}, such as in the test suite.
34964
34965@table @code
34966@item set watchdog @var{nsec}
34967@kindex set watchdog
34968@cindex watchdog timer
34969@cindex timeout for commands
34970Set the maximum number of seconds @value{GDBN} will wait for the
34971target operation to finish. If this time expires, @value{GDBN}
34972reports and error and the command is aborted.
34973
34974@item show watchdog
34975Show the current setting of the target wait timeout.
34976@end table
c906108c 34977
e0ce93ac 34978@node Remote Protocol
8e04817f 34979@appendix @value{GDBN} Remote Serial Protocol
c906108c 34980
ee2d5c50
AC
34981@menu
34982* Overview::
34983* Packets::
34984* Stop Reply Packets::
34985* General Query Packets::
a1dcb23a 34986* Architecture-Specific Protocol Details::
9d29849a 34987* Tracepoint Packets::
a6b151f1 34988* Host I/O Packets::
9a6253be 34989* Interrupts::
8b23ecc4
SL
34990* Notification Packets::
34991* Remote Non-Stop::
a6f3e723 34992* Packet Acknowledgment::
ee2d5c50 34993* Examples::
79a6e687 34994* File-I/O Remote Protocol Extension::
cfa9d6d9 34995* Library List Format::
2268b414 34996* Library List Format for SVR4 Targets::
79a6e687 34997* Memory Map Format::
dc146f7c 34998* Thread List Format::
b3b9301e 34999* Traceframe Info Format::
ee2d5c50
AC
35000@end menu
35001
35002@node Overview
35003@section Overview
35004
8e04817f
AC
35005There may be occasions when you need to know something about the
35006protocol---for example, if there is only one serial port to your target
35007machine, you might want your program to do something special if it
35008recognizes a packet meant for @value{GDBN}.
c906108c 35009
d2c6833e 35010In the examples below, @samp{->} and @samp{<-} are used to indicate
bf06d120 35011transmitted and received data, respectively.
c906108c 35012
8e04817f
AC
35013@cindex protocol, @value{GDBN} remote serial
35014@cindex serial protocol, @value{GDBN} remote
35015@cindex remote serial protocol
8b23ecc4
SL
35016All @value{GDBN} commands and responses (other than acknowledgments
35017and notifications, see @ref{Notification Packets}) are sent as a
35018@var{packet}. A @var{packet} is introduced with the character
8e04817f
AC
35019@samp{$}, the actual @var{packet-data}, and the terminating character
35020@samp{#} followed by a two-digit @var{checksum}:
c906108c 35021
474c8240 35022@smallexample
8e04817f 35023@code{$}@var{packet-data}@code{#}@var{checksum}
474c8240 35024@end smallexample
8e04817f 35025@noindent
c906108c 35026
8e04817f
AC
35027@cindex checksum, for @value{GDBN} remote
35028@noindent
35029The two-digit @var{checksum} is computed as the modulo 256 sum of all
35030characters between the leading @samp{$} and the trailing @samp{#} (an
35031eight bit unsigned checksum).
c906108c 35032
8e04817f
AC
35033Implementors should note that prior to @value{GDBN} 5.0 the protocol
35034specification also included an optional two-digit @var{sequence-id}:
c906108c 35035
474c8240 35036@smallexample
8e04817f 35037@code{$}@var{sequence-id}@code{:}@var{packet-data}@code{#}@var{checksum}
474c8240 35038@end smallexample
c906108c 35039
8e04817f
AC
35040@cindex sequence-id, for @value{GDBN} remote
35041@noindent
35042That @var{sequence-id} was appended to the acknowledgment. @value{GDBN}
35043has never output @var{sequence-id}s. Stubs that handle packets added
35044since @value{GDBN} 5.0 must not accept @var{sequence-id}.
c906108c 35045
8e04817f
AC
35046When either the host or the target machine receives a packet, the first
35047response expected is an acknowledgment: either @samp{+} (to indicate
35048the package was received correctly) or @samp{-} (to request
35049retransmission):
c906108c 35050
474c8240 35051@smallexample
d2c6833e
AC
35052-> @code{$}@var{packet-data}@code{#}@var{checksum}
35053<- @code{+}
474c8240 35054@end smallexample
8e04817f 35055@noindent
53a5351d 35056
a6f3e723
SL
35057The @samp{+}/@samp{-} acknowledgments can be disabled
35058once a connection is established.
35059@xref{Packet Acknowledgment}, for details.
35060
8e04817f
AC
35061The host (@value{GDBN}) sends @var{command}s, and the target (the
35062debugging stub incorporated in your program) sends a @var{response}. In
35063the case of step and continue @var{command}s, the response is only sent
8b23ecc4
SL
35064when the operation has completed, and the target has again stopped all
35065threads in all attached processes. This is the default all-stop mode
35066behavior, but the remote protocol also supports @value{GDBN}'s non-stop
35067execution mode; see @ref{Remote Non-Stop}, for details.
c906108c 35068
8e04817f
AC
35069@var{packet-data} consists of a sequence of characters with the
35070exception of @samp{#} and @samp{$} (see @samp{X} packet for additional
35071exceptions).
c906108c 35072
ee2d5c50 35073@cindex remote protocol, field separator
0876f84a 35074Fields within the packet should be separated using @samp{,} @samp{;} or
8e04817f 35075@samp{:}. Except where otherwise noted all numbers are represented in
ee2d5c50 35076@sc{hex} with leading zeros suppressed.
c906108c 35077
8e04817f
AC
35078Implementors should note that prior to @value{GDBN} 5.0, the character
35079@samp{:} could not appear as the third character in a packet (as it
35080would potentially conflict with the @var{sequence-id}).
c906108c 35081
0876f84a
DJ
35082@cindex remote protocol, binary data
35083@anchor{Binary Data}
35084Binary data in most packets is encoded either as two hexadecimal
35085digits per byte of binary data. This allowed the traditional remote
35086protocol to work over connections which were only seven-bit clean.
35087Some packets designed more recently assume an eight-bit clean
35088connection, and use a more efficient encoding to send and receive
35089binary data.
35090
35091The binary data representation uses @code{7d} (@sc{ascii} @samp{@}})
35092as an escape character. Any escaped byte is transmitted as the escape
35093character followed by the original character XORed with @code{0x20}.
35094For example, the byte @code{0x7d} would be transmitted as the two
35095bytes @code{0x7d 0x5d}. The bytes @code{0x23} (@sc{ascii} @samp{#}),
35096@code{0x24} (@sc{ascii} @samp{$}), and @code{0x7d} (@sc{ascii}
35097@samp{@}}) must always be escaped. Responses sent by the stub
35098must also escape @code{0x2a} (@sc{ascii} @samp{*}), so that it
35099is not interpreted as the start of a run-length encoded sequence
35100(described next).
35101
1d3811f6
DJ
35102Response @var{data} can be run-length encoded to save space.
35103Run-length encoding replaces runs of identical characters with one
35104instance of the repeated character, followed by a @samp{*} and a
35105repeat count. The repeat count is itself sent encoded, to avoid
35106binary characters in @var{data}: a value of @var{n} is sent as
35107@code{@var{n}+29}. For a repeat count greater or equal to 3, this
35108produces a printable @sc{ascii} character, e.g.@: a space (@sc{ascii}
35109code 32) for a repeat count of 3. (This is because run-length
35110encoding starts to win for counts 3 or more.) Thus, for example,
35111@samp{0* } is a run-length encoding of ``0000'': the space character
35112after @samp{*} means repeat the leading @code{0} @w{@code{32 - 29 =
351133}} more times.
35114
35115The printable characters @samp{#} and @samp{$} or with a numeric value
35116greater than 126 must not be used. Runs of six repeats (@samp{#}) or
35117seven repeats (@samp{$}) can be expanded using a repeat count of only
35118five (@samp{"}). For example, @samp{00000000} can be encoded as
35119@samp{0*"00}.
c906108c 35120
8e04817f
AC
35121The error response returned for some packets includes a two character
35122error number. That number is not well defined.
c906108c 35123
f8da2bff 35124@cindex empty response, for unsupported packets
8e04817f
AC
35125For any @var{command} not supported by the stub, an empty response
35126(@samp{$#00}) should be returned. That way it is possible to extend the
35127protocol. A newer @value{GDBN} can tell if a packet is supported based
35128on that response.
c906108c 35129
393eab54
PA
35130At a minimum, a stub is required to support the @samp{g} and @samp{G}
35131commands for register access, and the @samp{m} and @samp{M} commands
35132for memory access. Stubs that only control single-threaded targets
35133can implement run control with the @samp{c} (continue), and @samp{s}
35134(step) commands. Stubs that support multi-threading targets should
35135support the @samp{vCont} command. All other commands are optional.
c906108c 35136
ee2d5c50
AC
35137@node Packets
35138@section Packets
35139
35140The following table provides a complete list of all currently defined
35141@var{command}s and their corresponding response @var{data}.
79a6e687 35142@xref{File-I/O Remote Protocol Extension}, for details about the File
9c16f35a 35143I/O extension of the remote protocol.
ee2d5c50 35144
b8ff78ce
JB
35145Each packet's description has a template showing the packet's overall
35146syntax, followed by an explanation of the packet's meaning. We
35147include spaces in some of the templates for clarity; these are not
35148part of the packet's syntax. No @value{GDBN} packet uses spaces to
35149separate its components. For example, a template like @samp{foo
35150@var{bar} @var{baz}} describes a packet beginning with the three ASCII
35151bytes @samp{foo}, followed by a @var{bar}, followed directly by a
3f94c067 35152@var{baz}. @value{GDBN} does not transmit a space character between the
b8ff78ce
JB
35153@samp{foo} and the @var{bar}, or between the @var{bar} and the
35154@var{baz}.
35155
b90a069a
SL
35156@cindex @var{thread-id}, in remote protocol
35157@anchor{thread-id syntax}
35158Several packets and replies include a @var{thread-id} field to identify
35159a thread. Normally these are positive numbers with a target-specific
35160interpretation, formatted as big-endian hex strings. A @var{thread-id}
35161can also be a literal @samp{-1} to indicate all threads, or @samp{0} to
35162pick any thread.
35163
35164In addition, the remote protocol supports a multiprocess feature in
35165which the @var{thread-id} syntax is extended to optionally include both
35166process and thread ID fields, as @samp{p@var{pid}.@var{tid}}.
35167The @var{pid} (process) and @var{tid} (thread) components each have the
35168format described above: a positive number with target-specific
35169interpretation formatted as a big-endian hex string, literal @samp{-1}
35170to indicate all processes or threads (respectively), or @samp{0} to
35171indicate an arbitrary process or thread. Specifying just a process, as
35172@samp{p@var{pid}}, is equivalent to @samp{p@var{pid}.-1}. It is an
35173error to specify all processes but a specific thread, such as
35174@samp{p-1.@var{tid}}. Note that the @samp{p} prefix is @emph{not} used
35175for those packets and replies explicitly documented to include a process
35176ID, rather than a @var{thread-id}.
35177
35178The multiprocess @var{thread-id} syntax extensions are only used if both
35179@value{GDBN} and the stub report support for the @samp{multiprocess}
35180feature using @samp{qSupported}. @xref{multiprocess extensions}, for
35181more information.
35182
8ffe2530
JB
35183Note that all packet forms beginning with an upper- or lower-case
35184letter, other than those described here, are reserved for future use.
35185
b8ff78ce 35186Here are the packet descriptions.
ee2d5c50 35187
b8ff78ce 35188@table @samp
ee2d5c50 35189
b8ff78ce
JB
35190@item !
35191@cindex @samp{!} packet
2d717e4f 35192@anchor{extended mode}
8e04817f
AC
35193Enable extended mode. In extended mode, the remote server is made
35194persistent. The @samp{R} packet is used to restart the program being
35195debugged.
ee2d5c50
AC
35196
35197Reply:
35198@table @samp
35199@item OK
8e04817f 35200The remote target both supports and has enabled extended mode.
ee2d5c50 35201@end table
c906108c 35202
b8ff78ce
JB
35203@item ?
35204@cindex @samp{?} packet
ee2d5c50 35205Indicate the reason the target halted. The reply is the same as for
8b23ecc4
SL
35206step and continue. This packet has a special interpretation when the
35207target is in non-stop mode; see @ref{Remote Non-Stop}.
c906108c 35208
ee2d5c50
AC
35209Reply:
35210@xref{Stop Reply Packets}, for the reply specifications.
35211
b8ff78ce
JB
35212@item A @var{arglen},@var{argnum},@var{arg},@dots{}
35213@cindex @samp{A} packet
35214Initialized @code{argv[]} array passed into program. @var{arglen}
35215specifies the number of bytes in the hex encoded byte stream
35216@var{arg}. See @code{gdbserver} for more details.
ee2d5c50
AC
35217
35218Reply:
35219@table @samp
35220@item OK
b8ff78ce
JB
35221The arguments were set.
35222@item E @var{NN}
35223An error occurred.
ee2d5c50
AC
35224@end table
35225
b8ff78ce
JB
35226@item b @var{baud}
35227@cindex @samp{b} packet
35228(Don't use this packet; its behavior is not well-defined.)
ee2d5c50
AC
35229Change the serial line speed to @var{baud}.
35230
35231JTC: @emph{When does the transport layer state change? When it's
35232received, or after the ACK is transmitted. In either case, there are
35233problems if the command or the acknowledgment packet is dropped.}
35234
35235Stan: @emph{If people really wanted to add something like this, and get
35236it working for the first time, they ought to modify ser-unix.c to send
35237some kind of out-of-band message to a specially-setup stub and have the
35238switch happen "in between" packets, so that from remote protocol's point
35239of view, nothing actually happened.}
35240
b8ff78ce
JB
35241@item B @var{addr},@var{mode}
35242@cindex @samp{B} packet
8e04817f 35243Set (@var{mode} is @samp{S}) or clear (@var{mode} is @samp{C}) a
2f870471
AC
35244breakpoint at @var{addr}.
35245
b8ff78ce 35246Don't use this packet. Use the @samp{Z} and @samp{z} packets instead
2f870471 35247(@pxref{insert breakpoint or watchpoint packet}).
c906108c 35248
bacec72f 35249@cindex @samp{bc} packet
0d772ac9
MS
35250@anchor{bc}
35251@item bc
bacec72f
MS
35252Backward continue. Execute the target system in reverse. No parameter.
35253@xref{Reverse Execution}, for more information.
35254
35255Reply:
35256@xref{Stop Reply Packets}, for the reply specifications.
35257
bacec72f 35258@cindex @samp{bs} packet
0d772ac9
MS
35259@anchor{bs}
35260@item bs
bacec72f
MS
35261Backward single step. Execute one instruction in reverse. No parameter.
35262@xref{Reverse Execution}, for more information.
35263
35264Reply:
35265@xref{Stop Reply Packets}, for the reply specifications.
35266
4f553f88 35267@item c @r{[}@var{addr}@r{]}
b8ff78ce
JB
35268@cindex @samp{c} packet
35269Continue. @var{addr} is address to resume. If @var{addr} is omitted,
35270resume at current address.
c906108c 35271
393eab54
PA
35272This packet is deprecated for multi-threading support. @xref{vCont
35273packet}.
35274
ee2d5c50
AC
35275Reply:
35276@xref{Stop Reply Packets}, for the reply specifications.
35277
4f553f88 35278@item C @var{sig}@r{[};@var{addr}@r{]}
b8ff78ce 35279@cindex @samp{C} packet
8e04817f 35280Continue with signal @var{sig} (hex signal number). If
b8ff78ce 35281@samp{;@var{addr}} is omitted, resume at same address.
c906108c 35282
393eab54
PA
35283This packet is deprecated for multi-threading support. @xref{vCont
35284packet}.
35285
ee2d5c50
AC
35286Reply:
35287@xref{Stop Reply Packets}, for the reply specifications.
c906108c 35288
b8ff78ce
JB
35289@item d
35290@cindex @samp{d} packet
ee2d5c50
AC
35291Toggle debug flag.
35292
b8ff78ce
JB
35293Don't use this packet; instead, define a general set packet
35294(@pxref{General Query Packets}).
ee2d5c50 35295
b8ff78ce 35296@item D
b90a069a 35297@itemx D;@var{pid}
b8ff78ce 35298@cindex @samp{D} packet
b90a069a
SL
35299The first form of the packet is used to detach @value{GDBN} from the
35300remote system. It is sent to the remote target
07f31aa6 35301before @value{GDBN} disconnects via the @code{detach} command.
ee2d5c50 35302
b90a069a
SL
35303The second form, including a process ID, is used when multiprocess
35304protocol extensions are enabled (@pxref{multiprocess extensions}), to
35305detach only a specific process. The @var{pid} is specified as a
35306big-endian hex string.
35307
ee2d5c50
AC
35308Reply:
35309@table @samp
10fac096
NW
35310@item OK
35311for success
b8ff78ce 35312@item E @var{NN}
10fac096 35313for an error
ee2d5c50 35314@end table
c906108c 35315
b8ff78ce
JB
35316@item F @var{RC},@var{EE},@var{CF};@var{XX}
35317@cindex @samp{F} packet
35318A reply from @value{GDBN} to an @samp{F} packet sent by the target.
35319This is part of the File-I/O protocol extension. @xref{File-I/O
79a6e687 35320Remote Protocol Extension}, for the specification.
ee2d5c50 35321
b8ff78ce 35322@item g
ee2d5c50 35323@anchor{read registers packet}
b8ff78ce 35324@cindex @samp{g} packet
ee2d5c50
AC
35325Read general registers.
35326
35327Reply:
35328@table @samp
35329@item @var{XX@dots{}}
8e04817f
AC
35330Each byte of register data is described by two hex digits. The bytes
35331with the register are transmitted in target byte order. The size of
b8ff78ce 35332each register and their position within the @samp{g} packet are
4a9bb1df
UW
35333determined by the @value{GDBN} internal gdbarch functions
35334@code{DEPRECATED_REGISTER_RAW_SIZE} and @code{gdbarch_register_name}. The
b8ff78ce 35335specification of several standard @samp{g} packets is specified below.
ad196637
PA
35336
35337When reading registers from a trace frame (@pxref{Analyze Collected
35338Data,,Using the Collected Data}), the stub may also return a string of
35339literal @samp{x}'s in place of the register data digits, to indicate
35340that the corresponding register has not been collected, thus its value
35341is unavailable. For example, for an architecture with 4 registers of
353424 bytes each, the following reply indicates to @value{GDBN} that
35343registers 0 and 2 have not been collected, while registers 1 and 3
35344have been collected, and both have zero value:
35345
35346@smallexample
35347-> @code{g}
35348<- @code{xxxxxxxx00000000xxxxxxxx00000000}
35349@end smallexample
35350
b8ff78ce 35351@item E @var{NN}
ee2d5c50
AC
35352for an error.
35353@end table
c906108c 35354
b8ff78ce
JB
35355@item G @var{XX@dots{}}
35356@cindex @samp{G} packet
35357Write general registers. @xref{read registers packet}, for a
35358description of the @var{XX@dots{}} data.
ee2d5c50
AC
35359
35360Reply:
35361@table @samp
35362@item OK
35363for success
b8ff78ce 35364@item E @var{NN}
ee2d5c50
AC
35365for an error
35366@end table
35367
393eab54 35368@item H @var{op} @var{thread-id}
b8ff78ce 35369@cindex @samp{H} packet
8e04817f 35370Set thread for subsequent operations (@samp{m}, @samp{M}, @samp{g},
393eab54
PA
35371@samp{G}, et.al.). @var{op} depends on the operation to be performed:
35372it should be @samp{c} for step and continue operations (note that this
35373is deprecated, supporting the @samp{vCont} command is a better
35374option), @samp{g} for other operations. The thread designator
35375@var{thread-id} has the format and interpretation described in
35376@ref{thread-id syntax}.
ee2d5c50
AC
35377
35378Reply:
35379@table @samp
35380@item OK
35381for success
b8ff78ce 35382@item E @var{NN}
ee2d5c50
AC
35383for an error
35384@end table
c906108c 35385
8e04817f
AC
35386@c FIXME: JTC:
35387@c 'H': How restrictive (or permissive) is the thread model. If a
35388@c thread is selected and stopped, are other threads allowed
35389@c to continue to execute? As I mentioned above, I think the
35390@c semantics of each command when a thread is selected must be
35391@c described. For example:
35392@c
35393@c 'g': If the stub supports threads and a specific thread is
35394@c selected, returns the register block from that thread;
35395@c otherwise returns current registers.
35396@c
35397@c 'G' If the stub supports threads and a specific thread is
35398@c selected, sets the registers of the register block of
35399@c that thread; otherwise sets current registers.
c906108c 35400
b8ff78ce 35401@item i @r{[}@var{addr}@r{[},@var{nnn}@r{]]}
ee2d5c50 35402@anchor{cycle step packet}
b8ff78ce
JB
35403@cindex @samp{i} packet
35404Step the remote target by a single clock cycle. If @samp{,@var{nnn}} is
8e04817f
AC
35405present, cycle step @var{nnn} cycles. If @var{addr} is present, cycle
35406step starting at that address.
c906108c 35407
b8ff78ce
JB
35408@item I
35409@cindex @samp{I} packet
35410Signal, then cycle step. @xref{step with signal packet}. @xref{cycle
35411step packet}.
ee2d5c50 35412
b8ff78ce
JB
35413@item k
35414@cindex @samp{k} packet
35415Kill request.
c906108c 35416
ac282366 35417FIXME: @emph{There is no description of how to operate when a specific
ee2d5c50
AC
35418thread context has been selected (i.e.@: does 'k' kill only that
35419thread?)}.
c906108c 35420
b8ff78ce
JB
35421@item m @var{addr},@var{length}
35422@cindex @samp{m} packet
8e04817f 35423Read @var{length} bytes of memory starting at address @var{addr}.
fb031cdf
JB
35424Note that @var{addr} may not be aligned to any particular boundary.
35425
35426The stub need not use any particular size or alignment when gathering
35427data from memory for the response; even if @var{addr} is word-aligned
35428and @var{length} is a multiple of the word size, the stub is free to
35429use byte accesses, or not. For this reason, this packet may not be
35430suitable for accessing memory-mapped I/O devices.
c43c5473
JB
35431@cindex alignment of remote memory accesses
35432@cindex size of remote memory accesses
35433@cindex memory, alignment and size of remote accesses
c906108c 35434
ee2d5c50
AC
35435Reply:
35436@table @samp
35437@item @var{XX@dots{}}
599b237a 35438Memory contents; each byte is transmitted as a two-digit hexadecimal
b8ff78ce
JB
35439number. The reply may contain fewer bytes than requested if the
35440server was able to read only part of the region of memory.
35441@item E @var{NN}
ee2d5c50
AC
35442@var{NN} is errno
35443@end table
35444
b8ff78ce
JB
35445@item M @var{addr},@var{length}:@var{XX@dots{}}
35446@cindex @samp{M} packet
8e04817f 35447Write @var{length} bytes of memory starting at address @var{addr}.
b8ff78ce 35448@var{XX@dots{}} is the data; each byte is transmitted as a two-digit
599b237a 35449hexadecimal number.
ee2d5c50
AC
35450
35451Reply:
35452@table @samp
35453@item OK
35454for success
b8ff78ce 35455@item E @var{NN}
8e04817f
AC
35456for an error (this includes the case where only part of the data was
35457written).
ee2d5c50 35458@end table
c906108c 35459
b8ff78ce
JB
35460@item p @var{n}
35461@cindex @samp{p} packet
35462Read the value of register @var{n}; @var{n} is in hex.
2e868123
AC
35463@xref{read registers packet}, for a description of how the returned
35464register value is encoded.
ee2d5c50
AC
35465
35466Reply:
35467@table @samp
2e868123
AC
35468@item @var{XX@dots{}}
35469the register's value
b8ff78ce 35470@item E @var{NN}
2e868123
AC
35471for an error
35472@item
35473Indicating an unrecognized @var{query}.
ee2d5c50
AC
35474@end table
35475
b8ff78ce 35476@item P @var{n@dots{}}=@var{r@dots{}}
ee2d5c50 35477@anchor{write register packet}
b8ff78ce
JB
35478@cindex @samp{P} packet
35479Write register @var{n@dots{}} with value @var{r@dots{}}. The register
599b237a 35480number @var{n} is in hexadecimal, and @var{r@dots{}} contains two hex
8e04817f 35481digits for each byte in the register (target byte order).
c906108c 35482
ee2d5c50
AC
35483Reply:
35484@table @samp
35485@item OK
35486for success
b8ff78ce 35487@item E @var{NN}
ee2d5c50
AC
35488for an error
35489@end table
35490
5f3bebba
JB
35491@item q @var{name} @var{params}@dots{}
35492@itemx Q @var{name} @var{params}@dots{}
b8ff78ce 35493@cindex @samp{q} packet
b8ff78ce 35494@cindex @samp{Q} packet
5f3bebba
JB
35495General query (@samp{q}) and set (@samp{Q}). These packets are
35496described fully in @ref{General Query Packets}.
c906108c 35497
b8ff78ce
JB
35498@item r
35499@cindex @samp{r} packet
8e04817f 35500Reset the entire system.
c906108c 35501
b8ff78ce 35502Don't use this packet; use the @samp{R} packet instead.
ee2d5c50 35503
b8ff78ce
JB
35504@item R @var{XX}
35505@cindex @samp{R} packet
8e04817f 35506Restart the program being debugged. @var{XX}, while needed, is ignored.
2d717e4f 35507This packet is only available in extended mode (@pxref{extended mode}).
ee2d5c50 35508
8e04817f 35509The @samp{R} packet has no reply.
ee2d5c50 35510
4f553f88 35511@item s @r{[}@var{addr}@r{]}
b8ff78ce
JB
35512@cindex @samp{s} packet
35513Single step. @var{addr} is the address at which to resume. If
35514@var{addr} is omitted, resume at same address.
c906108c 35515
393eab54
PA
35516This packet is deprecated for multi-threading support. @xref{vCont
35517packet}.
35518
ee2d5c50
AC
35519Reply:
35520@xref{Stop Reply Packets}, for the reply specifications.
35521
4f553f88 35522@item S @var{sig}@r{[};@var{addr}@r{]}
ee2d5c50 35523@anchor{step with signal packet}
b8ff78ce
JB
35524@cindex @samp{S} packet
35525Step with signal. This is analogous to the @samp{C} packet, but
35526requests a single-step, rather than a normal resumption of execution.
c906108c 35527
393eab54
PA
35528This packet is deprecated for multi-threading support. @xref{vCont
35529packet}.
35530
ee2d5c50
AC
35531Reply:
35532@xref{Stop Reply Packets}, for the reply specifications.
35533
b8ff78ce
JB
35534@item t @var{addr}:@var{PP},@var{MM}
35535@cindex @samp{t} packet
8e04817f 35536Search backwards starting at address @var{addr} for a match with pattern
ee2d5c50
AC
35537@var{PP} and mask @var{MM}. @var{PP} and @var{MM} are 4 bytes.
35538@var{addr} must be at least 3 digits.
c906108c 35539
b90a069a 35540@item T @var{thread-id}
b8ff78ce 35541@cindex @samp{T} packet
b90a069a 35542Find out if the thread @var{thread-id} is alive. @xref{thread-id syntax}.
c906108c 35543
ee2d5c50
AC
35544Reply:
35545@table @samp
35546@item OK
35547thread is still alive
b8ff78ce 35548@item E @var{NN}
ee2d5c50
AC
35549thread is dead
35550@end table
35551
b8ff78ce
JB
35552@item v
35553Packets starting with @samp{v} are identified by a multi-letter name,
35554up to the first @samp{;} or @samp{?} (or the end of the packet).
86d30acc 35555
2d717e4f
DJ
35556@item vAttach;@var{pid}
35557@cindex @samp{vAttach} packet
8b23ecc4
SL
35558Attach to a new process with the specified process ID @var{pid}.
35559The process ID is a
35560hexadecimal integer identifying the process. In all-stop mode, all
35561threads in the attached process are stopped; in non-stop mode, it may be
35562attached without being stopped if that is supported by the target.
35563
35564@c In non-stop mode, on a successful vAttach, the stub should set the
35565@c current thread to a thread of the newly-attached process. After
35566@c attaching, GDB queries for the attached process's thread ID with qC.
35567@c Also note that, from a user perspective, whether or not the
35568@c target is stopped on attach in non-stop mode depends on whether you
35569@c use the foreground or background version of the attach command, not
35570@c on what vAttach does; GDB does the right thing with respect to either
35571@c stopping or restarting threads.
2d717e4f
DJ
35572
35573This packet is only available in extended mode (@pxref{extended mode}).
35574
35575Reply:
35576@table @samp
35577@item E @var{nn}
35578for an error
35579@item @r{Any stop packet}
8b23ecc4
SL
35580for success in all-stop mode (@pxref{Stop Reply Packets})
35581@item OK
35582for success in non-stop mode (@pxref{Remote Non-Stop})
2d717e4f
DJ
35583@end table
35584
b90a069a 35585@item vCont@r{[};@var{action}@r{[}:@var{thread-id}@r{]]}@dots{}
b8ff78ce 35586@cindex @samp{vCont} packet
393eab54 35587@anchor{vCont packet}
b8ff78ce 35588Resume the inferior, specifying different actions for each thread.
b90a069a 35589If an action is specified with no @var{thread-id}, then it is applied to any
86d30acc 35590threads that don't have a specific action specified; if no default action is
8b23ecc4
SL
35591specified then other threads should remain stopped in all-stop mode and
35592in their current state in non-stop mode.
35593Specifying multiple
86d30acc 35594default actions is an error; specifying no actions is also an error.
b90a069a
SL
35595Thread IDs are specified using the syntax described in @ref{thread-id syntax}.
35596
35597Currently supported actions are:
86d30acc 35598
b8ff78ce 35599@table @samp
86d30acc
DJ
35600@item c
35601Continue.
b8ff78ce 35602@item C @var{sig}
8b23ecc4 35603Continue with signal @var{sig}. The signal @var{sig} should be two hex digits.
86d30acc
DJ
35604@item s
35605Step.
b8ff78ce 35606@item S @var{sig}
8b23ecc4
SL
35607Step with signal @var{sig}. The signal @var{sig} should be two hex digits.
35608@item t
35609Stop.
86d30acc
DJ
35610@end table
35611
8b23ecc4
SL
35612The optional argument @var{addr} normally associated with the
35613@samp{c}, @samp{C}, @samp{s}, and @samp{S} packets is
b8ff78ce 35614not supported in @samp{vCont}.
86d30acc 35615
08a0efd0
PA
35616The @samp{t} action is only relevant in non-stop mode
35617(@pxref{Remote Non-Stop}) and may be ignored by the stub otherwise.
8b23ecc4
SL
35618A stop reply should be generated for any affected thread not already stopped.
35619When a thread is stopped by means of a @samp{t} action,
35620the corresponding stop reply should indicate that the thread has stopped with
35621signal @samp{0}, regardless of whether the target uses some other signal
35622as an implementation detail.
35623
4220b2f8
TS
35624The stub must support @samp{vCont} if it reports support for
35625multiprocess extensions (@pxref{multiprocess extensions}). Note that in
35626this case @samp{vCont} actions can be specified to apply to all threads
35627in a process by using the @samp{p@var{pid}.-1} form of the
35628@var{thread-id}.
35629
86d30acc
DJ
35630Reply:
35631@xref{Stop Reply Packets}, for the reply specifications.
35632
b8ff78ce
JB
35633@item vCont?
35634@cindex @samp{vCont?} packet
d3e8051b 35635Request a list of actions supported by the @samp{vCont} packet.
86d30acc
DJ
35636
35637Reply:
35638@table @samp
b8ff78ce
JB
35639@item vCont@r{[};@var{action}@dots{}@r{]}
35640The @samp{vCont} packet is supported. Each @var{action} is a supported
35641command in the @samp{vCont} packet.
86d30acc 35642@item
b8ff78ce 35643The @samp{vCont} packet is not supported.
86d30acc 35644@end table
ee2d5c50 35645
a6b151f1
DJ
35646@item vFile:@var{operation}:@var{parameter}@dots{}
35647@cindex @samp{vFile} packet
35648Perform a file operation on the target system. For details,
35649see @ref{Host I/O Packets}.
35650
68437a39
DJ
35651@item vFlashErase:@var{addr},@var{length}
35652@cindex @samp{vFlashErase} packet
35653Direct the stub to erase @var{length} bytes of flash starting at
35654@var{addr}. The region may enclose any number of flash blocks, but
35655its start and end must fall on block boundaries, as indicated by the
79a6e687
BW
35656flash block size appearing in the memory map (@pxref{Memory Map
35657Format}). @value{GDBN} groups flash memory programming operations
68437a39
DJ
35658together, and sends a @samp{vFlashDone} request after each group; the
35659stub is allowed to delay erase operation until the @samp{vFlashDone}
35660packet is received.
35661
35662Reply:
35663@table @samp
35664@item OK
35665for success
35666@item E @var{NN}
35667for an error
35668@end table
35669
35670@item vFlashWrite:@var{addr}:@var{XX@dots{}}
35671@cindex @samp{vFlashWrite} packet
35672Direct the stub to write data to flash address @var{addr}. The data
35673is passed in binary form using the same encoding as for the @samp{X}
35674packet (@pxref{Binary Data}). The memory ranges specified by
35675@samp{vFlashWrite} packets preceding a @samp{vFlashDone} packet must
35676not overlap, and must appear in order of increasing addresses
35677(although @samp{vFlashErase} packets for higher addresses may already
35678have been received; the ordering is guaranteed only between
35679@samp{vFlashWrite} packets). If a packet writes to an address that was
35680neither erased by a preceding @samp{vFlashErase} packet nor by some other
35681target-specific method, the results are unpredictable.
35682
35683
35684Reply:
35685@table @samp
35686@item OK
35687for success
35688@item E.memtype
35689for vFlashWrite addressing non-flash memory
35690@item E @var{NN}
35691for an error
35692@end table
35693
35694@item vFlashDone
35695@cindex @samp{vFlashDone} packet
35696Indicate to the stub that flash programming operation is finished.
35697The stub is permitted to delay or batch the effects of a group of
35698@samp{vFlashErase} and @samp{vFlashWrite} packets until a
35699@samp{vFlashDone} packet is received. The contents of the affected
35700regions of flash memory are unpredictable until the @samp{vFlashDone}
35701request is completed.
35702
b90a069a
SL
35703@item vKill;@var{pid}
35704@cindex @samp{vKill} packet
35705Kill the process with the specified process ID. @var{pid} is a
35706hexadecimal integer identifying the process. This packet is used in
35707preference to @samp{k} when multiprocess protocol extensions are
35708supported; see @ref{multiprocess extensions}.
35709
35710Reply:
35711@table @samp
35712@item E @var{nn}
35713for an error
35714@item OK
35715for success
35716@end table
35717
2d717e4f
DJ
35718@item vRun;@var{filename}@r{[};@var{argument}@r{]}@dots{}
35719@cindex @samp{vRun} packet
35720Run the program @var{filename}, passing it each @var{argument} on its
35721command line. The file and arguments are hex-encoded strings. If
35722@var{filename} is an empty string, the stub may use a default program
35723(e.g.@: the last program run). The program is created in the stopped
9b562ab8 35724state.
2d717e4f 35725
8b23ecc4
SL
35726@c FIXME: What about non-stop mode?
35727
2d717e4f
DJ
35728This packet is only available in extended mode (@pxref{extended mode}).
35729
35730Reply:
35731@table @samp
35732@item E @var{nn}
35733for an error
35734@item @r{Any stop packet}
35735for success (@pxref{Stop Reply Packets})
35736@end table
35737
8b23ecc4
SL
35738@item vStopped
35739@anchor{vStopped packet}
35740@cindex @samp{vStopped} packet
35741
35742In non-stop mode (@pxref{Remote Non-Stop}), acknowledge a previous stop
35743reply and prompt for the stub to report another one.
35744
35745Reply:
35746@table @samp
35747@item @r{Any stop packet}
35748if there is another unreported stop event (@pxref{Stop Reply Packets})
35749@item OK
35750if there are no unreported stop events
35751@end table
35752
b8ff78ce 35753@item X @var{addr},@var{length}:@var{XX@dots{}}
9a6253be 35754@anchor{X packet}
b8ff78ce
JB
35755@cindex @samp{X} packet
35756Write data to memory, where the data is transmitted in binary.
35757@var{addr} is address, @var{length} is number of bytes,
0876f84a 35758@samp{@var{XX}@dots{}} is binary data (@pxref{Binary Data}).
c906108c 35759
ee2d5c50
AC
35760Reply:
35761@table @samp
35762@item OK
35763for success
b8ff78ce 35764@item E @var{NN}
ee2d5c50
AC
35765for an error
35766@end table
35767
a1dcb23a
DJ
35768@item z @var{type},@var{addr},@var{kind}
35769@itemx Z @var{type},@var{addr},@var{kind}
2f870471 35770@anchor{insert breakpoint or watchpoint packet}
b8ff78ce
JB
35771@cindex @samp{z} packet
35772@cindex @samp{Z} packets
35773Insert (@samp{Z}) or remove (@samp{z}) a @var{type} breakpoint or
a1dcb23a 35774watchpoint starting at address @var{address} of kind @var{kind}.
ee2d5c50 35775
2f870471
AC
35776Each breakpoint and watchpoint packet @var{type} is documented
35777separately.
35778
512217c7
AC
35779@emph{Implementation notes: A remote target shall return an empty string
35780for an unrecognized breakpoint or watchpoint packet @var{type}. A
35781remote target shall support either both or neither of a given
b8ff78ce 35782@samp{Z@var{type}@dots{}} and @samp{z@var{type}@dots{}} packet pair. To
2f870471
AC
35783avoid potential problems with duplicate packets, the operations should
35784be implemented in an idempotent way.}
35785
a1dcb23a 35786@item z0,@var{addr},@var{kind}
d3ce09f5 35787@itemx Z0,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}@r{[};cmds:@var{persist},@var{cmd_list}@dots{}@r{]}
b8ff78ce
JB
35788@cindex @samp{z0} packet
35789@cindex @samp{Z0} packet
35790Insert (@samp{Z0}) or remove (@samp{z0}) a memory breakpoint at address
a1dcb23a 35791@var{addr} of type @var{kind}.
2f870471
AC
35792
35793A memory breakpoint is implemented by replacing the instruction at
35794@var{addr} with a software breakpoint or trap instruction. The
a1dcb23a
DJ
35795@var{kind} is target-specific and typically indicates the size of
35796the breakpoint in bytes that should be inserted. E.g., the @sc{arm}
35797and @sc{mips} can insert either a 2 or 4 byte breakpoint. Some
35798architectures have additional meanings for @var{kind};
83364271
LM
35799@var{cond_list} is an optional list of conditional expressions in bytecode
35800form that should be evaluated on the target's side. These are the
35801conditions that should be taken into consideration when deciding if
35802the breakpoint trigger should be reported back to @var{GDBN}.
35803
35804The @var{cond_list} parameter is comprised of a series of expressions,
35805concatenated without separators. Each expression has the following form:
35806
35807@table @samp
35808
35809@item X @var{len},@var{expr}
35810@var{len} is the length of the bytecode expression and @var{expr} is the
35811actual conditional expression in bytecode form.
35812
35813@end table
35814
d3ce09f5
SS
35815The optional @var{cmd_list} parameter introduces commands that may be
35816run on the target, rather than being reported back to @value{GDBN}.
35817The parameter starts with a numeric flag @var{persist}; if the flag is
35818nonzero, then the breakpoint may remain active and the commands
35819continue to be run even when @value{GDBN} disconnects from the target.
35820Following this flag is a series of expressions concatenated with no
35821separators. Each expression has the following form:
35822
35823@table @samp
35824
35825@item X @var{len},@var{expr}
35826@var{len} is the length of the bytecode expression and @var{expr} is the
35827actual conditional expression in bytecode form.
35828
35829@end table
35830
a1dcb23a 35831see @ref{Architecture-Specific Protocol Details}.
c906108c 35832
2f870471
AC
35833@emph{Implementation note: It is possible for a target to copy or move
35834code that contains memory breakpoints (e.g., when implementing
35835overlays). The behavior of this packet, in the presence of such a
35836target, is not defined.}
c906108c 35837
ee2d5c50
AC
35838Reply:
35839@table @samp
2f870471
AC
35840@item OK
35841success
35842@item
35843not supported
b8ff78ce 35844@item E @var{NN}
ee2d5c50 35845for an error
2f870471
AC
35846@end table
35847
a1dcb23a 35848@item z1,@var{addr},@var{kind}
83364271 35849@itemx Z1,@var{addr},@var{kind}@r{[};@var{cond_list}@dots{}@r{]}
b8ff78ce
JB
35850@cindex @samp{z1} packet
35851@cindex @samp{Z1} packet
35852Insert (@samp{Z1}) or remove (@samp{z1}) a hardware breakpoint at
a1dcb23a 35853address @var{addr}.
2f870471
AC
35854
35855A hardware breakpoint is implemented using a mechanism that is not
a1dcb23a 35856dependant on being able to modify the target's memory. @var{kind}
83364271 35857and @var{cond_list} have the same meaning as in @samp{Z0} packets.
2f870471
AC
35858
35859@emph{Implementation note: A hardware breakpoint is not affected by code
35860movement.}
35861
35862Reply:
35863@table @samp
ee2d5c50 35864@item OK
2f870471
AC
35865success
35866@item
35867not supported
b8ff78ce 35868@item E @var{NN}
2f870471
AC
35869for an error
35870@end table
35871
a1dcb23a
DJ
35872@item z2,@var{addr},@var{kind}
35873@itemx Z2,@var{addr},@var{kind}
b8ff78ce
JB
35874@cindex @samp{z2} packet
35875@cindex @samp{Z2} packet
a1dcb23a
DJ
35876Insert (@samp{Z2}) or remove (@samp{z2}) a write watchpoint at @var{addr}.
35877@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
35878
35879Reply:
35880@table @samp
35881@item OK
35882success
35883@item
35884not supported
b8ff78ce 35885@item E @var{NN}
2f870471
AC
35886for an error
35887@end table
35888
a1dcb23a
DJ
35889@item z3,@var{addr},@var{kind}
35890@itemx Z3,@var{addr},@var{kind}
b8ff78ce
JB
35891@cindex @samp{z3} packet
35892@cindex @samp{Z3} packet
a1dcb23a
DJ
35893Insert (@samp{Z3}) or remove (@samp{z3}) a read watchpoint at @var{addr}.
35894@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
35895
35896Reply:
35897@table @samp
35898@item OK
35899success
35900@item
35901not supported
b8ff78ce 35902@item E @var{NN}
2f870471
AC
35903for an error
35904@end table
35905
a1dcb23a
DJ
35906@item z4,@var{addr},@var{kind}
35907@itemx Z4,@var{addr},@var{kind}
b8ff78ce
JB
35908@cindex @samp{z4} packet
35909@cindex @samp{Z4} packet
a1dcb23a
DJ
35910Insert (@samp{Z4}) or remove (@samp{z4}) an access watchpoint at @var{addr}.
35911@var{kind} is interpreted as the number of bytes to watch.
2f870471
AC
35912
35913Reply:
35914@table @samp
35915@item OK
35916success
35917@item
35918not supported
b8ff78ce 35919@item E @var{NN}
2f870471 35920for an error
ee2d5c50
AC
35921@end table
35922
35923@end table
c906108c 35924
ee2d5c50
AC
35925@node Stop Reply Packets
35926@section Stop Reply Packets
35927@cindex stop reply packets
c906108c 35928
8b23ecc4
SL
35929The @samp{C}, @samp{c}, @samp{S}, @samp{s}, @samp{vCont},
35930@samp{vAttach}, @samp{vRun}, @samp{vStopped}, and @samp{?} packets can
35931receive any of the below as a reply. Except for @samp{?}
35932and @samp{vStopped}, that reply is only returned
b8ff78ce 35933when the target halts. In the below the exact meaning of @dfn{signal
89be2091
DJ
35934number} is defined by the header @file{include/gdb/signals.h} in the
35935@value{GDBN} source code.
c906108c 35936
b8ff78ce
JB
35937As in the description of request packets, we include spaces in the
35938reply templates for clarity; these are not part of the reply packet's
35939syntax. No @value{GDBN} stop reply packet uses spaces to separate its
35940components.
c906108c 35941
b8ff78ce 35942@table @samp
ee2d5c50 35943
b8ff78ce 35944@item S @var{AA}
599b237a 35945The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
35946number). This is equivalent to a @samp{T} response with no
35947@var{n}:@var{r} pairs.
c906108c 35948
b8ff78ce
JB
35949@item T @var{AA} @var{n1}:@var{r1};@var{n2}:@var{r2};@dots{}
35950@cindex @samp{T} packet reply
599b237a 35951The program received signal number @var{AA} (a two-digit hexadecimal
940178d3
JB
35952number). This is equivalent to an @samp{S} response, except that the
35953@samp{@var{n}:@var{r}} pairs can carry values of important registers
35954and other information directly in the stop reply packet, reducing
35955round-trip latency. Single-step and breakpoint traps are reported
35956this way. Each @samp{@var{n}:@var{r}} pair is interpreted as follows:
cfa9d6d9
DJ
35957
35958@itemize @bullet
b8ff78ce 35959@item
599b237a 35960If @var{n} is a hexadecimal number, it is a register number, and the
b8ff78ce
JB
35961corresponding @var{r} gives that register's value. @var{r} is a
35962series of bytes in target byte order, with each byte given by a
35963two-digit hex number.
cfa9d6d9 35964
b8ff78ce 35965@item
b90a069a
SL
35966If @var{n} is @samp{thread}, then @var{r} is the @var{thread-id} of
35967the stopped thread, as specified in @ref{thread-id syntax}.
cfa9d6d9 35968
dc146f7c
VP
35969@item
35970If @var{n} is @samp{core}, then @var{r} is the hexadecimal number of
35971the core on which the stop event was detected.
35972
b8ff78ce 35973@item
cfa9d6d9
DJ
35974If @var{n} is a recognized @dfn{stop reason}, it describes a more
35975specific event that stopped the target. The currently defined stop
35976reasons are listed below. @var{aa} should be @samp{05}, the trap
35977signal. At most one stop reason should be present.
35978
b8ff78ce
JB
35979@item
35980Otherwise, @value{GDBN} should ignore this @samp{@var{n}:@var{r}} pair
35981and go on to the next; this allows us to extend the protocol in the
35982future.
cfa9d6d9
DJ
35983@end itemize
35984
35985The currently defined stop reasons are:
35986
35987@table @samp
35988@item watch
35989@itemx rwatch
35990@itemx awatch
35991The packet indicates a watchpoint hit, and @var{r} is the data address, in
35992hex.
35993
35994@cindex shared library events, remote reply
35995@item library
35996The packet indicates that the loaded libraries have changed.
35997@value{GDBN} should use @samp{qXfer:libraries:read} to fetch a new
35998list of loaded libraries. @var{r} is ignored.
bacec72f
MS
35999
36000@cindex replay log events, remote reply
36001@item replaylog
36002The packet indicates that the target cannot continue replaying
36003logged execution events, because it has reached the end (or the
36004beginning when executing backward) of the log. The value of @var{r}
36005will be either @samp{begin} or @samp{end}. @xref{Reverse Execution},
36006for more information.
cfa9d6d9 36007@end table
ee2d5c50 36008
b8ff78ce 36009@item W @var{AA}
b90a069a 36010@itemx W @var{AA} ; process:@var{pid}
8e04817f 36011The process exited, and @var{AA} is the exit status. This is only
ee2d5c50
AC
36012applicable to certain targets.
36013
b90a069a
SL
36014The second form of the response, including the process ID of the exited
36015process, can be used only when @value{GDBN} has reported support for
36016multiprocess protocol extensions; see @ref{multiprocess extensions}.
36017The @var{pid} is formatted as a big-endian hex string.
36018
b8ff78ce 36019@item X @var{AA}
b90a069a 36020@itemx X @var{AA} ; process:@var{pid}
8e04817f 36021The process terminated with signal @var{AA}.
c906108c 36022
b90a069a
SL
36023The second form of the response, including the process ID of the
36024terminated process, can be used only when @value{GDBN} has reported
36025support for multiprocess protocol extensions; see @ref{multiprocess
36026extensions}. The @var{pid} is formatted as a big-endian hex string.
36027
b8ff78ce
JB
36028@item O @var{XX}@dots{}
36029@samp{@var{XX}@dots{}} is hex encoding of @sc{ascii} data, to be
36030written as the program's console output. This can happen at any time
36031while the program is running and the debugger should continue to wait
8b23ecc4 36032for @samp{W}, @samp{T}, etc. This reply is not permitted in non-stop mode.
0ce1b118 36033
b8ff78ce 36034@item F @var{call-id},@var{parameter}@dots{}
0ce1b118
CV
36035@var{call-id} is the identifier which says which host system call should
36036be called. This is just the name of the function. Translation into the
36037correct system call is only applicable as it's defined in @value{GDBN}.
79a6e687 36038@xref{File-I/O Remote Protocol Extension}, for a list of implemented
0ce1b118
CV
36039system calls.
36040
b8ff78ce
JB
36041@samp{@var{parameter}@dots{}} is a list of parameters as defined for
36042this very system call.
0ce1b118 36043
b8ff78ce
JB
36044The target replies with this packet when it expects @value{GDBN} to
36045call a host system call on behalf of the target. @value{GDBN} replies
36046with an appropriate @samp{F} packet and keeps up waiting for the next
36047reply packet from the target. The latest @samp{C}, @samp{c}, @samp{S}
79a6e687
BW
36048or @samp{s} action is expected to be continued. @xref{File-I/O Remote
36049Protocol Extension}, for more details.
0ce1b118 36050
ee2d5c50
AC
36051@end table
36052
36053@node General Query Packets
36054@section General Query Packets
9c16f35a 36055@cindex remote query requests
c906108c 36056
5f3bebba
JB
36057Packets starting with @samp{q} are @dfn{general query packets};
36058packets starting with @samp{Q} are @dfn{general set packets}. General
36059query and set packets are a semi-unified form for retrieving and
36060sending information to and from the stub.
36061
36062The initial letter of a query or set packet is followed by a name
36063indicating what sort of thing the packet applies to. For example,
36064@value{GDBN} may use a @samp{qSymbol} packet to exchange symbol
36065definitions with the stub. These packet names follow some
36066conventions:
36067
36068@itemize @bullet
36069@item
36070The name must not contain commas, colons or semicolons.
36071@item
36072Most @value{GDBN} query and set packets have a leading upper case
36073letter.
36074@item
36075The names of custom vendor packets should use a company prefix, in
36076lower case, followed by a period. For example, packets designed at
36077the Acme Corporation might begin with @samp{qacme.foo} (for querying
36078foos) or @samp{Qacme.bar} (for setting bars).
36079@end itemize
36080
aa56d27a
JB
36081The name of a query or set packet should be separated from any
36082parameters by a @samp{:}; the parameters themselves should be
36083separated by @samp{,} or @samp{;}. Stubs must be careful to match the
369af7bd
DJ
36084full packet name, and check for a separator or the end of the packet,
36085in case two packet names share a common prefix. New packets should not begin
36086with @samp{qC}, @samp{qP}, or @samp{qL}@footnote{The @samp{qP} and @samp{qL}
36087packets predate these conventions, and have arguments without any terminator
36088for the packet name; we suspect they are in widespread use in places that
36089are difficult to upgrade. The @samp{qC} packet has no arguments, but some
36090existing stubs (e.g.@: RedBoot) are known to not check for the end of the
36091packet.}.
c906108c 36092
b8ff78ce
JB
36093Like the descriptions of the other packets, each description here
36094has a template showing the packet's overall syntax, followed by an
36095explanation of the packet's meaning. We include spaces in some of the
36096templates for clarity; these are not part of the packet's syntax. No
36097@value{GDBN} packet uses spaces to separate its components.
36098
5f3bebba
JB
36099Here are the currently defined query and set packets:
36100
b8ff78ce 36101@table @samp
c906108c 36102
d1feda86
YQ
36103@item QAgent:1
36104@item QAgent:0
36105Turn on or off the agent as a helper to perform some debugging operations
36106delegated from @value{GDBN} (@pxref{Control Agent}).
36107
d914c394
SS
36108@item QAllow:@var{op}:@var{val}@dots{}
36109@cindex @samp{QAllow} packet
36110Specify which operations @value{GDBN} expects to request of the
36111target, as a semicolon-separated list of operation name and value
36112pairs. Possible values for @var{op} include @samp{WriteReg},
36113@samp{WriteMem}, @samp{InsertBreak}, @samp{InsertTrace},
36114@samp{InsertFastTrace}, and @samp{Stop}. @var{val} is either 0,
36115indicating that @value{GDBN} will not request the operation, or 1,
36116indicating that it may. (The target can then use this to set up its
36117own internals optimally, for instance if the debugger never expects to
36118insert breakpoints, it may not need to install its own trap handler.)
36119
b8ff78ce 36120@item qC
9c16f35a 36121@cindex current thread, remote request
b8ff78ce 36122@cindex @samp{qC} packet
b90a069a 36123Return the current thread ID.
ee2d5c50
AC
36124
36125Reply:
36126@table @samp
b90a069a
SL
36127@item QC @var{thread-id}
36128Where @var{thread-id} is a thread ID as documented in
36129@ref{thread-id syntax}.
b8ff78ce 36130@item @r{(anything else)}
b90a069a 36131Any other reply implies the old thread ID.
ee2d5c50
AC
36132@end table
36133
b8ff78ce 36134@item qCRC:@var{addr},@var{length}
ff2587ec 36135@cindex CRC of memory block, remote request
b8ff78ce 36136@cindex @samp{qCRC} packet
99e008fe
EZ
36137Compute the CRC checksum of a block of memory using CRC-32 defined in
36138IEEE 802.3. The CRC is computed byte at a time, taking the most
36139significant bit of each byte first. The initial pattern code
36140@code{0xffffffff} is used to ensure leading zeros affect the CRC.
36141
36142@emph{Note:} This is the same CRC used in validating separate debug
36143files (@pxref{Separate Debug Files, , Debugging Information in Separate
36144Files}). However the algorithm is slightly different. When validating
36145separate debug files, the CRC is computed taking the @emph{least}
36146significant bit of each byte first, and the final result is inverted to
36147detect trailing zeros.
36148
ff2587ec
WZ
36149Reply:
36150@table @samp
b8ff78ce 36151@item E @var{NN}
ff2587ec 36152An error (such as memory fault)
b8ff78ce
JB
36153@item C @var{crc32}
36154The specified memory region's checksum is @var{crc32}.
ff2587ec
WZ
36155@end table
36156
03583c20
UW
36157@item QDisableRandomization:@var{value}
36158@cindex disable address space randomization, remote request
36159@cindex @samp{QDisableRandomization} packet
36160Some target operating systems will randomize the virtual address space
36161of the inferior process as a security feature, but provide a feature
36162to disable such randomization, e.g.@: to allow for a more deterministic
36163debugging experience. On such systems, this packet with a @var{value}
36164of 1 directs the target to disable address space randomization for
36165processes subsequently started via @samp{vRun} packets, while a packet
36166with a @var{value} of 0 tells the target to enable address space
36167randomization.
36168
36169This packet is only available in extended mode (@pxref{extended mode}).
36170
36171Reply:
36172@table @samp
36173@item OK
36174The request succeeded.
36175
36176@item E @var{nn}
36177An error occurred. @var{nn} are hex digits.
36178
36179@item
36180An empty reply indicates that @samp{QDisableRandomization} is not supported
36181by the stub.
36182@end table
36183
36184This packet is not probed by default; the remote stub must request it,
36185by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36186This should only be done on targets that actually support disabling
36187address space randomization.
36188
b8ff78ce
JB
36189@item qfThreadInfo
36190@itemx qsThreadInfo
9c16f35a 36191@cindex list active threads, remote request
b8ff78ce
JB
36192@cindex @samp{qfThreadInfo} packet
36193@cindex @samp{qsThreadInfo} packet
b90a069a 36194Obtain a list of all active thread IDs from the target (OS). Since there
8e04817f
AC
36195may be too many active threads to fit into one reply packet, this query
36196works iteratively: it may require more than one query/reply sequence to
36197obtain the entire list of threads. The first query of the sequence will
b8ff78ce
JB
36198be the @samp{qfThreadInfo} query; subsequent queries in the
36199sequence will be the @samp{qsThreadInfo} query.
ee2d5c50 36200
b8ff78ce 36201NOTE: This packet replaces the @samp{qL} query (see below).
ee2d5c50
AC
36202
36203Reply:
36204@table @samp
b90a069a
SL
36205@item m @var{thread-id}
36206A single thread ID
36207@item m @var{thread-id},@var{thread-id}@dots{}
36208a comma-separated list of thread IDs
b8ff78ce
JB
36209@item l
36210(lower case letter @samp{L}) denotes end of list.
ee2d5c50
AC
36211@end table
36212
36213In response to each query, the target will reply with a list of one or
b90a069a 36214more thread IDs, separated by commas.
e1aac25b 36215@value{GDBN} will respond to each reply with a request for more thread
b8ff78ce 36216ids (using the @samp{qs} form of the query), until the target responds
501994c0 36217with @samp{l} (lower-case ell, for @dfn{last}).
b90a069a
SL
36218Refer to @ref{thread-id syntax}, for the format of the @var{thread-id}
36219fields.
c906108c 36220
b8ff78ce 36221@item qGetTLSAddr:@var{thread-id},@var{offset},@var{lm}
ff2587ec 36222@cindex get thread-local storage address, remote request
b8ff78ce 36223@cindex @samp{qGetTLSAddr} packet
ff2587ec
WZ
36224Fetch the address associated with thread local storage specified
36225by @var{thread-id}, @var{offset}, and @var{lm}.
36226
b90a069a
SL
36227@var{thread-id} is the thread ID associated with the
36228thread for which to fetch the TLS address. @xref{thread-id syntax}.
ff2587ec
WZ
36229
36230@var{offset} is the (big endian, hex encoded) offset associated with the
36231thread local variable. (This offset is obtained from the debug
36232information associated with the variable.)
36233
db2e3e2e 36234@var{lm} is the (big endian, hex encoded) OS/ABI-specific encoding of the
7a9dd1b2 36235load module associated with the thread local storage. For example,
ff2587ec
WZ
36236a @sc{gnu}/Linux system will pass the link map address of the shared
36237object associated with the thread local storage under consideration.
36238Other operating environments may choose to represent the load module
36239differently, so the precise meaning of this parameter will vary.
ee2d5c50
AC
36240
36241Reply:
b8ff78ce
JB
36242@table @samp
36243@item @var{XX}@dots{}
ff2587ec
WZ
36244Hex encoded (big endian) bytes representing the address of the thread
36245local storage requested.
36246
b8ff78ce
JB
36247@item E @var{nn}
36248An error occurred. @var{nn} are hex digits.
ff2587ec 36249
b8ff78ce
JB
36250@item
36251An empty reply indicates that @samp{qGetTLSAddr} is not supported by the stub.
ee2d5c50
AC
36252@end table
36253
711e434b
PM
36254@item qGetTIBAddr:@var{thread-id}
36255@cindex get thread information block address
36256@cindex @samp{qGetTIBAddr} packet
36257Fetch address of the Windows OS specific Thread Information Block.
36258
36259@var{thread-id} is the thread ID associated with the thread.
36260
36261Reply:
36262@table @samp
36263@item @var{XX}@dots{}
36264Hex encoded (big endian) bytes representing the linear address of the
36265thread information block.
36266
36267@item E @var{nn}
36268An error occured. This means that either the thread was not found, or the
36269address could not be retrieved.
36270
36271@item
36272An empty reply indicates that @samp{qGetTIBAddr} is not supported by the stub.
36273@end table
36274
b8ff78ce 36275@item qL @var{startflag} @var{threadcount} @var{nextthread}
8e04817f
AC
36276Obtain thread information from RTOS. Where: @var{startflag} (one hex
36277digit) is one to indicate the first query and zero to indicate a
36278subsequent query; @var{threadcount} (two hex digits) is the maximum
36279number of threads the response packet can contain; and @var{nextthread}
36280(eight hex digits), for subsequent queries (@var{startflag} is zero), is
36281returned in the response as @var{argthread}.
ee2d5c50 36282
b8ff78ce 36283Don't use this packet; use the @samp{qfThreadInfo} query instead (see above).
ee2d5c50
AC
36284
36285Reply:
36286@table @samp
b8ff78ce 36287@item qM @var{count} @var{done} @var{argthread} @var{thread}@dots{}
8e04817f
AC
36288Where: @var{count} (two hex digits) is the number of threads being
36289returned; @var{done} (one hex digit) is zero to indicate more threads
36290and one indicates no further threads; @var{argthreadid} (eight hex
b8ff78ce 36291digits) is @var{nextthread} from the request packet; @var{thread}@dots{}
ee2d5c50 36292is a sequence of thread IDs from the target. @var{threadid} (eight hex
8e04817f 36293digits). See @code{remote.c:parse_threadlist_response()}.
ee2d5c50 36294@end table
c906108c 36295
b8ff78ce 36296@item qOffsets
9c16f35a 36297@cindex section offsets, remote request
b8ff78ce 36298@cindex @samp{qOffsets} packet
31d99776
DJ
36299Get section offsets that the target used when relocating the downloaded
36300image.
c906108c 36301
ee2d5c50
AC
36302Reply:
36303@table @samp
31d99776
DJ
36304@item Text=@var{xxx};Data=@var{yyy}@r{[};Bss=@var{zzz}@r{]}
36305Relocate the @code{Text} section by @var{xxx} from its original address.
36306Relocate the @code{Data} section by @var{yyy} from its original address.
36307If the object file format provides segment information (e.g.@: @sc{elf}
36308@samp{PT_LOAD} program headers), @value{GDBN} will relocate entire
36309segments by the supplied offsets.
36310
36311@emph{Note: while a @code{Bss} offset may be included in the response,
36312@value{GDBN} ignores this and instead applies the @code{Data} offset
36313to the @code{Bss} section.}
36314
36315@item TextSeg=@var{xxx}@r{[};DataSeg=@var{yyy}@r{]}
36316Relocate the first segment of the object file, which conventionally
36317contains program code, to a starting address of @var{xxx}. If
36318@samp{DataSeg} is specified, relocate the second segment, which
36319conventionally contains modifiable data, to a starting address of
36320@var{yyy}. @value{GDBN} will report an error if the object file
36321does not contain segment information, or does not contain at least
36322as many segments as mentioned in the reply. Extra segments are
36323kept at fixed offsets relative to the last relocated segment.
ee2d5c50
AC
36324@end table
36325
b90a069a 36326@item qP @var{mode} @var{thread-id}
9c16f35a 36327@cindex thread information, remote request
b8ff78ce 36328@cindex @samp{qP} packet
b90a069a
SL
36329Returns information on @var{thread-id}. Where: @var{mode} is a hex
36330encoded 32 bit mode; @var{thread-id} is a thread ID
36331(@pxref{thread-id syntax}).
ee2d5c50 36332
aa56d27a
JB
36333Don't use this packet; use the @samp{qThreadExtraInfo} query instead
36334(see below).
36335
b8ff78ce 36336Reply: see @code{remote.c:remote_unpack_thread_info_response()}.
c906108c 36337
8b23ecc4
SL
36338@item QNonStop:1
36339@item QNonStop:0
36340@cindex non-stop mode, remote request
36341@cindex @samp{QNonStop} packet
36342@anchor{QNonStop}
36343Enter non-stop (@samp{QNonStop:1}) or all-stop (@samp{QNonStop:0}) mode.
36344@xref{Remote Non-Stop}, for more information.
36345
36346Reply:
36347@table @samp
36348@item OK
36349The request succeeded.
36350
36351@item E @var{nn}
36352An error occurred. @var{nn} are hex digits.
36353
36354@item
36355An empty reply indicates that @samp{QNonStop} is not supported by
36356the stub.
36357@end table
36358
36359This packet is not probed by default; the remote stub must request it,
36360by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36361Use of this packet is controlled by the @code{set non-stop} command;
36362@pxref{Non-Stop Mode}.
36363
89be2091
DJ
36364@item QPassSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
36365@cindex pass signals to inferior, remote request
36366@cindex @samp{QPassSignals} packet
23181151 36367@anchor{QPassSignals}
89be2091
DJ
36368Each listed @var{signal} should be passed directly to the inferior process.
36369Signals are numbered identically to continue packets and stop replies
36370(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
36371strictly greater than the previous item. These signals do not need to stop
36372the inferior, or be reported to @value{GDBN}. All other signals should be
36373reported to @value{GDBN}. Multiple @samp{QPassSignals} packets do not
36374combine; any earlier @samp{QPassSignals} list is completely replaced by the
36375new list. This packet improves performance when using @samp{handle
36376@var{signal} nostop noprint pass}.
36377
36378Reply:
36379@table @samp
36380@item OK
36381The request succeeded.
36382
36383@item E @var{nn}
36384An error occurred. @var{nn} are hex digits.
36385
36386@item
36387An empty reply indicates that @samp{QPassSignals} is not supported by
36388the stub.
36389@end table
36390
36391Use of this packet is controlled by the @code{set remote pass-signals}
79a6e687 36392command (@pxref{Remote Configuration, set remote pass-signals}).
89be2091
DJ
36393This packet is not probed by default; the remote stub must request it,
36394by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36395
9b224c5e
PA
36396@item QProgramSignals: @var{signal} @r{[};@var{signal}@r{]}@dots{}
36397@cindex signals the inferior may see, remote request
36398@cindex @samp{QProgramSignals} packet
36399@anchor{QProgramSignals}
36400Each listed @var{signal} may be delivered to the inferior process.
36401Others should be silently discarded.
36402
36403In some cases, the remote stub may need to decide whether to deliver a
36404signal to the program or not without @value{GDBN} involvement. One
36405example of that is while detaching --- the program's threads may have
36406stopped for signals that haven't yet had a chance of being reported to
36407@value{GDBN}, and so the remote stub can use the signal list specified
36408by this packet to know whether to deliver or ignore those pending
36409signals.
36410
36411This does not influence whether to deliver a signal as requested by a
36412resumption packet (@pxref{vCont packet}).
36413
36414Signals are numbered identically to continue packets and stop replies
36415(@pxref{Stop Reply Packets}). Each @var{signal} list item should be
36416strictly greater than the previous item. Multiple
36417@samp{QProgramSignals} packets do not combine; any earlier
36418@samp{QProgramSignals} list is completely replaced by the new list.
36419
36420Reply:
36421@table @samp
36422@item OK
36423The request succeeded.
36424
36425@item E @var{nn}
36426An error occurred. @var{nn} are hex digits.
36427
36428@item
36429An empty reply indicates that @samp{QProgramSignals} is not supported
36430by the stub.
36431@end table
36432
36433Use of this packet is controlled by the @code{set remote program-signals}
36434command (@pxref{Remote Configuration, set remote program-signals}).
36435This packet is not probed by default; the remote stub must request it,
36436by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
36437
b8ff78ce 36438@item qRcmd,@var{command}
ff2587ec 36439@cindex execute remote command, remote request
b8ff78ce 36440@cindex @samp{qRcmd} packet
ff2587ec 36441@var{command} (hex encoded) is passed to the local interpreter for
b8ff78ce
JB
36442execution. Invalid commands should be reported using the output
36443string. Before the final result packet, the target may also respond
36444with a number of intermediate @samp{O@var{output}} console output
36445packets. @emph{Implementors should note that providing access to a
36446stubs's interpreter may have security implications}.
fa93a9d8 36447
ff2587ec
WZ
36448Reply:
36449@table @samp
36450@item OK
36451A command response with no output.
36452@item @var{OUTPUT}
36453A command response with the hex encoded output string @var{OUTPUT}.
b8ff78ce 36454@item E @var{NN}
ff2587ec 36455Indicate a badly formed request.
b8ff78ce
JB
36456@item
36457An empty reply indicates that @samp{qRcmd} is not recognized.
ff2587ec 36458@end table
fa93a9d8 36459
aa56d27a
JB
36460(Note that the @code{qRcmd} packet's name is separated from the
36461command by a @samp{,}, not a @samp{:}, contrary to the naming
36462conventions above. Please don't use this packet as a model for new
36463packets.)
36464
08388c79
DE
36465@item qSearch:memory:@var{address};@var{length};@var{search-pattern}
36466@cindex searching memory, in remote debugging
36467@cindex @samp{qSearch:memory} packet
36468@anchor{qSearch memory}
36469Search @var{length} bytes at @var{address} for @var{search-pattern}.
36470@var{address} and @var{length} are encoded in hex.
36471@var{search-pattern} is a sequence of bytes, hex encoded.
36472
36473Reply:
36474@table @samp
36475@item 0
36476The pattern was not found.
36477@item 1,address
36478The pattern was found at @var{address}.
36479@item E @var{NN}
36480A badly formed request or an error was encountered while searching memory.
36481@item
36482An empty reply indicates that @samp{qSearch:memory} is not recognized.
36483@end table
36484
a6f3e723
SL
36485@item QStartNoAckMode
36486@cindex @samp{QStartNoAckMode} packet
36487@anchor{QStartNoAckMode}
36488Request that the remote stub disable the normal @samp{+}/@samp{-}
36489protocol acknowledgments (@pxref{Packet Acknowledgment}).
36490
36491Reply:
36492@table @samp
36493@item OK
36494The stub has switched to no-acknowledgment mode.
36495@value{GDBN} acknowledges this reponse,
36496but neither the stub nor @value{GDBN} shall send or expect further
36497@samp{+}/@samp{-} acknowledgments in the current connection.
36498@item
36499An empty reply indicates that the stub does not support no-acknowledgment mode.
36500@end table
36501
be2a5f71
DJ
36502@item qSupported @r{[}:@var{gdbfeature} @r{[};@var{gdbfeature}@r{]}@dots{} @r{]}
36503@cindex supported packets, remote query
36504@cindex features of the remote protocol
36505@cindex @samp{qSupported} packet
0876f84a 36506@anchor{qSupported}
be2a5f71
DJ
36507Tell the remote stub about features supported by @value{GDBN}, and
36508query the stub for features it supports. This packet allows
36509@value{GDBN} and the remote stub to take advantage of each others'
36510features. @samp{qSupported} also consolidates multiple feature probes
36511at startup, to improve @value{GDBN} performance---a single larger
36512packet performs better than multiple smaller probe packets on
36513high-latency links. Some features may enable behavior which must not
36514be on by default, e.g.@: because it would confuse older clients or
36515stubs. Other features may describe packets which could be
36516automatically probed for, but are not. These features must be
36517reported before @value{GDBN} will use them. This ``default
36518unsupported'' behavior is not appropriate for all packets, but it
36519helps to keep the initial connection time under control with new
36520versions of @value{GDBN} which support increasing numbers of packets.
36521
36522Reply:
36523@table @samp
36524@item @var{stubfeature} @r{[};@var{stubfeature}@r{]}@dots{}
36525The stub supports or does not support each returned @var{stubfeature},
36526depending on the form of each @var{stubfeature} (see below for the
36527possible forms).
36528@item
36529An empty reply indicates that @samp{qSupported} is not recognized,
36530or that no features needed to be reported to @value{GDBN}.
36531@end table
36532
36533The allowed forms for each feature (either a @var{gdbfeature} in the
36534@samp{qSupported} packet, or a @var{stubfeature} in the response)
36535are:
36536
36537@table @samp
36538@item @var{name}=@var{value}
36539The remote protocol feature @var{name} is supported, and associated
36540with the specified @var{value}. The format of @var{value} depends
36541on the feature, but it must not include a semicolon.
36542@item @var{name}+
36543The remote protocol feature @var{name} is supported, and does not
36544need an associated value.
36545@item @var{name}-
36546The remote protocol feature @var{name} is not supported.
36547@item @var{name}?
36548The remote protocol feature @var{name} may be supported, and
36549@value{GDBN} should auto-detect support in some other way when it is
36550needed. This form will not be used for @var{gdbfeature} notifications,
36551but may be used for @var{stubfeature} responses.
36552@end table
36553
36554Whenever the stub receives a @samp{qSupported} request, the
36555supplied set of @value{GDBN} features should override any previous
36556request. This allows @value{GDBN} to put the stub in a known
36557state, even if the stub had previously been communicating with
36558a different version of @value{GDBN}.
36559
b90a069a
SL
36560The following values of @var{gdbfeature} (for the packet sent by @value{GDBN})
36561are defined:
36562
36563@table @samp
36564@item multiprocess
36565This feature indicates whether @value{GDBN} supports multiprocess
36566extensions to the remote protocol. @value{GDBN} does not use such
36567extensions unless the stub also reports that it supports them by
36568including @samp{multiprocess+} in its @samp{qSupported} reply.
36569@xref{multiprocess extensions}, for details.
c8d5aac9
L
36570
36571@item xmlRegisters
36572This feature indicates that @value{GDBN} supports the XML target
36573description. If the stub sees @samp{xmlRegisters=} with target
36574specific strings separated by a comma, it will report register
36575description.
dde08ee1
PA
36576
36577@item qRelocInsn
36578This feature indicates whether @value{GDBN} supports the
36579@samp{qRelocInsn} packet (@pxref{Tracepoint Packets,,Relocate
36580instruction reply packet}).
b90a069a
SL
36581@end table
36582
36583Stubs should ignore any unknown values for
be2a5f71
DJ
36584@var{gdbfeature}. Any @value{GDBN} which sends a @samp{qSupported}
36585packet supports receiving packets of unlimited length (earlier
b90a069a 36586versions of @value{GDBN} may reject overly long responses). Additional values
be2a5f71
DJ
36587for @var{gdbfeature} may be defined in the future to let the stub take
36588advantage of new features in @value{GDBN}, e.g.@: incompatible
b90a069a
SL
36589improvements in the remote protocol---the @samp{multiprocess} feature is
36590an example of such a feature. The stub's reply should be independent
be2a5f71
DJ
36591of the @var{gdbfeature} entries sent by @value{GDBN}; first @value{GDBN}
36592describes all the features it supports, and then the stub replies with
36593all the features it supports.
36594
36595Similarly, @value{GDBN} will silently ignore unrecognized stub feature
36596responses, as long as each response uses one of the standard forms.
36597
36598Some features are flags. A stub which supports a flag feature
36599should respond with a @samp{+} form response. Other features
36600require values, and the stub should respond with an @samp{=}
36601form response.
36602
36603Each feature has a default value, which @value{GDBN} will use if
36604@samp{qSupported} is not available or if the feature is not mentioned
36605in the @samp{qSupported} response. The default values are fixed; a
36606stub is free to omit any feature responses that match the defaults.
36607
36608Not all features can be probed, but for those which can, the probing
36609mechanism is useful: in some cases, a stub's internal
36610architecture may not allow the protocol layer to know some information
36611about the underlying target in advance. This is especially common in
36612stubs which may be configured for multiple targets.
36613
36614These are the currently defined stub features and their properties:
36615
cfa9d6d9 36616@multitable @columnfractions 0.35 0.2 0.12 0.2
be2a5f71
DJ
36617@c NOTE: The first row should be @headitem, but we do not yet require
36618@c a new enough version of Texinfo (4.7) to use @headitem.
0876f84a 36619@item Feature Name
be2a5f71
DJ
36620@tab Value Required
36621@tab Default
36622@tab Probe Allowed
36623
36624@item @samp{PacketSize}
36625@tab Yes
36626@tab @samp{-}
36627@tab No
36628
0876f84a
DJ
36629@item @samp{qXfer:auxv:read}
36630@tab No
36631@tab @samp{-}
36632@tab Yes
36633
23181151
DJ
36634@item @samp{qXfer:features:read}
36635@tab No
36636@tab @samp{-}
36637@tab Yes
36638
cfa9d6d9
DJ
36639@item @samp{qXfer:libraries:read}
36640@tab No
36641@tab @samp{-}
36642@tab Yes
36643
68437a39
DJ
36644@item @samp{qXfer:memory-map:read}
36645@tab No
36646@tab @samp{-}
36647@tab Yes
36648
0fb4aa4b
PA
36649@item @samp{qXfer:sdata:read}
36650@tab No
36651@tab @samp{-}
36652@tab Yes
36653
0e7f50da
UW
36654@item @samp{qXfer:spu:read}
36655@tab No
36656@tab @samp{-}
36657@tab Yes
36658
36659@item @samp{qXfer:spu:write}
36660@tab No
36661@tab @samp{-}
36662@tab Yes
36663
4aa995e1
PA
36664@item @samp{qXfer:siginfo:read}
36665@tab No
36666@tab @samp{-}
36667@tab Yes
36668
36669@item @samp{qXfer:siginfo:write}
36670@tab No
36671@tab @samp{-}
36672@tab Yes
36673
dc146f7c
VP
36674@item @samp{qXfer:threads:read}
36675@tab No
36676@tab @samp{-}
36677@tab Yes
36678
b3b9301e
PA
36679@item @samp{qXfer:traceframe-info:read}
36680@tab No
36681@tab @samp{-}
36682@tab Yes
36683
169081d0
TG
36684@item @samp{qXfer:uib:read}
36685@tab No
36686@tab @samp{-}
36687@tab Yes
36688
78d85199
YQ
36689@item @samp{qXfer:fdpic:read}
36690@tab No
36691@tab @samp{-}
36692@tab Yes
dc146f7c 36693
8b23ecc4
SL
36694@item @samp{QNonStop}
36695@tab No
36696@tab @samp{-}
36697@tab Yes
36698
89be2091
DJ
36699@item @samp{QPassSignals}
36700@tab No
36701@tab @samp{-}
36702@tab Yes
36703
a6f3e723
SL
36704@item @samp{QStartNoAckMode}
36705@tab No
36706@tab @samp{-}
36707@tab Yes
36708
b90a069a
SL
36709@item @samp{multiprocess}
36710@tab No
36711@tab @samp{-}
36712@tab No
36713
83364271
LM
36714@item @samp{ConditionalBreakpoints}
36715@tab No
36716@tab @samp{-}
36717@tab No
36718
782b2b07
SS
36719@item @samp{ConditionalTracepoints}
36720@tab No
36721@tab @samp{-}
36722@tab No
36723
0d772ac9
MS
36724@item @samp{ReverseContinue}
36725@tab No
2f8132f3 36726@tab @samp{-}
0d772ac9
MS
36727@tab No
36728
36729@item @samp{ReverseStep}
36730@tab No
2f8132f3 36731@tab @samp{-}
0d772ac9
MS
36732@tab No
36733
409873ef
SS
36734@item @samp{TracepointSource}
36735@tab No
36736@tab @samp{-}
36737@tab No
36738
d1feda86
YQ
36739@item @samp{QAgent}
36740@tab No
36741@tab @samp{-}
36742@tab No
36743
d914c394
SS
36744@item @samp{QAllow}
36745@tab No
36746@tab @samp{-}
36747@tab No
36748
03583c20
UW
36749@item @samp{QDisableRandomization}
36750@tab No
36751@tab @samp{-}
36752@tab No
36753
d248b706
KY
36754@item @samp{EnableDisableTracepoints}
36755@tab No
36756@tab @samp{-}
36757@tab No
36758
3065dfb6
SS
36759@item @samp{tracenz}
36760@tab No
36761@tab @samp{-}
36762@tab No
36763
d3ce09f5
SS
36764@item @samp{BreakpointCommands}
36765@tab No
36766@tab @samp{-}
36767@tab No
36768
be2a5f71
DJ
36769@end multitable
36770
36771These are the currently defined stub features, in more detail:
36772
36773@table @samp
36774@cindex packet size, remote protocol
36775@item PacketSize=@var{bytes}
36776The remote stub can accept packets up to at least @var{bytes} in
36777length. @value{GDBN} will send packets up to this size for bulk
36778transfers, and will never send larger packets. This is a limit on the
36779data characters in the packet, including the frame and checksum.
36780There is no trailing NUL byte in a remote protocol packet; if the stub
36781stores packets in a NUL-terminated format, it should allow an extra
36782byte in its buffer for the NUL. If this stub feature is not supported,
36783@value{GDBN} guesses based on the size of the @samp{g} packet response.
36784
0876f84a
DJ
36785@item qXfer:auxv:read
36786The remote stub understands the @samp{qXfer:auxv:read} packet
36787(@pxref{qXfer auxiliary vector read}).
36788
23181151
DJ
36789@item qXfer:features:read
36790The remote stub understands the @samp{qXfer:features:read} packet
36791(@pxref{qXfer target description read}).
36792
cfa9d6d9
DJ
36793@item qXfer:libraries:read
36794The remote stub understands the @samp{qXfer:libraries:read} packet
36795(@pxref{qXfer library list read}).
36796
2268b414
JK
36797@item qXfer:libraries-svr4:read
36798The remote stub understands the @samp{qXfer:libraries-svr4:read} packet
36799(@pxref{qXfer svr4 library list read}).
36800
23181151
DJ
36801@item qXfer:memory-map:read
36802The remote stub understands the @samp{qXfer:memory-map:read} packet
36803(@pxref{qXfer memory map read}).
36804
0fb4aa4b
PA
36805@item qXfer:sdata:read
36806The remote stub understands the @samp{qXfer:sdata:read} packet
36807(@pxref{qXfer sdata read}).
36808
0e7f50da
UW
36809@item qXfer:spu:read
36810The remote stub understands the @samp{qXfer:spu:read} packet
36811(@pxref{qXfer spu read}).
36812
36813@item qXfer:spu:write
36814The remote stub understands the @samp{qXfer:spu:write} packet
36815(@pxref{qXfer spu write}).
36816
4aa995e1
PA
36817@item qXfer:siginfo:read
36818The remote stub understands the @samp{qXfer:siginfo:read} packet
36819(@pxref{qXfer siginfo read}).
36820
36821@item qXfer:siginfo:write
36822The remote stub understands the @samp{qXfer:siginfo:write} packet
36823(@pxref{qXfer siginfo write}).
36824
dc146f7c
VP
36825@item qXfer:threads:read
36826The remote stub understands the @samp{qXfer:threads:read} packet
36827(@pxref{qXfer threads read}).
36828
b3b9301e
PA
36829@item qXfer:traceframe-info:read
36830The remote stub understands the @samp{qXfer:traceframe-info:read}
36831packet (@pxref{qXfer traceframe info read}).
36832
169081d0
TG
36833@item qXfer:uib:read
36834The remote stub understands the @samp{qXfer:uib:read}
36835packet (@pxref{qXfer unwind info block}).
36836
78d85199
YQ
36837@item qXfer:fdpic:read
36838The remote stub understands the @samp{qXfer:fdpic:read}
36839packet (@pxref{qXfer fdpic loadmap read}).
36840
8b23ecc4
SL
36841@item QNonStop
36842The remote stub understands the @samp{QNonStop} packet
36843(@pxref{QNonStop}).
36844
23181151
DJ
36845@item QPassSignals
36846The remote stub understands the @samp{QPassSignals} packet
36847(@pxref{QPassSignals}).
36848
a6f3e723
SL
36849@item QStartNoAckMode
36850The remote stub understands the @samp{QStartNoAckMode} packet and
36851prefers to operate in no-acknowledgment mode. @xref{Packet Acknowledgment}.
36852
b90a069a
SL
36853@item multiprocess
36854@anchor{multiprocess extensions}
36855@cindex multiprocess extensions, in remote protocol
36856The remote stub understands the multiprocess extensions to the remote
36857protocol syntax. The multiprocess extensions affect the syntax of
36858thread IDs in both packets and replies (@pxref{thread-id syntax}), and
36859add process IDs to the @samp{D} packet and @samp{W} and @samp{X}
36860replies. Note that reporting this feature indicates support for the
36861syntactic extensions only, not that the stub necessarily supports
36862debugging of more than one process at a time. The stub must not use
36863multiprocess extensions in packet replies unless @value{GDBN} has also
36864indicated it supports them in its @samp{qSupported} request.
36865
07e059b5
VP
36866@item qXfer:osdata:read
36867The remote stub understands the @samp{qXfer:osdata:read} packet
36868((@pxref{qXfer osdata read}).
36869
83364271
LM
36870@item ConditionalBreakpoints
36871The target accepts and implements evaluation of conditional expressions
36872defined for breakpoints. The target will only report breakpoint triggers
36873when such conditions are true (@pxref{Conditions, ,Break Conditions}).
36874
782b2b07
SS
36875@item ConditionalTracepoints
36876The remote stub accepts and implements conditional expressions defined
36877for tracepoints (@pxref{Tracepoint Conditions}).
36878
0d772ac9
MS
36879@item ReverseContinue
36880The remote stub accepts and implements the reverse continue packet
36881(@pxref{bc}).
36882
36883@item ReverseStep
36884The remote stub accepts and implements the reverse step packet
36885(@pxref{bs}).
36886
409873ef
SS
36887@item TracepointSource
36888The remote stub understands the @samp{QTDPsrc} packet that supplies
36889the source form of tracepoint definitions.
36890
d1feda86
YQ
36891@item QAgent
36892The remote stub understands the @samp{QAgent} packet.
36893
d914c394
SS
36894@item QAllow
36895The remote stub understands the @samp{QAllow} packet.
36896
03583c20
UW
36897@item QDisableRandomization
36898The remote stub understands the @samp{QDisableRandomization} packet.
36899
0fb4aa4b
PA
36900@item StaticTracepoint
36901@cindex static tracepoints, in remote protocol
36902The remote stub supports static tracepoints.
36903
1e4d1764
YQ
36904@item InstallInTrace
36905@anchor{install tracepoint in tracing}
36906The remote stub supports installing tracepoint in tracing.
36907
d248b706
KY
36908@item EnableDisableTracepoints
36909The remote stub supports the @samp{QTEnable} (@pxref{QTEnable}) and
36910@samp{QTDisable} (@pxref{QTDisable}) packets that allow tracepoints
36911to be enabled and disabled while a trace experiment is running.
36912
3065dfb6
SS
36913@item tracenz
36914@cindex string tracing, in remote protocol
36915The remote stub supports the @samp{tracenz} bytecode for collecting strings.
36916See @ref{Bytecode Descriptions} for details about the bytecode.
36917
d3ce09f5
SS
36918@item BreakpointCommands
36919@cindex breakpoint commands, in remote protocol
36920The remote stub supports running a breakpoint's command list itself,
36921rather than reporting the hit to @value{GDBN}.
36922
be2a5f71
DJ
36923@end table
36924
b8ff78ce 36925@item qSymbol::
ff2587ec 36926@cindex symbol lookup, remote request
b8ff78ce 36927@cindex @samp{qSymbol} packet
ff2587ec
WZ
36928Notify the target that @value{GDBN} is prepared to serve symbol lookup
36929requests. Accept requests from the target for the values of symbols.
fa93a9d8
JB
36930
36931Reply:
ff2587ec 36932@table @samp
b8ff78ce 36933@item OK
ff2587ec 36934The target does not need to look up any (more) symbols.
b8ff78ce 36935@item qSymbol:@var{sym_name}
ff2587ec
WZ
36936The target requests the value of symbol @var{sym_name} (hex encoded).
36937@value{GDBN} may provide the value by using the
b8ff78ce
JB
36938@samp{qSymbol:@var{sym_value}:@var{sym_name}} message, described
36939below.
ff2587ec 36940@end table
83761cbd 36941
b8ff78ce 36942@item qSymbol:@var{sym_value}:@var{sym_name}
ff2587ec
WZ
36943Set the value of @var{sym_name} to @var{sym_value}.
36944
36945@var{sym_name} (hex encoded) is the name of a symbol whose value the
36946target has previously requested.
36947
36948@var{sym_value} (hex) is the value for symbol @var{sym_name}. If
36949@value{GDBN} cannot supply a value for @var{sym_name}, then this field
36950will be empty.
36951
36952Reply:
36953@table @samp
b8ff78ce 36954@item OK
ff2587ec 36955The target does not need to look up any (more) symbols.
b8ff78ce 36956@item qSymbol:@var{sym_name}
ff2587ec
WZ
36957The target requests the value of a new symbol @var{sym_name} (hex
36958encoded). @value{GDBN} will continue to supply the values of symbols
36959(if available), until the target ceases to request them.
fa93a9d8 36960@end table
0abb7bc7 36961
00bf0b85 36962@item qTBuffer
4daf5ac0 36963@item QTBuffer
d5551862
SS
36964@item QTDisconnected
36965@itemx QTDP
409873ef 36966@itemx QTDPsrc
d5551862 36967@itemx QTDV
00bf0b85
SS
36968@itemx qTfP
36969@itemx qTfV
9d29849a 36970@itemx QTFrame
405f8e94
SS
36971@itemx qTMinFTPILen
36972
9d29849a
JB
36973@xref{Tracepoint Packets}.
36974
b90a069a 36975@item qThreadExtraInfo,@var{thread-id}
ff2587ec 36976@cindex thread attributes info, remote request
b8ff78ce
JB
36977@cindex @samp{qThreadExtraInfo} packet
36978Obtain a printable string description of a thread's attributes from
b90a069a
SL
36979the target OS. @var{thread-id} is a thread ID;
36980see @ref{thread-id syntax}. This
b8ff78ce
JB
36981string may contain anything that the target OS thinks is interesting
36982for @value{GDBN} to tell the user about the thread. The string is
36983displayed in @value{GDBN}'s @code{info threads} display. Some
36984examples of possible thread extra info strings are @samp{Runnable}, or
36985@samp{Blocked on Mutex}.
ff2587ec
WZ
36986
36987Reply:
36988@table @samp
b8ff78ce
JB
36989@item @var{XX}@dots{}
36990Where @samp{@var{XX}@dots{}} is a hex encoding of @sc{ascii} data,
36991comprising the printable string containing the extra information about
36992the thread's attributes.
ff2587ec 36993@end table
814e32d7 36994
aa56d27a
JB
36995(Note that the @code{qThreadExtraInfo} packet's name is separated from
36996the command by a @samp{,}, not a @samp{:}, contrary to the naming
36997conventions above. Please don't use this packet as a model for new
36998packets.)
36999
f196051f
SS
37000@item QTNotes
37001@item qTP
00bf0b85
SS
37002@item QTSave
37003@item qTsP
37004@item qTsV
d5551862 37005@itemx QTStart
9d29849a 37006@itemx QTStop
d248b706
KY
37007@itemx QTEnable
37008@itemx QTDisable
9d29849a
JB
37009@itemx QTinit
37010@itemx QTro
37011@itemx qTStatus
d5551862 37012@itemx qTV
0fb4aa4b
PA
37013@itemx qTfSTM
37014@itemx qTsSTM
37015@itemx qTSTMat
9d29849a
JB
37016@xref{Tracepoint Packets}.
37017
0876f84a
DJ
37018@item qXfer:@var{object}:read:@var{annex}:@var{offset},@var{length}
37019@cindex read special object, remote request
37020@cindex @samp{qXfer} packet
68437a39 37021@anchor{qXfer read}
0876f84a
DJ
37022Read uninterpreted bytes from the target's special data area
37023identified by the keyword @var{object}. Request @var{length} bytes
37024starting at @var{offset} bytes into the data. The content and
0e7f50da 37025encoding of @var{annex} is specific to @var{object}; it can supply
0876f84a
DJ
37026additional details about what data to access.
37027
37028Here are the specific requests of this form defined so far. All
37029@samp{qXfer:@var{object}:read:@dots{}} requests use the same reply
37030formats, listed below.
37031
37032@table @samp
37033@item qXfer:auxv:read::@var{offset},@var{length}
37034@anchor{qXfer auxiliary vector read}
37035Access the target's @dfn{auxiliary vector}. @xref{OS Information,
427c3a89 37036auxiliary vector}. Note @var{annex} must be empty.
0876f84a
DJ
37037
37038This packet is not probed by default; the remote stub must request it,
89be2091 37039by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
0876f84a 37040
23181151
DJ
37041@item qXfer:features:read:@var{annex}:@var{offset},@var{length}
37042@anchor{qXfer target description read}
37043Access the @dfn{target description}. @xref{Target Descriptions}. The
37044annex specifies which XML document to access. The main description is
37045always loaded from the @samp{target.xml} annex.
37046
37047This packet is not probed by default; the remote stub must request it,
37048by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37049
cfa9d6d9
DJ
37050@item qXfer:libraries:read:@var{annex}:@var{offset},@var{length}
37051@anchor{qXfer library list read}
37052Access the target's list of loaded libraries. @xref{Library List Format}.
37053The annex part of the generic @samp{qXfer} packet must be empty
37054(@pxref{qXfer read}).
37055
37056Targets which maintain a list of libraries in the program's memory do
37057not need to implement this packet; it is designed for platforms where
37058the operating system manages the list of loaded libraries.
37059
37060This packet is not probed by default; the remote stub must request it,
37061by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37062
2268b414
JK
37063@item qXfer:libraries-svr4:read:@var{annex}:@var{offset},@var{length}
37064@anchor{qXfer svr4 library list read}
37065Access the target's list of loaded libraries when the target is an SVR4
37066platform. @xref{Library List Format for SVR4 Targets}. The annex part
37067of the generic @samp{qXfer} packet must be empty (@pxref{qXfer read}).
37068
37069This packet is optional for better performance on SVR4 targets.
37070@value{GDBN} uses memory read packets to read the SVR4 library list otherwise.
37071
37072This packet is not probed by default; the remote stub must request it,
37073by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37074
68437a39
DJ
37075@item qXfer:memory-map:read::@var{offset},@var{length}
37076@anchor{qXfer memory map read}
79a6e687 37077Access the target's @dfn{memory-map}. @xref{Memory Map Format}. The
68437a39
DJ
37078annex part of the generic @samp{qXfer} packet must be empty
37079(@pxref{qXfer read}).
37080
0e7f50da
UW
37081This packet is not probed by default; the remote stub must request it,
37082by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37083
0fb4aa4b
PA
37084@item qXfer:sdata:read::@var{offset},@var{length}
37085@anchor{qXfer sdata read}
37086
37087Read contents of the extra collected static tracepoint marker
37088information. The annex part of the generic @samp{qXfer} packet must
37089be empty (@pxref{qXfer read}). @xref{Tracepoint Actions,,Tracepoint
37090Action Lists}.
37091
37092This packet is not probed by default; the remote stub must request it,
37093by supplying an appropriate @samp{qSupported} response
37094(@pxref{qSupported}).
37095
4aa995e1
PA
37096@item qXfer:siginfo:read::@var{offset},@var{length}
37097@anchor{qXfer siginfo read}
37098Read contents of the extra signal information on the target
37099system. The annex part of the generic @samp{qXfer} packet must be
37100empty (@pxref{qXfer read}).
37101
37102This packet is not probed by default; the remote stub must request it,
37103by supplying an appropriate @samp{qSupported} response
37104(@pxref{qSupported}).
37105
0e7f50da
UW
37106@item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
37107@anchor{qXfer spu read}
37108Read contents of an @code{spufs} file on the target system. The
37109annex specifies which file to read; it must be of the form
37110@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
37111in the target process, and @var{name} identifes the @code{spufs} file
37112in that context to be accessed.
37113
68437a39 37114This packet is not probed by default; the remote stub must request it,
07e059b5
VP
37115by supplying an appropriate @samp{qSupported} response
37116(@pxref{qSupported}).
37117
dc146f7c
VP
37118@item qXfer:threads:read::@var{offset},@var{length}
37119@anchor{qXfer threads read}
37120Access the list of threads on target. @xref{Thread List Format}. The
37121annex part of the generic @samp{qXfer} packet must be empty
37122(@pxref{qXfer read}).
37123
37124This packet is not probed by default; the remote stub must request it,
37125by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37126
b3b9301e
PA
37127@item qXfer:traceframe-info:read::@var{offset},@var{length}
37128@anchor{qXfer traceframe info read}
37129
37130Return a description of the current traceframe's contents.
37131@xref{Traceframe Info Format}. The annex part of the generic
37132@samp{qXfer} packet must be empty (@pxref{qXfer read}).
37133
37134This packet is not probed by default; the remote stub must request it,
37135by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37136
169081d0
TG
37137@item qXfer:uib:read:@var{pc}:@var{offset},@var{length}
37138@anchor{qXfer unwind info block}
37139
37140Return the unwind information block for @var{pc}. This packet is used
37141on OpenVMS/ia64 to ask the kernel unwind information.
37142
37143This packet is not probed by default.
37144
78d85199
YQ
37145@item qXfer:fdpic:read:@var{annex}:@var{offset},@var{length}
37146@anchor{qXfer fdpic loadmap read}
37147Read contents of @code{loadmap}s on the target system. The
37148annex, either @samp{exec} or @samp{interp}, specifies which @code{loadmap},
37149executable @code{loadmap} or interpreter @code{loadmap} to read.
37150
37151This packet is not probed by default; the remote stub must request it,
37152by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37153
07e059b5
VP
37154@item qXfer:osdata:read::@var{offset},@var{length}
37155@anchor{qXfer osdata read}
37156Access the target's @dfn{operating system information}.
37157@xref{Operating System Information}.
37158
68437a39
DJ
37159@end table
37160
0876f84a
DJ
37161Reply:
37162@table @samp
37163@item m @var{data}
37164Data @var{data} (@pxref{Binary Data}) has been read from the
37165target. There may be more data at a higher address (although
37166it is permitted to return @samp{m} even for the last valid
37167block of data, as long as at least one byte of data was read).
37168@var{data} may have fewer bytes than the @var{length} in the
37169request.
37170
37171@item l @var{data}
37172Data @var{data} (@pxref{Binary Data}) has been read from the target.
37173There is no more data to be read. @var{data} may have fewer bytes
37174than the @var{length} in the request.
37175
37176@item l
37177The @var{offset} in the request is at the end of the data.
37178There is no more data to be read.
37179
37180@item E00
37181The request was malformed, or @var{annex} was invalid.
37182
37183@item E @var{nn}
37184The offset was invalid, or there was an error encountered reading the data.
37185@var{nn} is a hex-encoded @code{errno} value.
37186
37187@item
37188An empty reply indicates the @var{object} string was not recognized by
37189the stub, or that the object does not support reading.
37190@end table
37191
37192@item qXfer:@var{object}:write:@var{annex}:@var{offset}:@var{data}@dots{}
37193@cindex write data into object, remote request
4aa995e1 37194@anchor{qXfer write}
0876f84a
DJ
37195Write uninterpreted bytes into the target's special data area
37196identified by the keyword @var{object}, starting at @var{offset} bytes
0e7f50da 37197into the data. @var{data}@dots{} is the binary-encoded data
0876f84a 37198(@pxref{Binary Data}) to be written. The content and encoding of @var{annex}
0e7f50da 37199is specific to @var{object}; it can supply additional details about what data
0876f84a
DJ
37200to access.
37201
0e7f50da
UW
37202Here are the specific requests of this form defined so far. All
37203@samp{qXfer:@var{object}:write:@dots{}} requests use the same reply
37204formats, listed below.
37205
37206@table @samp
4aa995e1
PA
37207@item qXfer:siginfo:write::@var{offset}:@var{data}@dots{}
37208@anchor{qXfer siginfo write}
37209Write @var{data} to the extra signal information on the target system.
37210The annex part of the generic @samp{qXfer} packet must be
37211empty (@pxref{qXfer write}).
37212
37213This packet is not probed by default; the remote stub must request it,
37214by supplying an appropriate @samp{qSupported} response
37215(@pxref{qSupported}).
37216
84fcdf95 37217@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
0e7f50da
UW
37218@anchor{qXfer spu write}
37219Write @var{data} to an @code{spufs} file on the target system. The
37220annex specifies which file to write; it must be of the form
37221@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
37222in the target process, and @var{name} identifes the @code{spufs} file
37223in that context to be accessed.
37224
37225This packet is not probed by default; the remote stub must request it,
37226by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
37227@end table
0876f84a
DJ
37228
37229Reply:
37230@table @samp
37231@item @var{nn}
37232@var{nn} (hex encoded) is the number of bytes written.
37233This may be fewer bytes than supplied in the request.
37234
37235@item E00
37236The request was malformed, or @var{annex} was invalid.
37237
37238@item E @var{nn}
37239The offset was invalid, or there was an error encountered writing the data.
37240@var{nn} is a hex-encoded @code{errno} value.
37241
37242@item
37243An empty reply indicates the @var{object} string was not
37244recognized by the stub, or that the object does not support writing.
37245@end table
37246
37247@item qXfer:@var{object}:@var{operation}:@dots{}
37248Requests of this form may be added in the future. When a stub does
37249not recognize the @var{object} keyword, or its support for
37250@var{object} does not recognize the @var{operation} keyword, the stub
37251must respond with an empty packet.
37252
0b16c5cf
PA
37253@item qAttached:@var{pid}
37254@cindex query attached, remote request
37255@cindex @samp{qAttached} packet
37256Return an indication of whether the remote server attached to an
37257existing process or created a new process. When the multiprocess
37258protocol extensions are supported (@pxref{multiprocess extensions}),
37259@var{pid} is an integer in hexadecimal format identifying the target
37260process. Otherwise, @value{GDBN} will omit the @var{pid} field and
37261the query packet will be simplified as @samp{qAttached}.
37262
37263This query is used, for example, to know whether the remote process
37264should be detached or killed when a @value{GDBN} session is ended with
37265the @code{quit} command.
37266
37267Reply:
37268@table @samp
37269@item 1
37270The remote server attached to an existing process.
37271@item 0
37272The remote server created a new process.
37273@item E @var{NN}
37274A badly formed request or an error was encountered.
37275@end table
37276
ee2d5c50
AC
37277@end table
37278
a1dcb23a
DJ
37279@node Architecture-Specific Protocol Details
37280@section Architecture-Specific Protocol Details
37281
37282This section describes how the remote protocol is applied to specific
37283target architectures. Also see @ref{Standard Target Features}, for
37284details of XML target descriptions for each architecture.
37285
02b67415
MR
37286@menu
37287* ARM-Specific Protocol Details::
37288* MIPS-Specific Protocol Details::
37289@end menu
37290
37291@node ARM-Specific Protocol Details
37292@subsection @acronym{ARM}-specific Protocol Details
37293
37294@menu
37295* ARM Breakpoint Kinds::
37296@end menu
a1dcb23a 37297
02b67415
MR
37298@node ARM Breakpoint Kinds
37299@subsubsection @acronym{ARM} Breakpoint Kinds
37300@cindex breakpoint kinds, @acronym{ARM}
a1dcb23a
DJ
37301
37302These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
37303
37304@table @r
37305
37306@item 2
3730716-bit Thumb mode breakpoint.
37308
37309@item 3
3731032-bit Thumb mode (Thumb-2) breakpoint.
37311
37312@item 4
02b67415 3731332-bit @acronym{ARM} mode breakpoint.
a1dcb23a
DJ
37314
37315@end table
37316
02b67415
MR
37317@node MIPS-Specific Protocol Details
37318@subsection @acronym{MIPS}-specific Protocol Details
37319
37320@menu
37321* MIPS Register packet Format::
4cc0665f 37322* MIPS Breakpoint Kinds::
02b67415 37323@end menu
a1dcb23a 37324
02b67415
MR
37325@node MIPS Register packet Format
37326@subsubsection @acronym{MIPS} Register Packet Format
eb17f351 37327@cindex register packet format, @acronym{MIPS}
eb12ee30 37328
b8ff78ce 37329The following @code{g}/@code{G} packets have previously been defined.
ee2d5c50
AC
37330In the below, some thirty-two bit registers are transferred as
37331sixty-four bits. Those registers should be zero/sign extended (which?)
599b237a
BW
37332to fill the space allocated. Register bytes are transferred in target
37333byte order. The two nibbles within a register byte are transferred
02b67415 37334most-significant -- least-significant.
eb12ee30 37335
ee2d5c50 37336@table @r
eb12ee30 37337
8e04817f 37338@item MIPS32
599b237a 37339All registers are transferred as thirty-two bit quantities in the order:
8e04817f
AC
3734032 general-purpose; sr; lo; hi; bad; cause; pc; 32 floating-point
37341registers; fsr; fir; fp.
eb12ee30 37342
8e04817f 37343@item MIPS64
599b237a 37344All registers are transferred as sixty-four bit quantities (including
8e04817f
AC
37345thirty-two bit registers such as @code{sr}). The ordering is the same
37346as @code{MIPS32}.
eb12ee30 37347
ee2d5c50
AC
37348@end table
37349
4cc0665f
MR
37350@node MIPS Breakpoint Kinds
37351@subsubsection @acronym{MIPS} Breakpoint Kinds
37352@cindex breakpoint kinds, @acronym{MIPS}
37353
37354These breakpoint kinds are defined for the @samp{Z0} and @samp{Z1} packets.
37355
37356@table @r
37357
37358@item 2
3735916-bit @acronym{MIPS16} mode breakpoint.
37360
37361@item 3
3736216-bit @acronym{microMIPS} mode breakpoint.
37363
37364@item 4
3736532-bit standard @acronym{MIPS} mode breakpoint.
37366
37367@item 5
3736832-bit @acronym{microMIPS} mode breakpoint.
37369
37370@end table
37371
9d29849a
JB
37372@node Tracepoint Packets
37373@section Tracepoint Packets
37374@cindex tracepoint packets
37375@cindex packets, tracepoint
37376
37377Here we describe the packets @value{GDBN} uses to implement
37378tracepoints (@pxref{Tracepoints}).
37379
37380@table @samp
37381
7a697b8d 37382@item QTDP:@var{n}:@var{addr}:@var{ena}:@var{step}:@var{pass}[:F@var{flen}][:X@var{len},@var{bytes}]@r{[}-@r{]}
c614397c 37383@cindex @samp{QTDP} packet
9d29849a
JB
37384Create a new tracepoint, number @var{n}, at @var{addr}. If @var{ena}
37385is @samp{E}, then the tracepoint is enabled; if it is @samp{D}, then
37386the tracepoint is disabled. @var{step} is the tracepoint's step
7a697b8d
SS
37387count, and @var{pass} is its pass count. If an @samp{F} is present,
37388then the tracepoint is to be a fast tracepoint, and the @var{flen} is
37389the number of bytes that the target should copy elsewhere to make room
37390for the tracepoint. If an @samp{X} is present, it introduces a
37391tracepoint condition, which consists of a hexadecimal length, followed
37392by a comma and hex-encoded bytes, in a manner similar to action
37393encodings as described below. If the trailing @samp{-} is present,
37394further @samp{QTDP} packets will follow to specify this tracepoint's
37395actions.
9d29849a
JB
37396
37397Replies:
37398@table @samp
37399@item OK
37400The packet was understood and carried out.
dde08ee1
PA
37401@item qRelocInsn
37402@xref{Tracepoint Packets,,Relocate instruction reply packet}.
9d29849a
JB
37403@item
37404The packet was not recognized.
37405@end table
37406
37407@item QTDP:-@var{n}:@var{addr}:@r{[}S@r{]}@var{action}@dots{}@r{[}-@r{]}
37408Define actions to be taken when a tracepoint is hit. @var{n} and
37409@var{addr} must be the same as in the initial @samp{QTDP} packet for
37410this tracepoint. This packet may only be sent immediately after
37411another @samp{QTDP} packet that ended with a @samp{-}. If the
37412trailing @samp{-} is present, further @samp{QTDP} packets will follow,
37413specifying more actions for this tracepoint.
37414
37415In the series of action packets for a given tracepoint, at most one
37416can have an @samp{S} before its first @var{action}. If such a packet
37417is sent, it and the following packets define ``while-stepping''
37418actions. Any prior packets define ordinary actions --- that is, those
37419taken when the tracepoint is first hit. If no action packet has an
37420@samp{S}, then all the packets in the series specify ordinary
37421tracepoint actions.
37422
37423The @samp{@var{action}@dots{}} portion of the packet is a series of
37424actions, concatenated without separators. Each action has one of the
37425following forms:
37426
37427@table @samp
37428
37429@item R @var{mask}
37430Collect the registers whose bits are set in @var{mask}. @var{mask} is
599b237a 37431a hexadecimal number whose @var{i}'th bit is set if register number
9d29849a
JB
37432@var{i} should be collected. (The least significant bit is numbered
37433zero.) Note that @var{mask} may be any number of digits long; it may
37434not fit in a 32-bit word.
37435
37436@item M @var{basereg},@var{offset},@var{len}
37437Collect @var{len} bytes of memory starting at the address in register
37438number @var{basereg}, plus @var{offset}. If @var{basereg} is
37439@samp{-1}, then the range has a fixed address: @var{offset} is the
37440address of the lowest byte to collect. The @var{basereg},
599b237a 37441@var{offset}, and @var{len} parameters are all unsigned hexadecimal
9d29849a
JB
37442values (the @samp{-1} value for @var{basereg} is a special case).
37443
37444@item X @var{len},@var{expr}
37445Evaluate @var{expr}, whose length is @var{len}, and collect memory as
37446it directs. @var{expr} is an agent expression, as described in
37447@ref{Agent Expressions}. Each byte of the expression is encoded as a
37448two-digit hex number in the packet; @var{len} is the number of bytes
37449in the expression (and thus one-half the number of hex digits in the
37450packet).
37451
37452@end table
37453
37454Any number of actions may be packed together in a single @samp{QTDP}
37455packet, as long as the packet does not exceed the maximum packet
c1947b85
JB
37456length (400 bytes, for many stubs). There may be only one @samp{R}
37457action per tracepoint, and it must precede any @samp{M} or @samp{X}
37458actions. Any registers referred to by @samp{M} and @samp{X} actions
37459must be collected by a preceding @samp{R} action. (The
37460``while-stepping'' actions are treated as if they were attached to a
37461separate tracepoint, as far as these restrictions are concerned.)
9d29849a
JB
37462
37463Replies:
37464@table @samp
37465@item OK
37466The packet was understood and carried out.
dde08ee1
PA
37467@item qRelocInsn
37468@xref{Tracepoint Packets,,Relocate instruction reply packet}.
9d29849a
JB
37469@item
37470The packet was not recognized.
37471@end table
37472
409873ef
SS
37473@item QTDPsrc:@var{n}:@var{addr}:@var{type}:@var{start}:@var{slen}:@var{bytes}
37474@cindex @samp{QTDPsrc} packet
37475Specify a source string of tracepoint @var{n} at address @var{addr}.
37476This is useful to get accurate reproduction of the tracepoints
37477originally downloaded at the beginning of the trace run. @var{type}
37478is the name of the tracepoint part, such as @samp{cond} for the
37479tracepoint's conditional expression (see below for a list of types), while
37480@var{bytes} is the string, encoded in hexadecimal.
37481
37482@var{start} is the offset of the @var{bytes} within the overall source
37483string, while @var{slen} is the total length of the source string.
37484This is intended for handling source strings that are longer than will
37485fit in a single packet.
37486@c Add detailed example when this info is moved into a dedicated
37487@c tracepoint descriptions section.
37488
37489The available string types are @samp{at} for the location,
37490@samp{cond} for the conditional, and @samp{cmd} for an action command.
37491@value{GDBN} sends a separate packet for each command in the action
37492list, in the same order in which the commands are stored in the list.
37493
37494The target does not need to do anything with source strings except
37495report them back as part of the replies to the @samp{qTfP}/@samp{qTsP}
37496query packets.
37497
37498Although this packet is optional, and @value{GDBN} will only send it
37499if the target replies with @samp{TracepointSource} @xref{General
37500Query Packets}, it makes both disconnected tracing and trace files
37501much easier to use. Otherwise the user must be careful that the
37502tracepoints in effect while looking at trace frames are identical to
37503the ones in effect during the trace run; even a small discrepancy
37504could cause @samp{tdump} not to work, or a particular trace frame not
37505be found.
37506
f61e138d
SS
37507@item QTDV:@var{n}:@var{value}
37508@cindex define trace state variable, remote request
37509@cindex @samp{QTDV} packet
37510Create a new trace state variable, number @var{n}, with an initial
37511value of @var{value}, which is a 64-bit signed integer. Both @var{n}
37512and @var{value} are encoded as hexadecimal values. @value{GDBN} has
37513the option of not using this packet for initial values of zero; the
37514target should simply create the trace state variables as they are
37515mentioned in expressions.
37516
9d29849a 37517@item QTFrame:@var{n}
c614397c 37518@cindex @samp{QTFrame} packet
9d29849a
JB
37519Select the @var{n}'th tracepoint frame from the buffer, and use the
37520register and memory contents recorded there to answer subsequent
37521request packets from @value{GDBN}.
37522
37523A successful reply from the stub indicates that the stub has found the
37524requested frame. The response is a series of parts, concatenated
37525without separators, describing the frame we selected. Each part has
37526one of the following forms:
37527
37528@table @samp
37529@item F @var{f}
37530The selected frame is number @var{n} in the trace frame buffer;
599b237a 37531@var{f} is a hexadecimal number. If @var{f} is @samp{-1}, then there
9d29849a
JB
37532was no frame matching the criteria in the request packet.
37533
37534@item T @var{t}
37535The selected trace frame records a hit of tracepoint number @var{t};
599b237a 37536@var{t} is a hexadecimal number.
9d29849a
JB
37537
37538@end table
37539
37540@item QTFrame:pc:@var{addr}
37541Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37542currently selected frame whose PC is @var{addr};
599b237a 37543@var{addr} is a hexadecimal number.
9d29849a
JB
37544
37545@item QTFrame:tdp:@var{t}
37546Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37547currently selected frame that is a hit of tracepoint @var{t}; @var{t}
599b237a 37548is a hexadecimal number.
9d29849a
JB
37549
37550@item QTFrame:range:@var{start}:@var{end}
37551Like @samp{QTFrame:@var{n}}, but select the first tracepoint frame after the
37552currently selected frame whose PC is between @var{start} (inclusive)
081dfbf7 37553and @var{end} (inclusive); @var{start} and @var{end} are hexadecimal
9d29849a
JB
37554numbers.
37555
37556@item QTFrame:outside:@var{start}:@var{end}
37557Like @samp{QTFrame:range:@var{start}:@var{end}}, but select the first
081dfbf7 37558frame @emph{outside} the given range of addresses (exclusive).
9d29849a 37559
405f8e94 37560@item qTMinFTPILen
c614397c 37561@cindex @samp{qTMinFTPILen} packet
405f8e94
SS
37562This packet requests the minimum length of instruction at which a fast
37563tracepoint (@pxref{Set Tracepoints}) may be placed. For instance, on
37564the 32-bit x86 architecture, it is possible to use a 4-byte jump, but
37565it depends on the target system being able to create trampolines in
37566the first 64K of memory, which might or might not be possible for that
37567system. So the reply to this packet will be 4 if it is able to
37568arrange for that.
37569
37570Replies:
37571
37572@table @samp
37573@item 0
37574The minimum instruction length is currently unknown.
37575@item @var{length}
37576The minimum instruction length is @var{length}, where @var{length} is greater
37577or equal to 1. @var{length} is a hexadecimal number. A reply of 1 means
37578that a fast tracepoint may be placed on any instruction regardless of size.
37579@item E
37580An error has occurred.
37581@item
37582An empty reply indicates that the request is not supported by the stub.
37583@end table
37584
9d29849a 37585@item QTStart
c614397c 37586@cindex @samp{QTStart} packet
dde08ee1
PA
37587Begin the tracepoint experiment. Begin collecting data from
37588tracepoint hits in the trace frame buffer. This packet supports the
37589@samp{qRelocInsn} reply (@pxref{Tracepoint Packets,,Relocate
37590instruction reply packet}).
9d29849a
JB
37591
37592@item QTStop
c614397c 37593@cindex @samp{QTStop} packet
9d29849a
JB
37594End the tracepoint experiment. Stop collecting trace frames.
37595
d248b706
KY
37596@item QTEnable:@var{n}:@var{addr}
37597@anchor{QTEnable}
c614397c 37598@cindex @samp{QTEnable} packet
d248b706
KY
37599Enable tracepoint @var{n} at address @var{addr} in a started tracepoint
37600experiment. If the tracepoint was previously disabled, then collection
37601of data from it will resume.
37602
37603@item QTDisable:@var{n}:@var{addr}
37604@anchor{QTDisable}
c614397c 37605@cindex @samp{QTDisable} packet
d248b706
KY
37606Disable tracepoint @var{n} at address @var{addr} in a started tracepoint
37607experiment. No more data will be collected from the tracepoint unless
37608@samp{QTEnable:@var{n}:@var{addr}} is subsequently issued.
37609
9d29849a 37610@item QTinit
c614397c 37611@cindex @samp{QTinit} packet
9d29849a
JB
37612Clear the table of tracepoints, and empty the trace frame buffer.
37613
37614@item QTro:@var{start1},@var{end1}:@var{start2},@var{end2}:@dots{}
c614397c 37615@cindex @samp{QTro} packet
9d29849a
JB
37616Establish the given ranges of memory as ``transparent''. The stub
37617will answer requests for these ranges from memory's current contents,
37618if they were not collected as part of the tracepoint hit.
37619
37620@value{GDBN} uses this to mark read-only regions of memory, like those
37621containing program code. Since these areas never change, they should
37622still have the same contents they did when the tracepoint was hit, so
37623there's no reason for the stub to refuse to provide their contents.
37624
d5551862 37625@item QTDisconnected:@var{value}
c614397c 37626@cindex @samp{QTDisconnected} packet
d5551862
SS
37627Set the choice to what to do with the tracing run when @value{GDBN}
37628disconnects from the target. A @var{value} of 1 directs the target to
37629continue the tracing run, while 0 tells the target to stop tracing if
37630@value{GDBN} is no longer in the picture.
37631
9d29849a 37632@item qTStatus
c614397c 37633@cindex @samp{qTStatus} packet
9d29849a
JB
37634Ask the stub if there is a trace experiment running right now.
37635
4daf5ac0
SS
37636The reply has the form:
37637
37638@table @samp
37639
37640@item T@var{running}@r{[};@var{field}@r{]}@dots{}
37641@var{running} is a single digit @code{1} if the trace is presently
37642running, or @code{0} if not. It is followed by semicolon-separated
37643optional fields that an agent may use to report additional status.
37644
37645@end table
37646
37647If the trace is not running, the agent may report any of several
37648explanations as one of the optional fields:
37649
37650@table @samp
37651
37652@item tnotrun:0
37653No trace has been run yet.
37654
f196051f
SS
37655@item tstop[:@var{text}]:0
37656The trace was stopped by a user-originated stop command. The optional
37657@var{text} field is a user-supplied string supplied as part of the
37658stop command (for instance, an explanation of why the trace was
37659stopped manually). It is hex-encoded.
4daf5ac0
SS
37660
37661@item tfull:0
37662The trace stopped because the trace buffer filled up.
37663
37664@item tdisconnected:0
37665The trace stopped because @value{GDBN} disconnected from the target.
37666
37667@item tpasscount:@var{tpnum}
37668The trace stopped because tracepoint @var{tpnum} exceeded its pass count.
37669
6c28cbf2
SS
37670@item terror:@var{text}:@var{tpnum}
37671The trace stopped because tracepoint @var{tpnum} had an error. The
37672string @var{text} is available to describe the nature of the error
37673(for instance, a divide by zero in the condition expression).
99b5e152 37674@var{text} is hex encoded.
6c28cbf2 37675
4daf5ac0
SS
37676@item tunknown:0
37677The trace stopped for some other reason.
37678
37679@end table
37680
33da3f1c
SS
37681Additional optional fields supply statistical and other information.
37682Although not required, they are extremely useful for users monitoring
37683the progress of a trace run. If a trace has stopped, and these
37684numbers are reported, they must reflect the state of the just-stopped
37685trace.
4daf5ac0 37686
9d29849a 37687@table @samp
4daf5ac0
SS
37688
37689@item tframes:@var{n}
37690The number of trace frames in the buffer.
37691
37692@item tcreated:@var{n}
37693The total number of trace frames created during the run. This may
37694be larger than the trace frame count, if the buffer is circular.
37695
37696@item tsize:@var{n}
37697The total size of the trace buffer, in bytes.
37698
37699@item tfree:@var{n}
37700The number of bytes still unused in the buffer.
37701
33da3f1c
SS
37702@item circular:@var{n}
37703The value of the circular trace buffer flag. @code{1} means that the
37704trace buffer is circular and old trace frames will be discarded if
37705necessary to make room, @code{0} means that the trace buffer is linear
37706and may fill up.
37707
37708@item disconn:@var{n}
37709The value of the disconnected tracing flag. @code{1} means that
37710tracing will continue after @value{GDBN} disconnects, @code{0} means
37711that the trace run will stop.
37712
9d29849a
JB
37713@end table
37714
f196051f
SS
37715@item qTP:@var{tp}:@var{addr}
37716@cindex tracepoint status, remote request
37717@cindex @samp{qTP} packet
37718Ask the stub for the current state of tracepoint number @var{tp} at
37719address @var{addr}.
37720
37721Replies:
37722@table @samp
37723@item V@var{hits}:@var{usage}
37724The tracepoint has been hit @var{hits} times so far during the trace
37725run, and accounts for @var{usage} in the trace buffer. Note that
37726@code{while-stepping} steps are not counted as separate hits, but the
37727steps' space consumption is added into the usage number.
37728
37729@end table
37730
f61e138d
SS
37731@item qTV:@var{var}
37732@cindex trace state variable value, remote request
37733@cindex @samp{qTV} packet
37734Ask the stub for the value of the trace state variable number @var{var}.
37735
37736Replies:
37737@table @samp
37738@item V@var{value}
37739The value of the variable is @var{value}. This will be the current
37740value of the variable if the user is examining a running target, or a
37741saved value if the variable was collected in the trace frame that the
37742user is looking at. Note that multiple requests may result in
37743different reply values, such as when requesting values while the
37744program is running.
37745
37746@item U
37747The value of the variable is unknown. This would occur, for example,
37748if the user is examining a trace frame in which the requested variable
37749was not collected.
9d29849a
JB
37750@end table
37751
d5551862 37752@item qTfP
c614397c 37753@cindex @samp{qTfP} packet
d5551862 37754@itemx qTsP
c614397c 37755@cindex @samp{qTsP} packet
d5551862
SS
37756These packets request data about tracepoints that are being used by
37757the target. @value{GDBN} sends @code{qTfP} to get the first piece
37758of data, and multiple @code{qTsP} to get additional pieces. Replies
37759to these packets generally take the form of the @code{QTDP} packets
37760that define tracepoints. (FIXME add detailed syntax)
37761
00bf0b85 37762@item qTfV
c614397c 37763@cindex @samp{qTfV} packet
00bf0b85 37764@itemx qTsV
c614397c 37765@cindex @samp{qTsV} packet
00bf0b85
SS
37766These packets request data about trace state variables that are on the
37767target. @value{GDBN} sends @code{qTfV} to get the first vari of data,
37768and multiple @code{qTsV} to get additional variables. Replies to
37769these packets follow the syntax of the @code{QTDV} packets that define
37770trace state variables.
37771
0fb4aa4b
PA
37772@item qTfSTM
37773@itemx qTsSTM
16bdd41f
YQ
37774@anchor{qTfSTM}
37775@anchor{qTsSTM}
c614397c
YQ
37776@cindex @samp{qTfSTM} packet
37777@cindex @samp{qTsSTM} packet
0fb4aa4b
PA
37778These packets request data about static tracepoint markers that exist
37779in the target program. @value{GDBN} sends @code{qTfSTM} to get the
37780first piece of data, and multiple @code{qTsSTM} to get additional
37781pieces. Replies to these packets take the following form:
37782
37783Reply:
37784@table @samp
37785@item m @var{address}:@var{id}:@var{extra}
37786A single marker
37787@item m @var{address}:@var{id}:@var{extra},@var{address}:@var{id}:@var{extra}@dots{}
37788a comma-separated list of markers
37789@item l
37790(lower case letter @samp{L}) denotes end of list.
37791@item E @var{nn}
37792An error occurred. @var{nn} are hex digits.
37793@item
37794An empty reply indicates that the request is not supported by the
37795stub.
37796@end table
37797
37798@var{address} is encoded in hex.
37799@var{id} and @var{extra} are strings encoded in hex.
37800
37801In response to each query, the target will reply with a list of one or
37802more markers, separated by commas. @value{GDBN} will respond to each
37803reply with a request for more markers (using the @samp{qs} form of the
37804query), until the target responds with @samp{l} (lower-case ell, for
37805@dfn{last}).
37806
37807@item qTSTMat:@var{address}
16bdd41f 37808@anchor{qTSTMat}
c614397c 37809@cindex @samp{qTSTMat} packet
0fb4aa4b
PA
37810This packets requests data about static tracepoint markers in the
37811target program at @var{address}. Replies to this packet follow the
37812syntax of the @samp{qTfSTM} and @code{qTsSTM} packets that list static
37813tracepoint markers.
37814
00bf0b85 37815@item QTSave:@var{filename}
c614397c 37816@cindex @samp{QTSave} packet
00bf0b85
SS
37817This packet directs the target to save trace data to the file name
37818@var{filename} in the target's filesystem. @var{filename} is encoded
37819as a hex string; the interpretation of the file name (relative vs
37820absolute, wild cards, etc) is up to the target.
37821
37822@item qTBuffer:@var{offset},@var{len}
c614397c 37823@cindex @samp{qTBuffer} packet
00bf0b85
SS
37824Return up to @var{len} bytes of the current contents of trace buffer,
37825starting at @var{offset}. The trace buffer is treated as if it were
37826a contiguous collection of traceframes, as per the trace file format.
37827The reply consists as many hex-encoded bytes as the target can deliver
37828in a packet; it is not an error to return fewer than were asked for.
37829A reply consisting of just @code{l} indicates that no bytes are
37830available.
37831
4daf5ac0
SS
37832@item QTBuffer:circular:@var{value}
37833This packet directs the target to use a circular trace buffer if
37834@var{value} is 1, or a linear buffer if the value is 0.
37835
f196051f 37836@item QTNotes:@r{[}@var{type}:@var{text}@r{]}@r{[};@var{type}:@var{text}@r{]}@dots{}
c614397c 37837@cindex @samp{QTNotes} packet
f196051f
SS
37838This packet adds optional textual notes to the trace run. Allowable
37839types include @code{user}, @code{notes}, and @code{tstop}, the
37840@var{text} fields are arbitrary strings, hex-encoded.
37841
f61e138d 37842@end table
9d29849a 37843
dde08ee1
PA
37844@subsection Relocate instruction reply packet
37845When installing fast tracepoints in memory, the target may need to
37846relocate the instruction currently at the tracepoint address to a
37847different address in memory. For most instructions, a simple copy is
37848enough, but, for example, call instructions that implicitly push the
37849return address on the stack, and relative branches or other
37850PC-relative instructions require offset adjustment, so that the effect
37851of executing the instruction at a different address is the same as if
37852it had executed in the original location.
37853
37854In response to several of the tracepoint packets, the target may also
37855respond with a number of intermediate @samp{qRelocInsn} request
37856packets before the final result packet, to have @value{GDBN} handle
37857this relocation operation. If a packet supports this mechanism, its
37858documentation will explicitly say so. See for example the above
37859descriptions for the @samp{QTStart} and @samp{QTDP} packets. The
37860format of the request is:
37861
37862@table @samp
37863@item qRelocInsn:@var{from};@var{to}
37864
37865This requests @value{GDBN} to copy instruction at address @var{from}
37866to address @var{to}, possibly adjusted so that executing the
37867instruction at @var{to} has the same effect as executing it at
37868@var{from}. @value{GDBN} writes the adjusted instruction to target
37869memory starting at @var{to}.
37870@end table
37871
37872Replies:
37873@table @samp
37874@item qRelocInsn:@var{adjusted_size}
37875Informs the stub the relocation is complete. @var{adjusted_size} is
37876the length in bytes of resulting relocated instruction sequence.
37877@item E @var{NN}
37878A badly formed request was detected, or an error was encountered while
37879relocating the instruction.
37880@end table
37881
a6b151f1
DJ
37882@node Host I/O Packets
37883@section Host I/O Packets
37884@cindex Host I/O, remote protocol
37885@cindex file transfer, remote protocol
37886
37887The @dfn{Host I/O} packets allow @value{GDBN} to perform I/O
37888operations on the far side of a remote link. For example, Host I/O is
37889used to upload and download files to a remote target with its own
37890filesystem. Host I/O uses the same constant values and data structure
37891layout as the target-initiated File-I/O protocol. However, the
37892Host I/O packets are structured differently. The target-initiated
37893protocol relies on target memory to store parameters and buffers.
37894Host I/O requests are initiated by @value{GDBN}, and the
37895target's memory is not involved. @xref{File-I/O Remote Protocol
37896Extension}, for more details on the target-initiated protocol.
37897
37898The Host I/O request packets all encode a single operation along with
37899its arguments. They have this format:
37900
37901@table @samp
37902
37903@item vFile:@var{operation}: @var{parameter}@dots{}
37904@var{operation} is the name of the particular request; the target
37905should compare the entire packet name up to the second colon when checking
37906for a supported operation. The format of @var{parameter} depends on
37907the operation. Numbers are always passed in hexadecimal. Negative
37908numbers have an explicit minus sign (i.e.@: two's complement is not
37909used). Strings (e.g.@: filenames) are encoded as a series of
37910hexadecimal bytes. The last argument to a system call may be a
37911buffer of escaped binary data (@pxref{Binary Data}).
37912
37913@end table
37914
37915The valid responses to Host I/O packets are:
37916
37917@table @samp
37918
37919@item F @var{result} [, @var{errno}] [; @var{attachment}]
37920@var{result} is the integer value returned by this operation, usually
37921non-negative for success and -1 for errors. If an error has occured,
37922@var{errno} will be included in the result. @var{errno} will have a
37923value defined by the File-I/O protocol (@pxref{Errno Values}). For
37924operations which return data, @var{attachment} supplies the data as a
37925binary buffer. Binary buffers in response packets are escaped in the
37926normal way (@pxref{Binary Data}). See the individual packet
37927documentation for the interpretation of @var{result} and
37928@var{attachment}.
37929
37930@item
37931An empty response indicates that this operation is not recognized.
37932
37933@end table
37934
37935These are the supported Host I/O operations:
37936
37937@table @samp
37938@item vFile:open: @var{pathname}, @var{flags}, @var{mode}
37939Open a file at @var{pathname} and return a file descriptor for it, or
37940return -1 if an error occurs. @var{pathname} is a string,
37941@var{flags} is an integer indicating a mask of open flags
37942(@pxref{Open Flags}), and @var{mode} is an integer indicating a mask
37943of mode bits to use if the file is created (@pxref{mode_t Values}).
c1c25a1a 37944@xref{open}, for details of the open flags and mode values.
a6b151f1
DJ
37945
37946@item vFile:close: @var{fd}
37947Close the open file corresponding to @var{fd} and return 0, or
37948-1 if an error occurs.
37949
37950@item vFile:pread: @var{fd}, @var{count}, @var{offset}
37951Read data from the open file corresponding to @var{fd}. Up to
37952@var{count} bytes will be read from the file, starting at @var{offset}
37953relative to the start of the file. The target may read fewer bytes;
37954common reasons include packet size limits and an end-of-file
37955condition. The number of bytes read is returned. Zero should only be
37956returned for a successful read at the end of the file, or if
37957@var{count} was zero.
37958
37959The data read should be returned as a binary attachment on success.
37960If zero bytes were read, the response should include an empty binary
37961attachment (i.e.@: a trailing semicolon). The return value is the
37962number of target bytes read; the binary attachment may be longer if
37963some characters were escaped.
37964
37965@item vFile:pwrite: @var{fd}, @var{offset}, @var{data}
37966Write @var{data} (a binary buffer) to the open file corresponding
37967to @var{fd}. Start the write at @var{offset} from the start of the
37968file. Unlike many @code{write} system calls, there is no
37969separate @var{count} argument; the length of @var{data} in the
37970packet is used. @samp{vFile:write} returns the number of bytes written,
37971which may be shorter than the length of @var{data}, or -1 if an
37972error occurred.
37973
37974@item vFile:unlink: @var{pathname}
37975Delete the file at @var{pathname} on the target. Return 0,
37976or -1 if an error occurs. @var{pathname} is a string.
37977
b9e7b9c3
UW
37978@item vFile:readlink: @var{filename}
37979Read value of symbolic link @var{filename} on the target. Return
37980the number of bytes read, or -1 if an error occurs.
37981
37982The data read should be returned as a binary attachment on success.
37983If zero bytes were read, the response should include an empty binary
37984attachment (i.e.@: a trailing semicolon). The return value is the
37985number of target bytes read; the binary attachment may be longer if
37986some characters were escaped.
37987
a6b151f1
DJ
37988@end table
37989
9a6253be
KB
37990@node Interrupts
37991@section Interrupts
37992@cindex interrupts (remote protocol)
37993
37994When a program on the remote target is running, @value{GDBN} may
9a7071a8
JB
37995attempt to interrupt it by sending a @samp{Ctrl-C}, @code{BREAK} or
37996a @code{BREAK} followed by @code{g},
37997control of which is specified via @value{GDBN}'s @samp{interrupt-sequence}.
9a6253be
KB
37998
37999The precise meaning of @code{BREAK} is defined by the transport
8775bb90
MS
38000mechanism and may, in fact, be undefined. @value{GDBN} does not
38001currently define a @code{BREAK} mechanism for any of the network
38002interfaces except for TCP, in which case @value{GDBN} sends the
38003@code{telnet} BREAK sequence.
9a6253be
KB
38004
38005@samp{Ctrl-C}, on the other hand, is defined and implemented for all
38006transport mechanisms. It is represented by sending the single byte
38007@code{0x03} without any of the usual packet overhead described in
38008the Overview section (@pxref{Overview}). When a @code{0x03} byte is
38009transmitted as part of a packet, it is considered to be packet data
38010and does @emph{not} represent an interrupt. E.g., an @samp{X} packet
0876f84a 38011(@pxref{X packet}), used for binary downloads, may include an unescaped
9a6253be
KB
38012@code{0x03} as part of its packet.
38013
9a7071a8
JB
38014@code{BREAK} followed by @code{g} is also known as Magic SysRq g.
38015When Linux kernel receives this sequence from serial port,
38016it stops execution and connects to gdb.
38017
9a6253be
KB
38018Stubs are not required to recognize these interrupt mechanisms and the
38019precise meaning associated with receipt of the interrupt is
8b23ecc4
SL
38020implementation defined. If the target supports debugging of multiple
38021threads and/or processes, it should attempt to interrupt all
38022currently-executing threads and processes.
38023If the stub is successful at interrupting the
38024running program, it should send one of the stop
38025reply packets (@pxref{Stop Reply Packets}) to @value{GDBN} as a result
38026of successfully stopping the program in all-stop mode, and a stop reply
38027for each stopped thread in non-stop mode.
38028Interrupts received while the
38029program is stopped are discarded.
38030
38031@node Notification Packets
38032@section Notification Packets
38033@cindex notification packets
38034@cindex packets, notification
38035
38036The @value{GDBN} remote serial protocol includes @dfn{notifications},
38037packets that require no acknowledgment. Both the GDB and the stub
38038may send notifications (although the only notifications defined at
38039present are sent by the stub). Notifications carry information
38040without incurring the round-trip latency of an acknowledgment, and so
38041are useful for low-impact communications where occasional packet loss
38042is not a problem.
38043
38044A notification packet has the form @samp{% @var{data} #
38045@var{checksum}}, where @var{data} is the content of the notification,
38046and @var{checksum} is a checksum of @var{data}, computed and formatted
38047as for ordinary @value{GDBN} packets. A notification's @var{data}
38048never contains @samp{$}, @samp{%} or @samp{#} characters. Upon
38049receiving a notification, the recipient sends no @samp{+} or @samp{-}
38050to acknowledge the notification's receipt or to report its corruption.
38051
38052Every notification's @var{data} begins with a name, which contains no
38053colon characters, followed by a colon character.
38054
38055Recipients should silently ignore corrupted notifications and
38056notifications they do not understand. Recipients should restart
38057timeout periods on receipt of a well-formed notification, whether or
38058not they understand it.
38059
38060Senders should only send the notifications described here when this
38061protocol description specifies that they are permitted. In the
38062future, we may extend the protocol to permit existing notifications in
38063new contexts; this rule helps older senders avoid confusing newer
38064recipients.
38065
38066(Older versions of @value{GDBN} ignore bytes received until they see
38067the @samp{$} byte that begins an ordinary packet, so new stubs may
38068transmit notifications without fear of confusing older clients. There
38069are no notifications defined for @value{GDBN} to send at the moment, but we
38070assume that most older stubs would ignore them, as well.)
38071
38072The following notification packets from the stub to @value{GDBN} are
38073defined:
38074
38075@table @samp
38076@item Stop: @var{reply}
38077Report an asynchronous stop event in non-stop mode.
38078The @var{reply} has the form of a stop reply, as
38079described in @ref{Stop Reply Packets}. Refer to @ref{Remote Non-Stop},
38080for information on how these notifications are acknowledged by
38081@value{GDBN}.
38082@end table
38083
38084@node Remote Non-Stop
38085@section Remote Protocol Support for Non-Stop Mode
38086
38087@value{GDBN}'s remote protocol supports non-stop debugging of
38088multi-threaded programs, as described in @ref{Non-Stop Mode}. If the stub
38089supports non-stop mode, it should report that to @value{GDBN} by including
38090@samp{QNonStop+} in its @samp{qSupported} response (@pxref{qSupported}).
38091
38092@value{GDBN} typically sends a @samp{QNonStop} packet only when
38093establishing a new connection with the stub. Entering non-stop mode
38094does not alter the state of any currently-running threads, but targets
38095must stop all threads in any already-attached processes when entering
38096all-stop mode. @value{GDBN} uses the @samp{?} packet as necessary to
38097probe the target state after a mode change.
38098
38099In non-stop mode, when an attached process encounters an event that
38100would otherwise be reported with a stop reply, it uses the
38101asynchronous notification mechanism (@pxref{Notification Packets}) to
38102inform @value{GDBN}. In contrast to all-stop mode, where all threads
38103in all processes are stopped when a stop reply is sent, in non-stop
38104mode only the thread reporting the stop event is stopped. That is,
38105when reporting a @samp{S} or @samp{T} response to indicate completion
38106of a step operation, hitting a breakpoint, or a fault, only the
38107affected thread is stopped; any other still-running threads continue
38108to run. When reporting a @samp{W} or @samp{X} response, all running
38109threads belonging to other attached processes continue to run.
38110
38111Only one stop reply notification at a time may be pending; if
38112additional stop events occur before @value{GDBN} has acknowledged the
38113previous notification, they must be queued by the stub for later
38114synchronous transmission in response to @samp{vStopped} packets from
38115@value{GDBN}. Because the notification mechanism is unreliable,
38116the stub is permitted to resend a stop reply notification
38117if it believes @value{GDBN} may not have received it. @value{GDBN}
38118ignores additional stop reply notifications received before it has
38119finished processing a previous notification and the stub has completed
38120sending any queued stop events.
38121
38122Otherwise, @value{GDBN} must be prepared to receive a stop reply
38123notification at any time. Specifically, they may appear when
38124@value{GDBN} is not otherwise reading input from the stub, or when
38125@value{GDBN} is expecting to read a normal synchronous response or a
38126@samp{+}/@samp{-} acknowledgment to a packet it has sent.
38127Notification packets are distinct from any other communication from
38128the stub so there is no ambiguity.
38129
38130After receiving a stop reply notification, @value{GDBN} shall
38131acknowledge it by sending a @samp{vStopped} packet (@pxref{vStopped packet})
38132as a regular, synchronous request to the stub. Such acknowledgment
38133is not required to happen immediately, as @value{GDBN} is permitted to
38134send other, unrelated packets to the stub first, which the stub should
38135process normally.
38136
38137Upon receiving a @samp{vStopped} packet, if the stub has other queued
38138stop events to report to @value{GDBN}, it shall respond by sending a
38139normal stop reply response. @value{GDBN} shall then send another
38140@samp{vStopped} packet to solicit further responses; again, it is
38141permitted to send other, unrelated packets as well which the stub
38142should process normally.
38143
38144If the stub receives a @samp{vStopped} packet and there are no
38145additional stop events to report, the stub shall return an @samp{OK}
38146response. At this point, if further stop events occur, the stub shall
38147send a new stop reply notification, @value{GDBN} shall accept the
38148notification, and the process shall be repeated.
38149
38150In non-stop mode, the target shall respond to the @samp{?} packet as
38151follows. First, any incomplete stop reply notification/@samp{vStopped}
38152sequence in progress is abandoned. The target must begin a new
38153sequence reporting stop events for all stopped threads, whether or not
38154it has previously reported those events to @value{GDBN}. The first
38155stop reply is sent as a synchronous reply to the @samp{?} packet, and
38156subsequent stop replies are sent as responses to @samp{vStopped} packets
38157using the mechanism described above. The target must not send
38158asynchronous stop reply notifications until the sequence is complete.
38159If all threads are running when the target receives the @samp{?} packet,
38160or if the target is not attached to any process, it shall respond
38161@samp{OK}.
9a6253be 38162
a6f3e723
SL
38163@node Packet Acknowledgment
38164@section Packet Acknowledgment
38165
38166@cindex acknowledgment, for @value{GDBN} remote
38167@cindex packet acknowledgment, for @value{GDBN} remote
38168By default, when either the host or the target machine receives a packet,
38169the first response expected is an acknowledgment: either @samp{+} (to indicate
38170the package was received correctly) or @samp{-} (to request retransmission).
38171This mechanism allows the @value{GDBN} remote protocol to operate over
38172unreliable transport mechanisms, such as a serial line.
38173
38174In cases where the transport mechanism is itself reliable (such as a pipe or
38175TCP connection), the @samp{+}/@samp{-} acknowledgments are redundant.
38176It may be desirable to disable them in that case to reduce communication
38177overhead, or for other reasons. This can be accomplished by means of the
38178@samp{QStartNoAckMode} packet; @pxref{QStartNoAckMode}.
38179
38180When in no-acknowledgment mode, neither the stub nor @value{GDBN} shall send or
38181expect @samp{+}/@samp{-} protocol acknowledgments. The packet
38182and response format still includes the normal checksum, as described in
38183@ref{Overview}, but the checksum may be ignored by the receiver.
38184
38185If the stub supports @samp{QStartNoAckMode} and prefers to operate in
38186no-acknowledgment mode, it should report that to @value{GDBN}
38187by including @samp{QStartNoAckMode+} in its response to @samp{qSupported};
38188@pxref{qSupported}.
38189If @value{GDBN} also supports @samp{QStartNoAckMode} and it has not been
38190disabled via the @code{set remote noack-packet off} command
38191(@pxref{Remote Configuration}),
38192@value{GDBN} may then send a @samp{QStartNoAckMode} packet to the stub.
38193Only then may the stub actually turn off packet acknowledgments.
38194@value{GDBN} sends a final @samp{+} acknowledgment of the stub's @samp{OK}
38195response, which can be safely ignored by the stub.
38196
38197Note that @code{set remote noack-packet} command only affects negotiation
38198between @value{GDBN} and the stub when subsequent connections are made;
38199it does not affect the protocol acknowledgment state for any current
38200connection.
38201Since @samp{+}/@samp{-} acknowledgments are enabled by default when a
38202new connection is established,
38203there is also no protocol request to re-enable the acknowledgments
38204for the current connection, once disabled.
38205
ee2d5c50
AC
38206@node Examples
38207@section Examples
eb12ee30 38208
8e04817f
AC
38209Example sequence of a target being re-started. Notice how the restart
38210does not get any direct output:
eb12ee30 38211
474c8240 38212@smallexample
d2c6833e
AC
38213-> @code{R00}
38214<- @code{+}
8e04817f 38215@emph{target restarts}
d2c6833e 38216-> @code{?}
8e04817f 38217<- @code{+}
d2c6833e
AC
38218<- @code{T001:1234123412341234}
38219-> @code{+}
474c8240 38220@end smallexample
eb12ee30 38221
8e04817f 38222Example sequence of a target being stepped by a single instruction:
eb12ee30 38223
474c8240 38224@smallexample
d2c6833e 38225-> @code{G1445@dots{}}
8e04817f 38226<- @code{+}
d2c6833e
AC
38227-> @code{s}
38228<- @code{+}
38229@emph{time passes}
38230<- @code{T001:1234123412341234}
8e04817f 38231-> @code{+}
d2c6833e 38232-> @code{g}
8e04817f 38233<- @code{+}
d2c6833e
AC
38234<- @code{1455@dots{}}
38235-> @code{+}
474c8240 38236@end smallexample
eb12ee30 38237
79a6e687
BW
38238@node File-I/O Remote Protocol Extension
38239@section File-I/O Remote Protocol Extension
0ce1b118
CV
38240@cindex File-I/O remote protocol extension
38241
38242@menu
38243* File-I/O Overview::
79a6e687
BW
38244* Protocol Basics::
38245* The F Request Packet::
38246* The F Reply Packet::
38247* The Ctrl-C Message::
0ce1b118 38248* Console I/O::
79a6e687 38249* List of Supported Calls::
db2e3e2e 38250* Protocol-specific Representation of Datatypes::
0ce1b118
CV
38251* Constants::
38252* File-I/O Examples::
38253@end menu
38254
38255@node File-I/O Overview
38256@subsection File-I/O Overview
38257@cindex file-i/o overview
38258
9c16f35a 38259The @dfn{File I/O remote protocol extension} (short: File-I/O) allows the
fc320d37 38260target to use the host's file system and console I/O to perform various
0ce1b118 38261system calls. System calls on the target system are translated into a
fc320d37
SL
38262remote protocol packet to the host system, which then performs the needed
38263actions and returns a response packet to the target system.
0ce1b118
CV
38264This simulates file system operations even on targets that lack file systems.
38265
fc320d37
SL
38266The protocol is defined to be independent of both the host and target systems.
38267It uses its own internal representation of datatypes and values. Both
0ce1b118 38268@value{GDBN} and the target's @value{GDBN} stub are responsible for
fc320d37
SL
38269translating the system-dependent value representations into the internal
38270protocol representations when data is transmitted.
0ce1b118 38271
fc320d37
SL
38272The communication is synchronous. A system call is possible only when
38273@value{GDBN} is waiting for a response from the @samp{C}, @samp{c}, @samp{S}
38274or @samp{s} packets. While @value{GDBN} handles the request for a system call,
0ce1b118 38275the target is stopped to allow deterministic access to the target's
fc320d37
SL
38276memory. Therefore File-I/O is not interruptible by target signals. On
38277the other hand, it is possible to interrupt File-I/O by a user interrupt
c8aa23ab 38278(@samp{Ctrl-C}) within @value{GDBN}.
0ce1b118
CV
38279
38280The target's request to perform a host system call does not finish
38281the latest @samp{C}, @samp{c}, @samp{S} or @samp{s} action. That means,
38282after finishing the system call, the target returns to continuing the
38283previous activity (continue, step). No additional continue or step
38284request from @value{GDBN} is required.
38285
38286@smallexample
f7dc1244 38287(@value{GDBP}) continue
0ce1b118
CV
38288 <- target requests 'system call X'
38289 target is stopped, @value{GDBN} executes system call
3f94c067
BW
38290 -> @value{GDBN} returns result
38291 ... target continues, @value{GDBN} returns to wait for the target
0ce1b118
CV
38292 <- target hits breakpoint and sends a Txx packet
38293@end smallexample
38294
fc320d37
SL
38295The protocol only supports I/O on the console and to regular files on
38296the host file system. Character or block special devices, pipes,
38297named pipes, sockets or any other communication method on the host
0ce1b118
CV
38298system are not supported by this protocol.
38299
8b23ecc4
SL
38300File I/O is not supported in non-stop mode.
38301
79a6e687
BW
38302@node Protocol Basics
38303@subsection Protocol Basics
0ce1b118
CV
38304@cindex protocol basics, file-i/o
38305
fc320d37
SL
38306The File-I/O protocol uses the @code{F} packet as the request as well
38307as reply packet. Since a File-I/O system call can only occur when
38308@value{GDBN} is waiting for a response from the continuing or stepping target,
38309the File-I/O request is a reply that @value{GDBN} has to expect as a result
38310of a previous @samp{C}, @samp{c}, @samp{S} or @samp{s} packet.
0ce1b118
CV
38311This @code{F} packet contains all information needed to allow @value{GDBN}
38312to call the appropriate host system call:
38313
38314@itemize @bullet
b383017d 38315@item
0ce1b118
CV
38316A unique identifier for the requested system call.
38317
38318@item
38319All parameters to the system call. Pointers are given as addresses
38320in the target memory address space. Pointers to strings are given as
b383017d 38321pointer/length pair. Numerical values are given as they are.
db2e3e2e 38322Numerical control flags are given in a protocol-specific representation.
0ce1b118
CV
38323
38324@end itemize
38325
fc320d37 38326At this point, @value{GDBN} has to perform the following actions.
0ce1b118
CV
38327
38328@itemize @bullet
b383017d 38329@item
fc320d37
SL
38330If the parameters include pointer values to data needed as input to a
38331system call, @value{GDBN} requests this data from the target with a
0ce1b118
CV
38332standard @code{m} packet request. This additional communication has to be
38333expected by the target implementation and is handled as any other @code{m}
38334packet.
38335
38336@item
38337@value{GDBN} translates all value from protocol representation to host
38338representation as needed. Datatypes are coerced into the host types.
38339
38340@item
fc320d37 38341@value{GDBN} calls the system call.
0ce1b118
CV
38342
38343@item
38344It then coerces datatypes back to protocol representation.
38345
38346@item
fc320d37
SL
38347If the system call is expected to return data in buffer space specified
38348by pointer parameters to the call, the data is transmitted to the
0ce1b118
CV
38349target using a @code{M} or @code{X} packet. This packet has to be expected
38350by the target implementation and is handled as any other @code{M} or @code{X}
38351packet.
38352
38353@end itemize
38354
38355Eventually @value{GDBN} replies with another @code{F} packet which contains all
38356necessary information for the target to continue. This at least contains
38357
38358@itemize @bullet
38359@item
38360Return value.
38361
38362@item
38363@code{errno}, if has been changed by the system call.
38364
38365@item
38366``Ctrl-C'' flag.
38367
38368@end itemize
38369
38370After having done the needed type and value coercion, the target continues
38371the latest continue or step action.
38372
79a6e687
BW
38373@node The F Request Packet
38374@subsection The @code{F} Request Packet
0ce1b118
CV
38375@cindex file-i/o request packet
38376@cindex @code{F} request packet
38377
38378The @code{F} request packet has the following format:
38379
38380@table @samp
fc320d37 38381@item F@var{call-id},@var{parameter@dots{}}
0ce1b118
CV
38382
38383@var{call-id} is the identifier to indicate the host system call to be called.
38384This is just the name of the function.
38385
fc320d37
SL
38386@var{parameter@dots{}} are the parameters to the system call.
38387Parameters are hexadecimal integer values, either the actual values in case
38388of scalar datatypes, pointers to target buffer space in case of compound
38389datatypes and unspecified memory areas, or pointer/length pairs in case
38390of string parameters. These are appended to the @var{call-id} as a
38391comma-delimited list. All values are transmitted in ASCII
38392string representation, pointer/length pairs separated by a slash.
0ce1b118 38393
b383017d 38394@end table
0ce1b118 38395
fc320d37 38396
0ce1b118 38397
79a6e687
BW
38398@node The F Reply Packet
38399@subsection The @code{F} Reply Packet
0ce1b118
CV
38400@cindex file-i/o reply packet
38401@cindex @code{F} reply packet
38402
38403The @code{F} reply packet has the following format:
38404
38405@table @samp
38406
d3bdde98 38407@item F@var{retcode},@var{errno},@var{Ctrl-C flag};@var{call-specific attachment}
0ce1b118
CV
38408
38409@var{retcode} is the return code of the system call as hexadecimal value.
38410
db2e3e2e
BW
38411@var{errno} is the @code{errno} set by the call, in protocol-specific
38412representation.
0ce1b118
CV
38413This parameter can be omitted if the call was successful.
38414
fc320d37
SL
38415@var{Ctrl-C flag} is only sent if the user requested a break. In this
38416case, @var{errno} must be sent as well, even if the call was successful.
38417The @var{Ctrl-C flag} itself consists of the character @samp{C}:
0ce1b118
CV
38418
38419@smallexample
38420F0,0,C
38421@end smallexample
38422
38423@noindent
fc320d37 38424or, if the call was interrupted before the host call has been performed:
0ce1b118
CV
38425
38426@smallexample
38427F-1,4,C
38428@end smallexample
38429
38430@noindent
db2e3e2e 38431assuming 4 is the protocol-specific representation of @code{EINTR}.
0ce1b118
CV
38432
38433@end table
38434
0ce1b118 38435
79a6e687
BW
38436@node The Ctrl-C Message
38437@subsection The @samp{Ctrl-C} Message
0ce1b118
CV
38438@cindex ctrl-c message, in file-i/o protocol
38439
c8aa23ab 38440If the @samp{Ctrl-C} flag is set in the @value{GDBN}
79a6e687 38441reply packet (@pxref{The F Reply Packet}),
fc320d37 38442the target should behave as if it had
0ce1b118 38443gotten a break message. The meaning for the target is ``system call
fc320d37 38444interrupted by @code{SIGINT}''. Consequentially, the target should actually stop
0ce1b118 38445(as with a break message) and return to @value{GDBN} with a @code{T02}
c8aa23ab 38446packet.
fc320d37
SL
38447
38448It's important for the target to know in which
38449state the system call was interrupted. There are two possible cases:
0ce1b118
CV
38450
38451@itemize @bullet
38452@item
38453The system call hasn't been performed on the host yet.
38454
38455@item
38456The system call on the host has been finished.
38457
38458@end itemize
38459
38460These two states can be distinguished by the target by the value of the
38461returned @code{errno}. If it's the protocol representation of @code{EINTR}, the system
38462call hasn't been performed. This is equivalent to the @code{EINTR} handling
38463on POSIX systems. In any other case, the target may presume that the
fc320d37 38464system call has been finished --- successfully or not --- and should behave
0ce1b118
CV
38465as if the break message arrived right after the system call.
38466
fc320d37 38467@value{GDBN} must behave reliably. If the system call has not been called
0ce1b118
CV
38468yet, @value{GDBN} may send the @code{F} reply immediately, setting @code{EINTR} as
38469@code{errno} in the packet. If the system call on the host has been finished
fc320d37
SL
38470before the user requests a break, the full action must be finished by
38471@value{GDBN}. This requires sending @code{M} or @code{X} packets as necessary.
38472The @code{F} packet may only be sent when either nothing has happened
0ce1b118
CV
38473or the full action has been completed.
38474
38475@node Console I/O
38476@subsection Console I/O
38477@cindex console i/o as part of file-i/o
38478
d3e8051b 38479By default and if not explicitly closed by the target system, the file
0ce1b118
CV
38480descriptors 0, 1 and 2 are connected to the @value{GDBN} console. Output
38481on the @value{GDBN} console is handled as any other file output operation
38482(@code{write(1, @dots{})} or @code{write(2, @dots{})}). Console input is handled
38483by @value{GDBN} so that after the target read request from file descriptor
384840 all following typing is buffered until either one of the following
38485conditions is met:
38486
38487@itemize @bullet
38488@item
c8aa23ab 38489The user types @kbd{Ctrl-c}. The behaviour is as explained above, and the
0ce1b118
CV
38490@code{read}
38491system call is treated as finished.
38492
38493@item
7f9087cb 38494The user presses @key{RET}. This is treated as end of input with a trailing
fc320d37 38495newline.
0ce1b118
CV
38496
38497@item
c8aa23ab
EZ
38498The user types @kbd{Ctrl-d}. This is treated as end of input. No trailing
38499character (neither newline nor @samp{Ctrl-D}) is appended to the input.
0ce1b118
CV
38500
38501@end itemize
38502
fc320d37
SL
38503If the user has typed more characters than fit in the buffer given to
38504the @code{read} call, the trailing characters are buffered in @value{GDBN} until
38505either another @code{read(0, @dots{})} is requested by the target, or debugging
38506is stopped at the user's request.
0ce1b118 38507
0ce1b118 38508
79a6e687
BW
38509@node List of Supported Calls
38510@subsection List of Supported Calls
0ce1b118
CV
38511@cindex list of supported file-i/o calls
38512
38513@menu
38514* open::
38515* close::
38516* read::
38517* write::
38518* lseek::
38519* rename::
38520* unlink::
38521* stat/fstat::
38522* gettimeofday::
38523* isatty::
38524* system::
38525@end menu
38526
38527@node open
38528@unnumberedsubsubsec open
38529@cindex open, file-i/o system call
38530
fc320d37
SL
38531@table @asis
38532@item Synopsis:
0ce1b118 38533@smallexample
0ce1b118
CV
38534int open(const char *pathname, int flags);
38535int open(const char *pathname, int flags, mode_t mode);
0ce1b118
CV
38536@end smallexample
38537
fc320d37
SL
38538@item Request:
38539@samp{Fopen,@var{pathptr}/@var{len},@var{flags},@var{mode}}
38540
0ce1b118 38541@noindent
fc320d37 38542@var{flags} is the bitwise @code{OR} of the following values:
0ce1b118
CV
38543
38544@table @code
b383017d 38545@item O_CREAT
0ce1b118
CV
38546If the file does not exist it will be created. The host
38547rules apply as far as file ownership and time stamps
38548are concerned.
38549
b383017d 38550@item O_EXCL
fc320d37 38551When used with @code{O_CREAT}, if the file already exists it is
0ce1b118
CV
38552an error and open() fails.
38553
b383017d 38554@item O_TRUNC
0ce1b118 38555If the file already exists and the open mode allows
fc320d37
SL
38556writing (@code{O_RDWR} or @code{O_WRONLY} is given) it will be
38557truncated to zero length.
0ce1b118 38558
b383017d 38559@item O_APPEND
0ce1b118
CV
38560The file is opened in append mode.
38561
b383017d 38562@item O_RDONLY
0ce1b118
CV
38563The file is opened for reading only.
38564
b383017d 38565@item O_WRONLY
0ce1b118
CV
38566The file is opened for writing only.
38567
b383017d 38568@item O_RDWR
0ce1b118 38569The file is opened for reading and writing.
fc320d37 38570@end table
0ce1b118
CV
38571
38572@noindent
fc320d37 38573Other bits are silently ignored.
0ce1b118 38574
0ce1b118
CV
38575
38576@noindent
fc320d37 38577@var{mode} is the bitwise @code{OR} of the following values:
0ce1b118
CV
38578
38579@table @code
b383017d 38580@item S_IRUSR
0ce1b118
CV
38581User has read permission.
38582
b383017d 38583@item S_IWUSR
0ce1b118
CV
38584User has write permission.
38585
b383017d 38586@item S_IRGRP
0ce1b118
CV
38587Group has read permission.
38588
b383017d 38589@item S_IWGRP
0ce1b118
CV
38590Group has write permission.
38591
b383017d 38592@item S_IROTH
0ce1b118
CV
38593Others have read permission.
38594
b383017d 38595@item S_IWOTH
0ce1b118 38596Others have write permission.
fc320d37 38597@end table
0ce1b118
CV
38598
38599@noindent
fc320d37 38600Other bits are silently ignored.
0ce1b118 38601
0ce1b118 38602
fc320d37
SL
38603@item Return value:
38604@code{open} returns the new file descriptor or -1 if an error
38605occurred.
0ce1b118 38606
fc320d37 38607@item Errors:
0ce1b118
CV
38608
38609@table @code
b383017d 38610@item EEXIST
fc320d37 38611@var{pathname} already exists and @code{O_CREAT} and @code{O_EXCL} were used.
0ce1b118 38612
b383017d 38613@item EISDIR
fc320d37 38614@var{pathname} refers to a directory.
0ce1b118 38615
b383017d 38616@item EACCES
0ce1b118
CV
38617The requested access is not allowed.
38618
38619@item ENAMETOOLONG
fc320d37 38620@var{pathname} was too long.
0ce1b118 38621
b383017d 38622@item ENOENT
fc320d37 38623A directory component in @var{pathname} does not exist.
0ce1b118 38624
b383017d 38625@item ENODEV
fc320d37 38626@var{pathname} refers to a device, pipe, named pipe or socket.
0ce1b118 38627
b383017d 38628@item EROFS
fc320d37 38629@var{pathname} refers to a file on a read-only filesystem and
0ce1b118
CV
38630write access was requested.
38631
b383017d 38632@item EFAULT
fc320d37 38633@var{pathname} is an invalid pointer value.
0ce1b118 38634
b383017d 38635@item ENOSPC
0ce1b118
CV
38636No space on device to create the file.
38637
b383017d 38638@item EMFILE
0ce1b118
CV
38639The process already has the maximum number of files open.
38640
b383017d 38641@item ENFILE
0ce1b118
CV
38642The limit on the total number of files open on the system
38643has been reached.
38644
b383017d 38645@item EINTR
0ce1b118
CV
38646The call was interrupted by the user.
38647@end table
38648
fc320d37
SL
38649@end table
38650
0ce1b118
CV
38651@node close
38652@unnumberedsubsubsec close
38653@cindex close, file-i/o system call
38654
fc320d37
SL
38655@table @asis
38656@item Synopsis:
0ce1b118 38657@smallexample
0ce1b118 38658int close(int fd);
fc320d37 38659@end smallexample
0ce1b118 38660
fc320d37
SL
38661@item Request:
38662@samp{Fclose,@var{fd}}
0ce1b118 38663
fc320d37
SL
38664@item Return value:
38665@code{close} returns zero on success, or -1 if an error occurred.
0ce1b118 38666
fc320d37 38667@item Errors:
0ce1b118
CV
38668
38669@table @code
b383017d 38670@item EBADF
fc320d37 38671@var{fd} isn't a valid open file descriptor.
0ce1b118 38672
b383017d 38673@item EINTR
0ce1b118
CV
38674The call was interrupted by the user.
38675@end table
38676
fc320d37
SL
38677@end table
38678
0ce1b118
CV
38679@node read
38680@unnumberedsubsubsec read
38681@cindex read, file-i/o system call
38682
fc320d37
SL
38683@table @asis
38684@item Synopsis:
0ce1b118 38685@smallexample
0ce1b118 38686int read(int fd, void *buf, unsigned int count);
fc320d37 38687@end smallexample
0ce1b118 38688
fc320d37
SL
38689@item Request:
38690@samp{Fread,@var{fd},@var{bufptr},@var{count}}
0ce1b118 38691
fc320d37 38692@item Return value:
0ce1b118
CV
38693On success, the number of bytes read is returned.
38694Zero indicates end of file. If count is zero, read
b383017d 38695returns zero as well. On error, -1 is returned.
0ce1b118 38696
fc320d37 38697@item Errors:
0ce1b118
CV
38698
38699@table @code
b383017d 38700@item EBADF
fc320d37 38701@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
38702reading.
38703
b383017d 38704@item EFAULT
fc320d37 38705@var{bufptr} is an invalid pointer value.
0ce1b118 38706
b383017d 38707@item EINTR
0ce1b118
CV
38708The call was interrupted by the user.
38709@end table
38710
fc320d37
SL
38711@end table
38712
0ce1b118
CV
38713@node write
38714@unnumberedsubsubsec write
38715@cindex write, file-i/o system call
38716
fc320d37
SL
38717@table @asis
38718@item Synopsis:
0ce1b118 38719@smallexample
0ce1b118 38720int write(int fd, const void *buf, unsigned int count);
fc320d37 38721@end smallexample
0ce1b118 38722
fc320d37
SL
38723@item Request:
38724@samp{Fwrite,@var{fd},@var{bufptr},@var{count}}
0ce1b118 38725
fc320d37 38726@item Return value:
0ce1b118
CV
38727On success, the number of bytes written are returned.
38728Zero indicates nothing was written. On error, -1
38729is returned.
38730
fc320d37 38731@item Errors:
0ce1b118
CV
38732
38733@table @code
b383017d 38734@item EBADF
fc320d37 38735@var{fd} is not a valid file descriptor or is not open for
0ce1b118
CV
38736writing.
38737
b383017d 38738@item EFAULT
fc320d37 38739@var{bufptr} is an invalid pointer value.
0ce1b118 38740
b383017d 38741@item EFBIG
0ce1b118 38742An attempt was made to write a file that exceeds the
db2e3e2e 38743host-specific maximum file size allowed.
0ce1b118 38744
b383017d 38745@item ENOSPC
0ce1b118
CV
38746No space on device to write the data.
38747
b383017d 38748@item EINTR
0ce1b118
CV
38749The call was interrupted by the user.
38750@end table
38751
fc320d37
SL
38752@end table
38753
0ce1b118
CV
38754@node lseek
38755@unnumberedsubsubsec lseek
38756@cindex lseek, file-i/o system call
38757
fc320d37
SL
38758@table @asis
38759@item Synopsis:
0ce1b118 38760@smallexample
0ce1b118 38761long lseek (int fd, long offset, int flag);
0ce1b118
CV
38762@end smallexample
38763
fc320d37
SL
38764@item Request:
38765@samp{Flseek,@var{fd},@var{offset},@var{flag}}
38766
38767@var{flag} is one of:
0ce1b118
CV
38768
38769@table @code
b383017d 38770@item SEEK_SET
fc320d37 38771The offset is set to @var{offset} bytes.
0ce1b118 38772
b383017d 38773@item SEEK_CUR
fc320d37 38774The offset is set to its current location plus @var{offset}
0ce1b118
CV
38775bytes.
38776
b383017d 38777@item SEEK_END
fc320d37 38778The offset is set to the size of the file plus @var{offset}
0ce1b118
CV
38779bytes.
38780@end table
38781
fc320d37 38782@item Return value:
0ce1b118
CV
38783On success, the resulting unsigned offset in bytes from
38784the beginning of the file is returned. Otherwise, a
38785value of -1 is returned.
38786
fc320d37 38787@item Errors:
0ce1b118
CV
38788
38789@table @code
b383017d 38790@item EBADF
fc320d37 38791@var{fd} is not a valid open file descriptor.
0ce1b118 38792
b383017d 38793@item ESPIPE
fc320d37 38794@var{fd} is associated with the @value{GDBN} console.
0ce1b118 38795
b383017d 38796@item EINVAL
fc320d37 38797@var{flag} is not a proper value.
0ce1b118 38798
b383017d 38799@item EINTR
0ce1b118
CV
38800The call was interrupted by the user.
38801@end table
38802
fc320d37
SL
38803@end table
38804
0ce1b118
CV
38805@node rename
38806@unnumberedsubsubsec rename
38807@cindex rename, file-i/o system call
38808
fc320d37
SL
38809@table @asis
38810@item Synopsis:
0ce1b118 38811@smallexample
0ce1b118 38812int rename(const char *oldpath, const char *newpath);
fc320d37 38813@end smallexample
0ce1b118 38814
fc320d37
SL
38815@item Request:
38816@samp{Frename,@var{oldpathptr}/@var{len},@var{newpathptr}/@var{len}}
0ce1b118 38817
fc320d37 38818@item Return value:
0ce1b118
CV
38819On success, zero is returned. On error, -1 is returned.
38820
fc320d37 38821@item Errors:
0ce1b118
CV
38822
38823@table @code
b383017d 38824@item EISDIR
fc320d37 38825@var{newpath} is an existing directory, but @var{oldpath} is not a
0ce1b118
CV
38826directory.
38827
b383017d 38828@item EEXIST
fc320d37 38829@var{newpath} is a non-empty directory.
0ce1b118 38830
b383017d 38831@item EBUSY
fc320d37 38832@var{oldpath} or @var{newpath} is a directory that is in use by some
0ce1b118
CV
38833process.
38834
b383017d 38835@item EINVAL
0ce1b118
CV
38836An attempt was made to make a directory a subdirectory
38837of itself.
38838
b383017d 38839@item ENOTDIR
fc320d37
SL
38840A component used as a directory in @var{oldpath} or new
38841path is not a directory. Or @var{oldpath} is a directory
38842and @var{newpath} exists but is not a directory.
0ce1b118 38843
b383017d 38844@item EFAULT
fc320d37 38845@var{oldpathptr} or @var{newpathptr} are invalid pointer values.
0ce1b118 38846
b383017d 38847@item EACCES
0ce1b118
CV
38848No access to the file or the path of the file.
38849
38850@item ENAMETOOLONG
b383017d 38851
fc320d37 38852@var{oldpath} or @var{newpath} was too long.
0ce1b118 38853
b383017d 38854@item ENOENT
fc320d37 38855A directory component in @var{oldpath} or @var{newpath} does not exist.
0ce1b118 38856
b383017d 38857@item EROFS
0ce1b118
CV
38858The file is on a read-only filesystem.
38859
b383017d 38860@item ENOSPC
0ce1b118
CV
38861The device containing the file has no room for the new
38862directory entry.
38863
b383017d 38864@item EINTR
0ce1b118
CV
38865The call was interrupted by the user.
38866@end table
38867
fc320d37
SL
38868@end table
38869
0ce1b118
CV
38870@node unlink
38871@unnumberedsubsubsec unlink
38872@cindex unlink, file-i/o system call
38873
fc320d37
SL
38874@table @asis
38875@item Synopsis:
0ce1b118 38876@smallexample
0ce1b118 38877int unlink(const char *pathname);
fc320d37 38878@end smallexample
0ce1b118 38879
fc320d37
SL
38880@item Request:
38881@samp{Funlink,@var{pathnameptr}/@var{len}}
0ce1b118 38882
fc320d37 38883@item Return value:
0ce1b118
CV
38884On success, zero is returned. On error, -1 is returned.
38885
fc320d37 38886@item Errors:
0ce1b118
CV
38887
38888@table @code
b383017d 38889@item EACCES
0ce1b118
CV
38890No access to the file or the path of the file.
38891
b383017d 38892@item EPERM
0ce1b118
CV
38893The system does not allow unlinking of directories.
38894
b383017d 38895@item EBUSY
fc320d37 38896The file @var{pathname} cannot be unlinked because it's
0ce1b118
CV
38897being used by another process.
38898
b383017d 38899@item EFAULT
fc320d37 38900@var{pathnameptr} is an invalid pointer value.
0ce1b118
CV
38901
38902@item ENAMETOOLONG
fc320d37 38903@var{pathname} was too long.
0ce1b118 38904
b383017d 38905@item ENOENT
fc320d37 38906A directory component in @var{pathname} does not exist.
0ce1b118 38907
b383017d 38908@item ENOTDIR
0ce1b118
CV
38909A component of the path is not a directory.
38910
b383017d 38911@item EROFS
0ce1b118
CV
38912The file is on a read-only filesystem.
38913
b383017d 38914@item EINTR
0ce1b118
CV
38915The call was interrupted by the user.
38916@end table
38917
fc320d37
SL
38918@end table
38919
0ce1b118
CV
38920@node stat/fstat
38921@unnumberedsubsubsec stat/fstat
38922@cindex fstat, file-i/o system call
38923@cindex stat, file-i/o system call
38924
fc320d37
SL
38925@table @asis
38926@item Synopsis:
0ce1b118 38927@smallexample
0ce1b118
CV
38928int stat(const char *pathname, struct stat *buf);
38929int fstat(int fd, struct stat *buf);
fc320d37 38930@end smallexample
0ce1b118 38931
fc320d37
SL
38932@item Request:
38933@samp{Fstat,@var{pathnameptr}/@var{len},@var{bufptr}}@*
38934@samp{Ffstat,@var{fd},@var{bufptr}}
0ce1b118 38935
fc320d37 38936@item Return value:
0ce1b118
CV
38937On success, zero is returned. On error, -1 is returned.
38938
fc320d37 38939@item Errors:
0ce1b118
CV
38940
38941@table @code
b383017d 38942@item EBADF
fc320d37 38943@var{fd} is not a valid open file.
0ce1b118 38944
b383017d 38945@item ENOENT
fc320d37 38946A directory component in @var{pathname} does not exist or the
0ce1b118
CV
38947path is an empty string.
38948
b383017d 38949@item ENOTDIR
0ce1b118
CV
38950A component of the path is not a directory.
38951
b383017d 38952@item EFAULT
fc320d37 38953@var{pathnameptr} is an invalid pointer value.
0ce1b118 38954
b383017d 38955@item EACCES
0ce1b118
CV
38956No access to the file or the path of the file.
38957
38958@item ENAMETOOLONG
fc320d37 38959@var{pathname} was too long.
0ce1b118 38960
b383017d 38961@item EINTR
0ce1b118
CV
38962The call was interrupted by the user.
38963@end table
38964
fc320d37
SL
38965@end table
38966
0ce1b118
CV
38967@node gettimeofday
38968@unnumberedsubsubsec gettimeofday
38969@cindex gettimeofday, file-i/o system call
38970
fc320d37
SL
38971@table @asis
38972@item Synopsis:
0ce1b118 38973@smallexample
0ce1b118 38974int gettimeofday(struct timeval *tv, void *tz);
fc320d37 38975@end smallexample
0ce1b118 38976
fc320d37
SL
38977@item Request:
38978@samp{Fgettimeofday,@var{tvptr},@var{tzptr}}
0ce1b118 38979
fc320d37 38980@item Return value:
0ce1b118
CV
38981On success, 0 is returned, -1 otherwise.
38982
fc320d37 38983@item Errors:
0ce1b118
CV
38984
38985@table @code
b383017d 38986@item EINVAL
fc320d37 38987@var{tz} is a non-NULL pointer.
0ce1b118 38988
b383017d 38989@item EFAULT
fc320d37
SL
38990@var{tvptr} and/or @var{tzptr} is an invalid pointer value.
38991@end table
38992
0ce1b118
CV
38993@end table
38994
38995@node isatty
38996@unnumberedsubsubsec isatty
38997@cindex isatty, file-i/o system call
38998
fc320d37
SL
38999@table @asis
39000@item Synopsis:
0ce1b118 39001@smallexample
0ce1b118 39002int isatty(int fd);
fc320d37 39003@end smallexample
0ce1b118 39004
fc320d37
SL
39005@item Request:
39006@samp{Fisatty,@var{fd}}
0ce1b118 39007
fc320d37
SL
39008@item Return value:
39009Returns 1 if @var{fd} refers to the @value{GDBN} console, 0 otherwise.
0ce1b118 39010
fc320d37 39011@item Errors:
0ce1b118
CV
39012
39013@table @code
b383017d 39014@item EINTR
0ce1b118
CV
39015The call was interrupted by the user.
39016@end table
39017
fc320d37
SL
39018@end table
39019
39020Note that the @code{isatty} call is treated as a special case: it returns
390211 to the target if the file descriptor is attached
39022to the @value{GDBN} console, 0 otherwise. Implementing through system calls
39023would require implementing @code{ioctl} and would be more complex than
39024needed.
39025
39026
0ce1b118
CV
39027@node system
39028@unnumberedsubsubsec system
39029@cindex system, file-i/o system call
39030
fc320d37
SL
39031@table @asis
39032@item Synopsis:
0ce1b118 39033@smallexample
0ce1b118 39034int system(const char *command);
fc320d37 39035@end smallexample
0ce1b118 39036
fc320d37
SL
39037@item Request:
39038@samp{Fsystem,@var{commandptr}/@var{len}}
0ce1b118 39039
fc320d37 39040@item Return value:
5600ea19
NS
39041If @var{len} is zero, the return value indicates whether a shell is
39042available. A zero return value indicates a shell is not available.
39043For non-zero @var{len}, the value returned is -1 on error and the
39044return status of the command otherwise. Only the exit status of the
39045command is returned, which is extracted from the host's @code{system}
39046return value by calling @code{WEXITSTATUS(retval)}. In case
39047@file{/bin/sh} could not be executed, 127 is returned.
0ce1b118 39048
fc320d37 39049@item Errors:
0ce1b118
CV
39050
39051@table @code
b383017d 39052@item EINTR
0ce1b118
CV
39053The call was interrupted by the user.
39054@end table
39055
fc320d37
SL
39056@end table
39057
39058@value{GDBN} takes over the full task of calling the necessary host calls
39059to perform the @code{system} call. The return value of @code{system} on
39060the host is simplified before it's returned
39061to the target. Any termination signal information from the child process
39062is discarded, and the return value consists
39063entirely of the exit status of the called command.
39064
39065Due to security concerns, the @code{system} call is by default refused
39066by @value{GDBN}. The user has to allow this call explicitly with the
39067@code{set remote system-call-allowed 1} command.
39068
39069@table @code
39070@item set remote system-call-allowed
39071@kindex set remote system-call-allowed
39072Control whether to allow the @code{system} calls in the File I/O
39073protocol for the remote target. The default is zero (disabled).
39074
39075@item show remote system-call-allowed
39076@kindex show remote system-call-allowed
39077Show whether the @code{system} calls are allowed in the File I/O
39078protocol.
39079@end table
39080
db2e3e2e
BW
39081@node Protocol-specific Representation of Datatypes
39082@subsection Protocol-specific Representation of Datatypes
39083@cindex protocol-specific representation of datatypes, in file-i/o protocol
0ce1b118
CV
39084
39085@menu
79a6e687
BW
39086* Integral Datatypes::
39087* Pointer Values::
39088* Memory Transfer::
0ce1b118
CV
39089* struct stat::
39090* struct timeval::
39091@end menu
39092
79a6e687
BW
39093@node Integral Datatypes
39094@unnumberedsubsubsec Integral Datatypes
0ce1b118
CV
39095@cindex integral datatypes, in file-i/o protocol
39096
fc320d37
SL
39097The integral datatypes used in the system calls are @code{int},
39098@code{unsigned int}, @code{long}, @code{unsigned long},
39099@code{mode_t}, and @code{time_t}.
0ce1b118 39100
fc320d37 39101@code{int}, @code{unsigned int}, @code{mode_t} and @code{time_t} are
0ce1b118
CV
39102implemented as 32 bit values in this protocol.
39103
fc320d37 39104@code{long} and @code{unsigned long} are implemented as 64 bit types.
b383017d 39105
0ce1b118
CV
39106@xref{Limits}, for corresponding MIN and MAX values (similar to those
39107in @file{limits.h}) to allow range checking on host and target.
39108
39109@code{time_t} datatypes are defined as seconds since the Epoch.
39110
39111All integral datatypes transferred as part of a memory read or write of a
39112structured datatype e.g.@: a @code{struct stat} have to be given in big endian
39113byte order.
39114
79a6e687
BW
39115@node Pointer Values
39116@unnumberedsubsubsec Pointer Values
0ce1b118
CV
39117@cindex pointer values, in file-i/o protocol
39118
39119Pointers to target data are transmitted as they are. An exception
39120is made for pointers to buffers for which the length isn't
39121transmitted as part of the function call, namely strings. Strings
39122are transmitted as a pointer/length pair, both as hex values, e.g.@:
39123
39124@smallexample
39125@code{1aaf/12}
39126@end smallexample
39127
39128@noindent
39129which is a pointer to data of length 18 bytes at position 0x1aaf.
39130The length is defined as the full string length in bytes, including
fc320d37
SL
39131the trailing null byte. For example, the string @code{"hello world"}
39132at address 0x123456 is transmitted as
0ce1b118
CV
39133
39134@smallexample
fc320d37 39135@code{123456/d}
0ce1b118
CV
39136@end smallexample
39137
79a6e687
BW
39138@node Memory Transfer
39139@unnumberedsubsubsec Memory Transfer
fc320d37
SL
39140@cindex memory transfer, in file-i/o protocol
39141
39142Structured data which is transferred using a memory read or write (for
db2e3e2e 39143example, a @code{struct stat}) is expected to be in a protocol-specific format
fc320d37
SL
39144with all scalar multibyte datatypes being big endian. Translation to
39145this representation needs to be done both by the target before the @code{F}
39146packet is sent, and by @value{GDBN} before
39147it transfers memory to the target. Transferred pointers to structured
39148data should point to the already-coerced data at any time.
0ce1b118 39149
0ce1b118
CV
39150
39151@node struct stat
39152@unnumberedsubsubsec struct stat
39153@cindex struct stat, in file-i/o protocol
39154
fc320d37
SL
39155The buffer of type @code{struct stat} used by the target and @value{GDBN}
39156is defined as follows:
0ce1b118
CV
39157
39158@smallexample
39159struct stat @{
39160 unsigned int st_dev; /* device */
39161 unsigned int st_ino; /* inode */
39162 mode_t st_mode; /* protection */
39163 unsigned int st_nlink; /* number of hard links */
39164 unsigned int st_uid; /* user ID of owner */
39165 unsigned int st_gid; /* group ID of owner */
39166 unsigned int st_rdev; /* device type (if inode device) */
39167 unsigned long st_size; /* total size, in bytes */
39168 unsigned long st_blksize; /* blocksize for filesystem I/O */
39169 unsigned long st_blocks; /* number of blocks allocated */
39170 time_t st_atime; /* time of last access */
39171 time_t st_mtime; /* time of last modification */
39172 time_t st_ctime; /* time of last change */
39173@};
39174@end smallexample
39175
fc320d37 39176The integral datatypes conform to the definitions given in the
79a6e687 39177appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
39178structure is of size 64 bytes.
39179
39180The values of several fields have a restricted meaning and/or
39181range of values.
39182
fc320d37 39183@table @code
0ce1b118 39184
fc320d37
SL
39185@item st_dev
39186A value of 0 represents a file, 1 the console.
0ce1b118 39187
fc320d37
SL
39188@item st_ino
39189No valid meaning for the target. Transmitted unchanged.
0ce1b118 39190
fc320d37
SL
39191@item st_mode
39192Valid mode bits are described in @ref{Constants}. Any other
39193bits have currently no meaning for the target.
0ce1b118 39194
fc320d37
SL
39195@item st_uid
39196@itemx st_gid
39197@itemx st_rdev
39198No valid meaning for the target. Transmitted unchanged.
0ce1b118 39199
fc320d37
SL
39200@item st_atime
39201@itemx st_mtime
39202@itemx st_ctime
39203These values have a host and file system dependent
39204accuracy. Especially on Windows hosts, the file system may not
39205support exact timing values.
39206@end table
0ce1b118 39207
fc320d37
SL
39208The target gets a @code{struct stat} of the above representation and is
39209responsible for coercing it to the target representation before
0ce1b118
CV
39210continuing.
39211
fc320d37
SL
39212Note that due to size differences between the host, target, and protocol
39213representations of @code{struct stat} members, these members could eventually
0ce1b118
CV
39214get truncated on the target.
39215
39216@node struct timeval
39217@unnumberedsubsubsec struct timeval
39218@cindex struct timeval, in file-i/o protocol
39219
fc320d37 39220The buffer of type @code{struct timeval} used by the File-I/O protocol
0ce1b118
CV
39221is defined as follows:
39222
39223@smallexample
b383017d 39224struct timeval @{
0ce1b118
CV
39225 time_t tv_sec; /* second */
39226 long tv_usec; /* microsecond */
39227@};
39228@end smallexample
39229
fc320d37 39230The integral datatypes conform to the definitions given in the
79a6e687 39231appropriate section (see @ref{Integral Datatypes}, for details) so this
0ce1b118
CV
39232structure is of size 8 bytes.
39233
39234@node Constants
39235@subsection Constants
39236@cindex constants, in file-i/o protocol
39237
39238The following values are used for the constants inside of the
fc320d37 39239protocol. @value{GDBN} and target are responsible for translating these
0ce1b118
CV
39240values before and after the call as needed.
39241
39242@menu
79a6e687
BW
39243* Open Flags::
39244* mode_t Values::
39245* Errno Values::
39246* Lseek Flags::
0ce1b118
CV
39247* Limits::
39248@end menu
39249
79a6e687
BW
39250@node Open Flags
39251@unnumberedsubsubsec Open Flags
0ce1b118
CV
39252@cindex open flags, in file-i/o protocol
39253
39254All values are given in hexadecimal representation.
39255
39256@smallexample
39257 O_RDONLY 0x0
39258 O_WRONLY 0x1
39259 O_RDWR 0x2
39260 O_APPEND 0x8
39261 O_CREAT 0x200
39262 O_TRUNC 0x400
39263 O_EXCL 0x800
39264@end smallexample
39265
79a6e687
BW
39266@node mode_t Values
39267@unnumberedsubsubsec mode_t Values
0ce1b118
CV
39268@cindex mode_t values, in file-i/o protocol
39269
39270All values are given in octal representation.
39271
39272@smallexample
39273 S_IFREG 0100000
39274 S_IFDIR 040000
39275 S_IRUSR 0400
39276 S_IWUSR 0200
39277 S_IXUSR 0100
39278 S_IRGRP 040
39279 S_IWGRP 020
39280 S_IXGRP 010
39281 S_IROTH 04
39282 S_IWOTH 02
39283 S_IXOTH 01
39284@end smallexample
39285
79a6e687
BW
39286@node Errno Values
39287@unnumberedsubsubsec Errno Values
0ce1b118
CV
39288@cindex errno values, in file-i/o protocol
39289
39290All values are given in decimal representation.
39291
39292@smallexample
39293 EPERM 1
39294 ENOENT 2
39295 EINTR 4
39296 EBADF 9
39297 EACCES 13
39298 EFAULT 14
39299 EBUSY 16
39300 EEXIST 17
39301 ENODEV 19
39302 ENOTDIR 20
39303 EISDIR 21
39304 EINVAL 22
39305 ENFILE 23
39306 EMFILE 24
39307 EFBIG 27
39308 ENOSPC 28
39309 ESPIPE 29
39310 EROFS 30
39311 ENAMETOOLONG 91
39312 EUNKNOWN 9999
39313@end smallexample
39314
fc320d37 39315 @code{EUNKNOWN} is used as a fallback error value if a host system returns
0ce1b118
CV
39316 any error value not in the list of supported error numbers.
39317
79a6e687
BW
39318@node Lseek Flags
39319@unnumberedsubsubsec Lseek Flags
0ce1b118
CV
39320@cindex lseek flags, in file-i/o protocol
39321
39322@smallexample
39323 SEEK_SET 0
39324 SEEK_CUR 1
39325 SEEK_END 2
39326@end smallexample
39327
39328@node Limits
39329@unnumberedsubsubsec Limits
39330@cindex limits, in file-i/o protocol
39331
39332All values are given in decimal representation.
39333
39334@smallexample
39335 INT_MIN -2147483648
39336 INT_MAX 2147483647
39337 UINT_MAX 4294967295
39338 LONG_MIN -9223372036854775808
39339 LONG_MAX 9223372036854775807
39340 ULONG_MAX 18446744073709551615
39341@end smallexample
39342
39343@node File-I/O Examples
39344@subsection File-I/O Examples
39345@cindex file-i/o examples
39346
39347Example sequence of a write call, file descriptor 3, buffer is at target
39348address 0x1234, 6 bytes should be written:
39349
39350@smallexample
39351<- @code{Fwrite,3,1234,6}
39352@emph{request memory read from target}
39353-> @code{m1234,6}
39354<- XXXXXX
39355@emph{return "6 bytes written"}
39356-> @code{F6}
39357@end smallexample
39358
39359Example sequence of a read call, file descriptor 3, buffer is at target
39360address 0x1234, 6 bytes should be read:
39361
39362@smallexample
39363<- @code{Fread,3,1234,6}
39364@emph{request memory write to target}
39365-> @code{X1234,6:XXXXXX}
39366@emph{return "6 bytes read"}
39367-> @code{F6}
39368@end smallexample
39369
39370Example sequence of a read call, call fails on the host due to invalid
fc320d37 39371file descriptor (@code{EBADF}):
0ce1b118
CV
39372
39373@smallexample
39374<- @code{Fread,3,1234,6}
39375-> @code{F-1,9}
39376@end smallexample
39377
c8aa23ab 39378Example sequence of a read call, user presses @kbd{Ctrl-c} before syscall on
0ce1b118
CV
39379host is called:
39380
39381@smallexample
39382<- @code{Fread,3,1234,6}
39383-> @code{F-1,4,C}
39384<- @code{T02}
39385@end smallexample
39386
c8aa23ab 39387Example sequence of a read call, user presses @kbd{Ctrl-c} after syscall on
0ce1b118
CV
39388host is called:
39389
39390@smallexample
39391<- @code{Fread,3,1234,6}
39392-> @code{X1234,6:XXXXXX}
39393<- @code{T02}
39394@end smallexample
39395
cfa9d6d9
DJ
39396@node Library List Format
39397@section Library List Format
39398@cindex library list format, remote protocol
39399
39400On some platforms, a dynamic loader (e.g.@: @file{ld.so}) runs in the
39401same process as your application to manage libraries. In this case,
39402@value{GDBN} can use the loader's symbol table and normal memory
39403operations to maintain a list of shared libraries. On other
39404platforms, the operating system manages loaded libraries.
39405@value{GDBN} can not retrieve the list of currently loaded libraries
39406through memory operations, so it uses the @samp{qXfer:libraries:read}
39407packet (@pxref{qXfer library list read}) instead. The remote stub
39408queries the target's operating system and reports which libraries
39409are loaded.
39410
39411The @samp{qXfer:libraries:read} packet returns an XML document which
39412lists loaded libraries and their offsets. Each library has an
1fddbabb
PA
39413associated name and one or more segment or section base addresses,
39414which report where the library was loaded in memory.
39415
39416For the common case of libraries that are fully linked binaries, the
39417library should have a list of segments. If the target supports
39418dynamic linking of a relocatable object file, its library XML element
39419should instead include a list of allocated sections. The segment or
39420section bases are start addresses, not relocation offsets; they do not
39421depend on the library's link-time base addresses.
cfa9d6d9 39422
9cceb671
DJ
39423@value{GDBN} must be linked with the Expat library to support XML
39424library lists. @xref{Expat}.
39425
cfa9d6d9
DJ
39426A simple memory map, with one loaded library relocated by a single
39427offset, looks like this:
39428
39429@smallexample
39430<library-list>
39431 <library name="/lib/libc.so.6">
39432 <segment address="0x10000000"/>
39433 </library>
39434</library-list>
39435@end smallexample
39436
1fddbabb
PA
39437Another simple memory map, with one loaded library with three
39438allocated sections (.text, .data, .bss), looks like this:
39439
39440@smallexample
39441<library-list>
39442 <library name="sharedlib.o">
39443 <section address="0x10000000"/>
39444 <section address="0x20000000"/>
39445 <section address="0x30000000"/>
39446 </library>
39447</library-list>
39448@end smallexample
39449
cfa9d6d9
DJ
39450The format of a library list is described by this DTD:
39451
39452@smallexample
39453<!-- library-list: Root element with versioning -->
39454<!ELEMENT library-list (library)*>
39455<!ATTLIST library-list version CDATA #FIXED "1.0">
1fddbabb 39456<!ELEMENT library (segment*, section*)>
cfa9d6d9
DJ
39457<!ATTLIST library name CDATA #REQUIRED>
39458<!ELEMENT segment EMPTY>
39459<!ATTLIST segment address CDATA #REQUIRED>
1fddbabb
PA
39460<!ELEMENT section EMPTY>
39461<!ATTLIST section address CDATA #REQUIRED>
cfa9d6d9
DJ
39462@end smallexample
39463
1fddbabb
PA
39464In addition, segments and section descriptors cannot be mixed within a
39465single library element, and you must supply at least one segment or
39466section for each library.
39467
2268b414
JK
39468@node Library List Format for SVR4 Targets
39469@section Library List Format for SVR4 Targets
39470@cindex library list format, remote protocol
39471
39472On SVR4 platforms @value{GDBN} can use the symbol table of a dynamic loader
39473(e.g.@: @file{ld.so}) and normal memory operations to maintain a list of
39474shared libraries. Still a special library list provided by this packet is
39475more efficient for the @value{GDBN} remote protocol.
39476
39477The @samp{qXfer:libraries-svr4:read} packet returns an XML document which lists
39478loaded libraries and their SVR4 linker parameters. For each library on SVR4
39479target, the following parameters are reported:
39480
39481@itemize @minus
39482@item
39483@code{name}, the absolute file name from the @code{l_name} field of
39484@code{struct link_map}.
39485@item
39486@code{lm} with address of @code{struct link_map} used for TLS
39487(Thread Local Storage) access.
39488@item
39489@code{l_addr}, the displacement as read from the field @code{l_addr} of
39490@code{struct link_map}. For prelinked libraries this is not an absolute
39491memory address. It is a displacement of absolute memory address against
39492address the file was prelinked to during the library load.
39493@item
39494@code{l_ld}, which is memory address of the @code{PT_DYNAMIC} segment
39495@end itemize
39496
39497Additionally the single @code{main-lm} attribute specifies address of
39498@code{struct link_map} used for the main executable. This parameter is used
39499for TLS access and its presence is optional.
39500
39501@value{GDBN} must be linked with the Expat library to support XML
39502SVR4 library lists. @xref{Expat}.
39503
39504A simple memory map, with two loaded libraries (which do not use prelink),
39505looks like this:
39506
39507@smallexample
39508<library-list-svr4 version="1.0" main-lm="0xe4f8f8">
39509 <library name="/lib/ld-linux.so.2" lm="0xe4f51c" l_addr="0xe2d000"
39510 l_ld="0xe4eefc"/>
39511 <library name="/lib/libc.so.6" lm="0xe4fbe8" l_addr="0x154000"
39512 l_ld="0x152350"/>
39513</library-list-svr>
39514@end smallexample
39515
39516The format of an SVR4 library list is described by this DTD:
39517
39518@smallexample
39519<!-- library-list-svr4: Root element with versioning -->
39520<!ELEMENT library-list-svr4 (library)*>
39521<!ATTLIST library-list-svr4 version CDATA #FIXED "1.0">
39522<!ATTLIST library-list-svr4 main-lm CDATA #IMPLIED>
39523<!ELEMENT library EMPTY>
39524<!ATTLIST library name CDATA #REQUIRED>
39525<!ATTLIST library lm CDATA #REQUIRED>
39526<!ATTLIST library l_addr CDATA #REQUIRED>
39527<!ATTLIST library l_ld CDATA #REQUIRED>
39528@end smallexample
39529
79a6e687
BW
39530@node Memory Map Format
39531@section Memory Map Format
68437a39
DJ
39532@cindex memory map format
39533
39534To be able to write into flash memory, @value{GDBN} needs to obtain a
39535memory map from the target. This section describes the format of the
39536memory map.
39537
39538The memory map is obtained using the @samp{qXfer:memory-map:read}
39539(@pxref{qXfer memory map read}) packet and is an XML document that
9cceb671
DJ
39540lists memory regions.
39541
39542@value{GDBN} must be linked with the Expat library to support XML
39543memory maps. @xref{Expat}.
39544
39545The top-level structure of the document is shown below:
68437a39
DJ
39546
39547@smallexample
39548<?xml version="1.0"?>
39549<!DOCTYPE memory-map
39550 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
39551 "http://sourceware.org/gdb/gdb-memory-map.dtd">
39552<memory-map>
39553 region...
39554</memory-map>
39555@end smallexample
39556
39557Each region can be either:
39558
39559@itemize
39560
39561@item
39562A region of RAM starting at @var{addr} and extending for @var{length}
39563bytes from there:
39564
39565@smallexample
39566<memory type="ram" start="@var{addr}" length="@var{length}"/>
39567@end smallexample
39568
39569
39570@item
39571A region of read-only memory:
39572
39573@smallexample
39574<memory type="rom" start="@var{addr}" length="@var{length}"/>
39575@end smallexample
39576
39577
39578@item
39579A region of flash memory, with erasure blocks @var{blocksize}
39580bytes in length:
39581
39582@smallexample
39583<memory type="flash" start="@var{addr}" length="@var{length}">
39584 <property name="blocksize">@var{blocksize}</property>
39585</memory>
39586@end smallexample
39587
39588@end itemize
39589
39590Regions must not overlap. @value{GDBN} assumes that areas of memory not covered
39591by the memory map are RAM, and uses the ordinary @samp{M} and @samp{X}
39592packets to write to addresses in such ranges.
39593
39594The formal DTD for memory map format is given below:
39595
39596@smallexample
39597<!-- ................................................... -->
39598<!-- Memory Map XML DTD ................................ -->
39599<!-- File: memory-map.dtd .............................. -->
39600<!-- .................................... .............. -->
39601<!-- memory-map.dtd -->
39602<!-- memory-map: Root element with versioning -->
39603<!ELEMENT memory-map (memory | property)>
39604<!ATTLIST memory-map version CDATA #FIXED "1.0.0">
39605<!ELEMENT memory (property)>
39606<!-- memory: Specifies a memory region,
39607 and its type, or device. -->
39608<!ATTLIST memory type CDATA #REQUIRED
39609 start CDATA #REQUIRED
39610 length CDATA #REQUIRED
39611 device CDATA #IMPLIED>
39612<!-- property: Generic attribute tag -->
39613<!ELEMENT property (#PCDATA | property)*>
39614<!ATTLIST property name CDATA #REQUIRED>
39615@end smallexample
39616
dc146f7c
VP
39617@node Thread List Format
39618@section Thread List Format
39619@cindex thread list format
39620
39621To efficiently update the list of threads and their attributes,
39622@value{GDBN} issues the @samp{qXfer:threads:read} packet
39623(@pxref{qXfer threads read}) and obtains the XML document with
39624the following structure:
39625
39626@smallexample
39627<?xml version="1.0"?>
39628<threads>
39629 <thread id="id" core="0">
39630 ... description ...
39631 </thread>
39632</threads>
39633@end smallexample
39634
39635Each @samp{thread} element must have the @samp{id} attribute that
39636identifies the thread (@pxref{thread-id syntax}). The
39637@samp{core} attribute, if present, specifies which processor core
39638the thread was last executing on. The content of the of @samp{thread}
39639element is interpreted as human-readable auxilliary information.
39640
b3b9301e
PA
39641@node Traceframe Info Format
39642@section Traceframe Info Format
39643@cindex traceframe info format
39644
39645To be able to know which objects in the inferior can be examined when
39646inspecting a tracepoint hit, @value{GDBN} needs to obtain the list of
39647memory ranges, registers and trace state variables that have been
39648collected in a traceframe.
39649
39650This list is obtained using the @samp{qXfer:traceframe-info:read}
39651(@pxref{qXfer traceframe info read}) packet and is an XML document.
39652
39653@value{GDBN} must be linked with the Expat library to support XML
39654traceframe info discovery. @xref{Expat}.
39655
39656The top-level structure of the document is shown below:
39657
39658@smallexample
39659<?xml version="1.0"?>
39660<!DOCTYPE traceframe-info
39661 PUBLIC "+//IDN gnu.org//DTD GDB Memory Map V1.0//EN"
39662 "http://sourceware.org/gdb/gdb-traceframe-info.dtd">
39663<traceframe-info>
39664 block...
39665</traceframe-info>
39666@end smallexample
39667
39668Each traceframe block can be either:
39669
39670@itemize
39671
39672@item
39673A region of collected memory starting at @var{addr} and extending for
39674@var{length} bytes from there:
39675
39676@smallexample
39677<memory start="@var{addr}" length="@var{length}"/>
39678@end smallexample
39679
39680@end itemize
39681
39682The formal DTD for the traceframe info format is given below:
39683
39684@smallexample
39685<!ELEMENT traceframe-info (memory)* >
39686<!ATTLIST traceframe-info version CDATA #FIXED "1.0">
39687
39688<!ELEMENT memory EMPTY>
39689<!ATTLIST memory start CDATA #REQUIRED
39690 length CDATA #REQUIRED>
39691@end smallexample
39692
f418dd93
DJ
39693@include agentexpr.texi
39694
23181151
DJ
39695@node Target Descriptions
39696@appendix Target Descriptions
39697@cindex target descriptions
39698
23181151
DJ
39699One of the challenges of using @value{GDBN} to debug embedded systems
39700is that there are so many minor variants of each processor
39701architecture in use. It is common practice for vendors to start with
eb17f351 39702a standard processor core --- ARM, PowerPC, or @acronym{MIPS}, for example ---
23181151
DJ
39703and then make changes to adapt it to a particular market niche. Some
39704architectures have hundreds of variants, available from dozens of
39705vendors. This leads to a number of problems:
39706
39707@itemize @bullet
39708@item
39709With so many different customized processors, it is difficult for
39710the @value{GDBN} maintainers to keep up with the changes.
39711@item
39712Since individual variants may have short lifetimes or limited
39713audiences, it may not be worthwhile to carry information about every
39714variant in the @value{GDBN} source tree.
39715@item
39716When @value{GDBN} does support the architecture of the embedded system
39717at hand, the task of finding the correct architecture name to give the
39718@command{set architecture} command can be error-prone.
39719@end itemize
39720
39721To address these problems, the @value{GDBN} remote protocol allows a
39722target system to not only identify itself to @value{GDBN}, but to
39723actually describe its own features. This lets @value{GDBN} support
39724processor variants it has never seen before --- to the extent that the
39725descriptions are accurate, and that @value{GDBN} understands them.
39726
9cceb671
DJ
39727@value{GDBN} must be linked with the Expat library to support XML
39728target descriptions. @xref{Expat}.
123dc839 39729
23181151
DJ
39730@menu
39731* Retrieving Descriptions:: How descriptions are fetched from a target.
39732* Target Description Format:: The contents of a target description.
123dc839
DJ
39733* Predefined Target Types:: Standard types available for target
39734 descriptions.
39735* Standard Target Features:: Features @value{GDBN} knows about.
23181151
DJ
39736@end menu
39737
39738@node Retrieving Descriptions
39739@section Retrieving Descriptions
39740
39741Target descriptions can be read from the target automatically, or
39742specified by the user manually. The default behavior is to read the
39743description from the target. @value{GDBN} retrieves it via the remote
39744protocol using @samp{qXfer} requests (@pxref{General Query Packets,
39745qXfer}). The @var{annex} in the @samp{qXfer} packet will be
39746@samp{target.xml}. The contents of the @samp{target.xml} annex are an
39747XML document, of the form described in @ref{Target Description
39748Format}.
39749
39750Alternatively, you can specify a file to read for the target description.
39751If a file is set, the target will not be queried. The commands to
39752specify a file are:
39753
39754@table @code
39755@cindex set tdesc filename
39756@item set tdesc filename @var{path}
39757Read the target description from @var{path}.
39758
39759@cindex unset tdesc filename
39760@item unset tdesc filename
39761Do not read the XML target description from a file. @value{GDBN}
39762will use the description supplied by the current target.
39763
39764@cindex show tdesc filename
39765@item show tdesc filename
39766Show the filename to read for a target description, if any.
39767@end table
39768
39769
39770@node Target Description Format
39771@section Target Description Format
39772@cindex target descriptions, XML format
39773
39774A target description annex is an @uref{http://www.w3.org/XML/, XML}
39775document which complies with the Document Type Definition provided in
39776the @value{GDBN} sources in @file{gdb/features/gdb-target.dtd}. This
39777means you can use generally available tools like @command{xmllint} to
39778check that your feature descriptions are well-formed and valid.
39779However, to help people unfamiliar with XML write descriptions for
39780their targets, we also describe the grammar here.
39781
123dc839
DJ
39782Target descriptions can identify the architecture of the remote target
39783and (for some architectures) provide information about custom register
08d16641
PA
39784sets. They can also identify the OS ABI of the remote target.
39785@value{GDBN} can use this information to autoconfigure for your
123dc839 39786target, or to warn you if you connect to an unsupported target.
23181151
DJ
39787
39788Here is a simple target description:
39789
123dc839 39790@smallexample
1780a0ed 39791<target version="1.0">
23181151
DJ
39792 <architecture>i386:x86-64</architecture>
39793</target>
123dc839 39794@end smallexample
23181151
DJ
39795
39796@noindent
39797This minimal description only says that the target uses
39798the x86-64 architecture.
39799
123dc839
DJ
39800A target description has the following overall form, with [ ] marking
39801optional elements and @dots{} marking repeatable elements. The elements
39802are explained further below.
23181151 39803
123dc839 39804@smallexample
23181151
DJ
39805<?xml version="1.0"?>
39806<!DOCTYPE target SYSTEM "gdb-target.dtd">
1780a0ed 39807<target version="1.0">
123dc839 39808 @r{[}@var{architecture}@r{]}
08d16641 39809 @r{[}@var{osabi}@r{]}
e35359c5 39810 @r{[}@var{compatible}@r{]}
123dc839 39811 @r{[}@var{feature}@dots{}@r{]}
23181151 39812</target>
123dc839 39813@end smallexample
23181151
DJ
39814
39815@noindent
39816The description is generally insensitive to whitespace and line
39817breaks, under the usual common-sense rules. The XML version
39818declaration and document type declaration can generally be omitted
39819(@value{GDBN} does not require them), but specifying them may be
1780a0ed
DJ
39820useful for XML validation tools. The @samp{version} attribute for
39821@samp{<target>} may also be omitted, but we recommend
39822including it; if future versions of @value{GDBN} use an incompatible
39823revision of @file{gdb-target.dtd}, they will detect and report
39824the version mismatch.
23181151 39825
108546a0
DJ
39826@subsection Inclusion
39827@cindex target descriptions, inclusion
39828@cindex XInclude
39829@ifnotinfo
39830@cindex <xi:include>
39831@end ifnotinfo
39832
39833It can sometimes be valuable to split a target description up into
39834several different annexes, either for organizational purposes, or to
39835share files between different possible target descriptions. You can
39836divide a description into multiple files by replacing any element of
39837the target description with an inclusion directive of the form:
39838
123dc839 39839@smallexample
108546a0 39840<xi:include href="@var{document}"/>
123dc839 39841@end smallexample
108546a0
DJ
39842
39843@noindent
39844When @value{GDBN} encounters an element of this form, it will retrieve
39845the named XML @var{document}, and replace the inclusion directive with
39846the contents of that document. If the current description was read
39847using @samp{qXfer}, then so will be the included document;
39848@var{document} will be interpreted as the name of an annex. If the
39849current description was read from a file, @value{GDBN} will look for
39850@var{document} as a file in the same directory where it found the
39851original description.
39852
123dc839
DJ
39853@subsection Architecture
39854@cindex <architecture>
39855
39856An @samp{<architecture>} element has this form:
39857
39858@smallexample
39859 <architecture>@var{arch}</architecture>
39860@end smallexample
39861
e35359c5
UW
39862@var{arch} is one of the architectures from the set accepted by
39863@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
123dc839 39864
08d16641
PA
39865@subsection OS ABI
39866@cindex @code{<osabi>}
39867
39868This optional field was introduced in @value{GDBN} version 7.0.
39869Previous versions of @value{GDBN} ignore it.
39870
39871An @samp{<osabi>} element has this form:
39872
39873@smallexample
39874 <osabi>@var{abi-name}</osabi>
39875@end smallexample
39876
39877@var{abi-name} is an OS ABI name from the same selection accepted by
39878@w{@code{set osabi}} (@pxref{ABI, ,Configuring the Current ABI}).
39879
e35359c5
UW
39880@subsection Compatible Architecture
39881@cindex @code{<compatible>}
39882
39883This optional field was introduced in @value{GDBN} version 7.0.
39884Previous versions of @value{GDBN} ignore it.
39885
39886A @samp{<compatible>} element has this form:
39887
39888@smallexample
39889 <compatible>@var{arch}</compatible>
39890@end smallexample
39891
39892@var{arch} is one of the architectures from the set accepted by
39893@code{set architecture} (@pxref{Targets, ,Specifying a Debugging Target}).
39894
39895A @samp{<compatible>} element is used to specify that the target
39896is able to run binaries in some other than the main target architecture
39897given by the @samp{<architecture>} element. For example, on the
39898Cell Broadband Engine, the main architecture is @code{powerpc:common}
39899or @code{powerpc:common64}, but the system is able to run binaries
39900in the @code{spu} architecture as well. The way to describe this
39901capability with @samp{<compatible>} is as follows:
39902
39903@smallexample
39904 <architecture>powerpc:common</architecture>
39905 <compatible>spu</compatible>
39906@end smallexample
39907
123dc839
DJ
39908@subsection Features
39909@cindex <feature>
39910
39911Each @samp{<feature>} describes some logical portion of the target
39912system. Features are currently used to describe available CPU
39913registers and the types of their contents. A @samp{<feature>} element
39914has this form:
39915
39916@smallexample
39917<feature name="@var{name}">
39918 @r{[}@var{type}@dots{}@r{]}
39919 @var{reg}@dots{}
39920</feature>
39921@end smallexample
39922
39923@noindent
39924Each feature's name should be unique within the description. The name
39925of a feature does not matter unless @value{GDBN} has some special
39926knowledge of the contents of that feature; if it does, the feature
39927should have its standard name. @xref{Standard Target Features}.
39928
39929@subsection Types
39930
39931Any register's value is a collection of bits which @value{GDBN} must
39932interpret. The default interpretation is a two's complement integer,
39933but other types can be requested by name in the register description.
39934Some predefined types are provided by @value{GDBN} (@pxref{Predefined
39935Target Types}), and the description can define additional composite types.
39936
39937Each type element must have an @samp{id} attribute, which gives
39938a unique (within the containing @samp{<feature>}) name to the type.
39939Types must be defined before they are used.
39940
39941@cindex <vector>
39942Some targets offer vector registers, which can be treated as arrays
39943of scalar elements. These types are written as @samp{<vector>} elements,
39944specifying the array element type, @var{type}, and the number of elements,
39945@var{count}:
39946
39947@smallexample
39948<vector id="@var{id}" type="@var{type}" count="@var{count}"/>
39949@end smallexample
39950
39951@cindex <union>
39952If a register's value is usefully viewed in multiple ways, define it
39953with a union type containing the useful representations. The
39954@samp{<union>} element contains one or more @samp{<field>} elements,
39955each of which has a @var{name} and a @var{type}:
39956
39957@smallexample
39958<union id="@var{id}">
39959 <field name="@var{name}" type="@var{type}"/>
39960 @dots{}
39961</union>
39962@end smallexample
39963
f5dff777
DJ
39964@cindex <struct>
39965If a register's value is composed from several separate values, define
39966it with a structure type. There are two forms of the @samp{<struct>}
39967element; a @samp{<struct>} element must either contain only bitfields
39968or contain no bitfields. If the structure contains only bitfields,
39969its total size in bytes must be specified, each bitfield must have an
39970explicit start and end, and bitfields are automatically assigned an
39971integer type. The field's @var{start} should be less than or
39972equal to its @var{end}, and zero represents the least significant bit.
39973
39974@smallexample
39975<struct id="@var{id}" size="@var{size}">
39976 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
39977 @dots{}
39978</struct>
39979@end smallexample
39980
39981If the structure contains no bitfields, then each field has an
39982explicit type, and no implicit padding is added.
39983
39984@smallexample
39985<struct id="@var{id}">
39986 <field name="@var{name}" type="@var{type}"/>
39987 @dots{}
39988</struct>
39989@end smallexample
39990
39991@cindex <flags>
39992If a register's value is a series of single-bit flags, define it with
39993a flags type. The @samp{<flags>} element has an explicit @var{size}
39994and contains one or more @samp{<field>} elements. Each field has a
39995@var{name}, a @var{start}, and an @var{end}. Only single-bit flags
39996are supported.
39997
39998@smallexample
39999<flags id="@var{id}" size="@var{size}">
40000 <field name="@var{name}" start="@var{start}" end="@var{end}"/>
40001 @dots{}
40002</flags>
40003@end smallexample
40004
123dc839
DJ
40005@subsection Registers
40006@cindex <reg>
40007
40008Each register is represented as an element with this form:
40009
40010@smallexample
40011<reg name="@var{name}"
40012 bitsize="@var{size}"
40013 @r{[}regnum="@var{num}"@r{]}
40014 @r{[}save-restore="@var{save-restore}"@r{]}
40015 @r{[}type="@var{type}"@r{]}
40016 @r{[}group="@var{group}"@r{]}/>
40017@end smallexample
40018
40019@noindent
40020The components are as follows:
40021
40022@table @var
40023
40024@item name
40025The register's name; it must be unique within the target description.
40026
40027@item bitsize
40028The register's size, in bits.
40029
40030@item regnum
40031The register's number. If omitted, a register's number is one greater
40032than that of the previous register (either in the current feature or in
177b42fe 40033a preceding feature); the first register in the target description
123dc839
DJ
40034defaults to zero. This register number is used to read or write
40035the register; e.g.@: it is used in the remote @code{p} and @code{P}
40036packets, and registers appear in the @code{g} and @code{G} packets
40037in order of increasing register number.
40038
40039@item save-restore
40040Whether the register should be preserved across inferior function
40041calls; this must be either @code{yes} or @code{no}. The default is
40042@code{yes}, which is appropriate for most registers except for
40043some system control registers; this is not related to the target's
40044ABI.
40045
40046@item type
40047The type of the register. @var{type} may be a predefined type, a type
40048defined in the current feature, or one of the special types @code{int}
40049and @code{float}. @code{int} is an integer type of the correct size
40050for @var{bitsize}, and @code{float} is a floating point type (in the
40051architecture's normal floating point format) of the correct size for
40052@var{bitsize}. The default is @code{int}.
40053
40054@item group
40055The register group to which this register belongs. @var{group} must
40056be either @code{general}, @code{float}, or @code{vector}. If no
40057@var{group} is specified, @value{GDBN} will not display the register
40058in @code{info registers}.
40059
40060@end table
40061
40062@node Predefined Target Types
40063@section Predefined Target Types
40064@cindex target descriptions, predefined types
40065
40066Type definitions in the self-description can build up composite types
40067from basic building blocks, but can not define fundamental types. Instead,
40068standard identifiers are provided by @value{GDBN} for the fundamental
40069types. The currently supported types are:
40070
40071@table @code
40072
40073@item int8
40074@itemx int16
40075@itemx int32
40076@itemx int64
7cc46491 40077@itemx int128
123dc839
DJ
40078Signed integer types holding the specified number of bits.
40079
40080@item uint8
40081@itemx uint16
40082@itemx uint32
40083@itemx uint64
7cc46491 40084@itemx uint128
123dc839
DJ
40085Unsigned integer types holding the specified number of bits.
40086
40087@item code_ptr
40088@itemx data_ptr
40089Pointers to unspecified code and data. The program counter and
40090any dedicated return address register may be marked as code
40091pointers; printing a code pointer converts it into a symbolic
40092address. The stack pointer and any dedicated address registers
40093may be marked as data pointers.
40094
6e3bbd1a
PB
40095@item ieee_single
40096Single precision IEEE floating point.
40097
40098@item ieee_double
40099Double precision IEEE floating point.
40100
123dc839
DJ
40101@item arm_fpa_ext
40102The 12-byte extended precision format used by ARM FPA registers.
40103
075b51b7
L
40104@item i387_ext
40105The 10-byte extended precision format used by x87 registers.
40106
40107@item i386_eflags
4010832bit @sc{eflags} register used by x86.
40109
40110@item i386_mxcsr
4011132bit @sc{mxcsr} register used by x86.
40112
123dc839
DJ
40113@end table
40114
40115@node Standard Target Features
40116@section Standard Target Features
40117@cindex target descriptions, standard features
40118
40119A target description must contain either no registers or all the
40120target's registers. If the description contains no registers, then
40121@value{GDBN} will assume a default register layout, selected based on
40122the architecture. If the description contains any registers, the
40123default layout will not be used; the standard registers must be
40124described in the target description, in such a way that @value{GDBN}
40125can recognize them.
40126
40127This is accomplished by giving specific names to feature elements
40128which contain standard registers. @value{GDBN} will look for features
40129with those names and verify that they contain the expected registers;
40130if any known feature is missing required registers, or if any required
40131feature is missing, @value{GDBN} will reject the target
40132description. You can add additional registers to any of the
40133standard features --- @value{GDBN} will display them just as if
40134they were added to an unrecognized feature.
40135
40136This section lists the known features and their expected contents.
40137Sample XML documents for these features are included in the
40138@value{GDBN} source tree, in the directory @file{gdb/features}.
40139
40140Names recognized by @value{GDBN} should include the name of the
40141company or organization which selected the name, and the overall
40142architecture to which the feature applies; so e.g.@: the feature
40143containing ARM core registers is named @samp{org.gnu.gdb.arm.core}.
40144
ff6f572f
DJ
40145The names of registers are not case sensitive for the purpose
40146of recognizing standard features, but @value{GDBN} will only display
40147registers using the capitalization used in the description.
40148
e9c17194
VP
40149@menu
40150* ARM Features::
3bb8d5c3 40151* i386 Features::
1e26b4f8 40152* MIPS Features::
e9c17194 40153* M68K Features::
1e26b4f8 40154* PowerPC Features::
224bbe49 40155* TIC6x Features::
e9c17194
VP
40156@end menu
40157
40158
40159@node ARM Features
123dc839
DJ
40160@subsection ARM Features
40161@cindex target descriptions, ARM features
40162
9779414d
DJ
40163The @samp{org.gnu.gdb.arm.core} feature is required for non-M-profile
40164ARM targets.
123dc839
DJ
40165It should contain registers @samp{r0} through @samp{r13}, @samp{sp},
40166@samp{lr}, @samp{pc}, and @samp{cpsr}.
40167
9779414d
DJ
40168For M-profile targets (e.g. Cortex-M3), the @samp{org.gnu.gdb.arm.core}
40169feature is replaced by @samp{org.gnu.gdb.arm.m-profile}. It should contain
40170registers @samp{r0} through @samp{r13}, @samp{sp}, @samp{lr}, @samp{pc},
40171and @samp{xpsr}.
40172
123dc839
DJ
40173The @samp{org.gnu.gdb.arm.fpa} feature is optional. If present, it
40174should contain registers @samp{f0} through @samp{f7} and @samp{fps}.
40175
ff6f572f
DJ
40176The @samp{org.gnu.gdb.xscale.iwmmxt} feature is optional. If present,
40177it should contain at least registers @samp{wR0} through @samp{wR15} and
40178@samp{wCGR0} through @samp{wCGR3}. The @samp{wCID}, @samp{wCon},
40179@samp{wCSSF}, and @samp{wCASF} registers are optional.
23181151 40180
58d6951d
DJ
40181The @samp{org.gnu.gdb.arm.vfp} feature is optional. If present, it
40182should contain at least registers @samp{d0} through @samp{d15}. If
40183they are present, @samp{d16} through @samp{d31} should also be included.
40184@value{GDBN} will synthesize the single-precision registers from
40185halves of the double-precision registers.
40186
40187The @samp{org.gnu.gdb.arm.neon} feature is optional. It does not
40188need to contain registers; it instructs @value{GDBN} to display the
40189VFP double-precision registers as vectors and to synthesize the
40190quad-precision registers from pairs of double-precision registers.
40191If this feature is present, @samp{org.gnu.gdb.arm.vfp} must also
40192be present and include 32 double-precision registers.
40193
3bb8d5c3
L
40194@node i386 Features
40195@subsection i386 Features
40196@cindex target descriptions, i386 features
40197
40198The @samp{org.gnu.gdb.i386.core} feature is required for i386/amd64
40199targets. It should describe the following registers:
40200
40201@itemize @minus
40202@item
40203@samp{eax} through @samp{edi} plus @samp{eip} for i386
40204@item
40205@samp{rax} through @samp{r15} plus @samp{rip} for amd64
40206@item
40207@samp{eflags}, @samp{cs}, @samp{ss}, @samp{ds}, @samp{es},
40208@samp{fs}, @samp{gs}
40209@item
40210@samp{st0} through @samp{st7}
40211@item
40212@samp{fctrl}, @samp{fstat}, @samp{ftag}, @samp{fiseg}, @samp{fioff},
40213@samp{foseg}, @samp{fooff} and @samp{fop}
40214@end itemize
40215
40216The register sets may be different, depending on the target.
40217
3a13a53b 40218The @samp{org.gnu.gdb.i386.sse} feature is optional. It should
3bb8d5c3
L
40219describe registers:
40220
40221@itemize @minus
40222@item
40223@samp{xmm0} through @samp{xmm7} for i386
40224@item
40225@samp{xmm0} through @samp{xmm15} for amd64
40226@item
40227@samp{mxcsr}
40228@end itemize
40229
3a13a53b
L
40230The @samp{org.gnu.gdb.i386.avx} feature is optional and requires the
40231@samp{org.gnu.gdb.i386.sse} feature. It should
f68eb612
L
40232describe the upper 128 bits of @sc{ymm} registers:
40233
40234@itemize @minus
40235@item
40236@samp{ymm0h} through @samp{ymm7h} for i386
40237@item
40238@samp{ymm0h} through @samp{ymm15h} for amd64
f68eb612
L
40239@end itemize
40240
3bb8d5c3
L
40241The @samp{org.gnu.gdb.i386.linux} feature is optional. It should
40242describe a single register, @samp{orig_eax}.
40243
1e26b4f8 40244@node MIPS Features
eb17f351
EZ
40245@subsection @acronym{MIPS} Features
40246@cindex target descriptions, @acronym{MIPS} features
f8b73d13 40247
eb17f351 40248The @samp{org.gnu.gdb.mips.cpu} feature is required for @acronym{MIPS} targets.
f8b73d13
DJ
40249It should contain registers @samp{r0} through @samp{r31}, @samp{lo},
40250@samp{hi}, and @samp{pc}. They may be 32-bit or 64-bit depending
40251on the target.
40252
40253The @samp{org.gnu.gdb.mips.cp0} feature is also required. It should
40254contain at least the @samp{status}, @samp{badvaddr}, and @samp{cause}
40255registers. They may be 32-bit or 64-bit depending on the target.
40256
40257The @samp{org.gnu.gdb.mips.fpu} feature is currently required, though
40258it may be optional in a future version of @value{GDBN}. It should
40259contain registers @samp{f0} through @samp{f31}, @samp{fcsr}, and
40260@samp{fir}. They may be 32-bit or 64-bit depending on the target.
40261
1faeff08
MR
40262The @samp{org.gnu.gdb.mips.dsp} feature is optional. It should
40263contain registers @samp{hi1} through @samp{hi3}, @samp{lo1} through
40264@samp{lo3}, and @samp{dspctl}. The @samp{dspctl} register should
40265be 32-bit and the rest may be 32-bit or 64-bit depending on the target.
40266
822b6570
DJ
40267The @samp{org.gnu.gdb.mips.linux} feature is optional. It should
40268contain a single register, @samp{restart}, which is used by the
40269Linux kernel to control restartable syscalls.
40270
e9c17194
VP
40271@node M68K Features
40272@subsection M68K Features
40273@cindex target descriptions, M68K features
40274
40275@table @code
40276@item @samp{org.gnu.gdb.m68k.core}
40277@itemx @samp{org.gnu.gdb.coldfire.core}
40278@itemx @samp{org.gnu.gdb.fido.core}
40279One of those features must be always present.
249e1128 40280The feature that is present determines which flavor of m68k is
e9c17194
VP
40281used. The feature that is present should contain registers
40282@samp{d0} through @samp{d7}, @samp{a0} through @samp{a5}, @samp{fp},
40283@samp{sp}, @samp{ps} and @samp{pc}.
40284
40285@item @samp{org.gnu.gdb.coldfire.fp}
40286This feature is optional. If present, it should contain registers
40287@samp{fp0} through @samp{fp7}, @samp{fpcontrol}, @samp{fpstatus} and
40288@samp{fpiaddr}.
40289@end table
40290
1e26b4f8 40291@node PowerPC Features
7cc46491
DJ
40292@subsection PowerPC Features
40293@cindex target descriptions, PowerPC features
40294
40295The @samp{org.gnu.gdb.power.core} feature is required for PowerPC
40296targets. It should contain registers @samp{r0} through @samp{r31},
40297@samp{pc}, @samp{msr}, @samp{cr}, @samp{lr}, @samp{ctr}, and
40298@samp{xer}. They may be 32-bit or 64-bit depending on the target.
40299
40300The @samp{org.gnu.gdb.power.fpu} feature is optional. It should
40301contain registers @samp{f0} through @samp{f31} and @samp{fpscr}.
40302
40303The @samp{org.gnu.gdb.power.altivec} feature is optional. It should
40304contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
40305and @samp{vrsave}.
40306
677c5bb1
LM
40307The @samp{org.gnu.gdb.power.vsx} feature is optional. It should
40308contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN}
40309will combine these registers with the floating point registers
40310(@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0}
aeac0ff9 40311through @samp{vr31}) to present the 128-bit wide registers @samp{vs0}
677c5bb1
LM
40312through @samp{vs63}, the set of vector registers for POWER7.
40313
7cc46491
DJ
40314The @samp{org.gnu.gdb.power.spe} feature is optional. It should
40315contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
40316@samp{spefscr}. SPE targets should provide 32-bit registers in
40317@samp{org.gnu.gdb.power.core} and provide the upper halves in
40318@samp{ev0h} through @samp{ev31h}. @value{GDBN} will combine
40319these to present registers @samp{ev0} through @samp{ev31} to the
40320user.
40321
224bbe49
YQ
40322@node TIC6x Features
40323@subsection TMS320C6x Features
40324@cindex target descriptions, TIC6x features
40325@cindex target descriptions, TMS320C6x features
40326The @samp{org.gnu.gdb.tic6x.core} feature is required for TMS320C6x
40327targets. It should contain registers @samp{A0} through @samp{A15},
40328registers @samp{B0} through @samp{B15}, @samp{CSR} and @samp{PC}.
40329
40330The @samp{org.gnu.gdb.tic6x.gp} feature is optional. It should
40331contain registers @samp{A16} through @samp{A31} and @samp{B16}
40332through @samp{B31}.
40333
40334The @samp{org.gnu.gdb.tic6x.c6xp} feature is optional. It should
40335contain registers @samp{TSR}, @samp{ILC} and @samp{RILC}.
40336
07e059b5
VP
40337@node Operating System Information
40338@appendix Operating System Information
40339@cindex operating system information
40340
40341@menu
40342* Process list::
40343@end menu
40344
40345Users of @value{GDBN} often wish to obtain information about the state of
40346the operating system running on the target---for example the list of
40347processes, or the list of open files. This section describes the
40348mechanism that makes it possible. This mechanism is similar to the
40349target features mechanism (@pxref{Target Descriptions}), but focuses
40350on a different aspect of target.
40351
40352Operating system information is retrived from the target via the
40353remote protocol, using @samp{qXfer} requests (@pxref{qXfer osdata
40354read}). The object name in the request should be @samp{osdata}, and
40355the @var{annex} identifies the data to be fetched.
40356
40357@node Process list
40358@appendixsection Process list
40359@cindex operating system information, process list
40360
40361When requesting the process list, the @var{annex} field in the
40362@samp{qXfer} request should be @samp{processes}. The returned data is
40363an XML document. The formal syntax of this document is defined in
40364@file{gdb/features/osdata.dtd}.
40365
40366An example document is:
40367
40368@smallexample
40369<?xml version="1.0"?>
40370<!DOCTYPE target SYSTEM "osdata.dtd">
40371<osdata type="processes">
40372 <item>
40373 <column name="pid">1</column>
40374 <column name="user">root</column>
40375 <column name="command">/sbin/init</column>
dc146f7c 40376 <column name="cores">1,2,3</column>
07e059b5
VP
40377 </item>
40378</osdata>
40379@end smallexample
40380
40381Each item should include a column whose name is @samp{pid}. The value
40382of that column should identify the process on the target. The
40383@samp{user} and @samp{command} columns are optional, and will be
dc146f7c
VP
40384displayed by @value{GDBN}. The @samp{cores} column, if present,
40385should contain a comma-separated list of cores that this process
40386is running on. Target may provide additional columns,
07e059b5
VP
40387which @value{GDBN} currently ignores.
40388
05c8c3f5
TT
40389@node Trace File Format
40390@appendix Trace File Format
40391@cindex trace file format
40392
40393The trace file comes in three parts: a header, a textual description
40394section, and a trace frame section with binary data.
40395
40396The header has the form @code{\x7fTRACE0\n}. The first byte is
40397@code{0x7f} so as to indicate that the file contains binary data,
40398while the @code{0} is a version number that may have different values
40399in the future.
40400
40401The description section consists of multiple lines of @sc{ascii} text
40402separated by newline characters (@code{0xa}). The lines may include a
40403variety of optional descriptive or context-setting information, such
40404as tracepoint definitions or register set size. @value{GDBN} will
40405ignore any line that it does not recognize. An empty line marks the end
40406of this section.
40407
40408@c FIXME add some specific types of data
40409
40410The trace frame section consists of a number of consecutive frames.
40411Each frame begins with a two-byte tracepoint number, followed by a
40412four-byte size giving the amount of data in the frame. The data in
40413the frame consists of a number of blocks, each introduced by a
40414character indicating its type (at least register, memory, and trace
40415state variable). The data in this section is raw binary, not a
40416hexadecimal or other encoding; its endianness matches the target's
40417endianness.
40418
40419@c FIXME bi-arch may require endianness/arch info in description section
40420
40421@table @code
40422@item R @var{bytes}
40423Register block. The number and ordering of bytes matches that of a
40424@code{g} packet in the remote protocol. Note that these are the
40425actual bytes, in target order and @value{GDBN} register order, not a
40426hexadecimal encoding.
40427
40428@item M @var{address} @var{length} @var{bytes}...
40429Memory block. This is a contiguous block of memory, at the 8-byte
40430address @var{address}, with a 2-byte length @var{length}, followed by
40431@var{length} bytes.
40432
40433@item V @var{number} @var{value}
40434Trace state variable block. This records the 8-byte signed value
40435@var{value} of trace state variable numbered @var{number}.
40436
40437@end table
40438
40439Future enhancements of the trace file format may include additional types
40440of blocks.
40441
90476074
TT
40442@node Index Section Format
40443@appendix @code{.gdb_index} section format
40444@cindex .gdb_index section format
40445@cindex index section format
40446
40447This section documents the index section that is created by @code{save
40448gdb-index} (@pxref{Index Files}). The index section is
40449DWARF-specific; some knowledge of DWARF is assumed in this
40450description.
40451
40452The mapped index file format is designed to be directly
40453@code{mmap}able on any architecture. In most cases, a datum is
40454represented using a little-endian 32-bit integer value, called an
40455@code{offset_type}. Big endian machines must byte-swap the values
40456before using them. Exceptions to this rule are noted. The data is
40457laid out such that alignment is always respected.
40458
40459A mapped index consists of several areas, laid out in order.
40460
40461@enumerate
40462@item
40463The file header. This is a sequence of values, of @code{offset_type}
40464unless otherwise noted:
40465
40466@enumerate
40467@item
b6ba681c 40468The version number, currently 7. Versions 1, 2 and 3 are obsolete.
481860b3 40469Version 4 uses a different hashing function from versions 5 and 6.
b6ba681c
TT
40470Version 6 includes symbols for inlined functions, whereas versions 4
40471and 5 do not. Version 7 adds attributes to the CU indices in the
40472symbol table. @value{GDBN} will only read version 4, 5, or 6 indices
e615022a 40473by specifying @code{set use-deprecated-index-sections on}.
90476074
TT
40474
40475@item
40476The offset, from the start of the file, of the CU list.
40477
40478@item
40479The offset, from the start of the file, of the types CU list. Note
40480that this area can be empty, in which case this offset will be equal
40481to the next offset.
40482
40483@item
40484The offset, from the start of the file, of the address area.
40485
40486@item
40487The offset, from the start of the file, of the symbol table.
40488
40489@item
40490The offset, from the start of the file, of the constant pool.
40491@end enumerate
40492
40493@item
40494The CU list. This is a sequence of pairs of 64-bit little-endian
40495values, sorted by the CU offset. The first element in each pair is
40496the offset of a CU in the @code{.debug_info} section. The second
40497element in each pair is the length of that CU. References to a CU
40498elsewhere in the map are done using a CU index, which is just the
404990-based index into this table. Note that if there are type CUs, then
40500conceptually CUs and type CUs form a single list for the purposes of
40501CU indices.
40502
40503@item
40504The types CU list. This is a sequence of triplets of 64-bit
40505little-endian values. In a triplet, the first value is the CU offset,
40506the second value is the type offset in the CU, and the third value is
40507the type signature. The types CU list is not sorted.
40508
40509@item
40510The address area. The address area consists of a sequence of address
40511entries. Each address entry has three elements:
40512
40513@enumerate
40514@item
40515The low address. This is a 64-bit little-endian value.
40516
40517@item
40518The high address. This is a 64-bit little-endian value. Like
40519@code{DW_AT_high_pc}, the value is one byte beyond the end.
40520
40521@item
40522The CU index. This is an @code{offset_type} value.
40523@end enumerate
40524
40525@item
40526The symbol table. This is an open-addressed hash table. The size of
40527the hash table is always a power of 2.
40528
40529Each slot in the hash table consists of a pair of @code{offset_type}
40530values. The first value is the offset of the symbol's name in the
40531constant pool. The second value is the offset of the CU vector in the
40532constant pool.
40533
40534If both values are 0, then this slot in the hash table is empty. This
40535is ok because while 0 is a valid constant pool index, it cannot be a
40536valid index for both a string and a CU vector.
40537
40538The hash value for a table entry is computed by applying an
40539iterative hash function to the symbol's name. Starting with an
40540initial value of @code{r = 0}, each (unsigned) character @samp{c} in
559a7a62
JK
40541the string is incorporated into the hash using the formula depending on the
40542index version:
40543
40544@table @asis
40545@item Version 4
40546The formula is @code{r = r * 67 + c - 113}.
40547
156942c7 40548@item Versions 5 to 7
559a7a62
JK
40549The formula is @code{r = r * 67 + tolower (c) - 113}.
40550@end table
40551
40552The terminating @samp{\0} is not incorporated into the hash.
90476074
TT
40553
40554The step size used in the hash table is computed via
40555@code{((hash * 17) & (size - 1)) | 1}, where @samp{hash} is the hash
40556value, and @samp{size} is the size of the hash table. The step size
40557is used to find the next candidate slot when handling a hash
40558collision.
40559
40560The names of C@t{++} symbols in the hash table are canonicalized. We
40561don't currently have a simple description of the canonicalization
40562algorithm; if you intend to create new index sections, you must read
40563the code.
40564
40565@item
40566The constant pool. This is simply a bunch of bytes. It is organized
40567so that alignment is correct: CU vectors are stored first, followed by
40568strings.
40569
40570A CU vector in the constant pool is a sequence of @code{offset_type}
40571values. The first value is the number of CU indices in the vector.
156942c7
DE
40572Each subsequent value is the index and symbol attributes of a CU in
40573the CU list. This element in the hash table is used to indicate which
40574CUs define the symbol and how the symbol is used.
40575See below for the format of each CU index+attributes entry.
90476074
TT
40576
40577A string in the constant pool is zero-terminated.
40578@end enumerate
40579
156942c7
DE
40580Attributes were added to CU index values in @code{.gdb_index} version 7.
40581If a symbol has multiple uses within a CU then there is one
40582CU index+attributes value for each use.
40583
40584The format of each CU index+attributes entry is as follows
40585(bit 0 = LSB):
40586
40587@table @asis
40588
40589@item Bits 0-23
40590This is the index of the CU in the CU list.
40591@item Bits 24-27
40592These bits are reserved for future purposes and must be zero.
40593@item Bits 28-30
40594The kind of the symbol in the CU.
40595
40596@table @asis
40597@item 0
40598This value is reserved and should not be used.
40599By reserving zero the full @code{offset_type} value is backwards compatible
40600with previous versions of the index.
40601@item 1
40602The symbol is a type.
40603@item 2
40604The symbol is a variable or an enum value.
40605@item 3
40606The symbol is a function.
40607@item 4
40608Any other kind of symbol.
40609@item 5,6,7
40610These values are reserved.
40611@end table
40612
40613@item Bit 31
40614This bit is zero if the value is global and one if it is static.
40615
40616The determination of whether a symbol is global or static is complicated.
40617The authorative reference is the file @file{dwarf2read.c} in
40618@value{GDBN} sources.
40619
40620@end table
40621
40622This pseudo-code describes the computation of a symbol's kind and
40623global/static attributes in the index.
40624
40625@smallexample
40626is_external = get_attribute (die, DW_AT_external);
40627language = get_attribute (cu_die, DW_AT_language);
40628switch (die->tag)
40629 @{
40630 case DW_TAG_typedef:
40631 case DW_TAG_base_type:
40632 case DW_TAG_subrange_type:
40633 kind = TYPE;
40634 is_static = 1;
40635 break;
40636 case DW_TAG_enumerator:
40637 kind = VARIABLE;
40638 is_static = (language != CPLUS && language != JAVA);
40639 break;
40640 case DW_TAG_subprogram:
40641 kind = FUNCTION;
40642 is_static = ! (is_external || language == ADA);
40643 break;
40644 case DW_TAG_constant:
40645 kind = VARIABLE;
40646 is_static = ! is_external;
40647 break;
40648 case DW_TAG_variable:
40649 kind = VARIABLE;
40650 is_static = ! is_external;
40651 break;
40652 case DW_TAG_namespace:
40653 kind = TYPE;
40654 is_static = 0;
40655 break;
40656 case DW_TAG_class_type:
40657 case DW_TAG_interface_type:
40658 case DW_TAG_structure_type:
40659 case DW_TAG_union_type:
40660 case DW_TAG_enumeration_type:
40661 kind = TYPE;
40662 is_static = (language != CPLUS && language != JAVA);
40663 break;
40664 default:
40665 assert (0);
40666 @}
40667@end smallexample
40668
aab4e0ec 40669@include gpl.texi
eb12ee30 40670
e4c0cfae
SS
40671@node GNU Free Documentation License
40672@appendix GNU Free Documentation License
6826cf00
EZ
40673@include fdl.texi
40674
00595b5e
EZ
40675@node Concept Index
40676@unnumbered Concept Index
c906108c
SS
40677
40678@printindex cp
40679
00595b5e
EZ
40680@node Command and Variable Index
40681@unnumbered Command, Variable, and Function Index
40682
40683@printindex fn
40684
c906108c 40685@tex
984359d2 40686% I think something like @@colophon should be in texinfo. In the
c906108c
SS
40687% meantime:
40688\long\def\colophon{\hbox to0pt{}\vfill
40689\centerline{The body of this manual is set in}
40690\centerline{\fontname\tenrm,}
40691\centerline{with headings in {\bf\fontname\tenbf}}
40692\centerline{and examples in {\tt\fontname\tentt}.}
40693\centerline{{\it\fontname\tenit\/},}
40694\centerline{{\bf\fontname\tenbf}, and}
40695\centerline{{\sl\fontname\tensl\/}}
40696\centerline{are used for emphasis.}\vfill}
40697\page\colophon
984359d2 40698% Blame: doc@@cygnus.com, 1991.
c906108c
SS
40699@end tex
40700
c906108c 40701@bye
This page took 5.411525 seconds and 4 git commands to generate.